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+QFlvY3RvIFByb2plY3QgTWVnYS1NYW51YWxAZwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgppbmRleCBlY2ZlNWQyLi4xYzQyNmJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKQEAgLTEsNiArMSw1IEBACiAKIHJlcXVpcmUgY29uZi9kaXN0cm8vcG9reS5jb25mCi1yZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCiAKIERJU1RSTyA9ICJwb2t5LWxzYiIKIERJU1RST09WRVJSSURFUyA9ICJwb2t5OmxpbnV4c3RkYmFzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKaW5kZXggN2IyMmExMy4uNjkwY2IwZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mCkBAIC0zOCw3ICszOCw3IEBACiAjIERpc3RybyBjb25maWcgaXMgZXZhbHVhdGVkIGFmdGVyIHRoZSBtYWNoaW5lIGNvbmZpZywgc28gd2UgaGF2ZSB0byBleHBsaWNpdGx5CiAjIHNldCB0aGUga2VybmVsIHByb3ZpZGVyIHRvIG92ZXJyaWRlIGEgbWFjaGluZSBjb25maWcuCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPSAibGludXgteW9jdG8tdGlueSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvLXRpbnkgPz0gIjQuMTQlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8tdGlueSA/PSAiNC4xOCUiCiAKICMgV2UgY2FuIHVzZSBwYWNrYWdlZ3JvdXAtY29yZS1ib290LCBidXQgaW4gdGhlIGZ1dHVyZSB3ZSBtYXkgbmVlZCBhIG5ldyBwYWNrYWdlZ3JvdXAtY29yZS10aW55CiAjUE9LWV9ERUZBVUxUX0VYVFJBX1JERVBFTkRTICs9ICJwYWNrYWdlZ3JvdXAtY29yZS1ib290IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCmluZGV4IGZiOWU3ODMuLjdlNmZlMTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKQEAgLTEsNyArMSw3IEBACiBESVNUUk8gPSAicG9reSIKIERJU1RST19OQU1FID0gIlBva3kgKFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIERpc3RybykiCi1ESVNUUk9fVkVSU0lPTiA9ICIyLjUuMiIKLURJU1RST19DT0RFTkFNRSA9ICJzdW1vIgorRElTVFJPX1ZFUlNJT04gPSAiMi42IgorRElTVFJPX0NPREVOQU1FID0gInRodWQiCiBTREtfVkVORE9SID0gIi1wb2t5c2RrIgogU0RLX1ZFUlNJT04gOj0gIiR7QCcke0RJU1RST19WRVJTSU9OfScucmVwbGFjZSgnc25hcHNob3QtJHtEQVRFfScsJ3NuYXBzaG90Jyl9IgogCkBAIC0yMSw3ICsyMSw3IEBACiAKIERJU1RST19GRUFUVVJFUyA/PSAiJHtESVNUUk9fRkVBVFVSRVNfREVGQVVMVH0gJHtESVNUUk9fRkVBVFVSRVNfTElCQ30gJHtQT0tZX0RFRkFVTFRfRElTVFJPX0ZFQVRVUkVTfSIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTQlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTglIgogCiBTREtfTkFNRSA9ICIke0RJU1RST30tJHtUQ0xJQkN9LSR7U0RLX0FSQ0h9LSR7SU1BR0VfQkFTRU5BTUV9LSR7VFVORV9QS0dBUkNIfSIKIFNES1BBVEggPSAiL29wdC8ke0RJU1RST30vJHtTREtfVkVSU0lPTn0iCkBAIC02NCwxNiArNjQsMTcgQEAKIENPTk5FQ1RJVklUWV9DSEVDS19VUklTID89ICJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iCiAKIFNBTklUWV9URVNURURfRElTVFJPUyA/PSAiIFwKLSAgICAgICAgICAgIHBva3ktMi40IFxuIFwKICAgICAgICAgICAgIHBva3ktMi41IFxuIFwKLSAgICAgICAgICAgIHVidW50dS0xNS4wNCBcbiBcCisgICAgICAgICAgICBwb2t5LTIuNiBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTYuMDQgXG4gXAotICAgICAgICAgICAgdWJ1bnR1LTE4LjA0IFxuIFwKLSAgICAgICAgICAgIGZlZG9yYS0yOCBcbiBcCisgICAgICAgICAgICB1YnVudHUtMTYuMTAgXG4gXAorICAgICAgICAgICAgdWJ1bnR1LTE3LjA0IFxuIFwKKyAgICAgICAgICAgIGZlZG9yYS0yNiBcbiBcCiAgICAgICAgICAgICBjZW50b3MtNyBcbiBcCiAgICAgICAgICAgICBkZWJpYW4tOCBcbiBcCiAgICAgICAgICAgICBkZWJpYW4tOSBcbiBcCi0gICAgICAgICAgICBvcGVuc3VzZS00Mi4zIFxuIFwKKyAgICAgICAgICAgIG9wZW5zdXNlLTQyLjEgXG4gXAorICAgICAgICAgICAgb3BlbnN1c2UtNDIuMiBcbiBcCiAgICAgICAgICAgICAiCiAjCiAjIE9FTEFZT1VUX0FCSSBhbGxvd3MgdXMgdG8gbm90aWZ5IHVzZXJzIHdoZW4gdGhlIGZvcm1hdCBvZiBUTVBESVIgY2hhbmdlcyBpbgpAQCAtODksMTEgKzkwLDEyIEBACiAjIFFBIGNoZWNrIHNldHRpbmdzIC0gYSBsaXR0bGUgc3RyaWN0ZXIgdGhhbiB0aGUgT0UtQ29yZSBkZWZhdWx0cwogV0FSTl9UT19FUlJPUl9RQSA9ICJhbHJlYWR5LXN0cmlwcGVkIGNvbXBpbGUtaG9zdC1wYXRoIGluc3RhbGwtaG9zdC1wYXRoIFwKICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLXZzLXNoaXBwZWQgbGRmbGFncyBwbi1vdmVycmlkZXMgcnBhdGhzIHN0YXRpY2RldiBcCi0gICAgICAgICAgICAgICAgICAgIHVzZWxlc3MtcnBhdGhzIgorICAgICAgICAgICAgICAgICAgICB1bmtub3duLWNvbmZpZ3VyZS1vcHRpb24gdXNlbGVzcy1ycGF0aHMiCiBXQVJOX1FBX3JlbW92ZSA9ICIke1dBUk5fVE9fRVJST1JfUUF9IgogRVJST1JfUUFfYXBwZW5kID0gIiAke1dBUk5fVE9fRVJST1JfUUF9IgogCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS13b3JsZC1leGNsdWRlLmluYwogcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYwogcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKK3JlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKIElOSEVSSVQgKz0gInVuaW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgppbmRleCAzNzYxZjg3Li5iOWIyNjM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mCkBAIC05LDcgKzksNyBAQAogQkJGSUxFX1BBVFRFUk5feW9jdG8gPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV95b2N0byA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfeW9jdG8gPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJ0aHVkIgogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUgYi9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCmluZGV4IGFhOGRmNDAuLmQyOGJmNTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQpAQCAtMjM0LDEyICsyMzQsMTIgQEAKICMgUWVtdSBjb25maWd1cmF0aW9uCiAjCiAjIEJ5IGRlZmF1bHQgcWVtdSB3aWxsIGJ1aWxkIHdpdGggYSBidWlsdGluIFZOQyBzZXJ2ZXIgd2hlcmUgZ3JhcGhpY2FsIG91dHB1dCBjYW4gYmUKLSMgc2Vlbi4gVGhlIHR3byBsaW5lcyBiZWxvdyBlbmFibGUgdGhlIFNETCBiYWNrZW5kIHRvby4gQnkgZGVmYXVsdCBsaWJzZGwtbmF0aXZlIHdpbGwKKyMgc2Vlbi4gVGhlIHR3byBsaW5lcyBiZWxvdyBlbmFibGUgdGhlIFNETCBiYWNrZW5kIHRvby4gQnkgZGVmYXVsdCBsaWJzZGwyLW5hdGl2ZSB3aWxsCiAjIGJlIGJ1aWx0LCBpZiB5b3Ugd2FudCB0byB1c2UgeW91ciBob3N0J3MgbGliU0RMIGluc3RlYWQgb2YgdGhlIG1pbmltYWwgbGlic2RsIGJ1aWx0Ci0jIGJ5IGxpYnNkbC1uYXRpdmUgdGhlbiB1bmNvbW1lbnQgdGhlIEFTU1VNRV9QUk9WSURFRCBsaW5lIGJlbG93LgorIyBieSBsaWJzZGwyLW5hdGl2ZSB0aGVuIHVuY29tbWVudCB0aGUgQVNTVU1FX1BST1ZJREVEIGxpbmUgYmVsb3cuCiBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1xZW11LW5hdGl2ZSA9ICIgc2RsIgogUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tbmF0aXZlc2RrLXFlbXUgPSAiIHNkbCIKLSNBU1NVTUVfUFJPVklERUQgKz0gImxpYnNkbC1uYXRpdmUiCisjQVNTVU1FX1BST1ZJREVEICs9ICJsaWJzZGwyLW5hdGl2ZSIKIAogIyBDT05GX1ZFUlNJT04gaXMgaW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mLyBjaGFuZ2VzIGluY29tcGF0aWJseSBhbmQgaXMgdXNlZCB0bwogIyB0cmFjayB0aGUgdmVyc2lvbiBvZiB0aGlzIGZpbGUgd2hlbiBpdCB3YXMgZ2VuZXJhdGVkLiBUaGlzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZCBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQKaW5kZXggMDU2MGRlOC4uM2JhOTlmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZAorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkCkBAIC0zMiw3ICszMiw3IEBACiAjRElTVFJPX0ZFQVRVUkVTX0xJQkMgPSAiaXB2NiBsaWJjLWJhY2t0cmFjZSBsaWJjLWJpZy1tYWNyb3MgbGliYy1ic2QgbGliYy1jeHgtdGVzdHMgbGliYy1jYXRnZXRzIGxpYmMtY2hhcnNldHMgbGliYy1jcnlwdCBcCiAjICAgICAgICAgICAgICAgbGliYy1jcnlwdC11ZmMgbGliYy1kYi1hbGlhc2VzIGxpYmMtZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1mc3RhYiBsaWJjLWZ0cmF2ZXJzZSBcCiAjICAgICAgICAgICAgICAgbGliYy1nZXRsb2dpbiBsaWJjLWlkbiBsaWJjLWluZXQgbGliYy1pbmV0LWFubCBsaWJjLWxpYm0gbGliYy1sb2NhbGVzIGxpYmMtbG9jYWxlLWNvZGUgXAotIyAgICAgICAgICAgICAgIGxpYmMtbWVtdXNhZ2UgbGliYy1uaXMgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVnIGxpYmMtc3Bhd24gbGliYy1zdHJlYW1zIGxpYmMtc3VucnBjIFwKKyMgICAgICAgICAgICAgICBsaWJjLW1lbXVzYWdlIGxpYmMtbnNzd2l0Y2ggbGliYy1yY21kIGxpYmMtcnRsZC1kZWJ1ZyBsaWJjLXNwYXduIGxpYmMtc3RyZWFtcyBcCiAjICAgICAgICAgICAgICAgbGliYy11dG1wIGxpYmMtdXRtcHggbGliYy13b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGliYy1wb3NpeC1yZWdleHAgbGliYy1wb3NpeC1yZWdleHAtZ2xpYmMgXAogIyAgICAgICAgICAgICAgIGxpYmMtcG9zaXgtd2NoYXItaW8iCiAKQEAgLTU5LDYgKzU5LDExIEBACiAjIE5PVEU6IElmIHJlbW92aW5nIGVuX1VTLlVURi04IHlvdSB3aWxsIGFsc28gbmVlZCB0byB1bmNvbW1lbnQsIGFuZCBzZXQKICMgYXBwcm9wcmlhdGUgdmFsdWUgZm9yIElNQUdFX0xJTkdVQVMuCiAjIFdBUk5JTkc6IHRoaXMgbWF5IGJyZWFrIGxvY2FsaXNhdGlvbiEKKyMgV0FSTklORzogc29tZSByZWNpcGVzIGV4cGVjdCBjZXJ0YWluIGxvY2FsaXphdGlvbnMgdG8gYmUgZW5hYmxlZCwgZS5nLgorIyBiYXNoLXB0ZXN0OiBmci1mciwgZGUtZGUKKyMgZ2xpYi0yLjAtcHRlc3Q6IHRyLXRyLCBsdC1sdCwgamEtanAuZXVjLWpwLCBmYS1pciwgcnUtcnUsIGRlLWRlLCBoci1ociwgZWwtZ3IsIGZyLWZyLCBlcy1lcywgZW4tZ2IKKyMgaWYgeW91IHJlbW92ZSBzb21lIG9mIHRoZXNlIGFuZCBlbmFibGUgcHRlc3QsIHlvdSdsbCBnZXQgUUEgd2FybmluZyBsaWtlOgorIyBFUlJPUjogZ2xpYi0yLjAtMV8yLjU4LjAtcjAgZG9fcGFja2FnZV9xYTogUUEgSXNzdWU6IGdsaWItMi4wLXB0ZXN0IHJkZXBlbmRzIG9uIGxvY2FsZS1iYXNlLWRlLWRlLCBidXQgaXQgaXNuJ3QgYSBidWlsZCBkZXBlbmRlbmN5PyBbYnVpbGQtZGVwc10KICNHTElCQ19HRU5FUkFURV9MT0NBTEVTID0gImVuX0dCLlVURi04IGVuX1VTLlVURi04IgogI0lNQUdFX0xJTkdVQVMgPz0gImVuLWdiIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL3NpdGUuY29uZi5zYW1wbGUgYi9wb2t5L21ldGEtcG9reS9jb25mL3NpdGUuY29uZi5zYW1wbGUKaW5kZXggNmNmZWZjNS4uYTRjMmY5ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9zaXRlLmNvbmYuc2FtcGxlCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvc2l0ZS5jb25mLnNhbXBsZQpAQCAtMjQsNyArMjQsOSBAQAogI29yCiAjQUxMX1BST1hZID89ICJodHRwczovL3Byb3h5LmV4YW1wbGUuY29tOjgwODAiCiAjIElmIHlvdSB3aXNoIHRvIHVzZSBjZXJ0YWluIGhvc3RzIHdpdGhvdXQgdGhlIHByb3h5LCBzcGVjaWZ5IHRoZW0gaW4gTk9fUFJPWFkuCi0jIFNlZSB0aGUgc2NyaXB0IGZvciBkZXRhaWxzIG9uIHN5bnRheC4KKyMgU2VlIHRoZSBzY3JpcHQgZm9yIGRldGFpbHMgb24gc3ludGF4LiBUaGUgc2NyaXB0IG9lLWdpdC1wcm94eSB1c2VzIHNvbWUgdG9vbHMKKyMgdGhhdCBtYXkgbm90IGJlIGluY2x1ZGVkIG9uIEhPU1RUT09MUywgdGh1cyAgYWRkIHRoZW0gbWFudWFsbHkgdGhyb3VnaAorIyBIT1NUVE9PTFMgKz0gImdldGVudCBzZXEiCiAKICMgVW5jb21tZW50IHRoaXMgdG8gdXNlIGEgc2hhcmVkIGRvd25sb2FkIGRpcmVjdG9yeQogI0RMX0RJUiA9ICIvc29tZS9zaGFyZWQvZG93bmxvYWQvZGlyZWN0b3J5LyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCmluZGV4IGY1NzRhNTAuLjA2MjZiMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw0ICs5LDQgQEAKIEJCRklMRV9QQVRURVJOX3NlbGZ0ZXN0ID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfc2VsZnRlc3QgPSAiNSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3NlbGZ0ZXN0ID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAidGh1ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZl9ydW50aW1lLnB5IGIvcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkKaW5kZXggMWFhNzI3NC4uNjRhMzUwMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgRXhwZWN0ZWQ6IDEuIEZlZWRzIHdlcmUgY29ycmVjdGx5IHNldCBmb3IgZG5mCiAgICAgICAgICAgICAgICAgICAyLiBVcGRhdGUgcmVjb3ZlcnMgcGFja2FnZXMgZnJvbSBob3N0J3MgcmVwbwogICAgICAgICBBdXRob3I6IEh1bWJlcnRvIEliYXJyYSA8aHVtYmVydG8uaWJhcnJhLmxvcGV6QGludGVsLmNvbT4KLSAgICAgICAgQXV0aG9yOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICAiIiIKICAgICAgICAgIyBXaGVuIHdlIGNyZWF0ZWQgYW4gaW1hZ2UsIHdlIGhhZCB0byBzdXBwbHkgZmFrZSBpcCBhbmQgcG9ydAogICAgICAgICAjIGZvciB0aGUgZmVlZHMuIE5vdyB3ZSBjYW4gcGF0Y2ggdGhlIHJlYWwgb25lcyBpbnRvIHRoZSBjb25maWcgZmlsZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvYXNwZWxsL2FzcGVsbF8wLjAuMC4xLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9hc3BlbGwvYXNwZWxsXzAuMC4wLjEuYmIKaW5kZXggMDczY2Y1Ni4uOTIyNTE4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9hc3BlbGwvYXNwZWxsXzAuMC4wLjEuYmIKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9hc3BlbGwvYXNwZWxsXzAuMC4wLjEuYmIKQEAgLTI4LDUgKzI4LDggQEAKIEZJTEVTX2xpYnBzcGVsbCA9ICIke2xpYmRpcn0vbGlicHNwZWxsLnNvLioiCiBGSUxFU19saWJwc3BlbGwtZGV2ID0gIiR7bGliZGlyfS9saWJwc3BlbGwqICR7YmluZGlyfS9wc3BlbGwtY29uZmlnICR7aW5jbHVkZWRpcn0vcHNwZWxsIgogCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyYTk3NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsuYmIKQEAgLTAsMCArMSwzMCBAQAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK0xJQ0VOU0UgPSAiTUlUIgorCitTUkNfVVJJID0gImZpbGU6Ly9oZWxsby5jIFwKKyAgICAgICAgICAgZmlsZTovL2dkYi5zaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9fY29tcGlsZSAoKSB7CisJJHtDQ30gaGVsbG8uYyAtbyBoZWxsbzEgJHtDRkxBR1N9ICR7TERGTEFHU30KK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZGIuc2ggJHtEfSR7YmluZGlyfS8KKwlpbnN0YWxsIC1tIDc1NSBoZWxsbzEgJHtEfSR7YmluZGlyfS9oZWxsbzEKKwlsbiAke0R9JHtiaW5kaXJ9L2hlbGxvMSAke0R9JHtiaW5kaXJ9L2hlbGxvMgorCisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2JpbmRpcn0vaGVsbG8xICR7RH0ke2xpYmV4ZWNkaXJ9L2hlbGxvMworCWxuICR7RH0ke2JpbmRpcn0vaGVsbG8xICR7RH0ke2xpYmV4ZWNkaXJ9L2hlbGxvNAorCisJZGQgaWY9L2Rldi96ZXJvIG9mPSR7RH0ke2JpbmRpcn0vc3BhcnNldGVzdCBicz0xIGNvdW50PTAgc2Vlaz0xTQorfQorCitSREVQRU5EU18ke1BOfS1nZGIgKz0gImdkYiIKK1BBQ0tBR0VTID0rICIke1BOfS1nZGIiCitGSUxFU18ke1BOfS1nZGIgPSAiJHtiaW5kaXJ9L2dkYi5zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsvZ2RiLnNoIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay9nZGIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjY0MTdkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsvZ2RiLnNoCkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoCitnZGIgLXEgJDEgIDw8J0VPRicKK2IgbWFpbgorcgorYworcQorRU9GCitlY2hvICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWhhcmRsaW5rL3NlbGZ0ZXN0LWhhcmRsaW5rL2hlbGxvLmMgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWhhcmRsaW5rL3NlbGZ0ZXN0LWhhcmRsaW5rL2hlbGxvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0NWRjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsvaGVsbG8uYwpAQCAtMCwwICsxLDUgQEAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbigpIHsKKwlwcmludGYoIkhlbGxvIFdvcmxkIVxuIik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggNGU4NjkyZS4uMTNiZGE3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCkBAIC0xNCw0ICsxNCw0IEBACiAKIExBWUVSREVQRU5EU19za2VsZXRvbiA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9za2VsZXRvbiA9ICJ0aHVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgppbmRleCA2NDcyMjM4Li41M2U4NzIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw0ICs5LDQgQEAKIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG9ic3AgPSAiNSIKIExBWUVSVkVSU0lPTl95b2N0b2JzcCA9ICI0IgotTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAidGh1ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgppbmRleCBhZTY4MmE0Li5lOTExZTc1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCkBAIC0yMCwxMCArMjAsMTAgQEAKIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBrZXJuZWwtZGV2aWNldHJlZSBrZXJuZWwtaW1hZ2UtemltYWdlIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eU8wIgorU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlPMCIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE1JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE4JSIKIAogS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCiBLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCkBAIC0zNyw0ICszNyw0IEBACiAKIE1BQ0hJTkVfRkVBVFVSRVMgPSAidXNiZ2FkZ2V0IHVzYmhvc3QgdmZhdCBhbHNhIgogCi1JTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IE1MTyIKK0lNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIHpJbWFnZSBhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKaW5kZXggNjFmMjE0NS4uYjdhOTRlOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgpAQCAtMTEsOSArMTEsOSBAQAogS0VSTkVMX0lNQUdFX1NUUklQX0VYVFJBX1NFQ1RJT05TICA9ICIuY29tbWVudCIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE1JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE4JSIKIAotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eVMwIgorU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKIFVTRV9WVCA/PSAiMCIKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKaW5kZXggZTM1Njg1Yy4uZjgzY2U1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAgICAgICAgICR7WFNFUlZFUl9YODZfTU9ERVNFVFRJTkd9IFwKICAgICAgICAgICAgIgogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJsaW51eC1maXJtd2FyZSBlZWUtYWNwaS1zY3JpcHRzIgorTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZXMgbGludXgtZmlybXdhcmUiCiAKIEdMSUJDX0FERE9OUyA9ICJucHRsIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCmluZGV4IDM0ZjEyMzAuLjZmNWI5ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCkBAIC0xLDUgKzEsNSBAQAogI0BUWVBFOiBNYWNoaW5lCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHJ1bm5pbmcgCisjQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHJ1bm5pbmcKIAogVEFSR0VUX0ZQVSA9ICIiCiAKQEAgLTEwLDEyICsxMCwxMiBAQAogRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCiBVQk9PVF9NQUNISU5FID0gIk1QQzgzMTVFUkRCX2NvbmZpZyIKIAotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eVMwIgorU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKIAogTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTUlIgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID0gImxpbnV4LXlvY3RvIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTglIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgogWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKQEAgLTMyLDQgKzMyLDQgQEAKIAogSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgogV0tTX0ZJTEUgPz0gJ21wYzgzMTVlLXJkYi53a3MnCi1JTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuYmluIHVJbWFnZSB1SW1hZ2UtbXBjODMxNWVyZGIuZHRiO2R0YiIKK0lNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC5iaW4gdUltYWdlIG1wYzgzMTVlcmRiLmR0YjtkdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weSBiL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CmluZGV4IDI2Yzc3NWMuLmRmZDczOWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CkBAIC02LDI2ICs2LDkgQEAKIGZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBydW5xZW11CiAKIGNsYXNzIFN5c3RlbWRib290KE9FU2VsZnRlc3RUZXN0Q2FzZSk6Ci0gICAgZGVmIF9jb21tb25fc2V0dXAoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBDb21tb24gc2V0dXAgZm9yIHRlc3QgY2FzZXM6IDE0NDUsIDE1MjgKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBTZXQgRUZJX1BST1ZJREVSID0gInN5c3RlbWRib290IiBhbmQgTUFDSElORSA9ICJnZW5lcmljeDg2LTY0IiBpbiBjb25mL2xvY2FsLmNvbmYKLSAgICAgICAgZmVhdHVyZXMgPSAnRUZJX1BST1ZJREVSID0gInN5c3RlbWQtYm9vdCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ01BQ0hJTkUgPSAiZ2VuZXJpY3g4Ni02NCInCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhmZWF0dXJlcykKLQotICAgIGRlZiBfY29tbW9uX2J1aWxkKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgQ29tbW9uIGJ1aWxkIGZvciB0ZXN0IGNhc2VzOiAxNDQ1ICwgMTUyOAotICAgICAgICAiIiIKLQotICAgICAgICAjIEJ1aWxkIGEgZ2VuZXJpY3g4Ni02NC9lZmkgc3lzdGVtZGJvb3QgaW1hZ2UKLSAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwnKQotCiAKICAgICBAT0VUZXN0SUQoMTQ0NSkKKyAgICBAT0VUZXN0SUQoMTUyOCkKICAgICBkZWYgdGVzdF9lZmlfc3lzdGVtZGJvb3RfaW1hZ2VzX2Nhbl9iZV9idWlsdChzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBzeXN0ZW1kLWJvb3QgaW1hZ2VzIGNhbiBiZSBidWlsdCBjb3JyZWN0bHkKQEAgLTM2LDI2ICsxOSwyNSBAQAogICAgICAgICBBdXRvbWF0ZWRCeTogSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20+CiAgICAgICAgICIiIgogCi0gICAgICAgICMgV2UnZCB1c2UgREVQTE9ZX0RJUl9JTUFHRSBoZXJlLCBleGNlcHQgdGhhdCB3ZSBuZWVkIGl0cyB2YWx1ZSBmb3IKLSAgICAgICAgIyBNQUNISU5FPSJnZW5lcmljeDg2LTY0IHdoaWNoIGlzIHByb2JhYmx5IG5vdCB0aGUgb25lIGNvbmZpZ3VyZWQKLSAgICAgICAgc3lzdGVtZGJvb3RmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywgJ3N5c3RlbWQtYm9vdHg2NC5lZmknKQorICAgICAgICAjIFNldCBFRklfUFJPVklERVIgPSAic3lzdGVtZGJvb3QiIGFuZCBNQUNISU5FID0gImdlbmVyaWN4ODYtNjQiIGluIGNvbmYvbG9jYWwuY29uZgorICAgICAgICBmZWF0dXJlcyA9ICdFRklfUFJPVklERVIgPSAic3lzdGVtZC1ib290IlxuJworICAgICAgICBmZWF0dXJlcyArPSAnTUFDSElORSA9ICJnZW5lcmljeDg2LTY0IicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGZlYXR1cmVzKQogCi0gICAgICAgIHNlbGYuX2NvbW1vbl9zZXR1cCgpCisgICAgICAgIGRlcGxveWRpciA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnLCAiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgc3lzdGVtZGJvb3RmaWxlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ3N5c3RlbWQtYm9vdHg2NC5lZmknKQogCiAgICAgICAgICMgRW5zdXJlIHdlJ3JlIGFjdHVhbGx5IHRlc3RpbmcgdGhhdCB0aGlzIGdldHMgYnVpbHQgYW5kIG5vdCB0aGF0CiAgICAgICAgICMgaXQgd2FzIGFyb3VuZCBmcm9tIGFuIGVhcmxpZXIgYnVpbGQKICAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gc3lzdGVtZC1ib290JykKICAgICAgICAgcnVuQ21kKCdybSAtZiAlcycgJSBzeXN0ZW1kYm9vdGZpbGUpCiAKLSAgICAgICAgc2VsZi5fY29tbW9uX2J1aWxkKCkKKyAgICAgICAgIyBCdWlsZCBhIGdlbmVyaWN4ODYtNjQvZWZpIHN5c3RlbWRib290IGltYWdlCisgICAgICAgIGJpdGJha2UoJ210b29scy1uYXRpdmUgY29yZS1pbWFnZS1taW5pbWFsJykKIAogICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKHN5c3RlbWRib290ZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnU3lzdGVtZC1Cb290IGZpbGUgJXMgbm90IGZvdW5kJyAlIHN5c3RlbWRib290ZmlsZSkKIAotICAgIEBPRVRlc3RJRCgxNTI4KQotICAgIEBPRVRlc3REZXBlbmRzKFsnc3lzdGVtZF9ib290LlN5c3RlbWRib290LnRlc3RfZWZpX3N5c3RlbWRib290X2ltYWdlc19jYW5fYmVfYnVpbHQnXSkKLSAgICBkZWYgdGVzdF9pbWFnZV9lZmlfZmlsZShzZWxmKToKLQogICAgICAgICAiIiIKICAgICAgICAgU3VtbWFyeTogICAgICBDaGVjayBpZiBFRkkgYm9vdGxvYWRlciBmb3Igc3lzdGVtZCBpcyBjb3JyZWN0bHkgYnVpbGQKICAgICAgICAgRGVwZW5kZW5jaWVzOiBJbWFnZSB3YXMgYnVpbHQgY29ycmVjdGx5IG9uIHRlc3RjYXNlIDE0NDUKQEAgLTcxLDI4ICs1MywyMSBAQAogICAgICAgICBBdXRvbWF0ZWRCeTogIEpvc2UgUGVyZXogQ2FycmFuemEgPGpvc2UucGVyZXouY2FycmFuemEgYXQgbGludXgtaW50ZWwuY29tPgogICAgICAgICAiIiIKIAotICAgICAgICBzeXN0ZW1kYm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignREVQTE9ZX0RJUicpLCAnaW1hZ2VzJywgJ2dlbmVyaWN4ODYtNjQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW1kLWJvb3R4NjQuZWZpJykKLSAgICAgICAgc3lzdGVtZGJvb3RpbWFnZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdERVBMT1lfRElSJyksICdpbWFnZXMnLCAnZ2VuZXJpY3g4Ni02NCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYtNjQuaGRkaW1nJykKLSAgICAgICAgaW1hZ2Vib290ZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdERVBMT1lfRElSJyksICdpbWFnZXMnLCAnZ2VuZXJpY3g4Ni02NCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9vdHg2NC5lZmknKQotICAgICAgICBtY29weW5hdGl2ZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnKSwgJ21jb3B5JykKKyAgICAgICAgc3lzdGVtZGJvb3RpbWFnZSA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsICdjb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC5oZGRpbWcnKQorICAgICAgICBpbWFnZWJvb3RmaWxlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ2Jvb3R4NjQuZWZpJykKKyAgICAgICAgbWNvcHluYXRpdmUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgImNvcmUtaW1hZ2UtbWluaW1hbCIpLCAnbWNvcHknKQogCi0gICAgICAgICNDbGVhbiBlbnZpcm9ubWVudCBiZWZvcmUgc3RhcnQgdGhlIHRlc3QKKyAgICAgICAgIyBDbGVhbiBlbnZpcm9ubWVudCBiZWZvcmUgc3RhcnQgdGhlIHRlc3QKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSk6CiAgICAgICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIGltYWdlYm9vdGZpbGUpCiAKLSAgICAgICAgICAgICNTdGVwIDEKLSAgICAgICAgICAgIHJ1bkNtZCgnJXMgLWkgJXMgOjpFRkkvQk9PVC9ib290eDY0LmVmaSAlcycgJSAobWNvcHluYXRpdmUgLHN5c3RlbWRib290aW1hZ2UsCisgICAgICAgIHJ1bkNtZCgnJXMgLWkgJXMgOjpFRkkvQk9PVC9ib290eDY0LmVmaSAlcycgJSAobWNvcHluYXRpdmUgLHN5c3RlbWRib290aW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYm9vdGZpbGUpKQogCi0gICAgICAgICAgICAjU3RlcCAyCi0gICAgICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKGltYWdlYm9vdGZpbGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdib290eDY0LmVmaSBmaWxlICVzIHdhcyBub3QgY29waWVkIGZyb20gaW1hZ2UnCisgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnYm9vdHg2NC5lZmkgZmlsZSAlcyB3YXMgbm90IGNvcGllZCBmcm9tIGltYWdlJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgaW1hZ2Vib290ZmlsZSkKIAotICAgICAgICAgICAgI1N0ZXAgMwotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdtZDVzdW0gJXMgJXMnICUgKHN5c3RlbWRib290ZmlsZSwgaW1hZ2Vib290ZmlsZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3BsaXQoKVswXSwgcmVzdWx0Lm91dHB1dC5zcGxpdCgpWzJdLAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ21kNXN1bSAlcyAlcycgJSAoc3lzdGVtZGJvb3RmaWxlLCBpbWFnZWJvb3RmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnNwbGl0KClbMF0sIHJlc3VsdC5vdXRwdXQuc3BsaXQoKVsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzIHdhcyBub3QgY29ycmVjbHR5IGdlbmVyYXRlZCcgJSBpbWFnZWJvb3RmaWxlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDQ0ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKQEAgLTAsMCArMSwxNSBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQyODA5YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgotS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCi1LTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgotCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI3ZTdhYzNmMGZkYTk3MDdlOTRiMzMxMWE0NTEwYWUwODBjZDg2MjM4IgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiN2U3YWMzZjBmZGE5NzA3ZTk0YjMzMTFhNDUxMGFlMDgwY2Q4NjIzOCIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjg5ZTAwMzc0NmVlZTU0ZTg2YmM3OGUxMTcwZTcwMjlkNjU5N2I1ODMiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICI4OWUwMDM3NDZlZWU1NGU4NmJjNzhlMTE3MGU3MDI5ZDY1OTdiNTgzIgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI3MDgwYTVmZTZhZjMzODU3NjIwN2ZmZjk5OWVhMmNhMzVlNjg5OTk3IgotCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTIuMjQiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi4yNCIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjI0IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTIuMjQiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEyLjI0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiYXBwZW5kCmluZGV4IGZlYjhkMmUuLjUwMjQ4NWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYmFwcGVuZAorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQKQEAgLTgsMTEgKzgsMTEgQEAKIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKIEtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCiAKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjA4NGFmOTYyNGQyNjhkZGY0ZmQ2NWIyZjllOGU1MGNhMmYyMmU2MmIiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIwODRhZjk2MjRkMjY4ZGRmNGZkNjViMmY5ZThlNTBjYTJmMjJlNjJiIgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiNjVkMWM4NDk1MzQxNzliYmZhNDk0Zjc3OTQ3ZjhiZTYxNWU5ODcxYSIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImQ2MmRkZmEyNmE1OWM4M2Y2MTI4NzkwYjdhYTJiYWFkYzA0ZDI5NjAiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjgwYTEwNmVjZjczN2I2OTg2NGUwN2I5NTVlY2NiNjJmODA5Y2YxMjAiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICIyYzVjYWE3ZTg0MzExZjJhMDA5Nzk3NGE2OTdhYzFmNTkwMzA1MzBlIgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiMmM1Y2FhN2U4NDMxMWYyYTAwOTc5NzRhNjk3YWMxZjU5MDMwNTMwZSIKK1NSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImUwNmJmYTE4YzcyN2JkMGU2ZTEwY2YyNmQ5ZjE2MWU0Yzc5MWY1MmIiCitTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICJiODgwNWRlNzdkY2Y4ZjU5ZDgzNjhmZWU0OTIxYzE0NmMxMzAwYTZhIgorU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICJmODhlODczNjBiMTBmOGZiZDg1M2E3ZDQxMjk4MmU2NjIwZjNmOTZkIgogCiBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKQEAgLTIwLDggKzIwLDggQEAKIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCiBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTQuNjciCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNC42NyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE0LjQ4IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTQuNDgiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE0LjQ4IgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTQuNzYiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNC43NiIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE0LjcxIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTQuNzEiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE0LjcxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjFkYWEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NC4xNS9zdGFuZGFyZC9lZGdlcm91dGVyIgotS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY0LjE1L3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NC4xNS9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgotCi1LTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCi1LTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCi1LTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgotCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI1MTI3M2ZmNzlmNGFkOTMwZjRhNzg4MjU3ZjU4ZTEyNjZjYjIzNmUzIgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiNTEyNzNmZjc5ZjRhZDkzMGY0YTc4ODI1N2Y1OGUxMjY2Y2IyMzZlMyIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICJlMjVkYmZlOTUzMDJlZWFhMWEwM2E4MjhkMDVjMDk0Nzk1NzQ0ODhhIgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICIwYjMyZWRjNDZkZmU3YzQwYmY1NDUxZTliNzUzM2M4MjNiYjJjNmM0IgotCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKLUNPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCi1DT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgotQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCi0KLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjE1LjE4IgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTUuMTgiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xNS4xOCIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI0LjE1LjE4IgotTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xNS4xOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOC5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOC5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjU5OWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE4LmJiYXBwZW5kCkBAIC0wLDAgKzEsMjcgQEAKK0tCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjQuMTgvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjQuMTgvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NC4xOC9zdGFuZGFyZC9lZGdlcm91dGVyIgorS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY0LjE4L3N0YW5kYXJkL2JlYWdsZWJvbmUiCitLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NC4xOC9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgorCitLTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCitLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCitLTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgorCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICIzMzg1OWIzMDc3YzgzZDhhMDI0OTQ2YmEwNmE1OTk5MDU0NmZjYmM3IgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiMzM4NTliMzA3N2M4M2Q4YTAyNDk0NmJhMDZhNTk5OTA1NDZmY2JjNyIKK1NSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjBjZGM4NTY0YzYxOTU4YTM5NzA0ZDk3ZTAwODEyMGJkN2M3NjJmNjAiCitTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIwY2RjODU2NGM2MTk1OGEzOTcwNGQ5N2UwMDgxMjBiZDdjNzYyZjYwIgorU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICIyMGJlMjIzMWJiMDQ3YjAyMjQ4ZDdmOTY1YzFjM2FmMGM2YmUzYTVlIgorCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgorQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKK0NPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCitDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgorQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCisKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjE4LjE0IgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTguMTQiCitMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xOC45IgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTguOSIKK0xJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTguOSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUteW9jdG8ud2tzIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvYmVhZ2xlYm9uZS15b2N0by53a3MKaW5kZXggOTY3Y2FkNy4uYjc1ZjIzOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvYmVhZ2xlYm9uZS15b2N0by53a3MKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvYmVhZ2xlYm9uZS15b2N0by53a3MKQEAgLTIsNSArMiw1IEBACiAjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lLgogIyBCb290IGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBmaXJzdCB2ZmF0IHBhcnRpdGlvbi4KIAotcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBhcnRpdGlvbiAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPXZmYXQgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gNCAtLXNpemUgMTYKLXBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCByb290IC0tYWxpZ24gNAorcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBhcnRpdGlvbiAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPXZmYXQgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gNCAtLXNpemUgMTYgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj11LWJvb3QiIC0tdXNlLXV1aWQKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCByb290IC0tYWxpZ24gNCAtLXVzZS11dWlkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKaW5kZXggNTFiYTUwOS4uNWJkNWM0NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcwpAQCAtMiw3ICsyLDE4IEBACiAjIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgYXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50IHJlY2lwZXMvZGF0YSBmaWxlcyAodXN1YWxseSBzY3JpcHRzKQogIwogCi1QQUNLQUdFX0FSQ0ggPSAiYWxsIgorcHl0aG9uIGFsbGFyY2hfcGFja2FnZV9hcmNoX2hhbmRsZXIgKCkgeworICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoIm5hdGl2ZSIsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoIm5hdGl2ZXNkayIsIGQpIFwKKyAgICAgICAgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygiY3Jvc3NzZGsiLCBkKToKKyAgICAgICAgcmV0dXJuCisKKyAgICB2YXJpYW50cyA9IGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpCisgICAgaWYgbm90IHZhcmlhbnRzOgorICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgImFsbCIgKQorfQorCithZGRoYW5kbGVyIGFsbGFyY2hfcGFja2FnZV9hcmNoX2hhbmRsZXIKK2FsbGFyY2hfcGFja2FnZV9hcmNoX2hhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSIKIAogcHl0aG9uICgpIHsKICAgICAjIEFsbG93IHRoaXMgY2xhc3MgdG8gYmUgaW5jbHVkZWQgYnV0IG92ZXJyaWRkZW4gLSBvbmx5IHNldApAQCAtNDUsNiArNTYsNyBAQAogICAgICAgICAjIFRoZXNlIG11bHRpbGliIHZhbHVlcyBzaG91bGRuJ3QgY2hhbmdlIGFsbGFyY2ggcGFja2FnZXMgc28gZXhjbHVkZSB0aGVtCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZW1pdF9wa2dkYXRhIiwgInZhcmRlcHNleGNsdWRlIiwgIiBNVUxUSUxJQl9WQVJJQU5UUyIpCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygid3JpdGVfc3BlY2ZpbGUiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiIE1VTFRJTElCUyIpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fcGFja2FnZSIsICJ2YXJkZXBzZXhjbHVkZSIsICIgcGFja2FnZV9kb19zaGxpYnMiKQogICAgIGVsaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBkKToKICAgICAgICAgYmIuZXJyb3IoIlBsZWFzZSBlbnN1cmUgcmVjaXBlICVzIHNldHMgUEFDS0FHRV9BUkNIIGJlZm9yZSBpbmhlcml0IHBhY2thZ2Vncm91cCIgJSBkLmdldFZhcigiRklMRSIpKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggZDY4YWRkOS4uMGE5ZmU0ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC05OCw5ICs5OCwxMiBAQAogCiAgICAgICAgICMgVGhlcmUgaXMgYSBjb3JuZXIgY2FzZSB3aXRoICJnY2Mtc291cmNlLSR7UFZ9IiByZWNpcGVzLCB0aGV5IGRvbid0IGhhdmUKICAgICAgICAgIyB0aGUgImRvX2NvbmZpZ3VyZSIgdGFzaywgc28gd2UgbmVlZCB0byB1c2UgImRvX3ByZWNvbmZpZ3VyZSIKLSAgICAgICAgaWYgcG4uc3RhcnRzd2l0aCgiZ2NjLXNvdXJjZS0iKToKKyAgICAgICAgZGVmIGhhc1Rhc2sodGFzayk6CisgICAgICAgICAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcodGFzaywgInRhc2siLCBGYWxzZSkpIGFuZCBub3QgYm9vbChkLmdldFZhckZsYWcodGFzaywgIm5vZXhlYyIsIEZhbHNlKSkKKworICAgICAgICBpZiBoYXNUYXNrKCJkb19wcmVjb25maWd1cmUiKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYXJfY29uZmlndXJlZCcsICdkZXBlbmRzJywgJyAlczpkb19wcmVjb25maWd1cmUnICUgcG4pCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgaGFzVGFzaygiZG9fY29uZmlndXJlIik6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2FyX2NvbmZpZ3VyZWQnLCAnZGVwZW5kcycsICcgJXM6ZG9fY29uZmlndXJlJyAlIHBuKQogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyAlczpkb19hcl9jb25maWd1cmVkJyAlIHBuKQogCkBAIC0yNDMsMjEgKzI0NiwyNiBAQAogICAgICAgICAjIGRvX2NvbmZpZ3VyZSwgd2UgYXJjaGl2ZSB0aGUgYWxyZWFkeSBjb25maWd1cmVkICR7U30gdG8KICAgICAgICAgIyBpbnN0ZWFkIG9mLgogICAgICAgICBlbGlmIHBuICE9ICdsaWJ0b29sLW5hdGl2ZSc6CisgICAgICAgICAgICBkZWYgcnVuVGFzayh0YXNrKToKKyAgICAgICAgICAgICAgICBwcmVmdW5jcyA9IGQuZ2V0VmFyRmxhZyh0YXNrLCAncHJlZnVuY3MnKSBvciAnJworICAgICAgICAgICAgICAgIGZvciBmdW5jIGluIHByZWZ1bmNzLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMgIT0gInN5c3Jvb3RfY2xlYW5zc3RhdGUiOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGZ1bmMsIGQpCisgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKHRhc2ssIGQpCisgICAgICAgICAgICAgICAgcG9zdGZ1bmNzID0gZC5nZXRWYXJGbGFnKHRhc2ssICdwb3N0ZnVuY3MnKSBvciAnJworICAgICAgICAgICAgICAgIGZvciBmdW5jIGluIHBvc3RmdW5jcy5zcGxpdCgpOgorICAgICAgICAgICAgICAgICAgICBpZiBmdW5jICE9ICdkb19xYV9jb25maWd1cmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGZ1bmMsIGQpCisKICAgICAgICAgICAgICMgQ2hhbmdlIHRoZSBXT1JLRElSIHRvIG1ha2UgZG9fY29uZmlndXJlIHJ1biBpbiBhbm90aGVyIGRpci4KICAgICAgICAgICAgIGQuc2V0VmFyKCdXT1JLRElSJywgZC5nZXRWYXIoJ0FSQ0hJVkVSX1dPUktESVInKSkKLSAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbC15b2N0bycsIGQpOgotICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fa2VybmVsX2NvbmZpZ21lJywgZCkKLSAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2NtYWtlJywgZCk6Ci0gICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19nZW5lcmF0ZV90b29sY2hhaW5fZmlsZScsIGQpCi0gICAgICAgICAgICBwcmVmdW5jcyA9IGQuZ2V0VmFyRmxhZygnZG9fY29uZmlndXJlJywgJ3ByZWZ1bmNzJykKLSAgICAgICAgICAgIGZvciBmdW5jIGluIChwcmVmdW5jcyBvciAnJykuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBpZiBmdW5jICE9ICJzeXNyb290X2NsZWFuc3N0YXRlIjoKLSAgICAgICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGZ1bmMsIGQpCi0gICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2NvbmZpZ3VyZScsIGQpCi0gICAgICAgICAgICBwb3N0ZnVuY3MgPSBkLmdldFZhckZsYWcoJ2RvX2NvbmZpZ3VyZScsICdwb3N0ZnVuY3MnKQotICAgICAgICAgICAgZm9yIGZ1bmMgaW4gKHBvc3RmdW5jcyBvciAnJykuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBpZiBmdW5jICE9ICJkb19xYV9jb25maWd1cmUiOgotICAgICAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZnVuYywgZCkKKworICAgICAgICAgICAgcHJlY2VlZHMgPSBiYi5idWlsZC5wcmVjZWVkdGFzaygnZG9fY29uZmlndXJlJywgRmFsc2UsIGQpCisgICAgICAgICAgICBmb3IgdGFzayBpbiBwcmVjZWVkczoKKyAgICAgICAgICAgICAgICBpZiB0YXNrICE9ICdkb19wYXRjaCcgYW5kIHRhc2sgIT0gJ2RvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QnOgorICAgICAgICAgICAgICAgICAgICBydW5UYXNrKHRhc2spCisgICAgICAgICAgICBydW5UYXNrKCdkb19jb25maWd1cmUnKQorCiAgICAgICAgIHNyY2RpciA9IGQuZ2V0VmFyKCdTJykKICAgICAgICAgYnVpbGRkaXIgPSBkLmdldFZhcignQicpCiAgICAgICAgIGlmIHNyY2RpciAhPSBidWlsZGRpcjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKaW5kZXggY2M4NTdhYy4uODc2OGE2YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKQEAgLTIyNSw3ICsyMjUsNyBAQAogCQkJZmluZCAke1N9IC1pZ25vcmVfcmVhZGRpcl9yYWNlIC1uYW1lICRpIC1kZWxldGUKIAkJZG9uZQogCi0JCWJibm90ZSBFeGVjdXRpbmcgQUNMT0NBTD1cIiRBQ0xPQ0FMXCIgYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocworCQliYm5vdGUgRXhlY3V0aW5nIEFDTE9DQUw9XCIkQUNMT0NBTFwiIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocwogCQlBQ0xPQ0FMPSIkQUNMT0NBTCIgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzIHx8IGRpZSAiYXV0b3JlY29uZiBleGVjdXRpb24gZmFpbGVkLiIKIAkJY2QgJG9sZGRpcgogCWZpCkBAIC0yMzcsNyArMjM3LDcgQEAKIH0KIAogYXV0b3Rvb2xzX2RvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZQorCW9lX3J1bm1ha2UKIH0KIAogYXV0b3Rvb2xzX2RvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKaW5kZXggMmE2YTZjYi4uYmM5YjIzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwpAQCAtMTI4LDYgKzEyOCwxMiBAQAogICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoc3JjdG9vbCwgZGVzdHRvb2wpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5vdGZvdW5kLmFwcGVuZCh0b29sKQorICAgICMgRm9yY2UgInB5dGhvbiIgLT4gInB5dGhvbjIiCisgICAgZGVzdHRvb2wgPSBvcy5wYXRoLmpvaW4oZGVzdCwgInB5dGhvbiIpCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3R0b29sKToKKyAgICAgICAgc3JjdG9vbCA9ICJweXRob24yIgorICAgICAgICBvcy5zeW1saW5rKHNyY3Rvb2wsIGRlc3R0b29sKQorCiAgICAgaWYgbm90Zm91bmQgYW5kIGZhdGFsOgogICAgICAgICBiYi5mYXRhbCgiVGhlIGZvbGxvd2luZyByZXF1aXJlZCB0b29scyAoYXMgc3BlY2lmaWVkIGJ5IEhPU1RUT09MUykgYXBwZWFyIHRvIGJlIHVuYXZhaWxhYmxlIGluIFBBVEgsIHBsZWFzZSBpbnN0YWxsIHRoZW0gaW4gb3JkZXIgdG8gcHJvY2VlZDpcbiAgJXMiICUgIiAiLmpvaW4obm90Zm91bmQpKQogCkBAIC0xNTIsNyArMTU4LDcgQEAKIGFkZHRhc2sgdW5wYWNrIGFmdGVyIGRvX2ZldGNoCiBkb191bnBhY2tbZGlyc10gPSAiJHtXT1JLRElSfSIKIAotZG9fdW5wYWNrW2NsZWFuZGlyc10gPSAiJHtAZC5nZXRWYXIoJ1MnKSBpZiBkLmdldFZhcignUycpICE9IGQuZ2V0VmFyKCdXT1JLRElSJykgZWxzZSBvcy5wYXRoLmpvaW4oJyR7U30nLCAncGF0Y2hlcycpfSIKK2RvX3VucGFja1tjbGVhbmRpcnNdID0gIiR7QGQuZ2V0VmFyKCdTJykgaWYgb3MucGF0aC5ub3JtcGF0aChkLmdldFZhcignUycpKSAhPSBvcy5wYXRoLm5vcm1wYXRoKGQuZ2V0VmFyKCdXT1JLRElSJykpIGVsc2Ugb3MucGF0aC5qb2luKCcke1N9JywgJ3BhdGNoZXMnKX0iCiAKIHB5dGhvbiBiYXNlX2RvX3VucGFjaygpIHsKICAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgIiIpLnNwbGl0KCkKQEAgLTUyMiwxOSArNTI4LDE4IEBACiAgICAgICAgICAgICBpbmNvbXBhdHdsID0gW10KICAgICAgICAgICAgIGZvciBsaWMgaW4gYmFkX2xpY2Vuc2VzOgogICAgICAgICAgICAgICAgIHNwZHhfbGljZW5zZSA9IHJldHVybl9zcGR4KGQsIGxpYykKLSAgICAgICAgICAgICAgICBmb3IgdyBpbiBbIkxHUEx2Ml9XSElURUxJU1RfIiwgIldISVRFTElTVF8iXToKLSAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIodyArIGxpYykgb3IgIiIpLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdC5leHRlbmQoKGQuZ2V0VmFyKHcgKyBzcGR4X2xpY2Vuc2UpIG9yICIiKS5zcGxpdCgpKQotICAgICAgICAgICAgICAgICAgICAnJycKLSAgICAgICAgICAgICAgICAgICAgV2UgbmVlZCB0byB0cmFjayB3aGF0IHdlIGFyZSB3aGl0ZWxpc3RpbmcgYW5kIHdoeS4gSWYgcG4gaXMKLSAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBub3RlIHRoYXQgdGhlIGltYWdlIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgaXMgY3JlYXRlZCBtYXkgaW5mYWN0IGNvbnRhaW4gaW5jb21wYXRpYmxlIGxpY2Vuc2VzIGRlc3BpdGUKLSAgICAgICAgICAgICAgICAgICAgSU5DT01QQVRJQkxFX0xJQ0VOU0UgYmVpbmcgc2V0LgotICAgICAgICAgICAgICAgICAgICAnJycKLSAgICAgICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKHcgKyBsaWMpIG9yICIiKS5zcGxpdCgpKQotICAgICAgICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIodyArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgbGljKSBvciAiIikuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6CisgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgJycnCisgICAgICAgICAgICAgICAgV2UgbmVlZCB0byB0cmFjayB3aGF0IHdlIGFyZSB3aGl0ZWxpc3RpbmcgYW5kIHdoeS4gSWYgcG4gaXMKKyAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIG5vdGUgdGhhdCB0aGUgaW1hZ2UgdGhhdAorICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgbWF5IGluZmFjdCBjb250YWluIGluY29tcGF0aWJsZSBsaWNlbnNlcyBkZXNwaXRlCisgICAgICAgICAgICAgICAgSU5DT01QQVRJQkxFX0xJQ0VOU0UgYmVpbmcgc2V0LgorICAgICAgICAgICAgICAgICcnJworICAgICAgICAgICAgICAgIGluY29tcGF0d2wuZXh0ZW5kKChkLmdldFZhcigiV0hJVEVMSVNUXyIgKyBsaWMpIG9yICIiKS5zcGxpdCgpKQorICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZToKKyAgICAgICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCiAKICAgICAgICAgICAgIGlmIG5vdCBwbiBpbiB3aGl0ZWxpc3Q6CiAgICAgICAgICAgICAgICAgcGtncyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKQEAgLTYyNCw3ICs2MjksNyBAQAogICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy56aXAnKSBvciBwYXRoLmVuZHN3aXRoKCcuamFyJyk6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyB1bnppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKLSAgICAgICAgIyBmaWxlIGlzIG5lZWRlZCBieSBycG0yY3Bpby5zaAorICAgICAgICAjIFNvbWUgcnBtIGZpbGVzIG1heSBiZSBjb21wcmVzc2VkIGludGVybmFsbHkgdXNpbmcgeHogKGZvciBleGFtcGxlLCBycG1zIGZyb20gRmVkb3JhKQogICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy5ycG0nKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwppbmRleCA2Mzk4MGY3Li40MGIyOTJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtNzcsNiArNzcsNyBAQAogCiAgICAgaW1wb3J0IHJlCiAgICAgaW1wb3J0IGpzb24KKyAgICBpbXBvcnQgc2hsZXgKICAgICBpbXBvcnQgZXJybm8KIAogICAgIHBrZ2hpc3RkaXIgPSBkLmdldFZhcignQlVJTERISVNUT1JZX0RJUl9QQUNLQUdFJykKQEAgLTI0NCw3ICsyNDUsNyBAQAogICAgICAgICAgICAgICAgIGtleSA9IGl0ZW1bMF0KICAgICAgICAgICAgICAgICBpZiBrZXkuZW5kc3dpdGgoJ18nICsgcGtnKToKICAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5WzotbGVuKHBrZyktMV0KLSAgICAgICAgICAgICAgICBwa2dkYXRhW2tleV0gPSBpdGVtWzFdCisgICAgICAgICAgICAgICAgcGtnZGF0YVtrZXldID0gaXRlbVsxXS5lbmNvZGUoJ2xhdGluLTEnKS5kZWNvZGUoJ3VuaWNvZGVfZXNjYXBlJykKIAogICAgICAgICBwa2dlID0gcGtnZGF0YS5nZXQoJ1BLR0UnLCAnMCcpCiAgICAgICAgIHBrZ3YgPSBwa2dkYXRhWydQS0dWJ10KQEAgLTI4Nyw3ICsyODgsNyBAQAogICAgICAgICBkaWN0dmFsID0ganNvbi5sb2Fkcyh2YWwpCiAgICAgICAgIGZpbGVsaXN0ID0gbGlzdChkaWN0dmFsLmtleXMoKSkKICAgICAgICAgZmlsZWxpc3Quc29ydCgpCi0gICAgICAgIHBrZ2luZm8uZmlsZWxpc3QgPSAiICIuam9pbihmaWxlbGlzdCkKKyAgICAgICAgcGtnaW5mby5maWxlbGlzdCA9ICIgIi5qb2luKFtzaGxleC5xdW90ZSh4KSBmb3IgeCBpbiBmaWxlbGlzdF0pCiAKICAgICAgICAgcGtnaW5mby5zaXplID0gaW50KHBrZ2RhdGFbJ1BLR1NJWkUnXSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY2x1dHRlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY2x1dHRlci5iYmNsYXNzCmluZGV4IGY1Y2QwNGYuLjg1NTAzNjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NsdXR0ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jbHV0dGVyLmJiY2xhc3MKQEAgLTEsNCArMSwzIEBACi0KIGRlZiBnZXRfbWlub3JfZGlyKHYpOgogICAgIGltcG9ydCByZQogICAgIG0gPSByZS5tYXRjaCgiXihbMC05XSspXC4oWzAtOV0rKSIsIHYpCkBAIC0xMiwxMSArMTEsNyBAQAogVkVSTUlOT1IgPSAiJHtAZ2V0X21pbm9yX2RpcigiJHtQVn0iKX0iCiBSRUFMTkFNRSA9ICIke0BnZXRfcmVhbF9uYW1lKCIke0JQTn0iKX0iCiAKLUNMVVRURVJfU1JDX0ZUUCA9ICIke0dOT01FX01JUlJPUn0vJHtSRUFMTkFNRX0vJHtWRVJNSU5PUn0vJHtSRUFMTkFNRX0tJHtQVn0udGFyLnh6O25hbWU9YXJjaGl2ZSIKLQotQ0xVVFRFUl9TUkNfR0lUID0gImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvJHtSRUFMTkFNRX07cHJvdG9jb2w9aHR0cHMiCi0KLVNSQ19VUkkgPSAiJHtDTFVUVEVSX1NSQ19GVFB9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtSRUFMTkFNRX0vJHtWRVJNSU5PUn0vJHtSRUFMTkFNRX0tJHtQVn0udGFyLnh6O25hbWU9YXJjaGl2ZSIKIFMgPSAiJHtXT1JLRElSfS8ke1JFQUxOQU1FfS0ke1BWfSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ2V0dGV4dApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKaW5kZXggZmNmZDVkZC4uZmQ0MGE5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC01NCw4ICs1NCw2IEBACiBPRUNNQUtFX1RBUkdFVF9DT01QSUxFID89ICJhbGwiCiBPRUNNQUtFX1RBUkdFVF9JTlNUQUxMID89ICJpbnN0YWxsIgogCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSAke2RhdGFkaXJ9L2NtYWtlIgotCiAjIENNYWtlIGV4cGVjdHMgdGFyZ2V0IGFyY2hpdGVjdHVyZXMgaW4gdGhlIGZvcm1hdCBvZiB1bmFtZSgyKSwKICMgd2hpY2ggZG8gbm90IGFsd2F5cyBtYXRjaCBUQVJHRVRfQVJDSCwgc28gYWxsIHRoZSBuZWNlc3NhcnkKICMgY29udmVyc2lvbnMgc2hvdWxkIGhhcHBlbiBoZXJlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY29tcHJlc3NfZG9jLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jb21wcmVzc19kb2MuYmJjbGFzcwppbmRleCAwNjlkNTM0Li40NWJiOGZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jb21wcmVzc19kb2MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jb21wcmVzc19kb2MuYmJjbGFzcwpAQCAtNzksNiArNzksNyBAQAogICAgIHJldHVybiBoYXJkbGlua19kaWN0CiAKIGRlZiBfcHJvY2Vzc19oYXJkbGluayhoYXJkbGlua19kaWN0LCBjb21wcmVzc19tb2RlLCBzaGVsbF9jbWRzLCBkZWNvbXByZXNzPUZhbHNlKToKKyAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgIGZvciB0YXJnZXQgaW4gaGFyZGxpbmtfZGljdDoKICAgICAgICAgaWYgZGVjb21wcmVzczoKICAgICAgICAgICAgIGNvbXByZXNzX2Zvcm1hdCA9IF9nZXRfY29tcHJlc3NfZm9ybWF0KHRhcmdldCwgc2hlbGxfY21kcy5rZXlzKCkpCkBAIC04Nyw3ICs4OCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjbWQgPSAiJXMgLWYgJXMiICUgKHNoZWxsX2NtZHNbY29tcHJlc3NfbW9kZV0sIHRhcmdldCkKICAgICAgICAgICAgIGJiLm5vdGUoJ2NvbXByZXNzIGhhcmRsaW5rICVzJyAlIHRhcmdldCkKLSAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCisgICAgICAgIChyZXR2YWwsIG91dHB1dCkgPSBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dChjbWQpCiAgICAgICAgIGlmIHJldHZhbDoKICAgICAgICAgICAgIGJiLndhcm4oImRlL2NvbXByZXNzIGZpbGUgZmFpbGVkICVzIChjbWQgd2FzICVzKSVzIiAlIChyZXR2YWwsIGNtZCwgIjpcbiVzIiAlIG91dHB1dCBpZiBvdXRwdXQgZWxzZSAiIikpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTE3Niw3ICsxNzcsNyBAQAogICAgICAgICAgICAgICAgICMgTm9ybWFsIGZpbGUKICAgICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKGZpbGUpOgogICAgICAgICAgICAgICAgICAgICBjbWQgPSAiJXMgJXMiICUgKGNvbXByZXNzX2NtZHNbY29tcHJlc3NfbW9kZV0sIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgIChyZXR2YWwsIG91dHB1dCkgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kKQorICAgICAgICAgICAgICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gc3VicHJvY2Vzcy5nZXRzdGF0dXNvdXRwdXQoY21kKQogICAgICAgICAgICAgICAgICAgICBpZiByZXR2YWw6CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJjb21wcmVzcyBmYWlsZWQgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMDYsNyArMjA3LDcgQEAKICAgICAgICAgICAgICAgICAjIE5vcm1hbCBmaWxlCiAgICAgICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShmaWxlKToKICAgICAgICAgICAgICAgICAgICAgY21kID0gIiVzICVzIiAlIChkZWNvbXByZXNzX2NtZHNbY29tcHJlc3NfZm9ybWF0XSwgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCisgICAgICAgICAgICAgICAgICAgIChyZXR2YWwsIG91dHB1dCkgPSBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dChjbWQpCiAgICAgICAgICAgICAgICAgICAgIGlmIHJldHZhbDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oImRlY29tcHJlc3MgZmFpbGVkICVzIChjbWQgd2FzICVzKSVzIiAlIChyZXR2YWwsIGNtZCwgIjpcbiVzIiAlIG91dHB1dCBpZiBvdXRwdXQgZWxzZSAiIikpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3Bhbi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Bhbi5iYmNsYXNzCmluZGV4IDhlMDc5ZTAuLmE1YmMzMDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NwYW4uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcGFuLmJiY2xhc3MKQEAgLTE2LDggKzE2LDcgQEAKIGV4cG9ydCBQRVJMSE9TVExJQiA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS8iCiAKIGNwYW5fZG9fY29uZmlndXJlICgpIHsKLQlleHBvcnQgUEVSTDVMSUI9IiR7UEVSTF9BUkNITElCfSIKLQl5ZXMgJycgfCBwZXJsICR7RVhUUkFfUEVSTEZMQUdTfSBNYWtlZmlsZS5QTCBJTlNUQUxMRElSUz12ZW5kb3IgJHtFWFRSQV9DUEFORkxBR1N9CisJeWVzICcnIHwgcGVybCAke0VYVFJBX1BFUkxGTEFHU30gTWFrZWZpbGUuUEwgSU5TVEFMTERJUlM9dmVuZG9yIE5PX1BFUkxMT0NBTD0xIE5PX1BBQ0tMSVNUPTEgJHtFWFRSQV9DUEFORkxBR1N9CiAKIAkjIE1ha2VmaWxlLlBMcyBjYW4gZXhpdCB3aXRoIHN1Y2Nlc3Mgd2l0aG91dCBnZW5lcmF0aW5nIGEKIAkjIE1ha2VmaWxlLCBlLmcuIGluIGNhc2VzIG9mIG1pc3NpbmcgY29uZmlndXJlIHRpbWUKQEAgLTQxLDYgKzQwLDE2IEBACiAJZmkKIH0KIAorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgZmluZCAuIC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1FIC1pIFwKKyAgICAgICAgICAgLWUgJ3M6TERfUlVOX1BBVEggPz0gPyI/W14iXSoiPzo6ZycKK30KKworZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgICAgZmluZCAuIC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1FIC1pIFwKKyAgICAgICAgICAgLWUgJ3M6TERfUlVOX1BBVEggPz0gPyI/W14iXSoiPzo6ZycKK30KKwogY3Bhbl9kb19jb21waWxlICgpIHsKIAlvZV9ydW5tYWtlIFBBU1RIUlVfSU5DPSIke0NGTEFHU30iIExEPSIke0NDTER9IgogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3Bhbl9idWlsZC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Bhbl9idWlsZC5iYmNsYXNzCmluZGV4IGZhYzA3NGQuLjlhMmFkODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NwYW5fYnVpbGQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcGFuX2J1aWxkLmJiY2xhc3MKQEAgLTMwLDcgKzMwLDcgQEAKIH0KIAogY3Bhbl9idWlsZF9kb19jb21waWxlICgpIHsKLSAgICAgICAgcGVybCBCdWlsZCB2ZXJib3NlPTEKKyAgICAgICAgcGVybCBCdWlsZCAtLXBlcmwgIiR7YmluZGlyfS9wZXJsIiB2ZXJib3NlPTEKIH0KIAogY3Bhbl9idWlsZF9kb19pbnN0YWxsICgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCmluZGV4IGVlOGFhNjEuLmFjZGUzMzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwpAQCAtMzAsNyArMzAsNyBAQAogICAgIGlmIGQuZ2V0VmFyKCJNT0RJRllUT1MiKSAhPSAiMSI6CiAgICAgICAgIHJldHVybgogCi0gICAgaWYgZC5nZXRWYXIoIlRDTElCQyIpID09ICJiYXJlbWV0YWwiOgorICAgIGlmIGQuZ2V0VmFyKCJUQ0xJQkMiKSBpbiBbICdiYXJlbWV0YWwnLCAnbmV3bGliJyBdOgogICAgICAgICByZXR1cm4KIAogICAgIHRvcyA9IGQuZ2V0VmFyKCJUQVJHRVRfT1MiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKaW5kZXggNGU4NWNhYi4uMzRkNzk1MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCkBAIC0zNyw3ICszNyw2IEBACiBDRkxBR1MgPSAiJHtCVUlMRF9DRkxBR1N9IgogQ1hYRkxBR1MgPSAiJHtCVUlMRF9DRkxBR1N9IgogTERGTEFHUyA9ICIke0JVSUxEX0xERkxBR1N9IgotTERGTEFHU19idWlsZC1kYXJ3aW4gPSAiLUwke1NUQUdJTkdfTElCRElSX05BVElWRX0iCiAKIFRPT0xDSEFJTl9PUFRJT05TID0gIiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZTVhNWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MKQEAgLTAsMCArMSwxNDMgQEAKKyMgVGhpcyBiYmNsYXNzIGltcGxlbWVudHMgZGV2aWNlIHRyZWUgY29tcGxpYXRpb24gZm9yIHVzZXIgcHJvdmlkZWQgZGV2aWNlIHRyZWUKKyMgc291cmNlcy4gVGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBkZXZpY2UgdHJlZSBzb3VyY2VzIGlzIHRoZSBzYW1lIGFzIHRoZSBrZXJuZWwKKyMgZGV2aWNlIHRyZWUgY29tcGlsYXRpb24gcHJvY2VzcywgdGhpcyBpbmNsdWRlcyBiZWluZyBhYmxlIHRvIGluY2x1ZGUgc291cmNlcworIyBmcm9tIHRoZSBrZXJuZWwgc3VjaCBhcyBzb2MgZHRzaSBmaWxlcyBvciBoZWFkZXIgZmlsZXMgc3VjaCBhcyBncGlvLmguIEluCisjIGFkZGl0aW9uIHRvIGRldmljZSB0cmVlcyB0aGlzIGJiY2xhc3MgYWxzbyBoYW5kbGVzIGNvbXBpbGF0aW9uIG9mIGRldmljZSB0cmVlCisjIG92ZXJsYXlzLgorIworIyBUaGUgb3V0cHV0IG9mIHRoaXMgY2xhc3MgYmVoYXZlcyBzaW1pbGFyIHRvIGhvdyBrZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCisjIG9wZXJhdGVzIGluIHRoYXQgdGhlIG91dHB1dCBmaWxlcyBhcmUgaW5zdGFsbGVkIGludG8gL2Jvb3QvZGV2aWNldHJlZS4KKyMgSG93ZXZlciB0aGlzIGNsYXNzIG9uIHB1cnBvc2Ugc2VwYXJhdGVzIHRoZSBkZXBsb3llZCBkZXZpY2UgdHJlZXMgaW50byB0aGUKKyMgJ2RldmljZXRyZWUnIHN1YmRpcmVjdG9yeS4gVGhpcyBwcmV2ZW50cyBjbGFzaGVzIHdpdGggdGhlIGtlcm5lbC1kZXZpY2V0cmVlCisjIG91dHB1dC4gQWRkaXRpb25hbGx5IHRoZSBkZXZpY2UgdHJlZXMgYXJlIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGZvcgorIyBhY2Nlc3MgdmlhIHRoZSBzeXNyb290IGZyb20gd2l0aGluIG90aGVyIHJlY2lwZXMuCisKK1NFQ1RJT04gPz0gImJzcCIKKworIyBUaGUgZGVmYXVsdCBpbmNsdXNpb24gb2Yga2VybmVsIGRldmljZSB0cmVlIGluY2x1ZGVzIGFuZCBoZWFkZXJzIG1lYW5zIHRoYXQKKyMgZGV2aWNlIHRyZWVzIGJ1aWx0IHdpdGggdGhlbSBhcmUgYXQgbGVhc3QgR1BMdjIgKGFuZCBpbiBzb21lIGNhc2VzIGR1YWwKKyMgbGljZW5zZWQpLiBEZWZhdWx0IHRvIEdQTHYyIGlmIHRoZSByZWNpcGUgZG9lcyBub3Qgc3BlY2lmeSBhIGxpY2Vuc2UuCitMSUNFTlNFID89ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYiCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitERVBFTkRTICs9ICJkdGMtbmF0aXZlIgorCitpbmhlcml0IGRlcGxveSBrZXJuZWwtYXJjaAorCitDT01QQVRJQkxFX01BQ0hJTkUgPz0gIl4kIgorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitTWVNST09UX0RJUlMgKz0gIi9ib290L2RldmljZXRyZWUiCitGSUxFU18ke1BOfSA9ICIvYm9vdC9kZXZpY2V0cmVlLyouZHRiIC9ib290L2RldmljZXRyZWUvKi5kdGJvIgorCitTID0gIiR7V09SS0RJUn0iCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCisKKyMgRGVmYXVsdCBrZXJuZWwgaW5jbHVkZXMsIHRoZXNlIHJlcHJlc2VudCB3aGF0IGFyZSBub3JtYWxseSB1c2VkIGZvciBpbi1rZXJuZWwKKyMgc291cmNlcy4KK0tFUk5FTF9JTkNMVURFID8/PSAiIFwKKyAgICAgICAgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gvJHtBUkNIfS9ib290L2R0cyBcCisgICAgICAgICR7U1RBR0lOR19LRVJORUxfRElSfS9hcmNoLyR7QVJDSH0vYm9vdC9kdHMvKiBcCisgICAgICAgICR7U1RBR0lOR19LRVJORUxfRElSfS9zY3JpcHRzL2R0Yy9pbmNsdWRlLXByZWZpeGVzIFwKKyAgICAgICAgIgorCitEVF9JTkNMVURFW2RvY10gPSAiU2VhcmNoIHBhdGhzIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGJvdGggdGhlIGRldmljZSB0cmVlIGNvbXBpbGVyIGFuZCBwcmVwcm9jZXNzb3IgZm9yIGluY2x1c2lvbi4iCitEVF9JTkNMVURFID89ICIke0RUX0ZJTEVTX1BBVEh9ICR7S0VSTkVMX0lOQ0xVREV9IgorRFRfRklMRVNfUEFUSFtkb2NdID0gIkRlZmF1bHRzIHRvIHNvdXJjZSBkaXJlY3RvcnksIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBkdHMgZmlsZXMgdGhhdCBhcmUgbm90IGluIHNvdXJjZSAoZS5nLiBnZW5lcmF0ZWQpLiIKK0RUX0ZJTEVTX1BBVEggPz0gIiR7U30iCisKK0RUX1BBRERJTkdfU0laRVtkb2NdID0gIlNpemUgb2YgcGFkZGluZyBvbiB0aGUgZGV2aWNlIHRyZWUgYmxvYiwgdXNlZCBhcyBleHRyYSBzcGFjZSB0eXBpY2FsbHkgZm9yIGFkZGl0aW9uYWwgcHJvcGVydGllcyBkdXJpbmcgYm9vdC4iCitEVF9QQURESU5HX1NJWkUgPz89ICIweDMwMDAiCitEVF9SRVNFUlZFRF9NQVBbZG9jXSA9ICJOdW1iZXIgb2YgcmVzZXJ2ZWQgbWFwIGVudGlyZXMuIgorRFRfUkVTRVJWRURfTUFQID8/PSAiOCIKK0RUX0JPT1RfQ1BVW2RvY10gPSAiVGhlIGJvb3QgY3B1LCBkZWZhdWx0cyB0byAwIgorRFRfQk9PVF9DUFUgPz89ICIwIgorCitEVENfRkxBR1MgPz0gIi1SICR7RFRfUkVTRVJWRURfTUFQfSAtYiAke0RUX0JPT1RfQ1BVfSIKK0RUQ19QUEZMQUdTID89ICItbm9zdGRpbmMgLXVuZGVmIC1EX19EVFNfXyAteCBhc3NlbWJsZXItd2l0aC1jcHAiCitEVENfQkZMQUdTID89ICItcCAke0RUX1BBRERJTkdfU0laRX0iCitEVENfT0ZMQUdTID89ICItcCAwIC1AIC1IIGVwYXByIgorCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfSU5DTFVERSIpOgorICAgICAgICAjIGF1dG8gYWRkIGRlcGVuZGVuY3kgb24ga2VybmVsIHRyZWUsIGJ1dCBvbmx5IGlmIGtlcm5lbCBpbmNsdWRlIHBhdGhzCisgICAgICAgICMgYXJlIHNwZWNpZmllZC4KKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJkb19jb21waWxlIiwgImRlcGVuZHMiLCAiIHZpcnR1YWwva2VybmVsOmRvX2NvbmZpZ3VyZSIpCit9CisKK2RlZiBleHBhbmRfaW5jbHVkZXModmFybmFtZSwgZCk6CisgICAgaW1wb3J0IGdsb2IKKyAgICBpbmNsdWRlcyA9IHNldCgpCisgICAgIyBleHBhbmQgYWxsIGluY2x1ZGVzIHdpdGggZ2xvYgorICAgIGZvciBpIGluIChkLmdldFZhcih2YXJuYW1lKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgZm9yIGcgaW4gZ2xvYi5nbG9iKGkpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihnKTogIyBvbmx5IGFkZCBkaXJlY3RvcmllcyB0byBpbmNsdWRlIHBhdGgKKyAgICAgICAgICAgICAgICBpbmNsdWRlcy5hZGQoZykKKyAgICByZXR1cm4gaW5jbHVkZXMKKworZGVmIGRldmljZXRyZWVfc291cmNlX2lzX292ZXJsYXkocGF0aCk6CisgICAgIyBkZXRlcm1pbmUgaWYgYSBkdHMgZmlsZSBpcyBhbiBvdmVybGF5IGJ5IGNoZWNraW5nIGlmIGl0IHVzZXMgIi9wbHVnaW4vOyIKKyAgICB3aXRoIG9wZW4ocGF0aCwgInIiKSBhcyBmOgorICAgICAgICBmb3IgaSBpbiBmOgorICAgICAgICAgICAgaWYgaS5zdGFydHN3aXRoKCIvcGx1Z2luLzsiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCitkZWYgZGV2aWNldHJlZV9jb21waWxlKGR0c3BhdGgsIGluY2x1ZGVzLCBkKToKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIGR0cyA9IG9zLnBhdGguYmFzZW5hbWUoZHRzcGF0aCkKKyAgICBkdG5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGR0cylbMF0KKyAgICBiYi5ub3RlKCJQcm9jZXNzaW5nIHswfSBbezF9XSIuZm9ybWF0KGR0bmFtZSwgZHRzKSkKKworICAgICMgcHJlcHJvY2VzcworICAgIHBwYXJncyA9IGQuZ2V0VmFyKCJCVUlMRF9DUFAiKS5zcGxpdCgpCisgICAgcHBhcmdzICs9IChkLmdldFZhcigiRFRDX1BQRkxBR1MiKSBvciAiIikuc3BsaXQoKQorICAgIGZvciBpIGluIGluY2x1ZGVzOgorICAgICAgICBwcGFyZ3MuYXBwZW5kKCItSXswfSIuZm9ybWF0KGkpKQorICAgIHBwYXJncyArPSBbIi1vIiwgInswfS5wcCIuZm9ybWF0KGR0cyksIGR0c3BhdGhdCisgICAgYmIubm90ZSgiUnVubmluZyB7MH0iLmZvcm1hdCgiICIuam9pbihwcGFyZ3MpKSkKKyAgICBzdWJwcm9jZXNzLnJ1bihwcGFyZ3MsIGNoZWNrID0gVHJ1ZSkKKworICAgICMgZGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGFuIG92ZXJsYXkgb3Igbm90ICh1c2luZyB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUpCisgICAgaXNvdmVybGF5ID0gZGV2aWNldHJlZV9zb3VyY2VfaXNfb3ZlcmxheSgiezB9LnBwIi5mb3JtYXQoZHRzKSkKKworICAgICMgY29tcGlsZQorICAgIGR0Y2FyZ3MgPSBbImR0YyJdICsgKGQuZ2V0VmFyKCJEVENfRkxBR1MiKSBvciAiIikuc3BsaXQoKQorICAgIGlmIGlzb3ZlcmxheToKKyAgICAgICAgZHRjYXJncyArPSAoZC5nZXRWYXIoIkRUQ19PRkxBR1MiKSBvciAiIikuc3BsaXQoKQorICAgIGVsc2U6CisgICAgICAgIGR0Y2FyZ3MgKz0gKGQuZ2V0VmFyKCJEVENfQkZMQUdTIikgb3IgIiIpLnNwbGl0KCkKKyAgICBmb3IgaSBpbiBpbmNsdWRlczoKKyAgICAgICAgZHRjYXJncyArPSBbIi1pIiwgaV0KKyAgICBkdGNhcmdzICs9IFsiLW8iLCAiezB9LnsxfSIuZm9ybWF0KGR0bmFtZSwgImR0Ym8iIGlmIGlzb3ZlcmxheSBlbHNlICJkdGIiKV0KKyAgICBkdGNhcmdzICs9IFsiLUkiLCAiZHRzIiwgIi1PIiwgImR0YiIsICJ7MH0ucHAiLmZvcm1hdChkdHMpXQorICAgIGJiLm5vdGUoIlJ1bm5pbmcgezB9Ii5mb3JtYXQoIiAiLmpvaW4oZHRjYXJncykpKQorICAgIHN1YnByb2Nlc3MucnVuKGR0Y2FyZ3MsIGNoZWNrID0gVHJ1ZSkKKworcHl0aG9uIGRldmljZXRyZWVfZG9fY29tcGlsZSgpIHsKKyAgICBpbmNsdWRlcyA9IGV4cGFuZF9pbmNsdWRlcygiRFRfSU5DTFVERSIsIGQpCisgICAgbGlzdHBhdGggPSBkLmdldFZhcigiRFRfRklMRVNfUEFUSCIpCisgICAgZm9yIGR0cyBpbiBvcy5saXN0ZGlyKGxpc3RwYXRoKToKKyAgICAgICAgaWYgbm90IGR0cy5lbmRzd2l0aCgiLmR0cyIpOgorICAgICAgICAgICAgY29udGludWUgIyBza2lwIG5vbi0uZHRzIGZpbGVzCisgICAgICAgIGR0c3BhdGggPSBvcy5wYXRoLmpvaW4obGlzdHBhdGgsIGR0cykKKyAgICAgICAgZGV2aWNldHJlZV9jb21waWxlKGR0c3BhdGgsIGluY2x1ZGVzLCBkKQorfQorCitkZXZpY2V0cmVlX2RvX2luc3RhbGwoKSB7CisgICAgZm9yIERUQl9GSUxFIGluIGBscyAqLmR0YiAqLmR0Ym9gOyBkbworICAgICAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vJHtEVEJfRklMRX0gJHtEfS9ib290L2RldmljZXRyZWUvJHtEVEJfRklMRX0KKyAgICBkb25lCit9CisKK2RldmljZXRyZWVfZG9fZGVwbG95KCkgeworICAgIGZvciBEVEJfRklMRSBpbiBgbHMgKi5kdGIgKi5kdGJvYDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRG0gMDY0NCAke0J9LyR7RFRCX0ZJTEV9ICR7REVQTE9ZRElSfS9kZXZpY2V0cmVlLyR7RFRCX0ZJTEV9CisgICAgZG9uZQorfQorYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKKworRVhQT1JUX0ZVTkNUSU9OUyBkb19jb21waWxlIGRvX2luc3RhbGwgZG9fZGVwbG95CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCmluZGV4IDU2ODgyYTQuLjEzNzJlMzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcwpAQCAtOTAsMTEgKzkwLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSBpbiBmaWxlc10pCiAgICAgICAgIHJldHVybiByZXQKIAorICAgIGlzX2tlcm5lbF95b2N0byA9IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbC15b2N0bycsIGQpCiAgICAgIyBNb3ZlIGxvY2FsIHNvdXJjZSBmaWxlcyBpbnRvIHNlcGFyYXRlIHN1YmRpcgogICAgIHJlY2lwZV9wYXRjaGVzID0gW29zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGZvciBwYXRjaCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wYXRjaGVzKGQpXQogICAgIGxvY2FsX2ZpbGVzID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9sb2NhbF9maWxlcyhkKQogCisgICAgaWYgaXNfa2VybmVsX3lvY3RvOgorICAgICAgICBmb3Iga2V5IGluIGxvY2FsX2ZpbGVzLmNvcHkoKToKKyAgICAgICAgICAgIGlmIGtleS5lbmRzd2l0aCgnc2NjJyk6CisgICAgICAgICAgICAgICAgc2NjZmlsZSA9IG9wZW4obG9jYWxfZmlsZXNba2V5XSwgJ3InKQorICAgICAgICAgICAgICAgIGZvciBsIGluIHNjY2ZpbGU6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsLnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbGluZVswXSBpbiAoJ2tjb25mJywgJ3BhdGNoJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9maWxlc1tsaW5lWy0xXV0gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxvY2FsX2ZpbGVzW2tleV0pLCBsaW5lWy0xXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5Mihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxvY2FsX2ZpbGVzW2tleV0pLCBsaW5lWy0xXSksIHdvcmtkaXIpCisgICAgICAgICAgICAgICAgc2NjZmlsZS5jbG9zZSgpCisKICAgICAjIElnbm9yZSBsb2NhbCBmaWxlcyB3aXRoIHN1YmRpcj17QlB9CiAgICAgc3JjYWJzcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzcmNzdWJkaXIpCiAgICAgbG9jYWxfZmlsZXMgPSBbZm5hbWUgZm9yIGZuYW1lIGluIGxvY2FsX2ZpbGVzIGlmCkBAIC0xNzEsMTQgKzE4MywxNCBAQAogCiAgICAgZXh0cmFfb3ZlcnJpZGVzID0gZC5nZXRWYXIoJ0RFVlRPT0xfRVhUUkFfT1ZFUlJJREVTJykKICAgICBpZiBleHRyYV9vdmVycmlkZXM6Ci0gICAgICAgIGV4dHJhX292ZXJyaWRlX2xpc3QgPSBleHRyYV9vdmVycmlkZXMuc3BsaXQoJzonKQorICAgICAgICBleHRyYV9vdmVycmlkZXMgPSBzZXQoZXh0cmFfb3ZlcnJpZGVzLnNwbGl0KCc6JykpCiAgICAgICAgIGRldmJyYW5jaCA9IGQuZ2V0VmFyKCdERVZUT09MX0RFVkJSQU5DSCcpCiAgICAgICAgIGRlZmF1bHRfb3ZlcnJpZGVzID0gZC5nZXRWYXIoJ09WRVJSSURFUycpLnNwbGl0KCc6JykKICAgICAgICAgbm9fb3ZlcnJpZGVzID0gW10KICAgICAgICAgIyBGaXJzdCwgd2UgbWF5IGhhdmUgc29tZSBvdmVycmlkZXMgdGhhdCBhcmUgcmVmZXJyZWQgdG8gaW4gdGhlIHJlY2lwZSBzZXQgaW4KICAgICAgICAgIyBvdXIgY29uZmlndXJhdGlvbiwgc28gd2UgbmVlZCB0byBtYWtlIGEgYnJhbmNoIHRoYXQgZXhjbHVkZXMgdGhvc2UKICAgICAgICAgZm9yIG92ZXJyaWRlIGluIGRlZmF1bHRfb3ZlcnJpZGVzOgotICAgICAgICAgICAgaWYgb3ZlcnJpZGUgbm90IGluIGV4dHJhX292ZXJyaWRlX2xpc3Q6CisgICAgICAgICAgICBpZiBvdmVycmlkZSBub3QgaW4gZXh0cmFfb3ZlcnJpZGVzOgogICAgICAgICAgICAgICAgIG5vX292ZXJyaWRlcy5hcHBlbmQob3ZlcnJpZGUpCiAgICAgICAgIGlmIGRlZmF1bHRfb3ZlcnJpZGVzICE9IG5vX292ZXJyaWRlczoKICAgICAgICAgICAgICMgU29tZSBvdmVycmlkZXMgYXJlIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLCBzbwpAQCAtMTk2LDcgKzIwOCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzIC1iIGRldnRvb2wtbm8tb3ZlcnJpZGVzJyAlIGRldmJyYW5jaCwgY3dkPXNyY3N1YmRpcikKIAotICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZXh0cmFfb3ZlcnJpZGVfbGlzdDoKKyAgICAgICAgZm9yIG92ZXJyaWRlIGluIGV4dHJhX292ZXJyaWRlczoKICAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgICAgICAgICAgaWYgb3ZlcnJpZGUgaW4gZGVmYXVsdF9vdmVycmlkZXM6CiAgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBicmFuY2ggZGV2dG9vbC1vdmVycmlkZS0lcyAlcycgJSAob3ZlcnJpZGUsIGRldmJyYW5jaCksIGN3ZD1zcmNzdWJkaXIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtY29tbW9uLWJhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1jb21tb24tYmFzZS5iYmNsYXNzCmluZGV4IDgyNGExYjYuLjk0YjVmZDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1jb21tb24tYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1jb21tb24tYmFzZS5iYmNsYXNzCkBAIC0xLDYgKzEsMTggQEAKIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUgogZXhwb3J0IFNUQUdJTkdfTElCRElSCiAKKyMgTERTSEFSRUQgaXMgdGhlIGxkICpjb21tYW5kKiB1c2VkIHRvIGNyZWF0ZSBzaGFyZWQgbGlicmFyeQorZXhwb3J0IExEU0hBUkVEICA9ICIke0NDTER9IC1zaGFyZWQiCisjIExEWFhTSEFSRUQgaXMgdGhlIGxkICpjb21tYW5kKiB1c2VkIHRvIGNyZWF0ZSBzaGFyZWQgbGlicmFyeSBvZiBDKysKKyMgb2JqZWN0cworZXhwb3J0IExEQ1hYU0hBUkVEICA9ICIke0NYWH0gLXNoYXJlZCIKKyMgQ0NTSEFSRUQgYXJlIHRoZSBDICpmbGFncyogdXNlZCB0byBjcmVhdGUgb2JqZWN0cyB0byBnbyBpbnRvIGEgc2hhcmVkCisjIGxpYnJhcnkgKG1vZHVsZSkKK2V4cG9ydCBDQ1NIQVJFRCAgPSAiLWZQSUMgLURQSUMiCisjIExJTktGT1JTSEFSRUQgYXJlIHRoZSBmbGFncyBwYXNzZWQgdG8gdGhlICQoQ0MpIGNvbW1hbmQgdGhhdCBsaW5rcworIyB0aGUgcHl0aG9uIGV4ZWN1dGFibGUKK2V4cG9ydCBMSU5LRk9SU0hBUkVEID0gIntTRUNVUklUWV9DRkxBR1N9IC1YbGlua2VyIC1leHBvcnQtZHluYW1pYyIKKwogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qICR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9LyoiCiAKIEZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcwppbmRleCAxOTMwYzM1Li45ODYyNzMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcwpAQCAtNCwyMCArNCwzMCBAQAogRElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHUyA/PSAiLS1pbnN0YWxsLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgogRElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTID89ICItLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKICAgICAtLWluc3RhbGwtZGF0YT0ke1NUQUdJTkdfREFUQURJUn0iCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID89ICItLXByZWZpeD0ke0R9LyR7cHJlZml4fSBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtEfS8ke2RhdGFkaXJ9IgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyA/PSAiLS1yb290PSR7RH0gXAorICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgLS1pbnN0YWxsLWRhdGE9JHtkYXRhZGlyfSIKKworZGlzdHV0aWxzX2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAgICAgaWYgWyAiJHtDTEVBTkJST0tFTn0iICE9ICIxIiBdIDsgdGhlbgorICAgICAgICAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBjbGVhbiAke0RJU1RVVElMU19CVUlMRF9BUkdTfQorICAgICAgICBmaQorfQogCiBkaXN0dXRpbHNfZG9fY29tcGlsZSgpIHsKKyAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAogICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAogICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfScgZXhlY3V0aW9uIGZhaWxlZC4iCiB9CiAKIGRpc3R1dGlsc19zdGFnZV9oZWFkZXJzKCkgewogICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyBleGVjdXRpb24gZmFpbGVkLiIKKyAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfaGVhZGVycyBmYWlsZWQuIgogfQogCiBkaXN0dXRpbHNfc3RhZ2VfYWxsKCkgewpAQCAtMjYsNyArMzYsNyBAQAogICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogICAgICAgICBQWVRIT05QQVRIPSR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAoc3RhZ2UpIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9hbGwgZmFpbGVkLiIKIH0KIAogZGlzdHV0aWxzX2RvX2luc3RhbGwoKSB7CkBAIC0zNCw4ICs0NCw4IEBACiAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAogICAgICAgICBQWVRIT05QQVRIPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIC0taW5zdGFsbC1saWI9JHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKKyAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIAogICAgICAgICAjIHN1cHBvcnQgZmlsZW5hbWVzIHdpdGggKnNwYWNlcyoKICAgICAgICAgIyBvbmx5IG1vZGlmeSBmaWxlIGlmIGl0IGNvbnRhaW5zIHBhdGggIGFuZCByZWNvbXBpbGUgaXQKQEAgLTc3LDYgKzg3LDYgQEAKIAlmaQogfQogCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbAorRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCiAKIGV4cG9ydCBMRFNIQVJFRD0iJHtDQ0xEfSAtc2hhcmVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCmluZGV4IDZjMzAzMDYuLjgzNGUzMjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MKQEAgLTUsMjIgKzUsMzIgQEAKIERJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1MgPz0gIi0taW5zdGFsbC1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKIERJU1RVVElMU19TVEFHRV9BTExfQVJHUyA/PSAiLS1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCiAgICAgLS1pbnN0YWxsLWRhdGE9JHtTVEFHSU5HX0RBVEFESVJ9IgotRElTVFVUSUxTX0lOU1RBTExfQVJHUyA/PSAiLS1wcmVmaXg9JHtEfS8ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7RH0vJHtkYXRhZGlyfSIKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgPz0gIi0tcm9vdD0ke0R9IFwKKyAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAorICAgIC0taW5zdGFsbC1kYXRhPSR7ZGF0YWRpcn0iCisKK2Rpc3R1dGlsczNfZG9fY29uZmlndXJlKCkgeworCWlmIFsgIiR7Q0xFQU5CUk9LRU59IiAhPSAiMSIgXSA7IHRoZW4KKwkJTk9fRkVUQ0hfQlVJTEQ9MSBcCisJCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBjbGVhbiAke0RJU1RVVElMU19CVUlMRF9BUkdTfQorCWZpCit9CiAKIGRpc3R1dGlsczNfZG9fY29tcGlsZSgpIHsKKyAgICAgICAgTk9fRkVUQ0hfQlVJTEQ9MSBcCiAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAogICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgXAogICAgICAgICBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGRfZXh0IGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfScgZXhlY3V0aW9uIGZhaWxlZC4iCiB9CiBkaXN0dXRpbHMzX2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKIGRpc3R1dGlsczNfc3RhZ2VfaGVhZGVycygpIHsKICAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2hlYWRlcnMgZmFpbGVkLiIKIH0KIGRpc3R1dGlsczNfc3RhZ2VfaGVhZGVyc1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKIApAQCAtMzAsNyArNDAsNyBAQAogICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogICAgICAgICBQWVRIT05QQVRIPSR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAoc3RhZ2UpIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9hbGwgZmFpbGVkLiIKIH0KIGRpc3R1dGlsczNfc3RhZ2VfYWxsW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCkBAIC0zOSw4ICs0OSw4IEBACiAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAogICAgICAgICBQWVRIT05QQVRIPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIC0taW5zdGFsbC1saWI9JHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKKyAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIAogICAgICAgICAjIHN1cHBvcnQgZmlsZW5hbWVzIHdpdGggKnNwYWNlcyoKICAgICAgICAgZmluZCAke0R9IC1uYW1lICIqLnB5IiAtZXhlYyBncmVwIC1xICR7RH0ge30gXDsgLWV4ZWMgc2VkIC1pIC1lIHM6JHtEfTo6ZyB7fSBcOwpAQCAtNzEsNiArODEsNiBAQAogfQogZGlzdHV0aWxzM19kb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbAorRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCiAKIGV4cG9ydCBMRFNIQVJFRD0iJHtDQ0xEfSAtc2hhcmVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZG9zMnVuaXguYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RvczJ1bml4LmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjMTdlMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RvczJ1bml4LmJiY2xhc3MKQEAgLTAsMCArMSwxNCBAQAorIyBDbGFzcyBmb3IgdXNlIHRvIGNvbnZlcnQgYWxsIENSTEYgbGluZSB0ZXJtaW5hdG9ycyB0byBMRgorIyBwcm92aWRlZCB0aGF0IHNvbWUgcHJvamVjdHMgYXJlIGJlaW5nIGRldmVsb3BlZC9tYWludGFpbmVkCisjIG9uIFdpbmRvd3Mgc28gdGhleSBoYXZlIGRpZmZlcmVudCBsaW5lIHRlcm1pbmF0b3JzKENSTEYpIHZzCisjIG9uIExpbnV4KExGKSwgd2hpY2ggY2FuIGNhdXNlIGFubm95aW5nIHBhdGNoaW5nIGVycm9ycyBkdXJpbmcKKyMgZ2l0IHB1c2gvY2hlY2tvdXQgcHJvY2Vzc2VzLgorCitkb19jb252ZXJ0X2NybGZfdG9fbGZbZGVwZW5kc10gKz0gImRvczJ1bml4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorCisjIENvbnZlcnQgQ1JMRiBsaW5lIHRlcm1pbmF0b3JzIHRvIExGCitkb19jb252ZXJ0X2NybGZfdG9fbGYgKCkgeworCWZpbmQgJHtTfSAtdHlwZSBmIC1leGVjIGRvczJ1bml4IHt9IFw7Cit9CisKK2FkZHRhc2sgY29udmVydF9jcmxmX3RvX2xmIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCmluZGV4IDc4YTA4YzguLjM2MThiOTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwpAQCAtNzcsNiArNzcsOSBAQAogICAgICAgICAgICAgIyBEdW1teSB2YWx1ZSBiZWNhdXNlIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIGNhbid0IGJlIGNhbGxlZCB3aXRoIGJsYW5rIFNSQ19VUkkKICAgICAgICAgICAgIGQuc2V0VmFyKCdTUkNQVicsICc5OTknKQogCisgICAgICAgIGlmIGQuZ2V0VmFyKCdDT05GSUdVUkVPUFRfREVQVFJBQ0snKSA9PSAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnOgorICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZJR1VSRU9QVF9ERVBUUkFDSycsICcnKQorCiAgICAgICAgIHRhc2tzID0gZmlsdGVyKGxhbWJkYSBrOiBkLmdldFZhckZsYWcoaywgInRhc2siKSwgZC5rZXlzKCkpCiAKICAgICAgICAgZm9yIHRhc2sgaW4gdGFza3M6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9mb250Y2FjaGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCmluZGV4IGU3NjMzMTEuLmY3MWE3NTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCkBAIC0xNyw3ICsxNyw3IEBACiBGT05UQ09ORklHX0NBQ0hFX0VOViA/PSAiRkNfREVCVUc9MSIKIGZvbnRjYWNoZV9jb21tb24oKSB7CiBpZiBbIC1uICIkRCIgXSA7IHRoZW4KLQkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2ZvbnRfY2FjaGUgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2ZvbnRfY2FjaGUgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfSBcCiAJCSdiaW5kaXI9IiR7YmluZGlyfSInIFwKIAkJJ2xpYmRpcj0iJHtsaWJkaXJ9IicgXAogCQknYmFzZV9saWJkaXI9IiR7YmFzZV9saWJkaXJ9IicgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCmluZGV4IDA1MjBjMjIuLmU0MjliZDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dpby1tb2R1bGUtY2FjaGUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9naW8tbW9kdWxlLWNhY2hlLmJiY2xhc3MKQEAgLTIsNyArMiw2IEBACiBpbmhlcml0IHFlbXUKIAogR0lPX01PRFVMRV9QQUNLQUdFUyA/Pz0gIiR7UE59IgotR0lPX01PRFVMRV9QQUNLQUdFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgogCiBnaW9fbW9kdWxlX2NhY2hlX2NvbW1vbigpIHsKIGlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCmluZGV4IGQzM2Q4M2UuLmFmMzMxZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwpAQCAtOCw3ICs4LDcgQEAKIGV4cG9ydCBHT1JPT1QKIGV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgogCi1ERVBFTkRTX0dPTEFOR19jbGFzcy10YXJnZXQgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28gdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tcnVudGltZSIKK0RFUEVORFNfR09MQU5HX2NsYXNzLXRhcmdldCA9ICJ2aXJ0dWFsLyR7VFVORV9QS0dBUkNIfS1nbyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogREVQRU5EU19HT0xBTkdfY2xhc3MtbmF0aXZlID0gImdvLW5hdGl2ZSIKIERFUEVORFNfR09MQU5HX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogCkBAIC0xNzksMyArMTc5LDEzIEBACiAKIElOU0FORV9TS0lQXyR7UE59ICs9ICJsZGZsYWdzIgogSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImxkZmxhZ3MiCisKKyMgQWRkIC1idWlsZG1vZGU9cGllIHRvIEdPQlVJTERGTEFHUyB0byBzYXRpc2Z5ICJ0ZXh0cmVsIiBRQSBjaGVja2luZywgYnV0IG1pcHMKKyMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcyBhbmQgaXRzCisjIHZhcmlhbnRzLgorcHl0aG9uKCkgeworICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKToKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicpLCAiIHRleHRyZWwiKQorICAgIGVsc2U6CisgICAgICAgIGQuYXBwZW5kVmFyKCdHT0JVSUxERkxBR1MnLCAnIC1idWlsZG1vZGU9cGllJykKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKaW5kZXggZjU0YzUxNi4uYjJjOTRmYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKQEAgLTMzLDkgKzMzLDEzIEBACiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCiBUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1hcmNoPW1pcHMzMnIyIgotU0VDVVJJVFlfQ0ZMQUdTX21pcHMgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfQ0ZMQUdTX21pcHNhcmNoID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX05PUElFX0NGTEFHUyA/Pz0gIiIKIAogZGVmIGdvX21hcF9hcmNoKGEsIGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ29iamVjdC1pbnRyb3NwZWN0aW9uLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9nb2JqZWN0LWludHJvc3BlY3Rpb24uYmJjbGFzcwppbmRleCBiNjE2MGI4Li5hMzIzYzFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9nb2JqZWN0LWludHJvc3BlY3Rpb24uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9nb2JqZWN0LWludHJvc3BlY3Rpb24uYmJjbGFzcwpAQCAtNDAsNCArNDAsNCBAQAogICAgIAogIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IKICMgcnVubmluZykgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIgJHtsaWJkaXJ9L2dpci0qLyouZ2lyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWltbW9kdWxlcy1jYWNoZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWltbW9kdWxlcy1jYWNoZS5iYmNsYXNzCmluZGV4IDNkODJkYmUuLjliYjBhZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2d0ay1pbW1vZHVsZXMtY2FjaGUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9ndGstaW1tb2R1bGVzLWNhY2hlLmJiY2xhc3MKQEAgLTEwLDUzICsxMCwzOSBAQAogCiBndGtfaW1tb2R1bGVfY2FjaGVfcG9zdGluc3QoKSB7CiBpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCi0gICAgICAgIGlmIFsgLXggJEQke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgXTsgdGhlbgotICAgICAgICAgICAgSU1GSUxFUz0kKGxzICREJHtsaWJkaXJ9L2d0ay0yLjAvKi9pbW1vZHVsZXMvKi5zbykKLSAgICAgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMi4wJyl9IFwKLSAgICAgICAgICAgICAgICAkSU1GSUxFUyA+ICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZSAyPi9kZXYvbnVsbCAmJgotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKLSAgICAgICAgZmkKLSAgICAgICAgaWYgWyAteCAkRCR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCBdOyB0aGVuCi0gICAgICAgICAgICBJTUZJTEVTPSQobHMgJEQke2xpYmRpcn0vZ3RrLTMuMC8qL2ltbW9kdWxlcy8qLnNvKQotICAgICAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAnKX0gXAotICAgICAgICAgICAgICAgICRJTUZJTEVTID4gJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUgMj4vZGV2L251bGwgJiYKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgInM6JEQ6OiIgJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKLSAgICAgICAgZmkKLQotICAgIFsgJD8gLW5lIDAgXSAmJiBleGl0IDEKLSAgICBleGl0IDAKLWZpCi1pZiBbICEgLXogYHdoaWNoIGd0ay1xdWVyeS1pbW1vZHVsZXMtMi4wYCBdOyB0aGVuCi0gICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgPiAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlCi1maQotaWYgWyAhIC16IGB3aGljaCBndGstcXVlcnktaW1tb2R1bGVzLTMuMGAgXTsgdGhlbgotICAgIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wID4gJHtsaWJkaXJ9L2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9ndGtfaW1tb2R1bGVzX2NhY2hlICR7UEtHfSBcCisgICAgICAgICAgICBtbHByZWZpeD0ke01MUFJFRklYfSBcCisgICAgICAgICAgICBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gXAorICAgICAgICAgICAgbGliZGlyPSR7bGliZGlyfSBcCisgICAgICAgICAgICBsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0gXAorICAgICAgICAgICAgYmFzZV9saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgICAgICAgICAgYmluZGlyPSR7YmluZGlyfQorZWxzZQorICAgIGlmIFsgISAteiBgd2hpY2ggZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjBgIF07IHRoZW4KKyAgICAgICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgPiAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgZmkKKyAgICBpZiBbICEgLXogYHdoaWNoIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wYCBdOyB0aGVuCisgICAgICAgIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wID4gJHtsaWJkaXJ9L2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgZmkKIGZpCiB9CiAKIGd0a19pbW1vZHVsZV9jYWNoZV9wb3N0cm0oKSB7CiBpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCi0gICAgICAgIGlmIFsgLXggJEQke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgXTsgdGhlbgotICAgICAgICAgICAgSU1GSUxFUz0kKGxzICREJHtsaWJkaXJ9L2d0ay0yLjAvKi9pbW1vZHVsZXMvKi5zbykKLSAgICAgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMi4wJyl9IFwKLSAgICAgICAgICAgICAgICAkSU1GSUxFUyA+ICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZSAyPi9kZXYvbnVsbCAmJgotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKLSAgICAgICAgZmkKLSAgICAgICAgaWYgWyAteCAkRCR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCBdOyB0aGVuCi0gICAgICAgICAgICBJTUZJTEVTPSQobHMgJEQke2xpYmRpcn0vZ3RrLTMuMC8qL2ltbW9kdWxlcy8qLnNvKQotICAgICAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAnKX0gXAotICAgICAgICAgICAgICAgICRJTUZJTEVTID4gJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUgMj4vZGV2L251bGwgJiYKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgInM6JEQ6OiIgJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKLSAgICAgICAgZmkKLQotICAgIFsgJD8gLW5lIDAgXSAmJiBleGl0IDEKLSAgICBleGl0IDAKLWZpCi1pZiBbICEgLXogYHdoaWNoIGd0ay1xdWVyeS1pbW1vZHVsZXMtMi4wYCBdOyB0aGVuCi0gICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgPiAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlCi1maQotaWYgWyAhIC16IGB3aGljaCBndGstcXVlcnktaW1tb2R1bGVzLTMuMGAgXTsgdGhlbgotICAgIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wID4gJHtsaWJkaXJ9L2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9ndGtfaW1tb2R1bGVzX2NhY2hlICR7UEtHfSBcCisgICAgICAgICAgICBtbHByZWZpeD0ke01MUFJFRklYfSBcCisgICAgICAgICAgICBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gXAorICAgICAgICAgICAgbGliZGlyPSR7bGliZGlyfSBcCisgICAgICAgICAgICBsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0gXAorICAgICAgICAgICAgYmFzZV9saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgICAgICAgICAgYmluZGlyPSR7YmluZGlyfQorZWxzZQorICAgIGlmIFsgISAteiBgd2hpY2ggZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjBgIF07IHRoZW4KKyAgICAgICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgPiAke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgZmkKKyAgICBpZiBbICEgLXogYHdoaWNoIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wYCBdOyB0aGVuCisgICAgICAgIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wID4gJHtsaWJkaXJ9L2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgZmkKIGZpCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCmluZGV4IDBjYThkZTguLmI1YTg0NTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgcmV0dXJuICJ5ZXMiCiAKIGRlZiBpY2VjY19pc19hbGxhcmNoKGJiLCBkKToKLSAgICByZXR1cm4gZC5nZXRWYXIoIlBBQ0tBR0VfQVJDSCIpID09ICJhbGwiIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBkKQorICAgIHJldHVybiBkLmdldFZhcigiUEFDS0FHRV9BUkNIIikgPT0gImFsbCIKIAogZGVmIGljZWNjX2lzX2tlcm5lbChiYiwgZCk6CiAgICAgcmV0dXJuIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcwppbmRleCA5NjYyNzdjLi5hZjcxYmU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzCkBAIC0xOSw4ICsxOSw2IEBACiAKICMgRXh0ZXJuYWwgdmFyaWFibGVzIChhbHNvIHVzZWQgYnkgc3lzbGludXguYmJjbGFzcykKICMgJHtJTklUUkR9IC0gaW5kaWNhdGVzIGEgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzIGFuIGluaXRyZCAob3B0aW9uYWwpCi0jICR7Tk9JU099ICAtIHNraXAgYnVpbGRpbmcgdGhlIElTTyBpbWFnZSBpZiBzZXQgdG8gMQotIyAke05PSEREfSAgLSBza2lwIGJ1aWxkaW5nIHRoZSBIREQgaW1hZ2UgaWYgc2V0IHRvIDEKICMgJHtIRERJTUdfSUR9IC0gRkFUIGltYWdlIHZvbHVtZS1pZAogIyAke1JPT1RGU30gLSBpbmRpY2F0ZXMgYSBmaWxlc3lzdGVtIGltYWdlIHRvIGluY2x1ZGUgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbSAob3B0aW9uYWwpCiAKQEAgLTgwLDggKzc4LDggQEAKIH0KIAogYnVpbGRfaXNvKCkgewotCSMgT25seSBjcmVhdGUgYW4gSVNPIGlmIHdlIGhhdmUgYW4gSU5JVFJEIGFuZCBOT0lTTyB3YXMgbm90IHNldAotCWlmIFsgLXogIiR7SU5JVFJEfSIgXSB8fCBbICIke05PSVNPfSIgPSAiMSIgXTsgdGhlbgorCSMgT25seSBjcmVhdGUgYW4gSVNPIGlmIHdlIGhhdmUgYW4gSU5JVFJEIGFuZCB0aGUgbGl2ZSBvciBpc28gaW1hZ2UgdHlwZSB3YXMgc2VsZWN0ZWQKKwlpZiBbIC16ICIke0lOSVRSRH0iIF0gfHwgWyAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ2xpdmUgaXNvJywgJzEnLCAnMCcsIGQpfSIgIT0gIjEiIF07IHRoZW4KIAkJYmJub3RlICJJU08gaW1hZ2Ugd2lsbCBub3QgYmUgY3JlYXRlZC4iCiAJCXJldHVybgogCWZpCkBAIC0yMTcsNyArMjE1LDcgQEAKIAogYnVpbGRfaGRkaW1nKCkgewogCSMgQ3JlYXRlIGFuIEhERCBpbWFnZQotCWlmIFsgIiR7Tk9IRER9IiAhPSAiMSIgXSA7IHRoZW4KKwlpZiBbICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0lNQUdFX0ZTVFlQRVMnLCAnbGl2ZSBoZGRpbWcnLCAnMScsICcwJywgZCl9IiA9ICIxIiBdIDsgdGhlbgogCQlwb3B1bGF0ZV9saXZlICR7SERERElSfQogCiAJCWlmIFsgIiR7UENCSU9TfSIgPSAiMSIgXTsgdGhlbgpAQCAtMjMyLDExICsyMzAsMTEgQEAKIAkJaWYgWyAtZiAke0hERERJUn0vcm9vdGZzLmltZyBdOyB0aGVuCiAJCQlyb290ZnNfaW1nX3NpemU9YHN0YXQgLWMgJyVzJyAke0hERERJUn0vcm9vdGZzLmltZ2AKIAkJCW1heF9zaXplPWBleHByIDQgXCogMTAyNCBcKiAxMDI0IFwqIDEwMjRgCi0JCQlpZiBbICRyb290ZnNfaW1nX3NpemUgLWd0ICRtYXhfc2l6ZSBdOyB0aGVuCi0JCQkJYmJlcnJvciAiJHtIRERESVJ9L3Jvb3Rmcy5pbWcgZXhlY2VlZHMgNEdCLCIKLQkJCQliYmVycm9yICJ0aGlzIGRvZXNuJ3Qgd29yayBvbiBGQVQgZmlsZXN5c3RlbSwgeW91IGNhbiB0cnkgZWl0aGVyIG9mOiIKLQkJCQliYmVycm9yICIxKSBSZWR1Y2UgdGhlIHNpemUgb2Ygcm9vdGZzLmltZyIKLQkJCQliYmZhdGFsICIyKSBVc2UgaXNvLCB2bWRrIG9yIHZkaSB0byBpbnN0ZWFkIG9mIGhkZGltZ1xuIgorCQkJaWYgWyAkcm9vdGZzX2ltZ19zaXplIC1nZSAkbWF4X3NpemUgXTsgdGhlbgorCQkJCWJiZXJyb3IgIiR7SERERElSfS9yb290ZnMuaW1nIHJvb3RmcyBzaXplIGlzIGdyZWF0aGVyIHRoYW4gb3IgZXF1YWwgdG8gNEdCLCIKKwkJCQliYmVycm9yICJhbmQgdGhpcyBkb2Vzbid0IHdvcmsgb24gYSBGQVQgZmlsZXN5c3RlbS4gWW91IGNhbiBlaXRoZXI6IgorCQkJCWJiZXJyb3IgIjEpIFJlZHVjZSB0aGUgc2l6ZSBvZiByb290ZnMuaW1nLCBvciwiCisJCQkJYmJmYXRhbCAiMikgVXNlIHdpYywgdm1kayBvciB2ZGkgaW5zdGVhZCBvZiBoZGRpbWdcbiIKIAkJCWZpCiAJCWZpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLW1rbGlicy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbWtsaWJzLmJiY2xhc3MKaW5kZXggNWY2ZGYxYi4uNjhlMTFkNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbWtsaWJzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbWtsaWJzLmJiY2xhc3MKQEAgLTE5LDcgKzE5LDcgQEAKIAkJZWNobyAkaQogCWRvbmUgPiAke1dPUktESVJ9L21rbGlicy9leGVjdXRhYmxlcy5saXN0CiAKLQlkeW5hbWljX2xvYWRlcj0kKGxpbnV4bG9hZGVyKQorCWR5bmFtaWNfbG9hZGVyPSR7QGdldF9saW51eGxvYWRlcihkKX0KIAogCW1rbGlicyAtdiBcCiAJCS0tbGRsaWIgJHtkeW5hbWljX2xvYWRlcn0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcG9zdGluc3QtaW50ZXJjZXB0cy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcG9zdGluc3QtaW50ZXJjZXB0cy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMzBiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wb3N0aW5zdC1pbnRlcmNlcHRzLmJiY2xhc3MKQEAgLTAsMCArMSwyMyBAQAorIyBHYXRoZXIgZXhpc3RpbmcgYW5kIGNhbmRpZGF0ZSBwb3N0aW5zdCBpbnRlcmNlcHRzIGZyb20gQkJQQVRICitQT1NUSU5TVF9JTlRFUkNFUFRTX0RJUiA/PSAiJHtDT1JFQkFTRX0vc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzIgorUE9TVElOU1RfSU5URVJDRVBUU19QQVRIUyA/PSAiJHtAJzonLmpvaW4oJyVzL3Bvc3RpbnN0LWludGVyY2VwdHMnICUgcCBmb3IgcCBpbiAnJHtCQlBBVEh9Jy5zcGxpdCgnOicpKX06JHtQT1NUSU5TVF9JTlRFUkNFUFRTX0RJUn0iCisKK3B5dGhvbiBmaW5kX2ludGVyY2VwdHMoKSB7CisgICAgaW50ZXJjZXB0cyA9IHt9CisgICAgc2VhcmNoX3BhdGhzID0gW10KKyAgICBwYXRocyA9IGQuZ2V0VmFyKCdQT1NUSU5TVF9JTlRFUkNFUFRTX1BBVEhTJykuc3BsaXQoJzonKQorICAgIG92ZXJyaWRlcyA9ICgnOicgKyBkLmdldFZhcignRklMRVNPVkVSUklERVMnKSkuc3BsaXQoJzonKSArIFsnJ10KKyAgICBzZWFyY2hfcGF0aHMgPSBbb3MucGF0aC5qb2luKHAsIG9wKSBmb3IgcCBpbiBwYXRocyBmb3Igb3AgaW4gb3ZlcnJpZGVzXQorICAgIHNlYXJjaGVkID0gb2UucGF0aC53aGljaF93aWxkKCcqJywgJzonLmpvaW4oc2VhcmNoX3BhdGhzKSwgY2FuZGlkYXRlcz1UcnVlKQorICAgIGZpbGVzLCBjaGtzdW1zID0gW10sIFtdCisgICAgZm9yIHBhdGhuYW1lLCBjYW5kaWRhdGVzIGluIHNlYXJjaGVkOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRobmFtZSk6CisgICAgICAgICAgICBmaWxlcy5hcHBlbmQocGF0aG5hbWUpCisgICAgICAgICAgICBjaGtzdW1zLmFwcGVuZCgnJXM6VHJ1ZScgJSBwYXRobmFtZSkKKyAgICAgICAgICAgIGNoa3N1bXMuZXh0ZW5kKCclczpGYWxzZScgJSBjIGZvciBjIGluIGNhbmRpZGF0ZXNbOi0xXSkKKworICAgIGQuc2V0VmFyKCdQT1NUSU5TVF9JTlRFUkNFUFRfQ0hFQ0tTVU1TJywgJyAnLmpvaW4oY2hrc3VtcykpCisgICAgZC5zZXRWYXIoJ1BPU1RJTlNUX0lOVEVSQ0VQVFMnLCAnICcuam9pbihmaWxlcykpCit9CitmaW5kX2ludGVyY2VwdHNbZXZlbnRtYXNrXSArPSAiYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UiCithZGRoYW5kbGVyIGZpbmRfaW50ZXJjZXB0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCmluZGV4IDZhOGFmYTguLjA0ZGQ1N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKQEAgLTMzLDcgKzMzLDcgQEAKIAlmaQogCWNhdCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYgPj4gJGxkc29jb25mCiAKLQlkeW5hbWljX2xvYWRlcj0kKGxpbnV4bG9hZGVyKQorCWR5bmFtaWNfbG9hZGVyPSR7QGdldF9saW51eGxvYWRlcihkKX0KIAogCSMgcHJlbGluayEKIAlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCmluZGV4IDIyNDdiMzAuLjQ1MmIxYWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwpAQCAtMSw5ICsxLDIxIEBACi1pbmhlcml0IHJvb3Rmc18ke0lNQUdFX1BLR1RZUEV9CiAKK0lNQUdFX0NMQVNTRVMgPz89ICIiCisKKyMgcm9vdGZzIGJvb3RzdHJhcCBpbnN0YWxsCisjIHdhcm5pbmcgLSAgaW1hZ2UtY29udGFpbmVyIHJlc2V0cyB0aGlzCitST09URlNfQk9PVFNUUkFQX0lOU1RBTEwgPSAicnVuLXBvc3RpbnN0cyIKKworIyBIYW5kbGUgaW5oZXJpdHMgb2YgYW55IG9mIHRoZSBpbWFnZSBjbGFzc2VzIHdlIG5lZWQKK0lNR0NMQVNTRVMgPSAicm9vdGZzXyR7SU1BR0VfUEtHVFlQRX0gaW1hZ2VfdHlwZXMgJHtJTUFHRV9DTEFTU0VTfSIKICMgT25seSBMaW51eCBTREtzIHN1cHBvcnQgcG9wdWxhdGVfc2RrX2V4dCwgZmFsbCBiYWNrIHRvIHBvcHVsYXRlX3Nka19iYXNlCiAjIGluIHRoZSBub24tTGludXggU0RLX09TIGNhc2UsIHN1Y2ggYXMgbWluZ3czMgotU0RLRVhUQ0xBU1MgPz0gIiR7QFsncG9wdWxhdGVfc2RrX2Jhc2UnLCAncG9wdWxhdGVfc2RrX2V4dCddWydsaW51eCcgaW4gZC5nZXRWYXIoIlNES19PUyIpXX0iCi1pbmhlcml0ICR7U0RLRVhUQ0xBU1N9CitJTUdDTEFTU0VTICs9ICIke0BbJ3BvcHVsYXRlX3Nka19iYXNlJywgJ3BvcHVsYXRlX3Nka19leHQnXVsnbGludXgnIGluIGQuZ2V0VmFyKCJTREtfT1MiKV19IgorSU1HQ0xBU1NFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ2xpdmUgaXNvIGhkZGltZycsICdpbWFnZS1saXZlJywgJycsIGQpfSIKK0lNR0NMQVNTRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GU1RZUEVTJywgJ2NvbnRhaW5lcicsICdpbWFnZS1jb250YWluZXInLCAnJywgZCl9IgorSU1HQ0xBU1NFUyArPSAiaW1hZ2VfdHlwZXNfd2ljIgorSU1HQ0xBU1NFUyArPSAicm9vdGZzLXBvc3Rjb21tYW5kcyIKK0lNR0NMQVNTRVMgKz0gImltYWdlLXBvc3RpbnN0LWludGVyY2VwdHMiCitpbmhlcml0ICR7SU1HQ0xBU1NFU30KIAogVE9PTENIQUlOX1RBUkdFVF9UQVNLICs9ICIke1BBQ0tBR0VfSU5TVEFMTH0iCiBUT09MQ0hBSU5fVEFSR0VUX1RBU0tfQVRURU1QVE9OTFkgKz0gIiR7UEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZfSIKQEAgLTExLDI1ICsyMywyMyBAQAogCiBMSUNFTlNFID89ICJNSVQiCiBQQUNLQUdFUyA9ICIiCi1ERVBFTkRTICs9ICIke01MUFJFRklYfXFlbXV3cmFwcGVyLWNyb3NzIGRlcG1vZHdyYXBwZXItY3Jvc3MiCitERVBFTkRTICs9ICIke0AnICcuam9pbihbIiVzLXFlbXV3cmFwcGVyLWNyb3NzIiAlIG0gZm9yIG0gaW4gZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIikuc3BsaXQoKV0pfSBxZW11d3JhcHBlci1jcm9zcyBkZXBtb2R3cmFwcGVyLWNyb3NzIGNyb3NzLWxvY2FsZWRlZi1uYXRpdmUiCiBSREVQRU5EUyArPSAiJHtQQUNLQUdFX0lOU1RBTEx9ICR7TElOR1VBU19JTlNUQUxMfSIKIFJSRUNPTU1FTkRTICs9ICIke1BBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWX0iCitQQVRIX3ByZXBlbmQgPSAiJHtAIjoiLmpvaW4oYWxsX211bHRpbGliX3R1bmVfdmFsdWVzKGQsICdTVEFHSU5HX0JJTkRJUl9DUk9TUycpLnNwbGl0KCkpfToiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKLVRFU1RJTUFHRUNMQVNTID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdURVNUX0lNQUdFJywgJzEnLCAndGVzdGltYWdlLWF1dG8nLCAnJywgZCl9IgotaW5oZXJpdCAke1RFU1RJTUFHRUNMQVNTfQotCiAjIElNQUdFX0ZFQVRVUkVTIG1heSBjb250YWluIGFueSBhdmFpbGFibGUgcGFja2FnZSBncm91cAogSU1BR0VfRkVBVFVSRVMgPz0gIiIKIElNQUdFX0ZFQVRVUkVTW3R5cGVdID0gImxpc3QiCi1JTUFHRV9GRUFUVVJFU1t2YWxpZGl0ZW1zXSArPSAiZGVidWctdHdlYWtzIHJlYWQtb25seS1yb290ZnMgZW1wdHktcm9vdC1wYXNzd29yZCBhbGxvdy1lbXB0eS1wYXNzd29yZCBwb3N0LWluc3RhbGwtbG9nZ2luZyIKK0lNQUdFX0ZFQVRVUkVTW3ZhbGlkaXRlbXNdICs9ICJkZWJ1Zy10d2Vha3MgcmVhZC1vbmx5LXJvb3RmcyBlbXB0eS1yb290LXBhc3N3b3JkIGFsbG93LWVtcHR5LXBhc3N3b3JkIGFsbG93LXJvb3QtbG9naW4gcG9zdC1pbnN0YWxsLWxvZ2dpbmciCiAKICMgR2VuZXJhdGUgY29tcGFuaW9uIGRlYnVnZnM/CiBJTUFHRV9HRU5fREVCVUdGUyA/PSAiMCIKIAotIyByb290ZnMgYm9vdHN0cmFwIGluc3RhbGwKLVJPT1RGU19CT09UU1RSQVBfSU5TVEFMTCA9ICJydW4tcG9zdGluc3RzIgorIyBUaGVzZSBwYWNhY2thZ2VzIHdpbGwgYmUgaW5zdGFsbGVkIGFzIGFkZGl0aW9uYWwgaW50byBkZWJ1ZyByb290ZnMKK0lNQUdFX0lOU1RBTExfREVCVUdGUyA/PSAiIgogCiAjIFRoZXNlIHBhY2thZ2VzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGEgcmVhZC1vbmx5IHJvb3RmcyBhZnRlciBhbGwgb3RoZXIKICMgcGFja2FnZXMgaGF2ZSBiZWVuIGluc3RhbGxlZApAQCAtMTE3LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgICdJTUFHRV9ST09URlNfTUFYU0laRScsJ0lNQUdFX05BTUUnLCdJTUFHRV9MSU5LX05BTUUnLCdJTUFHRV9NQU5JRkVTVCcsJ0RFUExPWV9ESVJfSU1BR0UnLCdJTUFHRV9GU1RZUEVTJywnSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJywnSU1BR0VfTElOR1VBUycsCiAgICAgICAgICAgICAgICAgICdNVUxUSUxJQlJFX0FMTE9XX1JFUCcsJ01VTFRJTElCX1RFTVBfUk9PVEZTJywnTVVMVElMSUJfVkFSSUFOVFMnLCdNVUxUSUxJQlMnLCdBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUycsJ01VTFRJTElCX0dMT0JBTF9WQVJJQU5UUycsJ0JBRF9SRUNPTU1FTkRBVElPTlMnLCdOT19SRUNPTU1FTkRBVElPTlMnLAogICAgICAgICAgICAgICAgICAnUEFDS0FHRV9BUkNIUycsJ1BBQ0tBR0VfQ0xBU1NFUycsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfQVJDSCcsJ1RBUkdFVF9PUycsJ09WRVJSSURFUycsJ0JCRVhURU5EVkFSSUFOVCcsJ0ZFRURfREVQTE9ZRElSX0JBU0VfVVJJJywnSU5URVJDRVBUX0RJUicsJ1VTRV9ERVZGUycsCi0gICAgICAgICAgICAgICAgICdDT05WRVJTSU9OVFlQRVMnLCAnSU1BR0VfR0VOX0RFQlVHRlMnLCAnUk9PVEZTX1JPX1VOTkVFREVEJywgJ0lNR0RFUExPWURJUicsICdQQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWScsICdSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyddCisgICAgICAgICAgICAgICAgICdDT05WRVJTSU9OVFlQRVMnLCAnSU1BR0VfR0VOX0RFQlVHRlMnLCAnUk9PVEZTX1JPX1VOTkVFREVEJywgJ0lNR0RFUExPWURJUicsICdQQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWScsICdSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUycsICdJTUFHRV9JTlNUQUxMX0RFQlVHRlMnXQogICAgIHZhcmlhYmxlcy5leHRlbmQocm9vdGZzX2NvbW1hbmRfdmFyaWFibGVzKGQpKQogICAgIHZhcmlhYmxlcy5leHRlbmQodmFyaWFibGVfZGVwZW5kcyhkKSkKICAgICByZXR1cm4gIiAiLmpvaW4odmFyaWFibGVzKQpAQCAtMTI2LDIzICsxMzYsNiBAQAogCiBkb19idWlsZFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IgogCi1kZWYgYnVpbGRfbGl2ZShkKToKLSAgICBpZiBiYi51dGlscy5jb250YWlucygiSU1BR0VfRlNUWVBFUyIsICJsaXZlIiwgImxpdmUiLCAiMCIsIGQpID09ICIwIjogIyBsaXZlIGlzIG5vdCBzZXQgYnV0IGhvYiBtaWdodCBzZXQgaXNvIG9yIGhkZGltZwotICAgICAgICBkLnNldFZhcignTk9JU08nLCBiYi51dGlscy5jb250YWlucygnSU1BR0VfRlNUWVBFUycsICJpc28iLCAiMCIsICIxIiwgZCkpCi0gICAgICAgIGQuc2V0VmFyKCdOT0hERCcsIGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GU1RZUEVTJywgImhkZGltZyIsICIwIiwgIjEiLCBkKSkKLSAgICAgICAgaWYgZC5nZXRWYXIoJ05PSVNPJykgPT0gIjAiIG9yIGQuZ2V0VmFyKCdOT0hERCcpID09ICIwIjoKLSAgICAgICAgICAgIHJldHVybiAiaW1hZ2UtbGl2ZSIKLSAgICAgICAgcmV0dXJuICIiCi0gICAgcmV0dXJuICJpbWFnZS1saXZlIgotCi1JTUFHRV9UWVBFX2xpdmUgPSAiJHtAYnVpbGRfbGl2ZShkKX0iCi1pbmhlcml0ICR7SU1BR0VfVFlQRV9saXZlfQotCi1JTUFHRV9UWVBFX2NvbnRhaW5lciA9ICcke0BiYi51dGlscy5jb250YWlucygiSU1BR0VfRlNUWVBFUyIsICJjb250YWluZXIiLCAiaW1hZ2UtY29udGFpbmVyIiwgIiIsIGQpfScKLWluaGVyaXQgJHtJTUFHRV9UWVBFX2NvbnRhaW5lcn0KLQotSU1BR0VfVFlQRV93aWMgPSAiaW1hZ2VfdHlwZXNfd2ljIgotaW5oZXJpdCAke0lNQUdFX1RZUEVfd2ljfQogCiBweXRob24gKCkgewogICAgIGRlZiBleHRyYWltYWdlX2dldGRlcGVuZHModGFzayk6CkBAIC0xNTEsNyArMTQ0LDYgQEAKICAgICAgICAgICAgIGRlcHMgKz0gIiAlczolcyIgJSAoZGVwLCB0YXNrKQogICAgICAgICByZXR1cm4gZGVwcwogCi0gICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZScsICdkZXBlbmRzJywgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKCdkb19wb3B1bGF0ZV9saWMnKSkKICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlX2NvbXBsZXRlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnKSkKIAogICAgIGRlcHMgPSAiICIgKyBpbWFnZXR5cGVzX2dldGRlcGVuZHMoZCkKQEAgLTE3Nyw5ICsxNjksNiBAQAogICAgIGNoZWNrX2ltYWdlX2ZlYXR1cmVzKGQpCiB9CiAKLUlNQUdFX0NMQVNTRVMgKz0gImltYWdlX3R5cGVzIgotaW5oZXJpdCAke0lNQUdFX0NMQVNTRVN9Ci0KIElNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQgPz0gIiIKIAogIyBzb21lIGRlZmF1bHQgbG9jYWxlcwpAQCAtMTkxLDggKzE4MCw2IEBACiAjIGFyZW4ndCB5ZXQgYXZhaWxhYmxlLgogUFNFVURPX1BBU1NXRCA9ICIke0lNQUdFX1JPT1RGU306JHtTVEFHSU5HX0RJUl9OQVRJVkV9IgogCi1pbmhlcml0IHJvb3Rmcy1wb3N0Y29tbWFuZHMKLQogUEFDS0FHRV9FWENMVURFID8/PSAiIgogUEFDS0FHRV9FWENMVURFW3R5cGVdID0gImxpc3QiCiAKQEAgLTI2Miw2ICsyNDksNyBAQAogZG9fcm9vdGZzW2RpcnNdID0gIiR7VE9QRElSfSIKIGRvX3Jvb3Rmc1tjbGVhbmRpcnNdICs9ICIke1N9ICR7SU1HREVQTE9ZRElSfSIKIGRvX3Jvb3Rmc1t1bWFza10gPSAiMDIyIgorZG9fcm9vdGZzW2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtQT1NUSU5TVF9JTlRFUkNFUFRfQ0hFQ0tTVU1TfSIKIGFkZHRhc2sgcm9vdGZzIGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QKIAogZmFrZXJvb3QgcHl0aG9uIGRvX2ltYWdlICgpIHsKQEAgLTY2Niw3ICs2NTQsMTAgQEAKIHJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrICgpIHsKICAgICBpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KICAgICAgICAgaWYgWyAiJFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTIiA9ICIiIF07IHRoZW4KLSAgICAgICAgICAgIFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTPWBnaXQgbG9nIC0xIC0tcHJldHR5PSVjdGAKKyAgICAgICAgICAgIFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTPWBnaXQgLUMgIiR7Q09SRUJBU0V9IiBsb2cgLTEgLS1wcmV0dHk9JWN0IDI+L2Rldi9udWxsYCB8fCB0cnVlCisgICAgICAgICAgICBpZiBbICIke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfSIgPSAiIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlM9YHN0YXQgLWMlWSAke0BiYi51dGlscy53aGljaChkLmdldFZhcigiQkJQQVRIIiksICJjb25mL2JpdGJha2UuY29uZiIpfWAKKyAgICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICAgICMgU2V0IG10aW1lIG9mIGFsbCBmaWxlcyB0byBhIHJlcHJvZHVjaWJsZSB2YWx1ZQogICAgICAgICBiYm5vdGUgInJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrOiBtdGltZSBzZXQgdG8gJFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKaW5kZXggMDBhMDBkMy4uMDVlNWIwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCkBAIC0xNTQsNyArMTU0LDcgQEAKIAlsb2NhbCB1YmluaXplX2FyZ3M9IiQyIgogICAgIAogICAgICAgICAjIEFkZGVkIHByb21wdCBlcnJvciBtZXNzYWdlIGZvciB1YmkgYW5kIHViaWZzIGltYWdlIGNyZWF0aW9uLgotICAgICAgICBpZiBbIC16ICIkbWt1Ymlmc19hcmdzIl0gfHwgWyAteiAiJHViaW5pemVfYXJncyIgXTsgdGhlbgorICAgICAgICBpZiBbIC16ICIkbWt1Ymlmc19hcmdzIiBdIHx8IFsgLXogIiR1YmluaXplX2FyZ3MiIF07IHRoZW4KICAgICAgICAgICAgIGJiZmF0YWwgIk1LVUJJRlNfQVJHUyBhbmQgVUJJTklaRV9BUkdTIGhhdmUgdG8gYmUgc2V0LCBzZWUgaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy9mYXEvdWJpZnMuaHRtbCBmb3IgZGV0YWlscyIKICAgICAgICAgZmkKICAgICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKaW5kZXggZWIyZDk2Ny4uNDY0NDIyMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKQEAgLTQ2LDEzOSArNDYsNiBAQAogCiBVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgPz0gIi0tZW5hYmxlLW5scyAtLWRpc2FibGUtbmxzIC0tZGlzYWJsZS1zaWxlbnQtcnVsZXMgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCAtLWRpc2FibGUtc3RhdGljIgogCi0jCi0jIGRpY3Rpb25hcnkgZm9yIGVsZiBoZWFkZXJzCi0jCi0jIGZlZWwgZnJlZSB0byBhZGQgYW5kIGNvcnJlY3QuCi0jCi0jICAgICAgICAgICBUQVJHRVRfT1MgIFRBUkdFVF9BUkNIICAgTUFDSElORSwgT1NBQkksIEFCSVZFUlNJT04sIExpdHRsZSBFbmRpYW4sIDMyYml0PwotZGVmIHBhY2thZ2VfcWFfZ2V0X21hY2hpbmVfZGljdChkKToKLSAgICBtYWNoZGF0YSA9IHsKLSAgICAgICAgICAgICJkYXJ3aW45IiA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImVhYmkiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJlbGYiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IiA6ICAgICAgKDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXBpcGhhbnkiOiAgICg0NjQzLCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgiIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjRfYmUiIDooMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgOTcsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0IjogICgyMSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNjg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaWE2NCI6ICAgICAgICg1MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYSI6ICAgICAgKDM2OTAyLCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImhwcGEiOiAgICAgICAoMTUsICAgICAzLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibTY4ayI6ICAgICAgICggNCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6ICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2EzMnI2IjogICAoIDgsICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTMycjZlbCI6ICggOCwgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNiI6ICAgKCA4LCAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiAoIDgsICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibmlvczIiOiAgICAgICgxMTMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiczM5MCI6ICAgICAgICgyMiwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInNwYXJjIjogICAgICAoIDIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC1tdXNsIiA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjRfYmUiIDooMTgzLCAgICAwLCAgICAwLCAgICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKCAgNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoICAyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNjg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICggIDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzZWwiOiAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoICA0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgInVjbGludXgtdWNsaWJjIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJiZmluIjogICAgICAgKCAxMDYsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LCAKLSAgICAgICAgICAgICJsaW51eC1nbnVlYWJpIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIiA6ICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC1tdXNsZWFiaSIgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiIgOiAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtZ251c3BlIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtbXVzbHNwZSIgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LWdudSIgOiAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtZ251X2lscDMyIiA6ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LWdudXgzMiIgOiAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LW11c2x4MzIiIDogICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC1nbnVuMzIiIDogICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAgICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjYiOiAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICB9Ci0KLSAgICAjIEFkZCBpbiBhbnkgZXh0cmEgdXNlciBzdXBwbGllZCBkYXRhIHdoaWNoIG1heSBjb21lIGZyb20gYSBCU1AgbGF5ZXIsIHJlbW92aW5nIHRoZQotICAgICMgbmVlZCB0byBhbHdheXMgY2hhbmdlIHRoaXMgY2xhc3MgZGlyZWN0bHkKLSAgICBleHRyYV9tYWNoZGF0YSA9IChkLmdldFZhcigiUEFDS0FHRVFBX0VYVFJBX01BQ0hERUZGVU5DUyIpIG9yICIiKS5zcGxpdCgpCi0gICAgZm9yIG0gaW4gZXh0cmFfbWFjaGRhdGE6Ci0gICAgICAgIGNhbGwgPSBtICsgIihtYWNoZGF0YSwgZCkiCi0gICAgICAgIGxvY3MgPSB7ICJtYWNoZGF0YSIgOiBtYWNoZGF0YSwgImQiIDogZH0KLSAgICAgICAgbWFjaGRhdGEgPSBiYi51dGlscy5iZXR0ZXJfZXZhbChjYWxsLCBsb2NzKQotCi0gICAgcmV0dXJuIG1hY2hkYXRhCi0KLQogZGVmIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLCBkLCBwa2c9Tm9uZSk6CiAgICAgIiIiCiAgICAgUmVtb3ZlIHJlZHVuZGFudCBwYXRocyBmcm9tIHRoZSBwYXRoIGZvciBkaXNwbGF5LiAgSWYgcGtnIGlzbid0IHNldCB0aGVuCkBAIC00MDMsNyArMjcwLDcgQEAKICAgICAiIiIKICAgICBDaGVjayBpZiBhcmNocyBhcmUgY29tcGF0aWJsZQogICAgICIiIgotICAgIGltcG9ydCByZQorICAgIGltcG9ydCByZSwgb2UuZWxmCiAKICAgICBpZiBub3QgZWxmOgogICAgICAgICByZXR1cm4KQEAgLTQzMCwxMiArMjk3LDE0IEBACiAKICAgICAjaWYgdGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiwgdGhlbiBmaXggdGhlIGRpY3QgYWJvdmUKICAgICAobWFjaGluZSwgb3NhYmksIGFiaXZlcnNpb24sIGxpdHRsZWVuZGlhbiwgYml0cykgXAotICAgICAgICA9IHBhY2thZ2VfcWFfZ2V0X21hY2hpbmVfZGljdChkKVt0YXJnZXRfb3NdW3RhcmdldF9hcmNoXQorICAgICAgICA9IG9lLmVsZi5tYWNoaW5lX2RpY3QoZClbdGFyZ2V0X29zXVt0YXJnZXRfYXJjaF0KIAogICAgICMgQ2hlY2sgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZW5kaWFubmVzIG9mIHRoZSBiaW5hcnkKICAgICBpc18zMiA9ICgoInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcykgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibW9kdWxlIiwgZCkpIGFuZCBcCi0gICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtbXVzbHgzMiIgb3IgdGFyZ2V0X29zID09ICJsaW51eC1nbnVfaWxwMzIiIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQotICAgIGlmIG5vdCAoKG1hY2hpbmUgPT0gZWxmLm1hY2hpbmUoKSkgb3IgaXNfMzIpOgorICAgICAgICAgICAgKHRhcmdldF9vcyA9PSAibGludXgtZ251eDMyIiBvciB0YXJnZXRfb3MgPT0gImxpbnV4LW11c2x4MzIiIG9yIFwKKyAgICAgICAgICAgIHRhcmdldF9vcyA9PSAibGludXgtZ251X2lscDMyIiBvciByZS5tYXRjaCgnbWlwczY0LiozMicsIGQuZ2V0VmFyKCdERUZBVUxUVFVORScpKSkKKyAgICBpc19icGYgPSAob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKGVsZi5tYWNoaW5lKCkpID09ICJCUEYiKQorICAgIGlmIG5vdCAoKG1hY2hpbmUgPT0gZWxmLm1hY2hpbmUoKSkgb3IgaXNfMzIgb3IgaXNfYnBmKToKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImFyY2giLCAiQXJjaGl0ZWN0dXJlIGRpZCBub3QgbWF0Y2ggKCVzLCBleHBlY3RlZCAlcykgb24gJXMiICUgXAogICAgICAgICAgICAgICAgICAob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKGVsZi5tYWNoaW5lKCkpLCBvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcobWFjaGluZSksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKICAgICBlbGlmIG5vdCAoKGJpdHMgPT0gZWxmLmFiaVNpemUoKSkgb3IgaXNfMzIpOgpAQCAtNTk5LDcgKzQ2OCw3IEBACiAgICAgICAgIHJldHVybgogCiAgICAgaWYgbm90IGxpY19maWxlcyBhbmQgZC5nZXRWYXIoJ1NSQ19VUkknKToKLSAgICAgICAgc2FuZSA9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBSZWNpcGUgZmlsZSBmZXRjaGVzIGZpbGVzIGFuZCBkb2VzIG5vdCBoYXZlIGxpY2Vuc2UgZmlsZSBpbmZvcm1hdGlvbiAoTElDX0ZJTEVTX0NIS1NVTSkiLCBkKQorICAgICAgICBzYW5lICY9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBSZWNpcGUgZmlsZSBmZXRjaGVzIGZpbGVzIGFuZCBkb2VzIG5vdCBoYXZlIGxpY2Vuc2UgZmlsZSBpbmZvcm1hdGlvbiAoTElDX0ZJTEVTX0NIS1NVTSkiLCBkKQogCiAgICAgc3JjZGlyID0gZC5nZXRWYXIoJ1MnKQogICAgIGNvcmViYXNlX2xpY2Vuc2VmaWxlID0gZC5nZXRWYXIoJ0NPUkVCQVNFJykgKyAiL0xJQ0VOU0UiCkBAIC02MDcsMTEgKzQ3NiwxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAodHlwZSwgaG9zdCwgcGF0aCwgdXNlciwgcHN3ZCwgcGFybSkgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKQogICAgICAgICBleGNlcHQgYmIuZmV0Y2guTWFsZm9ybWVkVXJsOgotICAgICAgICAgICAgc2FuZSA9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBMSUNfRklMRVNfQ0hLU1VNIGNvbnRhaW5zIGFuIGludmFsaWQgVVJMOiAiICsgdXJsLCBkKQorICAgICAgICAgICAgc2FuZSAmPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBjb250YWlucyBhbiBpbnZhbGlkIFVSTDogIiArIHVybCwgZCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNyY2xpY2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBwYXRoKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc3JjbGljZmlsZSk6Ci0gICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBwb2ludHMgdG8gYW4gaW52YWxpZCBmaWxlOiAiICsgc3JjbGljZmlsZSwgZCkKKyAgICAgICAgICAgIHNhbmUgJj0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IExJQ19GSUxFU19DSEtTVU0gcG9pbnRzIHRvIGFuIGludmFsaWQgZmlsZTogIiArIHNyY2xpY2ZpbGUsIGQpCiAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgIGlmIChzcmNsaWNmaWxlID09IGNvcmViYXNlX2xpY2Vuc2VmaWxlKToKQEAgLTY5NSw3ICs1NjQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtc2cgPSBwbiArICI6IExJQ19GSUxFU19DSEtTVU0gaXMgbm90IHNwZWNpZmllZCBmb3IgIiArICB1cmwKICAgICAgICAgICAgICAgICBtc2cgPSBtc2cgKyAiXG4iICsgcG4gKyAiOiBUaGUgbWQ1IGNoZWNrc3VtIGlzICIgKyBtZDVjaGtzdW0KLSAgICAgICAgICAgIHNhbmUgPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIG1zZywgZCkKKyAgICAgICAgICAgIHNhbmUgJj0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBtc2csIGQpCiAKICAgICBpZiBub3Qgc2FuZToKICAgICAgICAgYmIuZmF0YWwoIkZhdGFsIFFBIGVycm9ycyBmb3VuZCwgZmFpbGluZyB0YXNrLiIpCkBAIC03MzIsMTQgKzYwMSwxNCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnQgPSBmaWxlX2NvbnRlbnQucmVwbGFjZShyZWNpcGVzeXNyb290LCAiIikKICAgICAgICAgICAgICAgICAgICAgaWYgd29ya2RpciBpbiBmaWxlX2NvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAiJXMgZmFpbGVkIHNhbml0eSB0ZXN0ICh3b3JrZGlyKSBpbiBwYXRoICVzIiAlIChmaWxlLHJvb3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxhIiwgZXJyb3JfbXNnLCBkKQorICAgICAgICAgICAgICAgICAgICAgICAgc2FuZSAmPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGEiLCBlcnJvcl9tc2csIGQpCiAgICAgICAgICAgICBlbGlmIGZpbGUuZW5kc3dpdGgoIi5wYyIpOgogICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnQgPSBmLnJlYWQoKQogICAgICAgICAgICAgICAgICAgICBmaWxlX2NvbnRlbnQgPSBmaWxlX2NvbnRlbnQucmVwbGFjZShyZWNpcGVzeXNyb290LCAiIikKICAgICAgICAgICAgICAgICAgICAgaWYgcGtnY29uZmlnY2hlY2sgaW4gZmlsZV9jb250ZW50OgogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbXNnID0gIiVzIGZhaWxlZCBzYW5pdHkgdGVzdCAodG1wZGlyKSBpbiBwYXRoICVzIiAlIChmaWxlLHJvb3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBrZ2NvbmZpZyIsIGVycm9yX21zZywgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbmUgJj0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBrZ2NvbmZpZyIsIGVycm9yX21zZywgZCkKIAogICAgIHJldHVybiBzYW5lCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzCmluZGV4IDA5NzkzZmMuLjA3ZWMyNDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcwpAQCAtMjIsMTIgKzIyLDE0IEBACiAgICAgdmFsaWRfYXJjaHMgPSBkLmdldFZhcigndmFsaWRfYXJjaHMnKS5zcGxpdCgpCiAKICAgICBpZiAgIHJlLm1hdGNoKCcoaS44NnxhdGhsb258eDg2LjY0KSQnLCBhKTogIHJldHVybiAneDg2JworICAgIGVsaWYgcmUubWF0Y2goJ2FyY2ViJCcsIGEpOiAgICAgICAgICAgICAgICAgcmV0dXJuICdhcmMnCiAgICAgZWxpZiByZS5tYXRjaCgnYXJtZWIkJywgYSk6ICAgICAgICAgICAgICAgICByZXR1cm4gJ2FybScKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiAgICAgICAgICAgICAgIHJldHVybiAnYXJtNjQnCiAgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9iZSQnLCBhKTogICAgICAgICAgICByZXR1cm4gJ2FybTY0JwogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfaWxwMzIkJywgYSk6ICAgICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlX2lscDMyJCcsIGEpOiAgICAgIHJldHVybiAnYXJtNjQnCiAgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnw2NHwpKHI2fCkoZWx8KSQnLCBhKTogICAgICByZXR1cm4gJ21pcHMnCisgICAgZWxpZiByZS5tYXRjaCgnbWNmJywgYSk6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ202OGsnCiAgICAgZWxpZiByZS5tYXRjaCgncmlzY3YoMzJ8NjR8KShlYnwpJCcsIGEpOiAgICByZXR1cm4gJ3Jpc2N2JwogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgYSk6ICAgICAgcmV0dXJuICdwb3dlcnBjJwogICAgIGVsaWYgcmUubWF0Y2goJ3NoKDN8NCkkJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdzaCcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlZWNiYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzCkBAIC0wLDAgKzEsMTggQEAKK0tFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCitLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FID89ICIke01BQ0hJTkV9IgorCitLRVJORUxfSU1BR0VfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCitLRVJORUxfSU1BR0VfTElOS19OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorCitLRVJORUxfRFRCX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX05BTUV9IgorS0VSTkVMX0RUQl9MSU5LX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRX0iCisKK0tFUk5FTF9GSVRfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCitLRVJORUxfRklUX0xJTktfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKKworTU9EVUxFX1RBUkJBTExfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCitNT0RVTEVfVEFSQkFMTF9MSU5LX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRX0iCitNT0RVTEVfVEFSQkFMTF9ERVBMT1kgPz0gIjEiCisKK0lOSVRSQU1GU19OQU1FID89ICJpbml0cmFtZnMtJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCitJTklUUkFNRlNfTElOS19OQU1FID89ICJpbml0cmFtZnMtJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCmluZGV4IDRmODBjYzYuLjg2N2I3NzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcwpAQCAtMTAsMjEgKzEwLDIxIEBACiBLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUgPz0gIjAiCiAKIG5vcm1hbGl6ZV9kdGIgKCkgewotCURUQj0iJDEiCi0JaWYgZWNobyAke0RUQn0gfCBncmVwIC1xICcvZHRzLyc7IHRoZW4KLQkJYmJ3YXJuICIke0RUQn0gY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgdGhlIGR0cyBmaWxlLCBidXQgb25seSB0aGUgZHRiIG5hbWUgc2hvdWxkIGJlIHVzZWQuIgotCQlEVEI9YGJhc2VuYW1lICR7RFRCfSB8IHNlZCAncyxcLmR0cyQsLmR0YixnJ2AKKwlkdGI9IiQxIgorCWlmIGVjaG8gJGR0YiB8IGdyZXAgLXEgJy9kdHMvJzsgdGhlbgorCQliYndhcm4gIiRkdGIgY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgdGhlIGR0cyBmaWxlLCBidXQgb25seSB0aGUgZHRiIG5hbWUgc2hvdWxkIGJlIHVzZWQuIgorCQlkdGI9YGJhc2VuYW1lICRkdGIgfCBzZWQgJ3MsXC5kdHMkLC5kdGIsZydgCiAJZmkKLQllY2hvICIke0RUQn0iCisJZWNobyAiJGR0YiIKIH0KIAogZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICgpIHsKLQlEVEI9IiQxIgotCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290L2R0cy8ke0RUQn0iCi0JaWYgWyAhIC1lICIke0RUQl9QQVRIfSIgXTsgdGhlbgotCQlEVEJfUEFUSD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC8ke0RUQn0iCisJZHRiPSIkMSIKKwlkdGJfcGF0aD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC9kdHMvJGR0YiIKKwlpZiBbICEgLWUgIiRkdGJfcGF0aCIgXTsgdGhlbgorCQlkdGJfcGF0aD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC8kZHRiIgogCWZpCi0JZWNobyAiJHtEVEJfUEFUSH0iCisJZWNobyAiJGR0Yl9wYXRoIgogfQogCiBkb19jb25maWd1cmVfYXBwZW5kKCkgewpAQCAtNTAsNjEgKzUwLDQ0IEBACiB9CiAKIGRvX2NvbXBpbGVfYXBwZW5kKCkgewotCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCi0JCURUQj1gbm9ybWFsaXplX2R0YiAiJHtEVEJ9ImAKLQkJb2VfcnVubWFrZSAke0RUQn0KKwlmb3IgZHRiZiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KKwkJZHRiPWBub3JtYWxpemVfZHRiICIkZHRiZiJgCisJCW9lX3J1bm1ha2UgJGR0YgogCWRvbmUKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlEVEJfRVhUPSR7RFRCIyMqLn0KLQkJRFRCX1BBVEg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJHtEVEJ9ImAKLQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCWluc3RhbGwgLW0gMDY0NCAke0RUQl9QQVRIfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9Ci0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCWxuIC1zZiAke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9L2RldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9Ci0KLQkJCWlmIFsgIiR0eXBlIiA9ICJ6SW1hZ2UiIF0gJiYgWyAiJHtLRVJORUxfREVWSUNFVFJFRV9CVU5ETEV9IiA9ICIxIiBdOyB0aGVuCi0JCQkJY2F0ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kdHlwZSBcCi0JCQkJCSR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0gXAotCQkJCQk+ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kdHlwZS0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0uYmluCi0JCQlmaQotCQlkb25lCisJZm9yIGR0YmYgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCisJCWR0Yj1gbm9ybWFsaXplX2R0YiAiJGR0YmYiYAorCQlkdGJfZXh0PSR7ZHRiIyMqLn0KKwkJZHRiX2Jhc2VfbmFtZT1gYmFzZW5hbWUgJGR0YiAuJGR0Yl9leHRgCisJCWR0Yl9wYXRoPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiRkdGIiYAorCQlpbnN0YWxsIC1tIDA2NDQgJGR0Yl9wYXRoICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kZHRiX2Jhc2VfbmFtZS4kZHRiX2V4dAogCWRvbmUKIH0KIAogZG9fZGVwbG95X2FwcGVuZCgpIHsKLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCi0JCURUQl9FWFQ9JHtEVEIjIyoufQotCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKKwlmb3IgZHRiZiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KKwkJZHRiPWBub3JtYWxpemVfZHRiICIkZHRiZiJgCisJCWR0Yl9leHQ9JHtkdGIjIyoufQorCQlkdGJfYmFzZV9uYW1lPWBiYXNlbmFtZSAkZHRiIC4kZHRiX2V4dGAKKwkJaW5zdGFsbCAtZCAke0RFUExPWURJUn0KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kZHRiX2Jhc2VfbmFtZS4kZHRiX2V4dCAke0RFUExPWURJUn0vJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX05BTUV9LiRkdGJfZXh0CisJCWxuIC1zZiAkZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQgJHtERVBMT1lESVJ9LyRkdGJfYmFzZV9uYW1lLiRkdGJfZXh0CisJCWxuIC1zZiAkZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQgJHtERVBMT1lESVJ9LyRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9MSU5LX05BTUV9LiRkdGJfZXh0CiAJCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQliYXNlX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KLQkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQkJRFRCX05BTUU9YGVjaG8gJHtiYXNlX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCi0JCQlpbnN0YWxsIC1kICR7REVQTE9ZRElSfQotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9Ci0JCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9Ci0JCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSAke0RFUExPWURJUn0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9Ci0KIAkJCWlmIFsgIiR0eXBlIiA9ICJ6SW1hZ2UiIF0gJiYgWyAiJHtLRVJORUxfREVWSUNFVFJFRV9CVU5ETEV9IiA9ICIxIiBdOyB0aGVuCi0JCQkJY2F0ICR7REVQTE9ZRElSfS8kdHlwZSBcCi0JCQkJCSR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9IFwKLQkJCQkJPiAke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uJHtEVEJfRVhUfS5iaW4KLQkJCQlsbiAtc2YgJHtEVEJfTkFNRX0uJHtEVEJfRVhUfS5iaW4gJHtERVBMT1lESVJ9LyR0eXBlLSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4KLQorCQkJCWNhdCAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHR5cGUgXAorCQkJCQkke0RFUExPWURJUn0vJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX05BTUV9LiRkdGJfZXh0IFwKKwkJCQkJPiAke0RFUExPWURJUn0vJHR5cGUtJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX05BTUV9LiRkdGJfZXh0LmJpbgorCQkJCWxuIC1zZiAkdHlwZS0kZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQuYmluIFwKKwkJCQkJJHtERVBMT1lESVJ9LyR0eXBlLSRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9MSU5LX05BTUV9LiRkdGJfZXh0LmJpbgogCQkJCWlmIFsgLWUgIiR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzIiBdOyB0aGVuCiAJCQkJCWNhdCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9LmluaXRyYW1mcyBcCi0JCQkJCQkke0RFUExPWURJUn0vJHtEVEJfTkFNRX0uJHtEVEJfRVhUfSBcCi0JCQkJCQk+ICR7REVQTE9ZRElSfS8ke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0tJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbgotCQkJCQlsbiAtc2YgJHt0eXBlfS0ke0lOSVRSQU1GU19CQVNFX05BTUV9LSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4gXAotCQkJCQkgICAgICAgJHtERVBMT1lESVJ9LyR7dHlwZX0taW5pdHJhbWZzLSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS0ke01BQ0hJTkV9LmJpbgorCQkJCQkJJHtERVBMT1lESVJ9LyRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9OQU1FfS4kZHRiX2V4dAorCQkJCQkJPiAgJHtERVBMT1lESVJ9LyR7dHlwZX0tJHtJTklUUkFNRlNfTkFNRX0tJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX05BTUV9LiRkdGJfZXh0LmJpbgorCQkJCQlsbiAtc2YgJHt0eXBlfS0ke0lOSVRSQU1GU19OQU1FfS0kZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQuYmluIFwKKwkJCQkJCSR7REVQTE9ZRElSfS8ke3R5cGV9LSR7SU5JVFJBTUZTX05BTUV9LSRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9MSU5LX05BTUV9LiRkdGJfZXh0LmJpbgogCQkJCWZpCiAJCQlmaQogCQlkb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCmluZGV4IDUwYTkxZTEuLjRjNGZkOTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCkBAIC0xLDQgKzEsNCBAQAotaW5oZXJpdCBrZXJuZWwtdWJvb3QgdWJvb3Qtc2lnbgoraW5oZXJpdCBrZXJuZWwtdWJvb3Qga2VybmVsLWFydGlmYWN0LW5hbWVzIHVib290LXNpZ24KIAogcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKICAgICBrZXJuZWx0eXBlcyA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycpIG9yICIiCkBAIC0xMzUsNiArMTM1LDE1IEBACiAKIAlkdGJfY3N1bT0ic2hhMSIKIAorCWR0Yl9sb2FkbGluZT0iIgorCWR0Yl9leHQ9JHtEVEIjIyoufQorCWlmIFsgIiR7ZHRiX2V4dH0iID0gImR0Ym8iIF07IHRoZW4KKwkJaWYgWyAtbiAiJHtVQk9PVF9EVEJPX0xPQURBRERSRVNTfSIgXTsgdGhlbgorCQkJZHRiX2xvYWRsaW5lPSJsb2FkID0gPCR7VUJPT1RfRFRCT19MT0FEQUREUkVTU30+OyIKKwkJZmkKKwllbGlmIFsgLW4gIiR7VUJPT1RfRFRCX0xPQURBRERSRVNTfSIgXTsgdGhlbgorCQlkdGJfbG9hZGxpbmU9ImxvYWQgPSA8JHtVQk9PVF9EVEJfTE9BREFERFJFU1N9PjsiCisJZmkKIAljYXQgPDwgRU9GID4+ICR7MX0KICAgICAgICAgICAgICAgICBmZHRAJHsyfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJGbGF0dGVuZWQgRGV2aWNlIFRyZWUgYmxvYiI7CkBAIC0xNDIsNiArMTUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiZmxhdF9kdCI7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoID0gIiR7VUJPT1RfQVJDSH0iOwogICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb24gPSAibm9uZSI7CisgICAgICAgICAgICAgICAgICAgICAgICAke2R0Yl9sb2FkbGluZX0KICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hAMSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZ28gPSAiJHtkdGJfY3N1bX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgfTsKQEAgLTI0OCwyNSArMjU4LDM0IEBACiAJZmkKIAogCSMgVGVzdCBpZiB3ZSBoYXZlIGFueSBEVEJzIGF0IGFsbAotCWNvbmZfZGVzYz0iTGludXgga2VybmVsIgotCWtlcm5lbF9saW5lPSJrZXJuZWwgPSBcImtlcm5lbEAkezJ9XCI7IgorCXNlcD0iIgorCWNvbmZfZGVzYz0iIgorCWtlcm5lbF9saW5lPSIiCiAJZmR0X2xpbmU9IiIKIAlyYW1kaXNrX2xpbmU9IiIKIAlzZXR1cF9saW5lPSIiCiAJZGVmYXVsdF9saW5lPSIiCiAKKwlpZiBbIC1uICIkezJ9IiBdOyB0aGVuCisJCWNvbmZfZGVzYz0iTGludXgga2VybmVsIgorCQlzZXA9IiwgIgorCQlrZXJuZWxfbGluZT0ia2VybmVsID0gXCJrZXJuZWxAJHsyfVwiOyIKKwlmaQorCiAJaWYgWyAtbiAiJHszfSIgXTsgdGhlbgotCQljb25mX2Rlc2M9IiR7Y29uZl9kZXNjfSwgRkRUIGJsb2IiCisJCWNvbmZfZGVzYz0iJHtjb25mX2Rlc2N9JHtzZXB9RkRUIGJsb2IiCisJCXNlcD0iLCAiCiAJCWZkdF9saW5lPSJmZHQgPSBcImZkdEAkezN9XCI7IgogCWZpCiAKIAlpZiBbIC1uICIkezR9IiBdOyB0aGVuCi0JCWNvbmZfZGVzYz0iJHtjb25mX2Rlc2N9LCByYW1kaXNrIgorCQljb25mX2Rlc2M9IiR7Y29uZl9kZXNjfSR7c2VwfXJhbWRpc2siCisJCXNlcD0iLCAiCiAJCXJhbWRpc2tfbGluZT0icmFtZGlzayA9IFwicmFtZGlza0AkezR9XCI7IgogCWZpCiAKIAlpZiBbIC1uICIkezV9IiBdOyB0aGVuCi0JCWNvbmZfZGVzYz0iJHtjb25mX2Rlc2N9LCBzZXR1cCIKKwkJY29uZl9kZXNjPSIke2NvbmZfZGVzY30ke3NlcH1zZXR1cCIKIAkJc2V0dXBfbGluZT0ic2V0dXAgPSBcInNldHVwQCR7NX1cIjsiCiAJZmkKIApAQCAtMjg5LDE4ICszMDgsMjYgQEAKIAogCWlmIFsgISAteiAiJHtjb25mX3NpZ25fa2V5bmFtZX0iIF0gOyB0aGVuCiAKLQkJc2lnbl9saW5lPSJzaWduLWltYWdlcyA9IFwia2VybmVsXCIiCisJCXNpZ25fbGluZT0ic2lnbi1pbWFnZXMgPSAiCisJCXNlcD0iIgorCisJCWlmIFsgLW4gIiR7Mn0iIF07IHRoZW4KKwkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9JHtzZXB9XCJrZXJuZWxcIiIKKwkJCXNlcD0iLCAiCisJCWZpCiAKIAkJaWYgWyAtbiAiJHszfSIgXTsgdGhlbgotCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0sIFwiZmR0XCIiCisJCQlzaWduX2xpbmU9IiR7c2lnbl9saW5lfSR7c2VwfVwiZmR0XCIiCisJCQlzZXA9IiwgIgogCQlmaQogCiAJCWlmIFsgLW4gIiR7NH0iIF07IHRoZW4KLQkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9LCBcInJhbWRpc2tcIiIKKwkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9JHtzZXB9XCJyYW1kaXNrXCIiCisJCQlzZXA9IiwgIgogCQlmaQogCiAJCWlmIFsgLW4gIiR7NX0iIF07IHRoZW4KLQkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9LCBcInNldHVwXCIiCisJCQlzaWduX2xpbmU9IiR7c2lnbl9saW5lfSR7c2VwfVwic2V0dXBcIiIKIAkJZmkKIAogCQlzaWduX2xpbmU9IiR7c2lnbl9saW5lfTsiCkBAIC0zNzcsNyArNDA0LDcgQEAKIAkjCiAJaWYgWyAieCR7cmFtZGlza2NvdW50fSIgPSAieDEiIF0gOyB0aGVuCiAJCSMgRmluZCBhbmQgdXNlIHRoZSBmaXJzdCBpbml0cmFtZnMgaW1hZ2UgYXJjaGl2ZSB0eXBlIHdlIGZpbmQKLQkJZm9yIGltZyBpbiBjcGlvLmx6NCBjcGlvLmx6byBjcGlvLmx6bWEgY3Bpby54eiBjcGlvLmd6IGNwaW87IGRvCisJCWZvciBpbWcgaW4gY3Bpby5sejQgY3Bpby5sem8gY3Bpby5sem1hIGNwaW8ueHogY3Bpby5neiBleHQyLmd6IGNwaW87IGRvCiAJCQlpbml0cmFtZnNfcGF0aD0iJHtERVBMT1lfRElSX0lNQUdFfS8ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS4ke2ltZ30iCiAJCQllY2hvICJVc2luZyAkaW5pdHJhbWZzX3BhdGgiCiAJCQlpZiBbIC1lICIke2luaXRyYW1mc19wYXRofSIgXTsgdGhlbgpAQCAtNDAzLDcgKzQzMCwxMiBAQAogCWlmIFsgLW4gIiR7RFRCU30iIF07IHRoZW4KIAkJaT0xCiAJCWZvciBEVEIgaW4gJHtEVEJTfTsgZG8KLQkJCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9jb25maWcgJHsxfSAiJHtrZXJuZWxjb3VudH0iICIke0RUQn0iICIke3JhbWRpc2tjb3VudH0iICIke3NldHVwY291bnR9IiAiYGV4cHIgJHtpfSA9ICR7ZHRiY291bnR9YCIKKwkJCWR0Yl9leHQ9JHtEVEIjIyoufQorCQkJaWYgWyAiJHtkdGJfZXh0fSIgPSAiZHRibyIgXTsgdGhlbgorCQkJCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9jb25maWcgJHsxfSAiIiAiJHtEVEJ9IiAiIiAiIiAiYGV4cHIgJHtpfSA9ICR7ZHRiY291bnR9YCIKKwkJCWVsc2UKKwkJCQlmaXRpbWFnZV9lbWl0X3NlY3Rpb25fY29uZmlnICR7MX0gIiR7a2VybmVsY291bnR9IiAiJHtEVEJ9IiAiJHtyYW1kaXNrY291bnR9IiAiJHtzZXR1cGNvdW50fSIgImBleHByICR7aX0gPSAke2R0YmNvdW50fWAiCisJCQlmaQogCQkJaT1gZXhwciAke2l9ICsgMWAKIAkJZG9uZQogCWZpCkBAIC00MjcsNyArNDU5LDcgQEAKIAkJdWJvb3QtbWtpbWFnZSBcCiAJCQkke0AnLUQgIiR7VUJPT1RfTUtJTUFHRV9EVENPUFRTfSInIGlmIGxlbignJHtVQk9PVF9NS0lNQUdFX0RUQ09QVFN9JykgZWxzZSAnJ30gXAogCQkJLUYgLWsgIiR7VUJPT1RfU0lHTl9LRVlESVJ9IiBcCi0JCQktSyAiJHtERVBMT1lfRElSX0lNQUdFfS8ke1VCT09UX0RUQl9CSU5BUll9IiBcCisJCQkke0AnLUsgIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtVQk9PVF9EVEJfQklOQVJZfSInIGlmIGxlbignJHtVQk9PVF9EVEJfQklOQVJZfScpIGVsc2UgJyd9IFwKIAkJCS1yIGFyY2gvJHtBUkNIfS9ib290LyR7Mn0KIAlmaQogfQpAQCAtNDU2LDMyICs0ODgsMjIgQEAKIGtlcm5lbF9kb19kZXBsb3lfYXBwZW5kKCkgewogCSMgVXBkYXRlIGRlcGxveSBkaXJlY3RvcnkKIAlpZiBlY2hvICR7S0VSTkVMX0lNQUdFVFlQRVN9IHwgZ3JlcCAtd3EgImZpdEltYWdlIjsgdGhlbgotCQljZCAke0J9CiAJCWVjaG8gIkNvcHlpbmcgZml0LWltYWdlLml0cyBzb3VyY2UgZmlsZS4uLiIKLQkJaXRzX2Jhc2VfbmFtZT0iZml0SW1hZ2UtaXRzLSR7UFZ9LSR7UFJ9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi0JCWl0c19zeW1saW5rX25hbWU9Zml0SW1hZ2UtaXRzLSR7TUFDSElORX0KLQkJaW5zdGFsbCAtbSAwNjQ0IGZpdC1pbWFnZS5pdHMgJHtERVBMT1lESVJ9LyR7aXRzX2Jhc2VfbmFtZX0uaXRzCi0JCWxpbnV4X2Jpbl9iYXNlX25hbWU9ImZpdEltYWdlLWxpbnV4LmJpbi0ke1BWfS0ke1BSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgotCQlsaW51eF9iaW5fc3ltbGlua19uYW1lPWZpdEltYWdlLWxpbnV4LmJpbi0ke01BQ0hJTkV9Ci0JCWluc3RhbGwgLW0gMDY0NCBsaW51eC5iaW4gJHtERVBMT1lESVJ9LyR7bGludXhfYmluX2Jhc2VfbmFtZX0uYmluCisJCWluc3RhbGwgLW0gMDY0NCAke0J9L2ZpdC1pbWFnZS5pdHMgJHtERVBMT1lESVJ9L2ZpdEltYWdlLWl0cy0ke0tFUk5FTF9GSVRfTkFNRX0uaXRzCisJCWxuIC1zbmYgZml0SW1hZ2UtaXRzLSR7S0VSTkVMX0ZJVF9OQU1FfS5pdHMgJHtERVBMT1lESVJ9L2ZpdEltYWdlLWl0cy0ke0tFUk5FTF9GSVRfTElOS19OQU1FfQorCisJCWVjaG8gIkNvcHlpbmcgbGludXguYmluIGZpbGUuLi4iCisJCWluc3RhbGwgLW0gMDY0NCAke0J9L2xpbnV4LmJpbiAke0RFUExPWURJUn0vZml0SW1hZ2UtbGludXguYmluLSR7S0VSTkVMX0ZJVF9OQU1FfS5iaW4KKwkJbG4gLXNuZiBmaXRJbWFnZS1saW51eC5iaW4tJHtLRVJORUxfRklUX05BTUV9LmJpbiAke0RFUExPWURJUn0vZml0SW1hZ2UtbGludXguYmluLSR7S0VSTkVMX0ZJVF9MSU5LX05BTUV9CiAKIAkJaWYgWyAtbiAiJHtJTklUUkFNRlNfSU1BR0V9IiBdOyB0aGVuCiAJCQllY2hvICJDb3B5aW5nIGZpdC1pbWFnZS0ke0lOSVRSQU1GU19JTUFHRX0uaXRzIHNvdXJjZSBmaWxlLi4uIgotCQkJaXRzX2luaXRyYW1mc19iYXNlX25hbWU9ImZpdEltYWdlLWl0cy0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke1BWfS0ke1BSfS0ke0RBVEVUSU1FfSIKLQkJCWl0c19pbml0cmFtZnNfc3ltbGlua19uYW1lPWZpdEltYWdlLWl0cy0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfQotCQkJaW5zdGFsbCAtbSAwNjQ0IGZpdC1pbWFnZS0ke0lOSVRSQU1GU19JTUFHRX0uaXRzICR7REVQTE9ZRElSfS8ke2l0c19pbml0cmFtZnNfYmFzZV9uYW1lfS5pdHMKLQkJCWZpdF9pbml0cmFtZnNfYmFzZV9uYW1lPSJmaXRJbWFnZS0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke1BWfS0ke1BSfS0ke0RBVEVUSU1FfSIKLQkJCWZpdF9pbml0cmFtZnNfc3ltbGlua19uYW1lPWZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9Ci0JCQlpbnN0YWxsIC1tIDA2NDQgYXJjaC8ke0FSQ0h9L2Jvb3QvZml0SW1hZ2UtJHtJTklUUkFNRlNfSU1BR0V9ICR7REVQTE9ZRElSfS8ke2ZpdF9pbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4KLQkJZmkKKwkJCWluc3RhbGwgLW0gMDY0NCAke0J9L2ZpdC1pbWFnZS0ke0lOSVRSQU1GU19JTUFHRX0uaXRzICR7REVQTE9ZRElSfS9maXRJbWFnZS1pdHMtJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0tJHtLRVJORUxfRklUX05BTUV9Lml0cworCQkJbG4gLXNuZiBmaXRJbWFnZS1pdHMtJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0tJHtLRVJORUxfRklUX05BTUV9Lml0cyAke0RFUExPWURJUn0vZml0SW1hZ2UtaXRzLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LSR7S0VSTkVMX0ZJVF9MSU5LX05BTUV9CiAKLQkJY2QgJHtERVBMT1lESVJ9Ci0JCWxuIC1zZiAke2l0c19iYXNlX25hbWV9Lml0cyAke2l0c19zeW1saW5rX25hbWV9Lml0cwotCQlsbiAtc2YgJHtsaW51eF9iaW5fYmFzZV9uYW1lfS5iaW4gJHtsaW51eF9iaW5fc3ltbGlua19uYW1lfS5iaW4KLQotCQlpZiBbIC1uICIke0lOSVRSQU1GU19JTUFHRX0iIF07IHRoZW4KLQkJCWxuIC1zZiAke2l0c19pbml0cmFtZnNfYmFzZV9uYW1lfS5pdHMgJHtpdHNfaW5pdHJhbWZzX3N5bWxpbmtfbmFtZX0uaXRzCi0JCQlsbiAtc2YgJHtmaXRfaW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluICR7Zml0X2luaXRyYW1mc19zeW1saW5rX25hbWV9LmJpbgorCQkJZWNobyAiQ29weWluZyBmaXRJbWFnZS0ke0lOSVRSQU1GU19JTUFHRX0gZmlsZS4uLiIKKwkJCWluc3RhbGwgLW0gMDY0NCAke0J9L2FyY2gvJHtBUkNIfS9ib290L2ZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFfSAke0RFUExPWURJUn0vZml0SW1hZ2UtJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0tJHtLRVJORUxfRklUX05BTUV9LmJpbgorCQkJbG4gLXNuZiBmaXRJbWFnZS0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke0tFUk5FTF9GSVRfTkFNRX0uYmluICR7REVQTE9ZRElSfS9maXRJbWFnZS0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke0tFUk5FTF9GSVRfTElOS19OQU1FfQogCQlmaQogCWZpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWltYWdlLmJiY2xhc3MKaW5kZXggMWQ4NjU2ZS4uYzJkZTZiYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVpbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11aW1hZ2UuYmJjbGFzcwpAQCAtMSw3ICsxLDcgQEAKIGluaGVyaXQga2VybmVsLXVib290CiAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgaWYgInVJbWFnZSIgaW4gKGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycpIG9yICIiKS5zcGxpdCgpOgorICAgIGlmICJ1SW1hZ2UiIGluIGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycpOgogICAgICAgICBkZXBlbmRzID0gZC5nZXRWYXIoIkRFUEVORFMiKQogICAgICAgICBkZXBlbmRzID0gIiVzIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZSIgJSBkZXBlbmRzCiAgICAgICAgIGQuc2V0VmFyKCJERVBFTkRTIiwgZGVwZW5kcykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKaW5kZXggODJkODA3NC4uNDk2YzhhNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKQEAgLTE0MCw2ICsxNDAsOCBAQAogCQkJaW5jbHVkZXM9IiRpbmNsdWRlcyAtSSR7V09SS0RJUn0vJGYva2VybmVsLW1ldGEiCiAJICAgICAgICBlbGlmIFsgLWQgIiR7V09SS0RJUn0vJGYiIF07IHRoZW4KIAkJCWluY2x1ZGVzPSIkaW5jbHVkZXMgLUkke1dPUktESVJ9LyRmIgorCQllbGlmIFsgLWQgIiR7V09SS0RJUn0vLi4vb2UtbG9jYWwtZmlsZXMvJGYiIF07IHRoZW4KKwkJCWluY2x1ZGVzPSIkaW5jbHVkZXMgLUkke1dPUktESVJ9Ly4uL29lLWxvY2FsLWZpbGVzLyRmIgogCQlmaQogCWRvbmUKIAlmb3IgcyBpbiAke3NjY3N9ICR7cGF0Y2hlc307IGRvCkBAIC0zMTksNyArMzIxLDcgQEAKIGFkZHRhc2sga2VybmVsX2NvbmZpZ21lIGJlZm9yZSBkb19jb25maWd1cmUgYWZ0ZXIgZG9fcGF0Y2gKIAogcHl0aG9uIGRvX2tlcm5lbF9jb25maWdjaGVjaygpIHsKLSAgICBpbXBvcnQgcmUsIHN0cmluZywgc3lzCisgICAgaW1wb3J0IHJlLCBzdHJpbmcsIHN5cywgc3VicHJvY2VzcwogCiAgICAgIyBpZiBLTUVUQSBpc24ndCBzZXQgZ2xvYmFsbHkgYnkgYSByZWNpcGUgdXNpbmcgdGhpcyByb3V0aW5lLCB3ZSBuZWVkIHRvCiAgICAgIyBzZXQgdGhlIGRlZmF1bHQgdG8gJ21ldGEnLiBPdGhlcndpc2UsIGtjb25mX2NoZWNrIGlzIG5vdCBwYXNzZWQgYSB2YWxpZApAQCAtMzI4LDEzICszMzAsMjQgQEAKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoa21ldGEpOgogICAgICAgICBrbWV0YSA9ICIuIiArIGttZXRhCiAKLSAgICBwYXRocHJlZml4ID0gImV4cG9ydCBQQVRIPSVzOiVzOyAiICUgKGQuZ2V0VmFyKCdQQVRIJyksICIke1N9L3NjcmlwdHMvdXRpbC8iKQorICAgIHMgPSBkLmdldFZhcignUycpCiAKLSAgICBjbWQgPSBkLmV4cGFuZCgic2NjIC0tY29uZmlncyAtbyAke1N9Ly5rZXJuZWwtbWV0YSIpCi0gICAgcmV0LCBjb25maWdzID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCIlcyVzIiAlIChwYXRocHJlZml4LCBjbWQpKQorICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgZW52WydQQVRIJ10gPSAiJXM6JXMlcyIgJSAoZC5nZXRWYXIoJ1BBVEgnKSwgcywgIi9zY3JpcHRzL3V0aWwvIikKIAotICAgIGNtZCA9IGQuZXhwYW5kKCJjZCAke1N9OyBrY29uZl9jaGVjayAtLXJlcG9ydCAtbyAke1N9LyVzL2NmZy8gJHtCfS8uY29uZmlnICR7U30gJXMiICUgKGttZXRhLGNvbmZpZ3MpKQotICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCIlcyVzIiAlIChwYXRocHJlZml4LCBjbWQpKQorICAgIHRyeToKKyAgICAgICAgY29uZmlncyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc2NjJywgJy0tY29uZmlncycsICctbycsIHMgKyAnLy5rZXJuZWwtbWV0YSddLCBlbnY9ZW52KS5kZWNvZGUoJ3V0Zi04JykKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgYmIuZmF0YWwoICJDYW5ub3QgZ2F0aGVyIGNvbmZpZyBmcmFnbWVudHMgZm9yIGF1ZGl0OiAlcyIgJSBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikgKQorCisgICAgdHJ5OgorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWydrY29uZl9jaGVjaycsICctLXJlcG9ydCcsICctbycsCisgICAgICAgICAgICAgICAgJyVzLyVzL2NmZycgJSAocywga21ldGEpLCBkLmdldFZhcignQicpICsgJy8uY29uZmlnJywgcywgY29uZmlnc10sIGN3ZD1zLCBlbnY9ZW52KQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgIyBUaGUgY29uZmlndXJhdGlvbiBnYXRoZXJpbmcgY2FuIHJldHVybiBkaWZmZXJlbnQgZXhpdCBjb2RlcywgYnV0CisgICAgICAgICMgd2UgaW50ZXJwcmV0IHRoZW0gYmFzZWQgb24gdGhlIEtDT05GX0FVRElUX0xFVkVMIHZhcmlhYmxlLCBzbyB3ZSBjYXRjaAorICAgICAgICAjIGV2ZXJ5dGhpbmcgaGVyZSwgYW5kIGxldCB0aGUgcnVuIGNvbnRpbnVlLgorICAgICAgICBwYXNzCiAKICAgICBjb25maWdfY2hlY2tfdmlzaWJpbGl0eSA9IGludChkLmdldFZhcigiS0NPTkZfQVVESVRfTEVWRUwiKSBvciAwKQogICAgIGJzcF9jaGVja192aXNpYmlsaXR5ID0gaW50KGQuZ2V0VmFyKCJLQ09ORl9CU1BfQVVESVRfTEVWRUwiKSBvciAwKQpAQCAtMzQ2LDYgKzM1OSwyNyBAQAogICAgICAgICAgICAgd2l0aCBvcGVuIChtaXNtYXRjaF9maWxlLCAiciIpIGFzIG15ZmlsZToKICAgICAgICAgICAgICAgICByZXN1bHRzID0gbXlmaWxlLnJlYWQoKQogICAgICAgICAgICAgICAgIGJiLndhcm4oICJba2VybmVsIGNvbmZpZ106IHNwZWNpZmllZCB2YWx1ZXMgZGlkIG5vdCBtYWtlIGl0IGludG8gdGhlIGtlcm5lbCdzIGZpbmFsIGNvbmZpZ3VyYXRpb246XG5cbiVzIiAlIHJlc3VsdHMpCisKKyAgICBpZiBic3BfY2hlY2tfdmlzaWJpbGl0eToKKyAgICAgICAgaW52YWxpZF9maWxlID0gZC5leHBhbmQoIiR7U30vJXMvY2ZnL2ludmFsaWQuY2ZnIiAlIGttZXRhKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbnZhbGlkX2ZpbGUpIGFuZCBvcy5zdGF0KGludmFsaWRfZmlsZSkuc3Rfc2l6ZSA+IDA6CisgICAgICAgICAgICB3aXRoIG9wZW4gKGludmFsaWRfZmlsZSwgInIiKSBhcyBteWZpbGU6CisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IG15ZmlsZS5yZWFkKCkKKyAgICAgICAgICAgICAgICBiYi53YXJuKCAiW2tlcm5lbCBjb25maWddOiBUaGlzIEJTUCBzZXRzIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIG5vdCBvZmZlcmVkIGFueXdoZXJlIHdpdGhpbiB0aGlzIGtlcm5lbDpcblxuJXMiICUgcmVzdWx0cykKKyAgICAgICAgZXJyb3JzX2ZpbGUgPSBkLmV4cGFuZCgiJHtTfS8lcy9jZmcvZnJhZ21lbnRfZXJyb3JzLnR4dCIgJSBrbWV0YSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZXJyb3JzX2ZpbGUpIGFuZCBvcy5zdGF0KGVycm9yc19maWxlKS5zdF9zaXplID4gMDoKKyAgICAgICAgICAgIHdpdGggb3BlbiAoZXJyb3JzX2ZpbGUsICJyIikgYXMgbXlmaWxlOgorICAgICAgICAgICAgICAgcmVzdWx0cyA9IG15ZmlsZS5yZWFkKCkKKyAgICAgICAgICAgICAgIGJiLndhcm4oICJba2VybmVsIGNvbmZpZ106IFRoaXMgQlNQIGNvbnRhaW5zIGZyYWdtZW50cyB3aXRoIGVycm9yczpcblxuJXMiICUgcmVzdWx0cykKKworICAgICMgaWYgdGhlIGF1ZGl0IGxldmVsIGlzIGdyZWF0ZXIgdGhhbiB0d28sIHdlIHJlcG9ydCBpZiBhIGZyYWdtZW50IGhhcyBvdmVycmlkZW4KKyAgICAjIGEgdmFsdWUgZnJvbSBhIGJhc2UgZnJhZ21lbnQuIFRoaXMgaXMgcmVhbGx5IG9ubHkgdXNlZCBmb3IgbmV3IGtlcm5lbCBpbnRyb2R1Y3Rpb24KKyAgICBpZiBic3BfY2hlY2tfdmlzaWJpbGl0eSA+IDI6CisgICAgICAgIHJlZGVmaW5pdGlvbl9maWxlID0gZC5leHBhbmQoIiR7U30vJXMvY2ZnL3JlZGVmaW5pdGlvbi50eHQiICUga21ldGEpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHJlZGVmaW5pdGlvbl9maWxlKSBhbmQgb3Muc3RhdChyZWRlZmluaXRpb25fZmlsZSkuc3Rfc2l6ZSA+IDA6CisgICAgICAgICAgICB3aXRoIG9wZW4gKHJlZGVmaW5pdGlvbl9maWxlLCAiciIpIGFzIG15ZmlsZToKKyAgICAgICAgICAgICAgICByZXN1bHRzID0gbXlmaWxlLnJlYWQoKQorICAgICAgICAgICAgICAgIGJiLndhcm4oICJba2VybmVsIGNvbmZpZ106IFRoaXMgQlNQIGhhcyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZGVmaW5lZCBpbiBtb3JlIHRoYW4gb25lIGNvbmZpZywgd2l0aCBkaWZmZXJpbmcgdmFsdWVzOlxuXG4lcyIgJSByZXN1bHRzKQogfQogCiAjIEVuc3VyZSB0aGF0IHRoZSBicmFuY2hlcyAoQlNQIGFuZCBtZXRhKSBhcmUgb24gdGhlIGxvY2F0aW9ucyBzcGVjaWZpZWQgYnkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggNzI3ODUxNC4uZTA0ZDJmZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKQEAgLTYyLDMxICs2MiwzNiBAQAogICAgIHR5cGUgPSBkLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRScpIG9yICIiCiAgICAgYWx0dHlwZSA9IGQuZ2V0VmFyKCdLRVJORUxfQUxUX0lNQUdFVFlQRScpIG9yICIiCiAgICAgdHlwZXMgPSBkLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRVMnKSBvciAiIgotICAgIGtuYW1lID0gZC5nZXRWYXIoJ0tFUk5FTF9QQUNLQUdFX05BTUUnKSBvciAia2VybmVsIgogICAgIGlmIHR5cGUgbm90IGluIHR5cGVzLnNwbGl0KCk6CiAgICAgICAgIHR5cGVzID0gKHR5cGUgKyAnICcgKyB0eXBlcykuc3RyaXAoKQogICAgIGlmIGFsdHR5cGUgbm90IGluIHR5cGVzLnNwbGl0KCk6CiAgICAgICAgIHR5cGVzID0gKGFsdHR5cGUgKyAnICcgKyB0eXBlcykuc3RyaXAoKQogICAgIGQuc2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycsIHR5cGVzKQogCi0gICAgIyBzb21lIGNvbW1vbmx5IHVzZWQga2VybmVsIGltYWdlcyBhcmVuJ3QgZ2VuZXJhdGVkIGJ5IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLCBzdWNoIGFzIHZtbGludXguZ3oKLSAgICAjIHR5cGVmb3JtYWtlIGxpc3RzIG9ubHkgdmFsaWQga2VybmVsIG1ha2UgdGFyZ2V0cywgYW5kIHBvc3QgcHJvY2Vzc2luZyBjYW4gYmUgZG9uZSBhZnRlciB0aGUga2VybmVsCi0gICAgIyBpcyBidWlsdCAoc3VjaCBhcyB1c2luZyBnemlwIHRvIGNvbXByZXNzIHZtbGludXgpCi0gICAgdHlwZWZvcm1ha2UgPSB0eXBlcy5yZXBsYWNlKCd2bWxpbnV4Lmd6JywgJ3ZtbGludXgnKQotICAgIGQuc2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFJywgdHlwZWZvcm1ha2UpCisgICAgIyBLRVJORUxfSU1BR0VUWVBFUyBtYXkgY29udGFpbiBhIG1peHR1cmUgb2YgaW1hZ2UgdHlwZXMgc3VwcG9ydGVkIGRpcmVjdGx5CisgICAgIyBieSB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBhbmQgdHlwZXMgd2hpY2ggYXJlIGNyZWF0ZWQgYnkgcG9zdC1wcm9jZXNzaW5nCisgICAgIyB0aGUgb3V0cHV0IG9mIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIChlLmcuIGNvbXByZXNzaW5nIHZtbGludXggLT4KKyAgICAjIHZtbGludXguZ3ogaW4ga2VybmVsX2RvX2NvbXBpbGUoKSkuCisgICAgIyBLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFIHNob3VsZCBjb250YWluIG9ubHkgaW1hZ2UgdHlwZXMgc3VwcG9ydGVkCisgICAgIyBkaXJlY3RseSBieSB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4KKyAgICBpZiBub3QgZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0UnKToKKyAgICAgICAgdHlwZWZvcm1ha2UgPSBzZXQoKQorICAgICAgICBmb3IgdHlwZSBpbiB0eXBlcy5zcGxpdCgpOgorICAgICAgICAgICAgaWYgdHlwZSA9PSAndm1saW51eC5neic6CisgICAgICAgICAgICAgICAgdHlwZSA9ICd2bWxpbnV4JworICAgICAgICAgICAgdHlwZWZvcm1ha2UuYWRkKHR5cGUpCisKKyAgICAgICAgZC5zZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0UnLCAnICcuam9pbihzb3J0ZWQodHlwZWZvcm1ha2UpKSkKKworICAgIGtuYW1lID0gZC5nZXRWYXIoJ0tFUk5FTF9QQUNLQUdFX05BTUUnKSBvciAia2VybmVsIgorICAgIGltYWdlZGVzdCA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VERVNUJykKIAogICAgIGZvciB0eXBlIGluIHR5cGVzLnNwbGl0KCk6CiAgICAgICAgIHR5cGVsb3dlciA9IHR5cGUubG93ZXIoKQotICAgICAgICBpbWFnZWRlc3QgPSBkLmdldFZhcignS0VSTkVMX0lNQUdFREVTVCcpCi0KICAgICAgICAgZC5hcHBlbmRWYXIoJ1BBQ0tBR0VTJywgJyAlcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlcikpCi0KICAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBrbmFtZSArICctaW1hZ2UtJyArIHR5cGVsb3dlciwgJy8nICsgaW1hZ2VkZXN0ICsgJy8nICsgdHlwZSArICctJHtLRVJORUxfVkVSU0lPTl9OQU1FfScgKyAnIC8nICsgaW1hZ2VkZXN0ICsgJy8nICsgdHlwZSkKLQogICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJXMtaW1hZ2UnICUga25hbWUsICcgJXMtaW1hZ2UtJXMnICUgKGtuYW1lLCB0eXBlbG93ZXIpKQotCiAgICAgICAgIGQuc2V0VmFyKCdQS0dfJXMtaW1hZ2UtJXMnICUgKGtuYW1lLHR5cGVsb3dlciksICclcy1pbWFnZS0lcy0ke0tFUk5FTF9WRVJTSU9OX1BLR19OQU1FfScgJSAoa25hbWUsIHR5cGVsb3dlcikpCi0KICAgICAgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyVzLWltYWdlLSVzJyAlIChrbmFtZSwgdHlwZWxvd2VyKSwgJzEnKQogCiAgICAgaW1hZ2UgPSBkLmdldFZhcignSU5JVFJBTUZTX0lNQUdFJykKQEAgLTE1OSw3ICsxNjQsNyBAQAogCiAjIFRoZSBkaXJlY3Rvcnkgd2hlcmUgYnVpbHQga2VybmVsIGxpZXMgaW4gdGhlIGtlcm5lbCB0cmVlCiBLRVJORUxfT1VUUFVUX0RJUiA/PSAiYXJjaC8ke0FSQ0h9L2Jvb3QiCi1LRVJORUxfSU1BR0VERVNUID0gImJvb3QiCitLRVJORUxfSU1BR0VERVNUID89ICJib290IgogCiAjCiAjIGNvbmZpZ3VyYXRpb24KQEAgLTIyNCwzOSArMjI5LDM3IEBACiAJZWNobyAiRmluaXNoZWQgY29weSBvZiBpbml0cmFtZnMgaW50byAuL3VzciIKIH0KIAotSU5JVFJBTUZTX0JBU0VfTkFNRSA/PSAiaW5pdHJhbWZzLSR7UFZ9LSR7UFJ9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi1JTklUUkFNRlNfQkFTRV9OQU1FW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFVElNRSIKIGRvX2J1bmRsZV9pbml0cmFtZnMgKCkgewogCWlmIFsgISAteiAiJHtJTklUUkFNRlNfSU1BR0V9IiAtYSB4IiR7SU5JVFJBTUZTX0lNQUdFX0JVTkRMRX0iID0geDEgXTsgdGhlbgogCQllY2hvICJDcmVhdGluZyBhIGtlcm5lbCBpbWFnZSB3aXRoIGEgYnVuZGxlZCBpbml0cmFtZnMuLi4iCiAJCWNvcHlfaW5pdHJhbWZzCiAJCSMgQmFja2luZyB1cCBrZXJuZWwgaW1hZ2UgcmVsaWVzIG9uIGl0cyB0eXBlKHJlZ3VsYXIgZmlsZSBvciBzeW1ib2xpYyBsaW5rKQogCQl0bXBfcGF0aD0iIgotCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9IDsgZG8KLQkJCWlmIFsgLWggJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgXSA7IHRoZW4KLQkJCQlsaW5rcGF0aD1gcmVhZGxpbmsgLW4gJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGVgCi0JCQkJcmVhbHBhdGg9YHJlYWRsaW5rIC1mbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZWAKKwkJZm9yIGltYWdlVHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9IDsgZG8KKwkJCWlmIFsgLWggJHtLRVJORUxfT1VUUFVUX0RJUn0vJGltYWdlVHlwZSBdIDsgdGhlbgorCQkJCWxpbmtwYXRoPWByZWFkbGluayAtbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlYAorCQkJCXJlYWxwYXRoPWByZWFkbGluayAtZm4gJHtLRVJORUxfT1VUUFVUX0RJUn0vJGltYWdlVHlwZWAKIAkJCQltdiAtZiAkcmVhbHBhdGggJHJlYWxwYXRoLmJhawotCQkJCXRtcF9wYXRoPSR0bXBfcGF0aCIgIiR0eXBlIiMiJGxpbmtwYXRoIiMiJHJlYWxwYXRoCi0JCQllbGlmIFsgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgXTsgdGhlbgotCQkJCW12IC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlLmJhawotCQkJCXRtcF9wYXRoPSR0bXBfcGF0aCIgIiR0eXBlIiMjIgorCQkJCXRtcF9wYXRoPSR0bXBfcGF0aCIgIiRpbWFnZVR5cGUiIyIkbGlua3BhdGgiIyIkcmVhbHBhdGgKKwkJCWVsaWYgWyAtZiAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlIF07IHRoZW4KKwkJCQltdiAtZiAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUuYmFrCisJCQkJdG1wX3BhdGg9JHRtcF9wYXRoIiAiJGltYWdlVHlwZSIjIyIKIAkJCWZpCiAJCWRvbmUKIAkJdXNlX2FsdGVybmF0ZV9pbml0cmQ9Q09ORklHX0lOSVRSQU1GU19TT1VSQ0U9JHtCfS91c3IvJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0uY3BpbwogCQlrZXJuZWxfZG9fY29tcGlsZQogCQkjIFJlc3RvcmluZyBrZXJuZWwgaW1hZ2UKIAkJZm9yIHRwIGluICR0bXBfcGF0aCA7IGRvCi0JCQl0eXBlPWBlY2hvICR0cHxjdXQgLWQgIiMiIC1mIDFgCisJCQlpbWFnZVR5cGU9YGVjaG8gJHRwfGN1dCAtZCAiIyIgLWYgMWAKIAkJCWxpbmtwYXRoPWBlY2hvICR0cHxjdXQgLWQgIiMiIC1mIDJgCiAJCQlyZWFscGF0aD1gZWNobyAkdHB8Y3V0IC1kICIjIiAtZiAzYAogCQkJaWYgWyAtbiAiJHJlYWxwYXRoIiBdOyB0aGVuCiAJCQkJbXYgLWYgJHJlYWxwYXRoICRyZWFscGF0aC5pbml0cmFtZnMKIAkJCQltdiAtZiAkcmVhbHBhdGguYmFrICRyZWFscGF0aAotCQkJCWxuIC1zZiAkbGlua3BhdGguaW5pdHJhbWZzICR7Qn0vJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuaW5pdHJhbWZzCisJCQkJbG4gLXNmICRsaW5rcGF0aC5pbml0cmFtZnMgJHtCfS8ke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlLmluaXRyYW1mcwogCQkJZWxzZQotCQkJCW12IC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlLmluaXRyYW1mcwotCQkJCW12IC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlLmJhayAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZQorCQkJCW12IC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUgJHtLRVJORUxfT1VUUFVUX0RJUn0vJGltYWdlVHlwZS5pbml0cmFtZnMKKwkJCQltdiAtZiAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlLmJhayAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlCiAJCQlmaQogCQlkb25lCiAJZmkKQEAgLTI4Myw3ICsyODYsNyBAQAogCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogCQkjIGtlcm5lbCBzb3VyY2VzIGRvIG5vdCB1c2UgZG9fdW5wYWNrLCBzbyBTT1VSQ0VfREFURV9FUE9DSCBtYXkgbm90CiAJCSMgYmUgc2V0Li4uLgotCQlpZiBbICIkU09VUkNFX0RBVEVfRVBPQ0giID0gIjAiIF07IHRoZW4KKwkJaWYgWyAiJHtTT1VSQ0VfREFURV9FUE9DSH0iID0gIiIgLW8gIiR7U09VUkNFX0RBVEVfRVBPQ0h9IiA9ICIwIiBdOyB0aGVuCiAJCQlvbGRkaXI9YHB3ZGAKIAkJCWNkICR7U30KIAkJCVNPVVJDRV9EQVRFX0VQT0NIPWBnaXQgbG9nICAtMSAtLXByZXR0eT0lY3RgCkBAIC0zNjIsMTAgKzM2NSwxMCBAQAogCSMKIAlpbnN0YWxsIC1kICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfQogCWluc3RhbGwgLWQgJHtEfS9ib290Ci0JZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwotCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfQorCWZvciBpbWFnZVR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbworCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHtpbWFnZVR5cGV9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke2ltYWdlVHlwZX0tJHtLRVJORUxfVkVSU0lPTn0KIAkJaWYgWyAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfSIgPSAia2VybmVsIiBdOyB0aGVuCi0JCQlsbiAtc2YgJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfQorCQkJbG4gLXNmICR7aW1hZ2VUeXBlfS0ke0tFUk5FTF9WRVJTSU9OfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHtpbWFnZVR5cGV9CiAJCWZpCiAJZG9uZQogCWluc3RhbGwgLW0gMDY0NCBTeXN0ZW0ubWFwICR7RH0vYm9vdC9TeXN0ZW0ubWFwLSR7S0VSTkVMX1ZFUlNJT059CkBAIC02MzcsMTAgKzY0MCwxMCBAQAogCQkJZGllICJJbnZhbGlkIEtFUk5FTF9JTUFHRV9NQVhTSVpFOiAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSwgc2hvdWxkIGJlIGFuIGludGVnZXIgKFRoZSB1bml0IGlzIEtieXRlcykiCiAJCWZpCiAJCWF0X2xlYXN0X29uZV9maXRzPQotCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCi0JCQlzaXplPWBkdSAta3MgJHtCfS8ke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZSB8IGF3ayAne3ByaW50ICQxfSdgCisJCWZvciBpbWFnZVR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbworCQkJc2l6ZT1gZHUgLWtzICR7Qn0vJHtLRVJORUxfT1VUUFVUX0RJUn0vJGltYWdlVHlwZSB8IGF3ayAne3ByaW50ICQxfSdgCiAJCQlpZiBbICRzaXplIC1nZSAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSBdOyB0aGVuCi0JCQkJYmJ3YXJuICJUaGlzIGtlcm5lbCAkdHlwZSAoc2l6ZT0kc2l6ZShLKSA+ICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9KEspKSBpcyB0b28gYmlnIGZvciB5b3VyIGRldmljZS4iCisJCQkJYmJ3YXJuICJUaGlzIGtlcm5lbCAkaW1hZ2VUeXBlIChzaXplPSRzaXplKEspID4gJHtLRVJORUxfSU1BR0VfTUFYU0laRX0oSykpIGlzIHRvbyBiaWcgZm9yIHlvdXIgZGV2aWNlLiIKIAkJCWVsc2UKIAkJCQlhdF9sZWFzdF9vbmVfZml0cz15CiAJCQlmaQpAQCAtNjU0LDE2ICs2NTcsNyBAQAogCiBhZGR0YXNrIHNpemVjaGVjayBiZWZvcmUgZG9faW5zdGFsbCBhZnRlciBkb19zdHJpcAogCi1LRVJORUxfSU1BR0VfQkFTRV9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgotIyBEb24ndCBpbmNsdWRlIHRoZSBEQVRFVElNRSB2YXJpYWJsZSBpbiB0aGUgc3N0YXRlIHBhY2thZ2Ugc2lnbmF0dXJlcwotS0VSTkVMX0lNQUdFX0JBU0VfTkFNRVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCi1LRVJORUxfSU1BR0VfU1lNTElOS19OQU1FID89ICIke01BQ0hJTkV9IgotTU9EVUxFX0lNQUdFX0JBU0VfTkFNRSA/PSAibW9kdWxlcy0ke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgotTU9EVUxFX0lNQUdFX0JBU0VfTkFNRVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCi1NT0RVTEVfVEFSQkFMTF9CQVNFX05BTUUgPz0gIiR7TU9EVUxFX0lNQUdFX0JBU0VfTkFNRX0udGd6IgotIyBEb24ndCBpbmNsdWRlIHRoZSBEQVRFVElNRSB2YXJpYWJsZSBpbiB0aGUgc3N0YXRlIHBhY2thZ2Ugc2lnbmF0dXJlcwotTU9EVUxFX1RBUkJBTExfU1lNTElOS19OQU1FID89ICJtb2R1bGVzLSR7TUFDSElORX0udGd6IgotTU9EVUxFX1RBUkJBTExfREVQTE9ZID89ICIxIgoraW5oZXJpdCBrZXJuZWwtYXJ0aWZhY3QtbmFtZXMKIAoga2VybmVsX2RvX2RlcGxveSgpIHsKIAlkZXBsb3lEaXI9IiR7REVQTE9ZRElSfSIKQEAgLTY3MiwzNCArNjY2LDI4IEBACiAJCW1rZGlyICIkZGVwbG95RGlyIgogCWZpCiAKLQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCi0JCWJhc2VfbmFtZT0ke3R5cGV9LSR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0gJGRlcGxveURpci8ke2Jhc2VfbmFtZX0uYmluCisJZm9yIGltYWdlVHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCisJCWJhc2VfbmFtZT0ke2ltYWdlVHlwZX0tJHtLRVJORUxfSU1BR0VfTkFNRX0KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7aW1hZ2VUeXBlfSAkZGVwbG95RGlyLyR7YmFzZV9uYW1lfS5iaW4KKwkJc3ltbGlua19uYW1lPSR7aW1hZ2VUeXBlfS0ke0tFUk5FTF9JTUFHRV9MSU5LX05BTUV9CisJCWxuIC1zZiAke2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHtzeW1saW5rX25hbWV9LmJpbgorCQlsbiAtc2YgJHtiYXNlX25hbWV9LmJpbiAkZGVwbG95RGlyLyR7aW1hZ2VUeXBlfQogCWRvbmUKKwogCWlmIFsgJHtNT0RVTEVfVEFSQkFMTF9ERVBMT1l9ID0gIjEiIF0gJiYgKGdyZXAgLXEgLWkgLWUgJ15DT05GSUdfTU9EVUxFUz15JCcgLmNvbmZpZyk7IHRoZW4KLQkJbWtkaXIgLXAgJHtEfS9saWIKLQkJdGFyIC1jdnpmICRkZXBsb3lEaXIvJHtNT0RVTEVfVEFSQkFMTF9CQVNFX05BTUV9IC1DICR7RH0gbGliCi0JCWxuIC1zZiAke01PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRX0gJGRlcGxveURpci8ke01PRFVMRV9UQVJCQUxMX1NZTUxJTktfTkFNRX0KKwkJbWtkaXIgLXAgJHtEfSR7cm9vdF9wcmVmaXh9L2xpYgorCQl0YXIgLWN2emYgJGRlcGxveURpci9tb2R1bGVzLSR7TU9EVUxFX1RBUkJBTExfTkFNRX0udGd6IC1DICR7RH0ke3Jvb3RfcHJlZml4fSBsaWIKKwkJbG4gLXNmIG1vZHVsZXMtJHtNT0RVTEVfVEFSQkFMTF9OQU1FfS50Z3ogJGRlcGxveURpci9tb2R1bGVzLSR7TU9EVUxFX1RBUkJBTExfTElOS19OQU1FfS50Z3oKIAlmaQogCi0JZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwotCQliYXNlX25hbWU9JHt0eXBlfS0ke0tFUk5FTF9JTUFHRV9CQVNFX05BTUV9Ci0JCXN5bWxpbmtfbmFtZT0ke3R5cGV9LSR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke3N5bWxpbmtfbmFtZX0uYmluCi0JCWxuIC1zZiAke2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHt0eXBlfQotCWRvbmUKLQotCWNkICR7Qn0KLQkjIFVwZGF0ZSBkZXBsb3kgZGlyZWN0b3J5Ci0JZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwotCQlpZiBbIC1lICIke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9LmluaXRyYW1mcyIgXTsgdGhlbgotCQkJZWNobyAiQ29weWluZyBkZXBsb3kgJHt0eXBlfSBrZXJuZWwtaW5pdHJhbWZzIGltYWdlIGFuZCBzZXR0aW5nIHVwIGxpbmtzLi4uIgotCQkJaW5pdHJhbWZzX2Jhc2VfbmFtZT0ke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0KLQkJCWluaXRyYW1mc19zeW1saW5rX25hbWU9JHt0eXBlfS1pbml0cmFtZnMtJHtNQUNISU5FfQotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzICRkZXBsb3lEaXIvJHtpbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4KKwlpZiBbICEgLXogIiR7SU5JVFJBTUZTX0lNQUdFfSIgLWEgeCIke0lOSVRSQU1GU19JTUFHRV9CVU5ETEV9IiA9IHgxIF07IHRoZW4KKwkJZm9yIGltYWdlVHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCisJCQlpbml0cmFtZnNfYmFzZV9uYW1lPSR7aW1hZ2VUeXBlfS0ke0lOSVRSQU1GU19OQU1FfQorCQkJaW5pdHJhbWZzX3N5bWxpbmtfbmFtZT0ke2ltYWdlVHlwZX0tJHtJTklUUkFNRlNfTElOS19OQU1FfQorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7aW1hZ2VUeXBlfS5pbml0cmFtZnMgJGRlcGxveURpci8ke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbgogCQkJbG4gLXNmICR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHtpbml0cmFtZnNfc3ltbGlua19uYW1lfS5iaW4KLQkJZmkKLQlkb25lCisJCWRvbmUKKwlmaQogfQogZG9fZGVwbG95W2NsZWFuZGlyc10gPSAiJHtERVBMT1lESVJ9IgogZG9fZGVwbG95W2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0J9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MKaW5kZXggOWVhMmMwMy4uMGUzNTFiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzCkBAIC0xLDkgKzEsNSBAQAogZG9faW5zdGFsbCgpIHsKIAlvZV9ydW5tYWtlIGluc3RhbGxfcm9vdD0ke0R9IGluc3RhbGwKLQlmb3IgciBpbiAke3JwY3N2Y307IGRvCi0JCWg9YGVjaG8gJHJ8c2VkIC1lJ3MsXC54JCwuaCwnYAotCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zdW5ycGMvcnBjc3ZjLyRoICR7RH0vJHtpbmNsdWRlZGlyfS9ycGNzdmMvCi0JZG9uZQogCWluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ldGMvbGQuc28uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vbGQuc28uY29uZgogCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxlZGlyfQogCW1ha2UgLWYgJHtXT1JLRElSfS9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgSU49IiR7U30vbG9jYWxlZGF0YS9TVVBQT1JURUQiIE9VVD0iJHtXT1JLRElSfS9TVVBQT1JURUQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCmluZGV4IDJlN2NkMjUuLjlkMDljN2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCkBAIC0yNTcsNiArMjU3LDggQEAKICAgICAgICAgICAgICAgICAibWlwc2lzYTMycjZlbCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAogICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNmVsIjoiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKKyAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAorICAgICAgICAgICAgICAgICJyaXNjdjMyIjogIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCBcCiAgICAgICAgICAgICAgICAgImk1ODYiOiAgICAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKICAgICAgICAgICAgICAgICAiaTY4NiI6ICAgICIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAogICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKaW5kZXggNTEwM2VkOC4uNGNmN2YwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwpAQCAtMTYsMjg0ICsxNiw2IEBACiBkb19wb3B1bGF0ZV9saWNbZGlyc10gPSAiJHtMSUNTU1RBVEVESVJ9LyR7UE59IgogZG9fcG9wdWxhdGVfbGljW2NsZWFuZGlyc10gPSAiJHtMSUNTU1RBVEVESVJ9IgogCi1weXRob24gd3JpdGVfcGFja2FnZV9tYW5pZmVzdCgpIHsKLSAgICAjIEdldCBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcwotICAgIGxpY2Vuc2VfaW1hZ2VfZGlyID0gZC5leHBhbmQoJyR7TElDRU5TRV9ESVJFQ1RPUll9LyR7SU1BR0VfTkFNRX0nKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihsaWNlbnNlX2ltYWdlX2RpcikKLSAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKLSAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBmb3JtYXRfcGtnX2xpc3QKLQotICAgIHBrZ3MgPSBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcyhkKQotICAgIG91dHB1dCA9IGZvcm1hdF9wa2dfbGlzdChwa2dzKQotICAgIG9wZW4ob3MucGF0aC5qb2luKGxpY2Vuc2VfaW1hZ2VfZGlyLCAncGFja2FnZS5tYW5pZmVzdCcpLAotICAgICAgICAndysnKS53cml0ZShvdXRwdXQpCi19Ci0KLXB5dGhvbiB3cml0ZV9kZXBsb3lfbWFuaWZlc3QoKSB7Ci0gICAgbGljZW5zZV9kZXBsb3llZF9tYW5pZmVzdChkKQotfQotCi1weXRob24gbGljZW5zZV9jcmVhdGVfbWFuaWZlc3QoKSB7Ci0gICAgaW1wb3J0IG9lLnBhY2thZ2VkYXRhCi0gICAgZnJvbSBvZS5yb290ZnMgaW1wb3J0IGltYWdlX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzCi0KLSAgICBidWlsZF9pbWFnZXNfZnJvbV9mZWVkcyA9IGQuZ2V0VmFyKCdCVUlMRF9JTUFHRVNfRlJPTV9GRUVEUycpCi0gICAgaWYgYnVpbGRfaW1hZ2VzX2Zyb21fZmVlZHMgPT0gIjEiOgotICAgICAgICByZXR1cm4gMAotCi0gICAgcGtnX2RpYyA9IHt9Ci0gICAgZm9yIHBrZyBpbiBzb3J0ZWQoaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMoZCkpOgotICAgICAgICBwa2dfaW5mbyA9IG9zLnBhdGguam9pbihkLmdldFZhcignUEtHREFUQV9ESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUtcmV2ZXJzZScsIHBrZykKLSAgICAgICAgcGtnX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnJlYWRsaW5rKHBrZ19pbmZvKSkKLQotICAgICAgICBwa2dfZGljW3BrZ19uYW1lXSA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfcGtnZGF0YWZpbGUocGtnX2luZm8pCi0gICAgICAgIGlmIG5vdCAiTElDRU5TRSIgaW4gcGtnX2RpY1twa2dfbmFtZV0ua2V5cygpOgotICAgICAgICAgICAgcGtnX2xpY19uYW1lID0gIkxJQ0VOU0VfIiArIHBrZ19uYW1lCi0gICAgICAgICAgICBwa2dfZGljW3BrZ19uYW1lXVsiTElDRU5TRSJdID0gcGtnX2RpY1twa2dfbmFtZV1bcGtnX2xpY19uYW1lXQotCi0gICAgcm9vdGZzX2xpY2Vuc2VfbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0xJQ0VOU0VfRElSRUNUT1JZJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignSU1BR0VfTkFNRScpLCAnbGljZW5zZS5tYW5pZmVzdCcpCi0gICAgd3JpdGVfbGljZW5zZV9maWxlcyhkLCByb290ZnNfbGljZW5zZV9tYW5pZmVzdCwgcGtnX2RpYykKLX0KLQotZGVmIHdyaXRlX2xpY2Vuc2VfZmlsZXMoZCwgbGljZW5zZV9tYW5pZmVzdCwgcGtnX2RpYyk6Ci0gICAgaW1wb3J0IHJlCi0KLSAgICBiYWRfbGljZW5zZXMgPSAoZC5nZXRWYXIoIklOQ09NUEFUSUJMRV9MSUNFTlNFIikgb3IgIiIpLnNwbGl0KCkKLSAgICBiYWRfbGljZW5zZXMgPSBtYXAobGFtYmRhIGw6IGNhbm9uaWNhbF9saWNlbnNlKGQsIGwpLCBiYWRfbGljZW5zZXMpCi0gICAgYmFkX2xpY2Vuc2VzID0gZXhwYW5kX3dpbGRjYXJkX2xpY2Vuc2VzKGQsIGJhZF9saWNlbnNlcykKLQotICAgIHdpdGggb3BlbihsaWNlbnNlX21hbmlmZXN0LCAidyIpIGFzIGxpY2Vuc2VfZmlsZToKLSAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQocGtnX2RpYyk6Ci0gICAgICAgICAgICBpZiBiYWRfbGljZW5zZXM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAocGtnX2RpY1twa2ddWyJMSUNFTlNFIl0sIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSkgPSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBvZS5saWNlbnNlLm1hbmlmZXN0X2xpY2Vuc2VzKHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgYmFkX2xpY2Vuc2VzLCBjYW5vbmljYWxfbGljZW5zZSwgZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgb2UubGljZW5zZS5MaWNlbnNlRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgnJXM6ICVzJyAlIChkLmdldFZhcignUCcpLCBleGMpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0gPSByZS5zdWIoJ1t8JigpKl0nLCAnICcsIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKQotICAgICAgICAgICAgICAgIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSA9IHJlLnN1YignICAqJywgJyAnLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0pCi0gICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdID0gcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdLnNwbGl0KCkKLQotICAgICAgICAgICAgaWYgbm90ICJJTUFHRV9NQU5JRkVTVCIgaW4gcGtnX2RpY1twa2ddOgotICAgICAgICAgICAgICAgICMgUm9vdGZzIG1hbmlmZXN0Ci0gICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJQQUNLQUdFIE5BTUU6ICVzXG4iICUgcGtnKQotICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiUEFDS0FHRSBWRVJTSU9OOiAlc1xuIiAlIHBrZ19kaWNbcGtnXVsiUFYiXSkKLSAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIlJFQ0lQRSBOQU1FOiAlc1xuIiAlIHBrZ19kaWNbcGtnXVsiUE4iXSkKLSAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIkxJQ0VOU0U6ICVzXG5cbiIgJSBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSkKLQotICAgICAgICAgICAgICAgICMgSWYgdGhlIHBhY2thZ2UgZG9lc24ndCBjb250YWluIGFueSBmaWxlLCB0aGF0IGlzLCBpdHMgc2l6ZSBpcyAwLCB0aGUgbGljZW5zZQotICAgICAgICAgICAgICAgICMgaXNuJ3QgcmVsZXZhbnQgYXMgZmFyIGFzIHRoZSBmaW5hbCBpbWFnZSBpcyBjb25jZXJuZWQuIFNvIGRvaW5nIGxpY2Vuc2UgY2hlY2sKLSAgICAgICAgICAgICAgICAjIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlLCBza2lwIGl0LgotICAgICAgICAgICAgICAgIGlmIHBrZ19kaWNbcGtnXVsiUEtHU0laRV8lcyIgJSBwa2ddID09ICIwIjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBJbWFnZSBtYW5pZmVzdAotICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiUkVDSVBFIE5BTUU6ICVzXG4iICUgcGtnX2RpY1twa2ddWyJQTiJdKQotICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiVkVSU0lPTjogJXNcbiIgJSBwa2dfZGljW3BrZ11bIlBWIl0pCi0gICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJMSUNFTlNFOiAlc1xuIiAlIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKQotICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiRklMRVM6ICVzXG5cbiIgJSBwa2dfZGljW3BrZ11bIkZJTEVTIl0pCi0KLSAgICAgICAgICAgIGZvciBsaWMgaW4gcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdOgotICAgICAgICAgICAgICAgIGxpY19maWxlID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19kaWNbcGtnXVsiUE4iXSwgImdlbmVyaWNfJXMiICUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuc3ViKCdcKycsICcnLCBsaWMpKQotICAgICAgICAgICAgICAgICMgYWRkIGV4cGxpY2l0eSBhdm9pZCBvZiBDTE9TRUQgbGljZW5zZSBiZWNhdXNlIGlzbid0IGdlbmVyaWMKLSAgICAgICAgICAgICAgICBpZiBsaWMgPT0gIkNMT1NFRCI6Ci0gICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWNfZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIGxpY2Vuc2UgbGlzdGVkICVzIHdhcyBub3QgaW4gdGhlICJcIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlcyBjb2xsZWN0ZWQgZm9yIHJlY2lwZSAlcyIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobGljLCBwa2dfZGljW3BrZ11bIlBOIl0pKQotCi0gICAgIyBUd28gb3B0aW9ucyBoZXJlOgotICAgICMgLSBKdXN0IGNvcHkgdGhlIG1hbmlmZXN0Ci0gICAgIyAtIENvcHkgdGhlIG1hbmlmZXN0IGFuZCB0aGUgbGljZW5zZSBkaXJlY3RvcmllcwotICAgICMgV2l0aCBib3RoIG9wdGlvbnMgc2V0IHdlIHNlZSBhIC41IE0gaW5jcmVhc2UgaW4gY29yZS1pbWFnZS1taW5pbWFsCi0gICAgY29weV9saWNfbWFuaWZlc3QgPSBkLmdldFZhcignQ09QWV9MSUNfTUFOSUZFU1QnKQotICAgIGNvcHlfbGljX2RpcnMgPSBkLmdldFZhcignQ09QWV9MSUNfRElSUycpCi0gICAgaWYgY29weV9saWNfbWFuaWZlc3QgPT0gIjEiOgotICAgICAgICByb290ZnNfbGljZW5zZV9kaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0lNQUdFX1JPT1RGUycpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzcicsICdzaGFyZScsICdjb21tb24tbGljZW5zZXMnKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocm9vdGZzX2xpY2Vuc2VfZGlyKQotICAgICAgICByb290ZnNfbGljZW5zZV9tYW5pZmVzdCA9IG9zLnBhdGguam9pbihyb290ZnNfbGljZW5zZV9kaXIsCi0gICAgICAgICAgICAgICAgb3MucGF0aC5zcGxpdChsaWNlbnNlX21hbmlmZXN0KVsxXSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJvb3Rmc19saWNlbnNlX21hbmlmZXN0KToKLSAgICAgICAgICAgIG9zLmxpbmsobGljZW5zZV9tYW5pZmVzdCwgcm9vdGZzX2xpY2Vuc2VfbWFuaWZlc3QpCi0KLSAgICAgICAgaWYgY29weV9saWNfZGlycyA9PSAiMSI6Ci0gICAgICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChwa2dfZGljKToKLSAgICAgICAgICAgICAgICBwa2dfcm9vdGZzX2xpY2Vuc2VfZGlyID0gb3MucGF0aC5qb2luKHJvb3Rmc19saWNlbnNlX2RpciwgcGtnKQotICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihwa2dfcm9vdGZzX2xpY2Vuc2VfZGlyKQotICAgICAgICAgICAgICAgIHBrZ19saWNlbnNlX2RpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignTElDRU5TRV9ESVJFQ1RPUlknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJQTiJdKSAKLQotICAgICAgICAgICAgICAgIHBrZ19tYW5pZmVzdF9saWNlbnNlcyA9IFtjYW5vbmljYWxfbGljZW5zZShkLCBsaWMpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaWMgaW4gcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdXQotCi0gICAgICAgICAgICAgICAgbGljZW5zZXMgPSBvcy5saXN0ZGlyKHBrZ19saWNlbnNlX2RpcikKLSAgICAgICAgICAgICAgICBmb3IgbGljIGluIGxpY2Vuc2VzOgotICAgICAgICAgICAgICAgICAgICByb290ZnNfbGljZW5zZSA9IG9zLnBhdGguam9pbihyb290ZnNfbGljZW5zZV9kaXIsIGxpYykKLSAgICAgICAgICAgICAgICAgICAgcGtnX2xpY2Vuc2UgPSBvcy5wYXRoLmpvaW4ocGtnX2xpY2Vuc2VfZGlyLCBsaWMpCi0gICAgICAgICAgICAgICAgICAgIHBrZ19yb290ZnNfbGljZW5zZSA9IG9zLnBhdGguam9pbihwa2dfcm9vdGZzX2xpY2Vuc2VfZGlyLCBsaWMpCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goIl5nZW5lcmljXy4qJCIsIGxpYyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljX2xpYyA9IGNhbm9uaWNhbF9saWNlbnNlKGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLnNlYXJjaCgiXmdlbmVyaWNfKC4qKSQiLCBsaWMpLmdyb3VwKDEpKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBjb3B5IGdlbmVyaWMgbGljZW5zZSBpbnRvIHBhY2thZ2UgaWYgaXNuJ3QKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZGVjbGFyZWQgaW50byBMSUNFTlNFUyBvZiB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5zdWIoJ1wrJCcsICcnLCBnZW5lcmljX2xpYykgaW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmUuc3ViKCdcKycsICcnLCBsaWMpIGZvciBsaWMgaW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX21hbmlmZXN0X2xpY2Vuc2VzXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvZS5saWNlbnNlLmxpY2Vuc2Vfb2soZ2VuZXJpY19saWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9saWNlbnNlcykgPT0gRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJvb3Rmc19saWNlbnNlKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKHBrZ19saWNlbnNlLCByb290ZnNfbGljZW5zZSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBrZ19yb290ZnNfbGljZW5zZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmpvaW4oJy4uJywgbGljKSwgcGtnX3Jvb3Rmc19saWNlbnNlKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9lLmxpY2Vuc2UubGljZW5zZV9vayhjYW5vbmljYWxfbGljZW5zZShkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWMpLCBiYWRfbGljZW5zZXMpID09IEZhbHNlIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKHBrZ19yb290ZnNfbGljZW5zZSkpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsocGtnX2xpY2Vuc2UsIHBrZ19yb290ZnNfbGljZW5zZSkKLQotCi1kZWYgbGljZW5zZV9kZXBsb3llZF9tYW5pZmVzdChkKToKLSAgICAiIiIKLSAgICBXcml0ZSB0aGUgbGljZW5zZSBtYW5pZmVzdCBmb3IgdGhlIGRlcGxveWVkIHJlY2lwZXMuCi0gICAgVGhlIGRlcGxveWVkIHJlY2lwZXMgdXN1YWxseSBpbmNsdWRlcyB0aGUgYm9vdGxvYWRlcgotICAgIGFuZCBleHRyYSBmaWxlcyB0byBib290IHRoZSB0YXJnZXQuCi0gICAgIiIiCi0KLSAgICBkZXBfZGljID0ge30KLSAgICBtYW5fZGljID0ge30KLSAgICBsaWNfZGlyID0gZC5nZXRWYXIoIkxJQ0VOU0VfRElSRUNUT1JZIikKLQotICAgIGRlcF9kaWMgPSBnZXRfZGVwbG95ZWRfZGVwZW5kZW5jaWVzKGQpCi0gICAgZm9yIGRlcCBpbiBkZXBfZGljLmtleXMoKToKLSAgICAgICAgbWFuX2RpY1tkZXBdID0ge30KLSAgICAgICAgIyBJdCBpcyBuZWNlc3NhcnkgdG8gbWFyayB0aGlzIHdpbGwgYmUgdXNlZCBmb3IgaW1hZ2UgbWFuaWZlc3QKLSAgICAgICAgbWFuX2RpY1tkZXBdWyJJTUFHRV9NQU5JRkVTVCJdID0gVHJ1ZQotICAgICAgICBtYW5fZGljW2RlcF1bIlBOIl0gPSBkZXAKLSAgICAgICAgbWFuX2RpY1tkZXBdWyJGSUxFUyJdID0gXAotICAgICAgICAgICAgIiAiLmpvaW4oZ2V0X2RlcGxveWVkX2ZpbGVzKGRlcF9kaWNbZGVwXSkpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4obGljX2RpciwgZGVwLCAicmVjaXBlaW5mbyIpLCAiciIpIGFzIGY6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICAgICAgICAgIGtleSx2YWwgPSBsaW5lLnNwbGl0KCI6ICIsIDEpCi0gICAgICAgICAgICAgICAgbWFuX2RpY1tkZXBdW2tleV0gPSB2YWxbOi0xXQotCi0gICAgbGljX21hbmlmZXN0X2RpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignTElDRU5TRV9ESVJFQ1RPUlknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJykpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKGxpY19tYW5pZmVzdF9kaXIpCi0gICAgaW1hZ2VfbGljZW5zZV9tYW5pZmVzdCA9IG9zLnBhdGguam9pbihsaWNfbWFuaWZlc3RfZGlyLCAnaW1hZ2VfbGljZW5zZS5tYW5pZmVzdCcpCi0gICAgd3JpdGVfbGljZW5zZV9maWxlcyhkLCBpbWFnZV9saWNlbnNlX21hbmlmZXN0LCBtYW5fZGljKQotCi1kZWYgZ2V0X2RlcGxveWVkX2RlcGVuZGVuY2llcyhkKToKLSAgICAiIiIKLSAgICBHZXQgYWxsIHRoZSBkZXBsb3llZCBkZXBlbmRlbmNpZXMgb2YgYW4gaW1hZ2UKLSAgICAiIiIKLQotICAgIGRlcGxveSA9IHt9Ci0gICAgIyBHZXQgYWxsIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBjdXJyZW50IHRhc2sgKHJvb3RmcykuCi0gICAgIyBBbHNvIGdldCBFWFRSQV9JTUFHRURFUEVORFMgYmVjYXVzZSB0aGUgYm9vdGxvYWRlciBpcwotICAgICMgdXN1YWxseSBpbiB0aGlzIHZhciBhbmQgbm90IGxpc3RlZCBpbiByb290ZnMuCi0gICAgIyBBdCBsYXN0LCBnZXQgdGhlIGRlcGVuZGVuY2llcyBmcm9tIGJvb3QgY2xhc3NlcyBiZWNhdXNlCi0gICAgIyBpdCBtaWdodCBjb250YWluIHRoZSBib290bG9hZGVyLgotICAgIHRhc2tkYXRhID0gZC5nZXRWYXIoIkJCX1RBU0tERVBEQVRBIiwgRmFsc2UpCi0gICAgZGVwZW5kcyA9IGxpc3Qoc2V0KFtkZXBbMF0gZm9yIGRlcAotICAgICAgICAgICAgICAgICAgICBpbiBsaXN0KHRhc2tkYXRhLnZhbHVlcygpKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGVwWzBdLmVuZHN3aXRoKCItbmF0aXZlIildKSkKLSAgICBleHRyYV9kZXBlbmRzID0gZC5nZXRWYXIoIkVYVFJBX0lNQUdFREVQRU5EUyIpCi0gICAgYm9vdF9kZXBlbmRzID0gZ2V0X2Jvb3RfZGVwZW5kZW5jaWVzKGQpCi0gICAgZGVwZW5kcy5leHRlbmQoZXh0cmFfZGVwZW5kcy5zcGxpdCgpKQotICAgIGRlcGVuZHMuZXh0ZW5kKGJvb3RfZGVwZW5kcykKLSAgICBkZXBlbmRzID0gbGlzdChzZXQoZGVwZW5kcykpCi0KLSAgICAjIFRvIHZlcmlmeSB3aGF0IHdhcyBkZXBsb3llZCBpdCBjaGVja3MgdGhlIHJvb3RmcyBkZXBlbmRlbmNpZXMgYWdhaW5zdAotICAgICMgdGhlIFNTVEFURV9NQU5JRkVTVFMgZm9yICJkZXBsb3kiIHRhc2suCi0gICAgIyBUaGUgbWFuaWZlc3QgZmlsZSBuYW1lIGNvbnRhaW5zIHRoZSBhcmNoLiBCZWNhdXNlIHdlIGFyZSBub3QgcnVubmluZwotICAgICMgaW4gdGhlIHJlY2lwZSBjb250ZXh0IGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBldmVyeSBhcmNoIHVzZWQuCi0gICAgc3N0YXRlX21hbmlmZXN0X2RpciA9IGQuZ2V0VmFyKCJTU1RBVEVfTUFOSUZFU1RTIikKLSAgICBhcmNocyA9IGxpc3Qoc2V0KGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpKSkKLSAgICBmb3IgZGVwIGluIGRlcGVuZHM6Ci0gICAgICAgICMgU29tZSByZWNpcGVzIGhhdmUgYW4gYXJjaCBvbiB0aGVpciBvd24sIHNvIHdlIHRyeSB0aGF0IGZpcnN0LgotICAgICAgICBzcGVjaWFsX2FyY2ggPSBkLmdldFZhcigiUEFDS0FHRV9BUkNIX3BuLSVzIiAlIGRlcCkKLSAgICAgICAgaWYgc3BlY2lhbF9hcmNoOgotICAgICAgICAgICAgc3N0YXRlX21hbmlmZXN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3N0YXRlX21hbmlmZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0LSVzLSVzLmRlcGxveSIgJSAoc3BlY2lhbF9hcmNoLCBkZXApKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3N0YXRlX21hbmlmZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAgIGRlcGxveVtkZXBdID0gc3N0YXRlX21hbmlmZXN0X2ZpbGUKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgotICAgICAgICAgICAgc3N0YXRlX21hbmlmZXN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3N0YXRlX21hbmlmZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0LSVzLSVzLmRlcGxveSIgJSAoYXJjaCwgZGVwKSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNzdGF0ZV9tYW5pZmVzdF9maWxlKToKLSAgICAgICAgICAgICAgICBkZXBsb3lbZGVwXSA9IHNzdGF0ZV9tYW5pZmVzdF9maWxlCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgIHJldHVybiBkZXBsb3kKLWdldF9kZXBsb3llZF9kZXBlbmRlbmNpZXNbdmFyZGVwc2V4Y2x1ZGVdID0gIkJCX1RBU0tERVBEQVRBIgotCi1kZWYgZ2V0X2Jvb3RfZGVwZW5kZW5jaWVzKGQpOgotICAgICIiIgotICAgIFJldHVybiB0aGUgZGVwZW5kZW5jaWVzIGZyb20gYm9vdCB0YXNrcwotICAgICIiIgotCi0gICAgZGVwZW5kcyA9IFtdCi0gICAgdGFza2RlcGRhdGEgPSBkLmdldFZhcigiQkJfVEFTS0RFUERBVEEiLCBGYWxzZSkKLSAgICAjIE9ubHkgYm9vdGltZyBpbmNsdWRlcyB0aGUgZGVwZW5kcyBmbGFnCi0gICAgYm9vdF9kZXBlbmRzX3N0cmluZyA9IGQuZ2V0VmFyRmxhZygiZG9fYm9vdGltZyIsICJkZXBlbmRzIikgb3IgIiIKLSAgICBib290X2RlcGVuZHMgPSBbZGVwLnNwbGl0KCI6IilbMF0gZm9yIGRlcAotICAgICAgICAgICAgICAgIGluIGJvb3RfZGVwZW5kc19zdHJpbmcuc3BsaXQoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBkZXAuc3BsaXQoIjoiKVswXS5lbmRzd2l0aCgiLW5hdGl2ZSIpXQotICAgIGZvciBkZXAgaW4gYm9vdF9kZXBlbmRzOgotICAgICAgICBpbmZvX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkxJQ0VOU0VfRElSRUNUT1JZIiksCi0gICAgICAgICAgICAgICAgZGVwLCAicmVjaXBlaW5mbyIpCi0gICAgICAgICMgSWYgdGhlIHJlY2lwZSBhbmQgZGVwZW5kZW5jeSBuYW1lIGlzIHRoZSBzYW1lCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGluZm9fZmlsZSk6Ci0gICAgICAgICAgICBkZXBlbmRzLmFwcGVuZChkZXApCi0gICAgICAgICMgV2UgbmVlZCB0byBzZWFyY2ggZm9yIHRoZSBwcm92aWRlciBvZiB0aGUgZGVwZW5kZW5jeQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIHRhc2tkZXAgaW4gdGFza2RlcGRhdGEudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGUgZmlmdGggZmllbGQgY29udGFpbnMgd2hhdCB0aGUgdGFzayBwcm92aWRlcwotICAgICAgICAgICAgICAgIGlmIGRlcCBpbiB0YXNrZGVwWzRdOgotICAgICAgICAgICAgICAgICAgICBpbmZvX2ZpbGUgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIkxJQ0VOU0VfRElSRUNUT1JZIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza2RlcFswXSwgInJlY2lwZWluZm8iKQotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbmZvX2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcy5hcHBlbmQodGFza2RlcFswXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgcmV0dXJuIGRlcGVuZHMKLWdldF9ib290X2RlcGVuZGVuY2llc1t2YXJkZXBzZXhjbHVkZV0gPSAiQkJfVEFTS0RFUERBVEEiCi0KLWRlZiBnZXRfZGVwbG95ZWRfZmlsZXMobWFuX2ZpbGUpOgotICAgICIiIgotICAgIEdldCB0aGUgZmlsZXMgZGVwbG95ZWQgZnJvbSB0aGUgc3N0YXRlIG1hbmlmZXN0Ci0gICAgIiIiCi0KLSAgICBkZXBfZmlsZXMgPSBbXQotICAgIGV4Y2x1ZGVkX2ZpbGVzID0gW10KLSAgICB3aXRoIG9wZW4obWFuX2ZpbGUsICJyIikgYXMgbWFuaWZlc3Q6Ci0gICAgICAgIGFsbF9maWxlcyA9IG1hbmlmZXN0LnJlYWQoKQotICAgIGZvciBmIGluIGFsbF9maWxlcy5zcGxpdGxpbmVzKCk6Ci0gICAgICAgIGlmICgobm90IChvcy5wYXRoLmlzbGluayhmKSBvciBvcy5wYXRoLmlzZGlyKGYpKSkgYW5kCi0gICAgICAgICAgICAgICAgbm90IG9zLnBhdGguYmFzZW5hbWUoZikgaW4gZXhjbHVkZWRfZmlsZXMpOgotICAgICAgICAgICAgZGVwX2ZpbGVzLmFwcGVuZChvcy5wYXRoLmJhc2VuYW1lKGYpKQotICAgIHJldHVybiBkZXBfZmlsZXMKLQogcHl0aG9uIGRvX3BvcHVsYXRlX2xpYygpIHsKICAgICAiIiIKICAgICBQb3B1bGF0ZSBMSUNFTlNFX0RJUkVDVE9SWSB3aXRoIGxpY2Vuc2VzLgpAQCAtMzQwLDYgKzYyLDkgQEAKICAgICAgICAgIyBmaXJzdCBpbiBQQUNLQUdFUyB0byBiZSBzdXJlIHRoYXQgbm90aGluZyBlbHNlIGdldHMgTElDRU5TRV9GSUxFU19ESVJFQ1RPUlkKICAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgIiVzICVzIiAlIChwbl9saWMsIHBhY2thZ2VzKSkKICAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBwbl9saWMsIGZpbGVzKQorICAgIGZvciBwbiBpbiBwYWNrYWdlcy5zcGxpdCgpOgorICAgICAgICBpZiBwbiA9PSBwbl9saWM6CisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBycmVjb21tZW5kc19wbiA9IGQuZ2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4pCiAgICAgICAgIGlmIHJyZWNvbW1lbmRzX3BuOgogICAgICAgICAgICAgZC5zZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwbiwgIiVzICVzIiAlIChwbl9saWMsIHJyZWNvbW1lbmRzX3BuKSkKQEAgLTY3NCwxMSArMzk5LDcgQEAKIGRvX3BvcHVsYXRlX2xpY1tzc3RhdGUtaW5wdXRkaXJzXSA9ICIke0xJQ1NTVEFURURJUn0iCiBkb19wb3B1bGF0ZV9saWNbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7TElDRU5TRV9ESVJFQ1RPUll9LyIKIAotUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkRfcHJlcGVuZCA9ICJ3cml0ZV9wYWNrYWdlX21hbmlmZXN0OyBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgIgotZG9fcm9vdGZzW3JlY3JkZXB0YXNrXSArPSAiZG9fcG9wdWxhdGVfbGljIgotCi1JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EX3ByZXBlbmQgPSAid3JpdGVfZGVwbG95X21hbmlmZXN0OyAiCi1kb19pbWFnZVtyZWNyZGVwdGFza10gKz0gImRvX3BvcHVsYXRlX2xpYyIKK0lNQUdFX0NMQVNTRVNfYXBwZW5kID0gIiBsaWNlbnNlX2ltYWdlIgogCiBweXRob24gZG9fcG9wdWxhdGVfbGljX3NldHNjZW5lICgpIHsKICAgICBzc3RhdGVfc2V0c2NlbmUoZCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGZiYjc2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzCkBAIC0wLDAgKzEsMjM4IEBACitweXRob24gd3JpdGVfcGFja2FnZV9tYW5pZmVzdCgpIHsKKyAgICAjIEdldCBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcworICAgIGxpY2Vuc2VfaW1hZ2VfZGlyID0gZC5leHBhbmQoJyR7TElDRU5TRV9ESVJFQ1RPUll9LyR7SU1BR0VfTkFNRX0nKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihsaWNlbnNlX2ltYWdlX2RpcikKKyAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKKyAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBmb3JtYXRfcGtnX2xpc3QKKworICAgIHBrZ3MgPSBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcyhkKQorICAgIG91dHB1dCA9IGZvcm1hdF9wa2dfbGlzdChwa2dzKQorICAgIG9wZW4ob3MucGF0aC5qb2luKGxpY2Vuc2VfaW1hZ2VfZGlyLCAncGFja2FnZS5tYW5pZmVzdCcpLAorICAgICAgICAndysnKS53cml0ZShvdXRwdXQpCit9CisKK3B5dGhvbiBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKKyAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKKworICAgIGJ1aWxkX2ltYWdlc19mcm9tX2ZlZWRzID0gZC5nZXRWYXIoJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJykKKyAgICBpZiBidWlsZF9pbWFnZXNfZnJvbV9mZWVkcyA9PSAiMSI6CisgICAgICAgIHJldHVybiAwCisKKyAgICBwa2dfZGljID0ge30KKyAgICBmb3IgcGtnIGluIHNvcnRlZChpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcyhkKSk6CisgICAgICAgIHBrZ19pbmZvID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdQS0dEQVRBX0RJUicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVudGltZS1yZXZlcnNlJywgcGtnKQorICAgICAgICBwa2dfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucmVhZGxpbmsocGtnX2luZm8pKQorCisgICAgICAgIHBrZ19kaWNbcGtnX25hbWVdID0gb2UucGFja2FnZWRhdGEucmVhZF9wa2dkYXRhZmlsZShwa2dfaW5mbykKKyAgICAgICAgaWYgbm90ICJMSUNFTlNFIiBpbiBwa2dfZGljW3BrZ19uYW1lXS5rZXlzKCk6CisgICAgICAgICAgICBwa2dfbGljX25hbWUgPSAiTElDRU5TRV8iICsgcGtnX25hbWUKKyAgICAgICAgICAgIHBrZ19kaWNbcGtnX25hbWVdWyJMSUNFTlNFIl0gPSBwa2dfZGljW3BrZ19uYW1lXVtwa2dfbGljX25hbWVdCisKKyAgICByb290ZnNfbGljZW5zZV9tYW5pZmVzdCA9IG9zLnBhdGguam9pbihkLmdldFZhcignTElDRU5TRV9ESVJFQ1RPUlknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJyksICdsaWNlbnNlLm1hbmlmZXN0JykKKyAgICB3cml0ZV9saWNlbnNlX2ZpbGVzKGQsIHJvb3Rmc19saWNlbnNlX21hbmlmZXN0LCBwa2dfZGljKQorfQorCitkZWYgd3JpdGVfbGljZW5zZV9maWxlcyhkLCBsaWNlbnNlX21hbmlmZXN0LCBwa2dfZGljKToKKyAgICBpbXBvcnQgcmUKKworICAgIGJhZF9saWNlbnNlcyA9IChkLmdldFZhcigiSU5DT01QQVRJQkxFX0xJQ0VOU0UiKSBvciAiIikuc3BsaXQoKQorICAgIGJhZF9saWNlbnNlcyA9IG1hcChsYW1iZGEgbDogY2Fub25pY2FsX2xpY2Vuc2UoZCwgbCksIGJhZF9saWNlbnNlcykKKyAgICBiYWRfbGljZW5zZXMgPSBleHBhbmRfd2lsZGNhcmRfbGljZW5zZXMoZCwgYmFkX2xpY2Vuc2VzKQorCisgICAgd2l0aCBvcGVuKGxpY2Vuc2VfbWFuaWZlc3QsICJ3IikgYXMgbGljZW5zZV9maWxlOgorICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChwa2dfZGljKToKKyAgICAgICAgICAgIGlmIGJhZF9saWNlbnNlczoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIChwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSwgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdKSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9lLmxpY2Vuc2UubWFuaWZlc3RfbGljZW5zZXMocGtnX2RpY1twa2ddWyJMSUNFTlNFIl0sCisgICAgICAgICAgICAgICAgICAgICAgICBiYWRfbGljZW5zZXMsIGNhbm9uaWNhbF9saWNlbnNlLCBkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBvZS5saWNlbnNlLkxpY2Vuc2VFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCclczogJXMnICUgKGQuZ2V0VmFyKCdQJyksIGV4YykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSA9IHJlLnN1YignW3wmKCkqXScsICcgJywgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pCisgICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdID0gcmUuc3ViKCcgIConLCAnICcsIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSkKKyAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0gPSBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0uc3BsaXQoKQorCisgICAgICAgICAgICBpZiBub3QgIklNQUdFX01BTklGRVNUIiBpbiBwa2dfZGljW3BrZ106CisgICAgICAgICAgICAgICAgIyBSb290ZnMgbWFuaWZlc3QKKyAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIlBBQ0tBR0UgTkFNRTogJXNcbiIgJSBwa2cpCisgICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJQQUNLQUdFIFZFUlNJT046ICVzXG4iICUgcGtnX2RpY1twa2ddWyJQViJdKQorICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiUkVDSVBFIE5BTUU6ICVzXG4iICUgcGtnX2RpY1twa2ddWyJQTiJdKQorICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiTElDRU5TRTogJXNcblxuIiAlIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKQorCisgICAgICAgICAgICAgICAgIyBJZiB0aGUgcGFja2FnZSBkb2Vzbid0IGNvbnRhaW4gYW55IGZpbGUsIHRoYXQgaXMsIGl0cyBzaXplIGlzIDAsIHRoZSBsaWNlbnNlCisgICAgICAgICAgICAgICAgIyBpc24ndCByZWxldmFudCBhcyBmYXIgYXMgdGhlIGZpbmFsIGltYWdlIGlzIGNvbmNlcm5lZC4gU28gZG9pbmcgbGljZW5zZSBjaGVjaworICAgICAgICAgICAgICAgICMgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UsIHNraXAgaXQuCisgICAgICAgICAgICAgICAgaWYgcGtnX2RpY1twa2ddWyJQS0dTSVpFXyVzIiAlIHBrZ10gPT0gIjAiOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEltYWdlIG1hbmlmZXN0CisgICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJSRUNJUEUgTkFNRTogJXNcbiIgJSBwa2dfZGljW3BrZ11bIlBOIl0pCisgICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJWRVJTSU9OOiAlc1xuIiAlIHBrZ19kaWNbcGtnXVsiUFYiXSkKKyAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIkxJQ0VOU0U6ICVzXG4iICUgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pCisgICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJGSUxFUzogJXNcblxuIiAlIHBrZ19kaWNbcGtnXVsiRklMRVMiXSkKKworICAgICAgICAgICAgZm9yIGxpYyBpbiBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl06CisgICAgICAgICAgICAgICAgbGljX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0xJQ0VOU0VfRElSRUNUT1JZJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJQTiJdLCAiZ2VuZXJpY18lcyIgJSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5zdWIoJ1wrJywgJycsIGxpYykpCisgICAgICAgICAgICAgICAgIyBhZGQgZXhwbGljaXR5IGF2b2lkIG9mIENMT1NFRCBsaWNlbnNlIGJlY2F1c2UgaXNuJ3QgZ2VuZXJpYworICAgICAgICAgICAgICAgIGlmIGxpYyA9PSAiQ0xPU0VEIjoKKyAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxpY19maWxlKToKKyAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgbGljZW5zZSBsaXN0ZWQgJXMgd2FzIG5vdCBpbiB0aGUgIlwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2VzIGNvbGxlY3RlZCBmb3IgcmVjaXBlICVzIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChsaWMsIHBrZ19kaWNbcGtnXVsiUE4iXSkpCisKKyAgICAjIFR3byBvcHRpb25zIGhlcmU6CisgICAgIyAtIEp1c3QgY29weSB0aGUgbWFuaWZlc3QKKyAgICAjIC0gQ29weSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBsaWNlbnNlIGRpcmVjdG9yaWVzCisgICAgIyBXaXRoIGJvdGggb3B0aW9ucyBzZXQgd2Ugc2VlIGEgLjUgTSBpbmNyZWFzZSBpbiBjb3JlLWltYWdlLW1pbmltYWwKKyAgICBjb3B5X2xpY19tYW5pZmVzdCA9IGQuZ2V0VmFyKCdDT1BZX0xJQ19NQU5JRkVTVCcpCisgICAgY29weV9saWNfZGlycyA9IGQuZ2V0VmFyKCdDT1BZX0xJQ19ESVJTJykKKyAgICBpZiBjb3B5X2xpY19tYW5pZmVzdCA9PSAiMSI6CisgICAgICAgIHJvb3Rmc19saWNlbnNlX2RpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignSU1BR0VfUk9PVEZTJyksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNyJywgJ3NoYXJlJywgJ2NvbW1vbi1saWNlbnNlcycpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihyb290ZnNfbGljZW5zZV9kaXIpCisgICAgICAgIHJvb3Rmc19saWNlbnNlX21hbmlmZXN0ID0gb3MucGF0aC5qb2luKHJvb3Rmc19saWNlbnNlX2RpciwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0KGxpY2Vuc2VfbWFuaWZlc3QpWzFdKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocm9vdGZzX2xpY2Vuc2VfbWFuaWZlc3QpOgorICAgICAgICAgICAgb3MubGluayhsaWNlbnNlX21hbmlmZXN0LCByb290ZnNfbGljZW5zZV9tYW5pZmVzdCkKKworICAgICAgICBpZiBjb3B5X2xpY19kaXJzID09ICIxIjoKKyAgICAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHBrZ19kaWMpOgorICAgICAgICAgICAgICAgIHBrZ19yb290ZnNfbGljZW5zZV9kaXIgPSBvcy5wYXRoLmpvaW4ocm9vdGZzX2xpY2Vuc2VfZGlyLCBwa2cpCisgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBrZ19yb290ZnNfbGljZW5zZV9kaXIpCisgICAgICAgICAgICAgICAgcGtnX2xpY2Vuc2VfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIlBOIl0pIAorCisgICAgICAgICAgICAgICAgcGtnX21hbmlmZXN0X2xpY2Vuc2VzID0gW2Nhbm9uaWNhbF9saWNlbnNlKGQsIGxpYykgXAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpYyBpbiBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl1dCisKKyAgICAgICAgICAgICAgICBsaWNlbnNlcyA9IG9zLmxpc3RkaXIocGtnX2xpY2Vuc2VfZGlyKQorICAgICAgICAgICAgICAgIGZvciBsaWMgaW4gbGljZW5zZXM6CisgICAgICAgICAgICAgICAgICAgIHJvb3Rmc19saWNlbnNlID0gb3MucGF0aC5qb2luKHJvb3Rmc19saWNlbnNlX2RpciwgbGljKQorICAgICAgICAgICAgICAgICAgICBwa2dfbGljZW5zZSA9IG9zLnBhdGguam9pbihwa2dfbGljZW5zZV9kaXIsIGxpYykKKyAgICAgICAgICAgICAgICAgICAgcGtnX3Jvb3Rmc19saWNlbnNlID0gb3MucGF0aC5qb2luKHBrZ19yb290ZnNfbGljZW5zZV9kaXIsIGxpYykKKworICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaCgiXmdlbmVyaWNfLiokIiwgbGljKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNfbGljID0gY2Fub25pY2FsX2xpY2Vuc2UoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuc2VhcmNoKCJeZ2VuZXJpY18oLiopJCIsIGxpYykuZ3JvdXAoMSkpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRG8gbm90IGNvcHkgZ2VuZXJpYyBsaWNlbnNlIGludG8gcGFja2FnZSBpZiBpc24ndAorICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWNsYXJlZCBpbnRvIExJQ0VOU0VTIG9mIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLnN1YignXCskJywgJycsIGdlbmVyaWNfbGljKSBpbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZS5zdWIoJ1wrJywgJycsIGxpYykgZm9yIGxpYyBpbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfbWFuaWZlc3RfbGljZW5zZXNdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9lLmxpY2Vuc2UubGljZW5zZV9vayhnZW5lcmljX2xpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkX2xpY2Vuc2VzKSA9PSBGYWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocm9vdGZzX2xpY2Vuc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsocGtnX2xpY2Vuc2UsIHJvb3Rmc19saWNlbnNlKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnX3Jvb3Rmc19saWNlbnNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguam9pbignLi4nLCBsaWMpLCBwa2dfcm9vdGZzX2xpY2Vuc2UpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYyksIGJhZF9saWNlbnNlcykgPT0gRmFsc2Ugb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHMocGtnX3Jvb3Rmc19saWNlbnNlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAgICAgb3MubGluayhwa2dfbGljZW5zZSwgcGtnX3Jvb3Rmc19saWNlbnNlKQorCisKK2RlZiBsaWNlbnNlX2RlcGxveWVkX21hbmlmZXN0KGQpOgorICAgICIiIgorICAgIFdyaXRlIHRoZSBsaWNlbnNlIG1hbmlmZXN0IGZvciB0aGUgZGVwbG95ZWQgcmVjaXBlcy4KKyAgICBUaGUgZGVwbG95ZWQgcmVjaXBlcyB1c3VhbGx5IGluY2x1ZGVzIHRoZSBib290bG9hZGVyCisgICAgYW5kIGV4dHJhIGZpbGVzIHRvIGJvb3QgdGhlIHRhcmdldC4KKyAgICAiIiIKKworICAgIGRlcF9kaWMgPSB7fQorICAgIG1hbl9kaWMgPSB7fQorICAgIGxpY19kaXIgPSBkLmdldFZhcigiTElDRU5TRV9ESVJFQ1RPUlkiKQorCisgICAgZGVwX2RpYyA9IGdldF9kZXBsb3llZF9kZXBlbmRlbmNpZXMoZCkKKyAgICBmb3IgZGVwIGluIGRlcF9kaWMua2V5cygpOgorICAgICAgICBtYW5fZGljW2RlcF0gPSB7fQorICAgICAgICAjIEl0IGlzIG5lY2Vzc2FyeSB0byBtYXJrIHRoaXMgd2lsbCBiZSB1c2VkIGZvciBpbWFnZSBtYW5pZmVzdAorICAgICAgICBtYW5fZGljW2RlcF1bIklNQUdFX01BTklGRVNUIl0gPSBUcnVlCisgICAgICAgIG1hbl9kaWNbZGVwXVsiUE4iXSA9IGRlcAorICAgICAgICBtYW5fZGljW2RlcF1bIkZJTEVTIl0gPSBcCisgICAgICAgICAgICAiICIuam9pbihnZXRfZGVwbG95ZWRfZmlsZXMoZGVwX2RpY1tkZXBdKSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihsaWNfZGlyLCBkZXAsICJyZWNpcGVpbmZvIiksICJyIikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAga2V5LHZhbCA9IGxpbmUuc3BsaXQoIjogIiwgMSkKKyAgICAgICAgICAgICAgICBtYW5fZGljW2RlcF1ba2V5XSA9IHZhbFs6LTFdCisKKyAgICBsaWNfbWFuaWZlc3RfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0lNQUdFX05BTUUnKSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIobGljX21hbmlmZXN0X2RpcikKKyAgICBpbWFnZV9saWNlbnNlX21hbmlmZXN0ID0gb3MucGF0aC5qb2luKGxpY19tYW5pZmVzdF9kaXIsICdpbWFnZV9saWNlbnNlLm1hbmlmZXN0JykKKyAgICB3cml0ZV9saWNlbnNlX2ZpbGVzKGQsIGltYWdlX2xpY2Vuc2VfbWFuaWZlc3QsIG1hbl9kaWMpCisKK2RlZiBnZXRfZGVwbG95ZWRfZGVwZW5kZW5jaWVzKGQpOgorICAgICIiIgorICAgIEdldCBhbGwgdGhlIGRlcGxveWVkIGRlcGVuZGVuY2llcyBvZiBhbiBpbWFnZQorICAgICIiIgorCisgICAgZGVwbG95ID0ge30KKyAgICAjIEdldCBhbGwgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGN1cnJlbnQgdGFzayAocm9vdGZzKS4KKyAgICAjIEFsc28gZ2V0IEVYVFJBX0lNQUdFREVQRU5EUyBiZWNhdXNlIHRoZSBib290bG9hZGVyIGlzCisgICAgIyB1c3VhbGx5IGluIHRoaXMgdmFyIGFuZCBub3QgbGlzdGVkIGluIHJvb3Rmcy4KKyAgICAjIEF0IGxhc3QsIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZyb20gYm9vdCBjbGFzc2VzIGJlY2F1c2UKKyAgICAjIGl0IG1pZ2h0IGNvbnRhaW4gdGhlIGJvb3Rsb2FkZXIuCisgICAgdGFza2RhdGEgPSBkLmdldFZhcigiQkJfVEFTS0RFUERBVEEiLCBGYWxzZSkKKyAgICBkZXBlbmRzID0gbGlzdChzZXQoW2RlcFswXSBmb3IgZGVwCisgICAgICAgICAgICAgICAgICAgIGluIGxpc3QodGFza2RhdGEudmFsdWVzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkZXBbMF0uZW5kc3dpdGgoIi1uYXRpdmUiKV0pKQorCisgICAgIyBUbyB2ZXJpZnkgd2hhdCB3YXMgZGVwbG95ZWQgaXQgY2hlY2tzIHRoZSByb290ZnMgZGVwZW5kZW5jaWVzIGFnYWluc3QKKyAgICAjIHRoZSBTU1RBVEVfTUFOSUZFU1RTIGZvciAiZGVwbG95IiB0YXNrLgorICAgICMgVGhlIG1hbmlmZXN0IGZpbGUgbmFtZSBjb250YWlucyB0aGUgYXJjaC4gQmVjYXVzZSB3ZSBhcmUgbm90IHJ1bm5pbmcKKyAgICAjIGluIHRoZSByZWNpcGUgY29udGV4dCBpdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZXZlcnkgYXJjaCB1c2VkLgorICAgIHNzdGF0ZV9tYW5pZmVzdF9kaXIgPSBkLmdldFZhcigiU1NUQVRFX01BTklGRVNUUyIpCisgICAgYXJjaHMgPSBsaXN0KHNldChkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikuc3BsaXQoKSkpCisgICAgZm9yIGRlcCBpbiBkZXBlbmRzOgorICAgICAgICBmb3IgYXJjaCBpbiBhcmNoczoKKyAgICAgICAgICAgIHNzdGF0ZV9tYW5pZmVzdF9maWxlID0gb3MucGF0aC5qb2luKHNzdGF0ZV9tYW5pZmVzdF9kaXIsCisgICAgICAgICAgICAgICAgICAgICJtYW5pZmVzdC0lcy0lcy5kZXBsb3kiICUgKGFyY2gsIGRlcCkpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzc3RhdGVfbWFuaWZlc3RfZmlsZSk6CisgICAgICAgICAgICAgICAgZGVwbG95W2RlcF0gPSBzc3RhdGVfbWFuaWZlc3RfZmlsZQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICByZXR1cm4gZGVwbG95CitnZXRfZGVwbG95ZWRfZGVwZW5kZW5jaWVzW3ZhcmRlcHNleGNsdWRlXSA9ICJCQl9UQVNLREVQREFUQSIKKworZGVmIGdldF9kZXBsb3llZF9maWxlcyhtYW5fZmlsZSk6CisgICAgIiIiCisgICAgR2V0IHRoZSBmaWxlcyBkZXBsb3llZCBmcm9tIHRoZSBzc3RhdGUgbWFuaWZlc3QKKyAgICAiIiIKKworICAgIGRlcF9maWxlcyA9IFtdCisgICAgZXhjbHVkZWRfZmlsZXMgPSBbXQorICAgIHdpdGggb3BlbihtYW5fZmlsZSwgInIiKSBhcyBtYW5pZmVzdDoKKyAgICAgICAgYWxsX2ZpbGVzID0gbWFuaWZlc3QucmVhZCgpCisgICAgZm9yIGYgaW4gYWxsX2ZpbGVzLnNwbGl0bGluZXMoKToKKyAgICAgICAgaWYgKChub3QgKG9zLnBhdGguaXNsaW5rKGYpIG9yIG9zLnBhdGguaXNkaXIoZikpKSBhbmQKKyAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5iYXNlbmFtZShmKSBpbiBleGNsdWRlZF9maWxlcyk6CisgICAgICAgICAgICBkZXBfZmlsZXMuYXBwZW5kKG9zLnBhdGguYmFzZW5hbWUoZikpCisgICAgcmV0dXJuIGRlcF9maWxlcworCitST09URlNfUE9TVFBST0NFU1NfQ09NTUFORF9wcmVwZW5kID0gIndyaXRlX3BhY2thZ2VfbWFuaWZlc3Q7IGxpY2Vuc2VfY3JlYXRlX21hbmlmZXN0OyAiCitkb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wb3B1bGF0ZV9saWMiCisKK3B5dGhvbiBkb19wb3B1bGF0ZV9saWNfZGVwbG95KCkgeworICAgIGxpY2Vuc2VfZGVwbG95ZWRfbWFuaWZlc3QoZCkKK30KKworYWRkdGFzayBwb3B1bGF0ZV9saWNfZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbWFnZV9jb21wbGV0ZQorZG9fcG9wdWxhdGVfbGljX2RlcGxveVtyZWNyZGVwdGFza10gKz0gImRvX3BvcHVsYXRlX2xpYyBkb19kZXBsb3kiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCmluZGV4IDhmMzBlYjMuLmI0YzQxMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcwpAQCAtMSw3MCArMSw2MSBAQAotTERTT19UQ0xJQkMgPSAiZ2xpYmMiCi1MRFNPX1RDTElCQ19saWJjLW11c2wgPSAibXVzbCIKLUxEU09fVENMSUJDX2xpYmMtYmFyZW1ldGFsID0gIm11c2wiCitkZWYgZ2V0X211c2xfbG9hZGVyKGQpOgorICAgIGltcG9ydCByZQorICAgIGR5bmFtaWNfbG9hZGVyID0gTm9uZQogCi1saW51eGxvYWRlcl9nbGliYyAoKSB7Ci0JY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotCQlwb3dlcnBjIHwgbWljcm9ibGF6ZSApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQuc28uMSIKLQkJCTs7Ci0JCW1pcHNpc2EzMnI2ZWwgfCBtaXBzaXNhMzJyNiB8IG1pcHNpc2E2NHI2ZWwgfCBtaXBzaXNhNjRyNikKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1saW51eC1taXBzbjguc28uMSIKLQkJCTs7Ci0JCW1pcHMqICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC5zby4xIgotCQkJOzsKLQkJcG93ZXJwYzY0KQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkNjQuc28uMSIKLQkJCTs7Ci0JCXg4Nl82NCkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1saW51eC14ODYtNjQuc28uMiIKLQkJCTs7Ci0JCWkqODYgKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LnNvLjIiCi0JCQk7OwotCQlhcm0gKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LnNvLjMiCi0JCQk7OwotCQkqICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIvdW5rbm93bl9keW5hbWljX2xpbmtlciIKLQkJCTs7Ci0JZXNhYwotCWVjaG8gJGR5bmFtaWNfbG9hZGVyCi19CisgICAgdGFyZ2V0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCisgICAgaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJtaWNyb2JsYXplIik6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICcnLCAnZWwnICxkKX0uc28uMSIKKyAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgibWlwcyIpOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pcHMke0FCSUVYVEVOU0lPTn0ke01JUFNQS0dTRlhfQllURX0ke01JUFNQS0dTRlhfUjZ9JHtNSVBTUEtHU0ZYX0VORElBTn0ke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoID09ICJwb3dlcnBjIjoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjJHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAicG93ZXJwYzY0IjoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjNjQuc28uMSIKKyAgICBlbGlmIHRhcmdldGFyY2ggPT0gIng4Nl82NCI6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wteDg2XzY0LnNvLjEiCisgICAgZWxpZiByZS5zZWFyY2goImkuODYiLCB0YXJnZXRhcmNoKToKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1pMzg2LnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFybSIpOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFybSR7QVJNUEtHU0ZYX0VORElBTn0ke0FSTVBLR1NGWF9FQUJJfS5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJhYXJjaDY0Iik6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0uc28uMSIKKyAgICByZXR1cm4gZHluYW1pY19sb2FkZXIKIAotbGludXhsb2FkZXJfbXVzbCAoKSB7Ci0JY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotCQltaWNyb2JsYXplKiApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdlbCcgLGQpfS5zby4xIgotCQkJOzsKLQkJbWlwcyogKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWlwcyR7QUJJRVhURU5TSU9OfSR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9SNn0ke01JUFNQS0dTRlhfRU5ESUFOfSR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKLQkJCTs7Ci0JCXBvd2VycGMgKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcG93ZXJwYyR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKLQkJCTs7Ci0JCXBvd2VycGM2NCApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjNjQuc28uMSIKLQkJCTs7Ci0JCXg4Nl82NCApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC14ODZfNjQuc28uMSIKLQkJCTs7Ci0JCWkqODYgKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtaTM4Ni5zby4xIgotCQkJOzsKLQkJYXJtKiApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hcm0ke0FSTVBLR1NGWF9FTkRJQU59JHtBUk1QS0dTRlhfRUFCSX0uc28uMSIKLQkJCTs7Ci0JCWFhcmNoNjQqICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFhcmNoNjQke0FSTVBLR1NGWF9FTkRJQU5fNjR9LnNvLjEiCi0JCQk7OwotCQkqICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIvdW5rbm93bl9keW5hbWljX2xpbmtlciIKLQkJCTs7Ci0JZXNhYwotCWVjaG8gJGR5bmFtaWNfbG9hZGVyCi19CitkZWYgZ2V0X2dsaWJjX2xvYWRlcihkKToKKyAgICBpbXBvcnQgcmUKIAotbGludXhsb2FkZXIgKCkgewotCWxpbnV4bG9hZGVyXyR7TERTT19UQ0xJQkN9Ci19CisgICAgZHluYW1pY19sb2FkZXIgPSBOb25lCisgICAgdGFyZ2V0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCisgICAgaWYgdGFyZ2V0YXJjaCBpbiBbInBvd2VycGMiLCAibWljcm9ibGF6ZSJdOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaCBpbiBbIm1pcHNpc2EzMnI2ZWwiLCAibWlwc2lzYTMycjYiLCAibWlwc2lzYTY0cjZlbCIsICJtaXBzaXNhNjRyNiJdOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC1taXBzbjguc28uMSIKKyAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgibWlwcyIpOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAicG93ZXJwYzY0IjoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQ2NC5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAieDg2XzY0IjoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXgteDg2LTY0LnNvLjIiCisgICAgZWxpZiByZS5zZWFyY2goImkuODYiLCB0YXJnZXRhcmNoKToKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMiIKKyAgICBlbGlmIHRhcmdldGFyY2ggPT0gImFybSI6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LnNvLjMiCisgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFhcmNoNjQiKToKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXgtYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0uc28uMSIKKyAgICByZXR1cm4gZHluYW1pY19sb2FkZXIKKworZGVmIGdldF9saW51eGxvYWRlcihkKToKKyAgICBvdmVycmlkZXMgPSBkLmdldFZhcigiT1ZFUlJJREVTIikuc3BsaXQoIjoiKQorCisgICAgaWYgImxpYmMtYmFyZW1ldGFsIiBpbiBvdmVycmlkZXM6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpZiAibGliYy1tdXNsIiBpbiBvdmVycmlkZXM6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gZ2V0X211c2xfbG9hZGVyKGQpCisgICAgZWxzZToKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSBnZXRfZ2xpYmNfbG9hZGVyKGQpCisgICAgcmV0dXJuIGR5bmFtaWNfbG9hZGVyCisKK2dldF9saW51eGxvYWRlclt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X2xpbnV4bG9hZGVyKGQpfSIKK2dldF9tdXNsX2xvYWRlclt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X211c2xfbG9hZGVyKGQpfSIKK2dldF9nbGliY19sb2FkZXJbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9nbGliY19sb2FkZXIoZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MKaW5kZXggZDE2MjM3Yi4uNTBjMjU0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzCkBAIC0zLDMgKzMsMzUgQEAKICMgdGVuZHMgdG8gcHVsbCBpbiB0aGUgZW50aXJlIFhNTCBzdGFjayBhbmQgb3RoZXIgdG9vbHMsIHNvIGl0J3Mgbm90IGVuYWJsZWQKICMgYnkgZGVmYXVsdC4KIFBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhcGktZG9jdW1lbnRhdGlvbicsICdtYW5wYWdlcycsICcnLCBkKX0iCisKK2luaGVyaXQgcWVtdQorCisjIHVzdWFsbHkgbWFudWFsIGZpbGVzIGFyZSBwYWNrYWdlZCB0byAke1BOfS1kb2MgZXhjZXB0IG1hbi1wYWdlcworTUFOX1BLRyA/PSAiJHtQTn0tZG9jIgorCisjIG9ubHkgYWRkIG1hbi1kYiB0byBSREVQRU5EUyB3aGVuIG1hbnVhbCBmaWxlcyBhcmUgYnVpbHQgYW5kIGluc3RhbGxlZAorUkRFUEVORFNfJHtNQU5fUEtHfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWFucGFnZXMnLCAnbWFuLWRiJywgJycsIGQpfSIKKworcGtnX3Bvc3RpbnN0X2FwcGVuZF8ke01BTl9QS0d9ICgpIHsKKwkjIG9ubHkgdXBkYXRlIG1hbnVhbCBwYWdlIGluZGV4IGNhY2hlcyB3aGVuIG1hbnVhbCBmaWxlcyBhcmUgYnVpbHQgYW5kIGluc3RhbGxlZAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21hbnBhZ2VzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisJCQlpZiAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdxZW11LXVzZXJtb2RlJywgJ3RydWUnLCdmYWxzZScsIGQpfTsgdGhlbgorCQkJCXNlZCAiczpcKFxzXCkvOlwxJEQvOmciICREJHtzeXNjb25mZGlyfS9tYW5fZGIuY29uZiB8ICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L21hbmRiJyl9IC1DIC0gLXUgLXEgJEQke21hbmRpcn0KKwkJCQlta2RpciAtcCAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuCisJCQkJbXYgJEQke21hbmRpcn0vaW5kZXguZGIgJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbgorCQkJZWxzZQorCQkJCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290ICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfQorCQkJZmkKKwkJZWxzZQorCQkJbWFuZGIgLXEKKwkJZmkKKwlmaQorfQorCitwa2dfcG9zdHJtX2FwcGVuZF8ke01BTl9QS0d9ICgpIHsKKwkjIG9ubHkgdXBkYXRlIG1hbnVhbCBwYWdlIGluZGV4IGNhY2hlcyB3aGVuIG1hbnVhbCBmaWxlcyBhcmUgYnVpbHQgYW5kIGluc3RhbGxlZAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21hbnBhZ2VzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbWFuZGIgLXEKKwlmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKaW5kZXggMmQ3ZWU0Zi4uM2NiZGNmMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCkBAIC0xLDQgKzEsNCBAQAotaW5oZXJpdCBweXRob24zbmF0aXZlCitpbmhlcml0IHNpdGVpbmZvIHB5dGhvbjNuYXRpdmUKIAogREVQRU5EU19hcHBlbmQgPSAiIG1lc29uLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCiAKQEAgLTI0LDI1ICsyNCw1MiBAQAogICAgICAgICAgICAgICAtLWluZm9kaXIgJHtAbm9wcmVmaXgoJ2luZm9kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLXN5c2NvbmZkaXIgJHtzeXNjb25mZGlyfSBcCiAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpciAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSIKKyAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgIC1EY19hcmdzPScke0JVSUxEX0NQUEZMQUdTfSAke0JVSUxEX0NGTEFHU30nIFwKKyAgICAgICAgICAgICAgLURjX2xpbmtfYXJncz0nJHtCVUlMRF9MREZMQUdTfScgXAorICAgICAgICAgICAgICAtRGNwcF9hcmdzPScke0JVSUxEX0NQUEZMQUdTfSAke0JVSUxEX0NYWEZMQUdTfScgXAorICAgICAgICAgICAgICAtRGNwcF9saW5rX2FyZ3M9JyR7QlVJTERfTERGTEFHU30nIgogCiBNRVNPTl9UT09MQ0hBSU5fQVJHUyA9ICIke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIKIE1FU09OX0NfQVJHUyA9ICIke01FU09OX1RPT0xDSEFJTl9BUkdTfSAke0NGTEFHU30iCiBNRVNPTl9DUFBfQVJHUyA9ICIke01FU09OX1RPT0xDSEFJTl9BUkdTfSAke0NYWEZMQUdTfSIKIE1FU09OX0xJTktfQVJHUyA9ICIke01FU09OX1RPT0xDSEFJTl9BUkdTfSAke0xERkxBR1N9IgogCi0jIGJvdGggYXJlIHJlcXVpcmVkIGJ1dCBub3QgdXNlZCBieSBtZXNvbgotTUVTT05fSE9TVF9FTkRJQU4gPSAiYm9ndXMtZW5kaWFuIgotTUVTT05fVEFSR0VUX0VORElBTiA9ICJib2d1cy1lbmRpYW4iCi0KLUVYVFJBX09FTUVTT04gKz0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCitFWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAogTUVTT05fQ1JPU1NfRklMRSA9ICIiCiBNRVNPTl9DUk9TU19GSUxFX2NsYXNzLXRhcmdldCA9ICItLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi5jcm9zcyIKIE1FU09OX0NST1NTX0ZJTEVfY2xhc3MtbmF0aXZlc2RrID0gIi0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLmNyb3NzIgogCiBkZWYgbWVzb25fYXJyYXkodmFyLCBkKToKLSAgICByZXR1cm4gIicsICciLmpvaW4oZC5nZXRWYXIodmFyKS5zcGxpdCgpKS5qb2luKCgiJyIsICInIikpCisgICAgaXRlbXMgPSBkLmdldFZhcih2YXIpLnNwbGl0KCkKKyAgICByZXR1cm4gcmVwcihpdGVtc1swXSBpZiBsZW4oaXRlbXMpID09IDEgZWxzZSBpdGVtcykKKworIyBNYXAgb3VyIEFSQ0ggdmFsdWVzIHRvIHdoYXQgTWVzb24gZXhwZWN0czoKKyMgaHR0cDovL21lc29uYnVpbGQuY29tL1JlZmVyZW5jZS10YWJsZXMuaHRtbCNjcHUtZmFtaWxpZXMKK2RlZiBtZXNvbl9jcHVfZmFtaWx5KHZhciwgZCk6CisgICAgaW1wb3J0IHJlCisgICAgYXJjaCA9IGQuZ2V0VmFyKHZhcikKKyAgICBpZiBhcmNoID09ICdwb3dlcnBjJzoKKyAgICAgICAgcmV0dXJuICdwcGMnCisgICAgZWxpZiBhcmNoID09ICdwb3dlcnBjNjQnOgorICAgICAgICByZXR1cm4gJ3BwYzY0JworICAgIGVsaWYgYXJjaCA9PSAnbWlwc2VsJzoKKyAgICAgICAgcmV0dXJuICdtaXBzJworICAgIGVsaWYgcmUubWF0Y2gociJpWzMtNl04NiIsIGFyY2gpOgorICAgICAgICByZXR1cm4gIng4NiIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYXJjaAorCitkZWYgbWVzb25fZW5kaWFuKHByZWZpeCwgZCk6CisgICAgYXJjaCwgb3MgPSBkLmdldFZhcihwcmVmaXggKyAiX0FSQ0giKSwgZC5nZXRWYXIocHJlZml4ICsgIl9PUyIpCisgICAgc2l0ZWRhdGEgPSBzaXRlaW5mb19kYXRhX2Zvcl9tYWNoaW5lKGFyY2gsIG9zLCBkKQorICAgIGlmICJlbmRpYW4tbGl0dGxlIiBpbiBzaXRlZGF0YToKKyAgICAgICAgcmV0dXJuICJsaXR0bGUiCisgICAgZWxpZiAiZW5kaWFuLWJpZyIgaW4gc2l0ZWRhdGE6CisgICAgICAgIHJldHVybiAiYmlnIgorICAgIGVsc2U6CisgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgZGV0ZXJtaW5lIGVuZGlhbmlzbSBmb3IgJXMtJXMiICUgKGFyY2gsIG9zKSkKIAogYWRkdGFzayB3cml0ZV9jb25maWcgYmVmb3JlIGRvX2NvbmZpZ3VyZQogZG9fd3JpdGVfY29uZmlnW3ZhcmRlcHNdICs9ICJNRVNPTl9DX0FSR1MgTUVTT05fQ1BQX0FSR1MgTUVTT05fTElOS19BUkdTIENDIENYWCBMRCBBUiBOTSBTVFJJUCBSRUFERUxGIgpAQCAtNTAsNjggKzc3LDY5IEBACiAgICAgIyBUaGlzIG5lZWRzIHRvIGJlIFB5IHRvIHNwbGl0IHRoZSBhcmdzIGludG8gc2luZ2xlLWVsZW1lbnQgbGlzdHMKICAgICBjYXQgPiR7V09SS0RJUn0vbWVzb24uY3Jvc3MgPDxFT0YKIFtiaW5hcmllc10KLWMgPSBbJHtAbWVzb25fYXJyYXkoJ0NDJywgZCl9XQotY3BwID0gWyR7QG1lc29uX2FycmF5KCdDWFgnLCBkKX1dCi1hciA9IFske0BtZXNvbl9hcnJheSgnQVInLCBkKX1dCi1ubSA9IFske0BtZXNvbl9hcnJheSgnTk0nLCBkKX1dCi1sZCA9IFske0BtZXNvbl9hcnJheSgnTEQnLCBkKX1dCi1zdHJpcCA9IFske0BtZXNvbl9hcnJheSgnU1RSSVAnLCBkKX1dCi1yZWFkZWxmID0gWyR7QG1lc29uX2FycmF5KCdSRUFERUxGJywgZCl9XQorYyA9ICR7QG1lc29uX2FycmF5KCdDQycsIGQpfQorY3BwID0gJHtAbWVzb25fYXJyYXkoJ0NYWCcsIGQpfQorYXIgPSAke0BtZXNvbl9hcnJheSgnQVInLCBkKX0KK25tID0gJHtAbWVzb25fYXJyYXkoJ05NJywgZCl9CitsZCA9ICR7QG1lc29uX2FycmF5KCdMRCcsIGQpfQorc3RyaXAgPSAke0BtZXNvbl9hcnJheSgnU1RSSVAnLCBkKX0KK3JlYWRlbGYgPSAke0BtZXNvbl9hcnJheSgnUkVBREVMRicsIGQpfQogcGtnY29uZmlnID0gJ3BrZy1jb25maWcnCiAKIFtwcm9wZXJ0aWVzXQogbmVlZHNfZXhlX3dyYXBwZXIgPSB0cnVlCi1jX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0NfQVJHUycsIGQpfV0KLWNfbGlua19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9MSU5LX0FSR1MnLCBkKX1dCi1jcHBfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ1BQX0FSR1MnLCBkKX1dCi1jcHBfbGlua19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9MSU5LX0FSR1MnLCBkKX1dCitjX2FyZ3MgPSAke0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9CitjX2xpbmtfYXJncyA9ICR7QG1lc29uX2FycmF5KCdNRVNPTl9MSU5LX0FSR1MnLCBkKX0KK2NwcF9hcmdzID0gJHtAbWVzb25fYXJyYXkoJ01FU09OX0NQUF9BUkdTJywgZCl9CitjcHBfbGlua19hcmdzID0gJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfQogZ3RrZG9jX2V4ZV93cmFwcGVyID0gJyR7Qn0vZ3RrZG9jLXFlbXV3cmFwcGVyJwogCiBbaG9zdF9tYWNoaW5lXQogc3lzdGVtID0gJyR7SE9TVF9PU30nCi1jcHVfZmFtaWx5ID0gJyR7SE9TVF9BUkNIfScKK2NwdV9mYW1pbHkgPSAnJHtAbWVzb25fY3B1X2ZhbWlseSgnSE9TVF9BUkNIJywgZCl9JwogY3B1ID0gJyR7SE9TVF9BUkNIfScKLWVuZGlhbiA9ICcke01FU09OX0hPU1RfRU5ESUFOfScKK2VuZGlhbiA9ICcke0BtZXNvbl9lbmRpYW4oJ0hPU1QnLCBkKX0nCiAKIFt0YXJnZXRfbWFjaGluZV0KIHN5c3RlbSA9ICcke1RBUkdFVF9PU30nCi1jcHVfZmFtaWx5ID0gJyR7VEFSR0VUX0FSQ0h9JworY3B1X2ZhbWlseSA9ICcke0BtZXNvbl9jcHVfZmFtaWx5KCdUQVJHRVRfQVJDSCcsIGQpfScKIGNwdSA9ICcke1RBUkdFVF9BUkNIfScKLWVuZGlhbiA9ICcke01FU09OX1RBUkdFVF9FTkRJQU59JworZW5kaWFuID0gJyR7QG1lc29uX2VuZGlhbignVEFSR0VUJywgZCl9JwogRU9GCiB9CiAKIENPTkZJR1VSRV9GSUxFUyA9ICJtZXNvbi5idWlsZCIKIAogbWVzb25fZG9fY29uZmlndXJlKCkgeworICAgICMgV29yayBhcm91bmQgIk1lc29uIGZhaWxzIGlmIC90bXAgaXMgbW91bnRlZCB3aXRoIG5vZXhlYyAjMjk3MiIKKyAgICBta2RpciAtcCAiJHtCfS9tZXNvbi1wcml2YXRlL3RtcCIKKyAgICBleHBvcnQgVE1QRElSPSIke0J9L21lc29uLXByaXZhdGUvdG1wIgorICAgIGJibm90ZSBFeGVjdXRpbmcgbWVzb24gJHtFWFRSQV9PRU1FU09OfS4uLgogICAgIGlmICEgbWVzb24gJHtNRVNPTk9QVFN9ICIke01FU09OX1NPVVJDRVBBVEh9IiAiJHtCfSIgJHtNRVNPTl9DUk9TU19GSUxFfSAke0VYVFJBX09FTUVTT059OyB0aGVuCi0gICAgICAgIGNhdCAke0J9L21lc29uLWxvZ3MvbWVzb24tbG9nLnR4dAogICAgICAgICBiYmZhdGFsX2xvZyBtZXNvbiBmYWlsZWQKICAgICBmaQogfQogCi1tZXNvbl9kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CitvdmVycmlkZV9uYXRpdmVfdG9vbHMoKSB7CiAgICAgIyBTZXQgdGhlc2Ugc28gdGhhdCBtZXNvbiB1c2VzIHRoZSBuYXRpdmUgdG9vbHMgZm9yIGl0cyBidWlsZCBzYW5pdHkgdGVzdHMsCiAgICAgIyB3aGljaCByZXF1aXJlIGV4ZWN1dGFibGVzIHRvIGJlIHJ1bm5hYmxlLiBUaGUgY3Jvc3MgZmlsZSB3aWxsIHN0aWxsCi0gICAgIyBvdmVycmlkZSB0aGVzZSBmb3IgdGhlIHRhcmdldCBidWlsZC4gTm90ZSB0aGF0IHdlIGRvICpub3QqIHNldCBDRkxBR1MsCi0gICAgIyBMREZMQUdTLCBldGMuIGFzIHRoZXkgd2lsbCBiZSBzbHVycGVkIGluIGJ5IG1lc29uIGFuZCBhcHBsaWVkIHRvIHRoZQotICAgICMgdGFyZ2V0IGJ1aWxkLCBjYXVzaW5nIGVycm9ycy4KKyAgICAjIG92ZXJyaWRlIHRoZXNlIGZvciB0aGUgdGFyZ2V0IGJ1aWxkLgogICAgIGV4cG9ydCBDQz0iJHtCVUlMRF9DQ30iCiAgICAgZXhwb3J0IENYWD0iJHtCVUlMRF9DWFh9IgogICAgIGV4cG9ydCBMRD0iJHtCVUlMRF9MRH0iCiAgICAgZXhwb3J0IEFSPSIke0JVSUxEX0FSfSIKKyAgICAjIFRoZXNlIGNvbnRhaW4gKnRhcmdldCogZmxhZ3MgYnV0IHdpbGwgYmUgdXNlZCBhcyAqbmF0aXZlKiBmbGFncy4gIFRoZQorICAgICMgY29ycmVjdCBuYXRpdmUgZmxhZ3Mgd2lsbCBiZSBwYXNzZWQgdmlhIC1EY19hcmdzIGFuZCBzbyBvbiwgdW5zZXQgdGhlbSBzbworICAgICMgdGhleSBkb24ndCBpbnRlcmZlcmUgd2l0aCB0b29scyBpbnZva2VkIGJ5IE1lc29uIChzdWNoIGFzIGctaXItc2Nhbm5lcikKKyAgICB1bnNldCBDUFBGTEFHUyBDRkxBR1MgQ1hYRkxBR1MgTERGTEFHUworfQorCittZXNvbl9kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgb3ZlcnJpZGVfbmF0aXZlX3Rvb2xzCiB9CiAKIG1lc29uX2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICAjIFNldCB0aGVzZSBzbyB0aGF0IG1lc29uIHVzZXMgdGhlIG5hdGl2ZSB0b29scyBmb3IgaXRzIGJ1aWxkIHNhbml0eSB0ZXN0cywKLSAgICAjIHdoaWNoIHJlcXVpcmUgZXhlY3V0YWJsZXMgdG8gYmUgcnVubmFibGUuIFRoZSBjcm9zcyBmaWxlIHdpbGwgc3RpbGwKLSAgICAjIG92ZXJyaWRlIHRoZXNlIGZvciB0aGUgbmF0aXZlc2RrIGJ1aWxkLiBOb3RlIHRoYXQgd2UgZG8gKm5vdCogc2V0IENGTEFHUywKLSAgICAjIExERkxBR1MsIGV0Yy4gYXMgdGhleSB3aWxsIGJlIHNsdXJwZWQgaW4gYnkgbWVzb24gYW5kIGFwcGxpZWQgdG8gdGhlCi0gICAgIyBuYXRpdmVzZGsgYnVpbGQsIGNhdXNpbmcgZXJyb3JzLgotICAgIGV4cG9ydCBDQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IENYWD0iJHtCVUlMRF9DWFh9IgotICAgIGV4cG9ydCBMRD0iJHtCVUlMRF9MRH0iCi0gICAgZXhwb3J0IEFSPSIke0JVSUxEX0FSfSIKKyAgICBvdmVycmlkZV9uYXRpdmVfdG9vbHMKIH0KIAogbWVzb25fZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewpAQCAtMTIwLDExICsxNDgsMTEgQEAKIAogZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbKFxkKykvKFxkKylcXVxzKyIKIG1lc29uX2RvX2NvbXBpbGUoKSB7Ci0gICAgbmluamEgJHtQQVJBTExFTF9NQUtFfQorICAgIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KIH0KIAogbWVzb25fZG9faW5zdGFsbCgpIHsKLSAgICBERVNURElSPScke0R9JyBuaW5qYSAke1BBUkFMTEVMX01BS0VJTlNUfSBpbnN0YWxsCisgICAgREVTVERJUj0nJHtEfScgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFSU5TVH0gaW5zdGFsbAogfQogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcwppbmRleCAwZGYxNTgzLi42YzdiODY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzCkBAIC01Myw1ICs1Myw1IEBACiAgICAgICAgICAgICBwb3N0cm0gKz0gZC5nZXRWYXIoJ21pbWVfcG9zdHJtJykKICAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZywgcG9zdHJtKQogICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIHNoYXJlZC1taW1lLWluZm8tZGF0YSBkZXBlbmRlbmN5IHRvICVzIiAlIHBrZykKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiIHNoYXJlZC1taW1lLWluZm8tZGF0YSIpCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBrZywgIiAiICsgZC5nZXRWYXIoJ01MUFJFRklYJykrInNoYXJlZC1taW1lLWluZm8tZGF0YSIpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwppbmRleCA1MTljMWE1Li42YzY0OTlhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKQEAgLTExLDggKzExLDEyIEBACiAgICAgIyBUaGVyZSBzaG91bGQgb25seSBiZSBvbmUga2VybmVsIGluIG11bHRpbGliIGNvbmZpZ3MKICAgICAjIFdlIGFsc28gc2tpcCBtdWx0aWxpYiBzZXR1cCBmb3IgbW9kdWxlIHBhY2thZ2VzLgogICAgIHByb3ZpZGVzID0gKGUuZGF0YS5nZXRWYXIoIlBST1ZJREVTIikgb3IgIiIpLnNwbGl0KCkKLSAgICBpZiAidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ21vZHVsZS1iYXNlJywgZS5kYXRhKSBvciAibWFrZS1tb2Qtc2NyaXB0cyIgaW4gZS5kYXRhLmdldFZhcigiUE4iKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiV2Ugc2hvdWxkbid0IGhhdmUgbXVsdGlsaWIgdmFyaWFudHMgZm9yIHRoZSBrZXJuZWwiKQorICAgIG5vbl9tbF9yZWNpcGVzID0gZC5nZXRWYXIoJ05PTl9NVUxUSUxJQl9SRUNJUEVTJykuc3BsaXQoKQorICAgIGJwbiA9IGUuZGF0YS5nZXRWYXIoIkJQTiIpCisgICAgaWYgInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcyBvciBcCisgICAgICAgICAgICBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdtb2R1bGUtYmFzZScsIGUuZGF0YSkgb3IgXAorICAgICAgICAgICAgYnBuIGluIG5vbl9tbF9yZWNpcGVzOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJXZSBzaG91bGRuJ3QgaGF2ZSBtdWx0aWxpYiB2YXJpYW50cyBmb3IgJXMiICUgYnBuKQogCiAgICAgc2F2ZV92YXJfbmFtZT1lLmRhdGEuZ2V0VmFyKCJNVUxUSUxJQl9TQVZFX1ZBUk5BTUUiKSBvciAiIgogICAgIGZvciBuYW1lIGluIHNhdmVfdmFyX25hbWUuc3BsaXQoKToKQEAgLTM1LDYgKzM5LDEwIEBACiAgICAgICAgIHJldHVybgogCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBlLmRhdGEpOgorICAgICAgICAjIE11bHRpbGliIGNyb3NzLWNhbmRpYW4gc2hvdWxkIHVzZSB0aGUgc2FtZSBuYXRpdmVzZGsgc3lzcm9vdCB3aXRob3V0IE1MUFJFRklYCisgICAgICAgIGUuZGF0YS5zZXRWYXIoIlJFQ0lQRV9TWVNST09UIiwgIiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QiKQorICAgICAgICBlLmRhdGEuc2V0VmFyKCJTVEFHSU5HX0RJUl9UQVJHRVQiLCAiJHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdCIpCisgICAgICAgIGUuZGF0YS5zZXRWYXIoIlNUQUdJTkdfRElSX0hPU1QiLCAiJHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdCIpCiAgICAgICAgIGUuZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKICAgICAgICAgb3ZlcnJpZGUgPSAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudAogICAgICAgICBlLmRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBlLmRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyBvdmVycmlkZSkKQEAgLTQ2LDEwICs1NCwxMCBAQAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGUuZGF0YSkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3NzZGsnLCBlLmRhdGEpOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJXZSBjYW4ndCBleHRlbmQgbmF0aXZlc2RrIHJlY2lwZXMiKQogCi0gICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGUuZGF0YSkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZ3JvdXAnLCBlLmRhdGEpOgorICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBlLmRhdGEpIGFuZCBub3QgZC5nZXRWYXIoJ01VTFRJTElCX1ZBUklBTlRTJykgXAorICAgICAgICBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGUuZGF0YSk6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkRvbid0IGV4dGVuZCBhbGxhcmNoIHJlY2lwZXMgd2hpY2ggYXJlIG5vdCBwYWNrYWdlZ3JvdXBzIikKIAotCiAgICAgIyBFeHBhbmQgdGhpcyBzaW5jZSB0aGlzIHdvbid0IHdvcmsgY29ycmVjdGx5IG9uY2Ugd2Ugc2V0IGEgbXVsdGlsaWIgaW50byBwbGFjZQogICAgIGUuZGF0YS5zZXRWYXIoIkFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTIiwgZS5kYXRhLmdldFZhcigiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiKSkKICAKQEAgLTY1LDEyICs3MywxMSBAQAogICAgIGUuZGF0YS5zZXRWYXIoIlBOIiwgdmFyaWFudCArICItIiArIGUuZGF0YS5nZXRWYXIoIlBOIiwgRmFsc2UpKQogICAgIGUuZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIGUuZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArIG92ZXJyaWRlKQogCi0gICAgIyBFeHBhbmQgdGhlIFdISVRFTElTVHMgd2l0aCBtdWx0aWxpYiBwcmVmaXgKLSAgICBmb3Igd2hpdGVsaXN0IGluIFsiV0hJVEVMSVNUX0dQTC0zLjAiLCAiTEdQTHYyX1dISVRFTElTVF9HUEwtMy4wIl06Ci0gICAgICAgIHBrZ3MgPSBlLmRhdGEuZ2V0VmFyKHdoaXRlbGlzdCkKLSAgICAgICAgZm9yIHBrZyBpbiBwa2dzLnNwbGl0KCk6Ci0gICAgICAgICAgICBwa2dzICs9ICIgIiArIHZhcmlhbnQgKyAiLSIgKyBwa2cKLSAgICAgICAgZS5kYXRhLnNldFZhcih3aGl0ZWxpc3QsIHBrZ3MpCisgICAgIyBFeHBhbmQgV0hJVEVMSVNUX0dQTC0zLjAgd2l0aCBtdWx0aWxpYiBwcmVmaXgKKyAgICBwa2dzID0gZS5kYXRhLmdldFZhcigiV0hJVEVMSVNUX0dQTC0zLjAiKQorICAgIGZvciBwa2cgaW4gcGtncy5zcGxpdCgpOgorICAgICAgICBwa2dzICs9ICIgIiArIHZhcmlhbnQgKyAiLSIgKyBwa2cKKyAgICBlLmRhdGEuc2V0VmFyKCJXSElURUxJU1RfR1BMLTMuMCIsIHBrZ3MpCiAKICAgICAjIERFRkFVTFRUVU5FIGNhbiBjaGFuZ2UgVEFSR0VUX0FSQ0ggb3ZlcnJpZGUgc28gZXhwYW5kIHRoaXMgbm93IGJlZm9yZSB1cGRhdGVfZGF0YQogICAgIG5ld3R1bmUgPSBlLmRhdGEuZ2V0VmFyKCJERUZBVUxUVFVORV8iICsgInZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudCwgRmFsc2UpCkBAIC0xMTcsNiArMTI0LDcgQEAKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJJTklUU0NSSVBUX1BBQ0tBR0VTIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJVU0VSQUREX1BBQ0tBR0VTIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJTWVNURU1EX1BBQ0tBR0VTIikKKyAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJVUERBVEVSQ1BOIikKIH0KIAogUEFDS0FHRUZVTkNTX2FwcGVuZCA9ICIgZG9fcGFja2FnZV9xYV9tdWx0aWxpYiIKQEAgLTEzMSw3ICsxMzksOCBAQAogICAgICAgICAgICAgICAgIGkgPSBpW2xlbigndmlydHVhbC8nKTpdCiAgICAgICAgICAgICBpZiAobm90IGkuc3RhcnRzd2l0aCgna2VybmVsLW1vZHVsZScpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgobWxwcmVmaXgpKSBhbmQgXAogICAgICAgICAgICAgICAgIChub3QgJ2Nyb3NzLWNhbmFkaWFuJyBpbiBpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKSkgYW5kIFwKLSAgICAgICAgICAgICAgICAobm90IGkuc3RhcnRzd2l0aCgicnRsZCIpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoJ2tlcm5lbC12bWxpbnV4JykpOgorICAgICAgICAgICAgICAgIChub3QgaS5zdGFydHN3aXRoKCJydGxkIikpIGFuZCAobm90IGkuc3RhcnRzd2l0aCgna2VybmVsLXZtbGludXgnKSkgXAorICAgICAgICAgICAgICAgIGFuZCAobm90IGkuc3RhcnRzd2l0aCgia2VybmVsLWltYWdlIikpOgogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGkpCiAgICAgICAgIGlmIGxlbihjYW5kaWRhdGVzKSA+IDA6CiAgICAgICAgICAgICBtc2cgPSAiJXMgcGFja2FnZSAlcyAtIHN1c3BpY2lvdXMgdmFsdWVzICclcycgaW4gJXMiIFwKQEAgLTE0Miw2ICsxNTEsMTAgQEAKICAgICBpZiBub3QgbWw6CiAgICAgICAgIHJldHVybgogCisgICAgIyBleGNlcHRpb24gZm9yICR7TUxQUkVGSVh9dGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teQorICAgIGlmICd0YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15JyBpbiBkLmdldFZhcignUE4nKToKKyAgICAgICAgcmV0dXJuCisKICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICBjaGVja19tbHByZWZpeChwa2csICdSREVQRU5EUycsIG1sKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcwppbmRleCBkMmVjMWFkLi42NDljYzA5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcwpAQCAtMTY0LDEwICsxNjQsMTEgQEAKICAgICBpZiB2YXJpYW50OgogICAgICAgICByZXR1cm4KIAorICAgIG5vbl9tbF9yZWNpcGVzID0gZC5nZXRWYXIoJ05PTl9NVUxUSUxJQl9SRUNJUEVTJykuc3BsaXQoKQorCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZS5kYXRhKSBvciBcCiAgICAgICAgICAgICBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdtb2R1bGUtYmFzZScsIGUuZGF0YSkgb3IgXAotICAgICAgICAgICAgKGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBlLmRhdGEpIGFuZFwKLSAgICAgICAgICAgICBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZS5kYXRhKSk6CisgICAgICAgICAgICBkLmdldFZhcignQlBOJykgaW4gbm9uX21sX3JlY2lwZXM6CiAgICAgICAgICAgICB2YXJpYW50cyA9IChlLmRhdGEuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpIG9yICIiKS5zcGxpdCgpCiAKICAgICAgICAgICAgIGltcG9ydCBvZS5jbGFzc2V4dGVuZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfc2NyaXB0LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9zY3JpcHQuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWM5ZmNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfc2NyaXB0LmJiY2xhc3MKQEAgLTAsMCArMSwzMiBAQAorIworIyBSZWNpcGUgbmVlZHMgdG8gc2V0IE1VTFRJTElCX1NDUklQVFMgaW4gdGhlIGZvcm0gPHBrZ25hbWU+OjxzY3JpcHRuYW1lPiwgZS5nLgorIyBNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vZmlsZTEgJHtQTn06JHtiYXNlX2JpbmRpcn0vZmlsZTIiCisjIHRvIGluZGljYXRlIHdoaWNoIHNjcmlwdCBmaWxlcyB0byBwcm9jZXNzIGZyb20gd2hpY2ggcGFja2FnZXMuCisjCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitNVUxUSUxJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJywxKS5zcGxpdCgnLycpWy0xXX0iCisKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAibXVsdGlsaWJzY3JpcHRfcmVuYW1lIgorCittdWx0aWxpYnNjcmlwdF9yZW5hbWUoKSB7CisJOgorfQorCitweXRob24gKCkgeworICAgICMgRG8gbm90aGluZyBpZiBtdWx0aWxpYiBpc24ndCBiZWluZyB1c2VkCisgICAgaWYgbm90IGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpOgorICAgICAgIHJldHVybgorICAgICMgRG8gbm90aGluZyBmb3IgbmF0aXZlL2Nyb3NzCisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MnLCBkKToKKyAgICAgICByZXR1cm4KKworICAgIGZvciBlbnRyeSBpbiAoZC5nZXRWYXIoIk1VTFRJTElCX1NDUklQVFMiLCBGYWxzZSkgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgcGtnLCBzY3JpcHQgPSBlbnRyeS5zcGxpdCgiOiIpCisgICAgICAgc2NyaXB0bmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc2NyaXB0KQorICAgICAgIGQuYXBwZW5kVmFyKCJBTFRFUk5BVElWRV8iICsgcGtnLCBzY3JpcHRuYW1lICsgIiAiKQorICAgICAgIGQuc2V0VmFyRmxhZygiQUxURVJOQVRJVkVfTElOS19OQU1FIiwgc2NyaXB0bmFtZSwgc2NyaXB0KQorICAgICAgIGQuc2V0VmFyRmxhZygiQUxURVJOQVRJVkVfVEFSR0VUIiwgc2NyaXB0bmFtZSwgc2NyaXB0ICsgIi0ke01VTFRJTElCX1NVRkZJWH0iKQorICAgICAgIGQuYXBwZW5kVmFyKCJtdWx0aWxpYnNjcmlwdF9yZW5hbWUiLCAgIlxuCW12ICR7UEtHRH0iICsgc2NyaXB0ICsgIiAke1BLR0R9IiArIHNjcmlwdCArICItJHtNVUxUSUxJQl9TVUZGSVh9IikKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKaW5kZXggYTkxMWYyYS4uZGRjY2ZlMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKQEAgLTQ0LDcgKzQ0LDYgQEAKIENGTEFHUyA9ICIke0JVSUxEX0NGTEFHU30iCiBDWFhGTEFHUyA9ICIke0JVSUxEX0NYWEZMQUdTfSIKIExERkxBR1MgPSAiJHtCVUlMRF9MREZMQUdTfSIKLUxERkxBR1NfYnVpbGQtZGFyd2luID0gIi1MJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9ICIKIAogU1RBR0lOR19CSU5ESVIgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IgogU1RBR0lOR19CSU5ESVJfQ1JPU1MgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IgpAQCAtNzgsNiArNzcsNyBAQAogCiBiaW5kaXIgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Igogc2JpbmRpciA9ICIke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9IgorYmFzZV9saWJkaXIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IgogbGliZGlyID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSIKIGluY2x1ZGVkaXIgPSAiJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9Igogc3lzY29uZmRpciA9ICIke1NUQUdJTkdfRVRDRElSX05BVElWRX0iCkBAIC04OSw2ICs4OSw3IEBACiAKIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID89ICIiCiBiaW5kaXIgLj0gIiR7TkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVh9IgorYmFzZV9saWJkaXIgLj0gIiR7TkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVh9IgogbGliZGlyIC49ICIke05BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYfSIKIGxpYmV4ZWNkaXIgLj0gIiR7TkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVh9IgogCkBAIC0xNTIsOCArMTUzLDYgQEAKICAgICAgICAgICAgICAgICBuZXdkZXBzLmFwcGVuZChkZXApCiAgICAgICAgIGQuc2V0VmFyKHZhcm5hbWUsICIgIi5qb2luKG5ld2RlcHMpKQogCi0gICAgZS5kYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgZS5kYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtbmF0aXZlIikKLQogICAgIG1hcF9kZXBlbmRlbmNpZXMoIkRFUEVORFMiLCBlLmRhdGEpCiAgICAgZm9yIHBrZyBpbiBbZS5kYXRhLmdldFZhcigiUE4iKSwgIiIsICIke1BOfSJdOgogICAgICAgICBtYXBfZGVwZW5kZW5jaWVzKCJSREVQRU5EUyIsIGUuZGF0YSwgcGtnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcwppbmRleCA2OWZiNDVjLi5mMjViMGMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcwpAQCAtMTIsNiArMTIsMTEgQEAKIAogTVVMVElMSUJTID0gIiIKIAorIyB3ZSBuZWVkIGNvbnNpc3RlbnQgc3RhZ2luZyBkaXIgd2hldGhlciBvciBub3QgbXVsdGlsaWIgaXMgZW5hYmxlZAorU1RBR0lOR19ESVJfSE9TVCA9ICIke1dPUktESVJ9L3JlY2lwZS1zeXNyb290IgorU1RBR0lOR19ESVJfVEFSR0VUID0gIiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QiCitSRUNJUEVfU1lTUk9PVCA9ICIke1dPUktESVJ9L3JlY2lwZS1zeXNyb290IgorCiAjCiAjIFVwZGF0ZSBQQUNLQUdFX0FSQ0ggYW5kIFBBQ0tBR0VfQVJDSFMKICMKQEAgLTc4LDcgKzgzLDYgQEAKIAogICAgIGUuZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgIm5hdGl2ZXNkay0iKQogICAgIGUuZGF0YS5zZXRWYXIoIlBOIiwgIm5hdGl2ZXNkay0iICsgZS5kYXRhLmdldFZhcigiUE4iKS5yZXBsYWNlKCItbmF0aXZlc2RrIiwgIiIpLnJlcGxhY2UoIm5hdGl2ZXNkay0iLCAiIikpCi0gICAgZS5kYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgZS5kYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtbmF0aXZlc2RrIikKIH0KIAogcHl0aG9uICgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKaW5kZXggYzM1MWZmMC4uNmRiYWU2YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKQEAgLTEwLDcgKzEwLDcgQEAKIAogTlBNUE4gPz0gIiR7QG5vZGVfcGtnbmFtZShkKX0iCiAKLU5QTV9JTlNUQUxMRElSID0gIiR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IgorTlBNX0lOU1RBTExESVIgPSAiJHtsaWJkaXJ9L25vZGUvJHtOUE1QTn0iCiAKICMgZnVuY3Rpb24gbWFwcyBhcmNoIG5hbWVzIHRvIG5wbSBhcmNoIG5hbWVzCiBkZWYgbnBtX29lX2FyY2hfbWFwKHRhcmdldF9hcmNoLCBkKToKQEAgLTIyLDcgKzIyLDcgQEAKICAgICByZXR1cm4gdGFyZ2V0X2FyY2gKIAogTlBNX0FSQ0ggPz0gIiR7QG5wbV9vZV9hcmNoX21hcChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgotTlBNX0lOU1RBTExfREVWID0gIjAiCitOUE1fSU5TVEFMTF9ERVYgPz0gIjAiCiAKIG5wbV9kb19jb21waWxlKCkgewogCSMgQ29weSBpbiBhbnkgYWRkaXRpb25hbGx5IGZldGNoZWQgbW9kdWxlcwpAQCAtNTIsOSArNTIsMTAgQEAKIAkjIGNoYW5naW5nIHRoZSBob21lIGRpcmVjdG9yeSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRoZSAubnBtcmMgd2lsbAogCSMgYmUgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeQogCWV4cG9ydCBIT01FPSR7V09SS0RJUn0KLQlta2RpciAtcCAke05QTV9JTlNUQUxMRElSfS8KKwlta2RpciAtcCAke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcwogCW5wbSBwYWNrIC4KIAlucG0gaW5zdGFsbCAtLXByZWZpeCAke0R9JHtwcmVmaXh9IC1nIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tcHJvZHVjdGlvbiAtLW5vLXJlZ2lzdHJ5ICR7TlBNUE59LSR7UFZ9LnRnegorCW12ICR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzICR7RH0ke2xpYmRpcn0vbm9kZQogCWlmIFsgLWQgJHtEfSR7cHJlZml4fS9ldGMgXSA7IHRoZW4KIAkJIyBUaGlzIHdpbGwgYmUgZW1wdHkKIAkJcm1kaXIgJHtEfSR7cHJlZml4fS9ldGMKQEAgLTYyLDEzICs2MywxMyBAQAogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgaW5zdGRpciA9IGQuZXhwYW5kKCcke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke05QTVBOfScpCisgICAgaW5zdGRpciA9IGQuZXhwYW5kKCcke0R9JHtOUE1fSU5TVEFMTERJUn0nKQogICAgIGV4dHJhcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoaW5zdGRpcikKICAgICBwa2duYW1lcyA9IGV4dHJhcGFja2FnZXMua2V5cygpCiAgICAgZC5wcmVwZW5kVmFyKCdQQUNLQUdFUycsICclcyAnICUgJyAnLmpvaW4ocGtnbmFtZXMpKQogICAgIGZvciBwa2duYW1lIGluIHBrZ25hbWVzOgogICAgICAgICBwa2dyZWxwYXRoLCBwZGF0YSA9IGV4dHJhcGFja2FnZXNbcGtnbmFtZV0KLSAgICAgICAgcGtncGF0aCA9ICcke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59LycgKyBwa2dyZWxwYXRoCisgICAgICAgIHBrZ3BhdGggPSAnJHtOUE1fSU5TVEFMTERJUn0vJyArIHBrZ3JlbHBhdGgKICAgICAgICAgIyBwYWNrYWdlIG5hbWVzIGNhbid0IGhhdmUgdW5kZXJzY29yZXMgYnV0IG5wbSBwYWNrYWdlcyBzb21ldGltZXMgdXNlIHRoZW0KICAgICAgICAgb2VfcGtnX25hbWUgPSBwa2duYW1lLnJlcGxhY2UoJ18nLCAnLScpCiAgICAgICAgIGV4cGFuZGVkX3BrZ25hbWUgPSBkLmV4cGFuZChvZV9wa2dfbmFtZSkKQEAgLTg0LDcgKzg1LDcgQEAKIH0KIAogRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke05QTVBOfSBcCisgICAgJHtOUE1fSU5TVEFMTERJUn0gXAogIgogCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCmluZGV4IGVkZWZmYTkuLmQxZTkxMzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTU4LDcgKzU4LDcgQEAKIAogIyBJZiB5b3VyIHBvc3RpbnN0YWxsIGNhbiBleGVjdXRlIGF0IHJvb3RmcyBjcmVhdGlvbiB0aW1lIHJhdGhlciB0aGFuIG9uCiAjIHRhcmdldCBidXQgZGVwZW5kcyBvbiBhIG5hdGl2ZS9jcm9zcyB0b29sIGluIG9yZGVyIHRvIGV4ZWN1dGUsIHlvdSBuZWVkIHRvCi0jIGxpc3QgdGhhdCB0b29sIGluIFBBQ0tBR0VfV1JJVEVfREVQRU5EUy4gVGFyZ2V0IHBhY2thZ2UgZGVwZW5kZW5jaWVzIGJlbG9uZworIyBsaXN0IHRoYXQgdG9vbCBpbiBQQUNLQUdFX1dSSVRFX0RFUFMuIFRhcmdldCBwYWNrYWdlIGRlcGVuZGVuY2llcyBiZWxvbmcKICMgaW4gdGhlIHBhY2thZ2UgZGVwZW5kZW5jaWVzIGFzIG5vcm1hbCwgdGhpcyBpcyBqdXN0IGZvciBuYXRpdmUvY3Jvc3Mgc3VwcG9ydAogIyB0b29scyBhdCByb290ZnMgYnVpbGQgdGltZS4KIFBBQ0tBR0VfV1JJVEVfREVQUyA/Pz0gIiIKQEAgLTM0NSw4ICszNDUsMTYgQEAKICAgICByZXR1cm4gZGVidWdmaWxlcy5rZXlzKCkKIAogZGVmIGFwcGVuZF9zb3VyY2VfaW5mbyhmaWxlLCBzb3VyY2VmaWxlLCBkLCBmYXRhbD1UcnVlKToKLSAgICBjbWQgPSAiJ2R3YXJmc3JjZmlsZXMnICclcyciICUgKGZpbGUpCi0gICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKworICAgIGNtZCA9IFsiZHdhcmZzcmNmaWxlcyIsIGZpbGVdCisgICAgdHJ5OgorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHJldHZhbCA9IDAKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhjOgorICAgICAgICBvdXRwdXQgPSBleGMub3V0cHV0CisgICAgICAgIHJldHZhbCA9IGV4Yy5yZXR1cm5jb2RlCisKICAgICAjIDI1NSBtZWFucyBhIHNwZWNpZmljIGZpbGUgd2Fzbid0IGZ1bGx5IHBhcnNlZCB0byBnZXQgdGhlIGRlYnVnIGZpbGUgbGlzdCwgd2hpY2ggaXMgbm90IGEgZmF0YWwgZmFpbHVyZQogICAgIGlmIHJldHZhbCAhPSAwIGFuZCByZXR2YWwgIT0gMjU1OgogICAgICAgICBtc2cgPSAiZHdhcmZzcmNmaWxlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKQpAQCAtMzU5LDEwICszNjcsMTIgQEAKICAgICAjIG9mIHJwbSdzIGRlYnVnZWRpdCwgd2hpY2ggd2FzIHdyaXRpbmcgdGhlbSBvdXQgdGhhdCB3YXksIGFuZCB0aGUgY29kZSBlbHNld2hlcmUKICAgICAjIGlzIHN0aWxsIGFzc3VtaW5nIHRoYXQuCiAgICAgZGVidWdsaXN0b3V0cHV0ID0gJ1wwJy5qb2luKGRlYnVnc291cmNlcykgKyAnXDAnCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShzb3VyY2VmaWxlICsgIi5sb2NrIikKICAgICBvcGVuKHNvdXJjZWZpbGUsICdhJykud3JpdGUoZGVidWdsaXN0b3V0cHV0KQorICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKIAotZGVmIHNwbGl0ZGVidWdpbmZvKGZpbGUsIGRlYnVnZmlsZSwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGQpOgorZGVmIHNwbGl0ZGVidWdpbmZvKGZpbGUsIGR2YXIsIGRlYnVnZGlyLCBkZWJ1Z2xpYmRpciwgZGVidWdhcHBlbmQsIGRlYnVnc3JjZGlyLCBzb3VyY2VmaWxlLCBkKToKICAgICAjIEZ1bmN0aW9uIHRvIHNwbGl0IGEgc2luZ2xlIGZpbGUgaW50byB0d28gY29tcG9uZW50cywgb25lIGlzIHRoZSBzdHJpcHBlZAogICAgICMgdGFyZ2V0IHN5c3RlbSBiaW5hcnksIHRoZSBvdGhlciBjb250YWlucyBhbnkgZGVidWdnaW5nIGluZm9ybWF0aW9uLiBUaGUKICAgICAjIHR3byBmaWxlcyBhcmUgbGlua2VkIHRvIHJlZmVyZW5jZSBlYWNoIG90aGVyLgpAQCAtMzcwLDYgKzM4MCwxNiBAQAogICAgICMgc291cmNlZmlsZSBpcyBhbHNvIGdlbmVyYXRlZCBjb250YWluaW5nIGEgbGlzdCBvZiBkZWJ1Z3NvdXJjZXMKIAogICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKworICAgIHNyYyA9IGZpbGVbbGVuKGR2YXIpOl0KKyAgICBkZXN0ID0gZGVidWdsaWJkaXIgKyBvcy5wYXRoLmRpcm5hbWUoc3JjKSArIGRlYnVnZGlyICsgIi8iICsgb3MucGF0aC5iYXNlbmFtZShzcmMpICsgZGVidWdhcHBlbmQKKyAgICBkZWJ1Z2ZpbGUgPSBkdmFyICsgZGVzdAorCisgICAgIyBTcGxpdCB0aGUgZmlsZS4uLgorICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZGVidWdmaWxlKSkKKyAgICAjYmIubm90ZSgiU3BsaXQgJXMgLT4gJXMiICUgKGZpbGUsIGRlYnVnZmlsZSkpCisgICAgIyBPbmx5IHN0b3JlIG9mZiB0aGUgaGFyZCBsaW5rIHJlZmVyZW5jZSBpZiB3ZSBzdWNjZXNzZnVsbHkgc3BsaXQhCiAKICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgIG9iamNvcHkgPSBkLmdldFZhcigiT0JKQ09QWSIpCkBAIC0zOTAsMTYgKzQxMCwxMCBAQAogCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZWJ1Z2ZpbGUpKQogCi0gICAgY21kID0gIiclcycgLS1vbmx5LWtlZXAtZGVidWcgJyVzJyAnJXMnIiAlIChvYmpjb3B5LCBmaWxlLCBkZWJ1Z2ZpbGUpCi0gICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCi0gICAgaWYgcmV0dmFsOgotICAgICAgICBiYi5mYXRhbCgib2JqY29weSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKKyAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbb2JqY29weSwgJy0tb25seS1rZWVwLWRlYnVnJywgZmlsZSwgZGVidWdmaWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAgICAgIyBTZXQgdGhlIGRlYnVnbGluayB0byBoYXZlIHRoZSB2aWV3IG9mIHRoZSBmaWxlIHBhdGggb24gdGhlIHRhcmdldAotICAgIGNtZCA9ICInJXMnIC0tYWRkLWdudS1kZWJ1Z2xpbms9JyVzJyAnJXMnIiAlIChvYmpjb3B5LCBkZWJ1Z2ZpbGUsIGZpbGUpCi0gICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCi0gICAgaWYgcmV0dmFsOgotICAgICAgICBiYi5mYXRhbCgib2JqY29weSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKKyAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbb2JqY29weSwgJy0tYWRkLWdudS1kZWJ1Z2xpbmsnLCBkZWJ1Z2ZpbGUsIGZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICBpZiBuZXdtb2RlOgogICAgICAgICBvcy5jaG1vZChmaWxlLCBvcmlnbW9kZSkKQEAgLTQxMSw2ICs0MjUsNyBAQAogICAgICMgYW5kIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gaGVyZS4KIAogICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKIAogICAgIHNvdXJjZWZpbGUgPSBkLmV4cGFuZCgiJHtXT1JLRElSfS9kZWJ1Z3NvdXJjZXMubGlzdCIpCiAgICAgaWYgZGVidWdzcmNkaXIgYW5kIG9zLnBhdGguaXNmaWxlKHNvdXJjZWZpbGUpOgpAQCAtNDQ3LDIzICs0NjIsMjAgQEAKICAgICAgICAgcHJvY2Vzc2RlYnVnc3JjICs9ICIoY2QgJyVzJyA7IGNwaW8gLXBkMG1sTCAtLW5vLXByZXNlcnZlLW93bmVyICclcyVzJyAyPi9kZXYvbnVsbCkiCiAKICAgICAgICAgY21kID0gcHJvY2Vzc2RlYnVnc3JjICUgKHNvdXJjZWZpbGUsIHdvcmtiYXNlZGlyLCBsb2NhbHNyY19wcmVmaXgsIHdvcmtwYXJlbnRkaXIsIGR2YXIsIGRlYnVnc3JjZGlyKQotICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICAgICAgIyBDYW4gImZhaWwiIGlmIGludGVybmFsIGhlYWRlcnMvdHJhbnNpZW50IHNvdXJjZXMgYXJlIGF0dGVtcHRlZAotICAgICAgICAjaWYgcmV0dmFsOgotICAgICAgICAjICAgIGJiLmZhdGFsKCJkZWJ1ZyBzb3VyY2UgY29weSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpIiAlIChyZXR2YWwsIGNtZCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAjIENhbiAiZmFpbCIgaWYgaW50ZXJuYWwgaGVhZGVycy90cmFuc2llbnQgc291cmNlcyBhcmUgYXR0ZW1wdGVkCisgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgIyBjcGlvIHNlZW1zIHRvIGhhdmUgYSBidWcgd2l0aCAtbEwgdG9nZXRoZXIgYW5kIHN5bWJvbGljIGxpbmtzIGFyZSBqdXN0IGNvcGllZCwgbm90IGRlcmVmZXJlbmNlZC4KICAgICAgICAgIyBXb3JrIGFyb3VuZCB0aGlzIGJ5IG1hbnVhbGx5IGZpbmRpbmcgYW5kIGNvcHlpbmcgYW55IHN5bWJvbGljIGxpbmtzIHRoYXQgbWFkZSBpdCB0aHJvdWdoLgogICAgICAgICBjbWQgPSAiZmluZCAlcyVzIC10eXBlIGwgLXByaW50MCAtZGVsZXRlIHwgc2VkIHMjJXMlcy8jI2cgfCAoY2QgJyVzJyA7IGNwaW8gLXBkMG1MIC0tbm8tcHJlc2VydmUtb3duZXIgJyVzJXMnIDI+L2Rldi9udWxsKSIgJSAoZHZhciwgZGVidWdzcmNkaXIsIGR2YXIsIGRlYnVnc3JjZGlyLCB3b3JrcGFyZW50ZGlyLCBkdmFyLCBkZWJ1Z3NyY2RpcikKLSAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCi0gICAgICAgIGlmIHJldHZhbDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCJkZWJ1Z3NyYyBzeW1saW5rIGZpeHVwIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcykiICUgKHJldHZhbCwgY21kKSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICAgICAgIyBUaGUgY29weSBieSBjcGlvIG1heSBoYXZlIHJlc3VsdGVkIGluIHNvbWUgZW1wdHkgZGlyZWN0b3JpZXMhICBSZW1vdmUgdGhlc2UKICAgICAgICAgY21kID0gImZpbmQgJXMlcyAtZW1wdHkgLXR5cGUgZCAtZGVsZXRlIiAlIChkdmFyLCBkZWJ1Z3NyY2RpcikKLSAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCi0gICAgICAgIGlmIHJldHZhbDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCJlbXB0eSBkaXJlY3RvcnkgcmVtb3ZhbCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICAgICAgIyBBbHNvIHJlbW92ZSBkZWJ1Z3NyY2RpciBpZiBpdHMgZW1wdHkKICAgICAgICAgZm9yIHAgaW4gbm9zdWNoZGlyWzo6LTFdOgpAQCAtNDgyLDcgKzQ5NCw4IEBACiAKICAgICBpZiBrZXkgaW4gZGF0YToKICAgICAgICAgIyBIYXZlIHRvIGF2b2lkIHVuZG9pbmcgdGhlIHdyaXRlX2V4dHJhX3BrZ3MoZ2xvYmFsX3ZhcmlhbnRzLi4uKQotICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIGRhdGFba2V5XSA9PSBiYXNlcGtnOgorICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIG5vdCBkLmdldFZhcignTVVMVElMSUJfVkFSSUFOVFMnKSBcCisgICAgICAgICAgICBhbmQgZGF0YVtrZXldID09IGJhc2Vwa2c6CiAgICAgICAgICAgICByZXR1cm4gcGtnCiAgICAgICAgIHJldHVybiBkYXRhW2tleV0KIApAQCAtNjI0LDE2ICs2MzcsMTYgQEAKIH0KIAogcHl0aG9uIHBlcmZvcm1fcGFja2FnZWNvcHkgKCkgeworICAgIGltcG9ydCBzdWJwcm9jZXNzCisKICAgICBkZXN0ID0gZC5nZXRWYXIoJ0QnKQogICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcpCiAKICAgICAjIFN0YXJ0IGJ5IHBhY2thZ2UgcG9wdWxhdGlvbiBieSB0YWtpbmcgYSBjb3B5IG9mIHRoZSBpbnN0YWxsZWQKICAgICAjIGZpbGVzIHRvIG9wZXJhdGUgb24KICAgICAjIFByZXNlcnZlIHNwYXJzZSBmaWxlcyBhbmQgaGFyZCBsaW5rcwotICAgIGNtZCA9ICd0YXIgLWNmIC0gLUMgJXMgLXAgLiB8IHRhciAteGYgLSAtQyAlcycgJSAoZGVzdCwgZHZhcikKLSAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICBpZiByZXR2YWw6Ci0gICAgICAgIGJiLmZhdGFsKCJmaWxlIGNvcHkgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVzIChjbWQgd2FzICVzKSVzIiAlIChyZXR2YWwsIGNtZCwgIjpcbiVzIiAlIG91dHB1dCBpZiBvdXRwdXQgZWxzZSAiIikpCisgICAgY21kID0gJ3RhciAtY2YgLSAtQyAlcyAtcCAtUyAuIHwgdGFyIC14ZiAtIC1DICVzJyAlIChkZXN0LCBkdmFyKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAgICAgIyByZXBsYWNlIFJQQVRIcyBmb3IgdGhlIG5hdGl2ZXNkayBiaW5hcmllcywgdG8gbWFrZSB0aGVtIHJlbG9jYXRhYmxlCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKQEAgLTc2Miw3ICs3NzUsMTEgQEAKICAgICAgICAgYmJwYXRoID0gZC5nZXRWYXIoJ0JCUEFUSCcpCiAgICAgICAgIGZzX3Blcm1zX3RhYmxlcyA9IGQuZ2V0VmFyKCdGSUxFU1lTVEVNX1BFUk1TX1RBQkxFUycpIG9yICIiCiAgICAgICAgIGZvciBjb25mX2ZpbGUgaW4gZnNfcGVybXNfdGFibGVzLnNwbGl0KCk6Ci0gICAgICAgICAgICBzdHIgKz0gIiAlcyIgJSBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkKKyAgICAgICAgICAgIGNvbmZwYXRoID0gYmIudXRpbHMud2hpY2goYmJwYXRoLCBjb25mX2ZpbGUpCisgICAgICAgICAgICBpZiBjb25mcGF0aDoKKyAgICAgICAgICAgICAgICBzdHIgKz0gIiAlcyIgJSBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYmIud2FybigiY2Fubm90IGZpbmQgJXMgc3BlY2lmaWVkIGluIEZJTEVTWVNURU1fUEVSTVNfVEFCTEVTIiAlIGNvbmZfZmlsZSkKICAgICAgICAgcmV0dXJuIHN0cgogCiAKQEAgLTg4MCw2ICs4OTcsNyBAQAogCiBweXRob24gc3BsaXRfYW5kX3N0cmlwX2ZpbGVzICgpIHsKICAgICBpbXBvcnQgc3RhdCwgZXJybm8KKyAgICBpbXBvcnQgc3VicHJvY2VzcwogCiAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCkBAIC05MTYsNDMgKzkzNCw2IEBACiAgICAgc291cmNlZmlsZSA9IGQuZXhwYW5kKCIke1dPUktESVJ9L2RlYnVnc291cmNlcy5saXN0IikKICAgICBiYi51dGlscy5yZW1vdmUoc291cmNlZmlsZSkKIAotICAgICMgUmV0dXJuIHR5cGUgKGJpdHMpOgotICAgICMgMCAtIG5vdCBlbGYKLSAgICAjIDEgLSBFTEYKLSAgICAjIDIgLSBzdHJpcHBlZAotICAgICMgNCAtIGV4ZWN1dGFibGUKLSAgICAjIDggLSBzaGFyZWQgbGlicmFyeQotICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCi0gICAgZGVmIGlzRUxGKHBhdGgpOgotICAgICAgICB0eXBlID0gMAotICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZmlsZSAtYiAnJXMnIiAlIHBhdGgpCi0KLSAgICAgICAgaWYgcmV0OgotICAgICAgICAgICAgbXNnID0gInNwbGl0X2FuZF9zdHJpcF9maWxlczogJ2ZpbGUgJXMnIGZhaWxlZCIgJSBwYXRoCi0gICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigic3BsaXQtc3RyaXAiLCBtc2csIGQpCi0gICAgICAgICAgICByZXR1cm4gdHlwZQotCi0gICAgICAgICMgTm90IHN0cmlwcGVkCi0gICAgICAgIGlmICJFTEYiIGluIHJlc3VsdDoKLSAgICAgICAgICAgIHR5cGUgfD0gMQotICAgICAgICAgICAgaWYgIm5vdCBzdHJpcHBlZCIgbm90IGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICB0eXBlIHw9IDIKLSAgICAgICAgICAgIGlmICJleGVjdXRhYmxlIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgdHlwZSB8PSA0Ci0gICAgICAgICAgICBpZiAic2hhcmVkIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgdHlwZSB8PSA4Ci0gICAgICAgIHJldHVybiB0eXBlCi0KLSAgICBkZWYgaXNTdGF0aWNMaWIocGF0aCk6Ci0gICAgICAgIGlmIHBhdGguZW5kc3dpdGgoJy5hJykgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhwYXRoKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmaDoKLSAgICAgICAgICAgICAgICAjIFRoZSBtYWdpYyBtdXN0IGluY2x1ZGUgdGhlIGZpcnN0IHNsYXNoIHRvIGF2b2lkCi0gICAgICAgICAgICAgICAgIyBtYXRjaGluZyBnb2xhbmcgc3RhdGljIGxpYnJhcmllcwotICAgICAgICAgICAgICAgIG1hZ2ljID0gYichPGFyY2g+XHgwYS8nCi0gICAgICAgICAgICAgICAgc3RhcnQgPSBmaC5yZWFkKGxlbihtYWdpYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ID09IG1hZ2ljCi0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgIwogICAgICMgRmlyc3QgbGV0cyBmaWd1cmUgb3V0IGFsbCBvZiB0aGUgZmlsZXMgd2UgbWF5IGhhdmUgdG8gcHJvY2VzcyAuLi4gZG8gdGhpcyBvbmx5IG9uY2UhCiAgICAgIwpAQCAtOTY2LDEzICs5NDcsMTUgQEAKICAgICBza2lwZmlsZXMgPSAoZC5nZXRWYXIoIklOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyIpIG9yICIiKS5zcGxpdCgpCiAgICAgaWYgKGQuZ2V0VmFyKCdJTkhJQklUX1BBQ0tBR0VfU1RSSVAnKSAhPSAnMScgb3IgXAogICAgICAgICAgICAgZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCcpICE9ICcxJyk6CisgICAgICAgIGNoZWNrZWxmID0ge30KKyAgICAgICAgY2hlY2tlbGZsaW5rcyA9IHt9CiAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKGR2YXIpOgogICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQogICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5rbyIpIGFuZCBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMToKICAgICAgICAgICAgICAgICAgICAga2Vybm1vZHMuYXBwZW5kKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgaXNTdGF0aWNMaWIoZmlsZSk6CisgICAgICAgICAgICAgICAgaWYgb2UucGFja2FnZS5pc19zdGF0aWNfbGliKGZpbGUpOgogICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCkBAIC05OTksNTkgKzk4Miw2MyBAQAogICAgICAgICAgICAgICAgICMgQ2hlY2sgaXRzIGFuIGV4ZWN1dGFibGUKICAgICAgICAgICAgICAgICBpZiAoc1tzdGF0LlNUX01PREVdICYgc3RhdC5TX0lYVVNSKSBvciAoc1tzdGF0LlNUX01PREVdICYgc3RhdC5TX0lYR1JQKSBvciAoc1tzdGF0LlNUX01PREVdICYgc3RhdC5TX0lYT1RIKSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBvciAoKGZpbGUuc3RhcnRzd2l0aChsaWJkaXIpIG9yIGZpbGUuc3RhcnRzd2l0aChiYXNlbGliZGlyKSkgYW5kICgiLnNvIiBpbiBmIG9yICIubm9kZSIgaW4gZikpOgotICAgICAgICAgICAgICAgICAgICAjIElmIGl0J3MgYSBzeW1saW5rLCBhbmQgcG9pbnRzIHRvIGFuIEVMRiBmaWxlLCB3ZSBjYXB0dXJlIHRoZSByZWFkbGluayB0YXJnZXQKKwogICAgICAgICAgICAgICAgICAgICBpZiBjcGF0aC5pc2xpbmsoZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBvcy5yZWFkbGluayhmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNFTEYobHRhcmdldCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JiLm5vdGUoIlN5bTogJXMgKCVkKSIgJSAobHRhcmdldCwgaXNFTEYobHRhcmdldCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzW2ZpbGVdID0gdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VsZmxpbmtzW2ZpbGVdID0gbHRhcmdldAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgYSByZWZlcmVuY2Ugb2YgZGV2aWNlIElEIGFuZCBpbm9kZSBudW1iZXIgdG8gaWRlbnRpZnkgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSAiJWRfJWQiICUgKHMuc3RfZGV2LCBzLnN0X2lubykKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tlbGZbZmlsZV0gPSAoZmlsZSwgZmlsZV9yZWZlcmVuY2UpCiAKLSAgICAgICAgICAgICAgICAgICAgIyBJdCdzIGEgZmlsZSAob3IgaGFyZGxpbmspLCBub3QgYSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICMgLi4uYnV0IGlzIGl0IEVMRiwgYW5kIGlzIGl0IGFscmVhZHkgc3RyaXBwZWQ/Ci0gICAgICAgICAgICAgICAgICAgIGVsZl9maWxlID0gaXNFTEYoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAxOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdhbHJlYWR5LXN0cmlwcGVkJyBpbiAoZC5nZXRWYXIoJ0lOU0FORV9TS0lQXycgKyBwbikgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIGZpbGUgJXMgZnJvbSAlcyBmb3IgYWxyZWFkeS1zdHJpcHBlZCBRQSB0ZXN0IiAlIChmaWxlW2xlbihkdmFyKTpdLCBwbikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gIkZpbGUgJyVzJyBmcm9tICVzIHdhcyBhbHJlYWR5IHN0cmlwcGVkLCB0aGlzIHdpbGwgcHJldmVudCBmdXR1cmUgZGVidWdnaW5nISIgJSAoZmlsZVtsZW4oZHZhcik6XSwgcG4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJhbHJlYWR5LXN0cmlwcGVkIiwgbXNnLCBkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJlc3VsdHMgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKG9lLnBhY2thZ2UuaXNfZWxmLCBjaGVja2VsZmxpbmtzLnZhbHVlcygpLCBkKQorICAgICAgICByZXN1bHRzX21hcCA9IHt9CisgICAgICAgIGZvciAobHRhcmdldCwgZWxmX2ZpbGUpIGluIHJlc3VsdHM6CisgICAgICAgICAgICByZXN1bHRzX21hcFtsdGFyZ2V0XSA9IGVsZl9maWxlCisgICAgICAgIGZvciBmaWxlIGluIGNoZWNrZWxmbGlua3M6CisgICAgICAgICAgICBsdGFyZ2V0ID0gY2hlY2tlbGZsaW5rc1tmaWxlXQorICAgICAgICAgICAgIyBJZiBpdCdzIGEgc3ltbGluaywgYW5kIHBvaW50cyB0byBhbiBFTEYgZmlsZSwgd2UgY2FwdHVyZSB0aGUgcmVhZGxpbmsgdGFyZ2V0CisgICAgICAgICAgICBpZiByZXN1bHRzX21hcFtsdGFyZ2V0XToKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBvcy5yZWFkbGluayhmaWxlKQorICAgICAgICAgICAgICAgICNiYi5ub3RlKCJTeW06ICVzICglZCkiICUgKGx0YXJnZXQsIHJlc3VsdHNfbWFwW2x0YXJnZXRdKSkKKyAgICAgICAgICAgICAgICBzeW1saW5rc1tmaWxlXSA9IHRhcmdldAogCi0gICAgICAgICAgICAgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhbiB1bnN0cmlwcGVkIGVsZiBmaWxlLiBXZSBuZWVkIHRvOgotICAgICAgICAgICAgICAgICAgICAgICAgIyAgYSkgTWFrZSBzdXJlIGFueSBmaWxlIHdlIHN0cmlwIGlzIG5vdCBoYXJkbGlua2VkIHRvIGFueXRoaW5nIGVsc2Ugb3V0c2lkZSB0aGlzIHRyZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgIGIpIE9ubHkgc3RyaXAgYW55IGhhcmRsaW5rZWQgZmlsZSBvbmNlIChubyByYWNlcykKLSAgICAgICAgICAgICAgICAgICAgICAgICMgIGMpIFRyYWNrIGFueSBoYXJkbGlua3MgYmV0d2VlbiBmaWxlcyBzbyB0aGF0IHdlIGNhbiByZWNvbnN0cnVjdCBtYXRjaGluZyBkZWJ1ZyBmaWxlIGhhcmRsaW5rcworICAgICAgICByZXN1bHRzID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChvZS5wYWNrYWdlLmlzX2VsZiwgY2hlY2tlbGYua2V5cygpLCBkKQorICAgICAgICBmb3IgKGZpbGUsIGVsZl9maWxlKSBpbiByZXN1bHRzOgorICAgICAgICAgICAgIyBJdCdzIGEgZmlsZSAob3IgaGFyZGxpbmspLCBub3QgYSBsaW5rCisgICAgICAgICAgICAjIC4uLmJ1dCBpcyBpdCBFTEYsIGFuZCBpcyBpdCBhbHJlYWR5IHN0cmlwcGVkPworICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAxOgorICAgICAgICAgICAgICAgIGlmIGVsZl9maWxlICYgMjoKKyAgICAgICAgICAgICAgICAgICAgaWYgJ2FscmVhZHktc3RyaXBwZWQnIGluIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBuKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIGZpbGUgJXMgZnJvbSAlcyBmb3IgYWxyZWFkeS1zdHJpcHBlZCBRQSB0ZXN0IiAlIChmaWxlW2xlbihkdmFyKTpdLCBwbikpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRmlsZSAnJXMnIGZyb20gJXMgd2FzIGFscmVhZHkgc3RyaXBwZWQsIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchIiAlIChmaWxlW2xlbihkdmFyKTpdLCBwbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJhbHJlYWR5LXN0cmlwcGVkIiwgbXNnLCBkKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFVzZSBhIHJlZmVyZW5jZSBvZiBkZXZpY2UgSUQgYW5kIGlub2RlIG51bWJlciB0byBpZGVudGlmeSBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSAiJWRfJWQiICUgKHMuc3RfZGV2LCBzLnN0X2lubykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfcmVmZXJlbmNlIGluIGlub2RlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKGlub2Rlc1tmaWxlX3JlZmVyZW5jZV1bMF0sIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVzW2ZpbGVfcmVmZXJlbmNlXS5hcHBlbmQoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVzW2ZpbGVfcmVmZXJlbmNlXSA9IFtmaWxlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgaGFyZGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb3B5ZmlsZShmaWxlLCBmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZmZpbGVzW2ZpbGVdID0gZWxmX2ZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTW9kaWZpZWQgdGhlIGZpbGUgc28gY2xlYXIgdGhlIGNhY2hlCi0gICAgICAgICAgICAgICAgICAgICAgICBjcGF0aC51cGRhdGVjYWNoZShmaWxlKQorICAgICAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFuIHVuc3RyaXBwZWQgZWxmIGZpbGUuIFdlIG5lZWQgdG86CisgICAgICAgICAgICAgICAgIyAgYSkgTWFrZSBzdXJlIGFueSBmaWxlIHdlIHN0cmlwIGlzIG5vdCBoYXJkbGlua2VkIHRvIGFueXRoaW5nIGVsc2Ugb3V0c2lkZSB0aGlzIHRyZWUKKyAgICAgICAgICAgICAgICAjICBiKSBPbmx5IHN0cmlwIGFueSBoYXJkbGlua2VkIGZpbGUgb25jZSAobm8gcmFjZXMpCisgICAgICAgICAgICAgICAgIyAgYykgVHJhY2sgYW55IGhhcmRsaW5rcyBiZXR3ZWVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHJlY29uc3RydWN0IG1hdGNoaW5nIGRlYnVnIGZpbGUgaGFyZGxpbmtzCisKKyAgICAgICAgICAgICAgICAjIFVzZSBhIHJlZmVyZW5jZSBvZiBkZXZpY2UgSUQgYW5kIGlub2RlIG51bWJlciB0byBpZGVudGlmeSBmaWxlcworICAgICAgICAgICAgICAgIGZpbGVfcmVmZXJlbmNlID0gY2hlY2tlbGZbZmlsZV1bMV0KKyAgICAgICAgICAgICAgICBpZiBmaWxlX3JlZmVyZW5jZSBpbiBpbm9kZXM6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQorICAgICAgICAgICAgICAgICAgICBvcy5saW5rKGlub2Rlc1tmaWxlX3JlZmVyZW5jZV1bMF0sIGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGlub2Rlc1tmaWxlX3JlZmVyZW5jZV0uYXBwZW5kKGZpbGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaW5vZGVzW2ZpbGVfcmVmZXJlbmNlXSA9IFtmaWxlXQorICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGhhcmRsaW5rCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmJyZWFrX2hhcmRsaW5rcyhmaWxlKQorICAgICAgICAgICAgICAgICAgICBlbGZmaWxlc1tmaWxlXSA9IGVsZl9maWxlCisgICAgICAgICAgICAgICAgIyBNb2RpZmllZCB0aGUgZmlsZSBzbyBjbGVhciB0aGUgY2FjaGUKKyAgICAgICAgICAgICAgICBjcGF0aC51cGRhdGVjYWNoZShmaWxlKQogCiAgICAgIwogICAgICMgRmlyc3QgbGV0cyBwcm9jZXNzIGRlYnVnIHNwbGl0dGluZwogICAgICMKICAgICBpZiAoZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCcpICE9ICcxJyk6Ci0gICAgICAgIGZvciBmaWxlIGluIGVsZmZpbGVzOgotICAgICAgICAgICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQotICAgICAgICAgICAgZGVzdCA9IGRlYnVnbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUoc3JjKSArIGRlYnVnYXBwZW5kCi0gICAgICAgICAgICBmcGF0aCA9IGR2YXIgKyBkZXN0Ci0KLSAgICAgICAgICAgICMgU3BsaXQgdGhlIGZpbGUuLi4KLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZnBhdGgpKQotICAgICAgICAgICAgI2JiLm5vdGUoIlNwbGl0ICVzIC0+ICVzIiAlIChmaWxlLCBmcGF0aCkpCi0gICAgICAgICAgICAjIE9ubHkgc3RvcmUgb2ZmIHRoZSBoYXJkIGxpbmsgcmVmZXJlbmNlIGlmIHdlIHN1Y2Nlc3NmdWxseSBzcGxpdCEKLSAgICAgICAgICAgIHNwbGl0ZGVidWdpbmZvKGZpbGUsIGZwYXRoLCBkZWJ1Z3NyY2Rpciwgc291cmNlZmlsZSwgZCkKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChzcGxpdGRlYnVnaW5mbywgbGlzdChlbGZmaWxlcyksIGQsIGV4dHJhYXJncz0oZHZhciwgZGVidWdkaXIsIGRlYnVnbGliZGlyLCBkZWJ1Z2FwcGVuZCwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGQpKQogCiAgICAgICAgIGlmIGRlYnVnc3JjZGlyIGFuZCBub3QgdGFyZ2V0b3Muc3RhcnRzd2l0aCgibWluZ3ciKToKICAgICAgICAgICAgIGZvciBmaWxlIGluIHN0YXRpY2xpYnM6CkBAIC0xMDYxLDE1ICsxMDQ4LDE4IEBACiAgICAgICAgIGZvciByZWYgaW4gaW5vZGVzOgogICAgICAgICAgICAgaWYgbGVuKGlub2Rlc1tyZWZdKSA9PSAxOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRhcmdldCA9IGlub2Rlc1tyZWZdWzBdW2xlbihkdmFyKTpdCiAgICAgICAgICAgICBmb3IgZmlsZSBpbiBpbm9kZXNbcmVmXVsxOl06CiAgICAgICAgICAgICAgICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQotICAgICAgICAgICAgICAgIGRlc3QgPSBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZShzcmMpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNyYykgKyBkZWJ1Z2FwcGVuZAorICAgICAgICAgICAgICAgIGRlc3QgPSBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZShzcmMpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHRhcmdldCkgKyBkZWJ1Z2FwcGVuZAogICAgICAgICAgICAgICAgIGZwYXRoID0gZHZhciArIGRlc3QKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSBpbm9kZXNbcmVmXVswXVtsZW4oZHZhcik6XQogICAgICAgICAgICAgICAgIGZ0YXJnZXQgPSBkdmFyICsgZGVidWdsaWJkaXIgKyBvcy5wYXRoLmRpcm5hbWUodGFyZ2V0KSArIGRlYnVnZGlyICsgIi8iICsgb3MucGF0aC5iYXNlbmFtZSh0YXJnZXQpICsgZGVidWdhcHBlbmQKICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGZwYXRoKSkKLSAgICAgICAgICAgICAgICAjYmIubm90ZSgiTGluayAlcyAtPiAlcyIgJSAoZnBhdGgsIGZ0YXJnZXQpKQotICAgICAgICAgICAgICAgIG9zLmxpbmsoZnRhcmdldCwgZnBhdGgpCisgICAgICAgICAgICAgICAgIyBPbmx5IG9uZSBoYXJkbGluayBvZiBzZXBhcmF0ZWQgZGVidWcgaW5mbyBmaWxlIGluIGVhY2ggZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhmcGF0aCwgb3MuUl9PSyk6CisgICAgICAgICAgICAgICAgICAgICNiYi5ub3RlKCJMaW5rICVzIC0+ICVzIiAlIChmcGF0aCwgZnRhcmdldCkpCisgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoZnRhcmdldCwgZnBhdGgpCiAKICAgICAgICAgIyBDcmVhdGUgc3ltbGlua3MgZm9yIGFsbCBjYXNlcyB3ZSB3ZXJlIGFibGUgdG8gc3BsaXQgc3ltYm9scwogICAgICAgICBmb3IgZmlsZSBpbiBzeW1saW5rczoKQEAgLTExMTgsNyArMTEwOCw3IEBACiAgICAgICAgIGZvciBmIGluIGtlcm5tb2RzOgogICAgICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZiwgMTYsIHN0cmlwKSkKIAotICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhzZmlsZXMsIG9lLnBhY2thZ2UucnVuc3RyaXApCisgICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2gob2UucGFja2FnZS5ydW5zdHJpcCwgc2ZpbGVzLCBkKQogCiAgICAgIwogICAgICMgRW5kIG9mIHN0cmlwCkBAIC0xMTUxLDIxICsxMTQxLDIyIEBACiAKICAgICAjIFNhbml0eSBjaGVjayBQQUNLQUdFUyBmb3IgZHVwbGljYXRlcwogICAgICMgU2FuaXR5IHNob3VsZCBiZSBtb3ZlZCB0byBzYW5pdHkuYmJjbGFzcyBvbmNlIHdlIGhhdmUgdGhlIGluZnJhc3RydWN0dXJlCi0gICAgcGFja2FnZV9saXN0ID0gW10KKyAgICBwYWNrYWdlX2RpY3QgPSB7fQogCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgotICAgICAgICBpZiBwa2cgaW4gcGFja2FnZV9saXN0OgorICAgIGZvciBpLCBwa2cgaW4gZW51bWVyYXRlKHBhY2thZ2VzLnNwbGl0KCkpOgorICAgICAgICBpZiBwa2cgaW4gcGFja2FnZV9kaWN0OgogICAgICAgICAgICAgbXNnID0gIiVzIGlzIGxpc3RlZCBpbiBQQUNLQUdFUyBtdWx0aXBsZSB0aW1lcywgdGhpcyBsZWFkcyB0byBwYWNrYWdpbmcgZXJyb3JzLiIgJSBwa2cKICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJwYWNrYWdlcy1saXN0IiwgbXNnLCBkKQogICAgICAgICAjIElmIGRlYnVnLXdpdGgtc3JjcGtnIG1vZGUgaXMgZW5hYmxlZCB0aGVuIHRoZSBzcmMgcGFja2FnZSB3aWxsIGhhdmUKICAgICAgICAgIyBwcmlvcml0eSBvdmVyIGRiZyBwYWNrYWdlIHdoZW4gYXNzaWduaW5nIHRoZSBmaWxlcy4KICAgICAgICAgIyBUaGlzIGFsbG93cyBzcmMgcGFja2FnZSB0byBpbmNsdWRlIHNvdXJjZSBmaWxlcyBhbmQgcmVtb3ZlIHRoZW0gZnJvbSBkYmcuCiAgICAgICAgIGVsaWYgc3BsaXRfc291cmNlX3BhY2thZ2UgYW5kIHBrZy5lbmRzd2l0aCgiLXNyYyIpOgotICAgICAgICAgICAgcGFja2FnZV9saXN0Lmluc2VydCgwLCBwa2cpCi0gICAgICAgIGVsaWYgYXV0b2RlYnVnIGFuZCBwa2cuZW5kc3dpdGgoIi1kYmciKSBhbmQgbm90IHNwbGl0X3NvdXJjZV9wYWNrYWdlOgotICAgICAgICAgICAgcGFja2FnZV9saXN0Lmluc2VydCgwLCBwa2cpCisgICAgICAgICAgICBwYWNrYWdlX2RpY3RbcGtnXSA9ICgxMCwgaSkKKyAgICAgICAgZWxpZiBhdXRvZGVidWcgYW5kIHBrZy5lbmRzd2l0aCgiLWRiZyIpOgorICAgICAgICAgICAgcGFja2FnZV9kaWN0W3BrZ10gPSAoMzAsIGkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYWNrYWdlX2xpc3QuYXBwZW5kKHBrZykKKyAgICAgICAgICAgIHBhY2thZ2VfZGljdFtwa2ddID0gKDUwLCBpKQorICAgIHBhY2thZ2VfbGlzdCA9IHNvcnRlZChwYWNrYWdlX2RpY3Qua2V5cygpLCBrZXk9cGFja2FnZV9kaWN0LmdldCkKICAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlX2xpc3QpKQogICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCiAKQEAgLTE0MTEsOSArMTQwMiw2IEBACiAgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKICAgICBwa2dkYXRhZGlyID0gZC5nZXRWYXIoJ1BLR0RFU1RXT1JLJykKIAotICAgICMgVGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCi0gICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKLQogICAgIGRhdGFfZmlsZSA9IHBrZ2RhdGFkaXIgKyBkLmV4cGFuZCgiLyR7UE59IiApCiAgICAgZiA9IG9wZW4oZGF0YV9maWxlLCAndycpCiAgICAgZi53cml0ZSgiUEFDS0FHRVM6ICVzXG4iICUgcGFja2FnZXMpCkBAIC0xNDI2LDcgKzE0MTQsOCBAQAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ21vZHVsZS1iYXNlJywgZCk6CiAgICAgICAgIHdyaXRlX2V4dHJhX3BrZ3ModmFyaWFudHMsIHBuLCBwYWNrYWdlcywgcGtnZGF0YWRpcikKIAotICAgIGlmIChiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZ3JvdXAnLCBkKSk6CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGQpIGFuZCBub3QgdmFyaWFudHMgXAorICAgICAgICBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGQpOgogICAgICAgICB3cml0ZV9leHRyYV9wa2dzKGdsb2JhbF92YXJpYW50cywgcG4sIHBhY2thZ2VzLCBwa2dkYXRhZGlyKQogCiAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKQEAgLTE1MTUsMTAgKzE1MDQsMTAgQEAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdtb2R1bGUtYmFzZScsIGQpOgogICAgICAgICB3cml0ZV9leHRyYV9ydW50aW1lX3BrZ3ModmFyaWFudHMsIHBhY2thZ2VzLCBwa2dkYXRhZGlyKQogCi0gICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGQpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZCk6CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGQpIGFuZCBub3QgdmFyaWFudHMgXAorICAgICAgICBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGQpOgogICAgICAgICB3cml0ZV9leHRyYV9ydW50aW1lX3BrZ3MoZ2xvYmFsX3ZhcmlhbnRzLCBwYWNrYWdlcywgcGtnZGF0YWRpcikKIAotICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiB9CiBlbWl0X3BrZ2RhdGFbZGlyc10gPSAiJHtQS0dERVNUV09SS30vcnVudGltZSAke1BLR0RFU1RXT1JLfS9ydW50aW1lLXJldmVyc2UgJHtQS0dERVNUV09SS30vcnVudGltZS1ycHJvdmlkZXMiCiAKQEAgLTE1NTgsNyArMTU0Nyw3IEBACiAgICAgICAgIGZvciBmaWxlcyBpbiBjaHVua3MocGtnZmlsZXNbcGtnXSwgMTAwKToKICAgICAgICAgICAgIHBrZ2xpc3QuYXBwZW5kKChwa2csIGZpbGVzLCBycG1kZXBzLCBwa2dkZXN0KSkKIAotICAgIHByb2Nlc3NlZCA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKCBwa2dsaXN0LCBvZS5wYWNrYWdlLmZpbGVkZXBydW5uZXIpCisgICAgcHJvY2Vzc2VkID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChvZS5wYWNrYWdlLmZpbGVkZXBydW5uZXIsIHBrZ2xpc3QsIGQpCiAKICAgICBwcm92aWRlc19maWxlcyA9IHt9CiAgICAgcmVxdWlyZXNfZmlsZXMgPSB7fQpAQCAtMTU3NCwxMiArMTU2MywxMiBAQAogICAgICAgICBmb3IgZmlsZSBpbiBwcm92aWRlczoKICAgICAgICAgICAgIHByb3ZpZGVzX2ZpbGVzW3BrZ10uYXBwZW5kKGZpbGUpCiAgICAgICAgICAgICBrZXkgPSAiRklMRVJQUk9WSURFU18iICsgZmlsZSArICJfIiArIHBrZwotICAgICAgICAgICAgZC5zZXRWYXIoa2V5LCAiICIuam9pbihwcm92aWRlc1tmaWxlXSkpCisgICAgICAgICAgICBkLmFwcGVuZFZhcihrZXksICIgIiArICIgIi5qb2luKHByb3ZpZGVzW2ZpbGVdKSkKIAogICAgICAgICBmb3IgZmlsZSBpbiByZXF1aXJlczoKICAgICAgICAgICAgIHJlcXVpcmVzX2ZpbGVzW3BrZ10uYXBwZW5kKGZpbGUpCiAgICAgICAgICAgICBrZXkgPSAiRklMRVJERVBFTkRTXyIgKyBmaWxlICsgIl8iICsgcGtnCi0gICAgICAgICAgICBkLnNldFZhcihrZXksICIgIi5qb2luKHJlcXVpcmVzW2ZpbGVdKSkKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKGtleSwgIiAiICsgIiAiLmpvaW4ocmVxdWlyZXNbZmlsZV0pKQogCiAgICAgZm9yIHBrZyBpbiByZXF1aXJlc19maWxlczoKICAgICAgICAgZC5zZXRWYXIoIkZJTEVSREVQRU5EU0ZMSVNUXyIgKyBwa2csICIgIi5qb2luKHJlcXVpcmVzX2ZpbGVzW3BrZ10pKQpAQCAtMTU5Miw3ICsxNTgxLDcgQEAKIAogcHl0aG9uIHBhY2thZ2VfZG9fc2hsaWJzKCkgewogICAgIGltcG9ydCByZSwgcGlwZXMKLSAgICBpbXBvcnQgc3VicHJvY2VzcyBhcyBzdWIKKyAgICBpbXBvcnQgc3VicHJvY2VzcwogCiAgICAgZXhjbHVkZV9zaGxpYnMgPSBkLmdldFZhcignRVhDTFVERV9GUk9NX1NITElCUycsIEZhbHNlKQogICAgIGlmIGV4Y2x1ZGVfc2hsaWJzOgpAQCAtMTYwMyw2ICsxNTkyLDE4IEBACiAgICAgbGliZGlyX3JlID0gcmUuY29tcGlsZSgiLiovJXMkIiAlIGQuZ2V0VmFyKCdiYXNlbGliJykpCiAKICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpCisKKyAgICBzaGxpYl9wa2dzID0gW10KKyAgICBleGNsdXNpb25fbGlzdCA9IGQuZ2V0VmFyKCJFWENMVURFX1BBQ0tBR0VTX0ZST01fU0hMSUJTIikKKyAgICBpZiBleGNsdXNpb25fbGlzdDoKKyAgICAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgorICAgICAgICAgICAgaWYgcGtnIG5vdCBpbiBleGNsdXNpb25fbGlzdC5zcGxpdCgpOgorICAgICAgICAgICAgICAgIHNobGliX3BrZ3MuYXBwZW5kKHBrZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYmIubm90ZSgibm90IGdlbmVyYXRpbmcgc2hsaWJzIGZvciAlcyIgJSBwa2cpCisgICAgZWxzZToKKyAgICAgICAgc2hsaWJfcGtncyA9IHBhY2thZ2VzLnNwbGl0KCkKKwogICAgIHRhcmdldG9zID0gZC5nZXRWYXIoJ1RBUkdFVF9PUycpCiAKICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQpAQCAtMTYxNywyOCArMTYxOCwyOCBAQAogCiAgICAgc2hsaWJzd29ya19kaXIgPSBkLmdldFZhcignU0hMSUJTV09SS0RJUicpCiAKLSAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZwotICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IiksIFRydWUpCi0KLSAgICBkZWYgbGludXhfc28oZmlsZSwgbmVlZGVkLCBzb25hbWVzLCByZW5hbWVzLCBwa2d2ZXIpOgorICAgIGRlZiBsaW51eF9zbyhmaWxlLCBwa2csIHBrZ3ZlciwgZCk6CiAgICAgICAgIG5lZWRzX2xkY29uZmlnID0gRmFsc2UKKyAgICAgICAgbmVlZGVkID0gc2V0KCkKKyAgICAgICAgc29uYW1lcyA9IHNldCgpCisgICAgICAgIHJlbmFtZXMgPSBbXQogICAgICAgICBsZGlyID0gb3MucGF0aC5kaXJuYW1lKGZpbGUpLnJlcGxhY2UocGtnZGVzdCArICIvIiArIHBrZywgJycpCiAgICAgICAgIGNtZCA9IGQuZ2V0VmFyKCdPQkpEVU1QJykgKyAiIC1wICIgKyBwaXBlcy5xdW90ZShmaWxlKSArICIgMj4vZGV2L251bGwiCiAgICAgICAgIGZkID0gb3MucG9wZW4oY21kKQogICAgICAgICBsaW5lcyA9IGZkLnJlYWRsaW5lcygpCiAgICAgICAgIGZkLmNsb3NlKCkKLSAgICAgICAgcnBhdGggPSBbXQorICAgICAgICBycGF0aCA9IHR1cGxlKCkKICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goIlxzK1JQQVRIXHMrKFteXHNdKikiLCBsKQogICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICBycGF0aHMgPSBtLmdyb3VwKDEpLnJlcGxhY2UoIiRPUklHSU4iLCBsZGlyKS5zcGxpdCgiOiIpCi0gICAgICAgICAgICAgICAgcnBhdGggPSBsaXN0KG1hcChvcy5wYXRoLm5vcm1wYXRoLCBycGF0aHMpKQorICAgICAgICAgICAgICAgIHJwYXRoID0gdHVwbGUobWFwKG9zLnBhdGgubm9ybXBhdGgsIHJwYXRocykpCiAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCJccytORUVERURccysoW15cc10qKSIsIGwpCiAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgIGRlcCA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICBpZiBkZXAgbm90IGluIG5lZWRlZFtwa2ddOgotICAgICAgICAgICAgICAgICAgICBuZWVkZWRbcGtnXS5hcHBlbmQoKGRlcCwgZmlsZSwgcnBhdGgpKQorICAgICAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gbmVlZGVkOgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQuYWRkKChkZXAsIGZpbGUsIHJwYXRoKSkKICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXHMrU09OQU1FXHMrKFteXHNdKikiLCBsKQogICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICB0aGlzX3NvbmFtZSA9IG0uZ3JvdXAoMSkKQEAgLTE2NDYsMTIgKzE2NDcsMTIgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgcHJvdiBpbiBzb25hbWVzOgogICAgICAgICAgICAgICAgICAgICAjIGlmIGxpYnJhcnkgaXMgcHJpdmF0ZSAob25seSB1c2VkIGJ5IHBhY2thZ2UpIHRoZW4gZG8gbm90IGJ1aWxkIHNobGliIGZvciBpdAogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcHJpdmF0ZV9saWJzIG9yIHRoaXNfc29uYW1lIG5vdCBpbiBwcml2YXRlX2xpYnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb25hbWVzLmFwcGVuZChwcm92KQorICAgICAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hZGQocHJvdikKICAgICAgICAgICAgICAgICBpZiBsaWJkaXJfcmUubWF0Y2gob3MucGF0aC5kaXJuYW1lKGZpbGUpKToKICAgICAgICAgICAgICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBUcnVlCiAgICAgICAgICAgICAgICAgaWYgc25hcF9zeW1saW5rcyBhbmQgKG9zLnBhdGguYmFzZW5hbWUoZmlsZSkgIT0gdGhpc19zb25hbWUpOgogICAgICAgICAgICAgICAgICAgICByZW5hbWVzLmFwcGVuZCgoZmlsZSwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShmaWxlKSwgdGhpc19zb25hbWUpKSkKLSAgICAgICAgcmV0dXJuIG5lZWRzX2xkY29uZmlnCisgICAgICAgIHJldHVybiAobmVlZHNfbGRjb25maWcsIG5lZWRlZCwgc29uYW1lcywgcmVuYW1lcykKIAogICAgIGRlZiBkYXJ3aW5fc28oZmlsZSwgbmVlZGVkLCBzb25hbWVzLCByZW5hbWVzLCBwa2d2ZXIpOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmlsZSk6CkBAIC0xNjc5LDEwICsxNjgwLDEwIEBACiAgICAgICAgICAgICBmb3IgY29tYm8gaW4gY29tYm9zOgogICAgICAgICAgICAgICAgIGlmIG5vdCBjb21ibyBpbiBzb25hbWVzOgogICAgICAgICAgICAgICAgICAgICBwcm92ID0gKGNvbWJvLCBsZGlyLCBwa2d2ZXIpCi0gICAgICAgICAgICAgICAgICAgIHNvbmFtZXMuYXBwZW5kKHByb3YpCisgICAgICAgICAgICAgICAgICAgIHNvbmFtZXMuYWRkKHByb3YpCiAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy5keWxpYicpIG9yIGZpbGUuZW5kc3dpdGgoJy5zbycpOgogICAgICAgICAgICAgcnBhdGggPSBbXQotICAgICAgICAgICAgcCA9IHN1Yi5Qb3BlbihbZC5leHBhbmQoIiR7SE9TVF9QUkVGSVh9b3Rvb2wiKSwgJy1sJywgZmlsZV0sc3Rkb3V0PXN1Yi5QSVBFLHN0ZGVycj1zdWIuUElQRSkKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vdG9vbCIpLCAnLWwnLCBmaWxlXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgICAgICAjIElmIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgcHJvY2VzcyBzdGRvdXQgZm9yIHJlc3VsdHMKICAgICAgICAgICAgIGlmIHAucmV0dXJuY29kZSA9PSAwOgpAQCAtMTY5MSw3ICsxNjkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbC5zdGFydHN3aXRoKCdwYXRoICcpOgogICAgICAgICAgICAgICAgICAgICAgICAgcnBhdGguYXBwZW5kKGwuc3BsaXQoKVsxXSkKIAotICAgICAgICBwID0gc3ViLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vdG9vbCIpLCAnLUwnLCBmaWxlXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbZC5leHBhbmQoIiR7SE9TVF9QUkVGSVh9b3Rvb2wiKSwgJy1MJywgZmlsZV0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZG91dCBmb3IgcmVzdWx0cwogICAgICAgICBpZiBwLnJldHVybmNvZGUgPT0gMDoKQEAgLTE3MDMsNyArMTcwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobC5zcGxpdCgpWzBdKS5yc3BsaXQoIi4iLCAxKVswXQogICAgICAgICAgICAgICAgIGlmIG5hbWUgYW5kIG5hbWUgbm90IGluIG5lZWRlZFtwa2ddOgotICAgICAgICAgICAgICAgICAgICAgbmVlZGVkW3BrZ10uYXBwZW5kKChuYW1lLCBmaWxlLCBbXSkpCisgICAgICAgICAgICAgICAgICAgICBuZWVkZWRbcGtnXS5hZGQoKG5hbWUsIGZpbGUsIHR1cGxlKCkpKQogCiAgICAgZGVmIG1pbmd3X2RsbChmaWxlLCBuZWVkZWQsIHNvbmFtZXMsIHJlbmFtZXMsIHBrZ3Zlcik6CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlKToKQEAgLTE3MTEsMTggKzE3MTIsMTggQEAKIAogICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIuZGxsIik6CiAgICAgICAgICAgICAjIGFzc3VtZSBhbGwgZGxscyBhcmUgc2hhcmVkIG9iamVjdHMgcHJvdmlkZWQgYnkgdGhlIHBhY2thZ2UKLSAgICAgICAgICAgIHNvbmFtZXMuYXBwZW5kKChvcy5wYXRoLmJhc2VuYW1lKGZpbGUpLCBvcy5wYXRoLmRpcm5hbWUoZmlsZSkucmVwbGFjZShwa2dkZXN0ICsgIi8iICsgcGtnLCAnJyksIHBrZ3ZlcikpCisgICAgICAgICAgICBzb25hbWVzLmFkZCgob3MucGF0aC5iYXNlbmFtZShmaWxlKSwgb3MucGF0aC5kaXJuYW1lKGZpbGUpLnJlcGxhY2UocGtnZGVzdCArICIvIiArIHBrZywgJycpLCBwa2d2ZXIpKQogCiAgICAgICAgIGlmIChmaWxlLmVuZHN3aXRoKCIuZGxsIikgb3IgZmlsZS5lbmRzd2l0aCgiLmV4ZSIpKToKICAgICAgICAgICAgICMgdXNlIG9iamR1bXAgdG8gc2VhcmNoIGZvciAiRExMIE5hbWU6IC4qXC5kbGwiCi0gICAgICAgICAgICBwID0gc3ViLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vYmpkdW1wIiksICItcCIsIGZpbGVdLCBzdGRvdXQgPSBzdWIuUElQRSwgc3RkZXJyPSBzdWIuUElQRSkKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vYmpkdW1wIiksICItcCIsIGZpbGVdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgICAgICMgcHJvY2VzcyB0aGUgb3V0cHV0LCBncmFiYmluZyBhbGwgLmRsbCBuYW1lcwogICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDA6CiAgICAgICAgICAgICAgICAgZm9yIG0gaW4gcmUuZmluZGl0ZXIoIkRMTCBOYW1lOiAoLio/XC5kbGwpJCIsIG91dC5kZWNvZGUoKSwgcmUuTVVMVElMSU5FIHwgcmUuSUdOT1JFQ0FTRSk6CiAgICAgICAgICAgICAgICAgICAgIGRsbG5hbWUgPSBtLmdyb3VwKDEpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRsbG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkZWRbcGtnXS5hcHBlbmQoKGRsbG5hbWUsIGZpbGUsIFtdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZFtwa2ddLmFkZCgoZGxsbmFtZSwgZmlsZSwgdHVwbGUoKSkpCiAKICAgICBpZiBkLmdldFZhcignUEFDS0FHRV9TTkFQX0xJQl9TWU1MSU5LUycpID09ICIxIjoKICAgICAgICAgc25hcF9zeW1saW5rcyA9IFRydWUKQEAgLTE3MzIsOSArMTczMywxMyBAQAogICAgIHVzZV9sZGNvbmZpZyA9IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRjb25maWcnLCBUcnVlLCBGYWxzZSwgZCkKIAogICAgIG5lZWRlZCA9IHt9Ci0gICAgc2hsaWJfcHJvdmlkZXIgPSBvZS5wYWNrYWdlLnJlYWRfc2hsaWJfcHJvdmlkZXJzKGQpCiAKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CisgICAgIyBUYWtlIHNoYXJlZCBsb2NrIHNpbmNlIHdlJ3JlIG9ubHkgcmVhZGluZywgbm90IHdyaXRpbmcKKyAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKGQuZXhwYW5kKCIke1BBQ0tBR0VMT0NLfSIpLCBUcnVlKQorICAgIHNobGliX3Byb3ZpZGVyID0gb2UucGFja2FnZS5yZWFkX3NobGliX3Byb3ZpZGVycyhkKQorICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCisKKyAgICBmb3IgcGtnIGluIHNobGliX3BrZ3M6CiAgICAgICAgIHByaXZhdGVfbGlicyA9IGQuZ2V0VmFyKCdQUklWQVRFX0xJQlNfJyArIHBrZykgb3IgZC5nZXRWYXIoJ1BSSVZBVEVfTElCUycpIG9yICIiCiAgICAgICAgIHByaXZhdGVfbGlicyA9IHByaXZhdGVfbGlicy5zcGxpdCgpCiAgICAgICAgIG5lZWRzX2xkY29uZmlnID0gRmFsc2UKQEAgLTE3NDYsOSArMTc1MSwxMCBAQAogICAgICAgICBpZiBub3QgcGtndmVyOgogICAgICAgICAgICAgcGtndmVyID0gdmVyCiAKLSAgICAgICAgbmVlZGVkW3BrZ10gPSBbXQotICAgICAgICBzb25hbWVzID0gbGlzdCgpCi0gICAgICAgIHJlbmFtZXMgPSBsaXN0KCkKKyAgICAgICAgbmVlZGVkW3BrZ10gPSBzZXQoKQorICAgICAgICBzb25hbWVzID0gc2V0KCkKKyAgICAgICAgcmVuYW1lcyA9IFtdCisgICAgICAgIGxpbnV4bGlzdCA9IFtdCiAgICAgICAgIGZvciBmaWxlIGluIHBrZ2ZpbGVzW3BrZ106CiAgICAgICAgICAgICAgICAgc29uYW1lID0gTm9uZQogICAgICAgICAgICAgICAgIGlmIGNwYXRoLmlzbGluayhmaWxlKToKQEAgLTE3NTgsOCArMTc2NCwxNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgdGFyZ2V0b3Muc3RhcnRzd2l0aCgibWluZ3ciKToKICAgICAgICAgICAgICAgICAgICAgbWluZ3dfZGxsKGZpbGUsIG5lZWRlZCwgc29uYW1lcywgcmVuYW1lcywgcGtndmVyKQogICAgICAgICAgICAgICAgIGVsaWYgb3MuYWNjZXNzKGZpbGUsIG9zLlhfT0spIG9yIGxpYl9yZS5tYXRjaChmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgbGRjb25maWcgPSBsaW51eF9zbyhmaWxlLCBuZWVkZWQsIHNvbmFtZXMsIHJlbmFtZXMsIHBrZ3ZlcikKLSAgICAgICAgICAgICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBuZWVkc19sZGNvbmZpZyBvciBsZGNvbmZpZworICAgICAgICAgICAgICAgICAgICBsaW51eGxpc3QuYXBwZW5kKGZpbGUpCisKKyAgICAgICAgaWYgbGludXhsaXN0OgorICAgICAgICAgICAgcmVzdWx0cyA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2gobGludXhfc28sIGxpbnV4bGlzdCwgZCwgZXh0cmFhcmdzPShwa2csIHBrZ3ZlciwgZCkpCisgICAgICAgICAgICBmb3IgciBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgIGxkY29uZmlnID0gclswXQorICAgICAgICAgICAgICAgIG5lZWRlZFtwa2ddIHw9IHJbMV0KKyAgICAgICAgICAgICAgICBzb25hbWVzIHw9IHJbMl0KKyAgICAgICAgICAgICAgICByZW5hbWVzLmV4dGVuZChyWzNdKQorICAgICAgICAgICAgICAgIG5lZWRzX2xkY29uZmlnID0gbmVlZHNfbGRjb25maWcgb3IgbGRjb25maWcKKwogICAgICAgICBmb3IgKG9sZCwgbmV3KSBpbiByZW5hbWVzOgogICAgICAgICAgICAgYmIubm90ZSgiUmVuYW1pbmcgJXMgdG8gJXMiICUgKG9sZCwgbmV3KSkKICAgICAgICAgICAgIG9zLnJlbmFtZShvbGQsIG5ldykKQEAgLTE3ODgsOCArMTgwMyw2IEBACiAgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCiAgICAgICAgIGJiLmRlYnVnKDEsICdMSUJOQU1FUzogcGtnICVzIHNvbmFtZXMgJXMnICUgKHBrZywgc29uYW1lcykpCiAKLSAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotCiAgICAgYXNzdW1lZF9saWJzID0gZC5nZXRWYXIoJ0FTU1VNRV9TSExJQlMnKQogICAgIGlmIGFzc3VtZWRfbGliczoKICAgICAgICAgbGliZGlyID0gZC5nZXRWYXIoImxpYmRpciIpCkBAIC0xODA2LDcgKzE4MTksNyBAQAogCiAgICAgbGlic2VhcmNocGF0aCA9IFtkLmdldFZhcignbGliZGlyJyksIGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicpXQogCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgorICAgIGZvciBwa2cgaW4gc2hsaWJfcGtnczoKICAgICAgICAgYmIuZGVidWcoMiwgImNhbGN1bGF0aW5nIHNobGliIHJlcXVpcmVtZW50cyBmb3IgJXMiICUgcGtnKQogCiAgICAgICAgIHByaXZhdGVfbGlicyA9IGQuZ2V0VmFyKCdQUklWQVRFX0xJQlNfJyArIHBrZykgb3IgZC5nZXRWYXIoJ1BSSVZBVEVfTElCUycpIG9yICIiCkBAIC0xODI3LDcgKzE4NDAsNyBAQAogICAgICAgICAgICAgICAgIGZvciBrIGluIHNobGliX3Byb3ZpZGVyW25bMF1dLmtleXMoKToKICAgICAgICAgICAgICAgICAgICAgc2hsaWJfcHJvdmlkZXJfcGF0aC5hcHBlbmQoaykKICAgICAgICAgICAgICAgICBtYXRjaCA9IE5vbmUKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBuWzJdICsgc2hsaWJfcHJvdmlkZXJfcGF0aCArIGxpYnNlYXJjaHBhdGg6CisgICAgICAgICAgICAgICAgZm9yIHAgaW4gbGlzdChuWzJdKSArIHNobGliX3Byb3ZpZGVyX3BhdGggKyBsaWJzZWFyY2hwYXRoOgogICAgICAgICAgICAgICAgICAgICBpZiBwIGluIHNobGliX3Byb3ZpZGVyW25bMF1dOgogICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBwCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTkwMiw5ICsxOTE1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoZHIgPT0gJ1JlcXVpcmVzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnY29uZmlnX25lZWRlZFtwa2ddICs9IGV4cC5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAKLSAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZwotICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IiksIFRydWUpCi0KICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIHBrZ3NfZmlsZSA9IG9zLnBhdGguam9pbihzaGxpYnN3b3JrX2RpciwgcGtnICsgIi5wY2xpc3QiKQogICAgICAgICBpZiBwa2djb25maWdfcHJvdmlkZWRbcGtnXSAhPSBbXToKQEAgLTE5MTMsNiArMTkyMyw5IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnJXNcbicgJSBwKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAKKyAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZworICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IiksIFRydWUpCisKICAgICAjIEdvIGZyb20gbGVhc3QgdG8gbW9zdCBzcGVjaWZpYyBzaW5jZSB0aGUgbGFzdCBvbmUgZm91bmQgd2lucwogICAgIGZvciBkaXIgaW4gcmV2ZXJzZWQoc2hsaWJzX2RpcnMpOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyKToKQEAgLTE5MjgsNiArMTk0MSw4IEBACiAgICAgICAgICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAgICAgICAgICAgICAgICAgICAgIHBrZ2NvbmZpZ19wcm92aWRlZFtwa2ddLmFwcGVuZChsLnJzdHJpcCgpKQogCisgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKKwogICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgZGVwcyA9IFtdCiAgICAgICAgIGZvciBuIGluIHBrZ2NvbmZpZ19uZWVkZWRbcGtnXToKQEAgLTE5NDUsOCArMTk2MCw2IEBACiAgICAgICAgICAgICBmb3IgZGVwIGluIGRlcHM6CiAgICAgICAgICAgICAgICAgZmQud3JpdGUoZGVwICsgJ1xuJykKICAgICAgICAgICAgIGZkLmNsb3NlKCkKLQotICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiB9CiAKIGRlZiByZWFkX2xpYmRlcF9maWxlcyhkKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCmluZGV4IDJlOGQxN2QuLjZmODE1OTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcwpAQCAtNDEsMzIgKzQxLDYgQEAKICAgICByZXR1cm4gYXJjaAogCiBweXRob24gZG9fcGFja2FnZV9kZWIgKCkgewotCi0gICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotICAgIGltcG9ydCB0cmFjZWJhY2sKLQotICAgIGNsYXNzIERlYmlhbldyaXRlUGtnUHJvY2VzcyhtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICAgICAgc2VsZi5fcGNvbm4sIHNlbGYuX2Njb25uID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQotICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gTm9uZQotCi0gICAgICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MucnVuKHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZChOb25lKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQotICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoKGUsIHRiKSkKLQotICAgICAgICBAcHJvcGVydHkKLSAgICAgICAgZGVmIGV4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgICAgIGlmIHNlbGYuX3Bjb25uLnBvbGwoKToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBzZWxmLl9wY29ubi5yZWN2KCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KLQotICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCi0KICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpCiAgICAgaWYgbm90IHBhY2thZ2VzOgogICAgICAgICBiYi5kZWJ1ZygxLCAiUEFDS0FHRVMgbm90IGRlZmluZWQsIG5vdGhpbmcgdG8gcGFja2FnZSIpCkBAIC03NiwzMCArNTAsNyBAQAogICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIkRFQl9QQUNLQUdFX0lOREVYX0NMRUFOIiksb3MuUl9PSyk6CiAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIkRFQl9QQUNLQUdFX0lOREVYX0NMRUFOIikpCiAKLSAgICBtYXhfcHJvY2VzcyA9IGludChkLmdldFZhcigiQkJfTlVNQkVSX1RIUkVBRFMiKSBvciBvcy5jcHVfY291bnQoKSBvciAxKQotICAgIGxhdW5jaGVkID0gW10KLSAgICBlcnJvciA9IE5vbmUKLSAgICBwa2dzID0gcGFja2FnZXMuc3BsaXQoKQotICAgIHdoaWxlIG5vdCBlcnJvciBhbmQgcGtnczoKLSAgICAgICAgaWYgbGVuKGxhdW5jaGVkKSA8IG1heF9wcm9jZXNzOgotICAgICAgICAgICAgcCA9IERlYmlhbldyaXRlUGtnUHJvY2Vzcyh0YXJnZXQ9ZGViX3dyaXRlX3BrZywgYXJncz0ocGtncy5wb3AoKSwgZCkpCi0gICAgICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgICAgIGxhdW5jaGVkLmFwcGVuZChwKQotICAgICAgICBmb3IgcSBpbiBsYXVuY2hlZDoKLSAgICAgICAgICAgICMgVGhlIGZpbmlzaGVkIHByb2Nlc3NlcyBhcmUgam9pbmVkIHdoZW4gY2FsbGluZyBpc19hbGl2ZSgpCi0gICAgICAgICAgICBpZiBub3QgcS5pc19hbGl2ZSgpOgotICAgICAgICAgICAgICAgIGxhdW5jaGVkLnJlbW92ZShxKQotICAgICAgICAgICAgaWYgcS5leGNlcHRpb246Ci0gICAgICAgICAgICAgICAgZXJyb3IsIHRyYWNlYmFjayA9IHEuZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgIGZvciBwIGluIGxhdW5jaGVkOgotICAgICAgICBwLmpvaW4oKQotCi0gICAgb3MuY2hkaXIob2xkY3dkKQotCi0gICAgaWYgZXJyb3I6Ci0gICAgICAgIHJhaXNlIGVycm9yCisgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChkZWJfd3JpdGVfcGtnLCBwYWNrYWdlcy5zcGxpdCgpLCBkLCBleHRyYWFyZ3M9KGQsKSkKIH0KIGRvX3BhY2thZ2VfZGViW3ZhcmRlcHNdICs9ICJkZWJfd3JpdGVfcGtnIgogZG9fcGFja2FnZV9kZWJbdmFyZGVwc2V4Y2x1ZGVdID0gIkJCX05VTUJFUl9USFJFQURTIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKaW5kZXggYTBiMzRmYS4uNWViOTEwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCkBAIC0xNywzMiArMTcsNiBAQAogT1BLR0xJQkRJUiA9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYiIKIAogcHl0aG9uIGRvX3BhY2thZ2VfaXBrICgpIHsKLSAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0gICAgaW1wb3J0IHRyYWNlYmFjawotCi0gICAgY2xhc3MgSVBLV3JpdGVQa2dQcm9jZXNzKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgICAgICBzZWxmLl9wY29ubiwgc2VsZi5fY2Nvbm4gPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCi0gICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBOb25lCi0KLSAgICAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5ydW4oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKE5vbmUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgdGIgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZCgoZSwgdGIpKQotCi0gICAgICAgIEBwcm9wZXJ0eQotICAgICAgICBkZWYgZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICAgICAgaWYgc2VsZi5fcGNvbm4ucG9sbCgpOgotICAgICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IHNlbGYuX3Bjb25uLnJlY3YoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbgotCi0KLSAgICBvbGRjd2QgPSBvcy5nZXRjd2QoKQotCiAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKICAgICBvdXRkaXIgPSBkLmdldFZhcignUEtHV1JJVEVESVJJUEsnKQogICAgIHRtcGRpciA9IGQuZ2V0VmFyKCdUTVBESVInKQpAQCAtNjEsMzAgKzM1LDcgQEAKICAgICBpZiBvcy5hY2Nlc3Mob3MucGF0aC5qb2luKHRtcGRpciwgInN0YW1wcyIsICJJUEtfUEFDS0FHRV9JTkRFWF9DTEVBTiIpLCBvcy5SX09LKToKICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiSVBLX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSkKIAotICAgIG1heF9wcm9jZXNzID0gaW50KGQuZ2V0VmFyKCJCQl9OVU1CRVJfVEhSRUFEUyIpIG9yIG9zLmNwdV9jb3VudCgpIG9yIDEpCi0gICAgbGF1bmNoZWQgPSBbXQotICAgIGVycm9yID0gTm9uZQotICAgIHBrZ3MgPSBwYWNrYWdlcy5zcGxpdCgpCi0gICAgd2hpbGUgbm90IGVycm9yIGFuZCBwa2dzOgotICAgICAgICBpZiBsZW4obGF1bmNoZWQpIDwgbWF4X3Byb2Nlc3M6Ci0gICAgICAgICAgICBwID0gSVBLV3JpdGVQa2dQcm9jZXNzKHRhcmdldD1pcGtfd3JpdGVfcGtnLCBhcmdzPShwa2dzLnBvcCgpLCBkKSkKLSAgICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgICAgbGF1bmNoZWQuYXBwZW5kKHApCi0gICAgICAgIGZvciBxIGluIGxhdW5jaGVkOgotICAgICAgICAgICAgIyBUaGUgZmluaXNoZWQgcHJvY2Vzc2VzIGFyZSBqb2luZWQgd2hlbiBjYWxsaW5nIGlzX2FsaXZlKCkKLSAgICAgICAgICAgIGlmIG5vdCBxLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgbGF1bmNoZWQucmVtb3ZlKHEpCi0gICAgICAgICAgICBpZiBxLmV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBlcnJvciwgdHJhY2ViYWNrID0gcS5leGNlcHRpb24KLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgZm9yIHAgaW4gbGF1bmNoZWQ6Ci0gICAgICAgIHAuam9pbigpCi0KLSAgICBvcy5jaGRpcihvbGRjd2QpCi0KLSAgICBpZiBlcnJvcjoKLSAgICAgICAgcmFpc2UgZXJyb3IKKyAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKGlwa193cml0ZV9wa2csIHBhY2thZ2VzLnNwbGl0KCksIGQsIGV4dHJhYXJncz0oZCwpKQogfQogZG9fcGFja2FnZV9pcGtbdmFyZGVwc10gKz0gImlwa193cml0ZV9wa2ciCiBkb19wYWNrYWdlX2lwa1t2YXJkZXBzZXhjbHVkZV0gPSAiQkJfTlVNQkVSX1RIUkVBRFMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcwppbmRleCAyZmM2OTI1Li4zZTBhMTgxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKQEAgLTMzLDcgKzMzLDcgQEAKICAgICBpZiAodGVzdHNyY2RpciArIG9zLnNlcCkuc3RhcnRzd2l0aCh3b3JrZGlyICsgb3Muc2VwKToKICAgICAgICAgIyBEb3VibGUtY2hlY2sgdGhhdCBlaXRoZXIgd29ya2RpciBvciBTIG9yIHNvbWUgZGlyZWN0b3J5IGluLWJldHdlZW4gaXMgYSBnaXQgcmVwb3NpdG9yeQogICAgICAgICBmb3VuZCA9IEZhbHNlCi0gICAgICAgIHdoaWxlIHRlc3RzcmNkaXIgIT0gJy8nOgorICAgICAgICB3aGlsZSB0ZXN0c3JjZGlyICE9IHdvcmtkaXI6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVzdHNyY2RpciwgJy5naXQnKSk6CiAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCiAgICAgICAgICAgICAgICAgYnJlYWsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BpeGJ1ZmNhY2hlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9waXhidWZjYWNoZS5iYmNsYXNzCmluZGV4IGIzZTUwN2YuLjMzNzhmZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BpeGJ1ZmNhY2hlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcGl4YnVmY2FjaGUuYmJjbGFzcwpAQCAtMTIsNyArMTIsNyBAQAogCiBwaXhidWZjYWNoZV9jb21tb24oKSB7CiBpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCi0JJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9waXhidWZfY2FjaGUgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGxpYmRpcj0ke2xpYmRpcn0gXAorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfcGl4YnVmX2NhY2hlICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gbGliZGlyPSR7bGliZGlyfSBcCiAJCWJpbmRpcj0ke2JpbmRpcn0gYmFzZV9saWJkaXI9JHtiYXNlX2xpYmRpcn0KIGVsc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKaW5kZXggM2RhMzUwNy4uNjc3YmEzYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCkBAIC0xLDQgKzEsNCBAQAotaW5oZXJpdCBtZXRhCitpbmhlcml0IG1ldGEgaW1hZ2UtcG9zdGluc3QtaW50ZXJjZXB0cwogCiAjIFdpbGRjYXJkcyBzcGVjaWZ5aW5nIGNvbXBsZW1lbnRhcnkgcGFja2FnZXMgdG8gaW5zdGFsbCBmb3IgZXZlcnkgcGFja2FnZSB0aGF0IGhhcyBiZWVuIGV4cGxpY2l0bHkKICMgaW5zdGFsbGVkIGludG8gdGhlIHJvb3RmcwpAQCAtNDAsMTMgKzQwLDEzIEBACiAKIFRPT0xDSEFJTl9IT1NUX1RBU0sgPz0gIm5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgcGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCiBUT09MQ0hBSU5fSE9TVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCi1UT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiR7QG11bHRpbGliX3BrZ19leHRlbmQoZCwgJ3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldCcpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7QG11bHRpbGliX3BrZ19leHRlbmQoZCwgJ3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXknKX0iCitUT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiR7QG11bHRpbGliX3BrZ19leHRlbmQoZCwgJ3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldCcpfSB0YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15IgogVE9PTENIQUlOX1RBUkdFVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCiBUT09MQ0hBSU5fT1VUUFVUTkFNRSA/PSAiJHtTREtfTkFNRX0tdG9vbGNoYWluLSR7U0RLX1ZFUlNJT059IgogCiBTREtfUkRFUEVORFMgPSAiJHtUT09MQ0hBSU5fVEFSR0VUX1RBU0t9ICR7VE9PTENIQUlOX0hPU1RfVEFTS30iCi1TREtfREVQRU5EUyA9ICJ2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZSB4ei1uYXRpdmUgY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSAke01MUFJFRklYfXFlbXV3cmFwcGVyLWNyb3NzIgorU0RLX0RFUEVORFMgPSAidmlydHVhbC9mYWtlcm9vdC1uYXRpdmUgeHotbmF0aXZlIGNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgbmF0aXZlc2RrLXFlbXV3cmFwcGVyLWNyb3NzICR7QCcgJy5qb2luKFsiJXMtcWVtdXdyYXBwZXItY3Jvc3MiICUgbSBmb3IgbSBpbiBkLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiKS5zcGxpdCgpXSl9IHFlbXV3cmFwcGVyLWNyb3NzIgorUEFUSF9wcmVwZW5kID0gIiR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJ9L2Nyb3Nzc2NyaXB0czoke0AiOiIuam9pbihhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgJ1NUQUdJTkdfQklORElSX0NST1NTJykuc3BsaXQoKSl9OiIKIFNES19ERVBFTkRTX2FwcGVuZF9saWJjLWdsaWJjID0gIiBuYXRpdmVzZGstZ2xpYmMtbG9jYWxlIgogCiAjIFdlIHdhbnQgdGhlIE1VTFRJQVJDSF9UQVJHRVRfU1lTIHRvIHBvaW50IHRvIHRoZSBUVU5FX1BLR0FSQ0gsIG5vdCBQQUNLQUdFX0FSQ0ggYXMgaXQKQEAgLTYyLDggKzYyLDggQEAKIFNES19QT1NUX0lOU1RBTExfQ09NTUFORCA/PSAiIgogU0RLX1JFTE9DQVRFX0FGVEVSX0lOU1RBTEwgPz0gIjEiCiAKLVNES0VYVFBBVEggPz0gIn4vJHtAZC5nZXRWYXIoJ0RJU1RSTycpfV9zZGsiCi1TREtfVElUTEUgPz0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScpIG9yIGQuZ2V0VmFyKCdESVNUUk8nKX0gU0RLIgorU0RLRVhUUEFUSCA/Pz0gIn4vJHtAZC5nZXRWYXIoJ0RJU1RSTycpfV9zZGsiCitTREtfVElUTEUgPz89ICIke0BkLmdldFZhcignRElTVFJPX05BTUUnKSBvciBkLmdldFZhcignRElTVFJPJyl9IFNESyIKIAogU0RLX1RBUkdFVF9NQU5JRkVTVCA9ICIke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyZ2V0Lm1hbmlmZXN0IgogU0RLX0hPU1RfTUFOSUZFU1QgPSAiJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9Lmhvc3QubWFuaWZlc3QiCkBAIC0yMjgsMTQgKzIyOCwxNyBAQAogCXRhciAke1NES1RBUk9QVFN9IC1jZiAtIC4gfCB4eiAtVCAwID4gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnRhci54egogfQogCitUT09MQ0hBSU5fU0hBUl9FWFRfVE1QTCA/PSAiJHtDT1JFQkFTRX0vbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoIgorVE9PTENIQUlOX1NIQVJfUkVMX1RNUEwgPz0gIiR7Q09SRUJBU0V9L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItcmVsb2NhdGUuc2giCisKIGZha2Vyb290IGNyZWF0ZV9zaGFyKCkgewogCSMgY29weSBpbiB0aGUgdGVtcGxhdGUgc2hhciBleHRyYWN0b3Igc2NyaXB0Ci0JY3AgJHtDT1JFQkFTRX0vbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAorCWNwICR7VE9PTENIQUlOX1NIQVJfRVhUX1RNUEx9ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAogCiAJcm0gLWYgJHtUfS9wcmVfaW5zdGFsbF9jb21tYW5kICR7VH0vcG9zdF9pbnN0YWxsX2NvbW1hbmQKIAogCWlmIFsgJHtTREtfUkVMT0NBVEVfQUZURVJfSU5TVEFMTH0gLWVxIDEgXSA7IHRoZW4KLQkJY3AgJHtDT1JFQkFTRX0vbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1yZWxvY2F0ZS5zaCAke1R9L3Bvc3RfaW5zdGFsbF9jb21tYW5kCisJCWNwICR7VE9PTENIQUlOX1NIQVJfUkVMX1RNUEx9ICR7VH0vcG9zdF9pbnN0YWxsX2NvbW1hbmQKIAlmaQogCWNhdCA8PCAiRU9GIiA+PiAke1R9L3ByZV9pbnN0YWxsX2NvbW1hbmQKICR7U0RLX1BSRV9JTlNUQUxMX0NPTU1BTkR9CkBAIC0yNTgsNyArMjYxLDcgQEAKIAkJLWUgJ3MjQFNES19WRVJTSU9OQCMke1NES19WRVJTSU9OfSNnJyBcCiAJCS1lICcvQFNES19QUkVfSU5TVEFMTF9DT01NQU5EQC9kJyBcCiAJCS1lICcvQFNES19QT1NUX0lOU1RBTExfQ09NTUFOREAvZCcgXAotCQktZSAncyNAU0RLX0dDQ19WRVJAIyR7QG9lLnV0aWxzLmhvc3RfZ2NjX3ZlcnNpb24oZCl9I2cnIFwKKwkJLWUgJ3MjQFNES19HQ0NfVkVSQCMke0BvZS51dGlscy5ob3N0X2djY192ZXJzaW9uKGQsIHRhc2tjb250ZXh0b25seT1UcnVlKX0jZycgXAogCQkke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uc2gKIAogCSMgYWRkIGV4ZWN1dGlvbiBwZXJtaXNzaW9uCkBAIC0yOTMsMTcgKzI5NiwxOCBAQAogZGVmIHNka192YXJpYWJsZXMoZCk6CiAgICAgdmFyaWFibGVzID0gWydCVUlMRF9JTUFHRVNfRlJPTV9GRUVEUycsJ1NES19PUycsJ1NES19PVVRQVVQnLCdTREtQQVRITkFUSVZFJywnU0RLVEFSR0VUU1lTUk9PVCcsJ1NES19ESVInLCdTREtfVkVORE9SJywnU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJywnU0RLX1BBQ0tBR0VfQVJDSFMnLCdTREtfT1VUUFVUJywKICAgICAgICAgICAgICAgICAgJ1NES1RBUkdFVFNZU1JPT1QnLCdNVUxUSUxJQl9WQVJJQU5UUycsJ01VTFRJTElCUycsJ0FMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTJywnTVVMVElMSUJfR0xPQkFMX1ZBUklBTlRTJywnQkFEX1JFQ09NTUVOREFUSU9OUycsJ05PX1JFQ09NTUVOREFUSU9OUycsJ1BBQ0tBR0VfQVJDSFMnLAotICAgICAgICAgICAgICAgICAnUEFDS0FHRV9DTEFTU0VTJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfQVJDSCcsJ1RBUkdFVF9PUycsJ0JCRVhURU5EVkFSSUFOVCcsJ0ZFRURfREVQTE9ZRElSX0JBU0VfVVJJJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJ10KKyAgICAgICAgICAgICAgICAgJ1BBQ0tBR0VfQ0xBU1NFUycsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfVkVORE9SJywnVEFSR0VUX0FSQ0gnLCdUQVJHRVRfT1MnLCdCQkVYVEVORFZBUklBTlQnLCdGRUVEX0RFUExPWURJUl9CQVNFX1VSSScsICdQQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWScsICdJTUFHRV9JTlNUQUxMX0RFQlVHRlMnXQogICAgIHZhcmlhYmxlcy5leHRlbmQoc2RrX2NvbW1hbmRfdmFyaWFibGVzKGQpKQogICAgIHJldHVybiAiICIuam9pbih2YXJpYWJsZXMpCiAKIGRvX3BvcHVsYXRlX3Nka1t2YXJkZXBzXSArPSAiJHtAc2RrX3ZhcmlhYmxlcyhkKX0iCiAKLWRvX3BvcHVsYXRlX3Nka1tmaWxlLWNoZWNrc3Vtc10gKz0gIiR7Q09SRUJBU0V9L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItcmVsb2NhdGUuc2g6VHJ1ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2g6VHJ1ZSIKK2RvX3BvcHVsYXRlX3Nka1tmaWxlLWNoZWNrc3Vtc10gKz0gIiR7VE9PTENIQUlOX1NIQVJfUkVMX1RNUEx9OlRydWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtUT09MQ0hBSU5fU0hBUl9FWFRfVE1QTH06VHJ1ZSIKIAogZG9fcG9wdWxhdGVfc2RrW2RpcnNdID0gIiR7UEtHREFUQV9ESVJ9ICR7VE9QRElSfSIKIGRvX3BvcHVsYXRlX3Nka1tkZXBlbmRzXSArPSAiJHtAJyAnLmpvaW4oW3ggKyAnOmRvX3BvcHVsYXRlX3N5c3Jvb3QnIGZvciB4IGluIGQuZ2V0VmFyKCdTREtfREVQRU5EUycpLnNwbGl0KCldKX0gICR7QGQuZ2V0VmFyRmxhZygnZG9fcm9vdGZzJywgJ2RlcGVuZHMnLCBGYWxzZSl9IgogZG9fcG9wdWxhdGVfc2RrW3JkZXBlbmRzXSA9ICIke0AnICcuam9pbihbeCArICc6ZG9fcGFja2FnZV93cml0ZV8ke0lNQUdFX1BLR1RZUEV9ICcgKyB4ICsgJzpkb19wYWNrYWdlZGF0YScgZm9yIHggaW4gZC5nZXRWYXIoJ1NES19SREVQRU5EUycpLnNwbGl0KCldKX0iCiBkb19wb3B1bGF0ZV9zZGtbcmVjcmRlcHRhc2tdICs9ICJkb19wYWNrYWdlZGF0YSBkb19wYWNrYWdlX3dyaXRlX3JwbSBkb19wYWNrYWdlX3dyaXRlX2lwayBkb19wYWNrYWdlX3dyaXRlX2RlYiIKK2RvX3BvcHVsYXRlX3Nka1tmaWxlLWNoZWNrc3Vtc10gKz0gIiR7UE9TVElOU1RfSU5URVJDRVBUX0NIRUNLU1VNU30iCiBhZGR0YXNrIHBvcHVsYXRlX3NkawpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCmluZGV4IGUxYmJhNDkuLmUzMGM0OTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKQEAgLTIwMCwxNSArMjAwLDkgQEAKICAgICAgICAgd29ya3NwYWNlX25hbWUgPSAnb3JpZy13b3Jrc3BhY2UnCiAgICAgZWxzZToKICAgICAgICAgd29ya3NwYWNlX25hbWUgPSBOb25lCi0gICAgbGF5ZXJzX2NvcGllZCA9IGJ1aWxkc3lzdGVtLmNvcHlfYml0YmFrZV9hbmRfbGF5ZXJzKGJhc2VvdXRwYXRoICsgJy9sYXllcnMnLCB3b3Jrc3BhY2VfbmFtZSkKIAotICAgIHNka2JibGF5ZXJzID0gW10KLSAgICBjb3JlYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoJ0NPUkVCQVNFJykpCi0gICAgZm9yIGxheWVyIGluIGxheWVyc19jb3BpZWQ6Ci0gICAgICAgIGlmIGNvcmViYXNlID09IG9zLnBhdGguYmFzZW5hbWUobGF5ZXIpOgotICAgICAgICAgICAgY29uZl9iYnBhdGggPSBvcy5wYXRoLmpvaW4oJ2xheWVycycsIGxheWVyLCAnYml0YmFrZScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZGtiYmxheWVycy5hcHBlbmQobGF5ZXIpCisgICAgY29yZWJhc2UsIHNka2JibGF5ZXJzID0gYnVpbGRzeXN0ZW0uY29weV9iaXRiYWtlX2FuZF9sYXllcnMoYmFzZW91dHBhdGggKyAnL2xheWVycycsIHdvcmtzcGFjZV9uYW1lKQorICAgIGNvbmZfYmJwYXRoID0gb3MucGF0aC5qb2luKCdsYXllcnMnLCBjb3JlYmFzZSwgJ2JpdGJha2UnKQogCiAgICAgZm9yIHBhdGggaW4gb3MubGlzdGRpcihiYXNlb3V0cGF0aCArICcvbGF5ZXJzJyk6CiAgICAgICAgIHJlbHBhdGggPSBvcy5wYXRoLmpvaW4oJ2xheWVycycsIHBhdGgsIG9lX2luaXRfZW52X3NjcmlwdCkKQEAgLTMyNSw4ICszMTksOSBAQAogICAgICAgICAgICAgZi53cml0ZSgnVENMSUJDQVBQRU5EID0gIiJcbicpCiAgICAgICAgICAgICBmLndyaXRlKCdETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkcyJcbicpCiAKLSAgICAgICAgICAgIGYud3JpdGUoJ0lOSEVSSVQgKz0gIiVzIlxuJyAlICd1bmluYXRpdmUnKQotICAgICAgICAgICAgZi53cml0ZSgnVU5JTkFUSVZFX0NIRUNLU1VNWyVzXSA9ICIlcyJcblxuJyAlIChkLmdldFZhcignQlVJTERfQVJDSCcpLCB1bmluYXRpdmVfY2hlY2tzdW0pKQorICAgICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygndW5pbmF0aXZlJywgZCk6CisgICAgICAgICAgICAgICBmLndyaXRlKCdJTkhFUklUICs9ICIlcyJcbicgJSAndW5pbmF0aXZlJykKKyAgICAgICAgICAgICAgIGYud3JpdGUoJ1VOSU5BVElWRV9DSEVDS1NVTVslc10gPSAiJXMiXG5cbicgJSAoZC5nZXRWYXIoJ0JVSUxEX0FSQ0gnKSwgdW5pbmF0aXZlX2NoZWNrc3VtKSkKICAgICAgICAgICAgIGYud3JpdGUoJ0NPTkZfVkVSU0lPTiA9ICIlcyJcblxuJyAlIGQuZ2V0VmFyKCdDT05GX1ZFUlNJT04nLCBGYWxzZSkpCiAKICAgICAgICAgICAgICMgU29tZSBjbGFzc2VzIGFyZSBub3Qgc3VpdGFibGUgZm9yIFNESywgcmVtb3ZlIHRoZW0gZnJvbSBJTkhFUklUCkBAIC01MzYsNyArNTMxLDggQEAKIAlzY3JpcHRzPSJkZXZ0b29sIHJlY2lwZXRvb2wgb2UtZmluZC1uYXRpdmUtc3lzcm9vdCBydW5xZW11KiB3aWMiCiAJZm9yIHNjcmlwdCBpbiAkc2NyaXB0czsgZG8KIAkJZm9yIHNjcmlwdGZuIGluIGBmaW5kICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS8ke3NjcmlwdHJlbHBhdGh9IC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC1uYW1lICIkc2NyaXB0ImA7IGRvCi0JCQlsbnIgJHtzY3JpcHRmbn0gJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfS9gYmFzZW5hbWUgJHNjcmlwdGZuYAorCQkJdGFyZ2V0c2NyaXB0Zm49IiR7U0RLX09VVFBVVH0vJHtTREtQQVRITkFUSVZFfSR7YmluZGlyX25hdGl2ZXNka30vJChiYXNlbmFtZSAkc2NyaXB0Zm4pIgorCQkJdGVzdCAtZSAke3RhcmdldHNjcmlwdGZufSB8fCBsbnIgJHtzY3JpcHRmbn0gJHt0YXJnZXRzY3JpcHRmbn0KIAkJZG9uZQogCWRvbmUKIAkjIFdlIGNhbid0IHVzZSB0aGUgc2FtZSBtZXRob2QgYXMgYWJvdmUgYmVjYXVzZSBmaWxlcyBpbiB0aGUgc3lzcm9vdCB3b24ndCBleGlzdCBhdCB0aGlzIHBvaW50CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKaW5kZXggODk2NjVlZi4uZGExMmE3MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcwpAQCAtMSw4ICsxLDggQEAKIGluaGVyaXQgcHl0aG9uMy1kaXIKIAotUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0iCi1FWFRSQU5BVElWRVBBVEggKz0gIiR7UFlUSE9OX1BOfS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZCA9ICIgJHtQWVRIT05fUE59LW5hdGl2ZSAiCitQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIgorRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24zLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kID0gIiBweXRob24zLW5hdGl2ZSAiCiAKICMgcHl0aG9uLWNvbmZpZyBhbmQgb3RoZXIgc2NyaXB0cyBhcmUgdXNpbmcgZGlzdHV0aWxzIG1vZHVsZXMKICMgd2hpY2ggd2UgcGF0Y2ggdG8gYWNjZXNzIHRoZXNlIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwppbmRleCA0Y2M4YjI3Li5hZTY2MDBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwpAQCAtMSwxMSArMSwxMSBAQAogCiBpbmhlcml0IHB5dGhvbi1kaXIKIAotUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0iCitQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiIKICMgUFlUSE9OX0VYRUNVVEFCTEUgaXMgdXNlZCBieSBjbWFrZQogUFlUSE9OX0VYRUNVVEFCTEU9IiR7UFlUSE9OfSIKLUVYVFJBTkFUSVZFUEFUSCArPSAiJHtQWVRIT05fUE59LW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kID0gIiAke1BZVEhPTl9QTn0tbmF0aXZlICIKK0VYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kID0gIiBweXRob24tbmF0aXZlICIKIAogIyBweXRob24tY29uZmlnIGFuZCBvdGhlciBzY3JpcHRzIGFyZSB1c2luZyBkaXN0dXRpbHMgbW9kdWxlcwogIyB3aGljaCB3ZSBwYXRjaCB0byBhY2Nlc3MgdGhlc2UgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCmluZGV4IDJkZjgwNTMuLjBlYjY5NmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCkBAIC0xLDMzICsxLDM1IEBACi0jCiAjIHJlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCiAjCi0jIFRoaXMgYmJjbGFzcyBpcyBtYWlubHkgcmVzcG9uc2libGUgdG8gZGV0ZXJtaW5lIFNPVVJDRV9EQVRFX0VQT0NIIG9uIGEgcGVyIHJlY2lwZSBiYXNlLgotIyBXZSBuZWVkIHRvIHNldCBhIHJlY2lwZSBzcGVjaWZpYyBTT1VSQ0VfREFURV9FUE9DSCBpbiBlYWNoIHJlY2lwZSBlbnZpcm9ubWVudCBmb3IgdmFyaW91cyB0YXNrcy4KLSMgT25lIHdheSB3b3VsZCBiZSB0byBtb2RpZnkgYWxsIHJlY2lwZXMgb25lLWJ5LW9uZSB0byBzcGVjaWZ5IFNPVVJDRV9EQVRFX0VQT0NIIGV4cGxpY2l0bHksIAotIyBidXQgdGhhdCBpcyBub3QgcmVhbGlzdGljIGFzIHRoZXJlIGFyZSBodW5kcmVkcyAocHJvYmFibHkgdGhvdXNhbmRzKSBvZiByZWNpcGVzIGluIHZhcmlvdXMgbWV0YS1sYXllcnMuCi0jIFRoZXJlZm9yZSB3ZSBkbyBpdCB0aGlzIGNsYXNzLiAKLSMgQWZ0ZXIgc291cmNlcyBhcmUgdW5wYWNrZWQgYnV0IGJlZm9yZSB0aGV5IGFyZSBwYXRjaGVkLCB3ZSB0cnkgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBmb3IgU09VUkNFX0RBVEVfRVBPQ0guCisjIFNldHMgU09VUkNFX0RBVEVfRVBPQ0ggaW4gZWFjaCBjb21wb25lbnQncyBidWlsZCBlbnZpcm9ubWVudC4KKyMgVXBzdHJlYW0gY29tcG9uZW50cyAoZ2VuZXJhbGx5KSByZXNwZWN0IHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUsCisjIHVzaW5nIGl0IGluIHBsYWNlIG9mIHRoZSAiY3VycmVudCIgZGF0ZSBhbmQgdGltZS4KKyMgU2VlIGh0dHBzOi8vcmVwcm9kdWNpYmxlLWJ1aWxkcy5vcmcvc3BlY3Mvc291cmNlLWRhdGUtZXBvY2gvCiAjCi0jIFRoZXJlIGFyZSA0IHdheXMgdG8gZGV0ZXJtaW5lIFNPVVJDRV9EQVRFX0VQT0NIOgorIyBBZnRlciBzb3VyY2VzIGFyZSB1bnBhY2tlZCBidXQgYmVmb3JlIHRoZXkgYXJlIHBhdGNoZWQsIHdlIHNldCBhIHJlcHJvZHVjaWJsZSB2YWx1ZSBmb3IgU09VUkNFX0RBVEVfRVBPQ0guCisjIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHJlcHJvZHVjaWJsZSBmb3IgYW55b25lIHdobyBidWlsZHMgdGhlIHNhbWUgcmV2aXNpb24gZnJvbSB0aGUgc2FtZSBzb3VyY2VzLgogIwotIyAxLiBVc2UgdmFsdWUgZnJvbSBfX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dCBmaWxlIGlmIHRoaXMgZmlsZSBleGlzdHMuIAotIyAgICBUaGlzIGZpbGUgd2FzIG1vc3QgbGlrZWx5IGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIGJ1aWxkIGJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgMiwzLDQuIAotIyAgICBJbiBwcmluY2lwbGUsIGl0IGNvdWxkIGFjdHVhbGx5IHByb3ZpZGVkIGJ5IGEgcmVjaXBlIHZpYSBTUkNfVVJJCisjIFRoZXJlIGFyZSA0IHdheXMgd2UgZGV0ZXJtaW5lIFNPVVJDRV9EQVRFX0VQT0NIOgogIwotIyBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgZmlyc3QgdHJ5IHRvIGRldGVybWluZSB0aGUgdmFsdWUgZm9yIFNPVVJDRV9EQVRFX0VQT0NIOgorIyAxLiBVc2UgdGhlIHZhbHVlIGZyb20gX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQgZmlsZSBpZiB0aGlzIGZpbGUgZXhpc3RzLgorIyAgICBUaGlzIGZpbGUgd2FzIG1vc3QgbGlrZWx5IGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIGJ1aWxkIGJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgMiwzLDQuCisjICAgIEFsdGVybmF0aXZlbHksIGl0IGNhbiBiZSBwcm92aWRlZCBieSBhIHJlY2lwZSB2aWEgU1JDX1VSSS4KICMKLSMgMi4gSWYgd2UgZGV0ZWN0ZWQgYSBmb2xkZXIgLmdpdCwgdXNlIC5naXQgbGFzdCBjb21taXQgZGF0ZSB0aW1lc3RhbXAsIGFzIGdpdCBkb2VzIG5vdCBhbGxvdyBjaGVja2luZyBvdXQKLSMgICAgZmlsZXMgYW5kIHByZXNlcnZpbmcgdGhlaXIgdGltZXN0YW1wcy4KKyMgSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Q6CisjCisjIDIuIElmIHRoZXJlIGlzIGEgZ2l0IGNoZWNrb3V0LCB1c2UgdGhlIGxhc3QgZ2l0IGNvbW1pdCB0aW1lc3RhbXAuCisjICAgIEdpdCBkb2VzIG5vdCBwcmVzZXJ2ZSBmaWxlIHRpbWVzdGFtcHMgb24gY2hlY2tvdXQuCiAjCiAjIDMuIFVzZSB0aGUgbXRpbWUgb2YgImtub3duIiBmaWxlcyBzdWNoIGFzIE5FV1MsIENIQU5HTEVMT0csIC4uLgotIyAgICBUaGlzIHdpbGwgd29yayBmaW5lIGZvciBhbnkgd2VsbCBrZXB0IHJlcG9zaXRvcnkgZGlzdHJpYnV0ZWQgdmlhIHRhcmJhbGxzLgorIyAgICBUaGlzIHdvcmtzIGZvciB3ZWxsLWtlcHQgcmVwb3NpdG9yaWVzIGRpc3RyaWJ1dGVkIHZpYSB0YXJiYWxsLgogIwotIyA0LiBJZiB0aGUgYWJvdmUgc3RlcHMgZmFpbCwgd2UgbmVlZCB0byBjaGVjayBhbGwgcGFja2FnZSBzb3VyY2UgZmlsZXMgYW5kIHVzZSB0aGUgeW91bmdlc3QgZmlsZSBvZiB0aGUgc291cmNlIHRyZWUuCisjIDQuIElmIHRoZSBhYm92ZSBzdGVwcyBmYWlsLCB1c2UgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSB5b3VuZ2VzdCBmaWxlIGluIHRoZSBzb3VyY2UgdHJlZS4KICMKLSMgT25jZSB0aGUgdmFsdWUgb2YgU09VUkNFX0RBVEVfRVBPQ0ggaXMgZGV0ZXJtaW5lZCwgaXQgaXMgc3RvcmVkIGluIHRoZSByZWNpcGUgJHtXT1JLRElSfS9zb3VyY2VfZGF0ZV9lcG9jaCBmb2xkZXIKLSMgaW4gYSB0ZXh0IGZpbGUgIl9fc291cmNlX2RhdGVfZXBvY2gudHh0Jy4gSWYgdGhpcyBmaWxlIGlzIGZvdW5kIGJ5IG90aGVyIHJlY2lwZSB0YXNrLCB0aGUgdmFsdWUgaXMgZXhwb3J0ZWQgaW4KLSMgdGhlIFNPVVJDRV9EQVRFX0VQT0NIIHZhcmlhYmxlIGluIHRoZSB0YXNrIGVudmlyb25tZW50LiBUaGlzIGlzIGRvbmUgaW4gYW4gYW5vbnltb3VzIHB5dGhvbiBmdW5jdGlvbiwgCi0jIHNvIFNPVVJDRV9EQVRFX0VQT0NIIGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QgZm9yIGFsbCB0YXNrcyB0aGUgbWF5IHVzZSBpdCAoZG9fY29uZmlndXJlLCBkb19jb21waWxlLCBkb19wYWNrYWdlLCAuLi4pCisjIE9uY2UgdGhlIHZhbHVlIG9mIFNPVVJDRV9EQVRFX0VQT0NIIGlzIGRldGVybWluZWQsIGl0IGlzIHN0b3JlZCBpbiB0aGUgcmVjaXBlJ3MgU0RFX0ZJTEUuCisjIElmIG5vbmUgb2YgdGhlc2UgbWVjaGFuaXNtcyBhcmUgc3VpdGFibGUsIHJlcGxhY2UgdGhlIGRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaCB0YXNrCisjIHdpdGggcmVjaXBlLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgdG8gd3JpdGUgdGhlIGFwcHJvcHJpYXRlIFNPVVJDRV9EQVRFX0VQT0NIIGludG8gdGhlIFNERV9GSUxFLgorIworIyBJZiB0aGlzIGZpbGUgaXMgZm91bmQgYnkgb3RoZXIgdGFza3MsIHRoZSB2YWx1ZSBpcyBleHBvcnRlZCBpbiB0aGUgU09VUkNFX0RBVEVfRVBPQ0ggdmFyaWFibGUuCisjIFNPVVJDRV9EQVRFX0VQT0NIIGlzIHNldCBmb3IgYWxsIHRhc2tzIHRoYXQgbWlnaHQgdXNlIGl0IChkb19jb25maWd1cmUsIGRvX2NvbXBpbGUsIGRvX3BhY2thZ2UsIC4uLikKIAogQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTID8/PSAnMScKIGluaGVyaXQgJHtAb2UudXRpbHMuaWZlbHNlKGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSA9PSAnMScsICdyZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlJywgJycpfQpAQCAtNTAsODYgKzUyLDEwMCBAQAogYWRkdGFzayBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hfc2V0c2NlbmUKIGFkZHRhc2sgZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIGJlZm9yZSBkb19jb25maWd1cmUgYWZ0ZXIgZG9fcGF0Y2gKIAotZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9rbm93bl9maWxlcyhkLCBwYXRoKToKLSAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKK2RlZiBnZXRfc291cmNlX2RhdGVfZXBvY2hfZnJvbV9rbm93bl9maWxlcyhkLCBzb3VyY2VkaXIpOgorICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gTm9uZQorICAgIG5ld2VzdF9maWxlID0gTm9uZQogICAgIGtub3duX2ZpbGVzID0gc2V0KFsiTkVXUyIsICJDaGFuZ2VMb2ciLCAiQ2hhbmdlbG9nIiwgIkNIQU5HRVMiXSkKICAgICBmb3IgZmlsZSBpbiBrbm93bl9maWxlczoKLSAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCxmaWxlKQorICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2VkaXIsIGZpbGUpCiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVwYXRoKToKLSAgICAgICAgICAgIG10aW1lID0gaW50KG9zLnBhdGguZ2V0bXRpbWUoZmlsZXBhdGgpKQorICAgICAgICAgICAgbXRpbWUgPSBpbnQob3MubHN0YXQoZmlsZXBhdGgpLnN0X210aW1lKQogICAgICAgICAgICAgIyBUaGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSAia25vd25fZmlsZSIgcHJlc2VudCwgaWYgc28sIHVzZSB0aGUgeW91bmdlc3Qgb25lCi0gICAgICAgICAgICBpZiBtdGltZSA+IHNvdXJjZV9kYXRlX2Vwb2NoOgorICAgICAgICAgICAgaWYgbm90IHNvdXJjZV9kYXRlX2Vwb2NoIG9yIG10aW1lID4gc291cmNlX2RhdGVfZXBvY2g6CiAgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBtdGltZQorICAgICAgICAgICAgICAgIG5ld2VzdF9maWxlID0gZmlsZXBhdGgKKyAgICBpZiBuZXdlc3RfZmlsZToKKyAgICAgICAgYmIuZGVidWcoMSwgIlNPVVJDRV9EQVRFX0VQT0NIIHRha2VuIGZyb206ICVzIiAlIG5ld2VzdF9maWxlKQogICAgIHJldHVybiBzb3VyY2VfZGF0ZV9lcG9jaAogCi1kZWYgZmluZF9naXRfZm9sZGVyKHBhdGgpOgotICAgIGV4Y2x1ZGUgPSBzZXQoWyJ0ZW1wIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJyZWNpcGUtc3lzcm9vdCIsICJwc2V1ZG8iLCAiYnVpbGQiLCAiaW1hZ2UiLCAic3lzcm9vdC1kZXN0ZGlyIl0pCi0gICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCwgdG9wZG93bj1UcnVlKToKK2RlZiBmaW5kX2dpdF9mb2xkZXIoZCwgc291cmNlZGlyKToKKyAgICAjIEZpcnN0IGd1ZXNzOiBXT1JLRElSL2dpdAorICAgICMgVGhpcyBpcyB0aGUgZGVmYXVsdCBnaXQgZmV0Y2hlciB1bnBhY2sgcGF0aAorICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCisgICAgZ2l0cGF0aCA9IG9zLnBhdGguam9pbih3b3JrZGlyLCAiZ2l0Ly5naXQiKQorICAgIGlmIG9zLnBhdGguaXNkaXIoZ2l0cGF0aCk6CisgICAgICAgIHJldHVybiBnaXRwYXRoCisKKyAgICAjIFNlY29uZCBndWVzczogJHtTfQorICAgIGdpdHBhdGggPSBvcy5wYXRoLmpvaW4oc291cmNlZGlyLCAiLmdpdCIpCisgICAgaWYgb3MucGF0aC5pc2RpcihnaXRwYXRoKToKKyAgICAgICAgcmV0dXJuIGdpdHBhdGgKKworICAgICMgUGVyaGFwcyB0aGVyZSB3YXMgYSBzdWJwYXRoIG9yIGRlc3RzdWZmaXggc3BlY2lmaWVkLgorICAgICMgR28gbG9va2luZyBpbiB0aGUgV09SS0RJUgorICAgIGV4Y2x1ZGUgPSBzZXQoWyJidWlsZCIsICJpbWFnZSIsICJsaWNlbnNlLWRlc3RkaXIiLCAicGF0Y2hlcyIsICJwc2V1ZG8iLAorICAgICAgICAgICAgICAgICAgICJyZWNpcGUtc3lzcm9vdCIsICJyZWNpcGUtc3lzcm9vdC1uYXRpdmUiLCAic3lzcm9vdC1kZXN0ZGlyIiwgInRlbXAiXSkKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayh3b3JrZGlyLCB0b3Bkb3duPVRydWUpOgogICAgICAgICBkaXJzWzpdID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBleGNsdWRlXQogICAgICAgICBpZiAnLmdpdCcgaW4gZGlyczoKLSAgICAgICAgICAgICNiYi53YXJuKCJmb3VuZCByb290OiVzIiAlIChzdHIocm9vdCkpKQogICAgICAgICAgICAgcmV0dXJuIHJvb3QKLSAgICAgCi1kZWYgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2dpdChkLCBwYXRoKToKLSAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKLSAgICBpZiAiZ2l0Oi8vIiBpbiBkLmdldFZhcignU1JDX1VSSScpOgotICAgICAgICBnaXRwYXRoID0gZmluZF9naXRfZm9sZGVyKGQuZ2V0VmFyKCdXT1JLRElSJykpCi0gICAgICAgIGlmIGdpdHBhdGggIT0gTm9uZToKLSAgICAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihnaXRwYXRoLCIuZ2l0IikpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBpbnQoc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCdsb2cnLCctMScsJy0tcHJldHR5PSVjdCddLCBjd2Q9cGF0aCkpCi0gICAgICAgICAgICAgICAgICAgICNiYi53YXJuKCJKQiAqKiogZ2l0cGF0aDolcyBzZGU6ICVkIiAlIChnaXRwYXRoLHNvdXJjZV9kYXRlX2Vwb2NoKSkKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgImdpdCByZXBvIHBhdGg6JXMgc2RlOiAlZCIgJSAoZ2l0cGF0aCxzb3VyY2VfZGF0ZV9lcG9jaCkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGdyZXBleGM6Ci0gICAgICAgICAgICAgICAgICAgICNiYi53YXJuKCAiRXhwZWN0ZWQgZ2l0IHJlcG9zaXRvcnkgbm90IGZvdW5kLCAocGF0aDogJXMpIGVycm9yOiVkIiAlIChnaXRwYXRoLCBncmVwZXhjLnJldHVybmNvZGUpKQotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiRXhwZWN0ZWQgZ2l0IHJlcG9zaXRvcnkgbm90IGZvdW5kLCAocGF0aDogJXMpIGVycm9yOiVkIiAlIChnaXRwYXRoLCBncmVwZXhjLnJldHVybmNvZGUpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIGZpbmQgYSBnaXQgcmVwb3NpdG9yeSBmb3IgcGF0aDolcyIgJSAocGF0aCkpCi0gICAgcmV0dXJuIHNvdXJjZV9kYXRlX2Vwb2NoCi0gICAgICAgICAgICAKLXB5dGhvbiBkb19jcmVhdGVfc291cmNlX2RhdGVfZXBvY2hfc3RhbXAoKSB7Ci0gICAgcGF0aCA9IGQuZ2V0VmFyKCdTJykKLSAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgYmIud2FybigiVW5hYmxlIHRvIGRldGVybWluZSBzb3VyY2VfZGF0ZV9lcG9jaCEgcGF0aDolcyIgJSBwYXRoKQotICAgICAgICByZXR1cm4KIAorICAgIGJiLndhcm4oIkZhaWxlZCB0byBmaW5kIGEgZ2l0IHJlcG9zaXRvcnkgaW4gV09SS0RJUjogJXMiICUgd29ya2RpcikKKyAgICByZXR1cm4gTm9uZQorCitkZWYgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2Zyb21fZ2l0KGQsIHNvdXJjZWRpcik6CisgICAgc291cmNlX2RhdGVfZXBvY2ggPSBOb25lCisgICAgaWYgImdpdDovLyIgaW4gZC5nZXRWYXIoJ1NSQ19VUkknKToKKyAgICAgICAgZ2l0cGF0aCA9IGZpbmRfZ2l0X2ZvbGRlcihkLCBzb3VyY2VkaXIpCisgICAgICAgIGlmIGdpdHBhdGg6CisgICAgICAgICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBpbnQoc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCdsb2cnLCctMScsJy0tcHJldHR5PSVjdCddLCBjd2Q9Z2l0cGF0aCkpCisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiZ2l0IHJlcG9zaXRvcnk6ICVzIiAlIGdpdHBhdGgpCisgICAgcmV0dXJuIHNvdXJjZV9kYXRlX2Vwb2NoCisKK2RlZiBnZXRfc291cmNlX2RhdGVfZXBvY2hfZnJvbV95b3VuZ2VzdF9maWxlKGQsIHNvdXJjZWRpcik6CisgICAgIyBEbyBpdCB0aGUgaGFyZCB3YXk6IGNoZWNrIGFsbCBmaWxlcyBhbmQgZmluZCB0aGUgeW91bmdlc3Qgb25lLi4uCisgICAgc291cmNlX2RhdGVfZXBvY2ggPSBOb25lCisgICAgbmV3ZXN0X2ZpbGUgPSBOb25lCisgICAgIyBKdXN0IGluIGNhc2UgUyA9IFdPUktESVIKKyAgICBleGNsdWRlID0gc2V0KFsiYnVpbGQiLCAiaW1hZ2UiLCAibGljZW5zZS1kZXN0ZGlyIiwgInBhdGNoZXMiLCAicHNldWRvIiwKKyAgICAgICAgICAgICAgICAgICAicmVjaXBlLXN5c3Jvb3QiLCAicmVjaXBlLXN5c3Jvb3QtbmF0aXZlIiwgInN5c3Jvb3QtZGVzdGRpciIsICJ0ZW1wIl0pCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc291cmNlZGlyLCB0b3Bkb3duPVRydWUpOgorICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIGZpbGVzIGlmIG5vdCBmWzBdID09ICcuJ10KKyAgICAgICAgZGlyc1s6XSA9IFtkIGZvciBkIGluIGRpcnMgaWYgZCBub3QgaW4gZXhjbHVkZV0KKworICAgICAgICBmb3IgZm5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihyb290LCBmbmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtdGltZSA9IGludChvcy5sc3RhdChmaWxlbmFtZSkuc3RfbXRpbWUpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBtdGltZSA9IDAKKyAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VfZGF0ZV9lcG9jaCBvciBtdGltZSA+IHNvdXJjZV9kYXRlX2Vwb2NoOgorICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gbXRpbWUKKyAgICAgICAgICAgICAgICBuZXdlc3RfZmlsZSA9IGZpbGVuYW1lCisKKyAgICBpZiBuZXdlc3RfZmlsZToKKyAgICAgICAgYmIuZGVidWcoMSwgIk5ld2VzdCBmaWxlIGZvdW5kOiAlcyIgJSBuZXdlc3RfZmlsZSkKKyAgICByZXR1cm4gc291cmNlX2RhdGVfZXBvY2gKKworcHl0aG9uIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCgpIHsKICAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQogICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6Ci0gICAgICAgIGJiLmRlYnVnKDEsICIgcGF0aDogJXMgcmV1c2luZyBfX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dCIgJSBlcG9jaGZpbGUpCisgICAgICAgIGJiLmRlYnVnKDEsICJSZXVzaW5nIFNPVVJDRV9EQVRFX0VQT0NIIGZyb206ICVzIiAlIGVwb2NoZmlsZSkKICAgICAgICAgcmV0dXJuCi0gCi0gICAgIyBUcnkgdG8gZGV0ZWN0L2ZpbmQgYSBnaXQgcmVwb3NpdG9yeQotICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2dpdChkLCBwYXRoKQorCisgICAgc291cmNlZGlyID0gZC5nZXRWYXIoJ1MnKQorICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gKAorICAgICAgICBnZXRfc291cmNlX2RhdGVfZXBvY2hfZnJvbV9naXQoZCwgc291cmNlZGlyKSBvcgorICAgICAgICBnZXRfc291cmNlX2RhdGVfZXBvY2hfZnJvbV9rbm93bl9maWxlcyhkLCBzb3VyY2VkaXIpIG9yCisgICAgICAgIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9mcm9tX3lvdW5nZXN0X2ZpbGUoZCwgc291cmNlZGlyKSBvcgorICAgICAgICAwICAgICAgICMgTGFzdCByZXNvcnQKKyAgICApCiAgICAgaWYgc291cmNlX2RhdGVfZXBvY2ggPT0gMDoKLSAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBnZXRfc291cmNlX2RhdGVfZXBvY2hfa25vd25fZmlsZXMoZCwgcGF0aCkKLSAgICBpZiBzb3VyY2VfZGF0ZV9lcG9jaCA9PSAwOgotICAgICAgICAjIERvIGl0IHRoZSBoYXJkIHdheTogY2hlY2sgYWxsIGZpbGVzIGFuZCBmaW5kIHRoZSB5b3VuZ2VzdCBvbmUuLi4KLSAgICAgICAgZmlsZW5hbWVfZGJnID0gTm9uZQotICAgICAgICBleGNsdWRlID0gc2V0KFsidGVtcCIsICJsaWNlbnNlLWRlc3RkaXIiLCAicGF0Y2hlcyIsICJyZWNpcGUtc3lzcm9vdC1uYXRpdmUiLCAicmVjaXBlLXN5c3Jvb3QiLCAicHNldWRvIiwgImJ1aWxkIiwgImltYWdlIiwgInN5c3Jvb3QtZGVzdGRpciJdKQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoLCB0b3Bkb3duPVRydWUpOgotICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBmaWxlcyBpZiBub3QgZlswXSA9PSAnLiddCi0gICAgICAgICAgICBkaXJzWzpdID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBleGNsdWRlXQorICAgICAgICAjIGVtcHR5IGZvbGRlciwgbm90IGEgc2luZ2xlIGZpbGUgLi4uCisgICAgICAgIGJiLmRlYnVnKDEsICJObyBmaWxlcyBmb3VuZCB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0giKQogCi0gICAgICAgICAgICBmb3IgZm5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZm5hbWUpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtdGltZSA9IGludChvcy5wYXRoLmdldG10aW1lKGZpbGVuYW1lKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgbXRpbWUgPSAwCi0gICAgICAgICAgICAgICAgaWYgbXRpbWUgPiBzb3VyY2VfZGF0ZV9lcG9jaDoKLSAgICAgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBtdGltZQotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9kYmcgPSBmaWxlbmFtZQotCi0gICAgICAgIGlmIGZpbGVuYW1lX2RiZyAhPSBOb25lOgotICAgICAgICAgICAgYmIuZGVidWcoMSwiIFNPVVJDRV9EQVRFX0VQT0NIICVkIGRlcml2ZWQgZnJvbTogJXMiICUgKHNvdXJjZV9kYXRlX2Vwb2NoLCBmaWxlbmFtZV9kYmcpKQotCi0gICAgICAgIGlmIHNvdXJjZV9kYXRlX2Vwb2NoID09IDA6Ci0gICAgICAgICAgICAjIGVtcHR5IGZvbGRlciwgbm90IGEgc2luZ2xlIGZpbGUgLi4uCi0gICAgICAgICAgICAjIGtlcm5lbCBzb3VyY2UgZG9fdW5wYWNrIGlzIHNwZWNpYWwgY2FzZWQKLSAgICAgICAgICAgIGlmIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBkKToKLSAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiVW5hYmxlIHRvIGRldGVybWluZSBzb3VyY2VfZGF0ZV9lcG9jaCEgcGF0aDolcyIgJSBwYXRoKQotCisgICAgYmIuZGVidWcoMSwgIlNPVVJDRV9EQVRFX0VQT0NIOiAlZCIgJSBzb3VyY2VfZGF0ZV9lcG9jaCkKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoJ1NERV9ESVInKSkKICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAndycpIGFzIGY6CiAgICAgICAgIGYud3JpdGUoc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKSkKQEAgLTE0NSw2ICsxNjEsNiBAQAogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShlcG9jaGZpbGUpOgogICAgICAgICAgICAgd2l0aCBvcGVuKGVwb2NoZmlsZSwgJ3InKSBhcyBmOgogICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGJiLmRlYnVnKDEsICJzb3VyY2VfZGF0ZV9lcG9jaCBzdGFtcCBmb3VuZCAtLS0+IHN0YW1wICVzIiAlIHNvdXJjZV9kYXRlX2Vwb2NoKQorICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNPVVJDRV9EQVRFX0VQT0NIOiAlcyIgJSBzb3VyY2VfZGF0ZV9lcG9jaCkKICAgICAgICAgZC5zZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJywgc291cmNlX2RhdGVfZXBvY2gpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKaW5kZXggMzFkOTllNC4uMTBlMTM0YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwpAQCAtNDcsNTkgKzQ3LDYwIEBACiAgICAgY2QgYGRpcm5hbWUgJHtTVEFNUH1gCiAgICAgZm9yIGkgaW4gYGJhc2VuYW1lICR7U1RBTVB9YCoKICAgICBkbwotICAgICAgICBmb3IgaiBpbiAke1NTVEFURVRBU0tTfSBkb19zaGFyZWRfd29ya2RpcgotICAgICAgICBkbwotICAgICAgICAgICAgY2FzZSAkaSBpbgotICAgICAgICAgICAgKmRvX3NldHNjZW5lKikKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqc2lnZGF0YSp8KnNpZ2Jhc2VkYXRhKikKLSAgICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKmRvX3BhY2thZ2Vfd3JpdGUqKQotICAgICAgICAgICAgICAgIGk9ZHVtbXkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqZG9faW1hZ2VfY29tcGxldGUqKQotICAgICAgICAgICAgICAgIG12ICRpIGBlY2hvICRpIHwgc2VkIC1lICJzI2RvX2ltYWdlX2NvbXBsZXRlI2RvX2ltYWdlX2NvbXBsZXRlX3NldHNjZW5lIyJgCi0gICAgICAgICAgICAgICAgaT1kdW1teQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICpkb19yb290ZnMqfCpkb19pbWFnZSp8KmRvX2Jvb3RpbWcqfCpkb193cml0ZV9xZW11Ym9vdF9jb25mKikKLSAgICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKmRvX2J1aWxkKikKLSAgICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKmRvX2FkZHRvX3JlY2lwZV9zeXNyb290KikKLSAgICAgICAgICAgICAgICAjIFByZXNlcnZlIHJlY2lwZS1zeXNyb290LW5hdGl2ZSBpZiBkb19hZGR0b19yZWNpcGVfc3lzcm9vdCBoYXMgYmVlbiB1c2VkCi0gICAgICAgICAgICAgICAgZXhjbHVkZXM9IiRleGNsdWRlcyByZWNpcGUtc3lzcm9vdC1uYXRpdmUiCi0gICAgICAgICAgICAgICAgaT1kdW1teQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgOzsKKyAgICAgICAgIyBCeSBkZWZhdWx0IHdlJ2xsIGRlbGV0ZSB0aGUgc3RhbXAsIHVubGVzcyAkaSBpcyBjaGFuZ2VkIGJ5IHRoZSBpbm5lciBsb29wCisgICAgICAgICMgKGk9ZHVtbXkgZG9lcyB0aGlzKQorCisgICAgICAgIGNhc2UgJGkgaW4KKyAgICAgICAgKnNpZ2RhdGEqfCpzaWdiYXNlZGF0YSopCisgICAgICAgICAgICAjIFNhdmUvc2tpcCBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2UgYSBzaWduYXR1cmUgZGF0YSBmaWxlLgorICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgKmRvX2ltYWdlX2NvbXBsZXRlX3NldHNjZW5lKikKKyAgICAgICAgICAgICMgRW5zdXJlIHdlIGRvbid0ICdzdGFjaycgc2V0c2NlbmUgZXh0ZW5zaW9ucyB0byB0aGlzIHN0YW1wIHdpdGggdGhlIHNlY3Rpb24gYmVsb3cKKyAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgIDs7CisgICAgICAgICpkb19pbWFnZV9jb21wbGV0ZSopCisgICAgICAgICAgICAjIFByb21vdGUgZG9faW1hZ2VfY29tcGxldGUgc3RhbXBzIHRvIHNldHNjZW5lIHZlcnNpb25zIChhaGVhZCBvZiAqZG9faW1hZ2UqIGJlbG93KQorICAgICAgICAgICAgbXYgJGkgYGVjaG8gJGkgfCBzZWQgLWUgInMjZG9faW1hZ2VfY29tcGxldGUjZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUjImAKKyAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgIDs7CisgICAgICAgICpkb19wYWNrYWdlX3dyaXRlKnwqZG9fcm9vdGZzKnwqZG9faW1hZ2UqfCpkb19ib290aW1nKnwqZG9fd3JpdGVfcWVtdWJvb3RfY29uZip8KmRvX2J1aWxkKikKKyAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgIDs7CisgICAgICAgICpkb19hZGR0b19yZWNpcGVfc3lzcm9vdCopCisgICAgICAgICAgICAjIFByZXNlcnZlIHJlY2lwZS1zeXNyb290LW5hdGl2ZSBpZiBkb19hZGR0b19yZWNpcGVfc3lzcm9vdCBoYXMgYmVlbiB1c2VkCisgICAgICAgICAgICBleGNsdWRlcz0iJGV4Y2x1ZGVzIHJlY2lwZS1zeXNyb290LW5hdGl2ZSIKKyAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgIDs7CisgICAgICAgICpkb19wYWNrYWdlfCpkb19wYWNrYWdlLip8KmRvX3BhY2thZ2Vfc2V0c2NlbmUuKikKICAgICAgICAgICAgICMgV2UgcmVtb3ZlIGRvX3BhY2thZ2UgZW50aXJlbHksIGluY2x1ZGluZyBhbnkKICAgICAgICAgICAgICMgc3N0YXRlIHZlcnNpb24gc2luY2Ugb3RoZXJ3aXNlIHdlJ2QgbmVlZCB0byBsZWF2ZSAncGxhaW5kaXJzJyBhcm91bmQKICAgICAgICAgICAgICMgc3VjaCBhcyAncGFja2FnZXMnIGFuZCAncGFja2FnZXMtc3BsaXQnIGFuZCB0aGVzZSBjYW4gYmUgbGFyZ2UuIE5vIGVuZAogICAgICAgICAgICAgIyBvZiBjaGFpbiB0YXNrcyBkZXBlbmQgZGlyZWN0bHkgb24gZG9fcGFja2FnZSBhbnltb3JlLgotICAgICAgICAgICAgKmRvX3BhY2thZ2V8KmRvX3BhY2thZ2UuKnwqZG9fcGFja2FnZV9zZXRzY2VuZS4qKQotICAgICAgICAgICAgICAgIHJtIC1mICRpOwotICAgICAgICAgICAgICAgIGk9ZHVtbXkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqX3NldHNjZW5lKikKLSAgICAgICAgICAgICAgICBpPWR1bW15CisgICAgICAgICAgICBybSAtZiAkaTsKKyAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgIDs7CisgICAgICAgICpfc2V0c2NlbmUqKQorICAgICAgICAgICAgIyBTa2lwIHN0YW1wcyB3aGljaCBhcmUgYWxyZWFkeSBzZXRzY2VuZSB2ZXJzaW9ucworICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworCisgICAgICAgIGZvciBqIGluICR7U1NUQVRFVEFTS1N9IGRvX3NoYXJlZF93b3JrZGlyCisgICAgICAgIGRvCisgICAgICAgICAgICBjYXNlICRpIGluCisgICAgICAgICAgICBkdW1teSkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAqJGp8KiRqLiopCisgICAgICAgICAgICAgICAgIyBQcm9tb3RlIHRoZSBzdGFtcCB0byBhIHNldHNjZW5lIHZlcnNpb24KICAgICAgICAgICAgICAgICBtdiAkaSBgZWNobyAkaSB8IHNlZCAtZSAicyMke2p9IyR7an1fc2V0c2NlbmUjImAKICAgICAgICAgICAgICAgICBpPWR1bW15CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgIGVzYWMKICAgICAgICAgZG9uZQorCiAgICAgICAgIHJtIC1mICRpCiAgICAgZG9uZQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKaW5kZXggMjIxODY5ZS4uYmRlNThhZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwpAQCAtMiw5ICsyLDEyIEBACiAjIFphcCB0aGUgcm9vdCBwYXNzd29yZCBpZiBkZWJ1Zy10d2Vha3MgZmVhdHVyZSBpcyBub3QgZW5hYmxlZAogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiSU1BR0VfRkVBVFVSRVMiLCBbICdkZWJ1Zy10d2Vha3MnLCAnZW1wdHktcm9vdC1wYXNzd29yZCcgXSwgIiIsICJ6YXBfZW1wdHlfcm9vdF9wYXNzd29yZCA7ICIsZCl9JwogCi0jIEFsbG93IGRyb3BiZWFyL29wZW5zc2ggdG8gYWNjZXB0IGxvZ2lucyBmcm9tIGFjY291bnRzIHdpdGggYW4gZW1wdHkgcGFzc3dvcmQgc3RyaW5nIGlmIGRlYnVnLXR3ZWFrcyBpcyBlbmFibGVkCisjIEFsbG93IGRyb3BiZWFyL29wZW5zc2ggdG8gYWNjZXB0IGxvZ2lucyBmcm9tIGFjY291bnRzIHdpdGggYW4gZW1wdHkgcGFzc3dvcmQgc3RyaW5nIGlmIGRlYnVnLXR3ZWFrcyBvciBhbGxvdy1lbXB0eS1wYXNzd29yZCBpcyBlbmFibGVkCiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAnJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJJTUFHRV9GRUFUVVJFUyIsIFsgJ2RlYnVnLXR3ZWFrcycsICdhbGxvdy1lbXB0eS1wYXNzd29yZCcgXSwgInNzaF9hbGxvd19lbXB0eV9wYXNzd29yZDsgIiwgIiIsZCl9JwogCisjIEFsbG93IGRyb3BiZWFyL29wZW5zc2ggdG8gYWNjZXB0IHJvb3QgbG9naW5zIGlmIGRlYnVnLXR3ZWFrcyBvciBhbGxvdy1yb290LWxvZ2luIGlzIGVuYWJsZWQKK1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICcke0BiYi51dGlscy5jb250YWluc19hbnkoIklNQUdFX0ZFQVRVUkVTIiwgWyAnZGVidWctdHdlYWtzJywgJ2FsbG93LXJvb3QtbG9naW4nIF0sICJzc2hfYWxsb3dfcm9vdF9sb2dpbjsgIiwgIiIsZCl9JworCiAjIEVuYWJsZSBwb3N0aW5zdCBsb2dnaW5nIGlmIGRlYnVnLXR3ZWFrcyBpcyBlbmFibGVkCiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAnJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJJTUFHRV9GRUFUVVJFUyIsIFsgJ2RlYnVnLXR3ZWFrcycsICdwb3N0LWluc3RhbGwtbG9nZ2luZycgXSwgInBvc3RpbnN0X2VuYWJsZV9sb2dnaW5nOyAiLCAiIixkKX0nCiAKQEAgLTM2LDExICszOSw2IEBACiAKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICdlbXB0eV92YXJfdm9sYXRpbGU7JwogCi0jIERpc2FibGUgRE5TIGxvb2t1cHMsIHRoZSBTU0hfRElTQUJMRV9ETlNfTE9PS1VQIGNhbiBiZSBvdmVycmlkZGVuIHRvIGFsbG93Ci0jIGRpc3Ryb3MgdG8gY2hvb3NlIG5vdCB0byB0YWtlIHRoaXMgY2hhbmdlCi1TU0hfRElTQUJMRV9ETlNfTE9PS1VQID89ICIgc3NoX2Rpc2FibGVfZG5zX2xvb2t1cCA7ICIKLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EX2FwcGVuZF9xZW11YWxsID0gIiR7U1NIX0RJU0FCTEVfRE5TX0xPT0tVUH0iCi0KICMgU29ydCB0aGUgdXNlciBhbmQgZ3JvdXAgZW50cmllcyBpbiAvZXRjIGJ5IElEIGluIG9yZGVyIHRvIG1ha2UgdGhlIGNvbnRlbnQKICMgZGV0ZXJtaW5pc3RpYy4gUGFja2FnZSBpbnN0YWxscyBhcmUgbm90IGRldGVybWluaXN0aWMsIGNhdXNpbmcgdGhlIG9yZGVyaW5nCiAjIG9mIGVudHJpZXMgdG8gY2hhbmdlIGJldHdlZW4gYnVpbGRzLiBJbiBjYXNlIHRoYXQgdGhpcyBpc24ndCBkZXNpcmVkLApAQCAtMTQzLDEyICsxNDEsMTEgQEAKIH0KIAogIwotIyBhbGxvdyBkcm9wYmVhci9vcGVuc3NoIHRvIGFjY2VwdCByb290IGxvZ2lucyBhbmQgbG9naW5zIGZyb20gYWNjb3VudHMgd2l0aCBhbiBlbXB0eSBwYXNzd29yZCBzdHJpbmcKKyMgYWxsb3cgZHJvcGJlYXIvb3BlbnNzaCB0byBhY2NlcHQgbG9naW5zIGZyb20gYWNjb3VudHMgd2l0aCBhbiBlbXB0eSBwYXNzd29yZCBzdHJpbmcKICMKIHNzaF9hbGxvd19lbXB0eV9wYXNzd29yZCAoKSB7CiAJZm9yIGNvbmZpZyBpbiBzc2hkX2NvbmZpZyBzc2hkX2NvbmZpZ19yZWFkb25seTsgZG8KIAkJaWYgWyAtZSAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3NzaC8kY29uZmlnIF07IHRoZW4KLQkJCXNlZCAtaSAncy9eWyNbOnNwYWNlOl1dKlBlcm1pdFJvb3RMb2dpbi4qL1Blcm1pdFJvb3RMb2dpbiB5ZXMvJyAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3NzaC8kY29uZmlnCiAJCQlzZWQgLWkgJ3MvXlsjWzpzcGFjZTpdXSpQZXJtaXRFbXB0eVBhc3N3b3Jkcy4qL1Blcm1pdEVtcHR5UGFzc3dvcmRzIHllcy8nICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vc3NoLyRjb25maWcKIAkJZmkKIAlkb25lCkBAIC0xNzEsOSArMTY4LDIwIEBACiAJZmkKIH0KIAotc3NoX2Rpc2FibGVfZG5zX2xvb2t1cCAoKSB7Ci0JaWYgWyAtZSAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnczojVXNlRE5TIHllczpVc2VETlMgbm86JyAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworIworIyBhbGxvdyBkcm9wYmVhci9vcGVuc3NoIHRvIGFjY2VwdCByb290IGxvZ2lucworIworc3NoX2FsbG93X3Jvb3RfbG9naW4gKCkgeworCWZvciBjb25maWcgaW4gc3NoZF9jb25maWcgc3NoZF9jb25maWdfcmVhZG9ubHk7IGRvCisJCWlmIFsgLWUgJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfS9zc2gvJGNvbmZpZyBdOyB0aGVuCisJCQlzZWQgLWkgJ3MvXlsjWzpzcGFjZTpdXSpQZXJtaXRSb290TG9naW4uKi9QZXJtaXRSb290TG9naW4geWVzLycgJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfS9zc2gvJGNvbmZpZworCQlmaQorCWRvbmUKKworCWlmIFsgLWUgJHtJTUFHRV9ST09URlN9JHtzYmluZGlyfS9kcm9wYmVhciBdIDsgdGhlbgorCQlpZiBncmVwIC1xIERST1BCRUFSX0VYVFJBX0FSR1MgJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2Ryb3BiZWFyIDI+L2Rldi9udWxsIDsgdGhlbgorCQkJc2VkIC1pICcvXkRST1BCRUFSX0VYVFJBX0FSR1M9LyBzLy13Ly8nICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9kcm9wYmVhcgorCQlmaQogCWZpCiB9CiAKQEAgLTI0NSw3ICsyNTMsNiBAQAogICAgIHBrZ3MgPSBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcyhkKQogICAgIHdpdGggb3BlbihtYW5pZmVzdF9uYW1lLCAndysnKSBhcyBpbWFnZV9tYW5pZmVzdDoKICAgICAgICAgaW1hZ2VfbWFuaWZlc3Qud3JpdGUoZm9ybWF0X3BrZ19saXN0KHBrZ3MsICJ2ZXIiKSkKLSAgICAgICAgaW1hZ2VfbWFuaWZlc3Qud3JpdGUoIlxuIikKIAogICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0X25hbWUpOgogICAgICAgICBtYW5pZmVzdF9saW5rID0gZGVwbG95X2RpciArICIvIiArIGxpbmtfbmFtZSArICIubWFuaWZlc3QiCkBAIC0zMDgsMTcgKzMxNSwxOCBAQAogcHl0aG9uIHdyaXRlX2ltYWdlX3Rlc3RfZGF0YSgpIHsKICAgICBmcm9tIG9lLmRhdGEgaW1wb3J0IGV4cG9ydDJqc29uCiAKLSAgICB0ZXN0ZGF0YSA9ICIlcy8lcy50ZXN0ZGF0YS5qc29uIiAlIChkLmdldFZhcignREVQTE9ZX0RJUl9JTUFHRScpLCBkLmdldFZhcignSU1BR0VfTkFNRScpKQotICAgIHRlc3RkYXRhX2xpbmsgPSAiJXMvJXMudGVzdGRhdGEuanNvbiIgJSAoZC5nZXRWYXIoJ0RFUExPWV9ESVJfSU1BR0UnKSwgZC5nZXRWYXIoJ0lNQUdFX0xJTktfTkFNRScpKQorICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcignSU1HREVQTE9ZRElSJykKKyAgICBsaW5rX25hbWUgPSBkLmdldFZhcignSU1BR0VfTElOS19OQU1FJykKKyAgICB0ZXN0ZGF0YV9uYW1lID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsICIlcy50ZXN0ZGF0YS5qc29uIiAlIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJykpCiAKLSAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHRlc3RkYXRhKSkKICAgICBzZWFyY2hTdHJpbmcgPSAiJXMvIiUoZC5nZXRWYXIoIlRPUERJUiIpKS5yZXBsYWNlKCIvLyIsIi8iKQotICAgIGV4cG9ydDJqc29uKGQsIHRlc3RkYXRhLHNlYXJjaFN0cmluZz1zZWFyY2hTdHJpbmcscmVwbGFjZVN0cmluZz0iIikKKyAgICBleHBvcnQyanNvbihkLCB0ZXN0ZGF0YV9uYW1lLCBzZWFyY2hTdHJpbmc9c2VhcmNoU3RyaW5nLCByZXBsYWNlU3RyaW5nPSIiKQogCi0gICAgaWYgdGVzdGRhdGFfbGluayAhPSB0ZXN0ZGF0YToKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyh0ZXN0ZGF0YV9uYW1lKToKKyAgICAgICAgdGVzdGRhdGFfbGluayA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyLCAiJXMudGVzdGRhdGEuanNvbiIgJSBsaW5rX25hbWUpCiAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyh0ZXN0ZGF0YV9saW5rKToKLSAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RkYXRhX2xpbmspCi0gICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZSh0ZXN0ZGF0YSksIHRlc3RkYXRhX2xpbmspCisgICAgICAgICAgICBvcy5yZW1vdmUodGVzdGRhdGFfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHRlc3RkYXRhX25hbWUpLCB0ZXN0ZGF0YV9saW5rKQogfQogd3JpdGVfaW1hZ2VfdGVzdF9kYXRhW3ZhcmRlcHNleGNsdWRlXSArPSAiVE9QRElSIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MKaW5kZXggOWVlMWRmYy4uMmI5Mzc5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2RlYi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcwpAQCAtNiw3ICs2LDcgQEAKIAogZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJkcGtnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGFwdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX3BvcHVsYXRlX3Nka1tkZXBlbmRzXSArPSAiZHBrZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBhcHQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgYnppcDItbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi1kb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wYWNrYWdlX3dyaXRlX2RlYiIKK2RvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2Vfd3JpdGVfZGViIGRvX3BhY2thZ2VfcWEiCiBkb19yb290ZnNbdmFyZGVwc10gKz0gIlBBQ0tBR0VfRkVFRF9VUklTIgogCiBkb19yb290ZnNbbG9ja2ZpbGVzXSArPSAiJHtERVBMT1lfRElSX0RFQn0vZGViLmxvY2siCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfaXBrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfaXBrLmJiY2xhc3MKaW5kZXggNTJiNDY4ZC4uYWFiYzM3MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2lway5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19pcGsuYmJjbGFzcwpAQCAtMTAsNyArMTAsNyBAQAogCiBkb19yb290ZnNbZGVwZW5kc10gKz0gIm9wa2ctbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Qgb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX3BvcHVsYXRlX3Nka1tkZXBlbmRzXSArPSAib3BrZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBvcGtnLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotZG9fcm9vdGZzW3JlY3JkZXB0YXNrXSArPSAiZG9fcGFja2FnZV93cml0ZV9pcGsiCitkb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wYWNrYWdlX3dyaXRlX2lwayBkb19wYWNrYWdlX3FhIgogZG9fcm9vdGZzW3ZhcmRlcHNdICs9ICJQQUNLQUdFX0ZFRURfVVJJUyIKIAogZG9fcm9vdGZzW2xvY2tmaWxlc10gKz0gIiR7V09SS0RJUn0vaXBrLmxvY2siCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfcnBtLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfcnBtLmJiY2xhc3MKaW5kZXggN2YzMDVmNS4uNTFmODllYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX3JwbS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19ycG0uYmJjbGFzcwpAQCAtMjMsNyArMjMsNyBAQAogZG9fcm9vdGZzW2RlcGVuZHNdICs9ICIke1JQTVJPT1RGU0RFUEVORFN9IgogZG9fcG9wdWxhdGVfc2RrW2RlcGVuZHNdICs9ICIke1JQTVJPT1RGU0RFUEVORFN9IgogCi1kb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wYWNrYWdlX3dyaXRlX3JwbSIKK2RvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2Vfd3JpdGVfcnBtIGRvX3BhY2thZ2VfcWEiCiBkb19yb290ZnNbdmFyZGVwc10gKz0gIlBBQ0tBR0VfRkVFRF9VUklTIgogCiBweXRob24gKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzCmluZGV4IDU2MzQzYjEuLmE5MjNlYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzLmJiY2xhc3MKQEAgLTEsOCArMSwzIEBACiBpbmhlcml0IGRpc3R1dGlscwogCi1ERVBFTkRTICs9ICJweXRob24tZGlzdHJpYnV0ZS1uYXRpdmUiCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgPSAiLS1yb290PSR7RH0gXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtkYXRhZGlyfSIKK0RFUEVORFMgKz0gInB5dGhvbi1zZXR1cHRvb2xzLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzMy5iYmNsYXNzCmluZGV4IGRlNmRkOTQuLjhjYTY2ZWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29sczMuYmJjbGFzcwpAQCAtMiw3ICsyLDMgQEAKIAogREVQRU5EUyArPSAicHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKIAotRElTVFVUSUxTX0lOU1RBTExfQVJHUyA9ICItLXJvb3Q9JHtEfSBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKaW5kZXggODZiYjg1My4uNDExZTcwNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC0xNSwxMSArMTUsMTMgQEAKICMgSXQgaXMgYW4gZXJyb3IgZm9yIHRoZSB0YXJnZXQgbm90IHRvIGV4aXN0LgogIyBJZiAnd2hhdCcgZG9lc24ndCBleGlzdCB0aGVuIGFuIGVtcHR5IHZhbHVlIGlzIHJldHVybmVkCiAjCi1kZWYgc2l0ZWluZm9fZGF0YShkKToKK2RlZiBzaXRlaW5mb19kYXRhX2Zvcl9tYWNoaW5lKGFyY2gsIG9zLCBkKToKICAgICBhcmNoaW5mbyA9IHsKICAgICAgICAgImFsbGFyY2giOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIiLCAjIGJvZ3VzLCBidXQgYmV0dGVyIHRoYW4gc3BlY2lhbC1jYXNpbmcgdGhlIGNoZWNrcyBiZWxvdyBmb3IgYWxsYXJjaAogICAgICAgICAiYWFyY2g2NCI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCBhcm0tY29tbW9uIGFybS02NCIsCiAgICAgICAgICJhYXJjaDY0X2JlIjogImVuZGlhbi1iaWcgYml0LTY0IGFybS1jb21tb24gYXJtLTY0IiwKKyAgICAgICAgImFyYyI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiBhcmMtY29tbW9uIiwKKyAgICAgICAgImFyY2ViIjogImVuZGlhbi1iaWcgYml0LTMyIGFyYy1jb21tb24iLAogICAgICAgICAiYXJtIjogImVuZGlhbi1saXR0bGUgYml0LTMyIGFybS1jb21tb24gYXJtLTMyIiwKICAgICAgICAgImFybWViIjogImVuZGlhbi1iaWcgYml0LTMyIGFybS1jb21tb24gYXJtLTMyIiwKICAgICAgICAgImF2cjMyIjogImVuZGlhbi1iaWcgYml0LTMyIGF2cjMyLWNvbW1vbiIsCkBAIC0zMCw2ICszMiw4IEBACiAgICAgICAgICJpNTg2IjogImVuZGlhbi1saXR0bGUgYml0LTMyIGl4ODYtY29tbW9uIiwKICAgICAgICAgImk2ODYiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgaXg4Ni1jb21tb24iLAogICAgICAgICAiaWE2NCI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCIsCisgICAgICAgICJsbTMyIjogImVuZGlhbi1iaWcgYml0LTMyIiwKKyAgICAgICAgIm02OGsiOiAiZW5kaWFuLWJpZyBiaXQtMzIiLAogICAgICAgICAibWljcm9ibGF6ZSI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaWNyb2JsYXplLWNvbW1vbiIsCiAgICAgICAgICJtaWNyb2JsYXplZWIiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWljcm9ibGF6ZS1jb21tb24iLAogICAgICAgICAibWljcm9ibGF6ZWVsIjogImVuZGlhbi1saXR0bGUgYml0LTMyIG1pY3JvYmxhemUtY29tbW9uIiwKQEAgLTEyOCwxNSArMTMyLDEzIEBACiAgICAgICAgIGxvY3MgPSB7ICJhcmNoaW5mbyIgOiBhcmNoaW5mbywgIm9zaW5mbyIgOiBvc2luZm8sICJ0YXJnZXRpbmZvIiA6IHRhcmdldGluZm8sICJkIiA6IGR9CiAgICAgICAgIGFyY2hpbmZvLCBvc2luZm8sIHRhcmdldGluZm8gPSBiYi51dGlscy5iZXR0ZXJfZXZhbChjYWxsLCBsb2NzKQogCi0gICAgaG9zdGFyY2ggPSBkLmdldFZhcigiSE9TVF9BUkNIIikKLSAgICBob3N0b3MgPSBkLmdldFZhcigiSE9TVF9PUyIpCi0gICAgdGFyZ2V0ID0gIiVzLSVzIiAlIChob3N0YXJjaCwgaG9zdG9zKQorICAgIHRhcmdldCA9ICIlcy0lcyIgJSAoYXJjaCwgb3MpCiAKICAgICBzaXRlZGF0YSA9IFtdCi0gICAgaWYgaG9zdGFyY2ggaW4gYXJjaGluZm86Ci0gICAgICAgIHNpdGVkYXRhLmV4dGVuZChhcmNoaW5mb1tob3N0YXJjaF0uc3BsaXQoKSkKLSAgICBpZiBob3N0b3MgaW4gb3NpbmZvOgotICAgICAgICBzaXRlZGF0YS5leHRlbmQob3NpbmZvW2hvc3Rvc10uc3BsaXQoKSkKKyAgICBpZiBhcmNoIGluIGFyY2hpbmZvOgorICAgICAgICBzaXRlZGF0YS5leHRlbmQoYXJjaGluZm9bYXJjaF0uc3BsaXQoKSkKKyAgICBpZiBvcyBpbiBvc2luZm86CisgICAgICAgIHNpdGVkYXRhLmV4dGVuZChvc2luZm9bb3NdLnNwbGl0KCkpCiAgICAgaWYgdGFyZ2V0IGluIHRhcmdldGluZm86CiAgICAgICAgIHNpdGVkYXRhLmV4dGVuZCh0YXJnZXRpbmZvW3RhcmdldF0uc3BsaXQoKSkKICAgICBzaXRlZGF0YS5hcHBlbmQodGFyZ2V0KQpAQCAtMTQ1LDYgKzE0Nyw5IEBACiAgICAgYmIuZGVidWcoMSwgIlNJVEUgZmlsZXMgJXMiICUgc2l0ZWRhdGEpOwogICAgIHJldHVybiBzaXRlZGF0YQogCitkZWYgc2l0ZWluZm9fZGF0YShkKToKKyAgICByZXR1cm4gc2l0ZWluZm9fZGF0YV9mb3JfbWFjaGluZShkLmdldFZhcigiSE9TVF9BUkNIIiksIGQuZ2V0VmFyKCJIT1NUX09TIiksIGQpCisKIHB5dGhvbiAoKSB7CiAgICAgc2l0ZWRhdGEgPSBzZXQoc2l0ZWluZm9fZGF0YShkKSkKICAgICBpZiAiZW5kaWFuLWxpdHRsZSIgaW4gc2l0ZWRhdGE6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zcGR4LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zcGR4LmJiY2xhc3MKaW5kZXggYzVmNTQ0ZC4uZmI3OGUyNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3BkeC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NwZHguYmJjbGFzcwpAQCAtMjAyLDE4ICsyMDIsMTMgQEAKICAgICByZXR1cm4KIAogZGVmIGhhc2hfZmlsZShmaWxlX25hbWUpOgotICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVfbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgIGRhdGFfc3RyaW5nID0gZi5yZWFkKCkKLSAgICAgICAgICAgIHNoYTEgPSBoYXNoX3N0cmluZyhkYXRhX3N0cmluZykKLSAgICAgICAgICAgIHJldHVybiBzaGExCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gTm9uZQorICAgIGZyb20gYmIudXRpbHMgaW1wb3J0IHNoYTFfZmlsZQorICAgIHJldHVybiBzaGExX2ZpbGUoZmlsZV9uYW1lKQogCiBkZWYgaGFzaF9zdHJpbmcoZGF0YSk6CiAgICAgaW1wb3J0IGhhc2hsaWIKICAgICBzaGExID0gaGFzaGxpYi5zaGExKCkKLSAgICBzaGExLnVwZGF0ZShkYXRhKQorICAgIHNoYTEudXBkYXRlKGRhdGEuZW5jb2RlKCd1dGYtOCcpKQogICAgIHJldHVybiBzaGExLmhleGRpZ2VzdCgpCiAKIGRlZiBydW5fZm9zc29sb2d5KGZvc3NfY29tbWFuZCwgZnVsbF9zcGR4KToKQEAgLTIyNiw3ICsyMjEsNyBAQAogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZm9zc19vdXRwdXQgPSBzdHJpbmcucmVwbGFjZShmb3NzX291dHB1dCwgJ1xyJywgJycpCisgICAgZm9zc19vdXRwdXQgPSBmb3NzX291dHB1dC5yZXBsYWNlKCdccicsICcnKQogCiAgICAgIyBQYWNrYWdlIGluZm8KICAgICBwYWNrYWdlX2luZm8gPSB7fQpAQCAtMjg5LDcgKzI4NCw4IEBACiBkZWYgZ2V0X3Zlcl9jb2RlKGRpcm5hbWUpOgogICAgIGNoa3N1bXMgPSBbXQogICAgIGZvciBmX2RpciwgZiBpbiBsaXN0X2ZpbGVzKGRpcm5hbWUpOgotICAgICAgICBoYXNoID0gaGFzaF9maWxlKG9zLnBhdGguam9pbihkaXJuYW1lLCBmX2RpciwgZikpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZl9kaXIsIGYpCisgICAgICAgIGhhc2ggPSBoYXNoX2ZpbGUocGF0aCkKICAgICAgICAgaWYgbm90IGhhc2ggaXMgTm9uZToKICAgICAgICAgICAgIGNoa3N1bXMuYXBwZW5kKGhhc2gpCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCmluZGV4IDBiMjg4NTAuLmVmYjAwOTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCkBAIC0yNSwxNCArMjUsMjEgQEAKIFNTVEFURV9FWFRSQVBBVEhbdmFyZGVwdmFsdWVdID0gIiIKIAogIyBGb3IgbXVsdGlsaWIgcnBtIHRoZSBhbGxhcmNoIHBhY2thZ2Vncm91cCBmaWxlcyBjYW4gb3ZlcndyaXRlIChpbiB0aGVvcnkgdGhleSdyZSBpZGVudGljYWwpCi1TU1RBVEVfRFVQV0hJVEVMSVNUID0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vICR7REVQTE9ZX0RJUn0vbGljZW5zZXMvICR7REVQTE9ZX0RJUl9SUE19L25vYXJjaC8iCitTU1RBVEVfRFVQV0hJVEVMSVNUID0gIiR7REVQTE9ZX0RJUn0vbGljZW5zZXMvIgogIyBBdm9pZCBkb2Nib29rL3NnbWwgY2F0YWxvZyB3YXJuaW5ncyBmb3Igbm93CiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke1NUQUdJTkdfRVRDRElSX05BVElWRX0vc2dtbCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L3NnbWwiCiAjIHNkay1wcm92aWRlcy1kdW1teS1uYXRpdmVzZGsgYW5kIG5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgb3ZlcmxhcCBmb3IgZGlmZmVyZW50IFNES01BQ0hJTkUKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9SUE19L3Nka19wcm92aWRlc19kdW1teV9uYXRpdmVzZGsvICR7REVQTE9ZX0RJUl9JUEt9L3Nkay1wcm92aWRlcy1kdW1teS1uYXRpdmVzZGsvIgogU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX1JQTX0vYnVpbGR0b29sc19kdW1teV9uYXRpdmVzZGsvICR7REVQTE9ZX0RJUl9JUEt9L2J1aWxkdG9vbHMtZHVtbXktbmF0aXZlc2RrLyIKKyMgdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSBvdmVybGFwcyB0aGF0IGFsbGFyY2ggaXMgZGlzYWJsZWQgd2hlbiBtdWx0aWxpYiBpcyB1c2VkCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0NPTVBPTkVOVFNfRElSfS9zZGstcHJvdmlkZXMtZHVtbXktdGFyZ2V0LyAke0RFUExPWV9ESVJfUlBNfS9zZGtfcHJvdmlkZXNfZHVtbXlfdGFyZ2V0LyAke0RFUExPWV9ESVJfSVBLfS9zZGstcHJvdmlkZXMtZHVtbXktdGFyZ2V0LyIKICMgQXJjaGl2ZSB0aGUgc291cmNlcyBmb3IgbWFueSBhcmNoaXRlY3R1cmVzIGluIG9uZSBkZXBsb3kgZm9sZGVyCiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfU1JDfSIKKyMgb3ZtZi9ncnViLWVmaS9zeXN0ZW1kLWJvb3QvaW50ZWwtbWljcm9jb2RlIG11bHRpbGliIHJlY2lwZXMgY2FuIGdlbmVyYXRlIGlkZW50aWNhbCBvdmVybGFwcGluZyBmaWxlcworU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX0lNQUdFfS9vdm1mIgorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX0lNQUdFfS9ncnViLWVmaSIKK1NTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9JTUFHRX0vc3lzdGVtZC1ib290IgorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUiCiAKIFNTVEFURV9TQ0FOX0ZJTEVTID89ICIqLmxhICotY29uZmlnICpfY29uZmlnIHBvc3RpbnN0LSoiCiBTU1RBVEVfU0NBTl9DTUQgPz89ICdmaW5kICR7U1NUQVRFX0JVSUxERElSfSBcKCAtbmFtZSAiJHtAIlwiIC1vIC1uYW1lIFwiIi5qb2luKGQuZ2V0VmFyKCJTU1RBVEVfU0NBTl9GSUxFUyIpLnNwbGl0KCkpfSIgXCkgLXR5cGUgZicKQEAgLTU5LDcgKzY2LDYgQEAKIFNTVEFURVBPU1RVTlBBQ0tGVU5DUyA9ICJzc3RhdGVfaGFyZGNvZGVfcGF0aF91bnBhY2siCiBTU1RBVEVQT1NUSU5TVEZVTkNTID0gIiIKIEVYVFJBX1NUQUdJTkdfRklYTUVTID89ICJIT1NUVE9PTFNfRElSIgotU1NUQVRFQ0xFQU5GVU5DUyA9ICIiCiAKICMgQ2hlY2sgd2hldGhlciBzc3RhdGUgZXhpc3RzIGZvciB0YXNrcyB0aGF0IHN1cHBvcnQgc3N0YXRlIGFuZCBhcmUgaW4gdGhlCiAjIGxvY2tlZCBzaWduYXR1cmVzIGZpbGUuCkBAIC0zMDEsNyArMzA3LDcgQEAKICAgICBzc3RhdGVwa2cgPSBkLmdldFZhcignU1NUQVRFX1BLRycpICsgJ18nICsgc3NbJ3Rhc2snXSArICIudGd6IgogCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNzdGF0ZXBrZyk6Ci0gICAgICAgIHBzdGFnaW5nX2ZldGNoKHNzdGF0ZWZldGNoLCBzc3RhdGVwa2csIGQpCisgICAgICAgIHBzdGFnaW5nX2ZldGNoKHNzdGF0ZWZldGNoLCBkKQogCiAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNzdGF0ZXBrZyk6CiAgICAgICAgIGJiLm5vdGUoIlN0YWdpbmcgcGFja2FnZSAlcyBkb2VzIG5vdCBleGlzdCIgJSBzc3RhdGVwa2cpCkBAIC00MDgsNyArNDE0LDcgQEAKICAgICAgICAgYmIubm90ZSgiUmVwbGFjaW5nIGZpeG1lIHBhdGhzIGluIHNzdGF0ZSBwYWNrYWdlOiAlcyIgJSAoc3N0YXRlX2hhcmRjb2RlX2NtZCkpCiAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChzc3RhdGVfaGFyZGNvZGVfY21kLCBzaGVsbD1UcnVlKQogCi0gICAgICAgICMgTmVlZCB0byByZW1vdmUgdGhpcyBvciB3ZSdkIGNvcHkgaXQgaW50byB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgbWF5IAorICAgICAgICAjIE5lZWQgdG8gcmVtb3ZlIHRoaXMgb3Igd2UnZCBjb3B5IGl0IGludG8gdGhlIHRhcmdldCBkaXJlY3RvcnkgYW5kIG1heQogICAgICAgICAjIGNvbmZsaWN0IHdpdGggYW5vdGhlciB3cml0ZXIKICAgICAgICAgb3MucmVtb3ZlKGZpeG1lZm4pCiB9CkBAIC01MDcsMTAgKzUxMyw2IEBACiAgICAgICAgICAgICAgICAgc3RmaWxlLmVuZHN3aXRoKHJtX25vaGFzaCk6CiAgICAgICAgICAgICBvZS5wYXRoLnJlbW92ZShzdGZpbGUpCiAKLSAgICAjIFJlbW92ZXMgdGhlIHVzZXJzL2dyb3VwcyBjcmVhdGVkIGJ5IHRoZSBwYWNrYWdlCi0gICAgZm9yIGNsZWFuZnVuYyBpbiAoZC5nZXRWYXIoJ1NTVEFURUNMRUFORlVOQ1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGNsZWFuZnVuYywgZCkKLQogc3N0YXRlX2NsZWFuW3ZhcmRlcHNleGNsdWRlXSA9ICJTU1RBVEVfTUFORklMRVBSRUZJWCIKIAogQ0xFQU5GVU5DUyArPSAic3N0YXRlX2NsZWFuYWxsIgpAQCAtNjQwLDcgKzY0Miw3IEBACiAKICAgICByZXR1cm4KIAotZGVmIHBzdGFnaW5nX2ZldGNoKHNzdGF0ZWZldGNoLCBzc3RhdGVwa2csIGQpOgorZGVmIHBzdGFnaW5nX2ZldGNoKHNzdGF0ZWZldGNoLCBkKToKICAgICBpbXBvcnQgYmIuZmV0Y2gyCiAKICAgICAjIE9ubHkgdHJ5IGFuZCBmZXRjaCBpZiB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBhIG1pcnJvcgpAQCAtNzIwLDE3ICs3MjIsMjQgQEAKICMKIHNzdGF0ZV9jcmVhdGVfcGFja2FnZSAoKSB7CiAJVEZJTEU9YG1rdGVtcCAke1NTVEFURV9QS0d9LlhYWFhYWFhYYAorCisgICAgICAgICMgVXNlIHBpZ3ogaWYgYXZhaWxhYmxlCisgICAgICAgIE9QVD0iLWN6UyIKKyAgICAgICAgaWYgWyAteCAiJChjb21tYW5kIC12IHBpZ3opIiBdOyB0aGVuCisgICAgICAgICAgICBPUFQ9Ii1JIHBpZ3ogLWNTIgorICAgICAgICBmaQorCiAJIyBOZWVkIHRvIGhhbmRsZSBlbXB0eSBkaXJlY3RvcmllcwogCWlmIFsgIiQobHMgLUEpIiBdOyB0aGVuCiAJCXNldCArZQotCQl0YXIgLWN6ZiAkVEZJTEUgKgorCQl0YXIgJE9QVCAtZiAkVEZJTEUgKgogCQlyZXQ9JD8KIAkJaWYgWyAkcmV0IC1uZSAwIF0gJiYgWyAkcmV0IC1uZSAxIF07IHRoZW4KIAkJCWV4aXQgMQogCQlmaQogCQlzZXQgLWUKIAllbHNlCi0JCXRhciAtY3ogLS1maWxlPSRURklMRSAtLWZpbGVzLWZyb209L2Rldi9udWxsCisJCXRhciAkT1BUIC0tZmlsZT0kVEZJTEUgLS1maWxlcy1mcm9tPS9kZXYvbnVsbAogCWZpCiAJY2htb2QgMDY2NCAkVEZJTEUKIAltdiAtZiAkVEZJTEUgJHtTU1RBVEVfUEtHfQpAQCAtODkwLDYgKzg5OSwxOCBAQAogICAgICAgICAgICAgZXZkYXRhWydmb3VuZCddLmFwcGVuZCggKHNxX2ZuW3Rhc2tdLCBzcV90YXNrW3Rhc2tdLCBzcV9oYXNoW3Rhc2tdLCBzc3RhdGVmaWxlICkgKQogICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIk1pc3NlZFNzdGF0ZSIsIGV2ZGF0YSksIGQpCiAKKyAgICAjIFByaW50IHNvbWUgc3VtbWFyeSBzdGF0aXN0aWNzIGFib3V0IHRoZSBjdXJyZW50IHRhc2sgY29tcGxldGlvbiBhbmQgaG93IG11Y2ggc3N0YXRlCisgICAgIyByZXVzZSB0aGVyZSB3YXMuIEF2b2lkIGRpdmlkZSBieSB6ZXJvIGVycm9ycy4KKyAgICB0b3RhbCA9IGxlbihzcV9mbikKKyAgICBjdXJyZW50Y291bnQgPSBkLmdldFZhcigiQkJfU0VUU0NFTkVfU1RBTVBDVVJSRU5UX0NPVU5UIikgb3IgMAorICAgIGNvbXBsZXRlID0gMAorICAgIGlmIGN1cnJlbnRjb3VudDoKKyAgICAgICAgY29tcGxldGUgPSAobGVuKHJldCkgKyBjdXJyZW50Y291bnQpIC8gKHRvdGFsICsgY3VycmVudGNvdW50KSAqIDEwMAorICAgIG1hdGNoID0gMAorICAgIGlmIHRvdGFsOgorICAgICAgICBtYXRjaCA9IGxlbihyZXQpIC8gdG90YWwgKiAxMDAKKyAgICBiYi5wbGFpbigiU3N0YXRlIHN1bW1hcnk6IFdhbnRlZCAlZCBGb3VuZCAlZCBNaXNzZWQgJWQgQ3VycmVudCAlZCAoJWQlJSBtYXRjaCwgJWQlJSBjb21wbGV0ZSkiICUgKHRvdGFsLCBsZW4ocmV0KSwgbGVuKG1pc3NlZCksIGN1cnJlbnRjb3VudCwgbWF0Y2gsIGNvbXBsZXRlKSkKKwogICAgIGlmIGhhc2F0dHIoYmIucGFyc2Uuc2lnZ2VuLCAiY2hlY2toYXNoZXMiKToKICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLmNoZWNraGFzaGVzKG1pc3NlZCwgcmV0LCBzcV9mbiwgc3FfdGFzaywgc3FfaGFzaCwgc3FfaGFzaGZuLCBkKQogCkBAIC05MDIsNiArOTIzLDcgQEAKICAgICAjIHRhc2sgaXMgaW5jbHVkZWQgaW4gdGFza2RlcGVuZGVlcyB0b28KICAgICAjIFJldHVybiAtIEZhbHNlIC0gV2UgbmVlZCB0aGlzIGRlcGVuZGVuY3kKICAgICAjICAgICAgICAtIFRydWUgLSBXZSBjYW4gc2tpcCB0aGlzIGRlcGVuZGVuY3kKKyAgICBpbXBvcnQgcmUKIAogICAgIGRlZiBsb2dpdChtc2csIGxvZyk6CiAgICAgICAgIGlmIGxvZyBpcyBub3QgTm9uZToKQEAgLTk1NiwxMSArOTc4LDI0IEBACiAKICAgICAgICAgIyBDb25zaWRlciBzeXNyb290IGRlcGVuZGluZyBvbiBzeXNyb290IHRhc2tzCiAgICAgICAgIGlmIHRhc2tkZXBlbmRlZXNbdGFza11bMV0gPT0gJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnIGFuZCB0YXNrZGVwZW5kZWVzW2RlcF1bMV0gPT0gJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnOgotICAgICAgICAgICAgIyBiYXNlLXBhc3N3ZC9zaGFkb3ctc3lzcm9vdCBkb24ndCBuZWVkIHRoZWlyIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgaWYgdGFza2RlcGVuZGVlc1tkZXBdWzBdLmVuZHN3aXRoKCgiYmFzZS1wYXNzd2QiLCAic2hhZG93LXN5c3Jvb3QiKSk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgTm90aGluZyBuZWVkIGRlcGVuZCBvbiBsaWJjLWluaXRpYWwvZ2NjLWNyb3NzLWluaXRpYWwKLSAgICAgICAgICAgIGlmICItaW5pdGlhbCIgaW4gdGFza2RlcGVuZGVlc1t0YXNrXVswXToKKyAgICAgICAgICAgICMgQWxsb3cgZXhjbHVkaW5nIGNlcnRhaW4gcmVjdXJzaXZlIGRlcGVuZGVuY2llcy4gSWYgYSByZWNpcGUgbmVlZHMgaXQgc2hvdWxkIGFkZCBhCisgICAgICAgICAgICAjIHNwZWNpZmljIGRlcGVuZGVuY3kgaXRzZWxmLCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIG9uZSBvZiBpdHMgZGVwZW5kZWVzIHRvIHB1bGwKKyAgICAgICAgICAgICMgdGhlbSBpbi4KKyAgICAgICAgICAgICMgU2VlIGFsc28gaHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTgtSmFudWFyeS8xNDYzMjQuaHRtbAorICAgICAgICAgICAgbm90X25lZWRlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNsdWRlZGVwcyA9IGQuZ2V0VmFyKCdfU1NUQVRFX0VYQ0xVREVERVBTX1NZU1JPT1QnKQorICAgICAgICAgICAgaWYgZXhjbHVkZWRlcHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAjIENhY2hlIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIGZvciBzcGVlZAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVkZXBzID0gW10KKyAgICAgICAgICAgICAgICBmb3IgZXhjbCBpbiAoZC5nZXRWYXIoJ1NTVEFURV9FWENMVURFREVQU19TWVNST09UJykgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkZXBzLmFwcGVuZCgocmUuY29tcGlsZShleGNsLnNwbGl0KCctPicsIDEpWzBdKSwgcmUuY29tcGlsZShleGNsLnNwbGl0KCctPicsIDEpWzFdKSkpCisgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ19TU1RBVEVfRVhDTFVERURFUFNfU1lTUk9PVCcsIGV4Y2x1ZGVkZXBzKQorICAgICAgICAgICAgZm9yIGV4Y2wgaW4gZXhjbHVkZWRlcHM6CisgICAgICAgICAgICAgICAgaWYgZXhjbFswXS5tYXRjaCh0YXNrZGVwZW5kZWVzW2RlcF1bMF0pOgorICAgICAgICAgICAgICAgICAgICBpZiBleGNsWzFdLm1hdGNoKHRhc2tkZXBlbmRlZXNbdGFza11bMF0pOgorICAgICAgICAgICAgICAgICAgICAgICAgbm90X25lZWRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBub3RfbmVlZGVkOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAjIEZvciBtZXRhLWV4dHNkay10b29sY2hhaW4gd2Ugd2FudCBhbGwgc3lzcm9vdCBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgIGlmIHRhc2tkZXBlbmRlZXNbZGVwXVswXSA9PSAnbWV0YS1leHRzZGstdG9vbGNoYWluJzoKQEAgLTEwMDcsNyArMTA0Miw3IEBACiAgICAgICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzc3RhdGVwa2cgKyAnXycgKyB0YXNrbmFtZSArICIudGd6IiAiLnNpZ2luZm8iLCBkKQogfQogCi1TU1RBVEVfUFJVTkVfT0JTT0xFVEVXT1JLRElSID0gIjEiCitTU1RBVEVfUFJVTkVfT0JTT0xFVEVXT1JLRElSID89ICIxIgogCiAjIEV2ZW50IGhhbmRsZXIgd2hpY2ggcmVtb3ZlcyBtYW5pZmVzdHMgYW5kIHN0YW1wcyBmaWxlIGZvcgogIyByZWNpcGVzIHdoaWNoIGFyZSBubyBsb25nZXIgcmVhY2hhYmxlIGluIGEgYnVpbGQgd2hlcmUgdGhleQpAQCAtMTAyNyw2ICsxMDYyLDE2IEBACiAgICAgICAgIHdpdGggb3BlbihwcmVzZXJ2ZXN0YW1wZmlsZSwgJ3InKSBhcyBmOgogICAgICAgICAgICAgcHJlc2VydmVzdGFtcHMgPSBmLnJlYWRsaW5lcygpCiAgICAgc2VlbiA9IFtdCisKKyAgICAjIFRoZSBtYWNoaW5lIGluZGV4IGNvbnRhaW5zIGFsbCB0aGUgc3RhbXBzIHRoaXMgbWFjaGluZSBoYXMgZXZlciBzZWVuIGluIHRoaXMgYnVpbGQgZGlyZWN0b3J5LgorICAgICMgV2Ugc2hvdWxkIG9ubHkgcmVtb3ZlIHRoaW5ncyB3aGljaCB0aGlzIG1hY2hpbmUgb25jZSBhY2Nlc3NlZCBidXQgbm8gbG9uZ2VyIGRvZXMuCisgICAgbWFjaGluZWluZGV4ID0gc2V0KCkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30iKSkKKyAgICBtaSA9IGQuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L2luZGV4LW1hY2hpbmUtJHtNQUNISU5FfSIpCisgICAgaWYgb3MucGF0aC5leGlzdHMobWkpOgorICAgICAgICB3aXRoIG9wZW4obWksICJyIikgYXMgZjoKKyAgICAgICAgICAgIG1hY2hpbmVpbmRleCA9IHNldChsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKSkKKwogICAgIGZvciBhIGluIHNvcnRlZChsaXN0KHNldChkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikuc3BsaXQoKSkpKToKICAgICAgICAgdG9yZW1vdmUgPSBbXQogICAgICAgICBpID0gZC5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vaW5kZXgtIiArIGEpCkBAIC0xMDM2LDcgKzEwODEsNyBAQAogICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCiAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgICAgICAoc3RhbXAsIG1hbmlmZXN0LCB3b3JrZGlyKSA9IGwuc3BsaXQoKQotICAgICAgICAgICAgICAgIGlmIHN0YW1wIG5vdCBpbiBzdGFtcHMgYW5kIHN0YW1wIG5vdCBpbiBwcmVzZXJ2ZXN0YW1wczoKKyAgICAgICAgICAgICAgICBpZiBzdGFtcCBub3QgaW4gc3RhbXBzIGFuZCBzdGFtcCBub3QgaW4gcHJlc2VydmVzdGFtcHMgYW5kIHN0YW1wIGluIG1hY2hpbmVpbmRleDoKICAgICAgICAgICAgICAgICAgICAgdG9yZW1vdmUuYXBwZW5kKGwpCiAgICAgICAgICAgICAgICAgICAgIGlmIHN0YW1wIG5vdCBpbiBzZWVuOgogICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIlN0YW1wICVzIGlzIG5vdCByZWFjaGFibGUsIHJlbW92aW5nIHJlbGF0ZWQgbWFuaWZlc3RzIiAlIHN0YW1wKQpAQCAtMTA2NSw2ICsxMTEwLDExIEBACiAgICAgICAgIHdpdGggb3BlbihpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgICAgICBmLndyaXRlKGwpCisgICAgbWFjaGluZWluZGV4IHw9IHNldChzdGFtcHMpCisgICAgd2l0aCBvcGVuKG1pLCAidyIpIGFzIGY6CisgICAgICAgIGZvciBsIGluIG1hY2hpbmVpbmRleDoKKyAgICAgICAgICAgIGYud3JpdGUobCArICJcbiIpCisKICAgICBpZiBwcmVzZXJ2ZXN0YW1wczoKICAgICAgICAgb3MucmVtb3ZlKHByZXNlcnZlc3RhbXBmaWxlKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCmluZGV4IDkzOTA0MmUuLjg0ZTEzYmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKQEAgLTcwLDcgKzcwLDcgQEAKIHB5dGhvbiBzeXNyb290X3N0cmlwICgpIHsKICAgICBpbmhpYml0X3N5c3Jvb3QgPSBkLmdldFZhcignSU5ISUJJVF9TWVNST09UX1NUUklQJykKICAgICBpZiBpbmhpYml0X3N5c3Jvb3QgYW5kIG9lLnR5cGVzLmJvb2xlYW4oaW5oaWJpdF9zeXNyb290KToKLSAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgcmV0dXJuCiAKICAgICBkc3RkaXIgPSBkLmdldFZhcignU1lTUk9PVF9ERVNURElSJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCkBAIC03OSw3ICs3OSw3IEBACiAgICAgcWFfYWxyZWFkeV9zdHJpcHBlZCA9ICdhbHJlYWR5LXN0cmlwcGVkJyBpbiAoZC5nZXRWYXIoJ0lOU0FORV9TS0lQXycgKyBwbikgb3IgIiIpLnNwbGl0KCkKICAgICBzdHJpcF9jbWQgPSBkLmdldFZhcigiU1RSSVAiKQogCi0gICAgb2UucGFja2FnZS5zdHJpcF9leGVjcyhwbiwgZHN0ZGlyLCBzdHJpcF9jbWQsIGxpYmRpciwgYmFzZV9saWJkaXIsCisgICAgb2UucGFja2FnZS5zdHJpcF9leGVjcyhwbiwgZHN0ZGlyLCBzdHJpcF9jbWQsIGxpYmRpciwgYmFzZV9saWJkaXIsIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxYV9hbHJlYWR5X3N0cmlwcGVkPXFhX2FscmVhZHlfc3RyaXBwZWQpCiB9CiAKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgIHdvcmtkaXIgPSBkLmdldFZhcigiV09SS0RJUiIpCiAgICAgI2JiLndhcm4oc3RyKHRhc2tkZXBkYXRhKSkKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCi0KKyAgICBtYyA9IGQuZ2V0VmFyKCJCQl9DVVJSRU5UX01DIikKICAgICBzdGFnaW5nZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfRElSIikKICAgICBzaGFyZWRtYW5pZmVzdHMgPSBkLmdldFZhcigiQ09NUE9ORU5UU19ESVIiKSArICIvbWFuaWZlc3RzIgogICAgIHJlY2lwZXN5c3Jvb3QgPSBkLmdldFZhcigiUkVDSVBFX1NZU1JPT1QiKQpAQCAtMjk0LDEyICsyOTQsMTQgQEAKICAgICBzdGFydCA9IHNldChbc3RhcnRdKQogCiAgICAgc3N0YXRldGFza3MgPSBkLmdldFZhcigiU1NUQVRFVEFTS1MiKS5zcGxpdCgpCisgICAgIyBBZGQgcmVjaXBlIHNwZWNpZmljIHRhc2tzIHJlZmVyZW5jZWQgYnkgc2V0c2NlbmVfZGVwdmFsaWQoKQorICAgIHNzdGF0ZXRhc2tzLmFwcGVuZCgiZG9fc3Rhc2hfbG9jYWxlIikKIAogICAgIGRlZiBwcmludF9kZXBfdHJlZShkZXB0cmVlKToKICAgICAgICAgZGF0YSA9ICIiCiAgICAgICAgIGZvciBkZXAgaW4gZGVwdHJlZToKICAgICAgICAgICAgIGRlcHMgPSAiICAgICIgKyAiXG4gICAgIi5qb2luKGRlcHRyZWVbZGVwXVszXSkgKyAiXG4iCi0gICAgICAgICAgICBkYXRhID0gIiVzOlxuICAlc1xuICAlc1xuJXMgICVzXG4gICVzXG4iICUgKGRlcHRyZWVbZGVwXVswXSwgZGVwdHJlZVtkZXBdWzFdLCBkZXB0cmVlW2RlcF1bMl0sIGRlcHMsIGRlcHRyZWVbZGVwXVs0XSwgZGVwdHJlZVtkZXBdWzVdKQorICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyAiJXM6XG4gICVzXG4gICVzXG4lcyAgJXNcbiAgJXNcbiIgJSAoZGVwdHJlZVtkZXBdWzBdLCBkZXB0cmVlW2RlcF1bMV0sIGRlcHRyZWVbZGVwXVsyXSwgZGVwcywgZGVwdHJlZVtkZXBdWzRdLCBkZXB0cmVlW2RlcF1bNV0pCiAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICAjYmIubm90ZSgiRnVsbCBkZXAgdHJlZSBpczpcbiVzIiAlIHByaW50X2RlcF90cmVlKHRhc2tkZXBkYXRhKSkKQEAgLTQ0Myw3ICs0NDUsMTMgQEAKIAogICAgIG1zZ19leGlzdHMgPSBbXQogICAgIG1zZ19hZGRpbmcgPSBbXQorCiAgICAgZm9yIGRlcCBpbiBjb25maWd1cmVkZXBzOgorICAgICAgICBpZiBtYyAhPSAnZGVmYXVsdCc6CisgICAgICAgICAgICAjIFdlIHNob3VsZCBub3QgY2FyZSBhYm91dCBvdGhlciBtdWx0aWNvbmZpZ3MKKyAgICAgICAgICAgIGRlcG1jID0gZGVwLnNwbGl0KCc6JylbMV0KKyAgICAgICAgICAgIGlmIGRlcG1jICE9IG1jOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGMgPSBzZXRzY2VuZWRlcHNbZGVwXVswXQogICAgICAgICBpZiBjIG5vdCBpbiBpbnN0YWxsZWQ6CiAgICAgICAgICAgICBjb250aW51ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzCmluZGV4IDFiMTM0MzIuLmM3Yjc4NGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MKQEAgLTM0LDEwICszNCwxMCBAQAogCQlzeXN0ZW1jdGwgZGFlbW9uLXJlbG9hZAogCWZpCiAKLQlzeXN0ZW1jdGwgJE9QVFMgJHtTWVNURU1EX0FVVE9fRU5BQkxFfSAke1NZU1RFTURfU0VSVklDRX0KKwlzeXN0ZW1jdGwgJE9QVFMgJHtTWVNURU1EX0FVVE9fRU5BQkxFfSAke1NZU1RFTURfU0VSVklDRV9FU0NBUEVEfQogCiAJaWYgWyAteiAiJEQiIC1hICIke1NZU1RFTURfQVVUT19FTkFCTEV9IiA9ICJlbmFibGUiIF07IHRoZW4KLQkJc3lzdGVtY3RsIC0tbm8tYmxvY2sgcmVzdGFydCAke1NZU1RFTURfU0VSVklDRX0KKwkJc3lzdGVtY3RsIC0tbm8tYmxvY2sgcmVzdGFydCAke1NZU1RFTURfU0VSVklDRV9FU0NBUEVEfQogCWZpCiBmaQogfQpAQCAtNTEsMTAgKzUxLDEwIEBACiAKIGlmIHR5cGUgc3lzdGVtY3RsID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KIAlpZiBbIC16ICIkRCIgXTsgdGhlbgotCQlzeXN0ZW1jdGwgc3RvcCAke1NZU1RFTURfU0VSVklDRX0KKwkJc3lzdGVtY3RsIHN0b3AgJHtTWVNURU1EX1NFUlZJQ0VfRVNDQVBFRH0KIAlmaQogCi0Jc3lzdGVtY3RsICRPUFRTIGRpc2FibGUgJHtTWVNURU1EX1NFUlZJQ0V9CisJc3lzdGVtY3RsICRPUFRTIGRpc2FibGUgJHtTWVNURU1EX1NFUlZJQ0VfRVNDQVBFRH0KIGZpCiB9CiAKQEAgLTY1LDYgKzY1LDcgQEAKIAogcHl0aG9uIHN5c3RlbWRfcG9wdWxhdGVfcGFja2FnZXMoKSB7CiAgICAgaW1wb3J0IHJlCisgICAgaW1wb3J0IHNobGV4CiAKICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgogICAgICAgICByZXR1cm4KQEAgLTg1LDYgKzg2LDkgQEAKICAgICBkZWYgc3lzdGVtZF9nZW5lcmF0ZV9wYWNrYWdlX3NjcmlwdHMocGtnKToKICAgICAgICAgYmIuZGVidWcoMSwgJ2FkZGluZyBzeXN0ZW1kIGNhbGxzIHRvIHBvc3RpbnN0L3Bvc3RybSBmb3IgJXMnICUgcGtnKQogCisgICAgICAgIHBhdGhzX2VzY2FwZWQgPSAnICcuam9pbihzaGxleC5xdW90ZShzKSBmb3IgcyBpbiBkLmdldFZhcignU1lTVEVNRF9TRVJWSUNFXycgKyBwa2csIFRydWUpLnNwbGl0KCkpCisgICAgICAgIGQuc2V0VmFyKCdTWVNURU1EX1NFUlZJQ0VfRVNDQVBFRF8nICsgcGtnLCBwYXRoc19lc2NhcGVkKQorCiAgICAgICAgICMgQWRkIHBrZyB0byB0aGUgb3ZlcnJpZGVzIHNvIHRoYXQgaXQgZmluZHMgdGhlIFNZU1RFTURfU0VSVklDRV9wa2cKICAgICAgICAgIyB2YXJpYWJsZS4KICAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKQEAgLTEzMCw3ICsxMzQsNyBAQAogICAgICAgICAgICAgICAgIHN5c3RlbWRfYWRkX2ZpbGVzX2FuZF9wYXJzZShwa2dfc3lzdGVtZCwgcGF0aCwgc2VydmljZV9iYXNlICsgJ0Auc2VydmljZScsIGtleXMpCiAgICAgICAgICAgICBmb3Iga2V5IGluIGtleXMuc3BsaXQoKToKICAgICAgICAgICAgICAgICAjIHJlY3Vyc2UgYWxsIGRlcGVuZGVuY2llcyBmb3VuZCBpbiBrZXlzICgnQWxzbyc7J0NvbmZsaWN0cyc7Li4pIGFuZCBhZGQgdG8gZmlsZXMKLSAgICAgICAgICAgICAgICBjbWQgPSAiZ3JlcCAlcyAlcyB8IHNlZCAncywlcz0sLGcnIHwgdHIgJywnICdcXG4nIiAlIChrZXksIGZ1bGxwYXRoLCBrZXkpCisgICAgICAgICAgICAgICAgY21kID0gImdyZXAgJXMgJXMgfCBzZWQgJ3MsJXM9LCxnJyB8IHRyICcsJyAnXFxuJyIgJSAoa2V5LCBzaGxleC5xdW90ZShmdWxscGF0aCksIGtleSkKICAgICAgICAgICAgICAgICBwaXBlID0gb3MucG9wZW4oY21kLCAncicpCiAgICAgICAgICAgICAgICAgbGluZSA9IHBpcGUucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgIHdoaWxlIGxpbmU6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXJtaW5hbC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVybWluYWwuYmJjbGFzcwppbmRleCBhMjdlMTBjLi43M2U3NjVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXJtaW5hbC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlcm1pbmFsLmJiY2xhc3MKQEAgLTI1LDcgKzI1LDggQEAKICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHJ1bmZpbGUpKQogCiAgICAgd2l0aCBvcGVuKHJ1bmZpbGUsICd3JykgYXMgc2NyaXB0OgotICAgICAgICBzY3JpcHQud3JpdGUoJyMhL2Jpbi9zaCAtZVxuJykKKyAgICAgICAgc2NyaXB0LndyaXRlKCcjIS91c3IvYmluL2VudiAlc1xuJyAlIGQuZ2V0VmFyKCdTSEVMTCcpKQorICAgICAgICBzY3JpcHQud3JpdGUoJ3NldCAtZVxuJykKICAgICAgICAgYmIuZGF0YS5lbWl0X2Z1bmMoY21kX2Z1bmMsIHNjcmlwdCwgZW52ZGF0YSkKICAgICAgICAgc2NyaXB0LndyaXRlKGNtZF9mdW5jKQogICAgICAgICBzY3JpcHQud3JpdGUoIlxuIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcwppbmRleCBkMDcwZjA3Li41OWNiYWVmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzCkBAIC0xMzEsNiArMTMxLDExIEBACiAgICAgc2h1dGlsLmNvcHkyKGltYWdlX21hbmlmZXN0LCBvcy5wYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdtYW5pZmVzdCcpKQogICAgIHNodXRpbC5jb3B5Mih0ZG5hbWUsIG9zLnBhdGguam9pbih0ZXN0X2RhdGFfcGF0aCwgJ3Rlc3RkYXRhLmpzb24nKSkKIAorICAgIGZvciBzdWJkaXIsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZXhwb3J0X3BhdGgpOgorICAgICAgICBmb3IgZGlyIGluIGRpcnM6CisgICAgICAgICAgICBpZiBkaXIgPT0gJ19fcHljYWNoZV9fJzoKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihzdWJkaXIsIGRpcikpCisKICAgICAjIENyZWF0ZSB0YXIgZmlsZSBmb3IgY29tbW9uIHBhcnRzIG9mIHRlc3RleHBvcnQKICAgICBjcmVhdGVfdGFyYmFsbChkLCAidGVzdGV4cG9ydC50YXIuZ3oiLCBkLmdldFZhcigiVEVTVF9FWFBPUlRfRElSIikpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS1hdXRvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UtYXV0by5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGEyMmI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS1hdXRvLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbgotIwotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKLQotCi0jIFJ1biB0ZXN0cyBhdXRvbWF0aWNhbGx5IG9uIGFuIGltYWdlIGFmdGVyIHRoZSBpbWFnZSBpcyBjb25zdHJ1Y3RlZAotIyAoYXMgb3Bwb3NlZCB0byB0ZXN0aW1hZ2UuYmJjbGFzcyBhbG9uZSB3aGVyZSB0ZXN0cyBtdXN0IGJlIGNhbGxlZAotIyBtYW51YWxseSB1c2luZyBiaXRiYWtlIC1jIHRlc3RpbWFnZSA8aW1hZ2U+KS4KLSMKLSMgTk9URTogdG8gdXNlIHRoaXMgY2xhc3MsIHNpbXBseSBzZXQgVEVTVF9JTUFHRSA9ICIxIiAtIG5vIG5lZWQgdG8KLSMgaW5oZXJpdCBpdCBzaW5jZSB0aGF0IHdpbGwgYmUgZG9uZSBpbiBpbWFnZS5iYmNsYXNzIHdoZW4gdGhpcyB2YXJpYWJsZQotIyBoYXMgYmVlbiBzZXQuCi0jCi0jIFNlZSB0ZXN0aW1hZ2UuYmJjbGFzcyBmb3IgdGhlIHRlc3QgaW1wbGVtZW50YXRpb24uCi0KLWluaGVyaXQgdGVzdGltYWdlCi0KLXB5dGhvbiBkb190ZXN0aW1hZ2VfYXV0bygpIHsKLSAgICB0ZXN0aW1hZ2VfbWFpbihkKQotfQotYWRkdGFzayB0ZXN0aW1hZ2VfYXV0byBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW1hZ2VfY29tcGxldGUKLWRvX3Rlc3RpbWFnZV9hdXRvW2RlcGVuZHNdICs9ICIke1RFU1RJTUFHRURFUEVORFN9IgotZG9fdGVzdGltYWdlX2F1dG9bbG9ja2ZpbGVzXSArPSAiJHtURVNUSU1BR0VMT0NLfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKaW5kZXggYTllOGI0OS4uZjJmZjkxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKQEAgLTEwLDYgKzEwLDExIEBACiAjIC0gZmlyc3QgYWRkIElNQUdFX0NMQVNTRVMgKz0gInRlc3RpbWFnZSIgaW4gbG9jYWwuY29uZgogIyAtIGJ1aWxkIGEgcWVtdSBjb3JlLWltYWdlLXNhdG8KICMgLSB0aGVuIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvIC1jIHRlc3RpbWFnZS4gVGhhdCB3aWxsIHJ1biBhIHN0YW5kYXJkIHN1aXRlIG9mIHRlc3RzLgorIworIyBUaGUgdGVzdHMgY2FuIGJlIHJ1biBhdXRvbWF0aWNhbGx5IGVhY2ggdGltZSBhbiBpbWFnZSBpcyBidWlsdCBpZiB5b3Ugc2V0CisjIFRFU1RJTUFHRV9BVVRPID0gIjEiCisKK1RFU1RJTUFHRV9BVVRPID8/PSAiMCIKIAogIyBZb3UgY2FuIHNldCAob3IgYXBwZW5kIHRvKSBURVNUX1NVSVRFUyBpbiBsb2NhbC5jb25mIHRvIHNlbGVjdCB0aGUgdGVzdHMKICMgd2hpY2ggeW91IHdhbnQgdG8gcnVuIGZvciB5b3VyIHRhcmdldC4KQEAgLTM1LDI1ICs0MCwzMCBAQAogVEVTVF9FWFRSQUNURURfRElSID89ICIke1RFU1RfTkVFREVEX1BBQ0tBR0VTX0RJUn0vZXh0cmFjdGVkIgogVEVTVF9QQUNLQUdFRF9ESVIgPz0gIiR7VEVTVF9ORUVERURfUEFDS0FHRVNfRElSfS9wYWNrYWdlZCIKIAotUlBNVEVTVFNVSVRFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdkbmYgcnBtJywgJycsIGQpfSIKK1BLR01BTlRFU1RTVUlURSA9ICJcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2RuZiBycG0nLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdpcGsnLCAnb3BrZycsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ2RlYicsICdhcHQnLCAnJywgZCl9IFwKKyAgICAiCiBTWVNURU1EU1VJVEUgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKIE1JTlRFU1RTVUlURSA9ICJwaW5nIgogTkVUVEVTVFNVSVRFID0gIiR7TUlOVEVTVFNVSVRFfSBzc2ggZGYgZGF0ZSBzY3Agb2Vfc3lzbG9nICR7U1lTVEVNRFNVSVRFfSIKIERFVlRFU1RTVUlURSA9ICJnY2Mga2VybmVsbW9kdWxlIGxkZCIKK1BURVNUVEVTVFNVSVRFID0gIiR7TUlOVEVTVFNVSVRFfSBzc2ggc2NwIHB0ZXN0IgogCiBERUZBVUxUX1RFU1RfU1VJVEVTID0gIiR7TUlOVEVTVFNVSVRFfSBhdXRvIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLW1pbmltYWwgPSAiJHtNSU5URVNUU1VJVEV9IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLW1pbmltYWwtZGV2ID0gIiR7TUlOVEVTVFNVSVRFfSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgPSAiJHtORVRURVNUU1VJVEV9IHBlcmwgcHl0aG9uIGxvZ3JvdGF0ZSBwdGVzdCIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS14MTEgPSAiJHtNSU5URVNUU1VJVEV9IgotREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gcHRlc3QiCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0byA9ICIke05FVFRFU1RTVUlURX0gY29ubm1hbiB4b3JnIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gXAorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBhcnNlbG9ncyAke1BLR01BTlRFU1RTVUlURX0gcHRlc3QiCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0byA9ICIke05FVFRFU1RTVUlURX0gY29ubm1hbiB4b3JnIHBhcnNlbG9ncyAke1BLR01BTlRFU1RTVUlURX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdweXRob24nLCAnJywgZCl9IHB0ZXN0IGdpIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8tc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciBcCi0gICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBlcmwgcGFyc2Vsb2dzIHB5dGhvbiAke1JQTVRFU1RTVUlURX0geG9yZyBwdGVzdCBnaSBzdGFwIgotREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1kZXYgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwZXJsIHB5dGhvbiBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IHB0ZXN0IGdpIgorICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IGxvZ3JvdGF0ZSBwZXJsIHBhcnNlbG9ncyBweXRob24gJHtQS0dNQU5URVNUU1VJVEV9IHhvcmcgcHRlc3QgZ2kgc3RhcCIKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2ItZGV2ID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGVybCBweXRob24gcGFyc2Vsb2dzICR7UEtHTUFOVEVTVFNVSVRFfSBwdGVzdCBnaSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2Itc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciBcCi0gICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBhbSBwYXJzZWxvZ3MgcGVybCBweXRob24gJHtSUE1URVNUU1VJVEV9IHB0ZXN0IGdpIHN0YXAiCisgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBhbSBwYXJzZWxvZ3MgcGVybCBweXRob24gJHtQS0dNQU5URVNUU1VJVEV9IHB0ZXN0IGdpIHN0YXAiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLW1ldGEtdG9vbGNoYWluID0gImF1dG8iCiAKICMgYWFyY2g2NCBoYXMgbm8gZ3JhcGhpY3MKQEAgLTczLDEzICs4MywxMyBAQAogVEVTVF9UQVJHRVQgPz0gInFlbXUiCiAKIFRFU1RJTUFHRURFUEVORFMgPSAiIgotVEVTVElNQUdFREVQRU5EU19xZW11YWxsID0gInFlbXUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgcWVtdS1oZWxwZXItbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgcWVtdS1oZWxwZXItbmF0aXZlOmRvX2FkZHRvX3JlY2lwZV9zeXNyb290IgorVEVTVElNQUdFREVQRU5EU19hcHBlbmRfcWVtdWFsbCA9ICIgcWVtdS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QiCiBURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3Bpby1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCi1URVNUSU1BR0VERVBFTkRTX3FlbXVhbGwgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcGlvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKLVRFU1RJTUFHRURFUEVORFNfcWVtdWFsbCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2NyZWF0ZXJlcG8tYy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTX2FwcGVuZF9xZW11YWxsID0gIiAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3Bpby1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTX2FwcGVuZF9xZW11YWxsID0gIiAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3JlYXRlcmVwby1jLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKIFRFU1RJTUFHRURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdkbmYtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgotVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAnaXBrJywgJ29wa2ctdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgotVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAnZGViJywgJ2FwdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdpcGsnLCAnb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBwYWNrYWdlLWluZGV4OmRvX3BhY2thZ2VfaW5kZXgnLCAnJywgZCl9IgorVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAnZGViJywgJ2FwdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCAgcGFja2FnZS1pbmRleDpkb19wYWNrYWdlX2luZGV4JywgJycsIGQpfSIKIFRFU1RJTUFHRURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcmVhdGVyZXBvLWMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgogCiBURVNUSU1BR0VMT0NLID0gIiR7VE1QRElSfS90ZXN0aW1hZ2UubG9jayIKQEAgLTE0MSw3ICsxNTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAnSU1BR0VfQkFTRU5BTUUnOiBkLmdldFZhcigiSU1BR0VfQkFTRU5BTUUiKSwKICAgICAgICAgICAgICAgICAgICAgJ0lNQUdFX1BLR1RZUEUnOiBkLmdldFZhcigiSU1BR0VfUEtHVFlQRSIpLAogICAgICAgICAgICAgICAgICAgICAnU1RBUlRUSU1FJzogZC5nZXRWYXIoIkRBVEVUSU1FIiksCi0gICAgICAgICAgICAgICAgICAgICdIT1NUX0RJU1RSTyc6ICgnLScuam9pbihwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSkpLnJlcGxhY2UoJyAnLCAnLScpLAorICAgICAgICAgICAgICAgICAgICAnSE9TVF9ESVNUUk8nOiBvZS5sc2IuZGlzdHJvX2lkZW50aWZpZXIoKS5yZXBsYWNlKCcgJywgJy0nKSwKICAgICAgICAgICAgICAgICAgICAgJ0xBWUVSUyc6IGdldF9sYXllcnMoZC5nZXRWYXIoIkJCTEFZRVJTIikpfQogICAgIHJldHVybiBjb25maWd1cmF0aW9uCiBnZXRfdGVzdGltYWdlX2NvbmZpZ3VyYXRpb25bdmFyZGVwc2V4Y2x1ZGVdID0gIkRBVEVUSU1FIgpAQCAtMjQwLDggKzI1MCw4IEBACiAgICAgIyBHZXQgdXNlX2t2bQogICAgIHFlbXVfdXNlX2t2bSA9IGQuZ2V0VmFyKCJRRU1VX1VTRV9LVk0iKQogICAgIGlmIHFlbXVfdXNlX2t2bSBhbmQgXAotICAgICAgIChvZS50eXBlcy5ib29sZWFuKHFlbXVfdXNlX2t2bSkgYW5kICd4ODYnIGluIG1hY2hpbmUgb3IgXAotICAgICAgICBkLmdldFZhcignTUFDSElORScpIGluIHFlbXVfdXNlX2t2bS5zcGxpdCgpKToKKyAgICAgICAoZC5nZXRWYXIoJ01BQ0hJTkUnKSBpbiBxZW11X3VzZV9rdm0uc3BsaXQoKSBvciBcCisgICAgICAgIG9lLnR5cGVzLmJvb2xlYW4ocWVtdV91c2Vfa3ZtKSBhbmQgJ3g4NicgaW4gbWFjaGluZSk6CiAgICAgICAgIGt2bSA9IFRydWUKICAgICBlbHNlOgogICAgICAgICBrdm0gPSBGYWxzZQpAQCAtMzYzLDYgKzM3Myw3IEBACiAgICAgcmV0dXJuIE5vbmUKIAogZGVmIGNyZWF0ZV9ycG1faW5kZXgoZCk6CisgICAgaW1wb3J0IGdsb2IKICAgICAjIEluZGV4IFJQTXMKICAgICBycG1fY3JlYXRlcmVwbyA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAiY3JlYXRlcmVwb19jIikKICAgICBpbmRleF9jbWRzID0gW10KQEAgLTM3OSw5ICszOTAsMTMgQEAKICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShsb2NrZmlsZW5hbWUsIEZhbHNlKQogICAgICAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUocnBtX2RpciwgaWR4X3BhdGgpCiAgICAgICAgICMgRnVsbCBpbmRleGVzIG92ZXJsb2FkIGEgMjU2TUIgaW1hZ2Ugc28gcmVkdWNlIHRoZSBudW1iZXIgb2YgcnBtcwotICAgICAgICAjIGluIHRoZSBmZWVkLiBGaWx0ZXIgdG8gciogc2luY2Ugd2UgdXNlIHRoZSBydW4tcG9zdGluc3QgcGFja2FnZXMgYW5kCi0gICAgICAgICMgdGhpcyBsZWF2ZXMgc29tZSBhbGxhcmNoIGFuZCBtYWNoaW5lIGFyY2ggcGFja2FnZXMgdG9vLgotICAgICAgICBiYi51dGlscy5yZW1vdmUoaWR4X3BhdGggKyAiKi9bYS1xcy16XSoucnBtIikKKyAgICAgICAgIyBpbiB0aGUgZmVlZCBieSBmaWx0ZXJpbmcgdG8gc3BlY2lmaWMgcGFja2FnZXMgbmVlZGVkIGJ5IHRoZSB0ZXN0cy4KKyAgICAgICAgcGFja2FnZV9saXN0ID0gZ2xvYi5nbG9iKGlkeF9wYXRoICsgIiovKi5ycG0iKQorCisgICAgICAgIGZvciBwa2cgaW4gcGFja2FnZV9saXN0OgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguYmFzZW5hbWUocGtnKS5zdGFydHN3aXRoKCgicnBtIiwgInJ1bi1wb3N0aW5zdHMiLCAiYnVzeWJveCIsICJiYXNoIiwgInVwZGF0ZS1hbHRlcm5hdGl2ZXMiLCAibGliYzYiLCAiY3VybCIsICJtdXNsIikpOgorICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShwa2cpCisKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKICAgICAgICAgY21kID0gJyVzIC0tdXBkYXRlIC1xICVzJyAlIChycG1fY3JlYXRlcmVwbywgaWR4X3BhdGgpCiAKQEAgLTQwNCw0ICs0MTksOSBAQAogCiB0ZXN0aW1hZ2VfbWFpblt2YXJkZXBzZXhjbHVkZV0gKz0gIkJCX09SSUdFTlYgREFURVRJTUUiCiAKK3B5dGhvbiAoKSB7CisgICAgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcigiVEVTVElNQUdFX0FVVE8iKSBvciAiRmFsc2UiKToKKyAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygidGVzdGltYWdlIiwgImRvX2J1aWxkIiwgImRvX2ltYWdlX2NvbXBsZXRlIiwgZCkKK30KKwogaW5oZXJpdCB0ZXN0c2RrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKaW5kZXggNjk4MWQ0MC4uNDU4YzNmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwpAQCAtMjMsNyArMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAnSU1BR0VfQkFTRU5BTUUnOiBkLmdldFZhcigiSU1BR0VfQkFTRU5BTUUiKSwKICAgICAgICAgICAgICAgICAgICAgJ0lNQUdFX1BLR1RZUEUnOiBkLmdldFZhcigiSU1BR0VfUEtHVFlQRSIpLAogICAgICAgICAgICAgICAgICAgICAnU1RBUlRUSU1FJzogZC5nZXRWYXIoIkRBVEVUSU1FIiksCi0gICAgICAgICAgICAgICAgICAgICdIT1NUX0RJU1RSTyc6ICgnLScuam9pbihwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSkpLnJlcGxhY2UoJyAnLCAnLScpLAorICAgICAgICAgICAgICAgICAgICAnSE9TVF9ESVNUUk8nOiBvZS5sc2IuZGlzdHJvX2lkZW50aWZpZXIoKS5yZXBsYWNlKCcgJywgJy0nKSwKICAgICAgICAgICAgICAgICAgICAgJ0xBWUVSUyc6IGdldF9sYXllcnMoZC5nZXRWYXIoIkJCTEFZRVJTIikpfQogICAgIHJldHVybiBjb25maWd1cmF0aW9uCiBnZXRfc2RrX2NvbmZpZ3VyYXRpb25bdmFyZGVwc2V4Y2x1ZGVdID0gIkRBVEVUSU1FIgpAQCAtNjYsNiArNjYsMTQgQEAKICAgICBob3N0X3BrZ19tYW5pZmVzdCA9IE9FU0RLVGVzdENvbnRleHRFeGVjdXRvci5fbG9hZF9tYW5pZmVzdCgKICAgICAgICAgZC5leHBhbmQoIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uaG9zdC5tYW5pZmVzdCIpKQogCisgICAgcHJvY2Vzc2VzID0gZC5nZXRWYXIoIlRFU1RJTUFHRV9OVU1CRVJfVEhSRUFEUyIpIG9yIGQuZ2V0VmFyKCJCQl9OVU1CRVJfVEhSRUFEUyIpCisgICAgaWYgcHJvY2Vzc2VzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdHRvb2xzLCBzdWJ1bml0CisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIGJiLndhcm4oIkZhaWxlZCB0byBpbXBvcnQgdGVzdHRvb2xzIG9yIHN1YnVuaXQsIHRoZSB0ZXN0Y2FzZXMgd2lsbCBydW4gc2VyaWFsbHkiKQorICAgICAgICAgICAgcHJvY2Vzc2VzID0gTm9uZQorCiAgICAgc2RrX2RpciA9IGQuZXhwYW5kKCIke1dPUktESVJ9L3Rlc3RpbWFnZS1zZGsvIikKICAgICBiYi51dGlscy5yZW1vdmUoc2RrX2RpciwgVHJ1ZSkKICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2RrX2RpcikKQEAgLTg5LDcgKzk3LDEwIEBACiAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgICAgICBiYi5mYXRhbCgiTG9hZGluZyB0ZXN0cyBmYWlsZWQ6XG4lcyIgJSB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQogCi0gICAgICAgIHJlc3VsdCA9IHRjLnJ1blRlc3RzKCkKKyAgICAgICAgaWYgcHJvY2Vzc2VzOgorICAgICAgICAgICAgcmVzdWx0ID0gdGMucnVuVGVzdHMocHJvY2Vzc2VzPWludChwcm9jZXNzZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gdGMucnVuVGVzdHMoKQogCiAgICAgICAgIGNvbXBvbmVudCA9ICIlcyAlcyIgJSAocG4sIE9FU0RLVGVzdENvbnRleHRFeGVjdXRvci5uYW1lKQogICAgICAgICBjb250ZXh0X21zZyA9ICIlczolcyIgJSAob3MucGF0aC5iYXNlbmFtZSh0Y25hbWUpLCBvcy5wYXRoLmJhc2VuYW1lKHNka19lbnYpKQpAQCAtMTc5LDYgKzE5MCw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCdTU1RBVEVfTUlSUk9SUyArPSAiIFxcbiBmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiXG4nICUgdGVzdF9kYXRhLmdldCgnU1NUQVRFX0RJUicpKQogICAgICAgICAgICAgZi53cml0ZSgnU09VUkNFX01JUlJPUl9VUkwgPSAiZmlsZTovLyVzIlxuJyAlIHRlc3RfZGF0YS5nZXQoJ0RMX0RJUicpKQogICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAib3duLW1pcnJvcnMiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnUFJFTUlSUk9SU19wcmVwZW5kID0gIiBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8uKiBnaXQ6Ly8lcy9naXQyL2dpdC55b2N0b3Byb2plY3Qub3JnLkJBU0VOQU1FIFxcbiAiXG4nICUgdGVzdF9kYXRhLmdldCgnRExfRElSJykpCiAKICAgICAgICAgIyBXZSBuZWVkIHRvIGRvIHRoaXMgaW4gY2FzZSB3ZSBoYXZlIGEgbWluaW1hbCBTREsKICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIi4gJXMgPiAvZGV2L251bGw7IGRldnRvb2wgc2RrLWluc3RhbGwgbWV0YS1leHRzZGstdG9vbGNoYWluIiAlIFwKQEAgLTIxOCwzICsyMzAsOCBAQAogYWRkdGFzayB0ZXN0c2RrZXh0CiBkb190ZXN0c2RrZXh0W25vc3RhbXBdID0gIjEiCiAKK3B5dGhvbiAoKSB7CisgICAgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcigiVEVTVElNQUdFX0FVVE8iKSBvciAiRmFsc2UiKToKKyAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygidGVzdHNkayIsIE5vbmUsICJkb19wb3B1bGF0ZV9zZGsiLCBkKQorICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCJ0ZXN0c2RrZXh0IiwgTm9uZSwgImRvX3BvcHVsYXRlX3Nka19leHQiLCBkKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKaW5kZXggNzFkYTVlNS4uNmQxYmE2OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCkBAIC01MSw2ICs1MSwxMCBAQAogCWVjaG8gImV4cG9ydCBPRUNPUkVfTkFUSVZFX1NZU1JPT1Q9XCIkc2RrcGF0aG5hdGl2ZVwiIiA+PiAkc2NyaXB0CiAJZWNobyAnZXhwb3J0IE9FQ09SRV9UQVJHRVRfU1lTUk9PVD0iJFNES1RBUkdFVFNZU1JPT1QiJyA+PiAkc2NyaXB0CiAJZWNobyAiZXhwb3J0IE9FQ09SRV9BQ0xPQ0FMX09QVFM9XCItSSAkc2RrcGF0aG5hdGl2ZS91c3Ivc2hhcmUvYWNsb2NhbFwiIiA+PiAkc2NyaXB0CisJZWNobyAnZXhwb3J0IE9FQ09SRV9CQVNFTElCPSIke2Jhc2VsaWJ9IicgPj4gJHNjcmlwdAorCWVjaG8gJ2V4cG9ydCBPRUNPUkVfVEFSR0VUX0FSQ0g9IiR7VEFSR0VUX0FSQ0h9IicgPj4kc2NyaXB0CisJZWNobyAnZXhwb3J0IE9FQ09SRV9UQVJHRVRfT1M9IiR7VEFSR0VUX09TfSInID4+JHNjcmlwdAorCiAJZWNobyAndW5zZXQgY29tbWFuZF9ub3RfZm91bmRfaGFuZGxlJyA+PiAkc2NyaXB0CiAKIAl0b29sY2hhaW5fc2hhcmVkX2Vudl9zY3JpcHQKQEAgLTExOCwxNCArMTIyLDM0IEBACiB9CiAKIHRvb2xjaGFpbl9jcmVhdGVfcG9zdF9yZWxvY2F0ZV9zY3JpcHQoKSB7Ci0Jc2NyaXB0PSQxCi0Jcm0gLWYgJHNjcmlwdAotCXRvdWNoICRzY3JpcHQKKwlyZWxvY2F0ZV9zY3JpcHQ9JDEKKwllbnZfZGlyPSQyCisJcm0gLWYgJHJlbG9jYXRlX3NjcmlwdAorCXRvdWNoICRyZWxvY2F0ZV9zY3JpcHQKIAotICAgIGNhdCA+PiAkc2NyaXB0IDw8RU9GCisJY2F0ID4+ICRyZWxvY2F0ZV9zY3JpcHQgPDxFT0YKKyMgU291cmNlIHRvcC1sZXZlbCBTREsgZW52IHNjcmlwdHMgaW4gY2FzZSB0aGV5IGFyZSBuZWVkZWQgZm9yIHRoZSByZWxvY2F0ZQorIyBzY3JpcHRzLgorZm9yIGVudl9zZXR1cF9zY3JpcHQgaW4gJHtlbnZfZGlyfS9lbnZpcm9ubWVudC1zZXR1cC0qOyBkbworICAgIC4gXCRlbnZfc2V0dXBfc2NyaXB0CisgICAgc3RhdHVzPVwkPworICAgIGlmIFsgXCRzdGF0dXMgIT0gMCBdOyB0aGVuCisgICAgICAgIGVjaG8gIlwkMDogRmFpbGVkIHRvIHNvdXJjZSBcJGVudl9zZXR1cF9zY3JpcHQgd2l0aCBzdGF0dXMgXCRzdGF0dXMiCisgICAgICAgIGV4aXQgXCRzdGF0dXMKKyAgICBmaQorZG9uZQorCiBpZiBbIC1kICIke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8iIF07IHRoZW4KLSAgICBmb3IgcyBpbiAke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8qLnNoOyBkbworICAgIGZvciBzIGluICR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLyo7IGRvCisgICAgICAgIGlmIFsgISAteCBcJHMgXTsgdGhlbgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZmkKICAgICAgICAgXCRzICJcJDEiCisgICAgICAgIHN0YXR1cz1cJD8KKyAgICAgICAgaWYgWyBcJHN0YXR1cyAhPSAwIF07IHRoZW4KKyAgICAgICAgICAgIGVjaG8gInBvc3QtcmVsb2NhdGUgY29tbWFuZCBcIlwkcyBcJDFcIiBmYWlsZWQgd2l0aCBzdGF0dXMgXCRzdGF0dXMiID4mMgorICAgICAgICAgICAgZXhpdCBcJHN0YXR1cworICAgICAgICBmaQogICAgIGRvbmUKICAgICBybSAtcmYgIiR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kIgogZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Vib290LWV4dGxpbnV4LWNvbmZpZy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKaW5kZXggNjFkZmYxNC4uYzY1YzQyMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKQEAgLTU4LDcgKzU4LDcgQEAKICMKICMgVGhlIGtlcm5lbCBoYXMgYW4gaW50ZXJuYWwgZGVmYXVsdCBjb25zb2xlLCB3aGljaCB5b3UgY2FuIG92ZXJyaWRlIHdpdGgKICMgYSBjb25zb2xlPS4uLnNvbWVfdHR5Li4uCi1VQk9PVF9FWFRMSU5VWF9DT05TT0xFID8/PSAiY29uc29sZT0ke2NvbnNvbGV9IgorVUJPT1RfRVhUTElOVVhfQ09OU09MRSA/Pz0gImNvbnNvbGU9JHtjb25zb2xlfSwke2JhdWRyYXRlfSIKIFVCT09UX0VYVExJTlVYX0xBQkVMUyA/Pz0gImxpbnV4IgogVUJPT1RfRVhUTElOVVhfRkRUID8/PSAiIgogVUJPT1RfRVhUTElOVVhfRkRURElSID8/PSAiLi4vIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwppbmRleCBkZTIyMjFhLi5iYTk5ZmI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwpAQCAtMSwxMCArMSwxMSBAQAotVU5JTkFUSVZFX0xPQURFUiA/PSAiJHtVTklOQVRJVkVfU1RBR0lOR19ESVJ9LXVuaW5hdGl2ZS8ke0JVSUxEX0FSQ0h9LWxpbnV4L2xpYi8ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICd4ODZfNjQnLCAnbGQtbGludXgteDg2LTY0LnNvLjInLCAnbGQtbGludXguc28uMicsIGQpfSIKK1VOSU5BVElWRV9MT0FERVIgPz0gIiR7VU5JTkFUSVZFX1NUQUdJTkdfRElSfS11bmluYXRpdmUvJHtCVUlMRF9BUkNIfS1saW51eC9saWIvJHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAneDg2XzY0JywgJ2xkLWxpbnV4LXg4Ni02NC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2k2ODYnLCAnbGQtbGludXguc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdhYXJjaDY0JywgJ2xkLWxpbnV4LWFhcmNoNjQuc28uMScsICcnLCBkKX0iCiBVTklOQVRJVkVfU1RBR0lOR19ESVIgPz0gIiR7U1RBR0lOR19ESVJ9IgogCiBVTklOQVRJVkVfVVJMID89ICJ1bnNldCIKIFVOSU5BVElWRV9UQVJCQUxMID89ICIke0JVSUxEX0FSQ0h9LW5hdGl2ZXNkay1saWJjLnRhci5iejIiCiAjIEV4YW1wbGUgY2hlY2tzdW1zCi0jVU5JTkFUSVZFX0NIRUNLU1VNW2k1ODZdID0gImRlYWQiCisjVU5JTkFUSVZFX0NIRUNLU1VNW2FhcmNoNjRdID0gImRlYWQiCisjVU5JTkFUSVZFX0NIRUNLU1VNW2k2ODZdID0gImRlYWQiCiAjVU5JTkFUSVZFX0NIRUNLU1VNW3g4Nl82NF0gPSAiZGVhZCIKIFVOSU5BVElWRV9ETERJUiA/PSAiJHtETF9ESVJ9L3VuaW5hdGl2ZS8iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzCmluZGV4IDA2ZTNiMjEuLjI2NWM0YmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcwpAQCAtMzksOSArMzksOSBAQAogdXBkYXRlcmNkX3Bvc3RpbnN0KCkgewogaWYgJHtAdXNlX3VwZGF0ZXJjZChkKX0gJiYgdHlwZSB1cGRhdGUtcmMuZCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCiAJaWYgWyAtbiAiJEQiIF07IHRoZW4KLQkJT1BUPSItciAkRCIKKwkJT1BUPSItZiAtciAkRCIKIAllbHNlCi0JCU9QVD0iLXMiCisJCU9QVD0iLWYgLXMiCiAJZmkKIAl1cGRhdGUtcmMuZCAkT1BUICR7SU5JVFNDUklQVF9OQU1FfSAke0lOSVRTQ1JJUFRfUEFSQU1TfQogZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGRfYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZF9iYXNlLmJiY2xhc3MKaW5kZXggNTUxYzgyYy4uMGQwYmRiOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZF9iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZF9iYXNlLmJiY2xhc3MKQEAgLTUxLDEwICs1MSwxMCBAQAogCWxvY2FsIGdyb3VwbmFtZT1gZWNobyAiJG9wdHMiIHwgYXdrICd7IGZvciAoaSA9IDE7IGkgPCBORjsgaSsrKSBpZiAoJGkgPT0gIi1nIiB8fCAkaSA9PSAiLS1ncm91cCIpIHByaW50ICQoaSsxKSB9J2AKIAlsb2NhbCB1c2VybmFtZT1gZWNobyAiJG9wdHMiIHwgYXdrICd7IGZvciAoaSA9IDE7IGkgPCBORjsgaSsrKSBpZiAoJGkgPT0gIi1hIiB8fCAkaSA9PSAiLS1hZGQiKSBwcmludCAkKGkrMSkgfSdgCiAJYmJub3RlICIke1BOfTogUnVubmluZyBncm91cG1lbXMgY29tbWFuZCB3aXRoIGdyb3VwICRncm91cG5hbWUgYW5kIHVzZXIgJHVzZXJuYW1lIgotCWxvY2FsIG1lbV9leGlzdHM9ImBncmVwICJeJGdyb3VwbmFtZTpbXjpdKjpbXjpdKjpcKFteLF0qLFwpKiR1c2VybmFtZVwoLFteLF0qXCkqIiAkcm9vdGRpci9ldGMvZ3JvdXAgfHwgdHJ1ZWAiCisJbG9jYWwgbWVtX2V4aXN0cz0iYGdyZXAgIl4kZ3JvdXBuYW1lOlteOl0qOlteOl0qOlwoW14sXSosXCkqJHVzZXJuYW1lXCgsW14sXSpcKSokIiAkcm9vdGRpci9ldGMvZ3JvdXAgfHwgdHJ1ZWAiCiAJaWYgdGVzdCAieCRtZW1fZXhpc3RzIiA9ICJ4IjsgdGhlbgogCQlldmFsIGZsb2NrIC14ICRyb290ZGlyJHtzeXNjb25mZGlyfSAtYyBcIiRQU0VVRE8gZ3JvdXBtZW1zIFwkb3B0c1wiIHx8IHRydWUKLQkJbWVtX2V4aXN0cz0iYGdyZXAgIl4kZ3JvdXBuYW1lOlteOl0qOlteOl0qOlwoW14sXSosXCkqJHVzZXJuYW1lXCgsW14sXSpcKSoiICRyb290ZGlyL2V0Yy9ncm91cCB8fCB0cnVlYCIKKwkJbWVtX2V4aXN0cz0iYGdyZXAgIl4kZ3JvdXBuYW1lOlteOl0qOlteOl0qOlwoW14sXSosXCkqJHVzZXJuYW1lXCgsW14sXSpcKSokIiAkcm9vdGRpci9ldGMvZ3JvdXAgfHwgdHJ1ZWAiCiAJCWlmIHRlc3QgIngkbWVtX2V4aXN0cyIgPSAieCI7IHRoZW4KIAkJCWJiZmF0YWwgIiR7UE59OiBncm91cG1lbXMgY29tbWFuZCBkaWQgbm90IHN1Y2NlZWQuIgogCQlmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKaW5kZXggM2Y0ZjUxYi4uMDAxNmU1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCkBAIC0zMjgsMTUgKzMyOCw4IEBACiBkZWYgYWxsX211bHRpbGliX3R1bmVfdmFsdWVzKGQsIHZhciwgdW5pcXVlID0gVHJ1ZSwgbmVlZF9zcGxpdCA9IFRydWUsIGRlbGltID0gJyAnKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgb2YgYWxsICR7dmFyfSBpbiBhbGwgbXVsdGlsaWIgdHVuZSBjb25maWd1cmF0aW9uIiIiCiAgICAgdmFsdWVzID0gW10KLSAgICB2YWx1ZSA9IGQuZ2V0VmFyKHZhcikgb3IgIiIKLSAgICBpZiB2YWx1ZSAhPSAiIjoKLSAgICAgICAgaWYgbmVlZF9zcGxpdDoKLSAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlLnNwbGl0KGRlbGltKToKLSAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHZhbHVlKQotICAgIHZhcmlhbnRzID0gZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIikgb3IgIiIKLSAgICBmb3IgaXRlbSBpbiB2YXJpYW50cy5zcGxpdCgpOgorICAgIHZhcmlhbnRzID0gKGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpIG9yICIiKS5zcGxpdCgpICsgWycnXQorICAgIGZvciBpdGVtIGluIHZhcmlhbnRzOgogICAgICAgICBsb2NhbGRhdGEgPSBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKGl0ZW0sIGQpCiAgICAgICAgICMgV2UgbmVlZCBXT1JLRElSIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb3JpZ2luYWwgZGF0YXN0b3JlCiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIldPUktESVIiLCBkLmdldFZhcigiV09SS0RJUiIpKQpAQCAtMzY3LDIzICszNjAsMTAgQEAKICAgICB2YWx1ZXMgPSB7fQogICAgIGZvciB2IGluIHZhcnM6CiAgICAgICAgIHZhbHVlc1t2XSA9IFtdCi0KLSAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKLSAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkuc3BsaXQoIjoiKQotICAgIG5ld292ZXJyaWRlcyA9IFtdCi0gICAgZm9yIG8gaW4gb3ZlcnJpZGVzOgotICAgICAgICBpZiBub3Qgby5zdGFydHN3aXRoKCJ2aXJ0Y2xhc3MtbXVsdGlsaWItIik6Ci0gICAgICAgICAgICBuZXdvdmVycmlkZXMuYXBwZW5kKG8pCi0gICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgIjoiLmpvaW4obmV3b3ZlcnJpZGVzKSkKLSAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsICIiKQotICAgIG9yaWdkZWZhdWx0ID0gbG9jYWxkYXRhLmdldFZhcigiREVGQVVMVFRVTkVfTVVMVElMSUJfT1JJR0lOQUwiKQotICAgIGlmIG9yaWdkZWZhdWx0OgotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJERUZBVUxUVFVORSIsIG9yaWdkZWZhdWx0KQogICAgIHZhbHVlc1snbWwnXSA9IFsnJ10KLSAgICBmb3IgdiBpbiB2YXJzOgotICAgICAgICB2YWx1ZXNbdl0uYXBwZW5kKGxvY2FsZGF0YS5nZXRWYXIodikpCi0gICAgdmFyaWFudHMgPSBkLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiKSBvciAiIgotICAgIGZvciBpdGVtIGluIHZhcmlhbnRzLnNwbGl0KCk6CisKKyAgICB2YXJpYW50cyA9IChkLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiKSBvciAiIikuc3BsaXQoKSArIFsnJ10KKyAgICBmb3IgaXRlbSBpbiB2YXJpYW50czoKICAgICAgICAgbG9jYWxkYXRhID0gZ2V0X211bHRpbGliX2RhdGFzdG9yZShpdGVtLCBkKQogICAgICAgICB2YWx1ZXNbdl0uYXBwZW5kKGxvY2FsZGF0YS5nZXRWYXIodikpCiAgICAgICAgIHZhbHVlc1snbWwnXS5hcHBlbmQoaXRlbSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZiBiL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgppbmRleCBhYzQwM2IxLi5kY2YyMDA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCkBAIC05Myw3ICs5Myw3IEBACiAjIEFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgYnVpbGQgdmFyaWFibGVzLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMgSW1tZWRpYXRlIGV4cGFuc2lvbiBzaW5jZSB0aGVyZSBpcyBubyBwb2ludCBpbiByZWFwZWF0ZWRseSBjYWxsaW5nCisjIEltbWVkaWF0ZSBleHBhbnNpb24gc2luY2UgdGhlcmUgaXMgbm8gcG9pbnQgaW4gcmVwZWF0ZWRseSBjYWxsaW5nCiAjIG9zLnVuYW1lKCkgdGhyb3VnaG91dCBwYXJzaW5nCiBCVUlMRF9BUkNIIDo9ICIke0Bvcy51bmFtZSgpWzRdfSIKIEJVSUxEX09TIDo9ICIke0Bvcy51bmFtZSgpWzBdLmxvd2VyKCl9IgpAQCAtMzA4LDcgKzMwOCw4IEBACiBGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke0ZJTEVTX1NPTElCU0RFVn0gJHtsaWJkaXJ9LyoubGEgXAogICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLm8gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2RhdGFkaXJ9L3BrZ2NvbmZpZyBcCiAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hY2xvY2FsICR7YmFzZV9saWJkaXJ9LyoubyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfS8qLmxhICR7YmFzZV9saWJkaXJ9LyoubGEiCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyR7QlBOfS8qLmxhICR7YmFzZV9saWJkaXJ9LyoubGEgXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZSAke2RhdGFkaXJ9L2NtYWtlIgogU0VDVElPTl8ke1BOfS1kZXYgPSAiZGV2ZWwiCiBBTExPV19FTVBUWV8ke1BOfS1kZXYgPSAiMSIKIFJERVBFTkRTXyR7UE59LWRldiA9ICIke1BOfSAoPSAke0VYVEVORFBLR1Z9KSIKQEAgLTMxOCw3ICszMTksNiBAQAogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKIAogRklMRVNfJHtQTn0tZGJnID0gIi91c3IvbGliL2RlYnVnIC91c3Ivc3JjL2RlYnVnIgotCiBTRUNUSU9OXyR7UE59LWRiZyA9ICJkZXZlbCIKIEFMTE9XX0VNUFRZXyR7UE59LWRiZyA9ICIxIgogCkBAIC00NDUsOCArNDQ1LDkgQEAKIAogSU1BR0VfUk9PVEZTID0gIiR7V09SS0RJUn0vcm9vdGZzIgogSU1BR0VfQkFTRU5BTUUgPSAiJHtQTn0iCi1JTUFHRV9OQU1FID0gIiR7SU1BR0VfQkFTRU5BTUV9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi1JTUFHRV9OQU1FW3ZhcmRlcHNleGNsdWRlXSArPSAiREFURVRJTUUiCitJTUFHRV9WRVJTSU9OX1NVRkZJWCA9ICItJHtEQVRFVElNRX0iCitJTUFHRV9WRVJTSU9OX1NVRkZJWFt2YXJkZXBzZXhjbHVkZV0gKz0gIkRBVEVUSU1FIgorSU1BR0VfTkFNRSA9ICIke0lNQUdFX0JBU0VOQU1FfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCiBJTUFHRV9MSU5LX05BTUUgPSAiJHtJTUFHRV9CQVNFTkFNRX0tJHtNQUNISU5FfSIKIAogIyBUaGlzIG9wdGlvbiBhbGxvd3MgZm9yIGEgcGVyY2VudGFnZSBvdmVyYWdlIG9mIHRoZSBhY3R1YWwgaW1hZ2Ugc2l6ZSByYXRoZXIgdGhhbiBhCkBAIC00NzUsMjIgKzQ3NiwyMyBAQAogSE9TVFRPT0xTX0RJUiA9ICIke1RNUERJUn0vaG9zdHRvb2xzIgogCiAjIFRvb2xzIG5lZWRlZCB0byBydW4gYnVpbGRzIHdpdGggT0UtQ29yZQorIyBweXRob24gaXMgc3BlY2lhbCBjYXNlZCB0byBwb2ludCBhdCBweXRob24yCiBIT1NUVE9PTFMgKz0gIiBcCiAgICAgWyBhciBhcyBhd2sgYmFzZW5hbWUgYmFzaCBiemlwMiBjYXQgY2hncnAgY2htb2QgY2hvd24gY2hycGF0aCBjbXAgY29tbSBjcCBjcGlvIFwKICAgICBjcHAgY3V0IGRhdGUgZGQgZGlmZiBkaWZmc3RhdCBkaXJuYW1lIGR1IGVjaG8gZWdyZXAgZW52IGV4cGFuZCBleHByIGZhbHNlIFwKICAgICBmZ3JlcCBmaWxlIGZpbmQgZmxvY2sgZysrIGdhd2sgZ2NjIGdldGNvbmYgZ2V0b3B0IGdpdCBncmVwIGd1bnppcCBnemlwIFwKICAgICBoZWFkIGhvc3RuYW1lIGlkIGluc3RhbGwgbGQgbGRkIGxuIGxzIG1ha2UgbWFrZWluZm8gbWQ1c3VtIG1rZGlyIG1rbm9kIFwKLSAgICBta3RlbXAgbXYgbm0gb2JqY29weSBvYmpkdW1wIG9kIHBhdGNoIHBlcmwgcG9kMm1hbiBwciBwcmludGYgcHdkIHB5dGhvbiBweXRob24yIFwKKyAgICBta3RlbXAgbXYgbm0gb2JqY29weSBvYmpkdW1wIG9kIHBhdGNoIHBlcmwgcG9kMm1hbiBwciBwcmludGYgcHdkIHB5dGhvbjIgXAogICAgIHB5dGhvbjIuNyBweXRob24zIHJhbmxpYiByZWFkZWxmIHJlYWRsaW5rIHJtIHJtZGlyIHJwY2dlbiBzZWQgc2ggc2hhMjU2c3VtIFwKICAgICBzbGVlcCBzb3J0IHNwbGl0IHN0YXQgc3RyaW5ncyBzdHJpcCB0YWlsIHRhciB0ZWUgdGVzdCB0b3VjaCB0ciB0cnVlIHVuYW1lIFwKICAgICB1bmlxIHdjIHdnZXQgd2hpY2ggeGFyZ3MgXAogIgogCiAjIFRvb2xzIG5lZWRlZCB0byBydW4gdGVzdGltYWdlIHJ1bnRpbWUgaW1hZ2UgdGVzdGluZwotSE9TVFRPT0xTICs9ICIke0AnaXAgcGluZyBwcyBzY3Agc3NoIHN0dHknIGlmIChiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCd0ZXN0aW1hZ2UnLCBkKSBvciBkLmdldFZhcignVEVTVF9JTUFHRScpID09ICcxJykgZWxzZSAnJ30iCitIT1NUVE9PTFMgKz0gIiR7QCdpcCBwaW5nIHBzIHNjcCBzc2ggc3R0eScgaWYgKGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnSU1BR0VfQ0xBU1NFUycsICd0ZXN0aW1hZ2UgdGVzdHNkaycsIFRydWUsIEZhbHNlLCBkKSBvciBhbnkoeCBpbiAoZC5nZXRWYXIoIkJCSU5DTFVERUQiKSBvciAiIikgZm9yIHggaW4gWyJ0ZXN0aW1hZ2UuYmJjbGFzcyIsICJ0ZXN0c2RrLmJiY2xhc3MiXSkpIGVsc2UgJyd9IgogCiAjIExpbmsgdG8gdGhlc2UgaWYgcHJlc2VudAotSE9TVFRPT0xTX05PTkZBVEFMICs9ICJhd3MgY2NhY2hlIGdjYy1hciBncGcgbGQuYmZkIGxkLmdvbGQgbmMgc2Z0cCBzb2NhdCBzc2ggc3VkbyIKK0hPU1RUT09MU19OT05GQVRBTCArPSAiYXdzIGNjYWNoZSBnY2MtYXIgZ3BnIGxkLmJmZCBsZC5nb2xkIG5jIHBpZ3ogc2Z0cCBzb2NhdCBzc2ggc3VkbyIKIAogIyBUZW1wb3JhcnkgYWRkIGZldyBtb3JlIGRldGVjdGVkIGluIGJpdGJha2Ugd29ybGQKIEhPU1RUT09MU19OT05GQVRBTCArPSAiam9pbiBubCBzaXplIHllcyB6Y2F0IgpAQCAtNTg1LDggKzU4NywxMCBAQAogCiBUQVJHRVRfTElOS19IQVNIX1NUWUxFID89ICIke0BbJy1XbCwtLWhhc2gtc3R5bGU9Z251JywnJ11bZC5nZXRWYXIoJ0xJTktFUl9IQVNIX1NUWUxFJykgIT0gJ2dudSddfSIKIAorQVNORUVERUQgPz0gIi1XbCwtLWFzLW5lZWRlZCIKKwogZXhwb3J0IExERkxBR1MgPSAiJHtUQVJHRVRfTERGTEFHU30iCi1leHBvcnQgVEFSR0VUX0xERkxBR1MgPSAiLVdsLC1PMSAke1RBUkdFVF9MSU5LX0hBU0hfU1RZTEV9IgorZXhwb3J0IFRBUkdFVF9MREZMQUdTID0gIi1XbCwtTzEgJHtUQVJHRVRfTElOS19IQVNIX1NUWUxFfSAke0FTTkVFREVEfSIKIAogIyBQYXNzIHBhcmFsbGVsIG1ha2Ugb3B0aW9ucyB0byB0aGUgY29tcGlsZSB0YXNrCiBFWFRSQV9PRU1BS0VfcHJlcGVuZF90YXNrLWNvbXBpbGUgPSAiJHtQQVJBTExFTF9NQUtFfSAiCkBAIC02MDcsOSArNjExLDkgQEAKICMgRGlzYWJsZWQgdW50aWwgdGhlIG9wdGlvbiB3b3JrcyBwcm9wZXJseSAtZmVsaW1pbmF0ZS1kd2FyZjItZHVwcwogRlVMTF9PUFRJTUlaQVRJT04gPSAiLU8yIC1waXBlICR7REVCVUdfRkxBR1N9IgogREVCVUdfT1BUSU1JWkFUSU9OID0gIi1PIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICR7REVCVUdfRkxBR1N9IC1waXBlIgotU0VMRUNURURfT1BUSU1JWkFUSU9OID0gIiR7QGQuZ2V0VmFyKFsnRlVMTF9PUFRJTUlaQVRJT04nLCAnREVCVUdfT1BUSU1JWkFUSU9OJ11bZC5nZXRWYXIoJ0RFQlVHX0JVSUxEJykgPT0gJzEnXSl9IgorU0VMRUNURURfT1BUSU1JWkFUSU9OID0gIiR7QGQuZ2V0VmFyKG9lLnV0aWxzLnZhcnRydWUoJ0RFQlVHX0JVSUxEJywgJ0RFQlVHX09QVElNSVpBVElPTicsICdGVUxMX09QVElNSVpBVElPTicsIGQpKX0iCiBTRUxFQ1RFRF9PUFRJTUlaQVRJT05bdmFyZGVwc10gKz0gIkZVTExfT1BUSU1JWkFUSU9OIERFQlVHX09QVElNSVpBVElPTiIKLUJVSUxEX09QVElNSVpBVElPTiA9ICItTzIgLXBpcGUiCitCVUlMRF9PUFRJTUlaQVRJT04gPSAiJHtAb2UudXRpbHMudmFydHJ1ZSgnREVCVUdfQlVJTEQnLCAnLU8gLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyJywgJy1PMicsIGQpfSAtcGlwZSIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHRpbmdzIHVzZWQgYnkgYml0YmFrZS1sYXllcnMuCkBAIC03MTksMjAgKzcyMywxOCBAQAogIyBpcyBhIGJhZCBpZGVhLiBTZXR0aW5nIGEgZHVtbXkgdmFsdWUgaXMgYmV0dGVyIHRoYW4gYSB0b24gb2YgYW5vbnltb3VzIHB5dGhvbi4KIERJU1RSTyA/Pz0gIm5vZGlzdHJvIgogRElTVFJPX05BTUUgPz89ICJPcGVuRW1iZWRkZWQiCisKICMgT3ZlcnJpZGVzIGFyZSBwcm9jZXNzZWQgbGVmdCB0byByaWdodCwgc28gdGhlIG9uZXMgdGhhdCBhcmUgbmFtZWQgbGF0ZXIgdGFrZSBwcmVjZWRlbmNlLgotIyBZb3UgZ2VuZXJhbGx5IHdhbnQgdGhlbSB0byBnbyBmcm9tIGxlYXN0IHRvIG1vc3Qgc3BlY2lmaWMuCi0jCi0jIFRoaXMgbWVhbnMgdGhhdCBhbiBlbnZpb25tZW50IHZhcmlhYmxlIG5hbWVkICc8Zm9vPl9hcm0nIG92ZXJyaWRlcyBhbgotIyBlbnZpcm9ubWVudCB2YXJpYWJsZSAnPGZvbz4nICh3aGVuICR7VEFSR0VUX0FSQ0h9IGlzIGFybSkuCi0jIEFuIGVudmlyb25tZW50IHZhcmlhYmxlICc8Zm9vPl9xZW11YXJtJyBvdmVycmlkZXMgJzxmb28+JyBhbmQgb3ZlcnJpZGVzCi0jICc8Zm9vPl9hcm0nIHdoZW4gJHtNQUNISU5FfSBpcyAncWVtdWFybScuCisjIFlvdSBnZW5lcmFsbHkgd2FudCB0aGVtIHRvIGdvIGZyb20gbGVhc3QgdG8gbW9zdCBzcGVjaWZpYy4gVGhpcyBtZWFucyB0aGF0OgorIyBBIHZhcmlhYmxlICc8Zm9vPl9hcm0nIG92ZXJyaWRlcyBhIHZhcmlhYmxlICc8Zm9vPicgd2hlbiAke1RBUkdFVF9BUkNIfSBpcyBhcm0uCisjIEEgdmFyaWFibGUgJzxmb28+X3FlbXVhcm0nIG92ZXJyaWRlcyAnPGZvbz4nIGFuZCBvdmVycmlkZXMgJzxmb28+X2FybScgd2hlbiAke01BQ0hJTkV9IGlzICdxZW11YXJtJy4KICMgSWYgeW91IHVzZSBjb21iaW5hdGlvbiBpZSAnPGZvbz5fcWVtdWFybV9hcm0nLCB0aGVuICc8Zm9vPl9xZW11YXJtX2FybScgd2lsbCBvdmVycmlkZQogIyAnPGZvbz5fcWVtdWFybScgYW5kIHRoZW4gJzxmb28+JyB3aWxsIGJlIG92ZXJyaWRlbiB3aXRoIHRoYXQgdmFsdWUgZnJvbSAnPGZvbz5fcWVtdWFybScuCiAjIEFuZCBmaW5hbGx5ICc8Zm9vPl9mb3JjZXZhcmlhYmxlJyBvdmVycmlkZXMgYW55IHN0YW5kYXJkIHZhcmlhYmxlLCB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5LgorIyBUaGlzIHdvcmtzIGZvciBmdW5jdGlvbnMgYXMgd2VsbCwgdGhleSBhcmUgcmVhbGx5IGp1c3QgdmFyaWFibGVzLgogIwotIyBUaGlzIHdvcmtzIGZvciAgZnVuY3Rpb25zIGFzIHdlbGwsIHRoZXkgYXJlIHJlYWxseSBqdXN0IGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSMgRGVmYXVsdCBPVkVSUklERVMgdG8gbWFrZSBjb21waWxhdGlvbiBmYWlsIGZhc3QgaW4gY2FzZSBvZiBidWlsZCBzeXN0ZW0gbWlzY29uZmlndXJhdGlvbi4KLU9WRVJSSURFUyA9ICIke1RBUkdFVF9PU306JHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfTpidWlsZC0ke0JVSUxEX09TfTpwbi0ke1BOfToke01BQ0hJTkVPVkVSUklERVN9OiR7RElTVFJPT1ZFUlJJREVTfToke0NMQVNTT1ZFUlJJREV9OmZvcmNldmFyaWFibGUiCitPVkVSUklERVMgPSAiJHtUQVJHRVRfT1N9OiR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH06cG4tJHtQTn06JHtNQUNISU5FT1ZFUlJJREVTfToke0RJU1RST09WRVJSSURFU306JHtDTEFTU09WRVJSSURFfSR7TElCQ09WRVJSSURFfTpmb3JjZXZhcmlhYmxlIgorTElCQ09WRVJSSURFID89ICIiCiBDTEFTU09WRVJSSURFID89ICJjbGFzcy10YXJnZXQiCiBESVNUUk9PVkVSUklERVMgPz0gIiR7QGQuZ2V0VmFyKCdESVNUUk8nKSBvciAnJ30iCiBNQUNISU5FT1ZFUlJJREVTID89ICIke01BQ0hJTkV9IgpAQCAtODc3LDcgKzg3OSw3IEBACiAgICAgZmlsZS1jaGVja3N1bXMgcHl0aG9uIGZ1bmMgdGFzayBleHBvcnQgdW5leHBvcnQgbm9leGVjIG5vc3RhbXAgZGlycyBjbGVhbmRpcnMgXAogICAgIHNzdGF0ZS1sb2NrZmlsZS1zaGFyZWQgcHJlZnVuY3MgcG9zdGZ1bmNzIGV4cG9ydF9mdW5jIGRlcHRhc2sgcmRlcHRhc2sgXAogICAgIHJlY3JkZXB0YXNrIG5vZGVwcnJlY3Mgc3RhbXAtZXh0cmEtaW5mbyBzc3RhdGUtb3V0cHV0ZGlycyBmaWxlbmFtZSBsaW5lbm8gXAotICAgIHByb2dyZXNzIgorICAgIHByb2dyZXNzIG1jZGVwZW5kcyIKIAogTUxQUkVGSVggPz89ICIiCiBNVUxUSUxJQl9WQVJJQU5UUyA/Pz0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YThhZDlkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0KLUFTTkVFREVEID0gIi1XbCwtLWFzLW5lZWRlZCIKLQotQVNORUVERURfcG4tYmFiZWx0cmFjZSA9ICIiCi1BU05FRURFRF9wbi1jb25zb2xlLXRvb2xzID0gIiIKLUFTTkVFREVEX3BuLWRpc3RjYyA9ICIiCi1BU05FRURFRF9wbi1vcGVub2JleCA9ICIiCi1BU05FRURFRF9wbi1pY3UgPSAiIgotQVNORUVERURfcG4tcGNpdXRpbHMgPSAiIgotQVNORUVERURfcG4tcHV6emxlcyA9ICIiCi1BU05FRURFRF9wbi1ycG0gPSAiIgotCi1UQVJHRVRfTERGTEFHUyArPSAiJHtBU05FRURFRH0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwppbmRleCA5NjIwYWQ0Li5mNWVjNmNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKQEAgLTE0LDcgKzE0LDcgQEAKIERJU1RST19GRUFUVVJFU19MSUJDX0RFRkFVTFQgPz0gImlwdjQgaXB2NiBsaWJjLWJhY2t0cmFjZSBsaWJjLWJpZy1tYWNyb3MgbGliYy1ic2QgbGliYy1jeHgtdGVzdHMgbGliYy1jYXRnZXRzIGxpYmMtY2hhcnNldHMgbGliYy1jcnlwdCBcCiAJCQkJCWxpYmMtY3J5cHQtdWZjIGxpYmMtZGItYWxpYXNlcyBsaWJjLWVudnogbGliYy1mY3Z0IGxpYmMtZm10bXNnIGxpYmMtZnN0YWIgbGliYy1mdHJhdmVyc2UgXAogCQkJCQlsaWJjLWdldGxvZ2luIGxpYmMtaWRuIGxpYmMtaW5ldC1hbmwgbGliYy1saWJtIGxpYmMtbG9jYWxlcyBsaWJjLWxvY2FsZS1jb2RlIFwKLQkJCQkJbGliYy1tZW11c2FnZSBsaWJjLW5pcyBsaWJjLW5zc3dpdGNoIGxpYmMtcmNtZCBsaWJjLXJ0bGQtZGVidWcgbGliYy1zcGF3biBsaWJjLXN0cmVhbXMgbGliYy1zdW5ycGMgXAorCQkJCQlsaWJjLW1lbXVzYWdlIGxpYmMtbnNzd2l0Y2ggbGliYy1yY21kIGxpYmMtcnRsZC1kZWJ1ZyBsaWJjLXNwYXduIGxpYmMtc3RyZWFtcyBcCiAJCQkJCWxpYmMtdXRtcCBsaWJjLXV0bXB4IGxpYmMtd29yZGV4cCBsaWJjLXBvc2l4LWNsYW5nLXdjaGFyIGxpYmMtcG9zaXgtcmVnZXhwIGxpYmMtcG9zaXgtcmVnZXhwLWdsaWJjIFwKIAkJCQkJbGliYy1wb3NpeC13Y2hhci1pbyIKIERJU1RST19GRUFUVVJFU19MSUJDID89ICIke0RJU1RST19GRUFUVVJFU19MSUJDX0RFRkFVTFR9IgpAQCAtMjQsNyArMjQsNiBAQAogSU1BR0VfRkVBVFVSRVMgPz0gIiIKIAogV0hJVEVMSVNUX0dQTC0zLjAgPz0gIiIKLUxHUEx2Ml9XSElURUxJU1RfR1BMLTMuMCA/PSAiIgogCiBDT01NRVJDSUFMX0FVRElPX1BMVUdJTlMgPz0gIiIKICMgQ09NTUVSQ0lBTF9BVURJT19QTFVHSU5TID89ICJnc3QtcGx1Z2lucy11Z2x5LW1hZCBnc3QtcGx1Z2lucy11Z2x5LW1wZWdhdWRpb3BhcnNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCmluZGV4IGU2NWMxZWQuLjAxOWNlZWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKQEAgLTIzLDkgKzIzLDkgQEAKIFZJUlRVQUwtUlVOVElNRV9hcG0gPz0gImFwbSIKIFZJUlRVQUwtUlVOVElNRV9hbHNhLXN0YXRlID89ICJhbHNhLXN0YXRlIgogVklSVFVBTC1SVU5USU1FX2dldG9wdCA/PSAidXRpbC1saW51eC1nZXRvcHQiCi1WSVJUVUFMLVJVTlRJTUVfd2lyZWxlc3MtdG9vbHMgPz0gIml3IHdpcmVsZXNzLXRvb2xzIgogVklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMgPz0gImJ1c3lib3giCiBWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscy1od2Nsb2NrID89ICJidXN5Ym94LWh3Y2xvY2siCitWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscy1zeXNsb2cgPz0gImJ1c3lib3gtc3lzbG9nIgogCiAjCiAjIERlZmF1bHQgcmVjaXBlIHByb3ZpZGVycwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYwppbmRleCAzZDg4ZThmLi5hNmYzMzEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYwpAQCAtMiw2ICsyLDMgQEAKICMgRGVmYXVsdCBwcmVmZXJyZWQgdmVyc2lvbnMKICMKIAotUFJFRkVSUkVEX1ZFUlNJT05fb3BlbnNzbCA/PSAiMS4wLiUiCi1QUkVGRVJSRURfVkVSU0lPTl9vcGVuc3NsLW5hdGl2ZSA/PSAiMS4wLiUiCi1QUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstb3BlbnNzbCA/PSAiMS4wLiUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwppbmRleCAxM2M3ZTY1Li43NTAyNTQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKQEAgLTE1LDcgKzE1LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1hdGsgPSAiRmVkb3JhPWF0ayBPcGVuU3VTRT1hdGsiCiBESVNUUk9fUE5fQUxJQVNfcG4tYXZhaGktdWkgPSAiVWJ1bnR1PWF2YWhpLWRpc2NvdmVyIERlYmlhbj1hdmFoaS1kaXNjb3ZlciIKIERJU1RST19QTl9BTElBU19wbi1iYWJlbHRyYWNlID0gIk9TUERUIgotRElTVFJPX1BOX0FMSUFTX3BuLWJpZ3JlcXNwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1iaWdyZXFzcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tYmphbSA9ICJPcGVuU3VTRT1ib29zdC1qYW0gRGViaW5hPWJqYW0iCiBESVNUUk9fUE5fQUxJQVNfcG4tYmxrdG9vbCA9ICJEZWJpYW49YmxrdG9vbCBNYW5kcml2YT1ibGt0b29sIgogRElTVFJPX1BOX0FMSUFTX3BuLWJsdWV6NSA9ICJGZWRvcmE9Ymx1ZXogIE9wZW5zdXNlPWJsdWV6IgpAQCAtMjUsNyArMjQsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWJ1aWxkLWNvbXBhcmUgPSAiT3BlbnN1c2U9YnVpbGQtY29tcGFyZSBGZWRvcmE9YnVpbGQtY29tcGFyZSIKIERJU1RST19QTl9BTElBU19wbi1idWlsZGVyID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tYnVpbGR0b29scy10YXJiYWxsID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tY2FsaWJyYXRlcHJvdG8gPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tY2RydG9vbHMgPSAiT3BlblNVU0U9Y2RydG9vbHMgT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tY2hrY29uZmlnLWFsdGVybmF0aXZlcyA9ICJNYW5kcml2YT1jaGtjb25maWcgRGViaWFuPWNoa2NvbmZpZyIKIERJU1RST19QTl9BTElBU19wbi1jbHV0dGVyID0gIkZlZG9yYT1jbHV0dGVyIE9wZW5TdXNlPWNsdXR0ZXIgVWJ1bnR1PWNsdXR0ZXItMS4wIE1hbmRyaXZhPWNsdXR0ZXIgRGViaWFuPWNsdXR0ZXIiCkBAIC0zNyw3ICszNSw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tY2x1dHRlci1ndGstMS44ID0gIkZlZG9yYT1jbHV0dGVyLWd0ayBPcGVuU3VTRT1jbHV0dGVyLWd0ayBVYnVudHU9Y2x1dHRlci1ndGstMC4xMCBNYW5kcml2YT1jbHV0dGVyLWd0ayBEZWJpYW49Y2x1dHRlci1ndGsiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29nbC0xLjAgPSAiRGViaWFuPWNvZ2wgVWJ1bnR1PWNvZ2wgRmVkb3JhPWNvZ2wiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29nbCA9ICJGZWRvcmE9Y29nbCBPcGVuU3VzZT1jb2dsIFVidW50dT1jb2dsIE1hbmRyaXZhPWNvZ2wgRGViaWFuPWNvZ2wiCi1ESVNUUk9fUE5fQUxJQVNfcG4tY29tcG9zaXRlcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tY29tcG9zaXRlcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tY29ubm1hbiA9ICJNZWVnbz1jb25ubWFuIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvbm5tYW4tY29uZiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvbm5tYW4tZ25vbWUgPSAiSW50ZWwiCkBAIC02OCwxNCArNjUsMTIgQEAKIERJU1RST19QTl9BTElBU19wbi1jcnlwdG9kZXYtbW9kdWxlID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY3J5cHRvZGV2LXRlc3RzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY3dhdXRvbWFjcm9zID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly9jd2F1dG9tYWNyb3MuYmVybGlvcy5kZS8iCi1ESVNUUk9fUE5fQUxJQVNfcG4tZGFtYWdlcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tZGFtYWdlcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tZGIgPSAiRGViaWFuPWRiNS4xIFVidW50dT1kYjUuMSIKIERJU1RST19QTl9BTElBU19wbi1kYnVzLXRlc3QgPSAiRmVkb3JhPWRidXMgVWJ1bnR1PWRidXMiCiBESVNUUk9fUE5fQUxJQVNfcG4tZGJ1cy13YWl0ID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tZGVwbW9kd3JhcHBlci1jcm9zcyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWRpc3RjYyA9ICJEZWJpYW49ZGlzdGNjIEZlZG9yYT1kaXN0Y2MiCiBESVNUUk9fUE5fQUxJQVNfcG4tZGlzdGNjLWNvbmZpZyA9ICJPcGVuZWRIYW5kIgotRElTVFJPX1BOX0FMSUFTX3BuLWRteHByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWRteHByb3RvIFVidW50dT14MTFwcm90by1kbXggRGViaWFuPXgxMXByb3RvLWRteCIKIERJU1RST19QTl9BTElBU19wbi1kb2Nib29rLWRzc3NsLXN0eWxlc2hlZXRzID0gIkZlZG9yYT1kb2Nib29rLXN0eWxlLWRzc3NsIFVidW50dT1kb2Nib29rLWRzc3NsIgogRElTVFJPX1BOX0FMSUFTX3BuLWRvY2Jvb2stc2dtbC1kdGQtMy4xID0gIkZlZG9yYT1kb2Nib29rLWR0ZHMgTWFuZHJpdmE9ZG9jYm9vay1kdGQzMS1zZ21sIgogRElTVFJPX1BOX0FMSUFTX3BuLWRvY2Jvb2stc2dtbC1kdGQtNC4xID0gIkZlZG9yYT1kb2Nib29rLWR0ZHMgTWFuZHJpdmE9ZG9jYm9vay1kdGQ0MS1zZ21sIgpAQCAtODMsMjEgKzc4LDE0IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tZG9jYm9vay14bWwtZHRkNCA9ICJVYnVudHU9ZG9jYm9vay14bWwgRmVkb3JhPWRvY2Jvb2stZHRkcyIKIERJU1RST19QTl9BTElBU19wbi1kb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSA9ICJVYnVudHU9ZG9jYm9vay14bWwgRmVkb3JhPWRvY2Jvb2stZHRkcyIKIERJU1RST19QTl9BTElBU19wbi1kb2Nib29rLXhzbC1zdHlsZXNoZWV0cyA9ICJGZWRvcmE9ZG9jYm9vay14c2wtc3R5bGVzaGVldHMgT3BlbnN1c2U9ZG9jYm9vay14c2wtc3R5bGVzaGVldHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZHJpMnByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWRyaTJwcm90byIKLURJU1RST19QTl9BTElBU19wbi1kcmkzcHJvdG8gPSAiRmVkb3JhPWRyaTNwcm90byBPcGVuc3VzZT1kcmkzcHJvdG8tZGV2ZWwiCiBESVNUUk9fUE5fQUxJQVNfcG4tZHJvcGJlYXIgPSAiRGViaWFuPWRyb3BiZWFyIFVidW50dT1kcm9wYmVhciIKIERJU1RST19QTl9BTElBU19wbi1kdGMgPSAiRmVkb3JhPWR0YyBVYnVudHU9ZHRjIgotRElTVFJPX1BOX0FMSUFTX3BuLWVlZS1hY3BpLXNjcmlwdHMgPSAiRGViaWFuPWVlZXBjLWFjcGktc2NyaXB0cyBVYnVudHU9ZWVlcGMtYWNwaS1zY3JpcHRzIgogRElTVFJPX1BOX0FMSUFTX3BuLWVnbGluZm8tZmIgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1lZ2xpbmZvLXgxMSA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWVuY29kaW5ncyA9ICJVYnVudHU9eGZvbnRzLWVuY29kaW5ncyBNYW5kcml2YT14MTEtZm9udC1lbmNvZGluZ3MgRGViaWFuPXhmb250cy1lbmNvZGluZ3MiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZml4ZXNwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1maXhlc3Byb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLWZvbnQtYWxpYXMgPSAiRmVkb3JhPXhvcmcteDExLWZvbnRzLWJhc2UgTWFuZHJpdmE9eDExLWZvbnQtYWxpYXMgTWVlZ289eG9yZy14MTEtZm9udHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZm9udGNhY2hlcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tZm9udGNhY2hlcHJvdG8iCi1ESVNUUk9fUE5fQUxJQVNfcG4tZm9udHNwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1mb250c3Byb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLWZvbnQtdXRpbCA9ICJNZWVnbz14b3JnLXgxMS1mb250LXV0aWxzIEZlZG9yYT14b3JnLXgxMS1mb250LXV0aWxzIFVidW50dT14Zm9udHMtdXRpbHMgTWFuZHJpdmE9eDExLWZvbnQtdXRpbCBEZWJpYW49eGZvbnRzLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLWZvcm1mYWN0b3IgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1mc3Rlc3RzID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ2NjLWNyb3NzLWluaXRpYWwgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1nY2MtY3Jvc3MtaW5pdGlhbC1pNTg2ID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ2NjLWNyb3Nzc2RrLWluaXRpYWwgPSAiT0UtQ29yZSIKQEAgLTExNCw3ICsxMDIsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWdsaWJjLWxvY2FsZSA9ICJPcGVuU3VTRT1nbGliYy1sb2NhbGUgRmVkb3JhPWdsaWJjLWRldmVsIgogRElTVFJPX1BOX0FMSUFTX3BuLWdsaWJjLW10cmFjZSA9ICJGZWRvcmE9Z2xpYmMtdXRpbHMgVWJ1bnR1PWxpYmMtZGV2LWJpbiIKIERJU1RST19QTl9BTElBU19wbi1nbGliYy1zY3JpcHRzID0gIkZlZG9yYT1nbGliYyBVYnVudHU9bGliYy1iaW4iCi1ESVNUUk9fUE5fQUxJQVNfcG4tZ2xwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1nbHByb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJEZWJpYW49Z25vbWUtZGVza3RvcC10ZXN0aW5nIEZlZG9yYT1nbm9tZS1kZXNrdG9wLXRlc3RpbmciCiBESVNUUk9fUE5fQUxJQVNfcG4tZ251LWNvbmZpZyA9ICJPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLWdwdGZkaXNrID0gIkZlZG9yYT1nZGlzayBVYnVudHU9Z2Rpc2siCkBAIC0xNDksMTIgKzEzNiw5IEBACiBESVNUUk9fUE5fQUxJQVNfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmktdGVzdGZzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0c2NyaXB0cyA9ICJGZWRvcmE9aW5pdHNjcmlwdHMgTWFuZHJhdmlhPWluaXRzY3JpcHRzIgotRElTVFJPX1BOX0FMSUFTX3BuLWlucHV0cHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8taW5wdXRwcm90byIKIERJU1RST19QTl9BTElBU19wbi1pcHJvdXRlMiA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1qcGVnID0gIk9wZW5TdVNFPWxpYmpwZWcgVWJ1bnR1PWxpYmpwZWc2MiIKLURJU1RST19QTl9BTElBU19wbi1rYnByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWticHJvdG8gVWJ1bnR1PXgxMXByb3RvLWtiLWRldiBEZWJpYW49eDExcHJvdG8ta2ItZGV2IgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm5lbC1kZXZzcmMgPSAiRGViaWFuPWxpbnV4LWJhc2UgVWJ1bnR1PWxpbnV4IgotRElTVFJPX1BOX0FMSUFTX3BuLWtlcm5lbHNoYXJrID0gIk1hbmRyaXZhPWtlcm5lbHNoYXJrIFVidW50dT1rZXJuZWxzaGFyayIKIERJU1RST19QTl9BTElBU19wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJXaW5kcml2ZXIiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2V5bWFwcyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWtmID0gIk9TUERUIgpAQCAtMjA1LDcgKzE4OSw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tbGlidGltZWRhdGUtcGVybCA9ICJEZWJpYW49bGlidGltZWRhdGUtcGVybCBVYnVudHU9bGlidGltZWRhdGUtcGVybCIKIERJU1RST19QTl9BTElBU19wbi1saWJ1cmN1ID0gIkZlZG9yYT11c2Vyc3BhY2UtcmN1IFVidW50dT1saWJ1cmN1MCIKIERJU1RST19QTl9BTElBU19wbi1saWJ1c2IxID0gIkRlYmlhbj1saWJ1c2ItMS4wLTAgRmVkb3JhPWxpYnVzYjEiCi1ESVNUUk9fUE5fQUxJQVNfcG4tbGlidXNiLWNvbXBhdCA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1saWJ4MTEgPSAiRGViaWFuPWxpYngxMS02IEZlZG9yYT1saWJYMTEgVWJ1bnR1PWxpYngxMS02IE9wZW5TdVNFPXhvcmcteDExLWxpYlgxMSIKIERJU1RST19QTl9BTElBU19wbi1saWJ4Y2FsaWJyYXRlID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2xpYi9saWJYQ2FsaWJyYXRlLyIKIERJU1RST19QTl9BTElBU19wbi1saWJ4Zm9udDIgPSAiRmVkb3JhPWxpYlhmb250MiBDbGVhcj1saWJYZm9udDIiCkBAIC0yNTcsNyArMjQwLDYgQEAKIERJU1RST19QTl9BTElBU19wbi1ta2VsZmltYWdlID0gIlVidW50dT1ta2VsZmltYWdlIEZlZG9yYT1ta2VsZmltYWdlIgogRElTVFJPX1BOX0FMSUFTX3BuLW1rZm9udGRpciA9ICJNYW5kcml2YT1ta2ZvbnRkaXIgVWJ1bnR1PXhmb250cy11dGlscyBGZWRvcmE9eG9yZy14MTEtZm9udC11dGlscyIKIERJU1RST19QTl9BTElBU19wbi1ta2ZvbnRzY2FsZSA9ICJNYW5kcml2YT1ta2ZvbnRzY2FsZSBVYnVudHU9eGZvbnRzLXV0aWxzIEZlZG9yYT14b3JnLXgxMS1mb250LXV0aWxzIgotRElTVFJPX1BOX0FMSUFTX3BuLW1rdGVtcCA9ICJNYW5kcml2YT1ta3RlbXAgRmVkb3JhPW1rdGVtcCIKIERJU1RST19QTl9BTElBU19wbi1tbWMtdXRpbHMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLW10ZC11dGlscyA9ICJEZWJpYW49bXRkLXV0aWxzIFVidW50dT1tdGQtdXRpbHMiCkBAIC0zMTUsMjEgKzI5NywxOCBAQAogRElTVFJPX1BOX0FMSUFTX3BuLXBvcnRtYXAgPSAiRGViaWFuPXJwY2JpbmQgRmVkb3JhPXJwY2JpbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tcG93ZXJ0b3AgPSAiTWVlZ289cG93ZXJ0b3AgRmVkb3JhPXBvd2VydG9wIERlYmlhbj1wb3dlcnRvcCBPcGVuU3VTRT1wb3dlcnRvcCBNYW5kcml2YT1wb3dlcnRvcCIKIERJU1RST19QTl9BTElBU19wbi1wcHAtZGlhbGluID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tcHJlc2VudHByb3RvID0gIkRlYmlhbj14MTFwcm90by1wcmVzZW50LWRldiBGZWRvcmE9eG9yZy14MTEtcHJvdG8tZGV2ZWwiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHNldWRvID0gIldpbmRyaXZlciIKIERJU1RST19QTl9BTElBU19wbi1wc3BsYXNoID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHRlc3QtcnVubmVyID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHVsc2VhdWRpby1jbGllbnQtY29uZi1zYXRvID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHV6emxlcyA9ICJEZWJpYW49c2d0LXB1enpsZXMgRmVkb3JhPXB1enpsZXMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMyA9ICJGZWRvcmE9cHl0aG9uMyBEZWJpYW49cHl0aG9uMy4yIgotRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtZGlzdHJpYnV0ZSA9ICJEZWJpYW49cHl0aG9uMy1zZXR1cHRvb2xzIEZlZG9yYT1weXRob24zLXNldHVwdG9vbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1pbmlwYXJzZSA9ICJGZWRvcmE9cHl0aG9uLWluaXBhcnNlIERlYmlhbj1weXRob24taW5pcGFyc2UiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1waXAgPSAiT3BlblN1U0U9cHl0aG9uMy1waXAgRGViaWFuPXB5dGhvbjMtcGlwIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtcHljdXJsID0gIkZlZG9yYT1weXRob24tcHljdXJsIERlYmlhbj1weWN1cmwiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1weWdwZ21lID0gIkZlZG9yYT1weXRob24tcHlncGdtZSBEZWJpYW49cHlncGdtZSIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLXNldHVwdG9vbHMgPSAiT3BlblN1U0U9cHl0aG9uMy1zZXR1cHRvb2xzIERlYmlhbj1weXRob24zLXNldHVwdG9vbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLWRidXMgPSAiVWJ1bnR1PXB5dGhvbi1kYnVzIERlYmlhbj1weXRob24tZGJ1cyBNYW5kcml2YT1weXRob24tZGJ1cyIKLURJU1RST19QTl9BTElBU19wbi1weXRob24tZGlzdHJpYnV0ZSA9ICJPcGVuc3VzZT1weXRob24tc2V0dXB0b29scyBGZWRvcmE9cHl0aG9uLXNldHVwdG9vbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLWdpdCA9ICJEZWJpYW49cHl0aG9uLWdpdCBGZWRvcmE9R2l0UHl0aG9uIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1tYWtvID0gIkZlZG9yYT1weXRob24tbWFrbyBPcGVuc3VzZT1weXRob24tTWFrbyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tcHljYWlybyA9ICJNZWVnbz1weWNhaXJvIEZlZG9yYT1weWNhaXJvIFVidW50dT1weWNhaXJvIERlYmlhbj1weWNhaXJvIgpAQCAtMzQxLDEyICszMjAsOCBAQAogRElTVFJPX1BOX0FMSUFTX3BuLXFlbXVnbCA9ICJPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLXFlbXUtaGVscGVyID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tcWVtdXdyYXBwZXItY3Jvc3MgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1yYW5kcnByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXJhbmRycHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tcmVhZGxpbmUgPSAiRmVkb3JhPXJlYWRsaW5lIERlYmlhbj1yZWFkbGluZS1jb21tb24iCi1ESVNUUk9fUE5fQUxJQVNfcG4tcmVjb3JkcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tcmVjb3JkcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tcmVtYWtlID0gIk1hbmRyaXZhPXJlbWFrZSBEZWJpYW49cmVtYWtlIgotRElTVFJPX1BOX0FMSUFTX3BuLXJlbmRlcnByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXJlbmRlcnByb3RvIgotRElTVFJPX1BOX0FMSUFTX3BuLXJlc291cmNlcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tcmVzb3VyY2Vwcm90byIKIERJU1RST19QTl9BTElBU19wbi1yZ2IgPSAiRmVkb3JhPXhvcmctWDExLXNlcnZlci11dGlscyBEZWJpYW49eDExLXhzZXJ2ZXItdXRpbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcnBtcmVzb2x2ZSA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1ydC10ZXN0cyA9ICJEZWJpYW49cnQtdGVzdHMgVWJ1bnR1PXJ0LXRlc3RzIgpAQCAtMzU1LDcgKzMzMCw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tc2F0by1zY3JlZW5zaG90ID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tc2JjID0gIkZlZG9yYT1zYmMgRGViaWFuPWxpYnNiYzEiCiBESVNUUk9fUE5fQUxJQVNfcG4tc2NyZWVuc2hvdCA9ICJPcGVuZWRIYW5kIgotRElTVFJPX1BOX0FMSUFTX3BuLXNjcm5zYXZlcnByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXNjcm5zYXZlcnByb3RvIFVidW50dT14MTFwcm90by1zY3Juc2F2ZXItZGV2IERlYmlhbj14MTFwcm90by1zY3Juc2F2ZXItZGV2IgogRElTVFJPX1BOX0FMSUFTX3BuLXNldHRpbmdzLWRhZW1vbiA9ICJPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLXNnbWwtY29tbW9uID0gIk9wZW5TdVNFPXNnbWwtY29tbW9uIEZlZG9yYT1zZ21sLWNvbW1vbiIKIERJU1RST19QTl9BTElBU19wbi1zZ21sc3BsID0gIkRlYmlhbj1zZ21sc3BsIFVidW50dT1zZ21sc3BsIgpAQCAtMzc2LDcgKzM1MCw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tdGNmLWFnZW50ID0gIldpbmRyaXZlciB1cHN0cmVhbT1odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2RzZHAvdG0vIgogRElTVFJPX1BOX0FMSUFTX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tdGlueS1pbml0ID0gIk9TUERUIgotRElTVFJPX1BOX0FMSUFTX3BuLXRyYWNlLWNtZCA9ICJNYW5kcml2YT10cmFjZS1jbWQgVWJ1bnR1PXRyYWNlLWNtZCIKIERJU1RST19QTl9BTElBU19wbi10cmVtb3IgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL3d3dy54aXBoLm9yZy92b3JiaXMvIgogRElTVFJPX1BOX0FMSUFTX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJEZWJpYW49dHRmLWJpdHN0cmVhbS12ZXJhIFVidW50dT10dGYtYml0c3RyZWFtLXZlcmEiCiBESVNUUk9fUE5fQUxJQVNfcG4tdHpjb2RlID0gIk9TUERUIgpAQCAtMzkyLDcgKzM2NSw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tdXNiaW5pdCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLXV0aWwtbWFjcm9zID0gIk1lZWdvPXhvcmcteDExLXV0aWwtbWFjcm9zIEZlZG9yYT14b3JnLXgxMS11dGlsLW1hY3JvcyBNYW5kcml2YT14MTEtdXRpbC1tYWNyb3MiCiBESVNUUk9fUE5fQUxJQVNfcG4tdjg2ZCA9ICJEZWJpYW49djg2ZCBVYnVudHU9djg2ZCIKLURJU1RST19QTl9BTElBU19wbi12aWRlb3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXZpZGVvcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4td2FmZmxlID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4td2F0Y2hkb2cgPSAiRGViaWFuPXdhdGNoZG9nIFVidW50dT13YXRjaGRvZyBNYW5kcml2YT13YXRjaGRvZyIKIERJU1RST19QTl9BTElBU19wbi13ZWJraXRndGsgPSAiRmVkb3JhPXdlYmtpdGd0ayBVYnVudHU9bGlid2Via2l0IgpAQCAtNDA0LDIxICszNzYsMTUgQEAKIERJU1RST19QTl9BTElBU19wbi14Y2ItdXRpbC1pbWFnZSA9ICJEZWJpYW49eGNiLXV0aWwgRmVkb3JhPXhjYi11dGlsIgogRElTVFJPX1BOX0FMSUFTX3BuLXhjYi11dGlsLWtleXN5bXMgPSAiRGViaWFuPXhjYi11dGlsIEZlZG9yYT14Y2ItdXRpbCIKIERJU1RST19QTl9BTElBU19wbi14Y2ItdXRpbC13bSA9ICJEZWJpYW49eGNiLXV0aWwgRmVkb3JhPXhjYi11dGlsIgotRElTVFJPX1BOX0FMSUFTX3BuLXhjbWlzY3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhjbWlzY3Byb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLXhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi14ZHB5aW5mbyA9ICJGZWRvcmE9eG9yZy14MTEtdXRpbHMgVWJ1bnR1PXgxMS11dGlscyIKIERJU1RST19QTl9BTElBU19wbi14ZXYgPSAiRmVkb3JhPXhvcmcteDExLXV0aWxzIFVidW50dT14MTEtdXRpbHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4teGV4dHByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhleHRwcm90byIKIERJU1RST19QTl9BTElBU19wbi14ZXllcyA9ICJVYnVudHU9eDExLWFwcHMgRmVkb3JhPXhvcmcteDExLWFwcHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4teGY4NmJpZ2ZvbnRwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by14Zjg2YmlnZm9udHByb3RvIgotRElTVFJPX1BOX0FMSUFTX3BuLXhmODZkZ2Fwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by14Zjg2ZGdhcHJvdG8iCi1ESVNUUk9fUE5fQUxJQVNfcG4teGY4NmRyaXByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhmODZkcmlwcm90byIKIERJU1RST19QTl9BTElBU19wbi14Zjg2LWlucHV0LWV2ZGV2ID0gIlVidW50dT14c2VydmVyLXhvcmctaW5wdXQtZXZkZXYgTWFuZHJpdmE9eDExLWRyaXZlci1pbnB1dC1ldmRldiBEZWJpYW49eHNlcnZlci14b3JnLWlucHV0LWV2ZGV2IEZlZG9yYT14b3JnLXgxMS1kcnYtZXZkZXYgTWVlZ289eG9yZy14MTEtZHJ2LWV2ZGV2IgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtaW5wdXQta2V5Ym9hcmQgPSAiTWVlZ289eG9yZy14MTEtZHJ2LWtleWJvYXJkIEZlZG9yYT14b3JnLXgxMS1kcnYta2V5Ym9hcmQgTWFuZHJpdmE9eDExLWRyaXZlci1pbnB1dC1rZXlib2FyZCBEZWJpYW49eHNlcnZlci14b3JnLWlucHV0LWtleWJvYXJkIgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtaW5wdXQtbW91c2UgPSAiVWJ1bnR1PXhzZXJ2ZXIteG9yZy1pbnB1dC1tb3VzZSBNYW5kcml2YT14MTEtZHJpdmVyLWlucHV0LW1vdXNlIERlYmlhbj14c2VydmVyLXhvcmctaW5wdXQtbW91c2UiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni1pbnB1dC1zeW5hcHRpY3MgPSAiTWVlZ289eG9yZy14MTEtZHJ2LXN5bmFwdGljcyBGZWRvcmE9eG9yZy14MTEtZHJ2LXN5bmFwdGljcyBVYnVudHU9eHNlcnZlci14b3JnLWlucHV0LXN5bmFwdGljcyBNYW5kcml2YT14MTEtZHJpdmVyLWlucHV0LXN5bmFwdGljcyBEZWJpYW49eGZyZWU4Ni1kcml2ZXItc3luYXB0aWNzIgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtaW5wdXQtdm1tb3VzZSA9ICJGZWRvcmE9eG9yZy14MTEtZHJ2LXZtbW91c2UgVWJ1bnR1PXhzZXJ2ZXIteG9yZy1pbnB1dC12bW1vdXNlIE1hbmRyaXZhPXgxMS1kcml2ZXItaW5wdXQtdm1tb3VzZSBEZWJpYW49eHNlcnZlci14b3JnLWlucHV0LXZtbW91c2UiCi1ESVNUUk9fUE5fQUxJQVNfcG4teGY4Nm1pc2Nwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by14Zjg2bWlzY3Byb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtdmlkZW8tY2lycnVzID0gIk9wZW5zdXNlPXhmODYtdmlkZW8tY2lycnVzIERlYmlhbj14c2VydmVyLXhvcmctdmlkZW8tY2lycnVzIgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiVWJ1bnR1PXhzZXJ2ZXIteG9yZy12aWRlby1mYmRldiBEZWJpYW49eHNlcnZlci14b3JnLXZpZGVvLWZiZGV2IgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtdmlkZW8taW50ZWwgPSAiRGViaWFuPXhzZXJ2ZXIteG9yZy12aWRlby1pbnRlbCBGZWRvcmE9eG9yZy14MTEtZHJ2LWludGVsIE1hbmRyaXZhPXgxMS1kcml2ZXItdmlkZW8taW50ZWwgTWVlZ289eG9yZy14MTEtZHJ2LWludGVsIFVidW50dT14c2VydmVyLXhvcmctdmlkZW8taW50ZWwiCkBAIC00MjcsMTUgKzM5MywxMyBAQAogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtdmlkZW8tb21hcGZiID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtdmlkZW8tdmVzYSA9ICJEZWJpYW49eHNlcnZlci14b3JnLXZpZGVvLXZlc2EgRmVkb3JhPXhvcmcteDExLWRydi12ZXNhIE1hbmRyaXZhPXgxMS1kcml2ZXItdmlkZW8tdmVzYSBVYnVudHU9eHNlcnZlci14b3JnLXZpZGVvLXZlc2EiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni12aWRlby12bXdhcmUgPSAiRGViaWFuPXhzZXJ2ZXIteG9yZy12aWRlby12bXdhcmUgRmVkb3JhPXhvcmcteDExLWRydi12bXdhcmUgTWFuZHJpdmE9eDExLWRyaXZlci12aWRlby12bXdhcmUgVWJ1bnR1PXhzZXJ2ZXIteG9yZy12aWRlby12bXdhcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4teGY4NnZpZG1vZGVwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by14Zjg2dmlkbW9kZXByb3RvIFVidW50dT14MTFwcm90by14Zjg2dmlkbW9kZSBEZWJpYW49eDExcHJvdG8teGY4NnZpZG1vZGUiCiBESVNUUk9fUE5fQUxJQVNfcG4teGhvc3QgPSAiVWJ1bnR1PXgxMS14c2VydmVyLXV0aWxzIEZlZG9yYT14b3JnLXgxMS1zZXJ2ZXItdXRpbHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4teGluZXJhbWFwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by14aW5lcmFtYXByb3RvIFVidW50dT14MTFwcm90by14aW5lcmFtYSBEZWJpYW49eDExcHJvdG8teGluZXJhbWEiCiBESVNUUk9fUE5fQUxJQVNfcG4teGlucHV0LWNhbGlicmF0b3IgPSAiRmVkb3JhPXhpbnB1dC1jYWxpYnJhdG9yIE1hbmRyYXZpYT14aW5wdXQtY2FsaWJyYXRvciBVYnVudHU9eGlucHV0LWNhbGlicmF0b3IiCiBESVNUUk9fUE5fQUxJQVNfcG4teGtiY29tcCA9ICJVYnVudHU9eDExLXhrYi11dGlscyBGZWRvcmE9eG9yZy14MTEteGtiLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLXhtb2RtYXAgPSAiTWVlZ289eG9yZy14MTEtdXRpbHMteG1vZG1hcCBGZWRvcmE9eG9yZy14MTEtc2VydmVyLXV0aWxzIFVidW50dT14MTEteHNlcnZlci11dGlscyIKIERJU1RST19QTl9BTElBU19wbi14b3JnLW1pbmltYWwtZm9udHMgPSAiVWJ1bnR1PXhmb250cy1iYXNlIEZlZG9yYT14b3JnLXgxMS1mb250cy1iYXNlIgorRElTVFJPX1BOX0FMSUFTX3BuLXhvcmdwcm90byA9ICJPU1BEVCB1cHN0cmVhbT1odHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9wcm90by94b3JncHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4teHByb3AgPSAiTWVlZ289eG9yZy14MTEtdXRpbHMteHByb3AgRmVkb3JhPXhvcmcteDExLXV0aWxzIFVidW50dT14MTEtdXRpbHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4teHByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhwcm90byBGZWRvcmE9eG9yZy14MTEtcHJvdG8tZGV2ZWwgVWJ1bnR1PXgxMXByb3RvLWNvcmUtZGV2IERlYmlhbj14MTFwcm90by1jb3JlLWRldiBPcGVuc3VzZT14b3JnLXgxMS1wcm90by1kZXZlbCBNYW5kcml2YT14MTEtcHJvdG8tZGV2ZWwiCiBESVNUUk9fUE5fQUxJQVNfcG4teHByb3h5bWFuYWdlbWVudHByb3RvY29sID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhwcm94eW1hbmFnZW1lbnRwcm90b2NvbCIKIERJU1RST19QTl9BTElBU19wbi14cmFuZHIgPSAiVWJ1bnR1PXgxMS14c2VydmVyLXV0aWxzIEZlZG9yYT14b3JnLXgxMS1zZXJ2ZXItdXRpbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4teHJkYiA9ICJVYnVudHU9eDExLXhzZXJ2ZXItdXRpbHMgRmVkb3JhPXhvcmcteDExLXNlcnZlci11dGlscyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwppbmRleCA0OGFmZjk1Li4xMjc4NTkzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCkBAIC0yOSwxMDIgKzI5LDk0IEBACiAjCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hY2wgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGljYSA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGlkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGl0ZXN0cyA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hY3BpZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtbGliID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXBsdWdpbnMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2Etc3RhdGUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdG9vbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMtc2NyaXB0cyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXBtZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcG1kID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXByID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHItdXRpbCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXB0ID0gIkFuw61iYWwgTGltw7NuIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwdC1uYXRpdmUgPSAiQW7DrWJhbCBMaW3Ds24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXJncC1zdGFuZGFsb25lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXNjaWlkb2MgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzcGVsbCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXNzaW1wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzcGVsbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1jb3JlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXR0ciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYtYXJjaGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvZ2VuLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGktdWkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaC1jb21wbGV0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJkd2djID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmVlY3J5cHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmlncmVxc3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbmQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaC1jb21wbGV0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJjID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmluZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3Nzc2RrID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmlzb24gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJqYW0tbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmphbS1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdG9vbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ibHVlejUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYm1hcC10b29scyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ib29zdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3RjaGFydDIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibHVlejUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vc3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ic2QtaGVhZGVycyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ0cmZzLXRvb2xzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtYXBwbGlhbmNlLWltYWdlID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtY29tcGFyZSA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ0cmZzLXRvb2xzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWFwcGxpYW5jZS1pbWFnZSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1jb21wYXJlID0gIlBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLXN5c3Jvb3RzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkZXIgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZHRvb2xzLXRhcmJhbGwgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGRlciA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZHRvb2xzLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveCA9ICJBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94LWluaXR0YWIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iemlwMiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhLWNlcnRpZmljYXRlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhaXJvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbGlicmF0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhLWNlcnRpZmljYXRlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWlybyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jY2FjaGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2RydG9vbHMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaHJwYXRoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWdzdC0zLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1ndGstMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNtYWtlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UtbmF0aXZlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29nbC0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29tcG9zaXRlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci0xLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWdzdC0zLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWd0ay0xLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZSA9ICJQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UtbmF0aXZlID0gIlBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb2dsLTEuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4gPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4tZ25vbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1nbm9tZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGUtdG9vbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGVraXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmV1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3BpbyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyYWNrbGliID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyZWF0ZXJlcG8tYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb25pZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcmFja2xpYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyZWF0ZXJlcG8tYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9uaWUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LWxpbnV4ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi1tb2R1bGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LXRlc3RzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cmwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3dhdXRvbWFjcm9zID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRhbWFnZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN3YXV0b21hY3JvcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRiID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLWdsaWIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKQEAgLTEzMiw1NSArMTI0LDQ2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXdhaXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGVza3RvcC1maWxlLXV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRoY3AgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpcmVjdGZiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXJlY3RmYi1leGFtcGxlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlzdGNjID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MtY29uZmlnID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kbWlkZWNvZGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kbXhwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kbmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kbWlkZWNvZGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG5mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvY2Jvb2steG1sLWR0ZDQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvY2Jvb2steHNsLXN0eWxlc2hlZXRzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kb3MydW5peCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvc2ZzdG9vbHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRwa2cgPSAiQW7DrWJhbCBMaW3Ds24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZHJpMnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyaTNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcm9wYmVhciA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZHRjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZHdhcmZzcmNmaWxlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWR0YyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kd2FyZnNyY2ZpbGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWUyZnNwcm9ncyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVlZS1hY3BpLXNjcmlwdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZmlsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8tZmIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLXgxMSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWxpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWdsaW5mby1mYiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLXgxMSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGZ1dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNvZGluZ3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXBpcGhhbnkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jb2RpbmdzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXBpcGhhbnkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXRodG9vbCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ldWRldiA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldWRldiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGF0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1leHBlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mZm1wZWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1leHBlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmZtcGVnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbGUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbmR1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZml4ZXNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mbGFjID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mbGV4ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LWFsaWFzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250Y29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC1hbGlhcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb29tYXRpYy1maWx0ZXJzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb3JtZmFjdG9yID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZzdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb3JtZmFjdG9yID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZnJlZXR5cGUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmliaWRpID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZnRzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2F3ayA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgpAQCAtMTkzLDUyICsxNzYsNDggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zYW5pdGl6ZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjY21ha2VkZXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY3IgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY29uZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjciA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGItY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGItY3Jvc3MtY2FuYWRpYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGJtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RrLXBpeGJ1ZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGJtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkay1waXhidWYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZXR0ZXh0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQtbWluaW1hbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2hvc3RzY3JpcHQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdpdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGV3ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItMi4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItbmV0d29ya2luZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGV3ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi0yLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLW5ldHdvcmtpbmcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1sb2NhbGUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1tdHJhY2UgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1zY3JpcHRzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpZGUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdtcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWNvbW1vbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wLXRlc3RpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcDMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kb2MtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtdGhlbWVzLXN0YW5kYXJkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1jb25maWcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWVmaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251cGcgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXRscyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnV0bHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tZGVwID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ28taGVsbG93b3JsZCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvYmplY3QtaW50cm9zcGVjdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwZXJmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ29iamVjdC1pbnRyb3NwZWN0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwZXJmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwZ21lID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncHRmZGlzayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwdGZkaXNrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyZXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncm9mZiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1YiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItYm9vdGNvbmYgPSAiQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViLWVmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1YiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItYm9vdGNvbmYgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViLWVmaSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3QtZXhhbXBsZXMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3QtdmFsaWRhdGUgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCkBAIC0yNTIsMTc3ICsyMzEsMTYyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcHl0aG9uID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWVuZ2luZXMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWljb24tdXRpbHMtbmF0aXZlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1zYXRvLWVuZ2luZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsdC1uYXRpdmUgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VtbWlib290ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWRvYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZHBhcm0gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZWxwMm1hbi1uYXRpdmUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhpY29sb3ItaWNvbi10aGVtZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1od2xhdGRldGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWkyYy10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oaWNvbG9yLWljb24tdGhlbWUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1od2xhdGRldGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pMmMtdG9vbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY2VjYy1jcmVhdGUtZW52ID0gIkpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pY29uLW5hbWluZy11dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXQtaWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlmdXBkb3duID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdC1pZnVwZG93biA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1ib290ID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWZyYW1ld29yayA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWJvb3QgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdC10aW55ID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmktdGVzdGZzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtdGVzdGZzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRzY3JpcHRzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlucHV0cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW50bHRvb2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdC10aW55ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmktdGVzdGZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0c2NyaXB0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWludGx0b29sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwcm91dGUyID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdGFibGVzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdXRpbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXJkYS11dGlscyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pc28tY29kZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pc28tY29kZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXcgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianBlZy10dXJibyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqcGVnLXR1cmJvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tanNvbi1jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWdsaWIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtiZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWticHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2NvbmZpZy1mcm9udGVuZHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rYmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta2Vybi10b29scy1uYXRpdmUgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2VybmVsc2hhcmsgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuZWwtZGV2c3JjID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtleGVjLXRvb2xzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtleW1hcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXhlYy10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtleW1hcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta21vZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta21vZC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWttc2N1YmUgPSAiQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWwzYWZwYWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbDNhZnBhZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxhbWUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxkY29uZmlnLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxlc3MgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmE1MiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYWNwaSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhaW8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhY3BpID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYWlvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFyY2hpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcnQtbGdwbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhc3N1YW4gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXRvbWljLW9wcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcnQtbGdwbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFzc3VhbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF0b21pYy1vcHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJic2QgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwLW5nID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjZ3JvdXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjZ3JvdXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2hlY2sgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNvbXBzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29udmVydC1hc24xLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZGFlbW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG14ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNvbXBzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNvbnZlcnQtYXNuMS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNyb2NvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZGFlbW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRteCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkcm0gPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcG94eSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcmF0aW9uLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXBveHkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcmF0aW9uLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVycm9yLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZkZXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXhpZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZha2VrZXkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmZmkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtLWV4dHJhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm9udGVuYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmRldiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZW50ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXhpZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmYWtla2V5ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbS1leHRyYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmb250ZW5jID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NjLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY3J5cHQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdmb3J0cmFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2x1ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsb3NzID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFlaHMyOUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2x1ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3BnLWVycm9yID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJndWRldiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY29udiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmd1ZGV2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNhbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkM3RhZyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianNvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmtzYmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtYXRjaGJveCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuMiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlucHV0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlia3NiYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtYXRjaGJveCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1ubCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1wYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QtcHl0aG9uID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZnNpZG1hcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJubCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5vdGlmeSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJubCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJub3RpZnkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc2wyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNzLW1kbnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvZ2cgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib214aWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib3dsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBhbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2FwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjaWFjY2VzcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zcy1tZG5zID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zcy1uaXMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvZ2cgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvbXhpbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBhbSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjYXAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2lhY2Nlc3MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZTIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGZtNCA9ICJNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBpcGVsaW5lID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBuZzEyID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnByb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnB0aHJlYWQtc3R1YnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyZXBvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBpcGVsaW5lID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBuZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnByb3h5ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHRocmVhZC1zdHVicyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyZXBvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJzdmcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzYW1wbGVyYXRlMCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwyID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZWNyZXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZWNyZXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic20gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbmRmaWxlMSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic29sdiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb3VwLTIuNCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0YXNuMSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb2x2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic291cC0yLjQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0YXNuMSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRlc3QtbmVlZHMtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aGVvcmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aGVvcmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGltZWRhdGUtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aXJwYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aXJwYyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1jcm9zcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW5pc3RyaW5nID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW53aW5kID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyaS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYi1jb21wYXQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiMSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2VyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhLXV0aWxzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidm9yYmlzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3ZWJwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMS1kaWV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhhdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2FsaWJyYXRlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y29tcG9zaXRlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjdXJzb3IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGRhbWFnZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZG1jcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZXh0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmaXhlcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zm9udCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zm9udDIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZ0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhpID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhpbmVyYW1hID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmNvbW1vbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4a2JmaWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYndlYnAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExLWRpZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4YXUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y29tcG9zaXRlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGN1cnNvciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhkYW1hZ2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZG1jcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhleHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zml4ZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Zm9udCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250MiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhpID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGluZXJhbWEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4a2Jjb21tb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4a2JmaWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGFyc2VyLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgpAQCAtNDMwLDI1ICszOTQsMjQgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zYXgtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2ltcGxlLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sMiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG11ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhwbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmFuZHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJlbmRlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzY3Juc2F2ZXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNldHRpbmdzLWNsaWVudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2htZmVuY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNsdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0c3QgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHZtYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NmRnYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4Nm1pc2MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHhmODZ2bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ5YW1sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlnaHR0cGQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1kdW1teSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhwbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyYW5kciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZW5kZXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNjcm5zYXZlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzaG1mZW5jZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzbHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dHN0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dm1jID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHhmODZkZ2EgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4Nm1pc2MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NnZtID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieWFtbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWdodHRwZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1kdW1teSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1maXJtd2FyZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWxpYmMtaGVhZGVycyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0byA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCkBAIC00NTcsMTEgKzQyMCwxMSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8tdGlueSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sbHZtID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbG9ncm90YXRlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2J0ZXN0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc29mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzb2YgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0dG5nLW1vZHVsZXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctdG9vbHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgpAQCAtNDc4LDEyMCArNDQxLDExMSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZS1tb2Qtc2NyaXB0cyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYW4tZGIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbi1wYWdlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtY29uZmlnLWd0ayA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3Atc2F0byA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1rZXlib2FyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1wYW5lbC0yID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbi1zYXRvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRlcm1pbmFsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtd20gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWRhZG0gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWVudS1jYWNoZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1jb25maWctZ3RrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWtleWJvYXJkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uLXNhdG8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC13bSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1jID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWRhZG0gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZW51LWNhY2hlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZGVtb3MgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWdsID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZW52aXJvbm1lbnQtZXh0c2RrID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZXh0c2RrLXRvb2xjaGFpbiA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWlkZS1zdXBwb3J0ID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS10b29sY2hhaW4gPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWlkZS1zdXBwb3J0ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtdG9vbGNoYWluID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtd29ybGQtcGtnZGF0YSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5nZXR0eSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaS14LXNlc3Npb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaWNvbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2VsZmltYWdlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250ZGlyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udHNjYWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmkteC1zZXNzaW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaWNvbSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udGRpciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udHNjYWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWtsaWJzLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta3RlbXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbW1jLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1tYy11dGlscyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXBlZzJkZWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGVnMmRlYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGZyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXBnMTIzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXNtdHAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGcxMjMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXNtdHAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXRkLXV0aWxzID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXRkZXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZGV2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXRvb2xzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXVzbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW11c2wtdXRpbHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1teC0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXgtMS4wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmFzbSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1saWJ0b29sID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmV3bGliID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFlaHMyOUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmN1cnNlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmVhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmVvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXQtdG9vbHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0YmFzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZWFyZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldC10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldGJhc2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXR0bGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtZXhwb3J0LXJvb3QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5pbmphID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnB0aCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcy1teWhvc3RuYW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9oLXB1enpsZXMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzaCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnB0aCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3ByID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzLW15aG9zdG5hbWUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vZm9ubyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2wxMCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy1hcmNoLWNvbmZpZyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cta2V5cmluZ3MgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLXV0aWxzID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3Byb2ZpbGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcmMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3JjID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3MtcmVsZWFzZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9zc3AtdXVpZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW92bWYgPSAiUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW92bWYtc2hlbGwtaW1hZ2UgPSAiUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXAxMS1raXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wMTEta2l0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2UtaW5kZXggPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYW5nbyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYW5nbyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhcnRlZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoZWxmID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheC11dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGJ6aXAyID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGNpdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWFuZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21jaWF1dGlscyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21hbmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsLW5hdGl2ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGlnbGl0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGlneiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGluZW50cnkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBrZ2NvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBtLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwteGlucHV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9uZy1jbG9jayA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wa2djb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZmlnID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG0tdXRpbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb25nLWNsb2NrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcG9wdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG93ZXJ0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3dlcnRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcHAgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcC1kaWFsaW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXByZWxpbmsgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXByZXNlbnRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wcm9jcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcm9jcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHNldWRvID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wc21pc2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc21pc2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHNwbGFzaCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHRlc3QtcnVubmVyID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8tY2xpZW50LWNvbmYtc2F0byA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdXp6bGVzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1ub3NlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgpAQCAtNjAzLDYgKzU1Nyw4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWFzeW5jID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kYnVzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kb2N1dGlscyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZXh0cmFzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1maWxlLXV0aWxzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXQgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdGRiID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1pbmlwYXJzZSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKQEAgLTYxMCwxOTAgKzU2NiwxNzIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbmF0aXZlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1udW1weSA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcGJyID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1waXAgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2l4ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zbW1hcCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11LWhlbHBlci1uYXRpdmUgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc3VidW5pdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtdGVzdHRvb2xzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11LWhlbHBlci1uYXRpdmUgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdXdyYXBwZXItY3Jvc3MgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcXVpbHQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1b3RhID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJhbmRycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcXVvdGEgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZTJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcmVhZGxpbmUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlY29yZHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZW5kZXJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZXNvbHZjb25mID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yZXNvdXJjZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJnYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZ2IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycGNiaW5kID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ybmctdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcm5nLXRvb2xzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnBjc3ZjLXByb3RvID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ycG1yZXNvbHZlID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1yc3luYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnQtdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ydWJ5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1bi1wb3N0aW5zdHMgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1yeHZ0LXVuaWNvZGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ0LXRlc3RzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1YnkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ydW4tcG9zdGluc3RzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnh2dC11bmljb2RlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2JjID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3JlZW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2NybnNhdmVycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2NyZWVuID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2VkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXJmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlcmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXRzZXJpYWwgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHRpbmdzLWRhZW1vbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXR0aW5ncy1kYWVtb24gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3cgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zZWN1cmV0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdy1zeXNyb290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFyZWQtbWltZS1pbmZvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNodXRkb3duLWRlc2t0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFyZWQtbWltZS1pbmZvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2h1dGRvd24tZGVza3RvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaWduaW5nLWtleXMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2xhbmcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvY2F0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zb3VyY2UtaGlnaGxpZ2h0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc291cmNlLWhpZ2hsaWdodCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3BlZXhkc3AgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxbGl0ZTMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3FsaXRlMyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxdWFzaGZzLXRvb2xzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0YXJ0dXAtbm90aWZpY2F0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhcnR1cC1ub3RpZmljYXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyYWNlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0cmVzcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJlc3MgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdWJ2ZXJzaW9uID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1ZG8gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN3YWJiZXItbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3dpZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzZnN1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lza2xvZ2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2xpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzcHJvZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2xpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Byb2YgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3RjaGFydCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290Y29uZiA9ICJDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdGNvbmYgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtY29uZiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1jb21wYXQtdW5pdHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc2VyaWFsZ2V0dHkgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwLXVwcm9iZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRhZ2xpYiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW10YXAgPSAiVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtdGFwLXVwcm9iZXMgPSAiVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGFnbGliID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGFyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2YtYWdlbnQgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2YtYWdlbnQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjcC13cmFwcGVycyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXN0ZXhwb3J0LXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aTJodG1sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvLWR1bW15LW5hdGl2ZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpZmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGltZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10aW55LWluaXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10cmFjZS1jbWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHpjb2RlLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10emRhdGEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHRmLWJpdHN0cmVhbS12ZXJhID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHpjb2RlLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6ZGF0YSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdCA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1mdy11dGlscyA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1ta2ltYWdlID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdWJvb3RjaGFydCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVkZXYtZXh0cmFjb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuZnMzID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdWRldi1leHRyYWNvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmZzMyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaWZkZWYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmluYXRpdmUtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bnppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYmluaXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11c2J1dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXNiaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11c2J1dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLWxpbnV4ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLW1hY3JvcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12ODZkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZhbGdyaW5kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdmlkZW9wcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11dGlsLW1hY3JvcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXY4NmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxncmluZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi12b2xhdGlsZS1iaW5kcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdnRlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4tZGVtb3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2FmZmxlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2ctY29uZmlnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnRlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuLWRlbW9zID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2FmZmxlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2cgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2ctY29uZmlnID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXlsYW5kLXByb3RvY29scyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlYmtpdGd0ayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlYmtpdGd0ayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZXN0b24gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13ZXN0b24tY29uZiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3Rvbi1pbml0ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2dldCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2hpY2ggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpcmVsZXNzLXRvb2xzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td3BhLXN1cHBsaWNhbnQgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teDExLWNvbW1vbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14MTFwZXJmID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14MjY0ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGF1dGggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWltYWdlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWtleXN5bXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtcmVuZGVydXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC13bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y21pc2Nwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14ZHB5aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGV4dHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhleWVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtZXZkZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1rZXlib2FyZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWxpYmlucHV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtbW91c2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1zeW5hcHRpY3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC12bW1vdXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tY2lycnVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1pbnRlbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLW9tYXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12ZXNhID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tdm13YXJlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZkZ2Fwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2ZHJpcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Nm1pc2Nwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2dmlkbW9kZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhob3N0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbmVyYW1hcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGluZXRkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbml0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5wdXQtY2FsaWJyYXRvciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14a2Jjb21wID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhrZXlib2FyZC1jb25maWcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGF1dGggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLWltYWdlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwta2V5c3ltcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXJlbmRlcnV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC13bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZGctdXRpbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZHB5aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhleWVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1ldmRldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQta2V5Ym9hcmQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWxpYmlucHV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1tb3VzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtc3luYXB0aWNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC12bW1vdXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1jaXJydXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWZiZGV2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1pbnRlbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tdmVzYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tdm13YXJlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGhvc3QgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5ldGQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5pdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dC1jYWxpYnJhdG9yID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGtiY29tcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhrZXlib2FyZC1jb25maWcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14bWx0byA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teG1vZG1hcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14b3JnLW1pbmltYWwtZm9udHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhyYW5kciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14cmVzdG9wID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXItbm9kbS1pbml0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXIteGY4Ni1jb25maWcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14b3JnID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHRyYW5zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh1c2VyLWFjY291bnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHZpZGVvLXRlc3RzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14d2luaW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14bW9kbWFwID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teG9yZy1taW5pbWFsLWZvbnRzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teG9yZ3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHByb3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cmFuZHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cmVzdG9wID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci1ub2RtLWluaXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhmODYtY29uZmlnID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14b3JnID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHNldCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0cmFucyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh1c2VyLWFjY291bnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dmlkZW8tdGVzdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dmluZm8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14d2luaW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh6ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teWFzbSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4temlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4temxpYiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYwppbmRleCA3YzE2NWM3Li5jZGM1MzkxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9uby1zdGF0aWMtbGlicy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jCkBAIC0xLDQgKzEsNCBAQAotRElTQUJMRV9TVEFUSUMgPSAiIC0tZGlzYWJsZS1zdGF0aWMiCitESVNBQkxFX1NUQVRJQyA/PSAiIC0tZGlzYWJsZS1zdGF0aWMiCiAKICMgcWVtdSBhYm9ydHMgb24gdW5yZWNvZ25pc2VkIG9wdGlvbgogRElTQUJMRV9TVEFUSUNfcG4tcWVtdSA9ICIiCkBAIC0zNiw2ICszNiw3IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiR7RElTQUJMRV9TVEFUSUN9IgogCiBFWFRSQV9PRUNNQUtFX2FwcGVuZF9wbi1saWJpY2FsID0gIiAtRFNIQVJFRF9PTkxZPVRydWUiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wbi1saWJqcGVnLXR1cmJvID0gIiAtREVOQUJMRV9TVEFUSUM9RmFsc2UiCiAKIEVYQ09ORklHX0FSR1NfYXBwZW5kX3BuLW5jdXJzZXMgPSAiIC0td2l0aG91dC1ub3JtYWwiCiBFWENPTkZJR19BUkdTX2FwcGVuZF9wbi1uY3Vyc2VzLW5hdGl2ZSA9ICIgLS13aXRob3V0LW5vcm1hbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwppbmRleCBhYWVjYTY5Li42MjA5NzhhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCkBAIC0zLDE0ICszLDE0IEBACiAjIG9yIGJvdGggc28gYSBibGFja2xpc3QgaXMgbWFpbnRhaW5lZCBoZXJlLiBUaGUgaWRlYSB3b3VsZCBiZSBvdmVyCiAjIHRpbWUgdG8gcmVkdWNlIHRoaXMgbGlzdCB0byBub3RoaW5nLgogIyBGcm9tIGEgWW9jdG8gUHJvamVjdCBwZXJzcGVjdGl2ZSwgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGFuZCB0ZXN0ZWQKLSMgaW4gdGhlIERJU1RSTz0icG9reS1sc2IiIGNvbmZpZ3VyYXRpb24uCisjIGluIHRoZSBESVNUUk89InBva3kiIGNvbmZpZ3VyYXRpb24uCiAKIEdDQ1BJRSA/PSAiLS1lbmFibGUtZGVmYXVsdC1waWUiCiAjIElmIHN0YXRpYyBQSUUgaXMga25vd24gdG8gd29yayB3ZWxsLCBHTElCQ1BJRT0iLS1lbmFibGUtc3RhdGljLXBpZSIgY2FuIGJlIHNldAogCiAjIF9GT1JUSUZZX1NPVVJDRSByZXF1aXJlcyAtTzEgb3IgaGlnaGVyLCBzbyBkaXNhYmxlIGluIGRlYnVnIGJ1aWxkcyBhcyB0aGV5IHVzZQogIyAtTzAgd2hpY2ggdGhlbiByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZy4KLWxjbF9tYXliZV9mb3J0aWZ5ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdERUJVR19CVUlMRCcsJzEnLCcnLCctRF9GT1JUSUZZX1NPVVJDRT0yJyxkKX0iCitsY2xfbWF5YmVfZm9ydGlmeSA/PSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0RFQlVHX0JVSUxEJywnMScsJycsJy1EX0ZPUlRJRllfU09VUkNFPTInLGQpfSIKIAogIyBFcnJvciBvbiB1c2Ugb2YgZm9ybWF0IHN0cmluZ3MgdGhhdCByZXByZXNlbnQgcG9zc2libGUgc2VjdXJpdHkgcHJvYmxlbXMKIFNFQ1VSSVRZX1NUUklOR0ZPUk1BVCA/PSAiLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkiCkBAIC0yMSwxOSArMjEsMjAgQEAKIAogU0VDVVJJVFlfTk9QSUVfQ0ZMQUdTID89ICItbm8tcGllIC1mbm8tUElFIgogCi1TRUNVUklUWV9DRkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke1NFQ1VSSVRZX1BJRV9DRkxBR1N9ICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKLVNFQ1VSSVRZX05PX1BJRV9DRkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX1NUUklOR0ZPUk1BVH0iCitTRUNVUklUWV9TVEFDS19QUk9URUNUT1IgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKIAotU0VDVVJJVFlfTERGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1XbCwteixyZWxybywteixub3ciCi1TRUNVUklUWV9YX0xERkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtV2wsLXoscmVscm8iCitTRUNVUklUWV9DRkxBR1MgPz0gIiR7U0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SfSAke1NFQ1VSSVRZX1BJRV9DRkxBR1N9ICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKK1NFQ1VSSVRZX05PX1BJRV9DRkxBR1MgPz0gIiR7U0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SfSAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX1NUUklOR0ZPUk1BVH0iCisKK1NFQ1VSSVRZX0xERkxBR1MgPz0gIiR7U0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SfSAtV2wsLXoscmVscm8sLXosbm93IgorU0VDVVJJVFlfWF9MREZMQUdTID89ICIke1NFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUn0gLVdsLC16LHJlbHJvIgogCiAjIHBvd2VycGMgZG9lcyBub3QgZ2V0IG9uIHdpdGggcGllIGZvciByZWFzb25zIG5vdCBsb29rZWQgaW50byBhcyB5ZXQKLVNFQ1VSSVRZX0NGTEFHU19wb3dlcnBjID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliZ2NjX3Bvd2VycGMgPSAiIgogR0NDUElFX3Bvd2VycGMgPSAiIgogR0xJQkNQSUVfcG93ZXJwYyA9ICIiCitTRUNVUklUWV9DRkxBR1NfcmVtb3ZlX3Bvd2VycGMgPSAiJHtTRUNVUklUWV9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2NfcG93ZXJwYyA9ICIiCiAKLSMgYXJtIHNwZWNpZmljIHNlY3VyaXR5IGZsYWcgaXNzdWVzCiBTRUNVUklUWV9DRkxBR1NfcG4tZ2xpYmMgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdsaWJjLWluaXRpYWwgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYy1ydW50aW1lID0gIiIKQEAgLTQzLDcgKzQ0LDYgQEAKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS14ODYtbmF0aXZlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS1pNTg2LW5hdGl2ZSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmkteDg2LTY0LW5hdGl2ZSA9ICIiCi0KIFNFQ1VSSVRZX0NGTEFHU19wbi1ta2VsZmltYWdlX3g4NiA9ICIiCiAKIFNFQ1VSSVRZX0NGTEFHU19wbi12YWxncmluZCA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCkBAIC01OCw5ICs1OCw5IEBACiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0NGTEFHU30iCiBUQVJHRVRfTERGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0xERkxBR1N9IgogCi1TRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nY2MtcnVudGltZSA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYy1pbml0aWFsID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKK1NFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nY2MtcnVudGltZSA9ICIiCitTRUNVUklUWV9TVEFDS19QUk9URUNUT1JfcG4tZ2xpYmMgPSAiIgorU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdsaWJjLWluaXRpYWwgPSAiIgogIyBBbGwgeG9yZyBtb2R1bGUgZHJpdmVycyBuZWVkIHRvIGJlIGxpbmtlZCB0aGlzIHdheSBhcyB3ZWxsIGFuZCBhcmUKICMgaGFuZGxlZCBpbiByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKIFNFQ1VSSVRZX0xERkxBR1NfcG4teHNlcnZlci14b3JnID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMKaW5kZXggYThjZTZkMy4uZTA0ZjhjOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMKQEAgLTQsMTEgKzQsOSBAQAogCiBMSUJDRVhURU5TSU9OID0gIiIKIAotIyBBZGQgYmFyZW1ldGFsIGxpYmMgb3ZlcnJpZGVzIHRvIHRoZSBvdmVycmlkZXMuCiBMSUJDT1ZFUlJJREUgPSAiOmxpYmMtYmFyZW1ldGFsIgotT1ZFUlJJREVTIC49ICIke0xJQkNPVkVSUklERX0iCiAKLUFTU1VNRV9QUk9WSURFRCArPSAidmlydHVhbC9saWJjIHZpcnR1YWwvbGliaWNvbnYiCitBU1NVTUVfUFJPVklERUQgKz0gInZpcnR1YWwvbGliYyB2aXJ0dWFsL2xpYmljb252IHZpcnR1YWwvY3J5cHQiCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMgPz0gIm11c2wiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpY29udiA/PSAibXVzbCIKQEAgLTIzLDYgKzIxLDkgQEAKIEVYVFJBX09FQ09ORl9wbi1nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH1fYXBwZW5kID0gIiAtLXdpdGhvdXQtaGVhZGVycyIKIERFUEVORFNfcmVtb3ZlX3BuLW1ldGEtdG9vbGNoYWluID0gInZpcnR1YWwvbGliYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMiCiAKKyMgY2VydGFpbiBjb21waWxlciBsaWJzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgbGliYywgYXZvaWQgdGhlIGRlcGVuZGVuY2Ugb24gY29tcGlsZXJsaWJzCitCQVNFREVQRU5EU19yZW1vdmVfY2xhc3MtdGFyZ2V0ID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyIKKwogVEFSR0VUX09TID0gImVsZiIKIFRBUkdFVF9PU19hcm0gPSAiZWFiaSIKIApAQCAtMzAsMyArMzEsOSBAQAogVE9PTENIQUlOX0hPU1RfVEFTS19BVFRFTVBUT05MWSA/PSAiIgogVE9PTENIQUlOX1RBUkdFVF9UQVNLID89ICJsaWJnY2MtZGV2IgogVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRV9yZW1vdmUgPSAidmlydHVhbC8ke01MUFJFRklYfWxpYmMgemxpYiBuY3Vyc2VzIgorCisjIGRpc2FibGUgc3RhY2sgcHJvdGVjdG9yIGJ5IGRlZmF1bHQgKG5vLWxpYmMsIG5vIHByb3RlY3RvciBpbXBsZW1lbnRhdGlvbikKK1NFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9saWJjLWJhcmVtZXRhbCA9ICIiCisjIGRpc2FibGUgcGllIHNlY3VyaXR5IGZsYWdzIGJ5IGRlZmF1bHQKK1NFQ1VSSVRZX0NGTEFHU19saWJjLWJhcmVtZXRhbCA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9MREZMQUdTX2xpYmMtYmFyZW1ldGFsID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1nbGliYy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtZ2xpYmMuaW5jCmluZGV4IGFkODAwMGYuLjhkMTA3NjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1nbGliYy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWdsaWJjLmluYwpAQCAtNCw5ICs0LDcgQEAKIAogTElCQ0VYVEVOU0lPTiA9ICIke0BbJycsICctZ251J11bKGQuZ2V0VmFyKCdBQklFWFRFTlNJT04nKSBvciAnJykgIT0gJyddfSIKIAotIyBBZGQgZ2xpYmMgb3ZlcnJpZGVzIHRvIHRoZSBvdmVycmlkZXMgZm9yIGdsaWJjLgogTElCQ09WRVJSSURFID0gIjpsaWJjLWdsaWJjIgotT1ZFUlJJREVTIC49ICIke0xJQkNPVkVSUklERX0iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmljb252ID89ICJnbGliYyIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay1saWJpY29udiA/PSAibmF0aXZlc2RrLWdsaWJjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jCmluZGV4IDU0ZTFhY2YuLjhiYWRiYmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKQEAgLTQsMTMgKzQsMTIgQEAKIAogTElCQ0VYVEVOU0lPTiA9ICItbXVzbCIKIAotIyBBZGQgbXVzbCBsaWJjIG92ZXJyaWRlcyB0byB0aGUgb3ZlcnJpZGVzLgogTElCQ09WRVJSSURFID0gIjpsaWJjLW11c2wiCi1PVkVSUklERVMgLj0gIiR7TElCQ09WRVJSSURFfSIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYyA/PSAibXVzbCIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmljb252ID89ICJtdXNsIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliaW50bCA/PSAibXVzbCIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2NyeXB0ID89ICJtdXNsIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmludGwgPz0gIm5hdGl2ZXNkay1nbGliYyIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay1saWJpY29udiA/PSAibmF0aXZlc2RrLWdsaWJjIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NmMwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYwpAQCAtMCwwICsxLDQ4IEBACisjCisjIE5ld2xpYiBjb25maWd1cmF0aW9uCisjCisKK0xJQkNFWFRFTlNJT04gPSAiLW5ld2xpYiIKK0xJQkNPVkVSUklERSA9ICI6bGliYy1uZXdsaWIiCisKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMgPz0gIm5ld2xpYiIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmljb252ID89ICJuZXdsaWIiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpbnRsID89ICJuZXdsaWIiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstbGliaW50bCA/PSAibmF0aXZlc2RrLWdsaWJjIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmljb252ID89ICJuYXRpdmVzZGstZ2xpYmMiCisKK0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEICs9ICJsZGNvbmZpZyIKKworI1VTRV9OTFMgPz0gIm5vIgorCitJTUFHRV9MSU5HVUFTID0gIiIKKworTElCQ19ERVBFTkRFTkNJRVMgPSAiXAorICAgIG5ld2xpYi1kYmcgXAorICAgIG5ld2xpYi1kZXYgXAorICAgIGxpYmdsb3NzIFwKKyAgICBsaWJnbG9zcy1kZXYgXAorICAgIGxpYmdsb3NzLWRiZyBcCisgICAgbGliZ2NjLWRldiBcCisgICAgbGliZ2NjLWRiZyBcCisgICAgIgorCisjIGNvbXBpbGVybGlicyBkZWZhdWx0cyB0byBnY2MtcnVudGltZSwgYnV0IHdlIGdldCBydW50aW1lIGZyb20gbGliZ2xvc3MKKyMgd2Ugc2V0IEFTU1VNRV9QUk9WSURFRCBiZWNhdXNlIHdlIGNhbnQgc2V0IFBSRUZFUlJFRF9QUk9WSURFUgorIyBmb3IgY29tcGlsZXJsaWJzIHNpbmNlIGl0cyBvdmVycmlkZGVuIGJ5IHRjbW9kZS1kZWZhdWx0CitBU1NVTUVfUFJPVklERUQgKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyB2aXJ0dWFsL2NyeXB0IgorCisjIEl0cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBleHRlbmQgbmV3bGliLCBidXQgd2UgZG9udCBwcm92aWRlIGEgbmF0aXZlIHZhcmlhbnQgb2YgbGliZ2xvc3MKK05FV0xJQl9FWFRFTkRFRCA/PSAgImxpYmdsb3NzIGxpYmdjYyIKK0JBU0VfREVGQVVMVF9ERVBTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7TkVXTElCX0VYVEVOREVEfSIKKworVEFSR0VUX09TID0gImVsZiIKK1RBUkdFVF9PU19hcm0gPSAiZWFiaSIKKworVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCitUT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiR7TElCQ19ERVBFTkRFTkNJRVN9IgorVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRV9yZW1vdmUgPSAiemxpYiBuY3Vyc2VzIgorCisjIGRpc2FibGUgcGllIHNlY3VyaXR5IGZsYWdzIGJ5IGRlZmF1bHQKK1NFQ1VSSVRZX0NGTEFHU19saWJjLW5ld2xpYiA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9MREZMQUdTX2xpYmMtbmV3bGliID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCAwMDM5OWFlLi5mOGRhNjUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCkBAIC0yMiwxMyArMjIsMTQgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay0ke1NES19QUkVGSVh9bGliYy1pbml0aWFsID89ICJuYXRpdmVzZGstZ2xpYmMtaW5pdGlhbCIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2dldHRleHQgPz89ICJnZXR0ZXh0IgogCi1HQ0NWRVJTSU9OID89ICI3LiUiCitHQ0NWRVJTSU9OID89ICI4LiUiCiBTREtHQ0NWRVJTSU9OID89ICIke0dDQ1ZFUlNJT059IgotQklOVVZFUlNJT04gPz0gIjIuMzAlIgotR0RCVkVSU0lPTiA/PSAiOC4wJSIKLUdMSUJDVkVSU0lPTiA/PSAiMi4yNyUiCi1MSU5VWExJQkNWRVJTSU9OID89ICI0LjE1JSIKLVFFTVVWRVJTSU9OID89ICIyLjExJSIKK0JJTlVWRVJTSU9OID89ICIyLjMxJSIKK0dEQlZFUlNJT04gPz0gIjguMiUiCitHTElCQ1ZFUlNJT04gPz0gIjIuMjglIgorTElOVVhMSUJDVkVSU0lPTiA/PSAiNC4xOCUiCitRRU1VVkVSU0lPTiA/PSAiMy4wJSIKK0dPVkVSU0lPTiA/PSAiMS4xMSUiCiAKIFBSRUZFUlJFRF9WRVJTSU9OX2djYyA/PSAiJHtHQ0NWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHQ0NWRVJTSU9OfSIKQEAgLTY1LDE0ICs2NiwxMCBAQAogUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdsaWJjLWluaXRpYWwgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIAotCiBQUkVGRVJSRURfVkVSU0lPTl9xZW11ID89ICIke1FFTVVWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX3FlbXUtbmF0aXZlID89ICIke1FFTVVWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1xZW11ID89ICIke1FFTVVWRVJTSU9OfSIKLSMgU2V0dXAgc3VpdGFibGUgdG9vbGNoYWluIGZsYWdzCi1yZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYwogCi1HT1ZFUlNJT04gPz0gIjEuOSUiCiBQUkVGRVJSRURfVkVSU0lPTl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyA/PSAiJHtHT1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ28tY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R09WRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2dvLWNyb3Nzc2RrLSR7U0RLX0FSQ0h9ID89ICIke0dPVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwppbmRleCBjNWIwNTU2Li5jOWQ1MDJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKQEAgLTksNiArOSw3IEBACiBVTklOQVRJVkVfTUFYR0xJQkNWRVJTSU9OID0gIjIuMjgiCiAKIFVOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMi4zLyIKK1VOSU5BVElWRV9DSEVDS1NVTVthYXJjaDY0XSA/PSAiYjdmYmJhYWQxZWM4NmQ3NmVjYTg0ZDgzMDk4ZjUwNTI1YjhhNDEyNGNjODY4NWVhZWQiCiBVTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gIjQ0MjUzY2RkYmY2MjkwODI1NjhjZWE0ZmZmNTk0MTkxMDY4NzFhMGNmODFiNDg0NWI1ZDM0ZTcwMTQ4ODdiMjAiCiBVTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiYzY5NTQ1NjNkYWQzYzk1NjA4MTE3YzZmYzMyODA5OTAzNmM4MzJiYmQ5MjRlYmY1ZmRjY2I2MjJmYzBhODY4NCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mIGIvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCmluZGV4IDI1NGY4ZjEuLmZjNmQwMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKQEAgLTI4OCw4ICsyODgsNiBAQAogCiBOQVRJVkVMU0JTVFJJTkdbZG9jXSA9ICJBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgaG9zdCBkaXN0cmlidXRpb24uIgogTk9fUkVDT01NRU5EQVRJT05TW2RvY10gPSAiV2hlbiBzZXQgdG8gJzEnLCBubyByZWNvbW1lbmRlZCBwYWNrYWdlcyB3aWxsIGJlIGluc3RhbGxlZC4gUmVhbGl6ZSB0aGF0IHNvbWUgcmVjb21tZW5kZWQgcGFja2FnZXMgbWlnaHQgYmUgcmVxdWlyZWQgZm9yIGNlcnRhaW4gc3lzdGVtIGZ1bmN0aW9uYWxpdHksIHN1Y2ggYXMga2VybmVsLW1vZHVsZXMuIEl0IGlzIHVwIHRvIHRoZSB1c2VyIHRvIGFkZCBwYWNrYWdlcyB0byBJTUFHRV9JTlNUQUxMIGFzIG5lZWRlZC4iCi1OT0hERFtkb2NdID0gIkNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBza2lwIGJ1aWxkaW5nIHRoZSAuaGRkaW1nIGltYWdlLiIKLU5PSVNPW2RvY10gPSAiQ2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHNraXAgYnVpbGRpbmcgdGhlIElTTyBpbWFnZS4iCiAKICNPCiAKQEAgLTQxNyw3ICs0MTUsNyBAQAogVEFSR0VUX1NZU1tkb2NdID0gIlRoZSB0YXJnZXQgc3lzdGVtIGlzIGNvbXByaXNlZCBvZiBUQVJHRVRfQVJDSCxUQVJHRVRfVkVORE9SIGFuZCBUQVJHRVRfT1MuIgogVENMSUJDW2RvY10gPSAiU3BlY2lmaWVzIEMgbGlicmFyeSAobGliYykgdmFyaWFudCB0byB1c2UgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBZb3UgY2FuIHNlbGVjdCAnYmFyZW1ldGFsJywgJ2dsaWJjJyBvciAnbXVzbCcuIgogVENNT0RFW2RvY10gPSAiRW5hYmxlcyBhbiBleHRlcm5hbCB0b29sY2hhaW4gKHdoZXJlIHByb3ZpZGVkIGJ5IGFuIGFkZGl0aW9uYWwgbGF5ZXIpIGlmIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gJ2RlZmF1bHQnLiIKLVRFU1RfSU1BR0VbZG9jXSA9ICJFbmFibGVzIHRlc3QgYm9vdGluZyBvZiB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2VzIHVuZGVyIHRoZSBRRU1VIGVtdWxhdG9yIGFmdGVyIGFueSByb290IGZpbGVzeXN0ZW1zIGFyZSBjcmVhdGVkIGFuZCBydW5zIHRlc3RzIGFnYWluc3QgdGhvc2UgaW1hZ2VzLiIKK1RFU1RJTUFHRV9BVVRPW2RvY10gPSAiRW5hYmxlcyB0ZXN0IGJvb3Rpbmcgb2YgdmlydHVhbCBtYWNoaW5lIGltYWdlcyB1bmRlciB0aGUgUUVNVSBlbXVsYXRvciBhZnRlciBhbnkgcm9vdCBmaWxlc3lzdGVtcyBhcmUgY3JlYXRlZCBhbmQgcnVucyB0ZXN0cyBhZ2FpbnN0IHRob3NlIGltYWdlcyBlYWNoIHRpbWUgYW4gaW1hZ2UgaXMgYnVpbHQuIgogVEVTVF9RRU1VQk9PVF9USU1FT1VUW2RvY10gPSAiVGhlIHRpbWUgaW4gc2Vjb25kcyBhbGxvd2VkIGZvciBhbiBpbWFnZSB0byBib290IGJlZm9yZSBhdXRvbWF0ZWQgcnVudGltZSB0ZXN0cyBiZWdpbiB0byBydW4gYWdhaW5zdCBhbiBpbWFnZS4iCiBURVNUX1NVSVRFU1tkb2NdID0gIkFuIG9yZGVyZWQgbGlzdCBvZiB0ZXN0cyAobW9kdWxlcykgdG8gcnVuIGFnYWluc3QgYW4gaW1hZ2Ugd2hlbiBwZXJmb3JtaW5nIGF1dG9tYXRlZCBydW50aW1lIHRlc3RpbmcuIgogVEVTVF9QT1dFUkNPTlRST0xfQ01EW2RvY10gPSAiRm9yIGF1dG9tYXRlZCBoYXJkd2FyZSB0ZXN0aW5nLCBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIHRvIGNvbnRyb2wgdGhlIHBvd2VyIG9mIHRoZSB0YXJnZXQgbWFjaGluZSB1bmRlciB0ZXN0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKaW5kZXggMzE1ZmI5My4uYzY3ZGVjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9sYXllci5jb25mCkBAIC03LDEyICs3LDEyIEBACiBCQkZJTEVfUEFUVEVSTl9jb3JlID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfY29yZSA9ICI1IgogCi1MQVlFUlNFUklFU19DT1JFTkFNRVMgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJ0aHVkIgogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKIExBWUVSVkVSU0lPTl9jb3JlID0gIjExIgotTEFZRVJTRVJJRVNfQ09NUEFUX2NvcmUgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9jb3JlID0gInRodWQiCiAKIEJCTEFZRVJTX0xBWUVSSU5ERVhfTkFNRV9jb3JlID0gIm9wZW5lbWJlZGRlZC1jb3JlIgogCkBAIC03NCw5ICs3NCwyNyBAQAogICBnbm9tZS1pY29uLXRoZW1lLT5saWJyc3ZnIFwKICAgZm9udC1hbGlhcy0+Zm9udC11dGlsIFwKICAgc3lzdGVtZC1ib290LT5zeXN0ZW1kLWJvb3Rjb25mIFwKKyAgc3lzdGVtZC0+c3lzdGVtZC1jb25mIFwKKyAgd2VzdG9uLT53ZXN0b24tY29uZiBcCiAgIHdlc3Rvbi1pbml0LT53ZXN0b24gXAogICB3ZXN0b24taW5pdC0+a2JkIFwKICIKIAorIyBBdm9pZCBhZGRpbmcgYmlzb24tbmF0aXZlIHRvIHRoZSBzeXNyb290IHdpdGhvdXQgYSBzcGVjaWZpYworIyBkZXBlbmRlbmN5IGluIHRoZSByZWNpcGUuIFRoaXMgbWVhbnMgaW5kaXJlY3QgZGVwZW5kZW5jaWVzCisjIChlLmcuIFggLT4gWSAtPiBiaW51dGlscy1jcm9zcyAtPiBiaXNvbi1uYXRpdmUpIG5vIGxvbmdlciBtZWV0IHRoZQorIyBkZXBlbmRlbmN5IGluY2lkZW50YWxseS4gVGhpcyBpbXByb3ZlcyBkZXRlcm1pbmlzbSBhbmQgYXZvaWRzIGJ1aWxkCisjIGZhaWx1cmVzIHdoZW4gcGVvcGxlIHN3aXRjaCB0byBleHRlcm5hbCB0b29sY2hhaW5zLgorU1NUQVRFX0VYQ0xVREVERVBTX1NZU1JPT1QgKz0gIi4qLT5iaXNvbi1uYXRpdmUiCisjIE5vdGhpbmcgbmVlZHMgdG8gZGVwZW5kIG9uIGxpYmMtaW5pdGlhbC9nY2MtY3Jvc3MtaW5pdGlhbAorIyBiYXNlLXBhc3N3ZC9zaGFkb3ctc3lzcm9vdCBkb24ndCBuZWVkIHRoZWlyIGRlcGVuZGVuY2llcworU1NUQVRFX0VYQ0xVREVERVBTX1NZU1JPT1QgKz0gIlwKKyAgICAuKi0+LiotaW5pdGlhbC4qIFwKKyAgICAuKihiYXNlLXBhc3N3ZHxzaGFkb3ctc3lzcm9vdCktPi4qIFwKKyIKKyMgQXZvaWQgYWRkaW5nIGF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIHRvIHN5c3Jvb3Qgd2l0aG91dCBhIHNwZWNpZmljCisjIGRlcGVuZGVuY3kgaW4gdGhlIHJlY2lwZS4KK1NTVEFURV9FWENMVURFREVQU19TWVNST09UICs9ICIuKi0+YXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUiCisKICMgV2UgbmVlZCB0byBrZWVwIGJpdGJha2UgdG9vbHMgaW4gUEFUSAogUEFUSCA6PSAiJHtAb3MucGF0aC5kaXJuYW1lKGJiLnV0aWxzLndoaWNoKGQuZ2V0VmFyKCdQQVRIJyksJ2JpdGJha2UnKSl9OiR7SE9TVFRPT0xTX0RJUn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9hYXJjaDY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9hYXJjaDY0LmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkODM4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2FhcmNoNjQuY29uZgpAQCAtMCwwICsxLDIgQEAKK1NES19BUkNIID0gImFhcmNoNjQiCitBQklFWFRFTlNJT05fY2xhc3MtbmF0aXZlc2RrID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12N2EuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY3YS5pbmMKaW5kZXggYmFkMWMyNy4uYTI2NjNkOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY3YS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY3YS5pbmMKQEAgLTEsNCArMSw1IEBACiBERUZBVUxUVFVORSA/PSAiYXJtdjdhdGhmIgorQVJNX0lOU1RSVUNUSU9OX1NFVCA/PSAidGh1bWIiCiAKIFRVTkVWQUxJRFthcm12N2FdID0gIkVuYWJsZSBpbnN0cnVjdGlvbnMgZm9yIEFSTXY3LWEiCiBUVU5FQ09ORkxJQ1RTW2FybXY3YV0gPSAiYXJtdjQgYXJtdjUgYXJtdjYgYXJtdjciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbTY4ay9hcmNoLW02OGsuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL202OGsvYXJjaC1tNjhrLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmY4YTNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL202OGsvYXJjaC1tNjhrLmluYwpAQCAtMCwwICsxLDggQEAKKyMgbTY4ayBBcmNoaXRlY3R1cmUgZGVmaW5pdGlvbnMKKworREVGQVVMVFRVTkUgPz0gIm02OGsiCisKKyMgQXJjaGl0ZWN0dXJlIG5hbWUKK1RVTkVfQVJDSCA9ICJtNjhrIgorCitUVU5FX1BLR0FSQ0ggPSAiJHtUVU5FX1BLR0FSQ0hfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy90dW5lLW1pcHMtNzRrLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL3R1bmUtbWlwcy03NGsuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWZlZTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy90dW5lLW1pcHMtNzRrLmluYwpAQCAtMCwwICsxLDM3IEBACitERUZBVUxUVFVORSA/PSAibWlwczMycjItNzRrYyIKKworTUlQU1BLR1NGWF9NSVBTMTZFID8/PSAiIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjIuaW5jCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvZmVhdHVyZS1taXBzLW1pcHMxNmUuaW5jCisKKworVFVORVZBTElEWzc0a2NdID0gIkVuYWJsZSBNSVBTIDc0SyB3aXRoIERTUHIyIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjc0a2MiLCAiIC1tdHVuZT03NGtjIiwgIiIsIGQpfSIKKworQVZBSUxUVU5FUyArPSAibWlwczMycjItNzRrYyBtaXBzMzJyMi03NGtjLW0xNiIKK0FWQUlMVFVORVMgKz0gIm1pcHMzMnIyZWwtNzRrYyBtaXBzMzJyMmVsLTc0a2MtbTE2IgorCisjIGJpZyBlbmRpYW46IGtjK2RzcDI9a2MsIGtjK2RzcDIrbWlwczE2ZT1rYy1tMTYKK1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMi03NGtjID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLW5mfSA3NGtjIgorVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLTc0a2MtbTE2ID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLTc0a2N9IG1pcHMxNmUiCisKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyLTc0a2MgPSAibWlwczMycjItNzRrYyIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMi03NGtjID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLW5mfSBtaXBzMzJyMi03NGtjLW5mIgorUUVNVV9FWFRSQU9QVElPTlNfbWlwczMycjItNzRrYy1uZiA9ICIgLWNwdSAyNEtjIgorCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzJyMi03NGtjLW0xNiA9ICJtaXBzMzJyMi03NGtjJHtNSVBTUEtHU0ZYX01JUFMxNkV9IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLTc0a2MtbTE2ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLTc0a2N9IG1pcHMzMnIyLTc0a2MtbTE2LW5mIgorUUVNVV9FWFRSQU9QVElPTlNfbWlwczMycjItNzRrYy1tMTYtbmYgPSAiIC1jcHUgMjRLRWMiCisKKyMgbGl0dGxlIGVuZGlhbjoga2MrZHNwMj1rYywga2MrZHNwMittaXBzMTZlPWtjLW0xNgorVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyZWwtNzRrYyA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMmVsLW5mfSA3NGtjIgorVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyZWwtNzRrYy1tMTYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjJlbC03NGtjfSBtaXBzMTZlIgorCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzJyMmVsLTc0a2MgPSAibWlwczMycjJlbC03NGtjIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwtNzRrYyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsLW5mfSBtaXBzMzJyMmVsLTc0a2MtbmYiCitRRU1VX0VYVFJBT1BUSU9OU19taXBzMzJyMmVsLTc0a2MtbmYgPSAiIC1jcHUgMjRLYyIKKworTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjJlbC03NGtjLW0xNiA9ICJtaXBzMzJyMmVsLTc0a2Mke01JUFNQS0dTRlhfTUlQUzE2RX0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjJlbC03NGtjLW0xNiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsLTc0a2N9IG1pcHMzMnIyZWwtNzRrYy1tMTYtbmYiCitRRU1VX0VYVFJBT1BUSU9OU19taXBzMzJyMmVsLTc0a2MtbTE2LW5mID0gIiAtY3B1IDI0S0VjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCmluZGV4IGFhMzMyZmUuLjUwNTBlNDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKQEAgLTE5LDcgKzE5LDcgQEAKIFJERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIiCiAKICMgVXNlIGEgY29tbW9uIGtlcm5lbCByZWNpcGUgZm9yIGFsbCBRRU1VIG1hY2hpbmVzCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAibGludXgteW9jdG8iCiAKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAicWVtdS1uYXRpdmUgcWVtdS1oZWxwZXItbmF0aXZlIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKaW5kZXggYzY4NmJiNC4uZGRkZTcxOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYwpAQCAtMjEsNyArMjEsNyBAQAogQkFTRV9MSUJfdHVuZS1jb3JlMi0zMiA9ICJsaWIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi0zMiA9ICJjb3JlMi0zMiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3JlMi0zMiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1pNjg2fSBjb3JlMi0zMiIKLVFFTVVfRVhUUkFPUFRJT05TX2NvcmUyLTMyID0gIiAtY3B1IGNvcmUyZHVvIgorUUVNVV9FWFRSQU9QVElPTlNfY29yZTItMzIgPSAiIC1jcHUgbjI3MCIKIAogQVZBSUxUVU5FUyArPSAiY29yZTItNjQiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtY29yZTItNjQgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2LTY0fSBjb3JlMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmVpNy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlaTcuaW5jCmluZGV4IDZlZGZiNjguLmQwNmFmNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmVpNy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZWk3LmluYwpAQCAtMSwyMCArMSwxOSBAQAotIyBTZXR0aW5ncyBmb3IgdGhlIEdDQygxKSBjcHUtdHlwZSAiY29yZWk3IjoKKyMgU2V0dGluZ3MgZm9yIHRoZSBHQ0MoMSkgY3B1LXR5cGUgIm5laGFsZW0iOgogIwotIyAgICAgSW50ZWwgQ29yZSBpNyBDUFUgd2l0aCA2NC1iaXQgZXh0ZW5zaW9ucywgTU1YLCBTU0UsIFNTRTIsIFNTRTMsIFNTU0UzLCBTU0U0LjEKLSMgICAgIGFuZCBTU0U0LjIgaW5zdHJ1Y3Rpb24gc2V0IHN1cHBvcnQuCisjICAgICBJbnRlbCBOZWhhbGVtIENQVSB3aXRoIDY0LWJpdCBleHRlbnNpb25zLCBNTVgsIFNTRSwgU1NFMiwgU1NFMywgU1NTRTMsIFNTRTQuMSwKKyMgICAgIFNTRTQuMiBhbmQgUE9QQ05UIGluc3RydWN0aW9uIHNldCBzdXBwb3J0LgogIwogIyBUaGlzIHR1bmUgaXMgcmVjb21tZW5kZWQgZm9yIEludGVsIE5laGFsZW0gYW5kIFNpbHZlcm1vbnQgKGUuZy4gQmF5IFRyYWlsKSBDUFVzCiAjIChhbmQgYmV5b25kKS4KICMKIERFRkFVTFRUVU5FID89ICJjb3JlaTctNjQiCiAKLSMgUHVsbCBpbiB0aGUgcHJldmlvdXMgdHVuZSBpbiB0byBwdWxsIGluIFBBQ0tBR0VfRVhUUkFfQVJDSFMKKyMgSW5jbHVkZSB0aGUgcHJldmlvdXMgdHVuZSB0byBwdWxsIGluIFBBQ0tBR0VfRVhUUkFfQVJDSFMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKIAotCiAjIEV4dHJhIHR1bmUgZmVhdHVyZXMKIFRVTkVWQUxJRFtjb3JlaTddID0gIkVuYWJsZSBjb3JlaTcgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCi1UVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY29yZWk3JywgJyAtbWFyY2g9Y29yZWk3IC1tdHVuZT1jb3JlaTcgLW1mcG1hdGg9c3NlIC1tc3NlNC4yJywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjb3JlaTcnLCAnIC1tYXJjaD1uZWhhbGVtIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPXNzZSAtbXNzZTQuMicsICcnLCBkKX0iCiAKICMgRXh0cmEgdHVuZSBzZWxlY3Rpb25zCiBBVkFJTFRVTkVTICs9ICJjb3JlaTctMzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1tY2Y1NDQxeC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1tY2Y1NDQxeC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhNDFhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1jZjU0NDF4LmluYwpAQCAtMCwwICsxLDEzIEBACitERUZBVUxUVFVORSA/PSAibWNmNTQ0MXgiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbTY4ay9hcmNoLW02OGsuaW5jCisKK1RVTkVWQUxJRFttY2Y1NDQxeF0gPSAiRW5hYmxlIGNvbGRmaXJlIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ21jZjU0NDF4JywgJyAtbWNwdT01NDQxOCcsICcnLCBkKX0iCisKK0FWQUlMVFVORVMgKz0gIm1jZjU0NDF4IgorVFVORV9GRUFUVVJFU190dW5lLW1jZjU0NDF4ID0gIm1jZjU0NDF4IgorVFVORV9BUkNIX3R1bmUtbWNmNTQ0MXggPSAibWNmNTQ0MXgiCitUVU5FX1BLR0FSQ0hfdHVuZS1tY2Y1NDQxeCA9ICJtY2Y1NDQxeCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1tY2Y1NDQxeCA9ICJtNjhrIG1jZjU0NDF4IgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwppbmRleCBmOGFhY2VhLi5jMjkyNzkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKQEAgLTgsMjAgKzgsMTcgQEAKIE1BQ0hJTkVfRkVBVFVSRVMgKz0gInNjcmVlbiBrZXlib2FyZCBwY2kgdXNiaG9zdCBleHQyIGV4dDMgeDg2IFwKICAgICAgICAgICAgICAgICAgICAgIGFjcGkgc2VyaWFsIHVzYmdhZGdldCBhbHNhIgogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyIKLQotSU1BR0VfRlNUWVBFUyA/PSAibGl2ZSIKLU5PSVNPID89ICIxIgorSU1BR0VfRlNUWVBFUyA/PSAiaGRkaW1nIgogCiBLRVJORUxfSU1BR0VUWVBFID89ICJiekltYWdlIgogCi1TRVJJQUxfQ09OU09MRSA/PSAiMTE1MjAwIHR0eVMwIgorU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAiCiAKICMKICMga2VybmVsLXJlbGF0ZWQgdmFyaWFibGVzCiAjCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xNSUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTglIgogCiAjCiAjIFhTRVJWRVIgc3ViY29tcG9uZW50cywgdXNlZCB0byBidWlsZCB0aGUgWFNFUlZFUiB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCA5NDAzYjFlLi5kMmYyYzg1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgpAQCAtMTYsNSArMTYsNSBAQAogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCwxMTUyMDAgY29uc29sZT10dHkiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjE1JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xOCUiCiBRQl9EVEIgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bycsICc0LjcnLCAnJywgJ3pJbWFnZS12ZXJzYXRpbGUtcGIuZHRiJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mCmluZGV4IDk4NjMxNWEuLmE2MGY2N2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHMuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzLmNvbmYKQEAgLTEwLDUgKzEwLDMgQEAKIEtFUk5FTF9BTFRfSU1BR0VUWVBFID0gInZtbGludXguYmluIgogCiBTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCAxMTUyMDA7dHR5UzEiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwczY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzNjQuY29uZgppbmRleCAzZjkxY2JlLi5hMTY2YTEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzNjQuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzNjQuY29uZgpAQCAtMTAsNSArMTAsMyBAQAogS0VSTkVMX0FMVF9JTUFHRVRZUEUgPSAidm1saW51eC5iaW4iCiAKIFNFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eVMwIDExNTIwMDt0dHlTMSIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCmluZGV4IDIzMzBjN2QuLjk5NjZkMWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCkBAIC0xMiw2ICsxMiw4IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKIAorVUJPT1RfTUFDSElORSA/PSAicWVtdS14ODZfNjRfZGVmY29uZmlnIgorCiBLRVJORUxfSU1BR0VUWVBFID0gImJ6SW1hZ2UiCiAKIFNFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eVMwIDExNTIwMDt0dHlTMSIKQEAgLTI5LDYgKzMxLDggQEAKIAogTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMgKz0gInY4NmQiCiAKK01BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZS1zbmQtZW5zMTM3MCBrZXJuZWwtbW9kdWxlLXNuZC1yYXdtaWRpIgorCiBLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgogS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCiBtb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgppbmRleCA4MTFlM2VmLi5lNzhmYjZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgpAQCAtMTEsNiArMTEsOCBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk1ODYuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKIAorVUJPT1RfTUFDSElORSA/PSAicWVtdS14ODZfZGVmY29uZmlnIgorCiBLRVJORUxfSU1BR0VUWVBFID0gImJ6SW1hZ2UiCiAKIFNFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eVMwIDExNTIwMDt0dHlTMSIKQEAgLTI4LDYgKzMwLDggQEAKIAogTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMgKz0gInY4NmQiCiAKK01BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZS1zbmQtZW5zMTM3MCBrZXJuZWwtbW9kdWxlLXNuZC1yYXdtaWRpIgorCiBLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgogS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCiBtb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZiBiL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKaW5kZXggZTc0ZGVjOC4uNjVhMjhkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCkBAIC0yNiwzICsyNiw3IEBACiBQS0dfQ09ORklHX1BBVEggLj0gIjoke1dPUktESVJ9L3JlY2lwZS1zeXNyb290LyR7ZGF0YWRpcn0vcGtnY29uZmlnIgogUEtHX0NPTkZJR19QQVRIW3ZhcmRlcHNleGNsdWRlXSA9ICJkYXRhZGlyIFdPUktESVIiCiBQS0dfQ09ORklHX1BBVEhbdmFyZGVwdmFsdWVleGNsdWRlXSA9ICI6JHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdC8ke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKKworIyBUaGVzZSByZWNpcGVzIGRvbid0IG5lZWQgbXVsdGlsaWIgdmFyaWFudHMsIHRoZSAke0JQTn0gUFJPVkRFUy9SUFJPVkRFUworIyAke01MUFJFRklYfSR7QlBOfQorTk9OX01VTFRJTElCX1JFQ0lQRVMgPSAiZ3J1YiBncnViLWVmaSBtYWtlLW1vZC1zY3JpcHRzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYgYi9wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgppbmRleCAzOTBkMzQyLi40NWU2NzUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgpAQCAtMyw3ICszLDcgQEAKICMgU2VlIHNhbml0eS5iYmNsYXNzCiAjCiAjIEV4cGVydCB1c2VycyBjYW4gY29uZmlybSB0aGVpciBzYW5pdHkgd2l0aCAidG91Y2ggY29uZi9zYW5pdHkuY29uZiIKLUJCX01JTl9WRVJTSU9OID0gIjEuMzUuMCIKK0JCX01JTl9WRVJTSU9OID0gIjEuMzkuMSIKIAogU0FOSVRZX0FCSUZJTEUgPSAiJHtUTVBESVJ9L2FiaV92ZXJzaW9uIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaCBiL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCmluZGV4IGY3YWI0MzAuLjllYWJkNjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCisrKyBiL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCkBAIC0zLDYgKzMsNyBAQAogWyAteiAiJEVOVkNMRUFORUQiIF0gJiYgZXhlYyAvdXNyL2Jpbi9lbnYgLWkgRU5WQ0xFQU5FRD0xIEhPTUU9IiRIT01FIiBcCiAJTENfQUxMPWVuX1VTLlVURi04IFwKIAlURVJNPSRURVJNIFwKKwlJQ0VDQ19QQVRIPSIkSUNFQ0NfUEFUSCIgXAogCWh0dHBfcHJveHk9IiRodHRwX3Byb3h5IiBodHRwc19wcm94eT0iJGh0dHBzX3Byb3h5IiBmdHBfcHJveHk9IiRmdHBfcHJveHkiIFwKIAlub19wcm94eT0iJG5vX3Byb3h5IiBhbGxfcHJveHk9IiRhbGxfcHJveHkiIEdJVF9QUk9YWV9DT01NQU5EPSIkR0lUX1BST1hZX0NPTU1BTkQiICIkMCIgIiRAIgogWyAtZiAvZXRjL2Vudmlyb25tZW50IF0gJiYgLiAvZXRjL2Vudmlyb25tZW50CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL2JibGF5ZXJzL2NyZWF0ZS5weSBiL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5CmluZGV4IGMxOTIzMTYuLjJlYmYxNTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5CkBAIC0zMCw4ICszMCwxMCBAQAogICAgICAgICBjb25mID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCAnY29uZicpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjb25mKQogCisgICAgICAgIGxheWVybmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5ub3JtcGF0aChhcmdzLmxheWVyZGlyKSkKKwogICAgICAgICAjIENyZWF0ZSB0aGUgUkVBRE1FIGZyb20gdGVtcGxhdGVzL1JFQURNRQotICAgICAgICByZWFkbWVfdGVtcGxhdGUgPSAgcmVhZF90ZW1wbGF0ZSgnUkVBRE1FJykgJSAoYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpcikKKyAgICAgICAgcmVhZG1lX3RlbXBsYXRlID0gIHJlYWRfdGVtcGxhdGUoJ1JFQURNRScpLmZvcm1hdChsYXllcm5hbWU9bGF5ZXJuYW1lKQogICAgICAgICByZWFkbWUgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsICdSRUFETUUnKQogICAgICAgICB3aXRoIG9wZW4ocmVhZG1lLCAndycpIGFzIGZkOgogICAgICAgICAgICAgZmQud3JpdGUocmVhZG1lX3RlbXBsYXRlKQpAQCAtNDMsOCArNDUsMTIgQEAKICAgICAgICAgbGljZW5zZV9kc3QgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsIGNvcHlpbmcpCiAgICAgICAgIHNodXRpbC5jb3B5KGxpY2Vuc2Vfc3JjLCBsaWNlbnNlX2RzdCkKIAorICAgICAgICAjIEdldCB0aGUgY29tcGF0IHZhbHVlIGZvciBjb3JlIGxheWVyLgorICAgICAgICBjb21wYXQgPSBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdMQVlFUlNFUklFU19DT01QQVRfY29yZScpIG9yICIiCisKICAgICAgICAgIyBDcmVhdGUgdGhlIGxheWVyLmNvbmYgZnJvbSB0ZW1wbGF0ZXMvbGF5ZXIuY29uZgotICAgICAgICBsYXllcmNvbmZfdGVtcGxhdGUgPSByZWFkX3RlbXBsYXRlKCdsYXllci5jb25mJykgJSAoYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5wcmlvcml0eSkKKyAgICAgICAgbGF5ZXJjb25mX3RlbXBsYXRlID0gcmVhZF90ZW1wbGF0ZSgnbGF5ZXIuY29uZicpLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBsYXllcm5hbWU9bGF5ZXJuYW1lLCBwcmlvcml0eT1hcmdzLnByaW9yaXR5LCBjb21wYXQ9Y29tcGF0KQogICAgICAgICBsYXllcmNvbmYgPSBvcy5wYXRoLmpvaW4oY29uZiwgJ2xheWVyLmNvbmYnKQogICAgICAgICB3aXRoIG9wZW4obGF5ZXJjb25mLCAndycpIGFzIGZkOgogICAgICAgICAgICAgZmQud3JpdGUobGF5ZXJjb25mX3RlbXBsYXRlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvUkVBRE1FIGIvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvUkVBRE1FCmluZGV4IDVhNzdmOGQuLmZiMmQyOGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL1JFQURNRQorKysgYi9wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9SRUFETUUKQEAgLTEsNCArMSw0IEBACi1UaGlzIFJFQURNRSBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgJXMgbGF5ZXIuCitUaGlzIFJFQURNRSBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBjb250ZW50cyBvZiB0aGUge2xheWVybmFtZX0gbGF5ZXIuCiAKIFBsZWFzZSBzZWUgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbnMgYmVsb3cgZm9yIGRldGFpbHMuCiAKQEAgLTE4LDcgKzE4LDcgQEAKIFBhdGNoZXMKID09PT09PT0KIAotUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHRoZSAlcyBsYXllciB0byB0aGUgeHh4eCBtYWlsaW5nIGxpc3QgKHh4eHhAenp6ei5vcmcpCitQbGVhc2Ugc3VibWl0IGFueSBwYXRjaGVzIGFnYWluc3QgdGhlIHtsYXllcm5hbWV9IGxheWVyIHRvIHRoZSB4eHh4IG1haWxpbmcgbGlzdCAoeHh4eEB6enp6Lm9yZykKIGFuZCBjYzogdGhlIG1haW50YWluZXI6CiAKIE1haW50YWluZXI6IFhYWCBZWVlZWVkgPHh4eC55eXl5eXlAenp6enouY29tPgpAQCAtMjYsMTYgKzI2LDE2IEBACiBUYWJsZSBvZiBDb250ZW50cwogPT09PT09PT09PT09PT09PT0KIAotICBJLiBBZGRpbmcgdGhlICVzIGxheWVyIHRvIHlvdXIgYnVpbGQKKyAgSS4gQWRkaW5nIHRoZSB7bGF5ZXJuYW1lfSBsYXllciB0byB5b3VyIGJ1aWxkCiAgSUkuIE1pc2MKIAogCi1JLiBBZGRpbmcgdGhlICVzIGxheWVyIHRvIHlvdXIgYnVpbGQKK0kuIEFkZGluZyB0aGUge2xheWVybmFtZX0gbGF5ZXIgdG8geW91ciBidWlsZAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SdW4gJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycKK1J1biAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIHtsYXllcm5hbWV9JwogCiBJSS4gTWlzYwogPT09PT09PT0KIAotLS0tIHJlcGxhY2Ugd2l0aCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgJXMgbGF5ZXIgLS0tCistLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSB7bGF5ZXJuYW1lfSBsYXllciAtLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2xheWVyLmNvbmYgYi9wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9sYXllci5jb25mCmluZGV4IDNjMDMwMDIuLmUyZWFmZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvbGF5ZXIuY29uZgpAQCAtMSwxMCArMSwxMyBAQAogIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgorQkJQQVRIIC49ICI6JHt7TEFZRVJESVJ9fSIKIAogIyBXZSBoYXZlIHJlY2lwZXMtKiBkaXJlY3RvcmllcywgYWRkIHRvIEJCRklMRVMKLUJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAotICAgICAgICAgICAgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKK0JCRklMRVMgKz0gIiR7e0xBWUVSRElSfX0vcmVjaXBlcy0qLyovKi5iYiBcCisgICAgICAgICAgICAke3tMQVlFUkRJUn19L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiCiAKLUJCRklMRV9DT0xMRUNUSU9OUyArPSAiJXMiCi1CQkZJTEVfUEFUVEVSTl8lcyA9ICJeJHtMQVlFUkRJUn0vIgotQkJGSUxFX1BSSU9SSVRZXyVzID0gIiVzIgorQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ7bGF5ZXJuYW1lfSIKK0JCRklMRV9QQVRURVJOX3tsYXllcm5hbWV9ID0gIl4ke3tMQVlFUkRJUn19LyIKK0JCRklMRV9QUklPUklUWV97bGF5ZXJuYW1lfSA9ICJ7cHJpb3JpdHl9IgorCitMQVlFUkRFUEVORFNfe2xheWVybmFtZX0gPSAiY29yZSIKK0xBWUVSU0VSSUVTX0NPTVBBVF97bGF5ZXJuYW1lfSA9ICJ7Y29tcGF0fSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKaW5kZXggYjAzNjVhYi4uYWQ3ZmNlYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKQEAgLTEzLDYgKzEzLDcgQEAKIGltcG9ydCBkaWZmbGliCiBpbXBvcnQgZ2l0CiBpbXBvcnQgcmUKK2ltcG9ydCBzaGxleAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGJiLnV0aWxzCkBAIC0zMSwxMyArMzIsNiBAQAogbW9uaXRvcl9udW1lcmljX3RocmVzaG9sZCA9IDEwCiAjIEltYWdlIGZpbGVzIHRvIG1vbml0b3IgKG5vdGUgdGhhdCBpbWFnZS1pbmZvLnR4dCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkpCiBpbWdfbW9uaXRvcl9maWxlcyA9IFsnaW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0JywgJ2ZpbGVzLWluLWltYWdlLnR4dCddCi0jIFJlbGF0ZWQgY29udGV4dCBmaWVsZHMgZm9yIHJlcG9ydGluZyAobm90ZTogUEUsIFBWICYgUFIgYXJlIGFsd2F5cyByZXBvcnRlZCBmb3IgbW9uaXRvcmVkIHBhY2thZ2UgZmllbGRzKQotcmVsYXRlZF9maWVsZHMgPSB7fQotcmVsYXRlZF9maWVsZHNbJ1JERVBFTkRTJ10gPSBbJ0RFUEVORFMnXQotcmVsYXRlZF9maWVsZHNbJ1JSRUNPTU1FTkRTJ10gPSBbJ0RFUEVORFMnXQotcmVsYXRlZF9maWVsZHNbJ0ZJTEVMSVNUJ10gPSBbJ0ZJTEVTJ10KLXJlbGF0ZWRfZmllbGRzWydmaWxlcy1pbi1pbWFnZS50eHQnXSA9IFsnaW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0JywgJ1VTRVJfQ0xBU1NFUycsICdJTUFHRV9DTEFTU0VTJywgJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJywgJ0lNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnXQotcmVsYXRlZF9maWVsZHNbJ2luc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCddID0gWydJTUFHRV9GRUFUVVJFUycsICdJTUFHRV9MSU5HVUFTJywgJ0lNQUdFX0lOU1RBTEwnLCAnQkFEX1JFQ09NTUVOREFUSU9OUycsICdOT19SRUNPTU1FTkRBVElPTlMnLCAnUEFDS0FHRV9FWENMVURFJ10KIAogY29sb3VycyA9IHsKICAgICAnY29sb3VyX2RlZmF1bHQnOiAnJywKQEAgLTY3LDcgKzYxLDYgQEAKICAgICAgICAgc2VsZi5vbGR2YWx1ZSA9IG9sZHZhbHVlCiAgICAgICAgIHNlbGYubmV3dmFsdWUgPSBuZXd2YWx1ZQogICAgICAgICBzZWxmLm1vbml0b3JlZCA9IG1vbml0b3JlZAotICAgICAgICBzZWxmLnJlbGF0ZWQgPSBbXQogICAgICAgICBzZWxmLmZpbGVjaGFuZ2VzID0gTm9uZQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xMjMsMTAgKzExNiwxMyBAQAogICAgICAgICAgICAgICAgIGFpdGVtcyA9IHBrZ2xpc3RfY29tYmluZShkZXB2ZXJhKQogICAgICAgICAgICAgICAgIGJpdGVtcyA9IHBrZ2xpc3RfY29tYmluZShkZXB2ZXJiKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhaXRlbXMgPSBzZWxmLm9sZHZhbHVlLnNwbGl0KCkKLSAgICAgICAgICAgICAgICBiaXRlbXMgPSBzZWxmLm5ld3ZhbHVlLnNwbGl0KCkKICAgICAgICAgICAgICAgICBpZiBzZWxmLmZpZWxkbmFtZSA9PSAnRklMRUxJU1QnOgorICAgICAgICAgICAgICAgICAgICBhaXRlbXMgPSBzaGxleC5zcGxpdChzZWxmLm9sZHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBiaXRlbXMgPSBzaGxleC5zcGxpdChzZWxmLm5ld3ZhbHVlKQogICAgICAgICAgICAgICAgICAgICByZW5hbWVkX2RpcnMsIGFpdGVtcywgYml0ZW1zID0gZGV0ZWN0X3JlbmFtZWRfZGlycyhhaXRlbXMsIGJpdGVtcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhaXRlbXMgPSBzZWxmLm9sZHZhbHVlLnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgYml0ZW1zID0gc2VsZi5uZXd2YWx1ZS5zcGxpdCgpCiAKICAgICAgICAgICAgIHJlbW92ZWQgPSBsaXN0KHNldChhaXRlbXMpIC0gc2V0KGJpdGVtcykpCiAgICAgICAgICAgICBhZGRlZCA9IGxpc3Qoc2V0KGJpdGVtcykgLSBzZXQoYWl0ZW1zKSkKQEAgLTIwNiwxMyArMjAyLDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG91dCA9ICd7fSBjaGFuZ2VkIGZyb20gIntjb2xvdXJfcmVtb3ZlfXt9e2NvbG91cl9kZWZhdWx0fSIgdG8gIntjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fSInLmZvcm1hdChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSwgKipjb2xvdXJzKQogCi0gICAgICAgIGlmIHNlbGYucmVsYXRlZDoKLSAgICAgICAgICAgIGZvciBjaGcgaW4gc2VsZi5yZWxhdGVkOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdXRlciBhbmQgY2hnLmZpZWxkbmFtZSBpbiBbJ1BFJywgJ1BWJywgJ1BSJ106Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gY2hnLl9zdHJfaW50ZXJuYWwoRmFsc2UpLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICdcbiAgKiAlcycgJSBsaW5lCi0KICAgICAgICAgcmV0dXJuICclcyVzJyAlIChwcmVmaXgsIG91dCkgaWYgb3V0IGVsc2UgJycKIAogY2xhc3MgRmlsZUNoYW5nZToKQEAgLTQyNCw5ICs0MTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgKGRlcHZlcmEsIGRlcHZlcmIpID0gY29tcGFyZV9wa2dfbGlzdHMoYXN0ciwgYnN0cikKICAgICAgICAgICAgICAgICAgICAgaWYgZGVwdmVyYSA9PSBkZXB2ZXJiOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBhbGlzdCA9IGFzdHIuc3BsaXQoKQorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnRklMRUxJU1QnOgorICAgICAgICAgICAgICAgICAgICBhbGlzdCA9IHNobGV4LnNwbGl0KGFzdHIpCisgICAgICAgICAgICAgICAgICAgIGJsaXN0ID0gc2hsZXguc3BsaXQoYnN0cikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhbGlzdCA9IGFzdHIuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBibGlzdCA9IGJzdHIuc3BsaXQoKQogICAgICAgICAgICAgICAgIGFsaXN0LnNvcnQoKQotICAgICAgICAgICAgICAgIGJsaXN0ID0gYnN0ci5zcGxpdCgpCiAgICAgICAgICAgICAgICAgYmxpc3Quc29ydCgpCiAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSByZW1vdmFsIG9mIHNlbGYtZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICAgaWYgcGtnbmFtZSBpbiBhbGlzdCBhbmQgbm90IHBrZ25hbWUgaW4gYmxpc3Q6CkBAIC02MzUsMTcgKzYyOCw2IEBACiAgICAgICAgICAgICAgICAgY2hnID0gQ2hhbmdlUmVjb3JkKHBhdGgsIGZpbGVuYW1lWzc6XSwgZC5hX2Jsb2IuZGF0YV9zdHJlYW0ucmVhZCgpLmRlY29kZSgndXRmLTgnKSwgJycsIFRydWUpCiAgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoY2hnKQogCi0gICAgIyBMaW5rIHJlbGF0ZWQgY2hhbmdlcwotICAgIGZvciBjaGcgaW4gY2hhbmdlczoKLSAgICAgICAgaWYgY2hnLm1vbml0b3JlZDoKLSAgICAgICAgICAgIGZvciBjaGcyIGluIGNoYW5nZXM6Ci0gICAgICAgICAgICAgICAgIyAoQ2hlY2sgZGlybmFtZSBpbiB0aGUgY2FzZSBvZiBmaWVsZHMgZnJvbSByZWNpcGUgaW5mbyBmaWxlcykKLSAgICAgICAgICAgICAgICBpZiBjaGcucGF0aCA9PSBjaGcyLnBhdGggb3Igb3MucGF0aC5kaXJuYW1lKGNoZy5wYXRoKSA9PSBjaGcyLnBhdGg6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNoZzIuZmllbGRuYW1lIGluIHJlbGF0ZWRfZmllbGRzLmdldChjaGcuZmllbGRuYW1lLCBbXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGcucmVsYXRlZC5hcHBlbmQoY2hnMikKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBjaGcucGF0aCA9PSBjaGcyLnBhdGggYW5kIGNoZy5wYXRoLnN0YXJ0c3dpdGgoJ3BhY2thZ2VzLycpIGFuZCBjaGcyLmZpZWxkbmFtZSBpbiBbJ1BFJywgJ1BWJywgJ1BSJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGcucmVsYXRlZC5hcHBlbmQoY2hnMikKLQogICAgICMgZmlsdGVyIG91dCB1bndhbnRlZCBwYXRocwogICAgIGlmIGV4Y2x1ZGVfcGF0aDoKICAgICAgICAgZm9yIGNoZyBpbiBjaGFuZ2VzOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5CmluZGV4IDRiOTQ4MDYuLjdjYjc4NGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQorKysgYi9wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKQEAgLTEsNSArMSwxMiBAQAogIyBUaGlzIGNsYXNzIHNob3VsZCBwcm92aWRlIGVhc3kgYWNjZXNzIHRvIHRoZSBkaWZmZXJlbnQgYXNwZWN0cyBvZiB0aGUKICMgYnVpbGRzeXN0ZW0gc3VjaCBhcyBsYXllcnMsIGJpdGJha2UgbG9jYXRpb24sIGV0Yy4KKyMKKyMgU0RLX0xBWUVSU19FWENMVURFOiBMYXllcnMgd2hpY2ggd2lsbCBiZSBleGNsdWRlZCBmcm9tIFNESyBsYXllcnMuCisjIFNES19MQVlFUlNfRVhDTFVERV9QQVRURVJOOiBUaGUgc2ltaWFyIHRvIFNES19MQVlFUlNfRVhDTFVERSwgdGhpcyBzdXBwb3J0cworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uIHJlZ3VsYXIgZXhwcmVzc2lvbiwgdXNlIHNwYWNlIGFzIHNlcGFyYXRvciwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmcuOiAiLiotZG93bmxvYWRzIGNsb3NlZC0uKiIKKyMKKwogaW1wb3J0IHN0YXQKIGltcG9ydCBzaHV0aWwKIApAQCAtMjMsOSArMzAsMTIgQEAKICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICBzZWxmLmxheWVyZGlycyA9IFtvcy5wYXRoLmFic3BhdGgocHRoKSBmb3IgcHRoIGluIGQuZ2V0VmFyKCdCQkxBWUVSUycpLnNwbGl0KCldCiAgICAgICAgIHNlbGYubGF5ZXJzX2V4Y2x1ZGUgPSAoZC5nZXRWYXIoJ1NES19MQVlFUlNfRVhDTFVERScpIG9yICIiKS5zcGxpdCgpCisgICAgICAgIHNlbGYubGF5ZXJzX2V4Y2x1ZGVfcGF0dGVybiA9IGQuZ2V0VmFyKCdTREtfTEFZRVJTX0VYQ0xVREVfUEFUVEVSTicpCiAKICAgICBkZWYgY29weV9iaXRiYWtlX2FuZF9sYXllcnMoc2VsZiwgZGVzdGRpciwgd29ya3NwYWNlX25hbWU9Tm9uZSk6CisgICAgICAgIGltcG9ydCByZQogICAgICAgICAjIENvcHkgaW4gYWxsIG1ldGFkYXRhIGxheWVycyArIGJpdGJha2UgKGFzIHJlcG9zaXRvcmllcykKKyAgICAgICAgY29waWVkX2NvcmViYXNlID0gTm9uZQogICAgICAgICBsYXllcnNfY29waWVkID0gW10KICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCiAgICAgICAgIGxheWVycyA9IGxpc3Qoc2VsZi5sYXllcmRpcnMpCkBAIC00MCw4ICs1MCwxNyBAQAogICAgICAgICAjIEV4Y2x1ZGUgbGF5ZXJzCiAgICAgICAgIGZvciBsYXllcl9leGNsdWRlIGluIHNlbGYubGF5ZXJzX2V4Y2x1ZGU6CiAgICAgICAgICAgICBpZiBsYXllcl9leGNsdWRlIGluIGxheWVyczoKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCdFeGNsdWRlZCAlcyBmcm9tIHNkayBsYXllcnMgc2luY2UgaXQgaXMgaW4gU0RLX0xBWUVSU19FWENMVURFJyAlIGxheWVyX2V4Y2x1ZGUpCiAgICAgICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcl9leGNsdWRlKQogCisgICAgICAgIGlmIHNlbGYubGF5ZXJzX2V4Y2x1ZGVfcGF0dGVybjoKKyAgICAgICAgICAgIGxheWVyc19jcCA9IGxheWVyc1s6XQorICAgICAgICAgICAgZm9yIHBhdHRlcm4gaW4gc2VsZi5sYXllcnNfZXhjbHVkZV9wYXR0ZXJuLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgZm9yIGxheWVyIGluIGxheWVyc19jcDoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2gocGF0dGVybiwgbGF5ZXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgnRXhjbHVkZWQgJXMgZnJvbSBzZGsgbGF5ZXJzIHNpbmNlIG1hdGNoZWQgU0RLX0xBWUVSU19FWENMVURFX1BBVFRFUk4nICUgbGF5ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMucmVtb3ZlKGxheWVyKQorCiAgICAgICAgIHdvcmtzcGFjZV9uZXduYW1lID0gd29ya3NwYWNlX25hbWUKICAgICAgICAgaWYgd29ya3NwYWNlX25ld25hbWU6CiAgICAgICAgICAgICBsYXllcm5hbWVzID0gW29zLnBhdGguYmFzZW5hbWUobGF5ZXIpIGZvciBsYXllciBpbiBsYXllcnNdCkBAIC04NCwxNyArMTAzLDE4IEBACiAKICAgICAgICAgICAgIGxheWVyX3JlbGF0aXZlID0gb3MucGF0aC5yZWxwYXRoKGxheWVyZGVzdHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ZGlyKQotICAgICAgICAgICAgbGF5ZXJzX2NvcGllZC5hcHBlbmQobGF5ZXJfcmVsYXRpdmUpCi0KICAgICAgICAgICAgICMgVHJlYXQgY29yZWJhc2UgYXMgc3BlY2lhbCBzaW5jZSBpdCB0eXBpY2FsbHkgd2lsbCBjb250YWluCiAgICAgICAgICAgICAjIGJ1aWxkIGRpcmVjdG9yaWVzIG9yIG90aGVyIGN1c3RvbSBpdGVtcy4KICAgICAgICAgICAgIGlmIGNvcmViYXNlID09IGxheWVyOgorICAgICAgICAgICAgICAgIGNvcGllZF9jb3JlYmFzZSA9IGxheWVyX3JlbGF0aXZlCiAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGxheWVyZGVzdHBhdGgpCiAgICAgICAgICAgICAgICAgZm9yIGYgaW4gY29yZWJhc2VfZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGZfYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGYpCiAgICAgICAgICAgICAgICAgICAgIGRlc3RuYW1lID0gb3MucGF0aC5qb2luKGxheWVyZGVzdHBhdGgsIGZfYmFzZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgIF9zbWFydF9jb3B5KGYsIGRlc3RuYW1lKQogICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYXllcnNfY29waWVkLmFwcGVuZChsYXllcl9yZWxhdGl2ZSkKKwogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihsYXllcmRlc3RwYXRoLCAnY29uZi9sYXllci5jb25mJykpOgogICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJTa2lwcGluZyBsYXllciAlcywgYWxyZWFkeSBoYW5kbGVkIiAlIGxheWVyKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0xNDAsNyArMTYwLDcgQEAKICAgICAgICAgICAgICAgICBsYXllcnNfY29waWVkLnJlbW92ZShsYXllcikKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIHJldHVybiBsYXllcnNfY29waWVkCisgICAgICAgIHJldHVybiBjb3BpZWRfY29yZWJhc2UsIGxheWVyc19jb3BpZWQKIAogZGVmIGdlbmVyYXRlX2xvY2tlZF9zaWdzKHNpZ2ZpbGUsIGQpOgogICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoc2lnZmlsZSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL2VsZi5weSBiL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZDU5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lL2VsZi5weQpAQCAtMCwwICsxLDEyOCBAQAorZGVmIG1hY2hpbmVfZGljdChkKToKKyMgICAgICAgICAgIFRBUkdFVF9PUyAgVEFSR0VUX0FSQ0ggICBNQUNISU5FLCBPU0FCSSwgQUJJVkVSU0lPTiwgTGl0dGxlIEVuZGlhbiwgMzJiaXQ/CisgICAgbWFjaGRhdGEgPSB7CisgICAgICAgICAgICAiZGFyd2luOSIgOiB7IAorICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlYWJpIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZWxmIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjRfYmUiIDooMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiIgOiAgICAgICgzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImVwaXBoYW55IjogICAoNDY0MywgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibG0zMiI6ICAgICAgICgxMzgsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eCIgOiB7IAorICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIjogICAgICAoNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAgKDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpYTY0IjogICAgICAgKDUwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhIjogICAgICAoMzY5MDIsICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiaHBwYSI6ICAgICAgICgxNSwgICAgIDMsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtNjhrIjogICAgICAgKCA0LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTMycjYiOiAgICggOCwgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhMzJyNmVsIjogKCA4LCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2IjogICAoIDgsICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjZlbCI6ICggOCwgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuaW9zMiI6ICAgICAgKDExMywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzMzkwIjogICAgICAgKDIyLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAic3BhcmMiOiAgICAgICggMiwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LW11c2wiIDogeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoICA0MCwgICAgOTcsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKCAgNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICggIDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpNDg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKCAgNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICggIDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAidWNsaW51eC11Y2xpYmMiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImJmaW4iOiAgICAgICAoIDEwNiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sIAorICAgICAgICAgICAgImxpbnV4LWdudWVhYmkiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiIDogICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LW11c2xlYWJpIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIiA6ICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1nbnVzcGUiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1tdXNsc3BlIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtZ251IiA6ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1nbnVfaWxwMzIiIDogICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtZ251eDMyIiA6ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtbXVzbHgzMiIgOiAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LWdudW4zMiIgOiAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNiI6ICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjZlbCI6KCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgIH0KKworICAgICMgQWRkIGluIGFueSBleHRyYSB1c2VyIHN1cHBsaWVkIGRhdGEgd2hpY2ggbWF5IGNvbWUgZnJvbSBhIEJTUCBsYXllciwgcmVtb3ZpbmcgdGhlCisgICAgIyBuZWVkIHRvIGFsd2F5cyBjaGFuZ2UgdGhpcyBjbGFzcyBkaXJlY3RseQorICAgIGV4dHJhX21hY2hkYXRhID0gKGQgYW5kIGQuZ2V0VmFyKCJQQUNLQUdFUUFfRVhUUkFfTUFDSERFRkZVTkNTIiBvciBOb25lKSBvciAiIikuc3BsaXQoKQorICAgIGZvciBtIGluIGV4dHJhX21hY2hkYXRhOgorICAgICAgICBjYWxsID0gbSArICIobWFjaGRhdGEsIGQpIgorICAgICAgICBsb2NzID0geyAibWFjaGRhdGEiIDogbWFjaGRhdGEsICJkIiA6IGR9CisgICAgICAgIG1hY2hkYXRhID0gYmIudXRpbHMuYmV0dGVyX2V2YWwoY2FsbCwgbG9jcykKKworICAgIHJldHVybiBtYWNoZGF0YQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weSBiL3Bva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKaW5kZXggYjE3MjcyOS4uY2NkNWFlZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQorKysgYi9wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CkBAIC0zLDYgKzMsOCBAQAogCiBpbXBvcnQgYmIKIGltcG9ydCBvZS51dGlscworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzaGxleAogCiBjbGFzcyBMb2NhbFNpZ25lcihvYmplY3QpOgogICAgICIiIkNsYXNzIGZvciBoYW5kbGluZyBsb2NhbCAob24gdGhlIGJ1aWxkIGhvc3QpIHNpZ25pbmciIiIKQEAgLTIzLDEwICsyNSw3IEBACiAgICAgICAgIGlmIGFybW9yOgogICAgICAgICAgICAgY21kICs9ICItLWFybW9yICIKICAgICAgICAgY21kICs9IGtleWlkCi0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICAgICAgaWYgc3RhdHVzOgotICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnRmFpbGVkIHRvIGV4cG9ydCBncGcgcHVibGljIGtleSAoJXMpOiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5aWQsIG91dHB1dCkpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNobGV4LnNwbGl0KGNtZCksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgIGRlZiBzaWduX3JwbXMoc2VsZiwgZmlsZXMsIGtleWlkLCBwYXNzcGhyYXNlLCBkaWdlc3QsIHNpZ25fY2h1bmssIGZzaz1Ob25lLCBmc2tfcGFzc3dvcmQ9Tm9uZSk6CiAgICAgICAgICIiIlNpZ24gUlBNIGZpbGVzIiIiCkBAIC00OCwxMyArNDcsMTAgQEAKIAogICAgICAgICAjIFNpZ24gaW4gY2h1bmtzCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihmaWxlcyksIHNpZ25fY2h1bmspOgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kICsgJyAnLmpvaW4oZmlsZXNbaTppK3NpZ25fY2h1bmtdKSkKLSAgICAgICAgICAgIGlmIHN0YXR1czoKLSAgICAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJGYWlsZWQgdG8gc2lnbiBSUE0gcGFja2FnZXM6ICVzIiAlIG91dHB1dCkKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNobGV4LnNwbGl0KGNtZCArICcgJy5qb2luKGZpbGVzW2k6aStzaWduX2NodW5rXSkpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICBkZWYgZGV0YWNoX3NpZ24oc2VsZiwgaW5wdXRfZmlsZSwga2V5aWQsIHBhc3NwaHJhc2VfZmlsZSwgcGFzc3BocmFzZT1Ob25lLCBhcm1vcj1UcnVlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgZGV0YWNoZWQgc2lnbmF0dXJlIG9mIGEgZmlsZSIiIgotICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogCiAgICAgICAgIGlmIHBhc3NwaHJhc2VfZmlsZSBhbmQgcGFzc3BocmFzZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWW91IHNob3VsZCB1c2UgZWl0aGVyIHBhc3NwaHJhc2VfZmlsZSBvZiBwYXNzcGhyYXNlLCBub3QgYm90aCIpCkBAIC0xMDAsNyArOTYsNiBAQAogCiAgICAgZGVmIGdldF9ncGdfdmVyc2lvbihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBncGcgdmVyc2lvbiBhcyBhIHR1cGxlIG9mIGludHMiIiIKLSAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdmVyX3N0ciA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KChzZWxmLmdwZ19iaW4sICItLXZlcnNpb24iLCAiLS1uby1wZXJtaXNzaW9uLXdhcm5pbmciKSkuc3BsaXQoKVsyXS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgIHJldHVybiB0dXBsZShbaW50KGkpIGZvciBpIGluIHZlcl9zdHIuc3BsaXQoIi0iKVswXS5zcGxpdCgnLicpXSkKQEAgLTExNCw3ICsxMDksNyBAQAogICAgICAgICBpZiBzZWxmLmdwZ19wYXRoOgogICAgICAgICAgICAgY21kICs9ICItLWhvbWVkaXIgJXMgIiAlIHNlbGYuZ3BnX3BhdGgKICAgICAgICAgY21kICs9IHNpZ19maWxlCi0gICAgICAgIHN0YXR1cywgXyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCisgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbChzaGxleC5zcGxpdChjbWQpKQogICAgICAgICByZXQgPSBGYWxzZSBpZiBzdGF0dXMgZWxzZSBUcnVlCiAgICAgICAgIHJldHVybiByZXQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9tYWtldHlwZS5weSBiL3Bva3kvbWV0YS9saWIvb2UvbWFrZXR5cGUucHkKaW5kZXggZjg4OTgxZC4uYzM2ZTdiNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9tYWtldHlwZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lL21ha2V0eXBlLnB5CkBAIC03LDcgKzcsMTIgQEAKIAogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBvZS50eXBlcyBhcyB0eXBlcwotaW1wb3J0IGNvbGxlY3Rpb25zCit0cnk6CisgICAgIyBQeXRob24gMy43KworICAgIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBDYWxsYWJsZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgUHl0aG9uIDwgMy43CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2FsbGFibGUKIAogYXZhaWxhYmxlX3R5cGVzID0ge30KIApAQCAtOTYsNyArMTAxLDcgQEAKICAgICAgICAgY29udGludWUKIAogICAgIG9iaiA9IGdldGF0dHIodHlwZXMsIG5hbWUpCi0gICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5DYWxsYWJsZSk6CisgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCBDYWxsYWJsZSk6CiAgICAgICAgIGNvbnRpbnVlCiAKICAgICByZWdpc3RlcihuYW1lLCBvYmopCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKaW5kZXggNGYzZTIxYS4uZWZkMzZiMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQpAQCAtMSwxNSArMSwxNyBAQAoraW1wb3J0IHN0YXQKK2ltcG9ydCBtbWFwCitpbXBvcnQgc3VicHJvY2VzcworCiBkZWYgcnVuc3RyaXAoYXJnKToKICAgICAjIEZ1bmN0aW9uIHRvIHN0cmlwIGEgc2luZ2xlIGZpbGUsIGNhbGxlZCBmcm9tIHNwbGl0X2FuZF9zdHJpcF9maWxlcyBiZWxvdwogICAgICMgQSB3b3JraW5nICdmaWxlJyAob25lIHdoaWNoIHdvcmtzIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlKQogICAgICMKLSAgICAjIFRoZSBlbGZ0eXBlIGlzIGEgYml0IHBhdHRlcm4gKGV4cGxhaW5lZCBpbiBzcGxpdF9hbmRfc3RyaXBfZmlsZXMpIHRvIHRlbGwKKyAgICAjIFRoZSBlbGZ0eXBlIGlzIGEgYml0IHBhdHRlcm4gKGV4cGxhaW5lZCBpbiBpc19lbGYgYmVsb3cpIHRvIHRlbGwKICAgICAjIHVzIHdoYXQgdHlwZSBvZiBmaWxlIHdlJ3JlIHByb2Nlc3NpbmcuLi4KICAgICAjIDQgLSBleGVjdXRhYmxlCiAgICAgIyA4IC0gc2hhcmVkIGxpYnJhcnkKICAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQogCi0gICAgaW1wb3J0IHN0YXQsIHN1YnByb2Nlc3MKLQogICAgIChmaWxlLCBlbGZ0eXBlLCBzdHJpcCkgPSBhcmcKIAogICAgIG5ld21vZGUgPSBOb25lCkBAIC0xOSwxMSArMjEsMTUgQEAKICAgICAgICAgb3MuY2htb2QoZmlsZSwgbmV3bW9kZSkKIAogICAgIHN0cmlwY21kID0gW3N0cmlwXQotCisgICAgc2tpcF9zdHJpcCA9IEZhbHNlCiAgICAgIyBrZXJuZWwgbW9kdWxlICAgIAogICAgIGlmIGVsZnR5cGUgJiAxNjoKLSAgICAgICAgc3RyaXBjbWQuZXh0ZW5kKFsiLS1zdHJpcC1kZWJ1ZyIsICItLXJlbW92ZS1zZWN0aW9uPS5jb21tZW50IiwKLSAgICAgICAgICAgICItLXJlbW92ZS1zZWN0aW9uPS5ub3RlIiwgIi0tcHJlc2VydmUtZGF0ZXMiXSkKKyAgICAgICAgaWYgaXNfa2VybmVsX21vZHVsZV9zaWduZWQoZmlsZSk6CisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcCBzdHJpcCBvbiBzaWduZWQgbW9kdWxlICVzIiAlIGZpbGUpCisgICAgICAgICAgICBza2lwX3N0cmlwID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RyaXBjbWQuZXh0ZW5kKFsiLS1zdHJpcC1kZWJ1ZyIsICItLXJlbW92ZS1zZWN0aW9uPS5jb21tZW50IiwKKyAgICAgICAgICAgICAgICAiLS1yZW1vdmUtc2VjdGlvbj0ubm90ZSIsICItLXByZXNlcnZlLWRhdGVzIl0pCiAgICAgIyAuc28gYW5kIHNoYXJlZCBsaWJyYXJ5CiAgICAgZWxpZiAiLnNvIiBpbiBmaWxlIGFuZCBlbGZ0eXBlICYgODoKICAgICAgICAgc3RyaXBjbWQuZXh0ZW5kKFsiLS1yZW1vdmUtc2VjdGlvbj0uY29tbWVudCIsICItLXJlbW92ZS1zZWN0aW9uPS5ub3RlIiwgIi0tc3RyaXAtdW5uZWVkZWQiXSkKQEAgLTM0LDE4ICs0MCw1OSBAQAogICAgIHN0cmlwY21kLmFwcGVuZChmaWxlKQogICAgIGJiLmRlYnVnKDEsICJydW5zdHJpcDogJXMiICUgc3RyaXBjbWQpCiAKLSAgICB0cnk6CisgICAgaWYgbm90IHNraXBfc3RyaXA6CiAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHN0cmlwY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgIGJiLmVycm9yKCJydW5zdHJpcDogJyVzJyBzdHJpcCBjb21tYW5kIGZhaWxlZCB3aXRoICVzICglcykiICUgKHN0cmlwY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKIAogICAgIGlmIG5ld21vZGU6CiAgICAgICAgIG9zLmNobW9kKGZpbGUsIG9yaWdtb2RlKQogCi0gICAgcmV0dXJuCisjIERldGVjdCAua28gbW9kdWxlIGJ5IHNlYXJjaGluZyBmb3IgInZlcm1hZ2ljPSIgc3RyaW5nCitkZWYgaXNfa2VybmVsX21vZHVsZShwYXRoKToKKyAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKKyAgICAgICAgcmV0dXJuIG1tYXAubW1hcChmLmZpbGVubygpLCAwLCBwcm90PW1tYXAuUFJPVF9SRUFEKS5maW5kKGIidmVybWFnaWM9IikgPj0gMAogCisjIERldGVjdCBpZiAua28gbW9kdWxlIGlzIHNpZ25lZAorZGVmIGlzX2tlcm5lbF9tb2R1bGVfc2lnbmVkKHBhdGgpOgorICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmOgorICAgICAgICBmLnNlZWsoLTI4LCAyKQorICAgICAgICBtb2R1bGVfdGFpbCA9IGYucmVhZCgpCisgICAgICAgIHJldHVybiAiTW9kdWxlIHNpZ25hdHVyZSBhcHBlbmRlZCIgaW4gIiIuam9pbihjaHIoYykgZm9yIGMgaW4gYnl0ZWFycmF5KG1vZHVsZV90YWlsKSkKIAotZGVmIHN0cmlwX2V4ZWNzKHBuLCBkc3RkaXIsIHN0cmlwX2NtZCwgbGliZGlyLCBiYXNlX2xpYmRpciwgcWFfYWxyZWFkeV9zdHJpcHBlZD1GYWxzZSk6CisjIFJldHVybiB0eXBlIChiaXRzKToKKyMgMCAtIG5vdCBlbGYKKyMgMSAtIEVMRgorIyAyIC0gc3RyaXBwZWQKKyMgNCAtIGV4ZWN1dGFibGUKKyMgOCAtIHNoYXJlZCBsaWJyYXJ5CisjIDE2IC0ga2VybmVsIG1vZHVsZQorZGVmIGlzX2VsZihwYXRoKToKKyAgICBleGVjX3R5cGUgPSAwCisgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJmaWxlIiwgIi1iIiwgcGF0aF0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCisKKyAgICBpZiAiRUxGIiBpbiByZXN1bHQ6CisgICAgICAgIGV4ZWNfdHlwZSB8PSAxCisgICAgICAgIGlmICJub3Qgc3RyaXBwZWQiIG5vdCBpbiByZXN1bHQ6CisgICAgICAgICAgICBleGVjX3R5cGUgfD0gMgorICAgICAgICBpZiAiZXhlY3V0YWJsZSIgaW4gcmVzdWx0OgorICAgICAgICAgICAgZXhlY190eXBlIHw9IDQKKyAgICAgICAgaWYgInNoYXJlZCIgaW4gcmVzdWx0OgorICAgICAgICAgICAgZXhlY190eXBlIHw9IDgKKyAgICAgICAgaWYgInJlbG9jYXRhYmxlIiBpbiByZXN1bHQ6CisgICAgICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKCIua28iKSBhbmQgcGF0aC5maW5kKCIvbGliL21vZHVsZXMvIikgIT0gLTEgYW5kIGlzX2tlcm5lbF9tb2R1bGUocGF0aCk6CisgICAgICAgICAgICAgICAgZXhlY190eXBlIHw9IDE2CisgICAgcmV0dXJuIChwYXRoLCBleGVjX3R5cGUpCisKK2RlZiBpc19zdGF0aWNfbGliKHBhdGgpOgorICAgIGlmIHBhdGguZW5kc3dpdGgoJy5hJykgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhwYXRoKToKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZoOgorICAgICAgICAgICAgIyBUaGUgbWFnaWMgbXVzdCBpbmNsdWRlIHRoZSBmaXJzdCBzbGFzaCB0byBhdm9pZAorICAgICAgICAgICAgIyBtYXRjaGluZyBnb2xhbmcgc3RhdGljIGxpYnJhcmllcworICAgICAgICAgICAgbWFnaWMgPSBiJyE8YXJjaD5ceDBhLycKKyAgICAgICAgICAgIHN0YXJ0ID0gZmgucmVhZChsZW4obWFnaWMpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ID09IG1hZ2ljCisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiBzdHJpcF9leGVjcyhwbiwgZHN0ZGlyLCBzdHJpcF9jbWQsIGxpYmRpciwgYmFzZV9saWJkaXIsIGQsIHFhX2FscmVhZHlfc3RyaXBwZWQ9RmFsc2UpOgogICAgICIiIgogICAgIFN0cmlwIGV4ZWN1dGFibGUgY29kZSAobGlrZSBleGVjdXRhYmxlcywgc2hhcmVkIGxpYnJhcmllcykgX2luX3BsYWNlXwogICAgIC0gQmFzZWQgb24gc3lzcm9vdF9zdHJpcCBpbiBzdGFnaW5nLmJiY2xhc3MKQEAgLTU2LDM5ICsxMDMsNyBAQAogICAgIDpwYXJhbSBxYV9hbHJlYWR5X3N0cmlwcGVkOiBTZXQgdG8gVHJ1ZSBpZiBhbHJlYWR5LXN0cmlwcGVkJyBpbiAke0lOU0FORV9TS0lQfQogICAgIFRoaXMgaXMgZm9yIHByb3BlciBsb2dnaW5nIGFuZCBtZXNzYWdlcyBvbmx5LgogICAgICIiIgotICAgIGltcG9ydCBzdGF0LCBlcnJubywgb2UucGF0aCwgb2UudXRpbHMsIG1tYXAKLQotICAgICMgRGV0ZWN0IC5rbyBtb2R1bGUgYnkgc2VhcmNoaW5nIGZvciAidmVybWFnaWM9IiBzdHJpbmcKLSAgICBkZWYgaXNfa2VybmVsX21vZHVsZShwYXRoKToKLSAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6Ci0gICAgICAgICAgICByZXR1cm4gbW1hcC5tbWFwKGYuZmlsZW5vKCksIDAsIHByb3Q9bW1hcC5QUk9UX1JFQUQpLmZpbmQoYiJ2ZXJtYWdpYz0iKSA+PSAwCi0KLSAgICAjIFJldHVybiB0eXBlIChiaXRzKToKLSAgICAjIDAgLSBub3QgZWxmCi0gICAgIyAxIC0gRUxGCi0gICAgIyAyIC0gc3RyaXBwZWQKLSAgICAjIDQgLSBleGVjdXRhYmxlCi0gICAgIyA4IC0gc2hhcmVkIGxpYnJhcnkKLSAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQotICAgIGRlZiBpc19lbGYocGF0aCk6Ci0gICAgICAgIGV4ZWNfdHlwZSA9IDAKLSAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoImZpbGUgLWIgJyVzJyIgJSBwYXRoKQotCi0gICAgICAgIGlmIHJldDoKLSAgICAgICAgICAgIGJiLmVycm9yKCJzcGxpdF9hbmRfc3RyaXBfZmlsZXM6ICdmaWxlICVzJyBmYWlsZWQiICUgcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBleGVjX3R5cGUKLQotICAgICAgICBpZiAiRUxGIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICBleGVjX3R5cGUgfD0gMQotICAgICAgICAgICAgaWYgIm5vdCBzdHJpcHBlZCIgbm90IGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gMgotICAgICAgICAgICAgaWYgImV4ZWN1dGFibGUiIGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gNAotICAgICAgICAgICAgaWYgInNoYXJlZCIgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSA4Ci0gICAgICAgICAgICBpZiAicmVsb2NhdGFibGUiIGluIHJlc3VsdCBhbmQgaXNfa2VybmVsX21vZHVsZShwYXRoKToKLSAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gMTYKLSAgICAgICAgcmV0dXJuIGV4ZWNfdHlwZQorICAgIGltcG9ydCBzdGF0LCBlcnJubywgb2UucGF0aCwgb2UudXRpbHMKIAogICAgIGVsZmZpbGVzID0ge30KICAgICBpbm9kZXMgPSB7fQpAQCAtOTgsNiArMTEzLDggQEAKICAgICAjCiAgICAgIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxlcyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzCiAgICAgIworICAgIGNoZWNrZWxmID0gW10KKyAgICBpbm9kZWNhY2hlID0ge30KICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhkc3RkaXIpOgogICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgIGZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKQEAgLTEyMyw3ICsxNDAsMTEgQEAKIAogICAgICAgICAgICAgICAgICMgSXQncyBhIGZpbGUgKG9yIGhhcmRsaW5rKSwgbm90IGEgbGluawogICAgICAgICAgICAgICAgICMgLi4uYnV0IGlzIGl0IEVMRiwgYW5kIGlzIGl0IGFscmVhZHkgc3RyaXBwZWQ/Ci0gICAgICAgICAgICAgICAgZWxmX2ZpbGUgPSBpc19lbGYoZmlsZSkKKyAgICAgICAgICAgICAgICBjaGVja2VsZi5hcHBlbmQoZmlsZSkKKyAgICAgICAgICAgICAgICBpbm9kZWNhY2hlW2ZpbGVdID0gcy5zdF9pbm8KKyAgICByZXN1bHRzID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChpc19lbGYsIGNoZWNrZWxmLCBkKQorICAgIGZvciAoZmlsZSwgZWxmX2ZpbGUpIGluIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgI2VsZl9maWxlID0gaXNfZWxmKGZpbGUpCiAgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAxOgogICAgICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBxYV9hbHJlYWR5X3N0cmlwcGVkOgpAQCAtMTMyLDEzICsxNTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJGaWxlICclcycgZnJvbSAlcyB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEiICUgKGZpbGVbbGVuKGRzdGRpcik6XSwgcG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgICAgICAgICBpZiBzLnN0X2lubyBpbiBpbm9kZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGlub2RlY2FjaGVbZmlsZV0gaW4gaW5vZGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKGlub2Rlc1tzLnN0X2lub10sIGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKGlub2Rlc1tpbm9kZWNhY2hlW2ZpbGVdXSwgZmlsZSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgaGFyZGxpbmtzIHNvIHRoYXQgd2UgZG8gbm90IHN0cmlwIHRoZSBvcmlnaW5hbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlub2Rlc1tzLnN0X2lub10gPSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb3B5ZmlsZShmaWxlLCBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVzW2lub2RlY2FjaGVbZmlsZV1dID0gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuYnJlYWtfaGFyZGxpbmtzKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGZmaWxlc1tmaWxlXSA9IGVsZl9maWxlCiAKICAgICAjCkBAIC0xNDksOCArMTcwLDcgQEAKICAgICAgICAgZWxmX2ZpbGUgPSBpbnQoZWxmZmlsZXNbZmlsZV0pCiAgICAgICAgIHNmaWxlcy5hcHBlbmQoKGZpbGUsIGVsZl9maWxlLCBzdHJpcF9jbWQpKQogCi0gICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoc2ZpbGVzLCBydW5zdHJpcCkKLQorICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2gocnVuc3RyaXAsIHNmaWxlcywgZCkKIAogCiBkZWYgZmlsZV90cmFuc2xhdGUoZmlsZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CmluZGV4IDJkOGFlYmEuLjg4MmU3YzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGJiCkBAIC0xMyw2ICsxMiw3IEBACiBpbXBvcnQgc3RyaW5nCiBmcm9tIG9lLmdwZ19zaWduIGltcG9ydCBnZXRfc2lnbmVyCiBpbXBvcnQgaGFzaGxpYgoraW1wb3J0IGZubWF0Y2gKIAogIyB0aGlzIGNhbiBiZSB1c2VkIGJ5IGFsbCBQTSBiYWNrZW5kcyB0byBjcmVhdGUgdGhlIGluZGV4IGZpbGVzIGluIHBhcmFsbGVsCiBkZWYgY3JlYXRlX2luZGV4KGFyZyk6CkBAIC04NCwxMiArODQsNTUgQEAKIAogICAgIHJldHVybiBvdXRwdXQKIAotIyBOb3RlOiB0aGlzIHNob3VsZCBiZSBiYi5mYXRhbCBpbiB0aGUgZnV0dXJlLgotZGVmIGZhaWxlZF9wb3N0aW5zdHNfd2Fybihwa2dzLCBsb2dfcGF0aCk6Ci0gICAgYmIud2FybigiIiJJbnRlbnRpb25hbGx5IGZhaWxpbmcgcG9zdGluc3RhbGwgc2NyaXB0bGV0cyBvZiAlcyB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHBsYWNlIHRoZW0gaW50byBwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkuCi1JZiBkZWZlcnJpbmcgdG8gZmlyc3QgYm9vdCB3YXNuJ3QgdGhlIGludGVudCwgdGhlbiBzY3JpcHRsZXQgZmFpbHVyZSBtYXkgbWVhbiBhbiBpc3N1ZSBpbiB0aGUgcmVjaXBlLCBvciBhIHJlZ3Jlc3Npb24gZWxzZXdoZXJlLgorZGVmIGZhaWxlZF9wb3N0aW5zdHNfYWJvcnQocGtncywgbG9nX3BhdGgpOgorICAgIGJiLmZhdGFsKCIiIlBvc3RpbnN0YWxsIHNjcmlwdGxldHMgb2YgJXMgaGF2ZSBmYWlsZWQuIElmIHRoZSBpbnRlbnRpb24gaXMgdG8gZGVmZXIgdGhlbSB0byBmaXJzdCBib290LAordGhlbiBwbGVhc2UgcGxhY2UgdGhlbSBpbnRvIHBrZ19wb3N0aW5zdF9vbnRhcmdldF8ke1BOfSAoKS4KK0RlZmVycmluZyB0byBmaXJzdCBib290IHZpYSAnZXhpdCAxJyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgogRGV0YWlscyBvZiB0aGUgZmFpbHVyZSBhcmUgaW4gJXMuIiIiICUocGtncywgbG9nX3BhdGgpKQogCitkZWYgZ2VuZXJhdGVfbG9jYWxlX2FyY2hpdmUoZCwgcm9vdGZzLCB0YXJnZXRfYXJjaCwgbG9jYWxlZGlyKToKKyAgICAjIFByZXR0eSBzdXJlIHdlIGRvbid0IG5lZWQgdGhpcyBmb3IgbG9jYWxlIGFyY2hpdmUgZ2VuZXJhdGlvbiBidXQKKyAgICAjIGtlZXBpbmcgaXQgdG8gYmUgc2FmZS4uLgorICAgIGxvY2FsZV9hcmNoX29wdGlvbnMgPSB7IFwKKyAgICAgICAgImFybSI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgImFybWViIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAiYWFyY2g2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgImFhcmNoNjRfYmUiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJzaDQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJwb3dlcnBjIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAicG93ZXJwYzY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAibWlwcyI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKKyAgICAgICAgIm1pcHNpc2EzMnI2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAibWlwczY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAibWlwc2lzYTY0cjYiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJtaXBzZWwiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCisgICAgICAgICJtaXBzaXNhMzJyNmVsIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAibWlwczY0ZWwiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCisgICAgICAgICJtaXBzaXNhNjRyNmVsIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAicmlzY3Y2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgInJpc2N2MzIiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCisgICAgICAgICJpNTg2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAiaTY4NiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgIng4Nl82NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXQorICAgIH0KKyAgICBpZiB0YXJnZXRfYXJjaCBpbiBsb2NhbGVfYXJjaF9vcHRpb25zOgorICAgICAgICBhcmNoX29wdGlvbnMgPSBsb2NhbGVfYXJjaF9vcHRpb25zW3RhcmdldF9hcmNoXQorICAgIGVsc2U6CisgICAgICAgIGJiLmVycm9yKCJsb2NhbGVfYXJjaF9vcHRpb25zIG5vdCBmb3VuZCBmb3IgdGFyZ2V0X2FyY2g9IiArIHRhcmdldF9hcmNoKQorICAgICAgICBiYi5mYXRhbCgidW5rbm93biBhcmNoOiIgKyB0YXJnZXRfYXJjaCArICIgZm9yIGxvY2FsZV9hcmNoX29wdGlvbnMiKQorCisgICAgIyBOZWVkIHRvIHNldCB0aGlzIHNvIGNyb3NzLWxvY2FsZWRlZiBrbm93cyB3aGVyZSB0aGUgYXJjaGl2ZSBpcworICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICBlbnZbIkxPQ0FMRUFSQ0hJVkUiXSA9IG9lLnBhdGguam9pbihsb2NhbGVkaXIsICJsb2NhbGUtYXJjaGl2ZSIpCisKKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKGxvY2FsZWRpcik6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obG9jYWxlZGlyLCBuYW1lKQorICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgY21kID0gWyJjcm9zcy1sb2NhbGVkZWYiLCAiLS12ZXJib3NlIl0KKyAgICAgICAgICAgIGNtZCArPSBhcmNoX29wdGlvbnMKKyAgICAgICAgICAgIGNtZCArPSBbIi0tYWRkLXRvLWFyY2hpdmUiLCBwYXRoXQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisKIGNsYXNzIEluZGV4ZXIob2JqZWN0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGRlcGxveV9kaXIpOgogICAgICAgICBzZWxmLmQgPSBkCkBAIC0xNzcsNyArMjIwLDcgQEAKICAgICAgICAgICAgIGJiLm5vdGUoIlRoZXJlIGFyZSBubyBwYWNrYWdlcyBpbiAlcyEiICUgc2VsZi5kZXBsb3lfZGlyKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoaW5kZXhfY21kcywgY3JlYXRlX2luZGV4KQorICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKGNyZWF0ZV9pbmRleCwgaW5kZXhfY21kcywgc2VsZi5kKQogCiAgICAgICAgIGlmIHNpZ25lcjoKICAgICAgICAgICAgIGZlZWRfc2lnX3R5cGUgPSBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1NJR05BVFVSRV9UWVBFJykKQEAgLTI1OCw3ICszMDEsNyBAQAogICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlIG5vIHBhY2thZ2VzIGluICVzIiAlIHNlbGYuZGVwbG95X2RpcikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKGluZGV4X2NtZHMsIGNyZWF0ZV9pbmRleCkKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChjcmVhdGVfaW5kZXgsIGluZGV4X2NtZHMsIHNlbGYuZCkKICAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX1NJR04nKSA9PSAnMSc6CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQYWNrYWdlIGZlZWQgc2lnbmluZyBub3QgaW1wbGVtZW50ZCBmb3IgZHBrZycpCiAKQEAgLTMzNiwxNyArMzc5LDI0IEBACiAKICAgICBkZWYgX2luaXRpYWxpemVfaW50ZXJjZXB0cyhzZWxmKToKICAgICAgICAgYmIubm90ZSgiSW5pdGlhbGl6aW5nIGludGVyY2VwdCBkaXIgZm9yICVzIiAlIHNlbGYudGFyZ2V0X3Jvb3RmcykKLSAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZ2V0VmFyKCJQT1NUSU5TVF9JTlRFUkNFUFRTX0RJUiIpCi0gICAgICAgIGlmIG5vdCBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpcjoKLSAgICAgICAgICAgIHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyID0gc2VsZi5kLmV4cGFuZCgiJHtDT1JFQkFTRX0vc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzIikKICAgICAgICAgIyBBcyB0aGVyZSBtaWdodCBiZSBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mIFBhY2thZ2VNYW5hZ2VyIG9wZXJhdGluZyBhdCB0aGUgc2FtZSB0aW1lCiAgICAgICAgICMgd2UgbmVlZCB0byBpc29sYXRlIHRoZSBpbnRlcmNlcHRfc2NyaXB0cyBkaXJlY3RvcmllcyBmcm9tIGVhY2ggb3RoZXIsCiAgICAgICAgICMgaGVuY2UgdGhlIHVnbHkgaGFzaCBkaWdlc3QgaW4gZGlyIG5hbWUuCi0gICAgICAgIHNlbGYuaW50ZXJjZXB0c19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMtJXMiICUoaGFzaGxpYi5zaGEyNTYoc2VsZi50YXJnZXRfcm9vdGZzLmVuY29kZSgpKS5oZXhkaWdlc3QoKSkgKQorICAgICAgICBzZWxmLmludGVyY2VwdHNfZGlyID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwgImludGVyY2VwdF9zY3JpcHRzLSVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2hsaWIuc2hhMjU2KHNlbGYudGFyZ2V0X3Jvb3Rmcy5lbmNvZGUoKSkuaGV4ZGlnZXN0KCkpKQogCisgICAgICAgIHBvc3RpbnN0X2ludGVyY2VwdHMgPSAoc2VsZi5kLmdldFZhcigiUE9TVElOU1RfSU5URVJDRVBUUyIpIG9yICIiKS5zcGxpdCgpCisgICAgICAgIGlmIG5vdCBwb3N0aW5zdF9pbnRlcmNlcHRzOgorICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19wYXRoID0gc2VsZi5kLmdldFZhcigiUE9TVElOU1RfSU5URVJDRVBUU19QQVRIIikKKyAgICAgICAgICAgIGlmIG5vdCBwb3N0aW5zdF9pbnRlcmNlcHRzX3BhdGg6CisgICAgICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19wYXRoID0gc2VsZi5kLmdldFZhcigiUE9TVElOU1RfSU5URVJDRVBUU19ESVIiKSBvciBzZWxmLmQuZXhwYW5kKCIke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMiKQorICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0cyA9IG9lLnBhdGgud2hpY2hfd2lsZCgnKicsIHBvc3RpbnN0X2ludGVyY2VwdHNfcGF0aCkKKworICAgICAgICBiYi5kZWJ1ZygxLCAnQ29sbGVjdGVkIGludGVyY2VwdHM6XG4lcycgJSAnJy5qb2luKCcgICVzXG4nICUgaSBmb3IgaSBpbiBwb3N0aW5zdF9pbnRlcmNlcHRzKSkKICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYuaW50ZXJjZXB0c19kaXIsIFRydWUpCi0gICAgICAgIHNodXRpbC5jb3B5dHJlZShwb3N0aW5zdF9pbnRlcmNlcHRzX2Rpciwgc2VsZi5pbnRlcmNlcHRzX2RpcikKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuaW50ZXJjZXB0c19kaXIpCisgICAgICAgIGZvciBpbnRlcmNlcHQgaW4gcG9zdGluc3RfaW50ZXJjZXB0czoKKyAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGludGVyY2VwdCwgb3MucGF0aC5qb2luKHNlbGYuaW50ZXJjZXB0c19kaXIsIG9zLnBhdGguYmFzZW5hbWUoaW50ZXJjZXB0KSkpCiAKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCBmYWlsZWRfc2NyaXB0KToKQEAgLTM3MCw3ICs0MjAsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShyZWdpc3RlcmVkX3BrZ3MpCiAKIAotICAgIGRlZiBydW5faW50ZXJjZXB0cyhzZWxmKToKKyAgICBkZWYgcnVuX2ludGVyY2VwdHMoc2VsZiwgcG9wdWxhdGVfc2RrPU5vbmUpOgogICAgICAgICBpbnRlcmNlcHRzX2RpciA9IHNlbGYuaW50ZXJjZXB0c19kaXIKIAogICAgICAgICBiYi5ub3RlKCJSdW5uaW5nIGludGVyY2VwdCBzY3JpcHRzOiIpCkBAIC0zODIsNyArNDMyLDggQEAKICAgICAgICAgICAgIGlmIHNjcmlwdCA9PSAicG9zdGluc3RfaW50ZXJjZXB0IiBvciBub3Qgb3MuYWNjZXNzKHNjcmlwdF9mdWxsLCBvcy5YX09LKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiBzY3JpcHQgPT0gImRlbGF5X3RvX2ZpcnN0X2Jvb3QiOgorICAgICAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCB0byBydW4gYW55IG11bHRpbGliIHZhcmlhbnQgb2YgdGhpcworICAgICAgICAgICAgaWYgc2NyaXB0LnN0YXJ0c3dpdGgoImRlbGF5X3RvX2ZpcnN0X2Jvb3QiKToKICAgICAgICAgICAgICAgICBzZWxmLl9wb3N0cG9uZV90b19maXJzdF9ib290KHNjcmlwdF9mdWxsKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTM5Miw5ICs0NDMsMjIgQEAKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChzY3JpcHRfZnVsbCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogICAgICAgICAgICAgICAgIGlmIG91dHB1dDogYmIubm90ZShvdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKQogICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkLCBkZXRhaWxzIGluICVzL2xvZy5kb18lcyIgJSAoc2NyaXB0LCBzZWxmLmQuZ2V0VmFyKCdUJyksIHNlbGYuZC5nZXRWYXIoJ0JCX0NVUlJFTlRUQVNLJykpKQogICAgICAgICAgICAgICAgIGJiLm5vdGUoIkV4aXQgY29kZSAlZC4gT3V0cHV0OlxuJXMiICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3N0cG9uZV90b19maXJzdF9ib290KHNjcmlwdF9mdWxsKQorICAgICAgICAgICAgICAgIGlmIHBvcHVsYXRlX3NkayA9PSAnaG9zdCc6CisgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGZhaWxlZCwgZGV0YWlscyBpbiAlcy9sb2cuZG9fJXMiICUgKHNjcmlwdCwgc2VsZi5kLmdldFZhcignVCcpLCBzZWxmLmQuZ2V0VmFyKCdCQl9DVVJSRU5UVEFTSycpKSkKKyAgICAgICAgICAgICAgICBlbGlmIHBvcHVsYXRlX3NkayA9PSAndGFyZ2V0JzoKKyAgICAgICAgICAgICAgICAgICAgaWYgInFlbXV3cmFwcGVyOiBxZW11IHVzZXJtb2RlIGlzIG5vdCBzdXBwb3J0ZWQiIGluIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBkdWUgdG8gbWlzc2luZyBxZW11IHVzZXJtb2RlIHN1cHBvcnQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkLCBkZXRhaWxzIGluICVzL2xvZy5kb18lcyIgJSAoc2NyaXB0LCBzZWxmLmQuZ2V0VmFyKCdUJyksIHNlbGYuZC5nZXRWYXIoJ0JCX0NVUlJFTlRUQVNLJykpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmICJxZW11d3JhcHBlcjogcWVtdSB1c2VybW9kZSBpcyBub3Qgc3VwcG9ydGVkIiBpbiBlLm91dHB1dC5kZWNvZGUoInV0Zi04Iik6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgZHVlIHRvIG1pc3NpbmcgcWVtdSB1c2VybW9kZSBzdXBwb3J0LCBkZXRhaWxzIGluICVzL2xvZy5kb18lcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2NyaXB0LCBzZWxmLmQuZ2V0VmFyKCdUJyksIHNlbGYuZC5nZXRWYXIoJ0JCX0NVUlJFTlRUQVNLJykpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9zdHBvbmVfdG9fZmlyc3RfYm9vdChzY3JpcHRfZnVsbCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIiAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCiAKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgdXBkYXRlKHNlbGYpOgpAQCAtNTIzLDYgKzU4NywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAnLmpvaW4oY21kKSwgZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCisgICAgICAgIHRhcmdldF9hcmNoID0gc2VsZi5kLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgICAgICBsb2NhbGVkaXIgPSBvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCBzZWxmLmQuZ2V0VmFyKCJsaWJkaXIiKSwgImxvY2FsZSIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2FsZWRpcikgYW5kIG9zLmxpc3RkaXIobG9jYWxlZGlyKToKKyAgICAgICAgICAgIGdlbmVyYXRlX2xvY2FsZV9hcmNoaXZlKHNlbGYuZCwgc2VsZi50YXJnZXRfcm9vdGZzLCB0YXJnZXRfYXJjaCwgbG9jYWxlZGlyKQorICAgICAgICAgICAgIyBBbmQgbm93IGRlbGV0ZSB0aGUgYmluYXJ5IGxvY2FsZXMKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlKGZubWF0Y2guZmlsdGVyKHNlbGYubGlzdF9pbnN0YWxsZWQoKSwgImdsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLSoiKSwgRmFsc2UpCisKICAgICBkZWYgZGVwbG95X2Rpcl9sb2NrKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmRlcGxveV9kaXIgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZGVwbG95X2RpciBpcyBub3Qgc2V0ISIpCkBAIC01NTksNyArNjMwLDcgQEAKICAgICAgICAgICAgIHJldHVybiByZXMKICAgICAgICAgcmV0dXJuIF9hcHBlbmQodXJpcywgYmFzZV9wYXRocykKIAotZGVmIGNyZWF0ZV9wYWNrYWdlc19kaXIoZCwgcnBtX3JlcG9fZGlyLCBkZXBsb3lkaXIsIHRhc2tuYW1lLCBmaWx0ZXJieWRlcGVuZGVuY2llcyk6CitkZWYgY3JlYXRlX3BhY2thZ2VzX2RpcihkLCBzdWJyZXBvX2RpciwgZGVwbG95ZGlyLCB0YXNrbmFtZSwgZmlsdGVyYnlkZXBlbmRlbmNpZXMpOgogICAgICIiIgogICAgIEdvIHRocm91Z2ggb3VyIGRvX3BhY2thZ2Vfd3JpdGVfWCBkZXBlbmRlbmNpZXMgYW5kIGhhcmRsaW5rIHRoZSBwYWNrYWdlcyB3ZSBkZXBlbmQKICAgICB1cG9uIGludG8gdGhlIHJlcG8gZGlyZWN0b3J5LiBUaGlzIHByZXZlbnRzIHVzIHNlZWluZyBvdGhlciBwYWNrYWdlcyB0aGF0IG1heQpAQCAtNTc0LDE1ICs2NDUsMTMgQEAKICAgICBzZWVuZGlycyA9IHNldCgpCiAgICAgbXVsdGlsaWJzID0ge30KICAgIAotICAgIHJwbV9zdWJyZXBvX2RpciA9IG9lLnBhdGguam9pbihycG1fcmVwb19kaXIsICJycG0iKQotCi0gICAgYmIudXRpbHMucmVtb3ZlKHJwbV9zdWJyZXBvX2RpciwgcmVjdXJzZT1UcnVlKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihycG1fc3VicmVwb19kaXIpCisgICAgYmIudXRpbHMucmVtb3ZlKHN1YnJlcG9fZGlyLCByZWN1cnNlPVRydWUpCisgICAgYmIudXRpbHMubWtkaXJoaWVyKHN1YnJlcG9fZGlyKQogCiAgICAgIyBEZXRlY3QgYml0YmFrZSAtYiB1c2FnZQogICAgIG5vZGVwcyA9IGQuZ2V0VmFyKCJCQl9MSU1JVEVEREVQUyIpIG9yIEZhbHNlCiAgICAgaWYgbm9kZXBzIG9yIG5vdCBmaWx0ZXJieWRlcGVuZGVuY2llczoKLSAgICAgICAgb2UucGF0aC5zeW1saW5rKGRlcGxveWRpciwgcnBtX3N1YnJlcG9fZGlyLCBUcnVlKQorICAgICAgICBvZS5wYXRoLnN5bWxpbmsoZGVwbG95ZGlyLCBzdWJyZXBvX2RpciwgVHJ1ZSkKICAgICAgICAgcmV0dXJuCiAKICAgICBzdGFydCA9IE5vbmUKQEAgLTU5MywyNCArNjYyLDI0IEBACiAgICAgICAgICAgICBicmVhawogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIGJiLmZhdGFsKCJDb3VsZG4ndCBmaW5kIG91cnNlbGYgaW4gQkJfVEFTS0RFUERBVEE/IikKLSAgICBycG1kZXBzID0gc2V0KCkKKyAgICBwa2dkZXBzID0gc2V0KCkKICAgICBzdGFydCA9IFtzdGFydF0KICAgICBzZWVuID0gc2V0KHN0YXJ0KQotICAgICMgU3VwcG9ydCBkaXJlY3QgZGVwZW5kZW5jaWVzIChkb19yb290ZnMgLT4gcnBtcykKLSAgICAjIG9yIGluZGlyZWN0IGRlcGVuZGVuY2llcyB3aXRoaW4gUE4gKGRvX3BvcHVsYXRlX3Nka19leHQgLT4gZG9fcm9vdGZzIC0+IHJwbXMpCisgICAgIyBTdXBwb3J0IGRpcmVjdCBkZXBlbmRlbmNpZXMgKGRvX3Jvb3RmcyAtPiBkb19wYWNrYWdlX3dyaXRlX1gpCisgICAgIyBvciBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgd2l0aGluIFBOIChkb19wb3B1bGF0ZV9zZGtfZXh0IC0+IGRvX3Jvb3RmcyAtPiBkb19wYWNrYWdlX3dyaXRlX1gpCiAgICAgd2hpbGUgc3RhcnQ6CiAgICAgICAgIG5leHQgPSBbXQogICAgICAgICBmb3IgZGVwMiBpbiBzdGFydDoKICAgICAgICAgICAgIGZvciBkZXAgaW4gdGFza2RlcGRhdGFbZGVwMl1bM106CiAgICAgICAgICAgICAgICAgaWYgdGFza2RlcGRhdGFbZGVwXVswXSAhPSBwbjoKICAgICAgICAgICAgICAgICAgICAgaWYgImRvXyIgKyB0YXNrbmFtZSBpbiBkZXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBycG1kZXBzLmFkZChkZXApCisgICAgICAgICAgICAgICAgICAgICAgICBwa2dkZXBzLmFkZChkZXApCiAgICAgICAgICAgICAgICAgZWxpZiBkZXAgbm90IGluIHNlZW46CiAgICAgICAgICAgICAgICAgICAgIG5leHQuYXBwZW5kKGRlcCkKICAgICAgICAgICAgICAgICAgICAgc2Vlbi5hZGQoZGVwKQogICAgICAgICBzdGFydCA9IG5leHQKIAotICAgIGZvciBkZXAgaW4gcnBtZGVwczoKKyAgICBmb3IgZGVwIGluIHBrZ2RlcHM6CiAgICAgICAgIGMgPSB0YXNrZGVwZGF0YVtkZXBdWzBdCiAgICAgICAgIG1hbmlmZXN0LCBkMiA9IG9lLnNzdGF0ZXNpZy5maW5kX3NzdGF0ZV9tYW5pZmVzdChjLCB0YXNrZGVwZGF0YVtkZXBdWzJdLCB0YXNrbmFtZSwgZCwgbXVsdGlsaWJzKQogICAgICAgICBpZiBub3QgbWFuaWZlc3Q6CkBAIC02MjAsOCArNjg5LDEyIEBACiAgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdCwgInIiKSBhcyBmOgogICAgICAgICAgICAgZm9yIGwgaW4gZjoKICAgICAgICAgICAgICAgICBsID0gbC5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZGVzdCA9IGwucmVwbGFjZShkZXBsb3lkaXIsICIiKQotICAgICAgICAgICAgICAgIGRlc3QgPSBycG1fc3VicmVwb19kaXIgKyBkZXN0CisgICAgICAgICAgICAgICAgZGVwbG95ZGlyID0gb3MucGF0aC5ub3JtcGF0aChkZXBsb3lkaXIpCisgICAgICAgICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWZlZWQtc3RhYmlsaXR5JywgZCk6CisgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBsLnJlcGxhY2UoZGVwbG95ZGlyICsgIi1wcmVkaWZmIiwgIiIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGVzdCA9IGwucmVwbGFjZShkZXBsb3lkaXIsICIiKQorICAgICAgICAgICAgICAgIGRlc3QgPSBzdWJyZXBvX2RpciArIGRlc3QKICAgICAgICAgICAgICAgICBpZiBsLmVuZHN3aXRoKCIvIik6CiAgICAgICAgICAgICAgICAgICAgIGlmIGRlc3Qgbm90IGluIHNlZW5kaXJzOgogICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3QpCkBAIC02NjMsMTIgKzczNiwxMiBAQAogICAgICAgICAgICAgc2VsZi5wcmltYXJ5X2FyY2ggPSBzZWxmLmQuZ2V0VmFyKCdNQUNISU5FX0FSQ0gnKQogCiAgICAgICAgIHNlbGYucnBtX3JlcG9fZGlyID0gb2UucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwgcnBtX3JlcG9fd29ya2RpcikKLSAgICAgICAgY3JlYXRlX3BhY2thZ2VzX2RpcihzZWxmLmQsIHNlbGYucnBtX3JlcG9fZGlyLCBkLmdldFZhcigiREVQTE9ZX0RJUl9SUE0iKSwgInBhY2thZ2Vfd3JpdGVfcnBtIiwgZmlsdGVyYnlkZXBlbmRlbmNpZXMpCisgICAgICAgIGNyZWF0ZV9wYWNrYWdlc19kaXIoc2VsZi5kLCBvZS5wYXRoLmpvaW4oc2VsZi5ycG1fcmVwb19kaXIsICJycG0iKSwgZC5nZXRWYXIoIkRFUExPWV9ESVJfUlBNIiksICJwYWNrYWdlX3dyaXRlX3JwbSIsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzKQogCiAgICAgICAgIHNlbGYuc2F2ZWRfcGFja2FnaW5nX2RhdGEgPSBzZWxmLmQuZXhwYW5kKCcke1R9L3NhdmVkX3BhY2thZ2luZ19kYXRhLyVzJyAlIHNlbGYudGFza19uYW1lKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5kLmV4cGFuZCgnJHtUfS9zYXZlZF9wYWNrYWdpbmdfZGF0YScpKToKICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmQuZXhwYW5kKCcke1R9L3NhdmVkX3BhY2thZ2luZ19kYXRhJykpCi0gICAgICAgIHNlbGYucGFja2FnaW5nX2RhdGFfZGlycyA9IFsndmFyL2xpYi9ycG0nLCAndmFyL2xpYi9kbmYnLCAndmFyL2NhY2hlL2RuZiddCisgICAgICAgIHNlbGYucGFja2FnaW5nX2RhdGFfZGlycyA9IFsnZXRjL3JwbScsICdldGMvcnBtcmMnLCAnZXRjL2RuZicsICd2YXIvbGliL3JwbScsICd2YXIvbGliL2RuZicsICd2YXIvY2FjaGUvZG5mJ10KICAgICAgICAgc2VsZi5zb2x1dGlvbl9tYW5pZmVzdCA9IHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWQvJXNfc29sdXRpb24nICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXNrX25hbWUpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmQuZXhwYW5kKCcke1R9L3NhdmVkJykpOgpAQCAtNjk3LDcgKzc3MCw5IEBACiAgICAgICAgIHJwbXJjY29uZmRpciA9ICIlcy8lcyIgJShzZWxmLnRhcmdldF9yb290ZnMsICJldGMvIikKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBsYXRmb3JtY29uZmRpcikKICAgICAgICAgb3BlbihwbGF0Zm9ybWNvbmZkaXIgKyAicGxhdGZvcm0iLCAndycpLndyaXRlKCIlcy1wYy1saW51eCIgJSBzZWxmLnByaW1hcnlfYXJjaCkKLSAgICAgICAgb3BlbihycG1yY2NvbmZkaXIgKyAicnBtcmMiLCAndycpLndyaXRlKCJhcmNoX2NvbXBhdDogJXM6ICVzXG4iICUgKHNlbGYucHJpbWFyeV9hcmNoLCBzZWxmLmFyY2hzIGlmIGxlbihzZWxmLmFyY2hzKSA+IDAgZWxzZSBzZWxmLnByaW1hcnlfYXJjaCkpCisgICAgICAgIHdpdGggb3BlbihycG1yY2NvbmZkaXIgKyAicnBtcmMiLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJhcmNoX2NvbXBhdDogJXM6ICVzXG4iICUgKHNlbGYucHJpbWFyeV9hcmNoLCBzZWxmLmFyY2hzIGlmIGxlbihzZWxmLmFyY2hzKSA+IDAgZWxzZSBzZWxmLnByaW1hcnlfYXJjaCkpCisgICAgICAgICAgICBmLndyaXRlKCJidWlsZGFyY2hfY29tcGF0OiAlczogbm9hcmNoXG4iICUgc2VsZi5wcmltYXJ5X2FyY2gpCiAKICAgICAgICAgb3BlbihwbGF0Zm9ybWNvbmZkaXIgKyAibWFjcm9zIiwgJ3cnKS53cml0ZSgiJV90cmFuc2FjdGlvbl9jb2xvciA3XG4iKQogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdSUE1fUFJFRkVSX0VMRl9BUkNIJyk6CkBAIC03ODksMTMgKzg2NCwxMiBAQAogICAgICAgICAgICAgICAgIGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzW2xpbmUuc3BsaXQoKVstMV1dID0gVHJ1ZQogCiAgICAgICAgIGlmIGxlbihmYWlsZWRfc2NyaXB0bGV0c19wa2duYW1lcykgPiAwOgotICAgICAgICAgICAgZmFpbGVkX3Bvc3RpbnN0c193YXJuKGxpc3QoZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXMua2V5cygpKSwgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKLSAgICAgICAgZm9yIHBrZyBpbiBmYWlsZWRfc2NyaXB0bGV0c19wa2duYW1lcy5rZXlzKCk6Ci0gICAgICAgICAgICBzZWxmLnNhdmVfcnBtcG9zdGluc3QocGtnKQorICAgICAgICAgICAgZmFpbGVkX3Bvc3RpbnN0c19hYm9ydChsaXN0KGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzLmtleXMoKSksIHNlbGYuZC5leHBhbmQoIiR7VH0vbG9nLmRvXyR7QkJfQ1VSUkVOVFRBU0t9IikpCiAKICAgICBkZWYgcmVtb3ZlKHNlbGYsIHBrZ3MsIHdpdGhfZGVwZW5kZW5jaWVzID0gVHJ1ZSk6Ci0gICAgICAgIGlmIGxlbihwa2dzKSA9PSAwOgorICAgICAgICBpZiBub3QgcGtnczoKICAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHNlbGYuX3ByZXBhcmVfcGtnX3RyYW5zYWN0aW9uKCkKIAogICAgICAgICBpZiB3aXRoX2RlcGVuZGVuY2llczoKQEAgLTgzMiw3ICs5MDYsMTAgQEAKICAgICAgICAgZm9yIGkgaW4gc2VsZi5wYWNrYWdpbmdfZGF0YV9kaXJzOgogICAgICAgICAgICAgc291cmNlX2RpciA9IG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsIGkpCiAgICAgICAgICAgICB0YXJnZXRfZGlyID0gb2UucGF0aC5qb2luKHNlbGYuc2F2ZWRfcGFja2FnaW5nX2RhdGEsIGkpCi0gICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc291cmNlX2RpciwgdGFyZ2V0X2Rpciwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc291cmNlX2Rpcik6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNvdXJjZV9kaXIsIHRhcmdldF9kaXIsIHN5bWxpbmtzPVRydWUpCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKHNvdXJjZV9kaXIpOgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5Mihzb3VyY2VfZGlyLCB0YXJnZXRfZGlyKQogCiAgICAgZGVmIHJlY292ZXJ5X3BhY2thZ2luZ19kYXRhKHNlbGYpOgogICAgICAgICAjIE1vdmUgdGhlIHJwbWxpYiBiYWNrCkBAIC04NDIsOSArOTE5LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHModGFyZ2V0X2Rpcik6CiAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh0YXJnZXRfZGlyLCBUcnVlKQogICAgICAgICAgICAgICAgIHNvdXJjZV9kaXIgPSBvZS5wYXRoLmpvaW4oc2VsZi5zYXZlZF9wYWNrYWdpbmdfZGF0YSwgaSkKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc291cmNlX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPVRydWUpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihzb3VyY2VfZGlyKToKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNvdXJjZV9kaXIsIHRhcmdldF9kaXIsIHN5bWxpbmtzPVRydWUpCisgICAgICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShzb3VyY2VfZGlyKToKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKHNvdXJjZV9kaXIsIHRhcmdldF9kaXIpCiAKICAgICBkZWYgbGlzdF9pbnN0YWxsZWQoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IHNlbGYuX2ludm9rZV9kbmYoWyJyZXBvcXVlcnkiLCAiLS1pbnN0YWxsZWQiLCAiLS1xdWVyeWZvcm1hdCIsICJQYWNrYWdlOiAle25hbWV9ICV7YXJjaH0gJXt2ZXJzaW9ufSAle25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS4le2FyY2h9LnJwbVxuRGVwZW5kZW5jaWVzOlxuJXtyZXF1aXJlc31cblJlY29tbWVuZGF0aW9uczpcbiV7cmVjb21tZW5kc31cbkRlcGVuZGVuY2llc0VuZEhlcmU6XG4iXSwKQEAgLTg4NCw3ICs5NjIsNyBAQAogICAgICAgICBvcy5lbnZpcm9uWydSUE1fRVRDQ09ORklHRElSJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKIAogICAgICAgICBkbmZfY21kID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJkbmYiKQotICAgICAgICBzdGFuZGFyZF9kbmZfYXJncyA9IChbIi12IiwgIi0tcnBtdmVyYm9zaXR5PWRlYnVnIl0gaWYgc2VsZi5kLmdldFZhcignUk9PVEZTX1JQTV9ERUJVRycpIGVsc2UgW10pICsgWyIteSIsCisgICAgICAgIHN0YW5kYXJkX2RuZl9hcmdzID0gWyItdiIsICItLXJwbXZlcmJvc2l0eT1kZWJ1ZyIsICIteSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsIG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsICJldGMvZG5mL2RuZi5jb25mIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXNldG9wdD1yZXBvc2Rpcj0lcyIgJShvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjL3l1bS5yZXBvcy5kIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yZXBvZnJvbXBhdGg9b2UtcmVwbywlcyIgJSAoc2VsZi5ycG1fcmVwb19kaXIpLApAQCAtODk2LDcgKzk3NCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCxzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgaWYgcHJpbnRfb3V0cHV0OgotICAgICAgICAgICAgICAgIGJiLm5vdGUob3V0cHV0KQorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsIG91dHB1dCkKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBwcmludF9vdXRwdXQ6CkBAIC0xMDYwLDE5ICsxMTM4LDIyIEBACiAgICAgICAgIHNlbGYubWFya19wYWNrYWdlcygidW5wYWNrZWQiLCByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKSkKIAogY2xhc3MgT3BrZ1BNKE9wa2dEcGtnUE0pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBjb25maWdfZmlsZSwgYXJjaHMsIHRhc2tfbmFtZT0ndGFyZ2V0Jyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldF9yb290ZnMsIGNvbmZpZ19maWxlLCBhcmNocywgdGFza19uYW1lPSd0YXJnZXQnLCBpcGtfcmVwb193b3JrZGlyPSJvZS1yb290ZnMtcmVwbyIsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzPVRydWUsIHByZXBhcmVfaW5kZXg9VHJ1ZSk6CiAgICAgICAgIHN1cGVyKE9wa2dQTSwgc2VsZikuX19pbml0X18oZCwgdGFyZ2V0X3Jvb3RmcykKIAogICAgICAgICBzZWxmLmNvbmZpZ19maWxlID0gY29uZmlnX2ZpbGUKICAgICAgICAgc2VsZi5wa2dfYXJjaHMgPSBhcmNocwogICAgICAgICBzZWxmLnRhc2tfbmFtZSA9IHRhc2tfbmFtZQogCi0gICAgICAgIHNlbGYuZGVwbG95X2RpciA9IHNlbGYuZC5nZXRWYXIoIkRFUExPWV9ESVJfSVBLIikKKyAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gb2UucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwgaXBrX3JlcG9fd29ya2RpcikKICAgICAgICAgc2VsZi5kZXBsb3lfbG9ja19maWxlID0gb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2RpciwgImRlcGxveS5sb2NrIikKICAgICAgICAgc2VsZi5vcGtnX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAib3BrZyIpCiAgICAgICAgIHNlbGYub3BrZ19hcmdzID0gIi0tdm9sYXRpbGUtY2FjaGUgLWYgJXMgLXQgJXMgLW8gJXMgIiAlIChzZWxmLmNvbmZpZ19maWxlLCBzZWxmLmQuZXhwYW5kKCcke1R9L2lwa3RlbXAvJykgLHRhcmdldF9yb290ZnMpCiAgICAgICAgIHNlbGYub3BrZ19hcmdzICs9IHNlbGYuZC5nZXRWYXIoIk9QS0dfQVJHUyIpCiAKKyAgICAgICAgaWYgcHJlcGFyZV9pbmRleDoKKyAgICAgICAgICAgIGNyZWF0ZV9wYWNrYWdlc19kaXIoc2VsZi5kLCBzZWxmLmRlcGxveV9kaXIsIGQuZ2V0VmFyKCJERVBMT1lfRElSX0lQSyIpLCAicGFja2FnZV93cml0ZV9pcGsiLCBmaWx0ZXJieWRlcGVuZGVuY2llcykKKwogICAgICAgICBvcGtnX2xpYl9kaXIgPSBzZWxmLmQuZ2V0VmFyKCdPUEtHTElCRElSJykKICAgICAgICAgaWYgb3BrZ19saWJfZGlyWzBdID09ICIvIjoKICAgICAgICAgICAgIG9wa2dfbGliX2RpciA9IG9wa2dfbGliX2RpclsxOl0KQEAgLTEyNDUsNyArMTMyNiwxMSBAQAogICAgICAgICBpZiBub3QgcGtnczoKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGNtZCA9ICIlcyAlcyBpbnN0YWxsICVzIiAlIChzZWxmLm9wa2dfY21kLCBzZWxmLm9wa2dfYXJncywgJyAnLmpvaW4ocGtncykpCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5vcGtnX2NtZCwgc2VsZi5vcGtnX2FyZ3MpCisgICAgICAgIGZvciBleGNsdWRlIGluIChzZWxmLmQuZ2V0VmFyKCJQQUNLQUdFX0VYQ0xVREUiKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgICAgIGNtZCArPSAiIC0tYWRkLWV4Y2x1ZGUgJXMiICUgZXhjbHVkZQorICAgICAgICBjbWQgKz0gIiBpbnN0YWxsICIKKyAgICAgICAgY21kICs9ICIgIi5qb2luKHBrZ3MpCiAKICAgICAgICAgb3MuZW52aXJvblsnRCddID0gc2VsZi50YXJnZXRfcm9vdGZzCiAgICAgICAgIG9zLmVudmlyb25bJ09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCkBAIC0xMjY1LDEzICsxMzUwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4obGluZSkKICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3BrZ3MuYXBwZW5kKGxpbmUuc3BsaXQoIi4iKVswXSkKICAgICAgICAgICAgIGlmIGZhaWxlZF9wa2dzOgotICAgICAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfd2FybihmYWlsZWRfcGtncywgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKKyAgICAgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX2Fib3J0KGZhaWxlZF9wa2dzLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIChiYi5mYXRhbCwgYmIud2FybilbYXR0ZW1wdF9vbmx5XSgiVW5hYmxlIHRvIGluc3RhbGwgcGFja2FnZXMuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tbWFuZCAnJXMnIHJldHVybmVkICVkOlxuJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY21kLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICBkZWYgcmVtb3ZlKHNlbGYsIHBrZ3MsIHdpdGhfZGVwZW5kZW5jaWVzPVRydWUpOgorICAgICAgICBpZiBub3QgcGtnczoKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGlmIHdpdGhfZGVwZW5kZW5jaWVzOgogICAgICAgICAgICAgY21kID0gIiVzICVzIC0tZm9yY2UtcmVtb3ZlIC0tZm9yY2UtcmVtb3ZhbC1vZi1kZXBlbmRlbnQtcGFja2FnZXMgcmVtb3ZlICVzIiAlIFwKICAgICAgICAgICAgICAgICAoc2VsZi5vcGtnX2NtZCwgc2VsZi5vcGtnX2FyZ3MsICcgJy5qb2luKHBrZ3MpKQpAQCAtMTQzNyw5ICsxNTI1LDEyIEBACiAgICAgICAgIHJldHVybiB0bXBfZGlyCiAKIGNsYXNzIERwa2dQTShPcGtnRHBrZ1BNKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3RmcywgYXJjaHMsIGJhc2VfYXJjaHMsIGFwdF9jb25mX2Rpcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3RmcywgYXJjaHMsIGJhc2VfYXJjaHMsIGFwdF9jb25mX2Rpcj1Ob25lLCBkZWJfcmVwb193b3JrZGlyPSJvZS1yb290ZnMtcmVwbyIsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzPVRydWUpOgogICAgICAgICBzdXBlcihEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQsIHRhcmdldF9yb290ZnMpCi0gICAgICAgIHNlbGYuZGVwbG95X2RpciA9IHNlbGYuZC5nZXRWYXIoJ0RFUExPWV9ESVJfREVCJykKKyAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gb2UucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwgZGViX3JlcG9fd29ya2RpcikKKworICAgICAgICBjcmVhdGVfcGFja2FnZXNfZGlyKHNlbGYuZCwgc2VsZi5kZXBsb3lfZGlyLCBkLmdldFZhcigiREVQTE9ZX0RJUl9ERUIiKSwgInBhY2thZ2Vfd3JpdGVfZGViIiwgZmlsdGVyYnlkZXBlbmRlbmNpZXMpCisKICAgICAgICAgaWYgYXB0X2NvbmZfZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmFwdF9jb25mX2RpciA9IHNlbGYuZC5leHBhbmQoIiR7QVBUQ09ORl9UQVJHRVR9L2FwdCIpCiAgICAgICAgIGVsc2U6CkBAIC0xNTE1LDcgKzE2MDYsNiBAQAogICAgICAgICBvcy5lbnZpcm9uWydJTlRFUkNFUFRfRElSJ10gPSBzZWxmLmludGVyY2VwdHNfZGlyCiAgICAgICAgIG9zLmVudmlyb25bJ05BVElWRV9ST09UJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQogCi0gICAgICAgIGZhaWxlZF9wa2dzID0gW10KICAgICAgICAgZm9yIHBrZ19uYW1lIGluIGluc3RhbGxlZF9wa2dzOgogICAgICAgICAgICAgZm9yIGNvbnRyb2xfc2NyaXB0IGluIGNvbnRyb2xfc2NyaXB0czoKICAgICAgICAgICAgICAgICBwX2Z1bGwgPSBvcy5wYXRoLmpvaW4oaW5mb19kaXIsIHBrZ19uYW1lICsgY29udHJvbF9zY3JpcHQuc3VmZml4KQpAQCAtMTUzMCwxMiArMTYyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCIlcyBmb3IgcGFja2FnZSAlcyBmYWlsZWQgd2l0aCAlZDpcbiVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250cm9sX3NjcmlwdC5uYW1lLCBwa2dfbmFtZSwgZS5yZXR1cm5jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfd2FybihbcGtnX25hbWVdLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQotICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3BrZ3MuYXBwZW5kKHBrZ19uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBsZW4oZmFpbGVkX3BrZ3MpOgotICAgICAgICAgICAgc2VsZi5tYXJrX3BhY2thZ2VzKCJ1bnBhY2tlZCIsIGZhaWxlZF9wa2dzKQorICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3Bvc3RpbnN0c19hYm9ydChbcGtnX25hbWVdLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQogCiAgICAgZGVmIHVwZGF0ZShzZWxmKToKICAgICAgICAgb3MuZW52aXJvblsnQVBUX0NPTkZJRyddID0gc2VsZi5hcHRfY29uZl9maWxlCkBAIC0xNTg1LDYgKzE2NzAsOSBAQAogCiAKICAgICBkZWYgcmVtb3ZlKHNlbGYsIHBrZ3MsIHdpdGhfZGVwZW5kZW5jaWVzPVRydWUpOgorICAgICAgICBpZiBub3QgcGtnczoKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGlmIHdpdGhfZGVwZW5kZW5jaWVzOgogICAgICAgICAgICAgb3MuZW52aXJvblsnQVBUX0NPTkZJRyddID0gc2VsZi5hcHRfY29uZl9maWxlCiAgICAgICAgICAgICBjbWQgPSAiJXMgcHVyZ2UgJXMiICUgKHNlbGYuYXB0X2dldF9jbWQsICcgJy5qb2luKHBrZ3MpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKaW5kZXggYWY3YWE1Mi4uZTBmMDYwNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CkBAIC0yMSw2ICsyMSw3IEBACiAKIGRlZiBydW5jbWQoYXJncywgZGlyID0gTm9uZSk6CiAgICAgaW1wb3J0IHBpcGVzCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKIAogICAgIGlmIGRpcjoKICAgICAgICAgb2xkZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLmN1cmRpcikKQEAgLTMzLDcgKzM0LDcgQEAKICAgICAgICAgYXJncyA9IFsgcGlwZXMucXVvdGUoc3RyKGFyZykpIGZvciBhcmcgaW4gYXJncyBdCiAgICAgICAgIGNtZCA9ICIgIi5qb2luKGFyZ3MpCiAgICAgICAgICMgcHJpbnQoImNtZDogJXMiICUgY21kKQotICAgICAgICAoZXhpdHN0YXR1cywgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCisgICAgICAgIChleGl0c3RhdHVzLCBvdXRwdXQpID0gc3VicHJvY2Vzcy5nZXRzdGF0dXNvdXRwdXQoY21kKQogICAgICAgICBpZiBleGl0c3RhdHVzICE9IDA6CiAgICAgICAgICAgICByYWlzZSBDbWRFcnJvcihjbWQsIGV4aXRzdGF0dXMgPj4gOCwgb3V0cHV0KQogICAgICAgICBpZiAiIGZ1enogIiBpbiBvdXRwdXQ6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhdGgucHkgYi9wb2t5L21ldGEvbGliL29lL3BhdGgucHkKaW5kZXggNzZjNThmYS4uMWUyNGQwNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weQpAQCAtODYsNyArODYsNyBAQAogICAgICMgVGhpcyB3YXkgd2UgYWxzbyBwcmVzZXJ2ZSBoYXJkbGlua3MgYmV0d2VlbiBmaWxlcyBpbiB0aGUgdHJlZS4KIAogICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3QpCi0gICAgY21kID0gInRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtQyAlcyAtcCAuIHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC14ZiAtIC1DICVzIiAlIChzcmMsIGRzdCkKKyAgICBjbWQgPSAidGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1TIC1DICVzIC1wIC4gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhmIC0gLUMgJXMiICUgKHNyYywgZHN0KQogICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiBkZWYgY29weWhhcmRsaW5rdHJlZShzcmMsIGRzdCk6CkBAIC05OCw3ICs5OCw3IEBACiAgICAgaWYgKG9zLnN0YXQoc3JjKS5zdF9kZXYgPT0gIG9zLnN0YXQoZHN0KS5zdF9kZXYpOgogICAgICAgICAjIE5lZWQgdG8gY29weSBkaXJlY3RvcmllcyBvbmx5IHdpdGggdGFyIGZpcnN0IHNpbmNlIGNwIHdpbGwgZXJyb3IgaWYgdHdvIAogICAgICAgICAjIHdyaXRlcnMgdHJ5IGFuZCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNhbWUgdGltZQotICAgICAgICBjbWQgPSAiY2QgJXM7IGZpbmQgLiAtdHlwZSBkIC1wcmludCB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtQyAlcyAtcCAtLW5vLXJlY3Vyc2lvbiAtLWZpbGVzLWZyb20gLSB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGhmIC0gLUMgJXMiICUgKHNyYywgc3JjLCBkc3QpCisgICAgICAgIGNtZCA9ICJjZCAlczsgZmluZCAuIC10eXBlIGQgLXByaW50IHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1TIC1DICVzIC1wIC0tbm8tcmVjdXJzaW9uIC0tZmlsZXMtZnJvbSAtIHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC14aGYgLSAtQyAlcyIgJSAoc3JjLCBzcmMsIGRzdCkKICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgIHNvdXJjZSA9ICcnCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKQEAgLTI1OSwzICsyNTksMzcgQEAKICAgICAgICAgaWYgbm90IHBhdGhfYWJzLnN0YXJ0c3dpdGgocG9zc2libGVfcGFyZW50X2Ficyk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQorCitkZWYgd2hpY2hfd2lsZChwYXRobmFtZSwgcGF0aD1Ob25lLCBtb2RlPW9zLkZfT0ssICosIHJldmVyc2U9RmFsc2UsIGNhbmRpZGF0ZXM9RmFsc2UpOgorICAgICIiIlNlYXJjaCBhIHNlYXJjaCBwYXRoIGZvciBwYXRobmFtZSwgc3VwcG9ydGluZyB3aWxkY2FyZHMuCisKKyAgICBSZXR1cm4gYWxsIHBhdGhzIGluIHRoZSBzcGVjaWZpYyBzZWFyY2ggcGF0aCBtYXRjaGluZyB0aGUgd2lsZGNhcmQgcGF0dGVybgorICAgIGluIHBhdGhuYW1lLCByZXR1cm5pbmcgb25seSB0aGUgZmlyc3QgZW5jb3VudGVyZWQgZm9yIGVhY2ggZmlsZS4gSWYKKyAgICBjYW5kaWRhdGVzIGlzIFRydWUsIGluZm9ybWF0aW9uIG9uIGFsbCBwb3RlbnRpYWwgY2FuZGlkYXRlIHBhdGhzIGFyZQorICAgIGluY2x1ZGVkLgorICAgICIiIgorICAgIHBhdGhzID0gKHBhdGggb3Igb3MuZW52aXJvbi5nZXQoJ1BBVEgnLCBvcy5kZWZwYXRoKSkuc3BsaXQoJzonKQorICAgIGlmIHJldmVyc2U6CisgICAgICAgIHBhdGhzLnJldmVyc2UoKQorCisgICAgc2VlbiwgZmlsZXMgPSBzZXQoKSwgW10KKyAgICBmb3IgaW5kZXgsIGVsZW1lbnQgaW4gZW51bWVyYXRlKHBhdGhzKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMoZWxlbWVudCk6CisgICAgICAgICAgICBlbGVtZW50ID0gb3MucGF0aC5hYnNwYXRoKGVsZW1lbnQpCisKKyAgICAgICAgY2FuZGlkYXRlID0gb3MucGF0aC5qb2luKGVsZW1lbnQsIHBhdGhuYW1lKQorICAgICAgICBnbG9iYmVkID0gZ2xvYi5nbG9iKGNhbmRpZGF0ZSkKKyAgICAgICAgaWYgZ2xvYmJlZDoKKyAgICAgICAgICAgIGZvciBmb3VuZF9wYXRoIGluIHNvcnRlZChnbG9iYmVkKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKGZvdW5kX3BhdGgsIG1vZGUpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJlbCA9IG9zLnBhdGgucmVscGF0aChmb3VuZF9wYXRoLCBlbGVtZW50KQorICAgICAgICAgICAgICAgIGlmIHJlbCBub3QgaW4gc2VlbjoKKyAgICAgICAgICAgICAgICAgICAgc2Vlbi5hZGQocmVsKQorICAgICAgICAgICAgICAgICAgICBpZiBjYW5kaWRhdGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMuYXBwZW5kKChmb3VuZF9wYXRoLCBbb3MucGF0aC5qb2luKHAsIHJlbCkgZm9yIHAgaW4gcGF0aHNbOmluZGV4KzFdXSkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoZm91bmRfcGF0aCkKKworICAgIHJldHVybiBmaWxlcworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3FhLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9xYS5weQppbmRleCAzMjMxZTYwLi41OWM3MmNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3FhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcWEucHkKQEAgLTE1OCw3ICsxNTgsOCBAQAogICAgICAgICAgICAgMHgyQTogIlN1cGVySCIsCiAgICAgICAgICAgICAweDMyOiAiSUEtNjQiLAogICAgICAgICAgICAgMHgzRTogIng4Ni02NCIsCi0gICAgICAgICAgICAweEI3OiAiQUFyY2g2NCIKKyAgICAgICAgICAgIDB4Qjc6ICJBQXJjaDY0IiwKKyAgICAgICAgICAgIDB4Rjc6ICJCUEYiCiAgICAgICAgIH1bbWFjaGluZV0KICAgICBleGNlcHQ6CiAgICAgICAgIHJldHVybiAiVW5rbm93biAoJXMpIiAlIHJlcHIobWFjaGluZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKaW5kZXggYzE1NjYwNy4uZTU1MTJkMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKQEAgLTE0NCw2ICsxNDQsMjAgQEAKICAgICAgICAgYmIubm90ZSgiICBJbnN0YWxsIGNvbXBsZW1lbnRhcnkgJyotZGJnJyBwYWNrYWdlcy4uLiIpCiAgICAgICAgIHNlbGYucG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KCcqLWRiZycpCiAKKyAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy13aXRoLXNyY3BrZyc6CisgICAgICAgICAgICBiYi5ub3RlKCIgIEluc3RhbGwgY29tcGxlbWVudGFyeSAnKi1zcmMnIHBhY2thZ2VzLi4uIikKKyAgICAgICAgICAgIHNlbGYucG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KCcqLXNyYycpCisKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgYWRkaXRpb25hbCBkZWJ1ZyBwYWNrYWdlcy4gUG9zc2liaWxpdHkgdG8gaW5zdGFsbCBhZGRpdGlvbmFsIHBhY2thZ2VzLAorICAgICAgICB3aGljaCBhcmUgbm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkIGFzIGNvbXBsZW1lbnRhcnkgcGFja2FnZSBvZgorICAgICAgICBzdGFuZGFyZCBvbmUsIGUuZy4gZGVidWcgcGFja2FnZSBvZiBzdGF0aWMgbGlicmFyaWVzLgorICAgICAgICAiIiIKKyAgICAgICAgZXh0cmFfZGVidWdfcGtncyA9IHNlbGYuZC5nZXRWYXIoJ0lNQUdFX0lOU1RBTExfREVCVUdGUycpCisgICAgICAgIGlmIGV4dHJhX2RlYnVnX3BrZ3M6CisgICAgICAgICAgICBiYi5ub3RlKCIgIEluc3RhbGwgZXh0cmEgZGVidWcgcGFja2FnZXMuLi4iKQorICAgICAgICAgICAgc2VsZi5wbS5pbnN0YWxsKGV4dHJhX2RlYnVnX3BrZ3Muc3BsaXQoKSwgVHJ1ZSkKKwogICAgICAgICBiYi5ub3RlKCIgIFJlbmFtZSBkZWJ1ZyByb290ZnMuLi4iKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1kYmcnKQpAQCAtNDcyLDcgKzQ4Niw4IEBACiAgICAgICAgIHNlbGYuX2xvZ19jaGVja19lcnJvcigpCiAKICAgICBkZWYgX2NsZWFudXAoc2VsZik6Ci0gICAgICAgIHNlbGYucG0uX2ludm9rZV9kbmYoWyJjbGVhbiIsICJhbGwiXSkKKyAgICAgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsIFRydWUsIEZhbHNlLCBzZWxmLmQpOgorICAgICAgICAgICAgc2VsZi5wbS5faW52b2tlX2RuZihbImNsZWFuIiwgImFsbCJdKQogCiAKIGNsYXNzIERwa2dPcGtnUm9vdGZzKFJvb3Rmcyk6CkBAIC01NjAsNiArNTc1LDkgQEAKICAgICAgICAgcmV0dXJuIHBrZ19saXN0CiAKICAgICBkZWYgX3NhdmVfcG9zdGluc3RzX2NvbW1vbihzZWxmLCBkc3RfcG9zdGluc3RfZGlyLCBzcmNfcG9zdGluc3RfZGlyKToKKyAgICAgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgbnVtID0gMAogICAgICAgICBmb3IgcCBpbiBzZWxmLl9nZXRfZGVsYXllZF9wb3N0aW5zdHMoKToKICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3RfcG9zdGluc3RfZGlyKQpAQCAtNzgyLDcgKzgwMCw3IEBACiAgICAgICAgICAgICBtbF9vcGtnX2NvbmYgPSBvcy5wYXRoLmpvaW4obWxfdGVtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ICsgIi0iICsgb3MucGF0aC5iYXNlbmFtZShzZWxmLm9wa2dfY29uZikpCiAKLSAgICAgICAgICAgIG1sX3BtID0gT3BrZ1BNKHNlbGYuZCwgbWxfdGFyZ2V0X3Jvb3RmcywgbWxfb3BrZ19jb25mLCBzZWxmLnBrZ19hcmNocykKKyAgICAgICAgICAgIG1sX3BtID0gT3BrZ1BNKHNlbGYuZCwgbWxfdGFyZ2V0X3Jvb3RmcywgbWxfb3BrZ19jb25mLCBzZWxmLnBrZ19hcmNocywgcHJlcGFyZV9pbmRleD1GYWxzZSkKIAogICAgICAgICAgICAgbWxfcG0udXBkYXRlKCkKICAgICAgICAgICAgIG1sX3BtLmluc3RhbGwocGtncykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2Uvc2RrLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKaW5kZXggZDZhNTAzMy4uMTUzYjA3ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKQEAgLTcsNTIgKzcsNiBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCB0cmFjZWJhY2sKIAotZGVmIGdlbmVyYXRlX2xvY2FsZV9hcmNoaXZlKGQsIHJvb3Rmcyk6Ci0gICAgIyBQcmV0dHkgc3VyZSB3ZSBkb24ndCBuZWVkIHRoaXMgZm9yIFNESyBhcmNoaXZlIGdlbmVyYXRpb24gYnV0Ci0gICAgIyBrZWVwaW5nIGl0IHRvIGJlIHNhZmUuLi4KLSAgICB0YXJnZXRfYXJjaCA9IGQuZ2V0VmFyKCdTREtfQVJDSCcpCi0gICAgbG9jYWxlX2FyY2hfb3B0aW9ucyA9IHsgXAotICAgICAgICAiYXJtIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAotICAgICAgICAiYXJtZWIiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCi0gICAgICAgICJhYXJjaDY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAotICAgICAgICAiYWFyY2g2NF9iZSI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgInNoNCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgInBvd2VycGMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCi0gICAgICAgICJwb3dlcnBjNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCi0gICAgICAgICJtaXBzIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAotICAgICAgICAibWlwc2lzYTMycjYiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCi0gICAgICAgICJtaXBzNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCi0gICAgICAgICJtaXBzaXNhNjRyNiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHNlbCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHNpc2EzMnI2ZWwiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCi0gICAgICAgICJtaXBzNjRlbCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCi0gICAgICAgICJpNTg2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAotICAgICAgICAiaTY4NiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKLSAgICAgICAgIng4Nl82NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXQotICAgIH0KLSAgICBpZiB0YXJnZXRfYXJjaCBpbiBsb2NhbGVfYXJjaF9vcHRpb25zOgotICAgICAgICBhcmNoX29wdGlvbnMgPSBsb2NhbGVfYXJjaF9vcHRpb25zW3RhcmdldF9hcmNoXQotICAgIGVsc2U6Ci0gICAgICAgIGJiLmVycm9yKCJsb2NhbGVfYXJjaF9vcHRpb25zIG5vdCBmb3VuZCBmb3IgdGFyZ2V0X2FyY2g9IiArIHRhcmdldF9hcmNoKQotICAgICAgICBiYi5mYXRhbCgidW5rbm93biBhcmNoOiIgKyB0YXJnZXRfYXJjaCArICIgZm9yIGxvY2FsZV9hcmNoX29wdGlvbnMiKQotCi0gICAgbG9jYWxlZGlyID0gb2UucGF0aC5qb2luKHJvb3RmcywgZC5nZXRWYXIoImxpYmRpcl9uYXRpdmVzZGsiKSwgImxvY2FsZSIpCi0gICAgIyBOZWVkIHRvIHNldCB0aGlzIHNvIGNyb3NzLWxvY2FsZWRlZiBrbm93cyB3aGVyZSB0aGUgYXJjaGl2ZSBpcwotICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKLSAgICBlbnZbIkxPQ0FMRUFSQ0hJVkUiXSA9IG9lLnBhdGguam9pbihsb2NhbGVkaXIsICJsb2NhbGUtYXJjaGl2ZSIpCi0KLSAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKGxvY2FsZWRpcik6Ci0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obG9jYWxlZGlyLCBuYW1lKQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNtZCA9IFsiY3Jvc3MtbG9jYWxlZGVmIiwgIi0tdmVyYm9zZSJdCi0gICAgICAgICAgICAgICAgY21kICs9IGFyY2hfb3B0aW9ucwotICAgICAgICAgICAgICAgIGNtZCArPSBbIi0tYWRkLXRvLWFyY2hpdmUiLCBwYXRoXQotICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgZW52PWVudiwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDYW5ub3QgY3JlYXRlIGxvY2FsZSBhcmNoaXZlOiAlcyIgJSBlLm91dHB1dCkKLQogY2xhc3MgU2RrKG9iamVjdCwgbWV0YWNsYXNzPUFCQ01ldGEpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBtYW5pZmVzdF9kaXIpOgogICAgICAgICBzZWxmLmQgPSBkCkBAIC0xNDQsNyArOTgsMTAgQEAKICAgICAgICAgICAgICAgICBmb3IgbGFuZyBpbiBsaW5ndWFzLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgICAgIHBtLmluc3RhbGwoIm5hdGl2ZXNkay1nbGliYy1iaW5hcnktbG9jYWxlZGF0YS0lcy51dGYtOCIgJSBsYW5nKQogICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGxvY2FsZSBhcmNoaXZlIG9mIHRoZW0KLSAgICAgICAgICAgIGdlbmVyYXRlX2xvY2FsZV9hcmNoaXZlKHNlbGYuZCwgb2UucGF0aC5qb2luKHNlbGYuc2RrX2hvc3Rfc3lzcm9vdCwgc2VsZi5zZGtfbmF0aXZlX3BhdGgpKQorICAgICAgICAgICAgdGFyZ2V0X2FyY2ggPSBzZWxmLmQuZ2V0VmFyKCdTREtfQVJDSCcpCisgICAgICAgICAgICByb290ZnMgPSBvZS5wYXRoLmpvaW4oc2VsZi5zZGtfaG9zdF9zeXNyb290LCBzZWxmLnNka19uYXRpdmVfcGF0aCkKKyAgICAgICAgICAgIGxvY2FsZWRpciA9IG9lLnBhdGguam9pbihyb290ZnMsIHNlbGYuZC5nZXRWYXIoImxpYmRpcl9uYXRpdmVzZGsiKSwgImxvY2FsZSIpCisgICAgICAgICAgICBnZW5lcmF0ZV9sb2NhbGVfYXJjaGl2ZShzZWxmLmQsIHJvb3RmcywgdGFyZ2V0X2FyY2gsIGxvY2FsZWRpcikKICAgICAgICAgICAgICMgQW5kIG5vdyBkZWxldGUgdGhlIGJpbmFyeSBsb2NhbGVzCiAgICAgICAgICAgICBwa2dzID0gZm5tYXRjaC5maWx0ZXIocG0ubGlzdF9pbnN0YWxsZWQoKSwgIm5hdGl2ZXNkay1nbGliYy1iaW5hcnktbG9jYWxlZGF0YS0qLnV0Zi04IikKICAgICAgICAgICAgIHBtLnJlbW92ZShwa2dzKQpAQCAtMjA5LDcgKzE2Niw3IEBACiAKICAgICAgICAgc2VsZi50YXJnZXRfcG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KHNlbGYuZC5nZXRWYXIoJ1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScpKQogCi0gICAgICAgIHNlbGYudGFyZ2V0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKyAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMocG9wdWxhdGVfc2RrPSd0YXJnZXQnKQogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EIikpCiAKQEAgLTIyMCw3ICsxNzcsNyBAQAogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYuaG9zdF9wbSwgc2VsZi5ob3N0X21hbmlmZXN0KQogICAgICAgICBzZWxmLmluc3RhbGxfbG9jYWxlcyhzZWxmLmhvc3RfcG0pCiAKLSAgICAgICAgc2VsZi5ob3N0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKyAgICAgICAgc2VsZi5ob3N0X3BtLnJ1bl9pbnRlcmNlcHRzKHBvcHVsYXRlX3Nkaz0naG9zdCcpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EIikpCiAKQEAgLTI3MCwxMSArMjI3LDE3IEBACiAgICAgICAgIHNlbGYuaG9zdF9tYW5pZmVzdCA9IE9wa2dNYW5pZmVzdChkLCBzZWxmLm1hbmlmZXN0X2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmlmZXN0Lk1BTklGRVNUX1RZUEVfU0RLX0hPU1QpCiAKKyAgICAgICAgaXBrX3JlcG9fd29ya2RpciA9ICJvZS1zZGstcmVwbyIKKyAgICAgICAgaWYgInNka19leHQiIGluIGQuZ2V0VmFyKCJCQl9SVU5UQVNLIik6CisgICAgICAgICAgICBpcGtfcmVwb193b3JrZGlyID0gIm9lLXNkay1leHQtcmVwbyIKKwogICAgICAgICBzZWxmLnRhcmdldF9wbSA9IE9wa2dQTShkLCBzZWxmLnNka190YXJnZXRfc3lzcm9vdCwgc2VsZi50YXJnZXRfY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcigiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcigiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwa19yZXBvX3dvcmtkaXI9aXBrX3JlcG9fd29ya2RpcikKIAogICAgICAgICBzZWxmLmhvc3RfcG0gPSBPcGtnUE0oZCwgc2VsZi5zZGtfaG9zdF9zeXNyb290LCBzZWxmLmhvc3RfY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoIlNES19QQUNLQUdFX0FSQ0hTIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCJTREtfUEFDS0FHRV9BUkNIUyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGtfcmVwb193b3JrZGlyPWlwa19yZXBvX3dvcmtkaXIpCiAKICAgICBkZWYgX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZiwgcG0sIG1hbmlmZXN0KToKICAgICAgICAgcGtnc190b19pbnN0YWxsID0gbWFuaWZlc3QucGFyc2VfaW5pdGlhbF9tYW5pZmVzdCgpCkBAIC0yOTcsNyArMjYwLDcgQEAKIAogICAgICAgICBzZWxmLnRhcmdldF9wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoc2VsZi5kLmdldFZhcignU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykpCiAKLSAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cyhwb3B1bGF0ZV9zZGs9J3RhcmdldCcpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiKSkKIApAQCAtMzA4LDcgKzI3MSw3IEBACiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuaW5zdGFsbF9sb2NhbGVzKHNlbGYuaG9zdF9wbSkKIAotICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMocG9wdWxhdGVfc2RrPSdob3N0JykKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQiKSkKIApAQCAtMzUwLDE1ICszMTMsMjEgQEAKICAgICAgICAgc2VsZi5ob3N0X21hbmlmZXN0ID0gRHBrZ01hbmlmZXN0KGQsIHNlbGYubWFuaWZlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuaWZlc3QuTUFOSUZFU1RfVFlQRV9TREtfSE9TVCkKIAorICAgICAgICBkZWJfcmVwb193b3JrZGlyID0gIm9lLXNkay1yZXBvIgorICAgICAgICBpZiAic2RrX2V4dCIgaW4gZC5nZXRWYXIoIkJCX1JVTlRBU0siKToKKyAgICAgICAgICAgIGRlYl9yZXBvX3dvcmtkaXIgPSAib2Utc2RrLWV4dC1yZXBvIgorCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtID0gRHBrZ1BNKGQsIHNlbGYuc2RrX3RhcmdldF9zeXNyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCJQQUNLQUdFX0FSQ0hTIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoIkRQS0dfQVJDSCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldF9jb25mX2RpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfY29uZl9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYl9yZXBvX3dvcmtkaXI9ZGViX3JlcG9fd29ya2RpcikKIAogICAgICAgICBzZWxmLmhvc3RfcG0gPSBEcGtnUE0oZCwgc2VsZi5zZGtfaG9zdF9zeXNyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcigiU0RLX1BBQ0tBR0VfQVJDSFMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoIkRFQl9TREtfQVJDSCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NvbmZfZGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0X2NvbmZfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGViX3JlcG9fd29ya2Rpcj1kZWJfcmVwb193b3JrZGlyKQogCiAgICAgZGVmIF9jb3B5X2FwdF9kaXJfdG8oc2VsZiwgZHN0X2Rpcik6CiAgICAgICAgIHN0YWdpbmdfZXRjZGlyX25hdGl2ZSA9IHNlbGYuZC5nZXRWYXIoIlNUQUdJTkdfRVRDRElSX05BVElWRSIpCkBAIC0zODYsNyArMzU1LDcgQEAKIAogICAgICAgICBzZWxmLnRhcmdldF9wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoc2VsZi5kLmdldFZhcignU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykpCiAKLSAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cyhwb3B1bGF0ZV9zZGs9J3RhcmdldCcpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiKSkKIApAQCAtMzk5LDcgKzM2OCw3IEBACiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuaW5zdGFsbF9sb2NhbGVzKHNlbGYuaG9zdF9wbSkKIAotICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMocG9wdWxhdGVfc2RrPSdob3N0JykKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQiKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkgYi9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCBiODJlMGY0Li4xOGM1YTM1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQpAQCAtNDUsNyArNDUsNyBAQAogCiAgICAgIyBhbGxhcmNoIHBhY2thZ2Vncm91cHMgYXJlIGFzc3VtZWQgdG8gaGF2ZSB3ZWxsIGJlaGF2ZWQgbmFtZXMgd2hpY2ggZG9uJ3QgY2hhbmdlIGJldHdlZW4gYXJjaGl0ZWN1cmVzL3R1bmVzCiAgICAgaWYgaXNQYWNrYWdlR3JvdXAoZm4pIGFuZCBpc0FsbEFyY2goZm4pIGFuZCBub3QgaXNOYXRpdmUoZGVwbmFtZSk6Ci0gICAgICAgIHJldHVybiBGYWxzZSAgCisgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgIyBFeGNsdWRlIHdlbGwgZGVmaW5lZCBtYWNoaW5lIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdoaWNoIGRvbid0IGNoYW5nZSBBQkkKICAgICBpZiBkZXBuYW1lIGluIHNpZ2dlbi5hYmlzYWZlcmVjaXBlcyBhbmQgbm90IGlzSW1hZ2UoZm4pOgpAQCAtMTUwLDE2ICsxNTAsMjMgQEAKICAgICAgICAgaWYgcmVjaXBlbmFtZSBpbiBzZWxmLnVubG9ja2VkcmVjaXBlczoKICAgICAgICAgICAgIHVubG9ja2VkID0gVHJ1ZQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVmIGdldF9tYyh0aWQpOgorICAgICAgICAgICAgICAgIHRpZCA9IHRpZC5yc3BsaXQoJy4nLCAxKVswXQorICAgICAgICAgICAgICAgIGlmIHRpZC5zdGFydHN3aXRoKCdtdWx0aWNvbmZpZzonKToKKyAgICAgICAgICAgICAgICAgICAgZWxlbXMgPSB0aWQuc3BsaXQoJzonKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbXNbMV0KICAgICAgICAgICAgIGRlZiByZWNpcGVuYW1lX2Zyb21fZGVwKGRlcCk6CiAgICAgICAgICAgICAgICAgIyBUaGUgZGVwIGVudHJ5IHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZQogICAgICAgICAgICAgICAgICMgL3BhdGgvcGF0aC9yZWNpcGVuYW1lLmJiLnRhc2ssIHZpcnR1YWw6bmF0aXZlOi9wL2Zvby5iYi50YXNrLAogICAgICAgICAgICAgICAgICMgLi4uCisKICAgICAgICAgICAgICAgICBmbiA9IGRlcC5yc3BsaXQoJy4nLCAxKVswXQogICAgICAgICAgICAgICAgIHJldHVybiBkYXRhQ2FjaGUucGtnX2ZuW2ZuXQogCisgICAgICAgICAgICBtYyA9IGdldF9tYyhmbikKICAgICAgICAgICAgICMgSWYgYW55IHVubG9ja2VkIHJlY2lwZSBpcyBpbiB0aGUgZGlyZWN0IGRlcGVuZGVuY2llcyB0aGVuIHRoZQogICAgICAgICAgICAgIyBjdXJyZW50IHJlY2lwZSBzaG91bGQgYmUgdW5sb2NrZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIGRlcG5hbWVzID0gWyByZWNpcGVuYW1lX2Zyb21fZGVwKHgpIGZvciB4IGluIGRlcHMgXQorICAgICAgICAgICAgZGVwbmFtZXMgPSBbIHJlY2lwZW5hbWVfZnJvbV9kZXAoeCkgZm9yIHggaW4gZGVwcyBpZiBtYyA9PSBnZXRfbWMoeCldCiAgICAgICAgICAgICBpZiBhbnkoeCBpbiB5IGZvciB5IGluIGRlcG5hbWVzIGZvciB4IGluIHNlbGYudW5sb2NrZWRyZWNpcGVzKToKICAgICAgICAgICAgICAgICBzZWxmLnVubG9ja2VkcmVjaXBlc1tyZWNpcGVuYW1lXSA9ICcnCiAgICAgICAgICAgICAgICAgdW5sb2NrZWQgPSBUcnVlCkBAIC0zNzIsOCArMzc5LDE0IEBACiBkZWYgZmluZF9zc3RhdGVfbWFuaWZlc3QodGFza2RhdGEsIHRhc2tkYXRhMiwgdGFza25hbWUsIGQsIG11bHRpbGliY2FjaGUpOgogICAgIGQyID0gZAogICAgIHZhcmlhbnQgPSAnJworICAgIGN1cnJfdmFyaWFudCA9ICcnCisgICAgaWYgZC5nZXRWYXIoIkJCRVhURU5EQ1VSUiIpID09ICJtdWx0aWxpYiI6CisgICAgICAgIGN1cnJfdmFyaWFudCA9IGQuZ2V0VmFyKCJCQkVYVEVORFZBUklBTlQiKQorICAgICAgICBpZiAidmlydGNsYXNzLW11bHRpbGliIiBub3QgaW4gZC5nZXRWYXIoIk9WRVJSSURFUyIpOgorICAgICAgICAgICAgY3Vycl92YXJpYW50ID0gImludmFsaWQiCiAgICAgaWYgdGFza2RhdGEyLnN0YXJ0c3dpdGgoInZpcnR1YWw6bXVsdGlsaWIiKToKICAgICAgICAgdmFyaWFudCA9IHRhc2tkYXRhMi5zcGxpdCgiOiIpWzJdCisgICAgaWYgY3Vycl92YXJpYW50ICE9IHZhcmlhbnQ6CiAgICAgICAgIGlmIHZhcmlhbnQgbm90IGluIG11bHRpbGliY2FjaGU6CiAgICAgICAgICAgICBtdWx0aWxpYmNhY2hlW3ZhcmlhbnRdID0gb2UudXRpbHMuZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKQogICAgICAgICBkMiA9IG11bHRpbGliY2FjaGVbdmFyaWFudF0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkgYi9wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5CmluZGV4IDk0YWZlMzkuLmNhZWI1ZTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weQpAQCAtMTEyLDcgKzExMiw3IEBACiAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkxvZ0V4ZWNUVFkobXNnLCAic2NyZWVuIC1yICVzIiAlIHNfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41LCAxMCksIGQpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIud2Fybihtc2cpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZyhtc2cpCiAKIGNsYXNzIFRtdXhSdW5uaW5nKFRlcm1pbmFsKToKICAgICAiIiJPcGVuIGEgbmV3IHBhbmUgaW4gdGhlIGN1cnJlbnQgcnVubmluZyB0bXV4IHdpbmRvdyIiIgpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgIGlmIGQ6CiAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkxvZ0V4ZWNUVFkobXNnLCBhdHRhY2hfY21kLCAwLjUsIDEwKSwgZCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKG1zZykKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKG1zZykKIAogY2xhc3MgQ3VzdG9tKFRlcm1pbmFsKToKICAgICBjb21tYW5kID0gJ2ZhbHNlJyAjIFRoaXMgaXMgYSBwbGFjZWhvbGRlcgpAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgICAgICBpZiBub3QgJ3tjb21tYW5kfScgaW4gc2VsZi5jb21tYW5kOgogICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCArPSAnIHtjb21tYW5kfScKICAgICAgICAgICAgIFRlcm1pbmFsLl9faW5pdF9fKHNlbGYsIHNoX2NtZCwgdGl0bGUsIGVudiwgZCkKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCdDdXN0b20gdGVybWluYWwgd2FzIHN0YXJ0ZWQuJykKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdDdXN0b20gdGVybWluYWwgd2FzIHN0YXJ0ZWQuJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnTm8gY3VzdG9tIHRlcm1pbmFsIChPRV9URVJNSU5BTF9DVVNUT01DTUQpIHNldCcpCiAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFRlcm1pbmFsKCdPRV9URVJNSU5BTF9DVVNUT01DTUQgbm90IHNldCcpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3R5cGVzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS90eXBlcy5weQppbmRleCA0YWU1OGFjLi5mNDAxNzEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3R5cGVzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvdHlwZXMucHkKQEAgLTEwMyw4ICsxMDMsMTMgQEAKICAgICAiIiJPcGVuRW1iZWRkZWQgJ2Jvb2xlYW4nIHR5cGUKIAogICAgIFZhbGlkIHZhbHVlcyBmb3IgdHJ1ZTogJ3llcycsICd5JywgJ3RydWUnLCAndCcsICcxJwotICAgIFZhbGlkIHZhbHVlcyBmb3IgZmFsc2U6ICdubycsICduJywgJ2ZhbHNlJywgJ2YnLCAnMCcKKyAgICBWYWxpZCB2YWx1ZXMgZm9yIGZhbHNlOiAnbm8nLCAnbicsICdmYWxzZScsICdmJywgJzAnLCBOb25lCiAgICAgIiIiCisgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKKyAgICAgICAgcmV0dXJuIHZhbHVlCiAKICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJib29sZWFuIGFjY2VwdHMgYSBzdHJpbmcsIG5vdCAnJXMnIiAlIHR5cGUodmFsdWUpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weSBiL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKaW5kZXggODBmMDQ0Mi4uOGE1ODRkNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CkBAIC0xLDQgKzEsNiBAQAogaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCB0cmFjZWJhY2sKIAogZGVmIHJlYWRfZmlsZShmaWxlbmFtZSk6CiAgICAgdHJ5OgpAQCAtMjMsNiArMjUsMTMgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gZmFsc2V2YWx1ZQogCitkZWYgdmFydHJ1ZSh2YXIsIGlmdHJ1ZSwgaWZmYWxzZSwgZCk6CisgICAgaW1wb3J0IG9lLnR5cGVzCisgICAgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcih2YXIpKToKKyAgICAgICAgcmV0dXJuIGlmdHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBpZmZhbHNlCisKIGRlZiBsZXNzX29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgogICAgIGlmIGZsb2F0KGQuZ2V0VmFyKHZhcmlhYmxlKSkgPD0gZmxvYXQoY2hlY2t2YWx1ZSk6CiAgICAgICAgIHJldHVybiB0cnVldmFsdWUKQEAgLTI0NiwzOCArMjU1LDczIEBACiAgICAgICAgICAgICBiYi5ub3RlKCJFeGVjdXRpbmcgJXMgLi4uIiAlIGNtZCkKICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYyhjbWQsIGQpCiAKLWRlZiBtdWx0aXByb2Nlc3NfZXhlYyhjb21tYW5kcywgZnVuY3Rpb24pOgotICAgIGltcG9ydCBzaWduYWwKLSAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisjIEZvciBlYWNoIGl0ZW0gaW4gaXRlbXMsIGNhbGwgdGhlIGZ1bmN0aW9uICd0YXJnZXQnIHdpdGggaXRlbSBhcyB0aGUgZmlyc3QgCisjIGFyZ3VtZW50LCBleHRyYWFyZ3MgYXMgdGhlIG90aGVyIGFyZ3VtZW50cyBhbmQgaGFuZGxlIGFueSBleGNlcHRpb25zIGluIHRoZQorIyBwYXJlbnQgdGhyZWFkCitkZWYgbXVsdGlwcm9jZXNzX2xhdW5jaCh0YXJnZXQsIGl0ZW1zLCBkLCBleHRyYWFyZ3M9Tm9uZSk6CiAKLSAgICBpZiBub3QgY29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBbXQorICAgIGNsYXNzIFByb2Nlc3NMYXVuY2gobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuX3Bjb25uLCBzZWxmLl9jY29ubiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX3Jlc3VsdCA9IE5vbmUKIAotICAgIGRlZiBpbml0X3dvcmtlcigpOgotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIHNpZ25hbC5TSUdfSUdOKQorICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldCA9IHNlbGYuX3RhcmdldCgqc2VsZi5fYXJncywgKipzZWxmLl9rd2FyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZCgoTm9uZSwgcmV0KSkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICB0YiA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKChlLCB0YikpCiAKLSAgICBmYWlscyA9IFtdCisgICAgICAgIGRlZiB1cGRhdGUoc2VsZik6CisgICAgICAgICAgICBpZiBzZWxmLl9wY29ubi5wb2xsKCk6CisgICAgICAgICAgICAgICAgKGUsIHRiKSA9IHNlbGYuX3Bjb25uLnJlY3YoKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IChlLCB0YikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQgPSB0YgogCi0gICAgZGVmIGZhaWx1cmVzKHJlcyk6Ci0gICAgICAgIGZhaWxzLmFwcGVuZChyZXMpCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAgICAgc2VsZi51cGRhdGUoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbgogCi0gICAgbnByb2MgPSBtaW4obXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpLCBsZW4oY29tbWFuZHMpKQotICAgIHBvb2wgPSBiYi51dGlscy5tdWx0aXByb2Nlc3Npbmdwb29sKG5wcm9jLCBpbml0X3dvcmtlcikKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiByZXN1bHQoc2VsZik6CisgICAgICAgICAgICBzZWxmLnVwZGF0ZSgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0CiAKLSAgICB0cnk6Ci0gICAgICAgIG1hcHJlc3VsdCA9IHBvb2wubWFwX2FzeW5jKGZ1bmN0aW9uLCBjb21tYW5kcywgZXJyb3JfY2FsbGJhY2s9ZmFpbHVyZXMpCi0KLSAgICAgICAgcG9vbC5jbG9zZSgpCi0gICAgICAgIHBvb2wuam9pbigpCi0gICAgICAgIHJlc3VsdHMgPSBtYXByZXN1bHQuZ2V0KCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHBvb2wudGVybWluYXRlKCkKLSAgICAgICAgcG9vbC5qb2luKCkKLSAgICAgICAgcmFpc2UKLQotICAgIGlmIGZhaWxzOgotICAgICAgICByYWlzZSBmYWlsc1swXQotCisgICAgbWF4X3Byb2Nlc3MgPSBpbnQoZC5nZXRWYXIoIkJCX05VTUJFUl9USFJFQURTIikgb3Igb3MuY3B1X2NvdW50KCkgb3IgMSkKKyAgICBsYXVuY2hlZCA9IFtdCisgICAgZXJyb3JzID0gW10KKyAgICByZXN1bHRzID0gW10KKyAgICBpdGVtcyA9IGxpc3QoaXRlbXMpCisgICAgd2hpbGUgKGl0ZW1zIGFuZCBub3QgZXJyb3JzKSBvciBsYXVuY2hlZDoKKyAgICAgICAgaWYgbm90IGVycm9ycyBhbmQgaXRlbXMgYW5kIGxlbihsYXVuY2hlZCkgPCBtYXhfcHJvY2VzczoKKyAgICAgICAgICAgIGFyZ3MgPSAoaXRlbXMucG9wKCksKQorICAgICAgICAgICAgaWYgZXh0cmFhcmdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgZXh0cmFhcmdzCisgICAgICAgICAgICBwID0gUHJvY2Vzc0xhdW5jaCh0YXJnZXQ9dGFyZ2V0LCBhcmdzPWFyZ3MpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIGxhdW5jaGVkLmFwcGVuZChwKQorICAgICAgICBmb3IgcSBpbiBsYXVuY2hlZDoKKyAgICAgICAgICAgICMgVGhlIGZpbmlzaGVkIHByb2Nlc3NlcyBhcmUgam9pbmVkIHdoZW4gY2FsbGluZyBpc19hbGl2ZSgpCisgICAgICAgICAgICBpZiBub3QgcS5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIGlmIHEuZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHEuZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIGlmIHEucmVzdWx0OgorICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChxLnJlc3VsdCkKKyAgICAgICAgICAgICAgICBsYXVuY2hlZC5yZW1vdmUocSkKKyAgICAjIFBhcmFub2lhIGRvZXNuJ3QgaHVydAorICAgIGZvciBwIGluIGxhdW5jaGVkOgorICAgICAgICBwLmpvaW4oKQorICAgIGlmIGVycm9yczoKKyAgICAgICAgbXNnID0gIiIKKyAgICAgICAgZm9yIChlLCB0YikgaW4gZXJyb3JzOgorICAgICAgICAgICAgbXNnID0gbXNnICsgc3RyKGUpICsgIjogIiArIHN0cih0YikgKyAiXG4iCisgICAgICAgIGJiLmZhdGFsKCJGYXRhbCBlcnJvcnMgb2NjdXJyZWQgaW4gc3VicHJvY2Vzc2VzOlxuJXMiICUgbXNnKQogICAgIHJldHVybiByZXN1bHRzCiAKIGRlZiBzcXVhc2hzcGFjZXMoc3RyaW5nKToKQEAgLTMwNCwxMSArMzQ4LDIwIEBACiAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHBrZ19kaWN0KToKICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQocGtnKQogCi0gICAgcmV0dXJuICdcbicuam9pbihvdXRwdXQpCisgICAgb3V0cHV0X3N0ciA9ICdcbicuam9pbihvdXRwdXQpCiAKLWRlZiBob3N0X2djY192ZXJzaW9uKGQpOgorICAgIGlmIG91dHB1dF9zdHI6CisgICAgICAgICMgbWFrZSBzdXJlIGxhc3QgbGluZSBpcyBuZXdsaW5lIHRlcm1pbmF0ZWQKKyAgICAgICAgb3V0cHV0X3N0ciArPSAnXG4nCisKKyAgICByZXR1cm4gb3V0cHV0X3N0cgorCitkZWYgaG9zdF9nY2NfdmVyc2lvbihkLCB0YXNrY29udGV4dG9ubHk9RmFsc2UpOgogICAgIGltcG9ydCByZSwgc3VicHJvY2VzcwogCisgICAgaWYgdGFza2NvbnRleHRvbmx5IGFuZCBkLmdldFZhcignQkJfV09SS0VSQ09OVEVYVCcpICE9ICcxJzoKKyAgICAgICAgcmV0dXJuCisKICAgICBjb21waWxlciA9IGQuZ2V0VmFyKCJCVUlMRF9DQyIpCiAgICAgdHJ5OgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQpAQCAtMzI3LDkgKzM4MCwxOCBAQAogCiBkZWYgZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKToKICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKLSAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudAotICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKLSAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsIHZhcmlhbnQgKyAiLSIpCisgICAgaWYgdmFyaWFudDoKKyAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtbXVsdGlsaWItIiArIHZhcmlhbnQKKyAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQorICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsIHZhcmlhbnQgKyAiLSIpCisgICAgZWxzZToKKyAgICAgICAgb3JpZ2RlZmF1bHQgPSBsb2NhbGRhdGEuZ2V0VmFyKCJERUZBVUxUVFVORV9NVUxUSUxJQl9PUklHSU5BTCIpCisgICAgICAgIGlmIG9yaWdkZWZhdWx0OgorICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiREVGQVVMVFRVTkUiLCBvcmlnZGVmYXVsdCkKKyAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpLnNwbGl0KCI6IikKKyAgICAgICAgb3ZlcnJpZGVzID0gIjoiLmpvaW4oW3ggZm9yIHggaW4gb3ZlcnJpZGVzIGlmIG5vdCB4LnN0YXJ0c3dpdGgoInZpcnRjbGFzcy1tdWx0aWxpYi0iKV0pCisgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKKyAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiTUxQUkVGSVgiLCAiIikKICAgICByZXR1cm4gbG9jYWxkYXRhCiAKICMKQEAgLTQxOSwzICs0ODEsNCBAQAogICAgICAgICAgICAgbXNnID0gbXNnICsgJyAoJXMpJyAlIHNlbGYuZGVzY3JpcHRpb24KIAogICAgICAgICByZXR1cm4gbXNnCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CmluZGV4IGVmMDA4NDUuLjgyMWFlYzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQpAQCAtNTcsMTQgKzU3LDIxIEBACiAgICAgICAgICAgICAgICAgbW9kdWxlc19yZXF1aXJlZCwgZmlsdGVycykKICAgICAgICAgc2VsZi5zdWl0ZXMgPSBzZWxmLmxvYWRlci5kaXNjb3ZlcigpCiAKLSAgICBkZWYgcnVuVGVzdHMoc2VsZiwgc2tpcHM9W10pOgorICAgIGRlZiBydW5UZXN0cyhzZWxmLCBwcm9jZXNzZXM9Tm9uZSwgc2tpcHM9W10pOgogICAgICAgICBzZWxmLnJ1bm5lciA9IHNlbGYucnVubmVyQ2xhc3Moc2VsZiwgZGVzY3JpcHRpb25zPUZhbHNlLCB2ZXJib3NpdHk9MikKIAogICAgICAgICAjIERpbmFtaWNhbGx5IHNraXAgdGhvc2UgdGVzdHMgc3BlY2lmaWVkIHRob3VnaCBhcmd1bWVudHMKICAgICAgICAgc2VsZi5za2lwVGVzdHMoc2tpcHMpCiAKICAgICAgICAgc2VsZi5fcnVuX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oc2VsZi5zdWl0ZXMpCisgICAgICAgIGlmIHByb2Nlc3NlczoKKyAgICAgICAgICAgIGZyb20gb2VxYS5jb3JlLnV0aWxzLmNvbmN1cnJlbmN5dGVzdCBpbXBvcnQgQ29uY3VycmVudFRlc3RTdWl0ZQorCisgICAgICAgICAgICBjb25jdXJyZW50X3N1aXRlID0gQ29uY3VycmVudFRlc3RTdWl0ZShzZWxmLnN1aXRlcywgcHJvY2Vzc2VzKQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5uZXIucnVuKGNvbmN1cnJlbnRfc3VpdGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJ1bm5lci5idWZmZXIgPSBUcnVlCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oc2VsZi5zdWl0ZXMpCiAgICAgICAgIHNlbGYuX3J1bl9lbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RhdGEucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGF0YS5weQppbmRleCAzMWM2ZGQ2Li5mMGY2NWFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGF0YS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGF0YS5weQpAQCAtNTQsNiArNTQsMjAgQEAKICAgICAgICAgICAgIHNlbGYuY2FzZS5za2lwVGVzdChzZWxmLm1zZykKIAogQHJlZ2lzdGVyRGVjb3JhdG9yCitjbGFzcyBza2lwSWZJbkRhdGFWYXIoT0VUZXN0RGVjb3JhdG9yKToKKyAgICAiIiIKKyAgICAgICAgU2tpcCB0ZXN0IGlmIHZhbHVlIGlzIGluIGRhdGEgc3RvcmUncyB2YXJpYWJsZS4KKyAgICAiIiIKKworICAgIGF0dHJzID0gKCd2YXInLCAndmFsdWUnLCAnbXNnJykKKyAgICBkZWYgc2V0VXBEZWNvcmF0b3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICgnQ2hlY2tpbmcgaWYgJXIgdmFsdWUgY29udGFpbnMgJXIgdG8gc2tpcCAnCisgICAgICAgICAgICAgICd0aGUgdGVzdCcgJSAoc2VsZi52YXIsIHNlbGYudmFsdWUpKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zyhtc2cpCisgICAgICAgIGlmIHNlbGYudmFsdWUgaW4gKHNlbGYuY2FzZS50ZC5nZXQoc2VsZi52YXIpKToKKyAgICAgICAgICAgIHNlbGYuY2FzZS5za2lwVGVzdChzZWxmLm1zZykKKworQHJlZ2lzdGVyRGVjb3JhdG9yCiBjbGFzcyBza2lwSWZOb3RJbkRhdGFWYXIoT0VUZXN0RGVjb3JhdG9yKToKICAgICAiIiIKICAgICAgICAgU2tpcCB0ZXN0IGlmIHZhbHVlIGlzIG5vdCBpbiBkYXRhIHN0b3JlJ3MgdmFyaWFibGUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGVwZW5kcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5CmluZGV4IDY5YzYwNGQuLjk1MGRiYWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5CkBAIC02MywxMyArNjMsMTUgQEAKICAgICByZXR1cm4gW2Nhc2VzW2Nhc2VfaWRdIGZvciBjYXNlX2lkIGluIGNhc2VzX29yZGVyZWRdCiAKIGRlZiBfc2tpcFRlc3REZXBlbmRlbmN5KGNhc2UsIGRlcGVuZHMpOgotICAgIHNraXBSZWFzb25zID0gWydlcnJvcnMnLCAnZmFpbHVyZXMnLCAnc2tpcHBlZCddCi0KLSAgICBmb3IgcmVhc29uIGluIHNraXBSZWFzb25zOgotICAgICAgICBmb3IgdGVzdCwgXyBpbiBnZXRhdHRyKGNhc2UudGMucmVzdWx0cywgcmVhc29uKToKLSAgICAgICAgICAgIGlmIHRlc3QuaWQoKSBpbiBkZXBlbmRzOgotICAgICAgICAgICAgICAgIHJhaXNlIFNraXBUZXN0KCJUZXN0IGNhc2UgJXMgZGVwZW5kcyBvbiAlcyBhbmQgd2FzIGluICVzLiIgXAotICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2FzZS5pZCgpLCB0ZXN0LmlkKCksIHJlYXNvbikpCisgICAgZm9yIGRlcCBpbiBkZXBlbmRzOgorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIGZvciB0ZXN0LCBfIGluIGNhc2UudGMucmVzdWx0cy5zdWNjZXNzZXM6CisgICAgICAgICAgICBpZiB0ZXN0LmlkKCkgPT0gZGVwOgorICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIFNraXBUZXN0KCJUZXN0IGNhc2UgJXMgZGVwZW5kcyBvbiAlcyBidXQgaXQgZGlkbid0IHBhc3MvcnVuLiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2FzZS5pZCgpLCBkZXApKQogCiBAcmVnaXN0ZXJEZWNvcmF0b3IKIGNsYXNzIE9FVGVzdERlcGVuZHMoT0VUZXN0RGlzY292ZXIpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CmluZGV4IDIyNTVjZjEuLmU2NmRlMzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKQEAgLTQ0LDYgKzQ0LDggQEAKICAgICAgICAgIyBBc3N1bXB0aW9uOiBwYWNrYWdlIGFuZCBtb2R1bGUgbmFtZXMgZG8gbm90IGNvbnRhaW4gdXBwZXIgY2FzZQogICAgICAgICAjIGNoYXJhY3RlcnMsIHdoZXJlYXMgY2xhc3MgbmFtZXMgZG8KICAgICAgICAgbSA9IHJlLm1hdGNoKHInXihcdyspKD86XC4oXHdbXi5dKikoPzpcLihbXi5dKykpPyk/JCcsIG1vZHVsZSwgZmxhZ3M9cmUuQVNDSUkpCisgICAgICAgIGlmIG5vdCBtOgorICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICBtb2R1bGVfbmFtZSwgY2xhc3NfbmFtZSwgdGVzdF9uYW1lID0gbS5ncm91cHMoKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKaW5kZXggZjhiYjIzZi4uZGY4OGI4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQpAQCAtMzYsNiArMzYsOSBAQAogICAgICAgICBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIAogICAgICAgICBzZWxmLnN1Y2Nlc3NlcyA9IFtdCisgICAgICAgIHNlbGYuc3RhcnR0aW1lID0ge30KKyAgICAgICAgc2VsZi5lbmR0aW1lID0ge30KKyAgICAgICAgc2VsZi5wcm9ncmVzc2luZm8gPSB7fQogCiAgICAgICAgICMgSW5qZWN0IGludG8gdGMgc28gdGhhdCBUZXN0RGVwZW5kcyBkZWNvcmF0b3IgY2FuIHNlZSByZXN1bHRzCiAgICAgICAgIHRjLnJlc3VsdHMgPSBzZWxmCkBAIC00MywxMyArNDYsMjUgQEAKICAgICAgICAgc2VsZi50YyA9IHRjCiAKICAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3QpOgotICAgICAgICAjIEFsbG93IHVzIHRvIHRyaWdnZXIgdGhlIHRlc3RjYXNlIGJ1ZmZlciBtb2RlIG9uIGEgcGVyIHRlc3QgYmFzaXMKLSAgICAgICAgIyBzbyBzdGRvdXQvc3RkZXJyIGFyZSBvbmx5IHByaW50ZWQgdXBvbiBmYWlsdXJlLiBFbmFibGVzIGRlYnVnZ2luZwotICAgICAgICAjIGJ1dCBjbGVhbiBvdXRwdXQKLSAgICAgICAgaWYgaGFzYXR0cih0ZXN0LCAiYnVmZmVyIik6Ci0gICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IHRlc3QuYnVmZmVyCisgICAgICAgICMgTWF5IGhhdmUgYmVlbiBzZXQgYnkgY29uY3VycmVuY3l0ZXN0CisgICAgICAgIGlmIHRlc3QuaWQoKSBub3QgaW4gc2VsZi5zdGFydHRpbWU6CisgICAgICAgICAgICBzZWxmLnN0YXJ0dGltZVt0ZXN0LmlkKCldID0gdGltZS50aW1lKCkKICAgICAgICAgc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5zdGFydFRlc3QodGVzdCkKIAorICAgIGRlZiBzdG9wVGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgc2VsZi5lbmR0aW1lW3Rlc3QuaWQoKV0gPSB0aW1lLnRpbWUoKQorICAgICAgICBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLnN0b3BUZXN0KHRlc3QpCisgICAgICAgIGlmIHRlc3QuaWQoKSBpbiBzZWxmLnByb2dyZXNzaW5mbzoKKyAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oc2VsZi5wcm9ncmVzc2luZm9bdGVzdC5pZCgpXSkKKworICAgICAgICAjIFByaW50IHRoZSBlcnJvcnMvZmFpbHVyZXMgZWFybHkgdG8gYWlkL3NwZWVkIGRlYnVnZ2luZywgaXRzIGEgcGFpbgorICAgICAgICAjIHRvIHdhaXQgdW50aWwgc2VsZnRlc3QgZmluaXNoZXMgdG8gc2VlIHRoZW0uCisgICAgICAgIGZvciB0IGluIFsnZmFpbHVyZXMnLCAnZXJyb3JzJywgJ3NraXBwZWQnLCAnZXhwZWN0ZWRGYWlsdXJlcyddOgorICAgICAgICAgICAgZm9yIChzY2FzZSwgbXNnKSBpbiBnZXRhdHRyKHNlbGYsIHQpOgorICAgICAgICAgICAgICAgIGlmIHRlc3QuaWQoKSA9PSBzY2FzZS5pZCgpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKHN0cihtc2cpKQorICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgZGVmIGxvZ1N1bW1hcnkoc2VsZiwgY29tcG9uZW50LCBjb250ZXh0X21zZz0nJyk6CiAgICAgICAgIGVsYXBzZWRfdGltZSA9IHNlbGYudGMuX3J1bl9lbmRfdGltZSAtIHNlbGYudGMuX3J1bl9zdGFydF90aW1lCiAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlNVTU1BUlk6IikKQEAgLTc4LDEzICs5MywxMyBAQAogCiAgICAgICAgICAgICAgICAgIyBXaGVuIGZhaWxzIGF0IG1vZHVsZSBvciBjbGFzcyBsZXZlbCB0aGUgY2xhc3MgbmFtZSBpcyBwYXNzZWQgYXMgc3RyaW5nCiAgICAgICAgICAgICAgICAgIyBzbyBmaWd1cmUgb3V0IHRvIHNlZSBpZiBtYXRjaAotICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goIl5zZXRVcE1vZHVsZSBcKCg/UDxtb2R1bGVfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCisgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyIl5zZXRVcE1vZHVsZSBcKCg/UDxtb2R1bGVfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCiAgICAgICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICAgaWYgY2FzZS5fX2NsYXNzX18uX19tb2R1bGVfXyA9PSBtLmdyb3VwKCdtb2R1bGVfbmFtZScpOgogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgiXnNldFVwQ2xhc3MgXCgoP1A8Y2xhc3NfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCisgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyIl5zZXRVcENsYXNzIFwoKD9QPGNsYXNzX25hbWU+LiopXCkkIiwgc2Nhc2Vfc3RyKQogICAgICAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzX25hbWUgPSAiJXMuJXMiICUgKGNhc2UuX19jbGFzc19fLl9fbW9kdWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UuX19jbGFzc19fLl9fbmFtZV9fKQpAQCAtMTIyLDkgKzEzNywxMyBAQAogICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGQsICdvZWlkJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBvZWlkID0gZC5vZWlkCiAKKyAgICAgICAgICAgIHQgPSAiIgorICAgICAgICAgICAgaWYgY2FzZS5pZCgpIGluIHNlbGYuc3RhcnR0aW1lIGFuZCBjYXNlLmlkKCkgaW4gc2VsZi5lbmR0aW1lOgorICAgICAgICAgICAgICAgIHQgPSAiICgiICsgInswOi4yZn0iLmZvcm1hdChzZWxmLmVuZHRpbWVbY2FzZS5pZCgpXSAtIHNlbGYuc3RhcnR0aW1lW2Nhc2UuaWQoKV0pICsgInMpIgorCiAgICAgICAgICAgICBpZiBzdGF0dXMgbm90IGluIGxvZ3M6CiAgICAgICAgICAgICAgICAgbG9nc1tzdGF0dXNdID0gW10KLSAgICAgICAgICAgIGxvZ3Nbc3RhdHVzXS5hcHBlbmQoIlJFU1VMVFMgLSAlcyAtIFRlc3RjYXNlICVzOiAlcyIgJSAoY2FzZS5pZCgpLCBvZWlkLCBzdGF0dXMpKQorICAgICAgICAgICAgbG9nc1tzdGF0dXNdLmFwcGVuZCgiUkVTVUxUUyAtICVzIC0gVGVzdGNhc2UgJXM6ICVzJXMiICUgKGNhc2UuaWQoKSwgb2VpZCwgc3RhdHVzLCB0KSkKICAgICAgICAgICAgIGlmIGxvZzoKICAgICAgICAgICAgICAgICByZXN1bHRbY2FzZS5pZCgpXSA9IHsnc3RhdHVzJzogc3RhdHVzLCAnbG9nJzogbG9nfQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDUwMjg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CkBAIC0wLDAgKzEsMjU5IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjCisjIE1vZGlmaWVkIGZvciB1c2UgaW4gT0UgYnkgUmljaGFyZCBQdXJkaWUsIDIwMTgKKyMKKyMgTW9kaWZpZWQgYnk6IENvcmV5IEdvbGRiZXJnLCAyMDEzCisjICAgTGljZW5zZTogR1BMdjIrCisjCisjIE9yaWdpbmFsIGNvZGUgZnJvbToKKyMgICBCYXphYXIgKGJ6cmxpYi50ZXN0cy5fX2luaXRfXy5weSwgdjIuNiwgY29waWVkIEp1biAwMSAyMDEzKQorIyAgIENvcHlyaWdodCAoQykgMjAwNS0yMDExIENhbm9uaWNhbCBMdGQKKyMgICBMaWNlbnNlOiBHUEx2MisKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGVzdHRvb2xzCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IGlvCisKK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCitmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUKK2Zyb20gc3VidW5pdCBpbXBvcnQgUHJvdG9jb2xUZXN0Q2FzZSwgVGVzdFByb3RvY29sQ2xpZW50Citmcm9tIHN1YnVuaXQudGVzdF9yZXN1bHRzIGltcG9ydCBBdXRvVGltaW5nVGVzdFJlc3VsdERlY29yYXRvcgorZnJvbSB0ZXN0dG9vbHMgaW1wb3J0IFRocmVhZHNhZmVGb3J3YXJkaW5nUmVzdWx0LCBpdGVyYXRlX3Rlc3RzCisKK2ltcG9ydCBiYi51dGlscworaW1wb3J0IG9lLnBhdGgKKworX2FsbF9fID0gWworICAgICdDb25jdXJyZW50VGVzdFN1aXRlJywKKyAgICAnZm9ya19mb3JfdGVzdHMnLAorICAgICdwYXJ0aXRpb25fdGVzdHMnLAorXQorCisjCisjIFBhdGNoIHRoZSB2ZXJzaW9uIGZyb20gdGVzdHRvb2xzIHRvIGFsbG93IGFjY2VzcyB0byBfdGVzdF9zdGFydCBhbmQgYWxsb3cKKyMgY29tcHV0YXRpb24gb2YgdGltaW5nIGluZm9ybWF0aW9uIGFuZCB0aHJlYWRpbmcgcHJvZ3Jlc3MKKyMKK2NsYXNzIEJCVGhyZWFkc2FmZUZvcndhcmRpbmdSZXN1bHQoVGhyZWFkc2FmZUZvcndhcmRpbmdSZXN1bHQpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldCwgc2VtYXBob3JlLCB0aHJlYWRudW0sIHRvdGFsaW5wcm9jZXNzLCB0b3RhbHRlc3RzKToKKyAgICAgICAgc3VwZXIoQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdCwgc2VsZikuX19pbml0X18odGFyZ2V0LCBzZW1hcGhvcmUpCisgICAgICAgIHNlbGYudGhyZWFkbnVtID0gdGhyZWFkbnVtCisgICAgICAgIHNlbGYudG90YWxpbnByb2Nlc3MgPSB0b3RhbGlucHJvY2VzcworICAgICAgICBzZWxmLnRvdGFsdGVzdHMgPSB0b3RhbHRlc3RzCisKKyAgICBkZWYgX2FkZF9yZXN1bHRfd2l0aF9zZW1hcGhvcmUoc2VsZiwgbWV0aG9kLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLnNlbWFwaG9yZS5hY3F1aXJlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5yZXN1bHQuc3RhcnR0aW1lW3Rlc3QuaWQoKV0gPSBzZWxmLl90ZXN0X3N0YXJ0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICBzZWxmLnJlc3VsdC50aHJlYWRwcm9ncmVzc1tzZWxmLnRocmVhZG51bV0uYXBwZW5kKHRlc3QuaWQoKSkKKyAgICAgICAgICAgIHRvdGFscHJvZ3Jlc3MgPSBzdW0obGVuKHgpIGZvciB4IGluIHNlbGYucmVzdWx0LnRocmVhZHByb2dyZXNzLnZhbHVlcygpKQorICAgICAgICAgICAgc2VsZi5yZXN1bHQucHJvZ3Jlc3NpbmZvW3Rlc3QuaWQoKV0gPSAiJXM6ICVzLyVzICVzLyVzICglc3MpICglcykiICUgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRocmVhZG51bSwKKyAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYucmVzdWx0LnRocmVhZHByb2dyZXNzW3NlbGYudGhyZWFkbnVtXSksCisgICAgICAgICAgICAgICAgICAgIHNlbGYudG90YWxpbnByb2Nlc3MsCisgICAgICAgICAgICAgICAgICAgIHRvdGFscHJvZ3Jlc3MsCisgICAgICAgICAgICAgICAgICAgIHNlbGYudG90YWx0ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgInswOi4yZn0iLmZvcm1hdCh0aW1lLnRpbWUoKS1zZWxmLl90ZXN0X3N0YXJ0LnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgdGVzdC5pZCgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5zZW1hcGhvcmUucmVsZWFzZSgpCisgICAgICAgIHN1cGVyKEJCVGhyZWFkc2FmZUZvcndhcmRpbmdSZXN1bHQsIHNlbGYpLl9hZGRfcmVzdWx0X3dpdGhfc2VtYXBob3JlKG1ldGhvZCwgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCisjCisjIEEgZHVtbXkgc3RydWN0dXJlIHRvIGFkZCB0byBpby5TdHJpbmdJTyBzbyB0aGF0IHRoZSAuYnVmZmVyIG9iamVjdAorIyBpcyBhdmFpbGFibGUgYW5kIGFjY2VwdHMgd3JpdGVzLiBUaGlzIGFsbG93cyB1bml0dGVzdCB3aXRoIGJ1ZmZlcj1UcnVlCisjIHRvIGludGVyYWN0IG9rIHdpdGggc3VidW5pdCB3aGljaCB3YW50cyB0byBhY2Nlc3Mgc3lzLnN0ZG91dC5idWZmZXIuCisjCitjbGFzcyBkdW1teWJ1ZihvYmplY3QpOgorICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgc2VsZi5wID0gcGFyZW50CisgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgc2VsZi5wLndyaXRlKGRhdGEuZGVjb2RlKCJ1dGYtOCIpKQorCisjCisjIFRha2VuIGZyb20gdGVzdHRvb2xzLkNvbm5jdXJyZW5jeVRlc3RTdWl0ZSBidXQgbW9kaWZpZWQgZm9yIE9FIHVzZQorIworY2xhc3MgQ29uY3VycmVudFRlc3RTdWl0ZSh1bml0dGVzdC5UZXN0U3VpdGUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlLCBwcm9jZXNzZXMpOgorICAgICAgICBzdXBlcihDb25jdXJyZW50VGVzdFN1aXRlLCBzZWxmKS5fX2luaXRfXyhbc3VpdGVdKQorICAgICAgICBzZWxmLnByb2Nlc3NlcyA9IHByb2Nlc3NlcworCisgICAgZGVmIHJ1bihzZWxmLCByZXN1bHQpOgorICAgICAgICB0ZXN0cywgdG90YWx0ZXN0cyA9IGZvcmtfZm9yX3Rlc3RzKHNlbGYucHJvY2Vzc2VzLCBzZWxmKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aHJlYWRzID0ge30KKyAgICAgICAgICAgIHF1ZXVlID0gUXVldWUoKQorICAgICAgICAgICAgc2VtYXBob3JlID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgxKQorICAgICAgICAgICAgcmVzdWx0LnRocmVhZHByb2dyZXNzID0ge30KKyAgICAgICAgICAgIGZvciBpLCAodGVzdCwgdGVzdG51bSkgaW4gZW51bWVyYXRlKHRlc3RzKToKKyAgICAgICAgICAgICAgICByZXN1bHQudGhyZWFkcHJvZ3Jlc3NbaV0gPSBbXQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0ID0gQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdChyZXN1bHQsIHNlbWFwaG9yZSwgaSwgdGVzdG51bSwgdG90YWx0ZXN0cykKKyAgICAgICAgICAgICAgICAjIEZvcmNlIGJ1ZmZlcmluZyBvZiBzdGRvdXQvc3RkZXJyIHNvIHRoZSBjb25zb2xlIGRvZXNuJ3QgZ2V0IGNvcnJ1cHRlZCBieSB0ZXN0IG91dHB1dAorICAgICAgICAgICAgICAgICMgYXMgcGVyIGRlZmF1bHQgaW4gcGFyZW50IGNvZGUKKyAgICAgICAgICAgICAgICBwcm9jZXNzX3Jlc3VsdC5idWZmZXIgPSBUcnVlCisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGFkZCBhIGJ1ZmZlciBvYmplY3QgdG8gc3Rkb3V0IHRvIGtlZXAgc3VidW5pdCBoYXBweQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0Ll9zdGRlcnJfYnVmZmVyID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0Ll9zdGRlcnJfYnVmZmVyLmJ1ZmZlciA9IGR1bW15YnVmKHByb2Nlc3NfcmVzdWx0Ll9zdGRlcnJfYnVmZmVyKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0Ll9zdGRvdXRfYnVmZmVyID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0Ll9zdGRvdXRfYnVmZmVyLmJ1ZmZlciA9IGR1bW15YnVmKHByb2Nlc3NfcmVzdWx0Ll9zdGRvdXRfYnVmZmVyKQorICAgICAgICAgICAgICAgIHJlYWRlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKAorICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9c2VsZi5fcnVuX3Rlc3QsIGFyZ3M9KHRlc3QsIHByb2Nlc3NfcmVzdWx0LCBxdWV1ZSkpCisgICAgICAgICAgICAgICAgdGhyZWFkc1t0ZXN0XSA9IHJlYWRlcl90aHJlYWQsIHByb2Nlc3NfcmVzdWx0CisgICAgICAgICAgICAgICAgcmVhZGVyX3RocmVhZC5zdGFydCgpCisgICAgICAgICAgICB3aGlsZSB0aHJlYWRzOgorICAgICAgICAgICAgICAgIGZpbmlzaGVkX3Rlc3QgPSBxdWV1ZS5nZXQoKQorICAgICAgICAgICAgICAgIHRocmVhZHNbZmluaXNoZWRfdGVzdF1bMF0uam9pbigpCisgICAgICAgICAgICAgICAgZGVsIHRocmVhZHNbZmluaXNoZWRfdGVzdF0KKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZm9yIHRocmVhZCwgcHJvY2Vzc19yZXN1bHQgaW4gdGhyZWFkcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBwcm9jZXNzX3Jlc3VsdC5zdG9wKCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICB0ZXN0WzBdLl9zdHJlYW0uY2xvc2UoKQorCisgICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0ZXN0LCBwcm9jZXNzX3Jlc3VsdCwgcXVldWUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdC5ydW4ocHJvY2Vzc19yZXN1bHQpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICMgVGhlIHJ1biBsb2dpYyBpdHNlbGYgZmFpbGVkCisgICAgICAgICAgICAgICAgY2FzZSA9IHRlc3R0b29scy5FcnJvckhvbGRlcigKKyAgICAgICAgICAgICAgICAgICAgImJyb2tlbi1ydW5uZXIiLAorICAgICAgICAgICAgICAgICAgICBlcnJvcj1zeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBjYXNlLnJ1bihwcm9jZXNzX3Jlc3VsdCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHF1ZXVlLnB1dCh0ZXN0KQorCitkZWYgcmVtb3ZlYnVpbGRkaXIoZCk6CisgICAgZGVsYXkgPSA1CisgICAgd2hpbGUgZGVsYXkgYW5kIG9zLnBhdGguZXhpc3RzKGQgKyAiL2JpdGJha2UubG9jayIpOgorICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgIGRlbGF5ID0gZGVsYXkgLSAxCisgICAgYmIudXRpbHMucHJ1bmVkaXIoZCkKKworZGVmIGZvcmtfZm9yX3Rlc3RzKGNvbmN1cnJlbmN5X251bSwgc3VpdGUpOgorICAgIHJlc3VsdCA9IFtdCisgICAgdGVzdF9ibG9ja3MgPSBwYXJ0aXRpb25fdGVzdHMoc3VpdGUsIGNvbmN1cnJlbmN5X251bSkKKyAgICAjIENsZWFyIHRoZSB0ZXN0cyBmcm9tIHRoZSBvcmlnaW5hbCBzdWl0ZSBzbyBpdCBkb2Vzbid0IGtlZXAgdGhlbSBhbGl2ZQorICAgIHN1aXRlLl90ZXN0c1s6XSA9IFtdCisgICAgdG90YWx0ZXN0cyA9IHN1bShsZW4oeCkgZm9yIHggaW4gdGVzdF9ibG9ja3MpCisgICAgZm9yIHByb2Nlc3NfdGVzdHMgaW4gdGVzdF9ibG9ja3M6CisgICAgICAgIG51bXRlc3RzID0gbGVuKHByb2Nlc3NfdGVzdHMpCisgICAgICAgIHByb2Nlc3Nfc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUocHJvY2Vzc190ZXN0cykKKyAgICAgICAgIyBBbHNvIGNsZWFyIGVhY2ggc3BsaXQgbGlzdCBzbyBuZXcgc3VpdGUgaGFzIG9ubHkgcmVmZXJlbmNlCisgICAgICAgIHByb2Nlc3NfdGVzdHNbOl0gPSBbXQorICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IG9zLnBpcGUoKQorICAgICAgICAjIENsZWFyIGJ1ZmZlcnMgYmVmb3JlIGZvcmsgdG8gYXZvaWQgZHVwbGljYXRlIG91dHB1dAorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgIG91cnBpZCA9IG9zLmdldHBpZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV3YnVpbGRkaXIgPSBOb25lCisgICAgICAgICAgICAgICAgc3RyZWFtID0gb3MuZmRvcGVuKGMycHdyaXRlLCAnd2InLCAxKQorICAgICAgICAgICAgICAgIG9zLmNsb3NlKGMycHJlYWQpCisKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIG5ldyBzZXBhcmF0ZSBCVUlMRERJUiBmb3IgZWFjaCBncm91cCBvZiB0ZXN0cworICAgICAgICAgICAgICAgIGlmICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCisgICAgICAgICAgICAgICAgICAgIG5ld2J1aWxkZGlyID0gYnVpbGRkaXIgKyAiLXN0LSIgKyBzdHIob3VycGlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmdGVzdGRpciA9IG9zLnBhdGguYWJzcGF0aChidWlsZGRpciArICIvLi4vbWV0YS1zZWxmdGVzdCIpCisgICAgICAgICAgICAgICAgICAgIG5ld3NlbGZ0ZXN0ZGlyID0gbmV3YnVpbGRkaXIgKyAiL21ldGEtc2VsZnRlc3QiCisKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG5ld2J1aWxkZGlyKQorICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jb25mIiwgbmV3YnVpbGRkaXIgKyAiL2NvbmYiKQorICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jYWNoZSIsIG5ld2J1aWxkZGlyICsgIi9jYWNoZSIpCisgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQorCisgICAgICAgICAgICAgICAgICAgIGZvciBlIGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBvcy5lbnZpcm9uW2VdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZV0gPSBvcy5lbnZpcm9uW2VdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorCisgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJnaXQgaW5pdDsgZ2l0IGFkZCAqOyBnaXQgY29tbWl0IC1hIC1tICdpbml0aWFsJyIsIGN3ZD1uZXdzZWxmdGVzdGRpciwgc2hlbGw9VHJ1ZSkKKworICAgICAgICAgICAgICAgICAgICAjIFRyaWVkIHRvIHVzZWQgYml0YmFrZS1sYXllcnMgYWRkL3JlbW92ZSBidXQgaXQgcmVxdWlyZXMgcmVjaXBlIHBhcnNpbmcgYW5kIGhlbmNlIGlzIHRvbyBzbG93CisgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzZWQgJXMvY29uZi9iYmxheWVycy5jb25mIC1pIC1lICdzIyVzIyVzI2cnIiAlIChuZXdidWlsZGRpciwgc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKSwgY3dkPW5ld2J1aWxkZGlyLCBzaGVsbD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgIG9zLmNoZGlyKG5ld2J1aWxkZGlyKQorCisgICAgICAgICAgICAgICAgICAgIGZvciB0IGluIHByb2Nlc3Nfc3VpdGU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0LCAidGMiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSB0LnRjLmNvbmZpZ19wYXRocworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gY3A6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZnRlc3RkaXIgaW4gY3BbcF0gYW5kIG5ld3NlbGZ0ZXN0ZGlyIG5vdCBpbiBjcFtwXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBjcFtwXSBhbmQgbmV3YnVpbGRkaXIgbm90IGluIGNwW3BdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorCisgICAgICAgICAgICAgICAgIyBMZWF2ZSBzdGRlcnIgYW5kIHN0ZG91dCBvcGVuIHNvIHdlIGNhbiBzZWUgdGVzdCBub2lzZQorICAgICAgICAgICAgICAgICMgQ2xvc2Ugc3RkaW4gc28gdGhhdCB0aGUgY2hpbGQgZ29lcyBhd2F5IGlmIGl0IGRlY2lkZXMgdG8KKyAgICAgICAgICAgICAgICAjIHJlYWQgZnJvbSBzdGRpbiAob3RoZXJ3aXNlIGl0cyBhIHJvdWxldHRlIHRvIHNlZSB3aGF0CisgICAgICAgICAgICAgICAgIyBjaGlsZCBhY3R1YWxseSBnZXRzIGtleXN0cm9rZXMgZm9yIHBkYiBldGMpLgorICAgICAgICAgICAgICAgIG5ld3NpID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCisgICAgICAgICAgICAgICAgb3MuZHVwMihuZXdzaSwgc3lzLnN0ZGluLmZpbGVubygpKQorCisgICAgICAgICAgICAgICAgc3VidW5pdF9jbGllbnQgPSBUZXN0UHJvdG9jb2xDbGllbnQoc3RyZWFtKQorICAgICAgICAgICAgICAgICMgRm9yY2UgYnVmZmVyaW5nIG9mIHN0ZG91dC9zdGRlcnIgc28gdGhlIGNvbnNvbGUgZG9lc24ndCBnZXQgY29ycnVwdGVkIGJ5IHRlc3Qgb3V0cHV0CisgICAgICAgICAgICAgICAgIyBhcyBwZXIgZGVmYXVsdCBpbiBwYXJlbnQgY29kZQorICAgICAgICAgICAgICAgIHN1YnVuaXRfY2xpZW50LmJ1ZmZlciA9IFRydWUKKyAgICAgICAgICAgICAgICBzdWJ1bml0X3Jlc3VsdCA9IEF1dG9UaW1pbmdUZXN0UmVzdWx0RGVjb3JhdG9yKHN1YnVuaXRfY2xpZW50KQorICAgICAgICAgICAgICAgIHByb2Nlc3Nfc3VpdGUucnVuKHN1YnVuaXRfcmVzdWx0KQorICAgICAgICAgICAgICAgIGlmIG91cnBpZCAhPSBvcy5nZXRwaWQoKToKKyAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMCkKKyAgICAgICAgICAgICAgICBpZiBuZXdidWlsZGRpcjoKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlYnVpbGRkaXIobmV3YnVpbGRkaXIpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgIyBEb24ndCBkbyBhbnl0aGluZyB3aXRoIHByb2Nlc3MgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICBpZiBvdXJwaWQgIT0gb3MuZ2V0cGlkKCk6CisgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDEpCisgICAgICAgICAgICAgICAgIyBUcnkgYW5kIHJlcG9ydCB0cmFjZWJhY2sgb24gc3RyZWFtLCBidXQgZXhpdCB3aXRoIGVycm9yCisgICAgICAgICAgICAgICAgIyBldmVuIGlmIHN0cmVhbSBjb3VsZG4ndCBiZSBjcmVhdGVkIG9yIHNvbWV0aGluZyBlbHNlCisgICAgICAgICAgICAgICAgIyBnb2VzIHdyb25nLiAgVGhlIHRyYWNlYmFjayBpcyBmb3JtYXR0ZWQgdG8gYSBzdHJpbmcgYW5kCisgICAgICAgICAgICAgICAgIyB3cml0dGVuIGluIG9uZSBnbyB0byBhdm9pZCBpbnRlcmxlYXZpbmcgbGluZXMgZnJvbQorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgZmFpbGluZyBjaGlsZHJlbi4KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSh0cmFjZWJhY2suZm9ybWF0X2V4YygpLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBpZiBuZXdidWlsZGRpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWJ1aWxkZGlyKG5ld2J1aWxkZGlyKQorICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKQorICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgxKQorICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKKyAgICAgICAgICAgIG9zLl9leGl0KDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5jbG9zZShjMnB3cml0ZSkKKyAgICAgICAgICAgIHN0cmVhbSA9IG9zLmZkb3BlbihjMnByZWFkLCAncmInLCAxKQorICAgICAgICAgICAgdGVzdCA9IFByb3RvY29sVGVzdENhc2Uoc3RyZWFtKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgodGVzdCwgbnVtdGVzdHMpKQorICAgIHJldHVybiByZXN1bHQsIHRvdGFsdGVzdHMKKworZGVmIHBhcnRpdGlvbl90ZXN0cyhzdWl0ZSwgY291bnQpOgorICAgICMgS2VlcCB0ZXN0cyBmcm9tIHRoZSBzYW1lIGNsYXNzIHRvZ2V0aGVyIGJ1dCBhbGxvdyB0ZXN0cyBmcm9tIG1vZHVsZXMKKyAgICAjIHRvIGdvIHRvIGRpZmZlcmVudCBwcm9jZXNzZXMgdG8gYWlkIHBhcmFsbGVsaXNhdGlvbi4KKyAgICBtb2R1bGVzID0ge30KKyAgICBmb3IgdGVzdCBpbiBpdGVyYXRlX3Rlc3RzKHN1aXRlKToKKyAgICAgICAgbSA9IHRlc3QuX19tb2R1bGVfXyArICIuIiArIHRlc3QuX19jbGFzc19fLl9fbmFtZV9fCisgICAgICAgIGlmIG0gbm90IGluIG1vZHVsZXM6CisgICAgICAgICAgICBtb2R1bGVzW21dID0gW10KKyAgICAgICAgbW9kdWxlc1ttXS5hcHBlbmQodGVzdCkKKworICAgICMgU2ltcGx5IGRpdmlkZSB0aGUgdGVzdCBibG9ja3MgYmV0d2VlbiB0aGUgYXZhaWxhYmxlIHByb2Nlc3NlcworICAgIHBhcnRpdGlvbnMgPSBbbGlzdCgpIGZvciBfIGluIHJhbmdlKGNvdW50KV0KKyAgICBmb3IgcGFydGl0aW9uLCBtIGluIHppcChjeWNsZShwYXJ0aXRpb25zKSwgbW9kdWxlcyk6CisgICAgICAgIHBhcnRpdGlvbi5leHRlbmQobW9kdWxlc1ttXSkKKworICAgICMgTm8gcG9pbnQgaW4gZW1wdHkgdGhyZWFkcyBzbyBkcm9wIHRoZW0KKyAgICByZXR1cm4gW3AgZm9yIHAgaW4gcGFydGl0aW9ucyBpZiBwXQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvZmlsZXMvdGVzdC5wbCBiL3Bva3kvbWV0YS9saWIvb2VxYS9maWxlcy90ZXN0LnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODljOGYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9maWxlcy90ZXN0LnBsCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0kYSA9IDkuMDFlKzIxIC0gOS4wMWUrMjEgKyAwLjAxOwotcHJpbnQgKCJ0aGUgdmFsdWUgb2YgYSBpcyAiLCAkYSwgIlxuIik7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvZmlsZXMvdGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9maWxlcy90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzg5MjI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9maWxlcy90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbXBvcnQgb3MKLQotb3Muc3lzdGVtKCd0b3VjaCAvdG1wL3Rlc3RmaWxlLnB5dGhvbicpCi0KLWEgPSA5LjAxZSsyMSAtIDkuMDFlKzIxICsgMC4wMQotcHJpbnQoInRoZSB2YWx1ZSBvZiBhIGlzICVzIiAlIGEpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2FiYXQucGF0Y2ggYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2FiYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU0MWFjOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYWJhdC5wYXRjaApAQCAtMCwwICsxLDY0IEBACisjIyMjIyMjIworZGlmZiAtLWdpdCBhL2dseGdlYXJzX2NoZWNrLnNoIGIvZ2x4Z2VhcnNfY2hlY2suc2gKK2luZGV4IDE3NjIyYjguLmM0ZDNiOTcgMTAwNzU1CistLS0gYS9nbHhnZWFyc19jaGVjay5zaAorKysrIGIvZ2x4Z2VhcnNfY2hlY2suc2gKK0BAIC0zMSw3ICszMSw3IEBAIGVsc2UKKyAKKyAgICAgc2xlZXAgNgorIAorLSAgICBYUElEPSQoIHBzIGF4IHwgYXdrICd7cHJpbnQgJDEsICQ1fScgfCBncmVwIGdseGdlYXJzIHwgYXdrICd7cHJpbnQgJDF9JykKKysgICAgWFBJRD0kKCBwcyB8IGF3ayAne3ByaW50ICQxLCAkNX0nIHwgZ3JlcCBnbHhnZWFycyB8IGF3ayAne3ByaW50ICQxfScpCisgICAgIGlmIFsgISAteiAiJFhQSUQiIF07IHRoZW4KKyAgICAgICAgIGtpbGwgLTkgJFhQSUQgPi9kZXYvbnVsbCAyPiYxCisgICAgICAgICBlY2hvICJnbHhnZWFycyBjYW4gcnVuLCBQQVNTISIKK2RpZmYgLS1naXQgYS94X2Nsb3NlLnNoIGIveF9jbG9zZS5zaAoraW5kZXggZTI4N2JlMS4uMzQyOWYxYSAxMDA3NTUKKy0tLSBhL3hfY2xvc2Uuc2gKKysrKyBiL3hfY2xvc2Uuc2gKK0BAIC0yMiw3ICsyMiw3IEBACisgIworIGZ1bmN0aW9uIGNsb3NlX3Byb2MoKXsKKyBlY2hvICJraWxsIHByb2Nlc3MgWG9yZyIKKy1YUElEPSQoICBwcyBheCB8IGF3ayAne3ByaW50ICQxLCAkNX0nIHwgZWdyZXAgIlgkfFhvcmckIiB8IGF3ayAne3ByaW50ICQxfScpCisrWFBJRD0kKCAgcHMgfCBhd2sgJ3twcmludCAkMSwgJDZ9JyB8IGVncmVwICJYJHxYb3JnJCIgfCBhd2sgJ3twcmludCAkMX0nKQorIGlmIFsgISAteiAiJFhQSUQiIF07IHRoZW4KKyAgICAga2lsbCAkWFBJRAorICAgICBzbGVlcCA0CitkaWZmIC0tZ2l0IGEveF9zdGFydC5zaCBiL3hfc3RhcnQuc2gKK2luZGV4IDljZjZlYWIuLjIzMDU3OTYgMTAwNzU1CistLS0gYS94X3N0YXJ0LnNoCisrKysgYi94X3N0YXJ0LnNoCitAQCAtMjQsNyArMjQsNyBAQAorIFhfRVJST1I9MAorIAorICN0ZXN0IHdoZXRoZXIgWCBoYXMgc3RhcnRlZAorLVBYSUQ9JChwcyBheCB8YXdrICd7cHJpbnQgJDEsJDV9JyB8ZWdyZXAgIlhvcmckfFgkIiB8Z3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDF9JykKKytQWElEPSQocHMgfGF3ayAne3ByaW50ICQxLCQ2fScgfGVncmVwICJYb3JnJHxYJCIgfGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQxfScpCisgaWYgWyAhIC16ICIkUFhJRCIgXTsgdGhlbgorICAgICBlY2hvICJbV0FSTklOR10gWG9yZyBoYXMgc3RhcnRlZCEiCisgICAgIFhPUkdfU1RBVFVTPSJzdGFydGVkIgorQEAgLTM1LDkgKzM1LDExIEBAIGVsc2UKKyAgICAgI3N0YXJ0IHVwIHRoZSB4IHNlcnZlcgorICAgICBlY2hvICJTdGFydCB1cCB0aGUgWCBzZXJ2ZXIgZm9yIHRlc3QgaW4gZGlzcGxheSAkRElTUExBWS4uLi4uLi4uLi4uLi4uLi4iCisgCistICAgICRYT1JHX0RJUi9iaW4vWCA+L2Rldi9udWxsIDI+JjEgJgorKyAgICAjJFhPUkdfRElSL2Jpbi9YID4vZGV2L251bGwgMj4mMSAmCisrICAgICNzbGVlcCA4CisrICAgICN4dGVybSAmCisrICAgIC9ldGMvaW5pdC5kL3hzZXJ2ZXItbm9kbSBzdGFydCAmCisgICAgIHNsZWVwIDgKKy0gICAgeHRlcm0gJgorIGZpCisgICAgIFhMT0dfRklMRT0vdmFyL2xvZy9Yb3JnLjAubG9nCisgICAgIFsgLWYgJFhPUkdfRElSL3Zhci9sb2cvWG9yZy4wLmxvZyBdICYmIFhMT0dfRklMRT0kWE9SR19ESVIvdmFyL2xvZy9Yb3JnLjAubG9nCitAQCAtNTQsNyArNTYsNyBAQCBmaQorICAgICAgICAgWF9FUlJPUj0xCisgICAgIGZpCisgCistICAgIFhQSUQ9JCggcHMgYXggfCBhd2sgJ3twcmludCAkMSwgJDV9JyB8IGVncmVwICJYJHxYb3JnJCIgfGdyZXAgLXYgZ3JlcHwgYXdrICd7cHJpbnQgJDF9JykKKysgICAgWFBJRD0kKCBwcyB8IGF3ayAne3ByaW50ICQxLCAkNn0nIHwgZWdyZXAgIlgkfFhvcmckIiB8Z3JlcCAtdiBncmVwfCBhd2sgJ3twcmludCAkMX0nKQorICAgICBpZiBbIC16ICIkWFBJRCIgXTsgdGhlbgorICAgICAgICAgZWNobyAiU3RhcnQgdXAgWCBzZXJ2ZXIgRkFJTCEiCisgIGVjaG8KKyMjIyMjIyMjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiMWQzZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KQEAgLTAsMCArMSwxMjAwIEBACitbCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLnJwbV8tX19pbnN0YWxsX2RlcGVuZGVuY3lfcGFja2FnZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkdldCBhIG5vdCBwcmV2aW91c2x5IGluc3RhbGxlZCBSUE0gcGFja2FnZSBvciBidWlsZCBvbmUgb24gbG9jYWwgbWFjaGluZSwgd2hpY2ggc2hvdWxkIGhhdmUgcnVuLXRpbWUgZGVwZW5kZW5jeS5Gb3IgZXhhbXBsZSwgXCJtY1wiIChNaWRuaWdodCBDb21tYW5kZXIsIHdoaWNoIGlzIGEgdmlzdWFsIGZpbGUgbWFuYWdlcikgc2hvdWxkIGRlcGVuZCBvbiBcIm5jdXJzZXMtdGVybWluZm9cIi4gICBcblxuJCBiaXRiYWtlIG1jICBcblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDb3B5IHRoZSBwYWNrYWdlIGludG8gYSBzeXN0ZW0gZm9sZGVyIChmb3IgZXhhbXBsZSAvaG9tZS9yb290L3JwbV9wYWNrYWdlcykuICBcblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSdW4gXCJycG0gLWl2aCBwYWNrYWdlX25hbWVcIiBhbmQgY2hlY2sgdGhlIG91dHB1dCwgZm9yIGV4YW1wbGUgXCJycG0gLWl2aCBtYy5ycG0qXCIgc2hvdWxkIHJlcG9ydCB0aGUgZGVwZW5kZW5jeSBvbiBcIm5jdXJzZXMtdGVybWluZm9cIi5cblxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIjMgLiBycG0gY29tbWFuZCBzaG91bGQgcmVwb3J0IG1lc3NhZ2Ugd2hlbiBzb21lIFJQTSBpbnN0YWxsYXRpb24gZGVwZW5kcyBvbiBvdGhlciBwYWNrYWdlcy4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInJwbV8tX19pbnN0YWxsX2RlcGVuZGVuY3lfcGFja2FnZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuYm9vdF9hbmRfaW5zdGFsbF9mcm9tX1VTQiIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBsdWdpbiB1c2Igd2hpY2ggY29udGFpbnMgbGl2ZSBpbWFnZSBidXJuZWQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJVc2VyIGNhbiBjaG9vc2UgaW5zdGFsbCBzeXN0ZW0gZnJvbSB1c2Igc3RpY2sgb250byBoYXJkZGlzayBmcm9tIGJvb3QgbWVudSBvciBjb21tYW5kIGxpbmUgb3B0aW9uIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29uZmlndXJlIGRldmljZSBCSU9TIHRvIGZpcnN0bHkgYm9vdCBmcm9tIFVTQiBpZiBuZWNlc3NhcnkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJJbnN0YWxsZWQgc3lzdGVtIGNhbiBib290IHVwIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCB0aGUgZGV2aWNlIGFuZCBzZWxlY3Qgb3B0aW9uIFwiSW5zdGFsbFwiIGZyb20gYm9vdCBtZW51IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicHJvY2VlZCB0aHJvdWdoIGRlZmF1bHQgaW5zdGFsbCBwcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVtb3ZlIFVTQiwgYW5kIHJlYm9vdCBpbnRvIG5ldyBpbnN0YWxsZWQgc3lzdGVtLiBcbk5vdGU6ICAgSWYgaW5zdGFsbGF0aW9uIHdhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkIGFuZCByZWNlaXZlZCB0aGlzIG1lc3NhZ2UgXCJcIihzZHgpOiBWb2x1bWUgd2FzIG5vdCBwcm9wZXJseSB1bm1vdW50ZWQuLi5QbGVhc2UgcnVuIGZzY2suXCJcIiBpZ25vcmUgaXQgYmVjYXVzZSB0aGlzIHdhcyB3aGl0ZWxpc3RlZCBhY2NvcmRpbmcgdG8gYnVnIDk2NTIuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJib290X2FuZF9pbnN0YWxsX2Zyb21fVVNCIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5saXZlX2Jvb3RfZnJvbV9VU0IiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAianVhbi5mZXJuYW5kb3gucmFtb3MuZnJheWxlQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQbHVnaW4gdXNiIHdoaWNoIGNvbnRhaW5zIGxpdmUgaW1hZ2UgYnVybmVkLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlVzZXIgY2FuIGNob29zZSBib290IGZyb20gbGl2ZSBpbWFnZSBvbiB1c2Igc3RpY2sgZnJvbSBib290IG1lbnUgb3IgY29tbWFuZCBsaW5lIG9wdGlvbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvbmZpZ3VyZSBkZXZpY2UgQklPUyB0byBmaXJzdGx5IGJvb3QgZnJvbSBVU0IgaWYgbmVjZXNzYXJ5LiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJlYm9vdCB0aGUgZGV2aWNlIGFuZCBib290IGZyb20gVVNCIHN0aWNrLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkxpdmUgaW1hZ2UgY2FuIGJvb3QgdXAgd2l0aCB1c2Igc3RpY2siCisgICAgICAgICAgICAgICAgfQkJCQkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJsaXZlX2Jvb3RfZnJvbV9VU0IiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLmJvb3RfZnJvbV9ydW5sZXZlbF8zIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCBpbnRvIHN5c3RlbSBhbmQgZWRpdCAvZXRjL2luaXR0YWIgdG8gbWFrZSBzdXJlIHRoYXQgc3lzdGVtIGVudGVyIGF0IHRoZSBydW4gbGV2ZWwgMyBieSBkZWZhdWx0LCB0aGlzIGlzIGRvbmUgYnkgY2hhbmdpbmcgdGhlIGxpbmUgICBcblxuXG5pZDo1OmluaXRkZWZhdWx0ICBcblxudG8gIFxuXG5pZDozOmluaXRkZWZhdWx0ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVib290IHN5c3RlbSwgYW5kIHByZXNzIFwiVGFiXCIgdG8gZW50ZXIgXCJncnViXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJHZXQgaW50byB0aGUgXCJrZXJuZWxcIiBsaW5lIHdpdGggdGhlIGVkaXQgb3B0aW9uICBcImVcIiBhbmQgYWRkIFwicHNwbGFzaD1mYWxzZSB0ZXh0XCIgYXQgdGhlIGVuZCBsaW5lLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlByZXNzIFwiRjEwXCIgb3IgXCJjdHJsK3hcIiB0byBib290IHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklmIHN5c3RlbSBhc2sgeW91IGZvciBhIGxvZ2luIHR5cGUgXCJyb290XCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJTeXN0ZW0gc2hvdWxkIGJvb3QgdG8gcnVuIGxldmVsIDMsIHNob3dpbmcgdGhlIGNvbW1hbmQgcHJvbXB0LiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiYm9vdF9mcm9tX3J1bmxldmVsXzMiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLmJvb3RfZnJvbV9ydW5sZXZlbF81IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCBpbnRvIHN5c3RlbSBhbmQgZWRpdCAvZXRjL2luaXR0YWIgdG8gbWFrZSBzdXJlIHRoYXQgc3lzdGVtIGVudGVyIGF0IHRoZSBydW4gbGV2ZWwgNSBieSBkZWZhdWx0LCB0aGlzIGlzIGRvbmUgYnkgY2hhbmdpbmcgdGhlIGxpbmUgICBcblxuaWQ6Mzppbml0ZGVmYXVsdCAgXG5cbnRvICBcblxuaWQ6NTppbml0ZGVmYXVsdCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJlYm9vdCBzeXN0ZW0sIGFuZCBwcmVzcyBcIlRhYlwiIHRvIGVudGVyIFwiZ3J1YlwiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiR2V0IGludG8gdGhlIFwia2VybmVsXCIgbGluZSB3aXRoIHRoZSBlZGl0IG9wdGlvbiAgXCJlXCIgYW5kIGFkZCBcInBzcGxhc2g9ZmFsc2UgdGV4dFwiIGF0IHRoZSBlbmQgbGluZS4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQcmVzcyBcIkYxMFwiIG9yIFwiY3RybCt4XCIgdG8gYm9vdCBzeXN0ZW0gXG5Ob3RlOiBUaGUgdGVzdCBpcyBvbmx5IGZvciBzYXRvIGltYWdlLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlN5c3RlbSBzaG91bGQgYm9vdCB0byBydW5sZXZlbCA1IC4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImJvb3RfZnJvbV9ydW5sZXZlbF81IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5zaHV0ZG93bl9zeXN0ZW0iLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImxhdW5jaCB0ZXJtaW5hbCBhbmQgcnVuIFwic2h1dGRvd24gLWggbm93XCIgb3IgXCJwb3dlcm9mZlwiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU3lzdGVtIGNhbiBiZSBzaHV0ZG93biBzdWNjZXNzZnVsbHkgLiAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInNodXRkb3duX3N5c3RlbSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUucmVib290X3N5c3RlbSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIHRlcm1pbmFsIGFuZCBydW4gXCJyZWJvb3RcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlN5c3RlbSBjYW4gcmVib290IHN1Y2Nlc3NmdWxseSAuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAicmVib290X3N5c3RlbSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuc3dpdGNoX2Ftb25nX211bHRpX2FwcGxpY2F0aW9uc19hbmRfZGVza3RvcCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImxhdW5jaCBzZXZlcmFsIGFwcGxpY2F0aW9ucyhsaWtlIGNvbnRhY3RzLCBmaWxlIG1hbmFnZXIsIG5vdGVzLCBldGMpIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidXNlciBjb3VsZCBzd2l0Y2ggYW1vbmcgbXVsdGkgYXBwbGljYXRpb25zIGFuZCBkZXNrdG9wIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIHRlcm1pbmFsIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAic3dpdGNoIGFtb25nIG11bHRpIGFwcGxpY2F0aW9ucyBhbmQgZGVza3RvcCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNsb3NlIGFwcGxpY2F0aW9ucyBcbk5vdGU6IFRoZSBjYXNlIGlzIGZvciBzYXRvIGltYWdlIG9ubHkuICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic3dpdGNoX2Ftb25nX211bHRpX2FwcGxpY2F0aW9uc19hbmRfZGVza3RvcCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVVNCXy1fbW91bnQiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290IHN5c3RlbSBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUGx1ZyBVU0Igc3RpY2ssIGl0IHNob3VsZCBiZSBtb3VudCBpbiAgL3J1bi9tZWRpYS9zZCh4KSBJZiBYLXdpbmRvdyBzeXN0ZW0gZG9lcyBub3Qgc3RhcnQgYW5kIHNob3cgVVNCIGRldmljZSwgdGhlbiB1c2UgdGhlIHRlcm1pbmFsIHRvIG1vdW50IGl0LCBmb2xsb3dpbmcgdGhlIG5leHQgc3RlcHM6IFxuYS4gTG9jYXRlIHRoZSB1c2Igc3RpY2sgKHVzdWFsbHkgaXQgaXMgb24gL2Rldi9zZGIpIFxuYi4gQ3JlYXRlIGEgZGlyZWN0b3J5IHdpdGggXCJta2RpciBzdGlja1wiICAoc28geW91IHdpbGwgaGF2ZSBzdWNoIGEgcGF0aCBhczogL2hvbWUvcm9vdC9zdGljaykuIFxuYy4gUnVuIHRoZSBjb21tYW5kICBcIm1vdW50ICAvZGV2L3NkYiAgL2hvbWUvcm9vdC9zdGlja1wiIHRvIG1vdW50ICBVU0IgZGV2aWNlIG9uIGl0LiBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVVNCIGRldmljZSBzaG91bGQgYmUgbW91bnRlZCBpbiAgL3J1bi9tZWRpYS9zZCh4KSAgXG5vciBpbiAgL2hvbWUvcm9vdC9zdGljayAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlRoZW4geW91IGNhbiBhY2Nlc3MgVVNCIHN0aWNrICgvaG9tZS9yb290L3N0aWNrKSB2aWEgVGVybWluYWwgb3IgR1VJICBhbmQgdHJ5IHZhcmlvdXMgY29tbWFuZHMgYW5kIGFjdGlvbnMgbGlrZSBcImNwXCIsIFwibXZcIiwgXCJ0b3VjaFwiIGFuZCBcInJtXCIuICBUeXBlIFwiZG1lc2dcIiBjb21tYW5kIGFuZCBjaGVjayBmb3IgcmVjZW50IG1vdW50ZWQgZGV2aWNlcy4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJCYXNpYyBjb21tYW5kcyB3b3JrIHByb3Blcmx5LiBUaGUgc3lzdGVtIHNlbmRzIGEgbm90aWZpY2F0aW9uIGluIFwiZG1lc2dcIiBjb21tYW5kLCBzaG93aW5nIHRoYXQgdGhlIFVTQiBzdGljayBpcyBhY2Nlc3NpYmxlIGFuZCB0aGUgZGV2aWNlIGlzIG1vdW50ZWQgLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVVNCXy1fbW91bnQiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLlVTQl8tX3JlYWRfZmlsZXMiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInZpZXcvY29weSBzdWNjZXNzZnVsbHkiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJwbHVnIHVzYiBzdGljayIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInZpZXcgZmlsZXMgaW4gdXNiIGJ5IGZpbGUgYnJvd3NlciIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNvcHkgc29tZSBmaWxlcyBmcm9tIHVzYiB0byBsb2NhbCBoYXJkd2FyZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVVNCXy1fcmVhZF9maWxlcyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVVNCXy1fdW1vdW50IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ1c2IgZGlyZWN0b3J5IGluIGZpbGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IG1pc3NlZCIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBsdWcgdXNiIHN0aWNrIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAidmlldyBmaWxlcyBpbiB1c2IgYnkgZmlsZSBicm93c2VyIFxuNC51bnBsdWcgdXNiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJVU0JfLV91bW91bnQiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLlVTQl8tX3dyaXRlX2ZpbGVzIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJjcmVhdGUvY29weSBzdWNjZXNzZnVsbHkiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJwbHVnIHVzYiBzdGljayIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNyZWF0ZSBmaWxlcyBpbiB1c2IgXG40LmNvcHkgc29tZSBmaWxlcyBmcm9tIGxvY2FsIGhhcmR3YXJlIHRvIHVzYiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVVNCXy1fd3JpdGVfZmlsZXMiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLmV0aGVybmV0X3N0YXRpY19pcF9zZXRfaW5fY29ubm1hbiIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJvb3QgdGhlIHN5c3RlbSBhbmQgY2hlY2sgaW50ZXJuZXQgY29ubmVjdGlvbiBpcyBvbiAuICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBjb25ubWFuZC1wcm9wZXJ0aWVzICh1cC1yaWdodCBjb3JuZXIgb24gZGVza3RvcCkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaG9vc2UgIEV0aGVybmV0IGRldmljZSBhbmQgc2V0IGEgdmFsaWQgc3RhdGljIGlwIGFkZHJlc3MgZm9yIGl0LiBcbkZvciBleGFtcGxlLCBpbiBvdXIgaW50ZXJuYWwgbmV0d29yaywgd2UgY2FuIHNldCBhcyBmb2xsb3dpbmc6IFxuaXAgYWRkcmVzczogMTAuMjM5LjQ4Lnh4eCBcbk1hc2s6IDI1NS4yNTUuMjU1LjAgXG5HYXRld2F5IChCcm9hZGNhc3QpOiAxMC4yMzkuNDguMjU1IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgdGhlIE5ldHdvcmsgY29uZmlndXJhdGlvbiB3aXRoIFwiaWZjb25maWdcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlN0YXRpYyBJUCB3YXMgc2V0IHN1Y2Nlc3NmdWxseSAgXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJwaW5nIHRvIGFub3RoZXIgSVAgYWRyZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUGluZyB3b3JrcyBjb3JyZWNsdHlcbiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiZXRoZXJuZXRfc3RhdGljX2lwX3NldF9pbl9jb25ubWFuIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5ldGhlcm5ldF9nZXRfSVBfaW5fY29ubm1hbl92aWFfREhDUCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBjb25ubWFuZC1wcm9wZXJ0aWVzICh1cC1yaWdodCBjb3JuZXIgb24geW91ciBkZXNrdG9wKS4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgaWYgRXRoZXJuZXQgZGV2aWNlIGNhbiB3b3JrIHByb3Blcmx5IHdpdGggc3RhdGljIElQLCBkb2luZyBcInBpbmcgWFhYLlhYWC5YWFguWFhYXCIsIG9uY2UgdGhpcyBpcyBzZXQuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUGluZyBleGVjdXRlZCBzdWNjZXNzZnVsbHkgLiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlRoZW4gY2hvb3NlIERIQ1AgbWV0aG9kIGZvciBFdGhlcm5ldCBkZXZpY2UgaW4gY29ubm1hbmQtcHJvcGVydGllcy4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayB3aXRoICdpZmNvbmZpZ1wiIGFuZCBcInBpbmdcIiBpZiBFdGhlcm5ldCBkZXZpY2UgZ2V0IElQIGFkZHJlc3MgdmlhIERIQ1AuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiRXRoZXJuZXQgZGV2aWNlIGNhbiBnZXQgZHluYW1pYyBJUCBhZGRyZXNzIHZpYSBESENQIGluIGNvbm5tYW5kIC4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImV0aGVybmV0X2dldF9JUF9pbl9jb25ubWFuX3ZpYV9ESENQIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtdG9vbHMuY29ubm1hbl9vZmZsaW5lX21vZGVfaW5fY29ubm1hbi1nbm9tZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBjb25ubWFuLXByb3BlcnRpZXMgYWZ0ZXIgc3lzdGVtIGJvb3RpbmcgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNob29zZSBcIm9mZmxpbmUgbW9kZVwiIGFuZCBjaGVjayB0aGUgY29ubmVjdGlvbiBvZiBhbGwgbmV0d29yayBpbnRlcmZhY2VzICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkFsbCBjb25uZWN0aW9uIHNob3VsZCBiZSBvZmYgYWZ0ZXIgY2xpY2tpbmcgXCJvZmZsaW5lIG1vZGVcIiAuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiY29ubm1hbl9vZmZsaW5lX21vZGVfaW5fY29ubm1hbi1nbm9tZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuWF9zZXJ2ZXJfY2FuX3N0YXJ0X3VwX3dpdGhfcnVubGV2ZWxfNV9ib290IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCB1cCBzeXN0ZW0gd2l0aCBkZWZhdWx0IHJ1bmxldmVsICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiWCBzZXJ2ZXIgY2FuIHN0YXJ0IHVwIHdlbGwgYW5kIGRlc2t0b3AgZGlzcGxheSBoYXMgbm8gcHJvYmxlbSAuICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAidHlwZSBydW5sZXZlbCBhdCBjb21tYW5kIHByb21wdCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk91dHB1dDpOIDUiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlhfc2VydmVyX2Nhbl9zdGFydF91cF93aXRoX3J1bmxldmVsXzVfYm9vdCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuc3RhbmRieSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIGFuZCBsYXVuY2ggdGVybWluYWw7IGNoZWNrIG91dHB1dCBvZiBcImRhdGVcIiBhbmQgbGF1bmNoIHNjcmlwdCBcImNvbnRpbnVlLnNoXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJlY2hvIFwibWVtXCIgPiAvc3lzL3Bvd2VyL3N0YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgc3lzdGVtIGdvIGludG8gUzMgbW9kZSwgbW92ZSBtb3VzZSBvciBwcmVzcyBhbnkga2V5IHRvIG1ha2UgaXQgcmVzdW1lIChvbiBOVUMgcHJlc3MgcG93ZXIgYnV0dG9uKSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIFwiZGF0ZVwiIGFuZCBzY3JpcHQgXCJjb250aW51ZS5zaFwiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgaWYgYXBwbGljYXRpb24gY2FuIHdvcmsgYXMgbm9ybWFsIFxuY29udGludWUuc2ggYXMgYmVsb3c6IFxuIFxuIyEvYmluL3NoIFxuIFxuaT0xIFxud2hpbGUgWyAwIF0gXG5kbyBcbiBlY2hvICRpIFxuIHNsZWVwIDEgXG4gaT0kKChpKzEpKSBcbmRvbmUgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU2NyZWVuIHNob3VsZCByZXN1bWUgYmFjayBhbmQgc2NyaXB0IGNhbiBydW4gY29udGludW91c2x5IGluY3JlbWVudGluZyB0aGUgaSdzIHZhbHVlIGZyb20gd2hlcmUgaXQgd2FzIGJlZm9yZSBnb2luZyB0byBzdGFuZGJ5IHN0YXRlLiBEYXRlIHNob3VsZCBiZSB0aGUgc2FtZSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHRpbWUgaW5jcmVtZW50LiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic3RhbmRieSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuY2hlY2tfQ1BVX3V0aWxpemF0aW9uX2FmdGVyX3N0YW5kYnkiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTdGFydCB1cCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJydW4gXCJ0b3BcIiBjb21tYW5kIGFuZCBjaGVjayBpZiB0aGVyZSBpcyBhbnkgcHJvY2VzcyBlYXRpbmcgQ1BVIHRpbWUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJtYWtlIHN5c3RlbSBpbnRvIHN0YW5kYnkgYW5kIHJlc3VtZSBpdCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInJ1biBcInRvcFwiIGNvbW1hbmQgYW5kIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBkaWZmZXJlbmNlIHdpdGggdGhlIGRhdGEgYmVmb3JlIHN0YW5kYnkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGVyZSBzaG91bGQgYmUgbm8gYmlnIGRpZmZlcmVuY2UgYmVmb3JlL2FmdGVyIHN0YW5kYnkgd2l0aCBcInRvcFwiIC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJjaGVja19DUFVfdXRpbGl6YXRpb25fYWZ0ZXJfc3RhbmRieSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVGVzdF9pZl9MQU5fZGV2aWNlX3dvcmtzX3dlbGxfYWZ0ZXJfcmVzdW1lX2Zyb21fc3VzcGVuZF9zdGF0ZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIGFuZCBsYXVuY2ggdGVybWluYWwiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJlY2hvIFwibWVtXCIgPiAvc3lzL3Bvd2VyL3N0YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgc3lzdGVtIGdvIGludG8gUzMgbW9kZSwgbW92ZSBtb3VzZSBvciBwcmVzcyBhbnkga2V5IHRvIG1ha2UgaXQgcmVzdW1lIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2hlY2sgcGluZyBzdGF0dXMgIFxuXG5Ob3RlOiBUaGlzIFRDIGFwcGx5IG9ubHkgZm9yIGNvcmUtaW1hZ2UtZnVsbC1jbWQgYW5kIGNvcmUtaW1hZ2UtbHNiIC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJwaW5nIHNob3VsZCBhbHdheXMgd29yayBiZWZvcmUvYWZ0ZXIgc3RhbmRieSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVGVzdF9pZl9MQU5fZGV2aWNlX3dvcmtzX3dlbGxfYWZ0ZXJfcmVzdW1lX2Zyb21fc3VzcGVuZF9zdGF0ZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVGVzdF9pZl91c2JfaGlkX2RldmljZV93b3Jrc193ZWxsX2FmdGVyX3Jlc3VtZV9mcm9tX3N1c3BlbmRfc3RhdGUiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHN5c3RlbSBhbmQgbGF1bmNoIHRlcm1pbmFsIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZWNobyBcIm1lbVwiID4gL3N5cy9wb3dlci9zdGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIHN5c3RlbSBnbyBpbnRvIFMzIG1vZGUsIHJlc3VtZSB0aGUgZGV2aWNlIGJ5IHByZXNzaW5nIHRoZSBwb3dlciBidXR0b24gb3IgdXNpbmcgSElEIGRldmljZXMiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJEZXZpY2VzIHJlc3VtZXMgIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2hlY2sgdXNiIG1vdXNlIGFuZCBrZXlib2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlVzYiBtb3VzZSBhbmQga2V5Ym9hcmQgc2hvdWxkIHdvcmsiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRlc3RfaWZfdXNiX2hpZF9kZXZpY2Vfd29ya3Nfd2VsbF9hZnRlcl9yZXN1bWVfZnJvbV9zdXNwZW5kX3N0YXRlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtdG9vbHMuY2xpY2tfdGVybWluYWxfaWNvbl9vbl9YX2Rlc2t0b3AiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzeXN0ZW0gbGF1bmNoIGFuZCBYIHN0YXJ0IHVwLCBjbGljayB0ZXJtaW5hbCBpY29uIG9uIGRlc2t0b3AiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayBpZiBvbmx5IG9uZSB0ZXJtaW5hbCB3aW5kb3cgbGF1bmNoZWQgYW5kIG5vIG90aGVyIHByb2JsZW0gbWV0IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlcmUgc2hvdWxkIGJlIG5vIHByb2JsZW0gYWZ0ZXIgbGF1bmNoaW5nIHRlcm1pbmFsIC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJjbGlja190ZXJtaW5hbF9pY29uX29uX1hfZGVza3RvcCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLkFkZF9tdWx0aXBsZV9maWxlc19pbl9tZWRpYV9wbGF5ZXIiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggbWVkaWEgcGxheWVyIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWRkIG11bHRpcGxlIGZpbGVzKDUgZmlsZXMpIGluIG1lZGlhIHBsYXllciBhdCBzYW1lIHRpbWUgKG9nZyBvciB3YXYpIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHRoZSBzb3VuZC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJNZWRpYSBwbGF5ZXIgc2hvdWxkIGJlIE9LIHdpdGggdGhpcyBhY3Rpb24sIGl0IHJlcHJvZHVjZSBmaWxlcyBjb3JyZWN0bHkuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJBZGRfbXVsdGlwbGVfZmlsZXNfaW5fbWVkaWFfcGxheWVyIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5jaGVja19iYXNoX2luX2ltYWdlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgc3lzdGVtIGlzIHVwLCBjaGVjayBpZiBiYXNoIGNvbW1hbmQgZXhpc3RzIHdpdGggY29tbWFuZCBcIndoaWNoIGJhc2hcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImJhc2ggY29tbWFuZCBzaG91bGQgZXhpc3QgaW4gaW1hZ2UgZ2l2aW5nIHNvbWV0aGluZyBhcyBiZWxvdyAgXCIvYmluL2Jhc2hcIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiY2hlY2tfYmFzaF9pbl9pbWFnZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuTWljcm9TRF8tX19tb3VudCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAic3lzdGVtIG5vdGlmeSB0aGF0IE1pY3JvU0RpcyBhY2Nlc3NpYmxlIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicGx1ZyBNaWNyb1NEIGNhcmQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIk1pY3JvU0RfLV9fbW91bnQiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLk1pY3JvU0RfLV9fcmVhZF9maWxlcyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidmlldy9jb3B5IHN1Y2Nlc3NmdWxseSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBsdWcgTWljcm9TRCBjYXJkIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAidmlldyBmaWxlcyBpbk1pY3JvU0QgYnkgZmlsZSBicm93c2VyIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzb21lIGZpbGVzIGZyb21NaWNyb1NEIHRvIGxvY2FsIGhhcmR3YXJlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJNaWNyb1NEXy1fX3JlYWRfZmlsZXMiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLk1pY3JvU0RfLV9fdW1vdW50IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJNaWNyb1NEIGluIGZpbGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IG1pc3NlZCAuICIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBsdWcgTWljcm9TRCBjYXJkIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAidmlldyBmaWxlcyBpbiBNaWNyb1NEYnkgZmlsZSBicm93c2VyIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAidW5wbHVnIE1pY3JvU0QiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQkJCQkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJNaWNyb1NEXy1fX3Vtb3VudCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuTWljcm9TRF8tX193cml0ZV9maWxlcyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiY3JlYXRlL2NvcHkgc3VjY2Vzc2Z1bGx5IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicGx1ZyBNaWNyb1NEIGNhcmQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjcmVhdGUgZmlsZXMgaW4gTWljcm9TRCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNvcHkgc29tZSBmaWxlcyBmcm9tIGxvY2FsIGhhcmR3YXJlIHRvIE1pY3JvU0QiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIk1pY3JvU0RfLV9fd3JpdGVfZmlsZXMiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy52aWRlb18tX2xpYnZhX2NoZWNrXyhvZ2dfdmlkZW9fcGxheSkiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjaGVjayBpZiBsaWJ2YSBpcyBpbnN0YWxsZWQgb24gc3lzdGVtIChvciBsaWJvZ2cpIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzYW1wbGUgb2dnIGZpbGUgdG8gc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIG1lZGlhIHBsYXllciBjYW4gcGxheSB0aGUgb2dnIGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJvZ2cgZmlsZSBjYW4gYmUgcGxheWVkIHdpdGhvdXQgcHJvYmxlbSB3aGVuIGxpYnZhIGlzIHVzZWQgKG9yIGxpYm9nZykgIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJ2aWRlb18tX2xpYnZhX2NoZWNrXyhvZ2dfdmlkZW9fcGxheSkiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5tZWRpYV9wbGF5ZXJfLV91bmFibGVfdG9fcGxheV9NUEVHLTFfd2l0aG91dF9cImNvbW1lcmNpYWxcIl9mbGFnIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29weSBzYW1wbGUgTVBFRy0xIGZpbGUgdG8gYSBzeXN0ZW0gd2l0aG91dCB0aGUgXCJjb21tZXJjaWFsXCIgZmxhZy4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggbWVkaWEgcGxheWVyIGFuZCBtYWtlIHN1cmUgaXQgY2Fubm90IHBsYXkgdGhlIE1QRUctMSBmaWxlLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk1QRUctMSBmaWxlIGNhbiBub3QgYmUgcGxheWVkIG9uIGltYWdlcyB3aXRob3V0IHRoZSBcImNvbW1lcmNpYWxcIiBmbGFnLiAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIm1lZGlhX3BsYXllcl8tX3VuYWJsZV90b19wbGF5X01QRUctMV93aXRob3V0X1wiY29tbWVyY2lhbFwiX2ZsYWciCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5tZWRpYV9wbGF5ZXJfLV9wbGF5X3ZpZGVvXyhvZ3YpIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzYW1wbGUgb2d2IGZpbGUgdG8gc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIG1lZGlhIHBsYXllciBhbmQgbWFrZSBzdXJlIGl0IGNhbiBwbGF5IHRoZSBvZ3YgZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIm9ndiBmaWxlIGNhbiBiZSBwbGF5ZWQgd2l0aG91dCBwcm9ibGVtIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJtZWRpYV9wbGF5ZXJfLV9wbGF5X3ZpZGVvXyhvZ3YpIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtdG9vbHMubWVkaWFfcGxheWVyXy1fc3RvcC9wbGF5X2J1dHRvbl8ob2d2KSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNvcHkgc2FtcGxlIG9ndiBmaWxlIHRvIHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImxhdW5jaCBtZWRpYSBwbGF5ZXIgY2FuIHBsYXkgdGhlIG9ndiBmaWxlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2xpY2sgXCJzdG9wXCIgYnV0dG9uIHRvIHN0b3AgcGxheWluZyIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNsaWNrIFwic3RhcnRcIiBidXR0b24gdG8gcmVzdW1lIHBsYXlpbmciLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJvZ3YgZmlsZSBjYW4gYmUgc3RhcnQvc3RvcCB3aXRob3V0IHByb2JsZW0iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIm1lZGlhX3BsYXllcl8tX3N0b3AvcGxheV9idXR0b25fKG9ndikiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5hdWRpb18tX3BsYXlfKG9nZylfd2l0aF9IRE1JIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzYW1wbGUgb2dnIGZpbGUgdG8gc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29ubmVjdCBzeXN0ZW0gd2l0aCBhIG1vbml0b3Igd2l0aCBIRE1JIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIG1lZGlhIHBsYXllciBhbmQgcGxheSB0aGUgb2dnIGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJvZ2cgZmlsZSBjYW4gYmUgcGxheWVkIHdpdGhvdXQgcHJvYmxlbSB3aXRoIEhETUkiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImF1ZGlvXy1fcGxheV8ob2dnKV93aXRoX0hETUkiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5hdWRpb18tX3BsYXlfKHdhdilfd2l0aF9IRE1JIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzYW1wbGUgd2F2IGZpbGUgdG8gc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29ubmVjdCBzeXN0ZW0gd2l0aCBhIG1vbml0b3Igd2l0aCBIRE1JIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIG1lZGlhIHBsYXllciBhbmQgcGxheSB0aGUgd2F2IGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ3YXYgZmlsZSBjYW4gYmUgcGxheWVkIHdpdGhvdXQgcHJvYmxlbSwgd2l0aCBIRE1JIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJhdWRpb18tX3BsYXlfKHdhdilfd2l0aF9IRE1JIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtdG9vbHMuR3JhcGhpY3NfLV9BQkFUIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRG93bmxvYWQgQUJBVCB0ZXN0IHN1aXRlIGZyb20gaW50ZXJuYWwgZ2l0IHJlcG9zaXRvcnksIGdpdCBjbG9uZSBnaXQ6Ly90aW5kZXJib3guc2guaW50ZWwuY29tL2dpdC9hYmF0IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQXBwbHkgZm9sbG93aW5nIHBhdGNoIHRvIG1ha2UgaXQgd29yayBvbiB5b2N0byBlbnZpcm9ubWVudCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcIi4vYWJhdC5zaFwiIHRvIHJ1biBBQkFUIHRlc3QgcmVmZXIgdG8gYWJhdC5wYXRjaCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkFsbCBBQkFUIHRlc3Qgc2hvdWxkIHBhc3MuIFxuTm90ZSA6IElmIGJlbG93IDMgZmFpbHMgYXBwZWFycyBpZ25vcmUgdGhlbS4gXG4tIHN0YXJ0IHVwIFggc2VydmVyIGZhaWwuLiBkdWUgaXMgYWxyZWFkeSB1cCBcbi0gbW9kdWxlIFtpbnRlbF9hZ3BdIFxuLSBtb2R1bGUgW2k5MTVdIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJHcmFwaGljc18tX0FCQVQiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5HcmFwaGljc18tX3gxMXBlcmZfLV8yRCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcIngxMXBlcmYgLWFhMTB0ZXh0XCIgYW5kIFwieDExcGVyZiAtcmdiMTB0ZXh0XCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJHZXQgdGhlIEZQUyByZXN1bHQgYW5kIGNvbXBhcmUgaXQgd2l0aCB1cHN0cmVhbSBncmFwaGljcyBkYXRhIG9uIFNhbmR5YnJpZGdlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlcmUgc2hvdWxkIG5vdCBiZSBiaWcgcmVncmVzc2lvbiBiZXR3ZWVuIFlvY3RvIGFuZCB1cHN0cmVhbSBsaW51eCAuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiR3JhcGhpY3NfLV94MTFwZXJmXy1fMkQiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1vZS1jb3JlLlRlc3RfUnVuX0ludGVncml0eV8tX0NoZWNrX3RoYXRfaW1hZ2VfaXNfYnVpbGRhYmxlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiY29ybmVsaXV4LnN0b2ljZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjb3JuZWxpdXguc3RvaWNlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayB0aGF0IGltYWdlIGNhbiBiZSBidWlsdCB1c2luZyBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzOiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIHRoYXQgaW1hZ2UgaXMgYnVpbHQgYnkgYXV0b2J1aWxkZXIgXG5QbGVhc2UgY2hlY2sgYXQ6IGh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vcHViL3JlbGVhc2VzLyBcbkNob29zZSB0aGUgdGFyZ2V0IHJlbGVhc2UgdGhhdCB5b3UgYXJlIHZhbGlkYXRpbmcuICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgaW1hZ2UgeW91cnNlbGYgXG5QcmVmZXJyZWQgdG8gYnVpbGQgYW4gY29yZS1pbWFnZS1zYXRvLWRldiB0byBlYXNlIHRoZSBwcm9jZXNzIG9mIHRoZSBkZXBlbmRlbnQgdGVzdCBjYXNlcyBpbiB0aGlzIHJ1bi4gXG5Ob3RlOiBQbGVhc2Ugc2V0IE1BQ0hJTkUgaW4gY29uZi9sb2NhbC5jb25mICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIklmIGVpdGhlciBtZXRob2QgZmFpbHMsIHRoaXMgdGVzdCBjYXNlIHdpbGwgYmUgZmFpbGVkIGFuZCBkZXBlbmRlbnQgdGVzdCBjYXNlcyB3aWxsIGJlIGJsb2NrZWQuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVGVzdF9SdW5fSW50ZWdyaXR5Xy1fQ2hlY2tfdGhhdF9pbWFnZV9pc19idWlsZGFibGUiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLkNoZWNrX2lmX1NBVEFfZGlza19jYW5fd29ya19jb3JyZWN0bHkiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUnVuIGZkaXNrIGNvbW1hbmQgdG8gY3JlYXRlIHBhcnRpdGlvbiBvbiBTQVRBIGRpc2suICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoZSBTQVRBIGRldmljZSBjYW4gbW91bnQsIHVtb3VudCwgcmVhZCBhbmQgd3JpdGUuICIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIk1vdW50L1Vtb3VudCBcbiAgbWtlMmZzIC9kZXYvc2RhMSBcbiAgbW91bnQgLXQgZXh0MiAvZGV2L3NkYTEgL21udC9kaXNrICBcbiAgdW1vdW50IC9tbnQvZGlzayIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJlYWQvV3JpdGUgKGZpbGVzeXN0ZW0pIFxuICB0b3VjaCAvbW50L2Rpc2svdGVzdC50eHQgXG4gIGVjaG8gYWJjZCA+IC9tbnQvZGlzay90ZXN0LnR4dCBcbiAgY2F0IC9tbnQvZGlzay90ZXN0LnR4dCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJlYWQvV3JpdGUgKHJhdykgXG4gIGRkIGlmPS9kZXYvc2RhMSBvZj0vdG1wL3Rlc3QgYnM9MWsgY291bnQ9MWsgIFxuICBUaGlzIGNvbW1hbmQgd2lsbCByZWFkIDFNQiBmcm9tIC9kZXYvc2RhMSB0byAvdG1wL3Rlc3QiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkNoZWNrX2lmX1NBVEFfZGlza19jYW5fd29ya19jb3JyZWN0bHkiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLkluc3RhbGxfYW5kX2Jvb3RfZnJvbV9VU0ItZHJpdmVfdG9fSERELWRyaXZlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZGF2aWQuaXNyYWVseC5yb2RyaWd1ZXouY2FzdGVsbGFub3NAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGF2aWQuaXNyYWVseC5yb2RyaWd1ZXouY2FzdGVsbGFub3NAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkdldCBhIEhERCBkcml2ZS4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJVc2VyIGNhbiBjaG9vc2UgaW5zdGFsbCBzeXN0ZW0gZnJvbSBVU0Igc3RpY2sgb24gSEREIGRyaXZlIGZyb20gYm9vdCBtZW51IG9yIGNvbW1hbmQgbGluZSBvcHRpb24gXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQbHVnaW4gVVNCIHdoaWNoIGNvbnRhaW5zIGxpdmUgaW1hZ2UgYnVybmVkIChVU0IxKS4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJJbnN0YWxsZWQgc3lzdGVtIGNhbiBib290IHVwLiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvbmZpZ3VyZSBkZXZpY2UgQklPUyB0byBmaXJzdGx5IGJvb3QgZnJvbSBVU0IgaWYgbmVjZXNzYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCB0aGUgZGV2aWNlIGFuZCBzZWxlY3Qgb3B0aW9uIFwiSW5zdGFsbFwiICBmcm9tIGJvb3QgbWVudS4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJNYWtlIHN1cmUgdGhhdCB0aGUgZGl2aWNlIGluIHdoaWNoIGltYWdlIGlzIGdvaW5nIHRvIGJlIGluc3RhbGxlZCBpcyB0aGUgSEREIGRyaXZlLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlByb2NlZWQgdGhyb3VnaCBkZWZhdWx0IGluc3RhbGwgcHJvY2Vzcy4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSZW1vdmUgVVNCMSwgYW5kIHJlYm9vdCBpbnRvIG5ldyBpbnN0YWxsZWQgc3lzdGVtLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiSW5zdGFsbF9hbmRfYm9vdF9mcm9tX1VTQi1kcml2ZV90b19IREQtZHJpdmUiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLkluc3RhbGxfYW5kX2Jvb3RfZnJvbV9VU0ItZHJpdmVfdG9fU0QtZHJpdmUiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJkYXZpZC5pc3JhZWx4LnJvZHJpZ3Vlei5jYXN0ZWxsYW5vc0BpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJkYXZpZC5pc3JhZWx4LnJvZHJpZ3Vlei5jYXN0ZWxsYW5vc0BpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiR2V0IGEgU0QtZHJpdmUgd2l0aCBlbm91Z2ggZnJlZSBzcGFjZSB0byBpbnN0YWxsIGFuIGltYWdlLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlVzZXIgY2FuIGNob29zZSBpbnN0YWxsIHN5c3RlbSBmcm9tIFVTQiBzdGljayBvbiBTRC1kcml2ZSBmcm9tIGJvb3QgbWVudSBvciBjb21tYW5kIGxpbmUgb3B0aW9uLiBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlBsdWdpbiBVU0Igd2hpY2ggY29udGFpbnMgbGl2ZSBpbWFnZSBidXJuZWQgKFVTQjEpLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluc3RhbGxlZCBzeXN0ZW0gY2FuIGJvb3QgdXAuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29uZmlndXJlIGRldmljZSBCSU9TIHRvIGZpcnN0bHkgYm9vdCBmcm9tIFVTQiBpZiBuZWNlc3NhcnkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290IHRoZSBkZXZpY2UgYW5kIHNlbGVjdCBvcHRpb24gXCJJbnN0YWxsXCIgIGZyb20gYm9vdCBtZW51LiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIk1ha2Ugc3VyZSB0aGF0IHRoZSBkZXZpY2UgaW4gd2hpY2ggaW1hZ2UgaXMgZ29pbmcgdG8gYmUgaW5zdGFsbGVkIGlzIHRoZSBTRC1kcml2ZS4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQcm9jZWVkIHRocm91Z2ggZGVmYXVsdCBpbnN0YWxsIHByb2Nlc3MuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVtb3ZlIFVTQjEsIGFuZCByZWJvb3QgaW50byBuZXcgaW5zdGFsbGVkIHN5c3RlbS4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkluc3RhbGxfYW5kX2Jvb3RfZnJvbV9VU0ItZHJpdmVfdG9fU0QtZHJpdmUiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLlRlc3RfYm9vdF9vbl9zZXJpYWxfY29tbXVuaWNhdGlvbl9TRCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIjEuLSBDcmVhdGUgYSB5b2N0byBwcm9qZWN0IGltYWdlIGluIGEgU0QgY2FyZCBcbmV4YW1wbGUgXG4yIC0gQ29uZmlndXJlIGEgY29ubmVjdGlvbiBsaWtlIHNob3duIGluIHRoZSBsaW5rIGF2b2JlOiBcbmh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTWlubm93TWF4X2JvYXJkX1NlcmlhbF92aWRlb19jb25uZWN0aW9uX2d1aWRlIFxuMyAtIFZlcmlmeSB0aGUgTWlub3cgTWF4IGJvYXJkIGlzIGNvbm5lY3RlZCB0byB0aGUgaG9zdCBcbjQgLSBCb290IHRoZSBzeXN0ZW0gdG8gZGVza3RvcCBcbjUgLSBPcGVuIGEgVGVybWluYWwgYW5kIGNoZWNrIHRoZSBJUCAgXG5JbiBUZXJtaW5hbCB0eXBlICRpZmNvbmZpZ1wiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVmVyaWZ5IHlvdSBjYW4gY3JlYXRlIGEgbGl2ZSBpbWFnZSAgXG4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRlc3RfYm9vdF9vbl9zZXJpYWxfY29tbXVuaWNhdGlvbl9TRCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVGVzdF9ib290X29uX3NlcmlhbF9jb21tdW5pY2F0aW9uX0hERCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIjEgLSBDcmVhdGUgYSB5b2N0byBwcm9qZWN0IGltYWdlIGluIGEgSEREIFxuZXhhbXBsZSBcbjIgLSBDb25maWd1cmUgYSBjb25uZWN0aW9uIGxpa2Ugc2hvd24gaW4gdGhlIGxpbmsgYXZvYmU6IFxuaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NaW5ub3dNYXhfYm9hcmRfU2VyaWFsX3ZpZGVvX2Nvbm5lY3Rpb25fZ3VpZGUgXG4zIC0gVmVyaWZ5IHRoZSBNaW5vdyBNYXggYm9hcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBob3N0IFxuNCAtIEJvb3QgdGhlIHN5c3RlbSB0byBkZXNrdG9wIFxuNSAtIE9wZW4gYSBUZXJtaW5hbCBhbmQgY2hlY2sgdGhlIElQICBcbkluIFRlcm1pbmFsIHR5cGUgJGlmY29uZmlnXCI+ICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZlcmlmeSB5b3UgY2FuIGNyZWF0ZSBhIGxpdmUgaW1hZ2UgIFxuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUZXN0X2Jvb3Rfb25fc2VyaWFsX2NvbW11bmljYXRpb25fSEREIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5UZXN0X2Jvb3Rfb25fc2VyaWFsX2NvbW11bmljYXRpb25fVVNCIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAianVhbi5mZXJuYW5kb3gucmFtb3MuZnJheWxlQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiMS4tIENyZWF0ZSBhIHlvY3RvIHByb2plY3QgaW1hZ2UgaW4gYSBVU0IgXG5leGFtcGxlIDxkZCBpZj0gY29yZS1pbWFnZS1zYXRvLXNkay5oZGRpbWcgb2YgPS9kZXYvc2RiPiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZlcmlmeSB5b3UgY2FuIGNyZWF0ZSBhIGxpdmUgaW1hZ2UgIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29uZmlndXJlIGEgY29ubmVjdGlvbiBsaWtlIHNob3duIGluIHRoZSBsaW5rIGF2b2JlOiBcbmh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTWlubm93TWF4X2JvYXJkX1NlcmlhbF92aWRlb19jb25uZWN0aW9uX2d1aWRlXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZpZGVvIHNpZ25hbCBpcyBwcmVzZW50IGFuZCBub3QgZGVsYXllZCBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBWZXJpZnkgdGhlIE1pbm93IE1heCBib2FyZCBpcyBjb25uZWN0ZWQgdG8gdGhlIGhvc3QiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJWZXJpZnkgdGhlIHN5c3RlbSBib290IG9rIGFuZCBubyBlcnJvcnMgYXJlIHByZXNlbnQgXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgQm9vdCB0aGUgc3lzdGVtIHRvIGRlc2t0b3AiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIgQ2hlY2sgdGhhdCBhIHZhbGlkIElQIGlzIHJldHJpZXZlZCIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBPcGVuIGEgVGVybWluYWwgYW5kIGNoZWNrIHRoZSBJUCAgXG5JbiBUZXJtaW5hbCB0eXBlICRpZmNvbmZpZ1wiICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVGVzdF9ib290X29uX3NlcmlhbF9jb21tdW5pY2F0aW9uX1VTQiIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVGVzdF9TZWVrX2Jhcl9hbmRfdm9sdW1lX2NvbnRyb2wiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAianVhbi5mZXJuYW5kb3gucmFtb3MuZnJheWxlQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSdW4gbWVkaWEgcGxheWVyIGFuZCBsb2FkIGEgbWVkaWEgZmlsZSAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJNZWRpYSBwbGF5ZXIgY29ycmVjdGx5IG9wZW4gYXVkaW8vdmlkZW8gZmlsZSBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB0aGF0IHNlZWsgYW5kIHZvbHVtZSBjb250cm9sIGFyZSBwcmVzZW50ICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlNlZWsgYmFyIGFuZCB2b2x1bWUgY29udHJvbCBhcmUgcHJlc2VudCBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB0aGF0IHNlbGVjdGluZyB0aGUgc3BlYWtlciBpY29uIG9wZW5zIHRoZSB2b2x1bWUgY29udHJvbCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZvbHVtZSBjb250cm9sIGJhciBtdXN0IGFwcGVhciBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB5b3UgY2FuIGluY3JlYXNlIGFuZCBkZWNyZWFzZSB2b2x1bWUgbGV2ZWwgd2l0aCB0aGUgdm9sdW1lIGNvbnRyb2wiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJWb2x1bWUgbGV2ZWwgbXVzdCBiZSBpbmNyZWFzZWQgYW5kIGRlY3JlYXNlZCBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIk9ic2VydmUgdGhhdCBzbGlkZXIgb24gdGhlIHNlZWsgYmFyIG1vdmVzIGFsb25nIHdpdGggdGhlIHZpZGVvL2F1ZGlvIHBsYXkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJWaWRlby9hdWRpbyBmaWxlIGNhbiBiZSBwbGF5ZWQgYW5kIHNsaWRlciBtb3ZlcyBhbG9uZyB3aXRoIHRoZSB2aWRlby9hdWRpbyBwbGF5IFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHlvdSBjYW4gbmF2aWdhdGUgdGhlIHZpZGVvIHdpdGggdGhlIHNsaWRlciBiYWNrIGFuZCBmb3J3YXJkIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlIHNsaWRlciBjYW4gbW92ZSBiYWNrIGFuZCBmb3J3YXJkIGluIHRoZSBzZWVrIGJhciBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB0aGF0IHNlZWsgYW5kIHZvbHVtZSBjb250cm9sIGFyZSBmdW5jdGlvbmFsIGluIGZ1bGwgc2NyZWVuIG1vZGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJQcmVzcyB0aGUgZnVsbCBzY3JlZW4gbW9kZSBpY29uLCBzZWVrIGJhciBhbmQgdm9sdW1lIGNvbnRyb2wgbXVzdCB3b3JrIGZpbmUgXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiOCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJWZXJpZnkgdGhhdCBwcmVzc2luZyA8PCBvciA+PiB3aGlsZSBwbGF5aW5nIGEgZmlsZSBtYWtlcyB0aGUgc2xpZGUgZ29lcyBzbG93L2JhY2t3YXJkcyBvciBmYXN0ZXIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJWZXJpZnkgPDwgYW5kID4+IHdvcmtzIGNvcnJlY3RseSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVGVzdF9TZWVrX2Jhcl9hbmRfdm9sdW1lX2NvbnRyb2wiCisgICAgICAgIH0KKyAgICB9CitdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtcWVtdS5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtcWVtdS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNjBhZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1xZW11Lmpzb24KQEAgLTAsMCArMSwyMjIgQEAKK1sKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJic3BzLXFlbXUuYnNwcy10b29scy5xZW11X2Nhbl9iZV9zdGFydGVkX3dpdGhfS1ZNX2VuYWJsZWQiLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCBhIGtlcm5lbCB3aXRoIEtWTSBlbmFibGVkICBcblxuSW4gTG9jYWwuY29uZiBhZGQgIFxuXG5RRU1VX1VTRV9LVk0gPSBcIiR7QCAnaW50ZWwtY29yZWk3LTY0IGludGVsLWNvcmUyLTMyIHFlbXV4ODYgcWVtdXg4Ni02NCcgaWYgb3MuYWNjZXNzKCcvZGV2L2t2bScsIG9zLlJfT0t8b3MuV19PSykgZWxzZSAnJyB9XCIgIFxuXG4gIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiU3RhcnQgcWVtdSB3aXRoIG9wdGlvbiBcImt2bVwiIHdpdGggcnVucWVtdSBcbiAgICBhLiBJZiB5b3Ugc3RhcnQgcWVtdSB3aXRoIGt2bSBmYWlsZWQsIG1heWJlIGl0IGlzIGJlY2F1c2UgaG9zdCBub3QgaW5zdGFsbCBrdm0gYW5kIHZob3N0X25ldCBtb2R1bGUuIEZvbGxvdyBiZWxvdyBsaW5rIHRvIGluc3RhbGwgdGhlbS4gXG4gICAgYi4gdmhvc3RfdGVzdCByZWZlcjogIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvUnVubmluZ19hbl94ODZfWW9jdG9fTGludXhfaW1hZ2VfdW5kZXJfUUVNVV9LVk0gXG4gICAgYy4ga3ZtIHJlZmVyOiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0hvd190b19lbmFibGVfS1ZNX2Zvcl9Qb2t5X3FlbXUiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayBpZiBxZW11IHN0YXJ0cyB1cCBhbmQgaWYga3ZtX2ludGVsIG1vZHVsZSBpcyB1c2VkIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAiSWYga3ZtX2ludGVsIG1vZHVsZSBpcyBub3QgdXNlZCB3aGVuIHN0YXJ0aW5nIHFlbXUsIGl0IHdpbGwgc2hvdyAwIGluIFwiVXNlZCBieVwiIGNvbHVtbiB3aGVuIHlvdSBydW4gXCJsc21vZCB8IGdyZXAga3ZtX2ludGVsXCIgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJLVk0gZW5hYmxlZCB3aXRoIHFlbXUgXG5FeGVjdXRlIFwibHNtb2QgfCBncmVwIGt2bV9pbnRlbFwiIGZyb20geW91ciBob3N0IHR3aWNlLCBiZWZvcmUgYW5kIGFmdGVyIHlvdSBcbnN0YXJ0IHRoZSBxZW11IHdpdGgga3ZtIG9wdGlvbi4gQmVmb3JlIHN0YXJ0LCB0aGUgbnVtYmVyIHNob3VsZCBiZSAwLCBcbmFmdGVyIHN0YXJ0LCB0aGUgbnVtYmVyIHNob3VsZCBiaWdnZXIgdGhhbiAwLiIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogInFlbXVfY2FuX2JlX3N0YXJ0ZWRfd2l0aF9LVk1fZW5hYmxlZCIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAiYnNwcy1xZW11LmJzcHMtdG9vbHMuUG9zdC1pbnN0YWxsYXRpb25fbG9nZ2luZyIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJEb3dubG9hZCB0aGUgcG9reSBzb3VyY2UgYW5kIHNldCBlbnZpcm9ubWVudCBcbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlIC92YXIvbG9nL3Bvc3RpbnN0YWxsLmxvZyBzaG91bGQgZXhpc3QgaW4gdGhlIGZpcnN0IGJvb3QuIFRoZSBjb250ZW50IG9mIHRoaXMgbG9nIGlzIGxpa2UgYmVsb3c6ICBcblxuUnVubmluZyBwb3N0aW5zdCAvZXRjL3JwbS1wb3N0aW5zdHMvbWFuLi4uIFxuTGlzdCBkaXJlY3RvcnkgdG8gY2hlY2sgdGhlIG91dHB1dCBsb2cgXG5iaW4gXG5ib290IFxuZGV2IFxuZXRjIFxuaG9tZSBcbmxpYiBcbmxvc3QrZm91bmQgXG5tZWRpYSBcbm1udCBcbnByb2MgXG5ydW4gXG5zYmluIFxuc3lzIFxudG1wIFxudXNyIFxudmFyIFxuTGlzdCBub25leGlzdCBkaXJlY3RvcnkgdG8gY2hlY2sgdGhlIHN0ZGVyciByZWRpcmVjdGlvbiBsb2cgXG5sczogL25vbmV4aXN0OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byBhIC5iYiBmaWxlLiBGb3IgZXhwYW1wbGUsIG1ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzYuMnAyLmJiOiAgIFxuXG5wa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkgeyAgXG4gICAgICAgIyEvYmluL3NoIC1lICBcbiAgICAgICBpZiBbIHhcIiREXCIgPSBcInhcIiBdOyB0aGVuICBcbiAgICAgICBlY2hvIFwiTGlzdCBkaXJlY3RvcnkgdG8gY2hlY2sgdGhlIG91dHB1dCBsb2dcIiAgXG4gICAgICAgbHMgLyAgXG4gICAgICAgZWNobyBcIkxpc3Qgbm9uZXhpc3QgZGlyZWN0b3J5IHRvIGNoZWNrIHRoZSBzdGRlcnIgcmVkaXJlY3Rpb24gbG9nXCIgIFxuICAgICAgIGxzIC9ub25leGlzdCAgXG4gICAgICAgZWxzZSAgXG4gICAgICAgZXhpdCAxICBcbiAgICAgICBmaSAgXG59ICBcblxuTWFrZSBzdXJlIHRoZSBmZWF0dXJlIFwiZGVidWctdHdlYWtzXCIgaXMgYWRkZWQgaW4gY29uZi9sb2NhbC5jb25mIFxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQWRkIHNzaC1zZXJ2ZXItb3BlbnNzaCB0byBFWFRSQV9JTUFHRV9GRUFUVVJFUyBpbiBsb2NhbC5jb25mIFxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgY29yZS1pbWFnZS1taW5pbWFsIFxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI1IjogeworICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCB1cCB0aGUgaW1hZ2UgYW5kIGNoZWNrIHRoZSAvdmFyL2xvZy9wb3N0aW5zdGFsbC5sb2cgICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAiUG9zdC1pbnN0YWxsYXRpb25fbG9nZ2luZyIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAiYnNwcy1xZW11LmJzcHMtdG9vbHMuQWRkX3VzZXJfd2l0aF9jbGVhcnRleHRfdHlwZV9wYXNzd29yZF9kdXJpbmdfZmlsZXN5c3RlbV9jb25zdHJ1Y3Rpb24iLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJrZS56b3VAd2luZHJpdmVyLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAia2Uuem91QHdpbmRyaXZlci5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkRvd25sb2FkIHRoZSBwb2t5IHNvdXJjZSBhbmQgc2V0IHRoZSBlbnZpcm9ubWVudCAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiTm8gZXJyb3IgZHVyaW5nIGltYWdlIGJ1aWxkaW5nIHByb2NlZHVyZS4gXG4iCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgaW4gY29uZi9sb2NhbC5jb25mICBcblxuSU5IRVJJVCArPSBcImV4dHJhdXNlcnNcIiAgXG5cbkVYVFJBX1VTRVJTX1BBUkFNUyA9IFwiXFwgXG51c2VyYWRkIC1zIC9iaW4vc2ggLVAgJ3Rlc3RlcjMnIHRlc3RlcjM7XFwgXG5cIiAgXG5cblRoZSBhYm92ZSBzZXR0aW5ncyBkbyB0aGUgZm9sbG93aW5nIHRoaW5nczogXG5hLiBBZGQgYSB1c2VyIHRlc3RlcjMgd2l0aCBjbGVhcnRleHQgcGFzc3dvcmQgJ3Rlc3RlcjMnICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSW1hZ2UgY2FuIGJvb3QgdXAgXG4iCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgdGhlIGltYWdlXG4gIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJMb2dpbiB3aXRoIHVzZXIgbmFtZSBcInRlc3RlcjNcIiBhbmQgcGFzc3dvcmQgXCJ0ZXN0ZXIzXCIgIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAiQWRkX3VzZXJfd2l0aF9jbGVhcnRleHRfdHlwZV9wYXNzd29yZF9kdXJpbmdfZmlsZXN5c3RlbV9jb25zdHJ1Y3Rpb24iCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogImJzcHMtcWVtdS5ic3BzLXRvb2xzLnJwbV8tX19pbnN0YWxsX2RlcGVuZGVuY3lfcGFja2FnZSIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkdldCBhIG5vdCBwcmV2aW91c2x5IGluc3RhbGxlZCBSUE0gcGFja2FnZSBvciBidWlsZCBvbmUgb24gbG9jYWwgbWFjaGluZSwgd2hpY2ggc2hvdWxkIGhhdmUgcnVuLXRpbWUgZGVwZW5kZW5jeS5Gb3IgZXhhbXBsZSwgXCJtY1wiIChNaWRuaWdodCBDb21tYW5kZXIsIHdoaWNoIGlzIGEgdmlzdWFsIGZpbGUgbWFuYWdlcikgc2hvdWxkIGRlcGVuZCBvbiBcIm5jdXJzZXMtdGVybWluZm9cIi4gICBcblxuJCBiaXRiYWtlIG1jICBcblxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJDb3B5IHRoZSBwYWNrYWdlIGludG8gYSBzeXN0ZW0gZm9sZGVyIChmb3IgZXhhbXBsZSAvaG9tZS9yb290L3JwbV9wYWNrYWdlcykuICBcblxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSdW4gXCJycG0gLWl2aCBwYWNrYWdlX25hbWVcIiBhbmQgY2hlY2sgdGhlIG91dHB1dCwgZm9yIGV4YW1wbGUgXCJycG0gLWl2aCBtYy5ycG0qXCIgc2hvdWxkIHJlcG9ydCB0aGUgZGVwZW5kZW5jeSBvbiBcIm5jdXJzZXMtdGVybWluZm9cIi5cblxuXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiMyAuIHJwbSBjb21tYW5kIHNob3VsZCByZXBvcnQgbWVzc2FnZSB3aGVuIHNvbWUgUlBNIGluc3RhbGxhdGlvbiBkZXBlbmRzIG9uIG90aGVyIHBhY2thZ2VzLiIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogInJwbV8tX19pbnN0YWxsX2RlcGVuZGVuY3lfcGFja2FnZSIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAiYnNwcy1xZW11LmJzcHMtdG9vbHMuQ2hlY2tfcnBtX2luc3RhbGwvcmVtb3ZhbF9sb2dfZmlsZV9zaXplKGF1dG8pIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiR2V0IHNvbWUgcnBtIG9yIG90aGVyIGtpbmQgb2YgaW5zdGFsbGF0aW9uIHBhY2thZ2VzLiAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU3RlcHMgMS0gNCAobW9yZSB0aGFuIDIuMykgXG5FYWNoIGZpbGUgd2lsbCBvY2N1cHkgYXJvdW5kIDEwTUIsIGFuZCB0aGVyZSBzaG91bGQgYmUgc29tZSBtZXRob2QgdG8ga2VlcCBycG0gbG9nIGluIGEgc21hbGwgc2l6ZS4gKHRoZSBzaXplIG9mIHRoZSBkYiBvZiBSUE1zIG11c3Qgbm90IGJlIHRha2luZyBzbyBtdWNoIHNwYWNlKSAgXG5TdGVwIDUgKGxlc3MgdGhhbiBvciBlcXVhbCB0byAyLjMpXG5UaGUgc2l6ZSBvbiAvdmFyL2xpYi9ycG0vIG11c3Qga2VlcCBhcm91bmQgMzBNQiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzeXN0ZW0gaXMgdXAsIGNoZWNrIHRoZSBzaXplIG9mIGxvZyBmaWxlIG5hbWVkIGFzIFwibG9nLnh4eHh4eFwiIG9uICAvdmFyL2xpYi9ycG0vbG9nICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgc2V2ZXJhbCBpbnN0YWxsL3JlbW92YWwgb2YgcGFja2FnZXMsIHdpdGggZWl0aGVyIG9mIHRoZSBpbnN0YWxsL3JlbW92YWwgY29tbWFuZHMgICAocnBtL3NtYXJ0L3p5cHBlci9kbmYgaW5zdGFsbC9yZW1vdmFsKSwgY2hlY2sgYWdhaW4gdGhlIHNpemUgb2YgbG9nIGZpbGUuICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAiRm9yIHBhY2thZ2VzIGluc3RhbGxhdGlvbiwgdGhlcmUgd2lsbCBiZSBzb21lIGRhdGFiYXNlIGZpbGVzIHVuZGVyIC92YXIvbGliL3JwbS8sIG5hbWVkIGFzIFwiX19kYi54eHhcIiBhbmQgdGhlcmUgd2lsbCBiZSBzb21lIGxvZyBmaWxlcyAgIFxudW5kZXIgL3Zhci9saWIvcnBtL2xvZywgbmFtZWQgYXMgXCJcImxvZy54eHh4eHhcIlwiLiAgIFxuXG5Ob3RlOiBZb3Ugd2lsbCBvbmx5IHNlZSB0aGUgbG9nLnh4eHggb24gL3Zhci9saWIvcnBtL2xvZyBtZW50aW9uZWQgYWJvdmUgaWYgdGhlIHBva3kgdmVyc2lvbiBpcyBtaW5vciB0aGFuIDIuMy5Gb3IgcG9reSAyLjMgb3IgbWFqb3IgdmVyc2lvbnMgdGhpcyBoYXMgYmVlbiBtb2RpZmllZCBhbmQgdGhlIHBhY2thZ2UgUlBNNCBkb2VzIG5vdCBzaG93IHRoZSBsb2dzLnh4eHguIGlmIG1ham9yLCBmb2xsb3cgdGhlIG5leHQgc3RlcC4gIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjUiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSZXBlYXQgc3RlcHMgKDEgYW5kIDMpICBhbmQgY2hlY2sgdGhlIHNpemUgb2YgL3Zhci9saWIvcnBtLyAgXG5cbk1vcmUgaW5mbzogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05MjU5IiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJDaGVja19ycG1faW5zdGFsbC9yZW1vdmFsX2xvZ19maWxlX3NpemUiCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogImJzcHMtcWVtdS5ic3BzLXJ1bnRpbWUub25seV9vbmVfY29ubm1hbmRfaW5fYmFja2dyb3VuZChhdXRvKSIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwicHMgYXV4IHxncmVwIGNvbm5tYW5kXCIgb3IgXCJwcyAtZWYgfCBncmVwIGNvbm5tYW5kXCIgb3IgXCJwcyB8IGdyZXAgY29ubm1hbmRcIiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQ29ubm1hbmQgKGNvbm5lY3Rpb24gbWFuYWdlciwgdXNlZCB0byBtYW5hZ2UgaW50ZXJuZXQgY29ubmVjdGlvbnMpICBzaG91bGQgYmUgc2hvd24gYXMgYW4gYWN0aXZlIHByb2Nlc3MgXG5cbiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSdW4gY29tbWFuZCBcImNvbm5tYW5kXCIgdG8gdHJ5IHRvIGxhdW5jaCB0byBhIHNlY29uZCBjb25ubWFuZCBwcm9jZXNzIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2ssIHdpdGggXCJwc1wiIGNvbm5tYW5kICBpZiBhIHNlY29uZCBjb25ubWFuZCBjYW4gYmUgZ2VuZXJhdGVkICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGNvbm5tYW5kIHByb2Nlc3MgaW5zdGFuY2UgaW4gYmFja2dyb3VuZCAuIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAib25seV9vbmVfY29ubm1hbmRfaW5fYmFja2dyb3VuZCIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAiYnNwcy1xZW11LmJzcHMtcnVudGltZS5YX3NlcnZlcl9jYW5fc3RhcnRfdXBfd2l0aF9ydW5sZXZlbF81X2Jvb3QiLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJib290IHVwIHN5c3RlbSB3aXRoIGRlZmF1bHQgcnVubGV2ZWwgIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlggc2VydmVyIGNhbiBzdGFydCB1cCB3ZWxsIGFuZCBkZXNrdG9wIGRpc3BsYXkgaGFzIG5vIHByb2JsZW0gLiAgXG5cbiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJ0eXBlIHJ1bmxldmVsIGF0IGNvbW1hbmQgcHJvbXB0IiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJPdXRwdXQ6TiA1IgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAiWF9zZXJ2ZXJfY2FuX3N0YXJ0X3VwX3dpdGhfcnVubGV2ZWxfNV9ib290IgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJic3BzLXFlbXUuYnNwcy1ydW50aW1lLmNoZWNrX2Jhc2hfaW5faW1hZ2UiLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzeXN0ZW0gaXMgdXAsIGNoZWNrIGlmIGJhc2ggY29tbWFuZCBleGlzdHMgd2l0aCBjb21tYW5kIFwid2hpY2ggYmFzaFwiIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJiYXNoIGNvbW1hbmQgc2hvdWxkIGV4aXN0IGluIGltYWdlIGdpdmluZyBzb21ldGhpbmcgYXMgYmVsb3cgIFwiL2Jpbi9iYXNoXCIiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJjaGVja19iYXNoX2luX2ltYWdlIgorICAgIH0KKyAgfQorXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnVpbGQtYXBwbGlhbmNlLmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2J1aWxkLWFwcGxpYW5jZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Zjg5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2J1aWxkLWFwcGxpYW5jZS5qc29uCkBAIC0wLDAgKzEsMTIyIEBACitbCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnVpbGQtYXBwbGlhbmNlLmJ1aWxkLWFwcGxpYW5jZS5CaXRiYWtlX2J1aWxkLWFwcGxpYW5jZS1pbWFnZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkdldCBwb2t5IHNvdXJjZSBjb2RlIGFuZCBwcmVwYXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImJpdGJha2UgYnVpbGQtYXBwbGlhbmNlLWltYWdlIGlzIHN1Y2Nlc3NmdWwgICIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNldCBNQUNISU5FIHRvIHFlbXV4ODYgYW5kIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gY29uZi9sb2NhbC5jb25mIDogIFNSQ1JFVl9wbi1idWlsZC1hcHBsaWFuY2UtaW1hZ2UgPSBcIiR7QVVUT1JFVn1cIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcImJpdGJha2UgYnVpbGQtYXBwbGlhbmNlLWltYWdlXCIgXG4gXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkJpdGJha2VfYnVpbGQtYXBwbGlhbmNlLWltYWdlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJidWlsZC1hcHBsaWFuY2UuYnVpbGQtYXBwbGlhbmNlLkJ1aWxkX2NvcmUtaW1hZ2UtbWluaW1hbF93aXRoX2J1aWxkLWFwcGxpYW5jZS1pbWFnZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImNvcm5lbGl1eC5zdG9pY2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY29ybmVsaXV4LnN0b2ljZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgd2l0aCBBVVRPUkVWIG9yIGRvd25sb2FkIGZyb20gQXV0b2J1aWxkZXIgYW4gaW1hZ2UgZm9yIFlvY3RvIEJ1aWxkIEFwcGxpYW5jZS4gICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJvb3QgdGhlIGltYWdlIHVuZGVyIFZNV2FyZSBQbGF5ZXIuICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCBxZW11eDg2IGNvcmUtaW1hZ2UtbWluaW1hbCB1c2luZyBiaXRiYWtlIGNvbW1hbmQgbGluZSBpbiB0aGUgYnVpbGQtYXBwbGlhbmNlLWltYWdlICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggdGhlIGltYWdlIGp1c3QgYnVpbHQgdXNpbmcgcnVucWVtdS4gICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImNvcmUtaW1hZ2UtbWluaW1hbCBzaG91bGQgYnVpbGQgYW5kIGJvb3QuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiQnVpbGRfY29yZS1pbWFnZS1taW5pbWFsX3dpdGhfYnVpbGQtYXBwbGlhbmNlLWltYWdlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJidWlsZC1hcHBsaWFuY2UuYnVpbGQtYXBwbGlhbmNlLkJ1aWxkX2FfaW1hZ2Vfd2l0aG91dF9lcnJvcl8oYWRkZWRfcmVjaXBlKSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNzdG5jckBnbWFpbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzc3RuY3JAZ21haWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBCdWlsZCBBcHBsaWFuY2UiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJVc2VyIGNvdWxkIGJ1aWxkIGEgaW1hZ2Ugd2l0aG91dCBlcnJvciBhbmQgdGhlIGFkZGVkIHBhY2thZ2UgaXMgaW4gdGhlIGltYWdlIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiU2V0IFwiTWFjaGluZVwiIGluIGNvbmYvbG9jYWwuY29uZiwgZm9yIGV4YW1wbGUsIHFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbnN0YWxsIGEgbmV3IHBhY2thZ2UgdG8gdGhlIGltYWdlLCBmb3IgZXhhbXBsZSwgYWNwaWQuIFNldCB0aGUgZm9sbG93aW5nIGxpbmUgaW4gY29uZi9sb2NhbC5jb25mOiBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9IFwiIGFjcGlkXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCBhIGltYWdlIHVzaW5nIGJpdGJha2UgY29tbWFuZCBsaW5lLCBmb3IgZXhhbXBsZSwgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBidWlsZCBmaW5pc2hlZCwgbGF1bmNoIHRoZSBpbWFnZSBhbmQgY2hlY2sgaWYgdGhlIGFkZGVkIHBhY2thZ2UgYnVpbHQgaW50byBpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiQnVpbGRfYV9pbWFnZV93aXRob3V0X2Vycm9yXyhhZGRlZF9yZWNpcGUpLiIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnVpbGQtYXBwbGlhbmNlLmJ1aWxkLWFwcGxpYW5jZS5DcmVhdGVfY29yZS1pbWFnZS1zYXRvLXNka191c2luZ19idWlsZF9hcHBsaWFuY2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCB3aXRoIEFVVE9SRVYgb3IgZG93bmxvYWQgZnJvbSBBdXRvYnVpbGRlciBhbiBpbWFnZSBmb3IgWW9jdG8gQnVpbGQgQXBwbGlhbmNlLiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCB0aGUgaW1hZ2UgdW5kZXIgVk1XYXJlIFBsYXllci4gICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIHFlbXV4ODYgY29yZS1pbWFnZS1zYXRvLXNkayB1c2luZyBiaXRiYWtlIGNvbW1hbmQgbGluZSBpbiB0aGUgYnVpbGQtYXBwbGlhbmNlLWltYWdlICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggdGhlIGltYWdlIGp1c3QgYnVpbHQgdXNpbmcgcnVucWVtdS4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJDcmVhdGVfY29yZS1pbWFnZS1zYXRvLXNka191c2luZ19idWlsZF9hcHBsaWFuY2UiCisgICAgICAgIH0KKyAgICB9CitdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9jcm9wcy5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9jcm9wcy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZjNjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2Nyb3BzLmpzb24KQEAgLTAsMCArMSwyOTQgQEAKK1sKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJjcm9wcy1kZWZhdWx0LmNyb3BzLWRlZmF1bHQuc2RrZXh0X2VTREtfZGV2dG9vbF9idWlsZF9tYWtlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJTVBPUlRBTlQgTk9URTogVGhlIGZpcnN0cyA1IHN0ZXBzIHJlZmVyIHRvIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGVudmlyb25tZW50IHRvIHJ1biB0aGUgcmVzdCBvZiB0aGUgc3RlcHMuIFRoZXNlIG9ubHkgYXBwbHkgZm9yIENST1BTLWVTREsuICAgIFxuXG5cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIEluaXRpYXRlIHlvdXIgQ3JvcHMtZXNkayBlbnZpcm9ubWVudCBhcyBpdCBzYXlzIGluIHdpa2kgaHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL2RvY2tlci13aW4tbWFjLWRvY3Mvd2lraSAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDcmVhdGUgdGhlIGZvbGxvd2luZyB0cmVlIG9mIGZpbGVzICA8Y3JvcHMtZXNkay13b3JrZGlyLXdvcmtzcGFjZT4vc2RrZXh0L2ZpbGVzL215YXBwIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9zZGtleHQvZmlsZXMvbXlhcHBfY21ha2UgICBcblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgQ3JlYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXMgd2l0aGluZyB0aGUgbXlhcHAgZGlyZWN0b3J5ICBteWFwcC5jIGFuZCB0aGUgTWFrZWZpbGUuIFdyaXRlIHRoZSBmb2xsb3dpbmcgaW5zaWRlIG9mIGVhY2ggZmlsZTogXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFxuTWFrZWZpbGUgc2hvdWxkIGNvbnRhaW4gIFxuXG5hbGw6IG15YXBwICBcblxubXlhcHA6IG15YXBwLm8gXG5cdCQoQ0MpICQoTERGTEFHUykgJDwgLW8gJEAgIFxuXG5teWFwcC5vOiBteWFwcC5jICBcblx0JChDQykgJChDRkxBR1MpIC1jICQ8IC1vICRAIFxuXG5jbGVhbjogXG5cdHJtIC1yZiBteWFwcC5vIG15YXBwICBcblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxubXlhcHAuYyAgc2hvbGQgY29udGFpbiAgXG5cblxuI2luY2x1ZGUgPHN0ZGlvLmg+ICAgIFxuXG5pbnQgXG5tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIFxueyBcblx0cHJpbnRmKFwiSGVsbG8gd29ybGRcXG5cIik7IFxuIFxuXHRyZXR1cm4gMDsgXG59IFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiYmUgc3VyZSB0aGF0IHRoZSBpbmRlbnRhdGlvbnMgb24gdGhlIG1ha2VmaWxlIGFyZSB0YWJzIG5vdCBzcGFjZXMuICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIENyZWF0ZSB0aGUgZm9sbG93aW5nIGZpbGVzIHdpdGhpbiB0aGUgbXlhcHBfY21ha2UgZGlyZWN0b3J5IENNYWtlTGlzdHMudHh0IGFuZCBteWFwcC5jLiBXcml0ZSB0aGUgZm9sbG93aW5nIGluc2lkZSBlYWNoIGZpbGU6ICBcblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFxuQ01ha2VMaXN0cy50eHQgc2hvdWxkIGNvbnRhaW46ICBcblxuY21ha2VfbWluaW11bV9yZXF1aXJlZCAoVkVSU0lPTiAyLjYpIFxucHJvamVjdCAobXlhcHApIFxuIyBUaGUgdmVyc2lvbiBudW1iZXIuIFxuc2V0IChteWFwcF9WRVJTSU9OX01BSk9SIDEpIFxuc2V0IChteWFwcF9WRVJTSU9OX01JTk9SIDApICBcblxuIyBhZGQgdGhlIGV4ZWN1dGFibGUgXG5hZGRfZXhlY3V0YWJsZSAobXlhcHAgbXlhcHAuYykgIFxuXG5pbnN0YWxsKFRBUkdFVFMgbXlhcHAgXG5SVU5USU1FIERFU1RJTkFUSU9OIGJpbikgIFxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5teWFwcC5jIHNob3VsZCBjb250YWluOiAgXG5cbiNpbmNsdWRlIDxzdGRpby5oPiAgICAgXG5cbmludCAgXG5tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pICBcbnsgXG5cdHByaW50ZihcIkhlbGxvIHdvcmxkXFxuXCIpOyAgXG5cblx0cmV0dXJuIDA7IFxufSBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJCZSBzdXJlIHRoYXQgdGhlIGluZGVudGF0aW9ucyBvbiBDTWFrZUxpc3RzLnR4dCBpcyB0YWJzIG5vdCBzcGFjZXMuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIHNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXggIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBvdXRwdXQgYSBtZXNzYWdlIHRoYXQgc2F5cyBTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MgZXRjIGV0YyAuLi4gICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIHJ1biBjb21tYW5kIHdoaWNoIGRldnRvb2wgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ0aGlzIHNob3VsZCBvdXRwdXQgdGhlIGRpcmVjdG9yeSBvZiB0aGUgZGV2dG9vbCBzY3JpcHQgYW5kIGl0IHNob3VsZCBiZSB3aXRoaW4gdGhlIHNkayB3b3JrZGlyIHlvdSBhcmUgd29ya2luZyBpbi4gIFxuXG4gICIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYWRkIG15YXBwIDxkaXJlY3Rvcnk+KHRoaXMgaXMgbXlhcHAgZGlyKSAgICBcblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgZGlyZWN0b3J5IHlvdSBzaG91bGQgaW5wdXQgaXMgdGhlIG15YXBwIGRpcmVjdG9yeS4gVGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlY2lwZSBteWFwcC5iYiB1bmRlciA8Y3JvcHMtZXNkay13b3JrZGlyLXdvcmtzcGFjZT4vcmVjaXBlcy9teWFwcC9teWFwcC5iYiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI5IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIGJ1aWxkIG15YXBwICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgY29tcGlsZSBhbiBpbWFnZSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgZGV2dG9vbCByZXNldCBteWFwcCAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBjbGVhbnMgc3lzcm9vdCBvZiB0aGUgbXlhcHAgcmVjaXBlLCBidXQgaXQgbGVhdmVzIHRoZSBzb3VyY2UgdHJlZSBpbnRhY3QuIG1lYW5pbmcgaXQgZG9lcyBub3QgZXJhc2UuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJzZGtleHRfZVNES19kZXZ0b29sX2J1aWxkX21ha2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImNyb3BzLWRlZmF1bHQuY3JvcHMtZGVmYXVsdC5zZGtleHRfZGV2dG9vbF9idWlsZF9lc2RrX3BhY2thZ2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklNUE9SVEFOVCBOT1RFOiBUaGUgZmlyc3RzIDUgc3RlcHMgcmVmZXIgdG8gY29uZmlndXJhdGlvbiBvZiB0aGUgZW52aXJvbm1lbnQgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBzdGVwcy4gVGhlc2Ugb25seSBhcHBseSBmb3IgQ1JPUFMtZVNESy4gICAgXG5cblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgSW5pdGlhdGUgeW91ciBDcm9wcy1lc2RrIGVudmlyb25tZW50IGFzIGl0IHNheXMgaW4gd2lraSBodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyB0cmVlIG9mIGZpbGVzICAgIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9zZGtleHQvZmlsZXMvbXlhcHAvIFxuIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9zZGtleHQvZmlsZXMvbXlhcHBfY21ha2UgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgQ3JlYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXMgd2l0aGluZyB0aGUgbXlhcHAgZGlyZWN0b3J5ICBteWFwcC5jIGFuZCB0aGUgTWFrZWZpbGUuIFdyaXRlIHRoZSBmb2xsb3dpbmcgaW5zaWRlIG9mIGVhY2ggZmlsZTogXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFxuTWFrZWZpbGUgc2hvdWxkIGNvbnRhaW4gIFxuXG5hbGw6IG15YXBwICBcblxubXlhcHA6IG15YXBwLm8gXG5cdCQoQ0MpICQoTERGTEFHUykgJDwgLW8gJEAgXG5cbm15YXBwLm86IG15YXBwLmMgIFxuXHQkKENDKSAkKENGTEFHUykgLWMgJDwgLW8gJEAgXG5cbmNsZWFuOiBcblx0cm0gLXJmIG15YXBwLm8gbXlhcHAgIFxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgXG5teWFwcC5jICBzaG9sZCBjb250YWluICBcblxuI2luY2x1ZGUgPHN0ZGlvLmg+ICAgXG5cbmludCBcbm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgXG57IFxuXHRwcmludGYoXCJIZWxsbyB3b3JsZFxcblwiKTsgXG4gXG5cdHJldHVybiAwOyBcbn0gXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJiZSBzdXJlIHRoYXQgdGhlIGluZGVudGF0aW9ucyBvbiB0aGUgbWFrZWZpbGUgYXJlIHRhYnMgbm90IHNwYWNlcy4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgQ3JlYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXMgd2l0aGluIHRoZSBteWFwcF9jbWFrZSBkaXJlY3RvcnkgQ01ha2VMaXN0cy50eHQgYW5kIG15YXBwLmMuIFdyaXRlIHRoZSBmb2xsb3dpbmcgaW5zaWRlIGVhY2ggZmlsZTogIFxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5DTWFrZUxpc3RzLnR4dCBzaG91bGQgY29udGFpbjogIFxuXG5jbWFrZV9taW5pbXVtX3JlcXVpcmVkIChWRVJTSU9OIDIuNikgXG5wcm9qZWN0IChteWFwcCkgXG4jIFRoZSB2ZXJzaW9uIG51bWJlci4gXG5zZXQgKG15YXBwX1ZFUlNJT05fTUFKT1IgMSkgXG5zZXQgKG15YXBwX1ZFUlNJT05fTUlOT1IgMCkgIFxuXG4jIGFkZCB0aGUgZXhlY3V0YWJsZSBcbmFkZF9leGVjdXRhYmxlIChteWFwcCBteWFwcC5jKSAgXG5cbmluc3RhbGwoVEFSR0VUUyBteWFwcCBcblJVTlRJTUUgREVTVElOQVRJT04gYmluKSAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBcbm15YXBwLmMgc2hvdWxkIGNvbnRhaW46ICBcblxuI2luY2x1ZGU8c3RkaW8uaD4gICAgIFxuXG5pbnQgIFxubWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSAgXG57IFxuXHRwcmludGYoXCJIZWxsbyB3b3JsZFxcblwiKTsgIFxuXG5cdHJldHVybiAwOyBcbn0gXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQmUgc3VyZSB0aGF0IHRoZSBpbmRlbnRhdGlvbnMgb24gQ01ha2VMaXN0cy50eHQgaXMgdGFicyBub3Qgc3BhY2VzLiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBzb3VyY2UgZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgb3V0cHV0IGEgbWVzc2FnZSB0aGF0IHNheXMgU0RLIGVudmlyb25tZW50IG5vdyBzZXQgdXA7IGFkZGl0aW9uYWxseSB5b3UgbWF5IG5vdyBydW4gZGV2dG9vbCB0byBwZXJmb3JtIGRldmVsb3BtZW50IHRhc2tzIGV0YyBldGMgLi4uICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIHJ1biBjb21tYW5kIHdoaWNoIGRldnRvb2wgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIgdGhpcyBzaG91bGQgb3V0cHV0IHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGRldnRvb2wgc2NyaXB0IGFuZCBpdCBzaG91bGQgYmUgd2l0aGluIHRoZSBzZGsgd29ya2RpciB5b3UgYXJlIHdvcmtpbmcgaW4uICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjgiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIGRldnRvb2wgYWRkIG15YXBwIDxkaXJlY3Rvcnk+ICAodGhpcyBpcyBteWFwcCBkaXIpICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIFRoZSBkaXJlY3RvcnkgeW91IHNob3VsZCBpbnB1dCBpcyB0aGUgbXlhcHAgZGlyZWN0b3J5LiBUaGlzIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVjaXBlIG15YXBwLmJiIHVuZGVyIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9yZWNpcGVzL215YXBwL215YXBwLmJiICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjkiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIGRldnRvb2wgcGFja2FnZSBteWFwcCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiB5b3Ugc2hvdWxkIGV4cGVjdCBhIHBhY2thZ2UgY3JlYXRpb24gb2YgbXlhcHAgYW5kIGl0IHNob3VsZCBiZSB1bmRlciB0aGUgIC90bXAvZGVwbG95LyAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgZGV2dG9vbCByZXNldCBteWFwcCAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBjbGVhbnMgc3lzcm9vdCBvZiB0aGUgbXlhcHAgcmVjaXBlLCBidXQgaXQgbGVhdmVzIHRoZSBzb3VyY2UgdHJlZSBpbnRhY3QuIG1lYW5pbmcgaXQgZG9lcyBub3QgZXJhc2UuXG48L3BhY2thZ2VfZm9ybWF0PiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic2RrZXh0X2RldnRvb2xfYnVpbGRfZXNka19wYWNrYWdlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJjcm9wcy1kZWZhdWx0LmNyb3BzLWRlZmF1bHQuc2RrZXh0X2RldnRvb2xfYnVpbGRfY21ha2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklNUE9SVEFOVCBOT1RFOiBUaGUgZmlyc3RzIDUgc3RlcHMgcmVmZXIgdG8gY29uZmlndXJhdGlvbiBvZiB0aGUgZW52aXJvbm1lbnQgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBzdGVwcy4gVGhlc2Ugb25seSBhcHBseSBmb3IgQ1JPUFMtZVNESy4gICAgXG5cblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgSW5pdGlhdGUgeW91ciBDcm9wcy1lc2RrIGVudmlyb25tZW50IGFzIGl0IHNheXMgaW4gd2lraSBodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyB0cmVlIG9mIGZpbGVzICAgIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9zZGtleHQvZmlsZXMvbXlhcHAgXG4gPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3Nka2V4dC9maWxlcy9teWFwcF9jbWFrZSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoaW5nIHRoZSBteWFwcCBkaXJlY3RvcnkgIG15YXBwLmMgYW5kIHRoZSBNYWtlZmlsZS4gV3JpdGUgdGhlIGZvbGxvd2luZyBpbnNpZGUgb2YgZWFjaCBmaWxlOiBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5NYWtlZmlsZSBzaG91bGQgY29udGFpbiAgXG5cbmFsbDogbXlhcHAgIFxuXG5teWFwcDogbXlhcHAubyBcblx0JChDQykgJChMREZMQUdTKSAkPCAtbyAkQCBcblxubXlhcHAubzogbXlhcHAuYyAgXG5cdCQoQ0MpICQoQ0ZMQUdTKSAtYyAkPCAtbyAkQCBcblxuY2xlYW46IFxuXHRybSAtcmYgbXlhcHAubyBteWFwcCAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBcbm15YXBwLmMgIHNob2xkIGNvbnRhaW4gIFxuXG4jaW5jbHVkZSA8c3RkaW8uaD4gICBcblxuaW50IFxubWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSBcbnsgXG5cdHByaW50ZihcIkhlbGxvIHdvcmxkXFxuXCIpOyBcbiBcblx0cmV0dXJuIDA7IFxufSBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImJlIHN1cmUgdGhhdCB0aGUgaW5kZW50YXRpb25zIG9uIHRoZSBtYWtlZmlsZSBhcmUgdGFicyBub3Qgc3BhY2VzLiAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgQ3JlYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXMgd2l0aGluIHRoZSBteWFwcF9jbWFrZSBkaXJlY3RvcnkgQ01ha2VMaXN0cy50eHQgYW5kIG15YXBwLmMuIFdyaXRlIHRoZSBmb2xsb3dpbmcgaW5zaWRlIGVhY2ggZmlsZTogIFxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5DTWFrZUxpc3RzLnR4dCBzaG91bGQgY29udGFpbjogIFxuXG5jbWFrZV9taW5pbXVtX3JlcXVpcmVkIChWRVJTSU9OIDIuNikgXG5wcm9qZWN0IChteWFwcCkgXG4jIFRoZSB2ZXJzaW9uIG51bWJlci4gXG5zZXQgKG15YXBwX1ZFUlNJT05fTUFKT1IgMSkgXG5zZXQgKG15YXBwX1ZFUlNJT05fTUlOT1IgMCkgIFxuXG4jIGFkZCB0aGUgZXhlY3V0YWJsZSBcbmFkZF9leGVjdXRhYmxlIChteWFwcCBteWFwcC5jKSAgXG5cbmluc3RhbGwoVEFSR0VUUyBteWFwcCBcblJVTlRJTUUgREVTVElOQVRJT04gYmluKSAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBcbm15YXBwLmMgc2hvdWxkIGNvbnRhaW46ICBcblxuI2luY2x1ZGUgICAgXG5cbmludCAgXG5tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pICBcbnsgXG5cdHByaW50ZihcIkhlbGxvIHdvcmxkXFxuXCIpOyAgXG5cblx0cmV0dXJuIDA7IFxufSBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJCZSBzdXJlIHRoYXQgdGhlIGluZGVudGF0aW9ucyBvbiBDTWFrZUxpc3RzLnR4dCBpcyB0YWJzIG5vdCBzcGFjZXMuICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIHNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXggIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBvdXRwdXQgYSBtZXNzYWdlIHRoYXQgc2F5cyBTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MgZXRjIGV0YyAuLi4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgcnVuIGNvbW1hbmQgd2hpY2ggZGV2dG9vbCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInRoaXMgc2hvdWxkIG91dHB1dCB0aGUgZGlyZWN0b3J5IG9mIHRoZSBkZXZ0b29sIHNjcmlwdCBhbmQgaXQgc2hvdWxkIGJlIHdpdGhpbiB0aGUgc2RrIHdvcmtkaXIgeW91IGFyZSB3b3JraW5nIGluLiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIGFkZCBteWFwcCA8ZGlyZWN0b3J5PiAgICh0aGlzIGlzIG15YXBwX2NtYWtlIGRpcikgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgZGlyZWN0b3J5IHlvdSBzaG91bGQgaW5wdXQgaXMgdGhlIG15YXBwX2NtYWtlIGRpcmVjdG9yeS4gVGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlY2lwZSBteWFwcC5iYiB1bmRlciA8Y3JvcHMtZXNkay13b3JrZGlyLXdvcmtzcGFjZT4vcmVjaXBlcy9teWFwcC9teWFwcC5iYiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI5IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIGJ1aWxkIG15YXBwICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgY29tcGlsZSBhbiBpbWFnZSAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgZGV2dG9vbCByZXNldCBteWFwcCAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBjbGVhbnMgc3lzcm9vdCBvZiB0aGUgbXlhcHAgcmVjaXBlLCBidXQgaXQgbGVhdmVzIHRoZSBzb3VyY2UgdHJlZSBpbnRhY3QuIG1lYW5pbmcgaXQgZG9lcyBub3QgZXJhc2UuICAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInNka2V4dF9kZXZ0b29sX2J1aWxkX2NtYWtlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJjcm9wcy1kZWZhdWx0LmNyb3BzLWRlZmF1bHQuc2RrZXh0X2V4dGVuZF9hdXRvdG9vbHNfcmVjaXBlX2NyZWF0aW9uIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJTVBPUlRBTlQgTk9URTogVGhlIGZpcnN0cyAyIHN0ZXBzIHJlZmVyIHRvIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGVudmlyb25tZW50IHRvIHJ1biB0aGUgcmVzdCBvZiB0aGUgc3RlcHMuIFRoZXNlIG9ubHkgYXBwbHkgZm9yIENST1BTLWVTREsuICAgIFxuXG5cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5pdGlhdGUgeW91ciBDcm9wcy1lc2RrIGVudmlyb25tZW50IGFzIGl0IHNheXMgaW4gd2lraSBodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBzb3VyY2UgZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIFRoaXMgc2hvdWxkIG91dHB1dCBhIG1lc3NhZ2UgdGhhdCBzYXlzIFNESyBlbnZpcm9ubWVudCBub3cgc2V0IHVwOyBhZGRpdGlvbmFsbHkgeW91IG1heSBub3cgcnVuIGRldnRvb2wgdG8gcGVyZm9ybSBkZXZlbG9wbWVudCB0YXNrcyBldGMgZXRjIC4uLiAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJydW4gY29tbWFuZCB3aGljaCBkZXZ0b29sICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhpcyBzaG91bGQgb3V0cHV0IHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGRldnRvb2wgc2NyaXB0IGFuZCBpdCBzaG91bGQgYmUgd2l0aGluIHRoZSBzZGsgd29ya2RpciB5b3UgYXJlIHdvcmtpbmcgaW4uICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgc2RrLWluc3RhbGwgLXMgbGlieG1sMiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInRoaXMgc2hvdWxkIGluc3RhbGwgbGlieG1sMiAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIGFkZCBsaWJyZGZhICBodHRwczovL2dpdGh1Yi5jb20vcmRmYS9saWJyZGZhICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlY2lwZSBsaWJyZGZhLmJiIHVuZGVyIC9yZWNpcGVzL2xpYnJkZmEvbGlicmRmYS5iYiAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIGJ1aWxkIGxpYnJkZmEgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBjb21waWxlICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgcmVzZXQgbGlicmRmYSAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBjbGVhbnMgc3lzcm9vdCBvZiB0aGUgbGlicmRmYSByZWNpcGUsIGJ1dCBpdCBsZWF2ZXMgdGhlIHNvdXJjZSB0cmVlIGludGFjdC4gbWVhbmluZyBpdCBkb2VzIG5vdCBlcmFzZS4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInNka2V4dF9leHRlbmRfYXV0b3Rvb2xzX3JlY2lwZV9jcmVhdGlvbiIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiY3JvcHMtZGVmYXVsdC5jcm9wcy1kZWZhdWx0LnNka2V4dF9kZXZ0b29sX2tlcm5lbG1vZHVsZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSU1QT1JUQU5UIE5PVEU6IFRoZSBmaXJzdHMgMiBzdGVwcyByZWZlciB0byBjb25maWd1cmF0aW9uIG9mIHRoZSBlbnZpcm9ubWVudCB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHN0ZXBzLiBUaGVzZSBvbmx5IGFwcGx5IGZvciBDUk9QUy1lU0RLLiAgICBcblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgSW5pdGlhdGUgeW91ciBDcm9wcy1lc2RrIGVudmlyb25tZW50IGFzIGl0IHNheXMgaW4gd2lraSBodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXggICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgb3V0cHV0IGEgbWVzc2FnZSB0aGF0IHNheXMgU0RLIGVudmlyb25tZW50IG5vdyBzZXQgdXA7IGFkZGl0aW9uYWxseSB5b3UgbWF5IG5vdyBydW4gZGV2dG9vbCB0byBwZXJmb3JtIGRldmVsb3BtZW50IHRhc2tzIGV0YyBldGMgLi4uICAgXG4gXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJydW4gY29tbWFuZCB3aGljaCBkZXZ0b29sICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhpcyBzaG91bGQgb3V0cHV0IHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGRldnRvb2wgc2NyaXB0IGFuZCBpdCBzaG91bGQgYmUgd2l0aGluIHRoZSBzZGsgd29ya2RpciB5b3UgYXJlIHdvcmtpbmcgaW4uICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYWRkIHY0bDJsb29wYmFjay1kcml2ZXIgIGh0dHBzOi8vZ2l0aHViLmNvbS91bWxhZXV0ZS92NGwybG9vcGJhY2suZ2l0ICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZWNpcGUgdjRsMmxvb3BiYWNrLWRyaXZlci5iYiB1bmRlciA8Y3JvcHMtZXNkay13b3JrZGlyLXdvcmtzcGFjZT4vcmVjaXBlcy92NGwybG9vcGJhY2stZHJpdmVyL3Y0bDJsb29wYmFjay1kcml2ZXIuYmIgIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBidWlsZCB2NGwybG9vcGJhY2stZHJpdmVyICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIGNvbXBpbGUgYW4gaW1hZ2UgICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCByZXNldCB2NGwybG9vcGJhY2stZHJpdmVyICAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBjbGVhbnMgc3lzcm9vdCBvZiB0aGUgdjRsMmxvb3BiYWNrLWRyaXZlciByZWNpcGUsIGJ1dCBpdCBsZWF2ZXMgdGhlIHNvdXJjZSB0cmVlIGludGFjdC4gbWVhbmluZyBpdCBkb2VzIG5vdCBlcmFzZS4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInNka2V4dF9kZXZ0b29sX2tlcm5lbG1vZHVsZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiY3JvcHMtZGVmYXVsdC5jcm9wcy1kZWZhdWx0LnNka2V4dF9yZWNpcGVzX2Zvcl9ub2RlanMiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklNUE9SVEFOVCBOT1RFOiBUaGUgZmlyc3RzIDIgc3RlcHMgcmVmZXIgdG8gY29uZmlndXJhdGlvbiBvZiB0aGUgZW52aXJvbm1lbnQgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBzdGVwcy4gVGhlc2Ugb25seSBhcHBseSBmb3IgQ1JPUFMtZVNESy4gICAgXG5cblxubGV0cyBzYXkgdmFyaWFibGUgbnBtID0gbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9d2luc3Rvbjt2ZXJzaW9uPTIuMi4wICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluaXRpYXRlIHlvdXIgQ3JvcHMtZXNkayBlbnZpcm9ubWVudCBhcyBpdCBzYXlzIGluIHdpa2kgaHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL2RvY2tlci13aW4tbWFjLWRvY3Mvd2lraSAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJzb3VyY2UgZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4ICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIG91dHB1dCBhIG1lc3NhZ2UgdGhhdCBzYXlzIFNESyBlbnZpcm9ubWVudCBub3cgc2V0IHVwOyBhZGRpdGlvbmFsbHkgeW91IG1heSBub3cgcnVuIGRldnRvb2wgdG8gcGVyZm9ybSBkZXZlbG9wbWVudCB0YXNrcyBldGMgZXRjIC4uLiAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJydW4gY29tbWFuZCB3aGljaCBkZXZ0b29sICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInRoaXMgc2hvdWxkIG91dHB1dCB0aGUgZGlyZWN0b3J5IG9mIHRoZSBkZXZ0b29sIHNjcmlwdCBhbmQgaXQgc2hvdWxkIGJlIHdpdGhpbiB0aGUgc2RrIHdvcmtkaXIgeW91IGFyZSB3b3JraW5nIGluLiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiA0YSkgZ2l0IGNsb25lIGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkIGluICBsYXllcnMvYnVpbGQgIGRpcmVjdG9yeSAgIFxuIFxuNGIpIEFkZCBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lIGluIGJibGF5ZXIuY29uZiBhcyBtZW50aW9uZWQgYmVsb3c6ICR7U0RLQkFTRU1FVEFQQVRIfS9sYXllcnMvYnVpbGQvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZSBcXCAgIFxuXG40YykgZGV2dG9vbCBhZGQgXCJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1ucG07dmVyc2lvbj0yLjIuMFwiICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiBUaGlzIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVjaXBlIG5wbS5iYiB1bmRlciAvcmVjaXBlcy9ucG0vbnBtLmJiICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBidWlsZCBucG0gICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgY29tcGlsZSBhbiBpbWFnZSAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIHJlc2V0IG5wbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgY2xlYW5zIHN5c3Jvb3Qgb2YgdGhlIG5wbSByZWNpcGUsIGJ1dCBpdCBsZWF2ZXMgdGhlIHNvdXJjZSB0cmVlIGludGFjdC4gbWVhbmluZyBpdCBkb2VzIG5vdCBlcmFzZS4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInNka2V4dF9yZWNpcGVzX2Zvcl9ub2RlanMiCisgICAgICAgIH0KKyAgICB9CitdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NjkxNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24KQEAgLTAsMCArMSwzMjIgQEAKK1sKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJlY2xpcHNlLXBsdWdpbi5lY2xpcHNlLXBsdWdpbi5zdXBwb3J0X1NTSF9jb25uZWN0aW9uX3RvX1RhcmdldCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluIEVjbGlwc2UsIHN3aWNoIHRvIFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXIgdG8gY3JlYXRlIGEgY29ubmVudGlvbiBiYXNlZWQgb24gU1NILCBpbnB1dCB0aGUgcmVtb3RlIHRhcmdldCBJUCBhZGRyZXNzIGFzIHRoZSBIb3N0IG5hbWUsIG1ha2Ugc3VyZSBkaXNhYmxlIHRoZSBwcm94eSBpbiBXaW5kb3ctPlByZWZlcmVuY2VzLT5HZW5lcmFsLT5OZXR3b3JrIENvbm5lY3Rpb24sIHNldCBEaXJlY3QgYXMgQWN0aXZlIFByb3ZpZGVyIGZpZWxkLiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhlIGNvbm5lY3Rpb24gYmFzZWQgb24gU1NIIGNvdWxkIGJlIHNldCB1cC4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDb25maWd1cmUgY29ubmVjdGlvbiBmcm9tIEVjbGlwc2U6IFJ1bi0+UnVuIENvbmZpZ3VyYXRpb25zLT5DL0MrKyBSZW1vdGUgQXBwbGljYXRpb25cXCAtPk5ldyBDb25uZWN0aW9uLT5HZW5lcmFsLT5TU0ggT25seSAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVGhlbiByaWdodCBjbGljayB0byBjb25uZWN0LCBpbnB1dCB0aGUgdXNlciBJRCBhbmQgcGFzc3dvcmQuICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJleHBhbmQgdGhlIGNvbm5lY3Rpb24sIGl0IHdpbGwgc2hvdyB0aGUgU2Z0cCBGaWxlcyBldGMuICAgXG5OT1RFLiBNaWdodCBuZWVkIHRvIGNoYW5nZSBkcm9wYmVhciB0byBvcGVuc3NoIGFuZCBhZGQgdGhlIHBhY2thZ2Vncm91cC1jb3JlLWVjbGlwc2UtZGVidWcgcmVjaXBlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJzdXBwb3J0X1NTSF9jb25uZWN0aW9uX3RvX1RhcmdldCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiZWNsaXBzZS1wbHVnaW4uZWNsaXBzZS1wbHVnaW4uTGF1bmNoX1FFTVVfZnJvbV9FY2xpcHNlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiU2V0IHRoZSBZb2N0byBBRFQncyB0b29sY2hhaW4gcm9vdCBsb2NhdGlvbiwgc3lzcm9vdCBsb2NhdGlvbiBhbmQga2VybmVsLCBpbiB0aGUgbWVudSBXaW5kb3cgLT4gUHJlZmVyZW5jZXMgLT4gWW9jdG8gQURULiAgIFxuIFxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAid2dldCAgYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZy9wdWIvcmVsZWFzZXMvL21hY2hpbmVzL3FlbXUvcWVtdXg4Ni9xZW11IChleDpjb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYtZGF0ZS1yb290ZnMtdGFyLWJ6MikgXG5zb3VyY2UgL29wdC9wb2t5L3ZlcnNpb24vZW52aXJvbm1lbnQtc2V0dXAtaTU4NS1wb2t5LWxpbnV4ICBcblxuRXh0cmFjdCBxZW11IHdpdGggcnVucWVtdS1leHRyYWN0LXNkayAvaG9tZS91c2VyL2ZpbGUoZXguY29yZS1pbWFnZS1zYXRvLXNkay1xZW11eDg2LmJ6MikgXG4vaG9tZS91c2VyL3FlbXV4ODYtc2F0by1zZGsgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIgUWVtdSBjYW4gYmUgbGF1Y2hlZCBub3JtYWxseS4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIoYSlQb2ludCB0byB0aGUgVG9vbGNoYWluOiAgXG4gXG5JZiB5b3UgYXJlIHVzaW5nIGEgc3RhbmQtYWxvbmUgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgeW91IHNob3VsZCBiZSBwb2ludGluZyB0byB0aGUgL29wdC9wb2t5L3t0ZXN0LXZlcnNpb259IGRpcmVjdG9yeSBhcyBUb29sY2hhaW4gUm9vdCBMb2NhdGlvbi4gVGhpcyBpcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBmb3IgdG9vbGNoYWlucyBpbnN0YWxsZWQgYnkgdGhlIEFEVCBJbnN0YWxsZXIgb3IgYnkgaGFuZC4gSWYgQURUIGlzIGluc3RhbGxlZCBpbiBvdGhlciBsb2NhdGlvbiwgdXNlIHRoYXQgbG9jYXRpb24gYXMgVG9vbGNoYWluIGxvY2F0aW9uLlxuSWYgeW91IGFyZSB1c2luZyBhIHN5c3RlbS1kZXJpdmVkIHRvb2xjaGFpbiwgdGhlIHBhdGggeW91IHByb3ZpZGUgZm9yIHRoZSBUb29sY2hhaW4gUm9vdCBMb2NhdGlvbiBmaWVsZCBpcyB0aGUgWW9jdG8gUHJvamVjdCdzIGJ1aWxkIGRpcmVjdG9yeS4gIFxuIFxuICAgICAgICAgICBFLmc6L2hvbWUvdXNlci95b2N0by9wb2t5L2J1aWxkIFxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiKGIpU3BlY2lmeSB0aGUgU3lzcm9vdCBMb2NhdGlvbjogXG5TeXNyb290IExvY2F0aW9uIGlzIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlIGlzIGNyZWF0ZWQgb24gdGhlIGRldmVsb3BtZW50IHN5c3RlbSBieSB0aGUgQURUIEluc3RhbGxlciAoU1lTUk9PVCBpbiBzdGVwIDIgb2YgdGhlIGNhc2UgQURUIGluc3RhbGxlciBJbnN0YWxsYXRpb24pLiAgXG4gICBcbiAgICAgICAgIExvY2FsIDogICAgIGUuZzogL2hvbWUvdXNlci9xZW11eDg2LXNhdG8tc2RrIFxuVXNpbmcgQURUIDogZS5nIDovaG9tZS91c2VyL3Rlc3QteW9jdG8vcWVtdXg4NiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIihjKVNlbGVjdCB0aGUgVGFyZ2V0IEFyY2hpdGVjdHVyZTogIFxuIFxuVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgdGhlIHR5cGUgb2YgaGFyZHdhcmUgeW91IGFyZSBnb2luZyB0byB1c2Ugb3IgZW11bGF0ZS4gVXNlIHRoZSBwdWxsLWRvd24gVGFyZ2V0IEFyY2hpdGVjdHVyZSBtZW51IHRvIG1ha2UgeW91ciBzZWxlY3Rpb24uICBcbiBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiKGQpIFFFTVU6IFxuU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIHRoZSBRRU1VIGVtdWxhdG9yLiBTcGVjaWZ5IHRoZSBLZXJuZWwgbWF0Y2hpbmcgdGhlIFFFTVUgYXJjaGl0ZWN0dXJlIHlvdSBhcmUgdXNpbmcuIFxuICAgICAgd2dldCAgYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZy9wdWIvcmVsZWFzZXMvL21hY2hpbmVzL3FlbXUvcWVtdXg4Ni9iekltYWdlLXFlbXV4ODYuYmluIFxuICAgICAgZS5nOiAvaG9tZS8kVVNFUi95b2N0by9hZHQtaW5zdGFsbGVyL2Rvd25sb2FkX2ltYWdlL2J6SW1hZ2UtcWVtdXg4Ni5iaW4gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwJCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiKGUpIHNlbGVjdCBPSyB0byBzYXZlIHRoZSBzZXR0aW5ncy4gIFxuXG5cbjE6IEluIHRoZSBFY2xpcHNlIHRvb2xiYXIsIGV4cG9zZSB0aGUgUnVuIC0+IEV4dGVybmFsIFRvb2xzIG1lbnUuIFlvdXIgaW1hZ2Ugc2hvdWxkIGFwcGVhciBhcyBhIHNlbGVjdGFibGUgbWVudSBpdGVtLiAgXG4yOiBTZWxlY3QgeW91ciBpbWFnZSBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lIHRvIGxhdW5jaCB0aGUgZW11bGF0b3IgaW4gYSBuZXcgd2luZG93LiBcbjM6IElmIG5lZWRlZCwgZW50ZXIgeW91ciBob3N0IHJvb3QgcGFzc3dvcmQgaW4gdGhlIHNoZWxsIHdpbmRvdyBhdCB0aGUgcHJvbXB0LiBUaGlzIHNldHMgdXAgYSBUYXAgMCBjb25uZWN0aW9uIG5lZWRlZCBmb3IgcnVubmluZyBpbiB1c2VyLXNwYWNlIE5GUyBtb2RlLiBcbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CQkJCQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkxhdW5jaF9RRU1VX2Zyb21fRWNsaXBzZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiZWNsaXBzZS1wbHVnaW4uZWNsaXBzZS1wbHVnaW4uUmVsb2NhdGFibGVfU0RLXy1fQ18tX0J1aWxkX0hlbGxvX1dvcmxkX0FOU0lfQ19BdXRvdG9vbHNfUHJvamVjdCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBhIFFFTVUgb2YgdGFyZ2V0IGVudmlyb21lbnQuKFJlZmVyZW5jZSB0byBjYXNlIFwiQURUIC0gTGF1bmNoIHFlbXUgYnkgZWNsaXBzZVwiKSAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZWxlY3QgRmlsZSAtPiBOZXcgLT4gUHJvamVjdC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJEb3VibGUgY2xpY2sgQy9DKysuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2xpY2sgQyBvciBDKysgUHJvamVjdCB0byBjcmVhdGUgdGhlIHByb2plY3QuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhwYW5kIFlvY3RvIEFEVCBQcm9qZWN0LiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNlbGVjdCBIZWxsbyBXb3JsZCBBTlNJIEMgQXV0b3Rvb2xzIFByb2plY3QuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUHV0IGEgbmFtZSBpbiB0aGUgUHJvamVjdCBuYW1lLiBEbyBub3QgdXNlIGh5cGhlbnMgYXMgcGFydCBvZiB0aGUgbmFtZS4gXG4gXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiOCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDbGljayBOZXh0LiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI5IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkFkZCBpbmZvcm1hdGlvbiBpbiB0aGUgQXV0aG9yIGFuZCBDb3B5cmlnaHQgbm90aWNlIGZpZWxkcy4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEwIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNsaWNrIEZpbmlzaC4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjExIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklmIHRoZSBcIm9wZW4gcGVyc3BlY3RpdmVcIiBwcm9tcHQgYXBwZWFycywgY2xpY2sgXCJZZXNcIiBzbyB0aGF0IHlvdSBvcGVuIHRoZSBDL0MrKyBwZXJzcGVjdGl2ZS4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIHdpbmRvdywgcmlnaHQgY2xpY2sgdGhlIHByb2plY3QgLT4gUmVjb25maWd1cmUgcHJvamVjdC4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIHdpbmRvdywgcmlnaHQgY2xpY2sgdGhlIHByb2plY3QgLT4gQnVpbGQgcHJvamVjdC4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVW5kZXIgdGhlIFByb2plY3QgZmlsZXMsIGEgbmV3IGZvbGRlciBhcHBlYXJzIGNhbGxlZCBCaW5hcmllcy4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgY29tcGlsYXRpb24gaGF2ZSBiZWVuIHN1Y2Nlc3NmdWwgYW5kIHRoZSBwcm9qZWN0IGJpbmFyeSBoYXZlIGJlZW4gY3JlYXRlZC4gXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmlnaHQgY2xpY2sgaXQgYWdhaW4gYW5kIFJ1biBhcyAtPiBSdW4gQ29uZmlndXJhdGlvbnMuICBcblx0XHRcdFVuZGVyIFJ1biBDb25maWd1cmF0aW9ucyBleHBhbmQgXCJDL0MrKyBSZW1vdGUgQXBwbGljYXRpb25cIi4gQSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VycmVudCBwcm9qZWN0IHNob3VsZCBhcHBlYXIuIENsaWNraW5nIGl0IHdpbGwgZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gXG5cdFx0XHRpbiBcIkMvQysrIEFwcGxpY2F0aW9uXCIgZmllbGQgaW5wdXQgUmVtb3RlIEFic29sdXRlIEZpbGUgcGF0aCBmb3IgQy9DKysgQXBwbGljYXRpb24uIGUuZy46IC9ob21lL3Jvb3QvbXlhcHBsaWNhdGlvbiBcblx0XHRcdEluIFwiQ29ubmVjdGlvblwiIGRyb3AtZG93biBsaXN0IG1ha2Ugc3VyZSBhIFRDRiBjb25uZWN0aW9uIGlzIHNldCB1cCBmb3IgeW91ciB0YXJnZXQuIElmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSBieSBjbGlja2luZyB0aGUgTmV3IGJ1dHRvbi4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAic3RlcCAxNCB0byBzdGVwIDE2IC0+IEJ1aWxkIHN1Y2NlZWQgYW5kIHRoZSBjb25zb2xlIG91dHB1dHMgSGVsbG8gd29ybGQsIHlvdSBjYW4gYWxzbyBjaGVjayB0aGUgb3V0cHV0IG9uIHRhcmdldC4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgYWxsIHNldHRpbmdzIGFyZSBkb25lLCBzZWxlY3QgdGhlIFJ1biBidXR0b24gb24gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgXG5cbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVwZWF0IHRoZSBzdGVwcyAxNC0xNSwgYnV0IGluc3RlYWQgb2YgdXNpbmcgUnVuIENvbmZpZ3VyYXRpb25zIHVzZSBEZWJ1ZyBDb25maWd1cmF0aW9uczogXG5SaWdodCBjbGljayBpdCBhZ2FpbiBhbmQgRGVidWcgYXMgLT4gRGVidWcgQ29uZmlndXJhdGlvbnMgXG5VbmRlciBEZWJ1ZyBDb25maWd1cmF0aW9ucyBleHBhbmQgXCJDL0MrKyBSZW1vdGUgQXBwbGljYXRpb25cIi4gQSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VycmVudCBwcm9qZWN0IHNob3VsZCBhcHBlYXIuIENsaWNraW5nIGl0IHdpbGwgZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gXG5pbiBcIkMvQysrIEFwcGxpY2F0aW9uXCIgZmllbGQgaW5wdXQgUmVtb3RlIEFic29sdXRlIEZpbGUgcGF0aCBmb3IgQy9DKysgQXBwbGljYXRpb24uXG5lLmcuOiAvaG9tZS9yb290L215YXBwbGljYXRpb24gXG5JbiBcIkNvbm5lY3Rpb25cIiBkcm9wLWRvd24gbGlzdCBtYWtlIHN1cmUgYSBUQ0YgY29ubmVjdGlvbiBpcyBzZXQgdXAgZm9yIHlvdXIgdGFyZ2V0LiBJZiBub3QsIGNyZWF0ZSBhIG5ldyBvbmUgYnkgY2xpY2tpbmcgdGhlIE5ldyBidXR0b24gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjE3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIGFsbCBzZXR0aW5ncyBhcmUgZG9uZSwgc2VsZWN0IHRoZSBEZWJ1ZyBidXR0b24gb24gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlJlbG9jYXRhYmxlX1NES18tX0NfLV9CdWlsZF9IZWxsb19Xb3JsZF9BTlNJX0NfQXV0b3Rvb2xzX1Byb2plY3QiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImVjbGlwc2UtcGx1Z2luLmVjbGlwc2UtcGx1Z2luLlJlbG9jYXRhYmxlX1NES18tX0MrK18tX0J1aWxkX0hlbGxvX1dvcmxkX0MrK19BdXRvdG9vbHNfcHJvamVjdCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBhIFFFTVUgb2YgdGFyZ2V0IGVudmlyb21lbnQuKFJlZmVyZW5jZSB0byBjYXNlIFwiQURUIC0gTGF1bmNoIHFlbXUgYnkgZWNsaXBzZVwiKSAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZWxlY3QgRmlsZSAtPiBOZXcgLT4gUHJvamVjdC4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRG91YmxlIGNsaWNrIEMvQysrLiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDbGljayBDIG9yIEMrKyBQcm9qZWN0IHRvIGNyZWF0ZSB0aGUgcHJvamVjdC4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhwYW5kIFlvY3RvIEFEVCBQcm9qZWN0LiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZWxlY3QgSGVsbG8gV29ybGQgQU5TSSBDKysgQXV0b3Rvb2xzIFByb2plY3QuICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlB1dCBhIG5hbWUgaW4gdGhlIFByb2plY3QgbmFtZS4gRG8gbm90IHVzZSBoeXBoZW5zIGFzIHBhcnQgb2YgdGhlIG5hbWUuICBcbiBcbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNsaWNrIE5leHQuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjkiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWRkIGluZm9ybWF0aW9uIGluIHRoZSBBdXRob3IgYW5kIENvcHlyaWdodCBub3RpY2UgZmllbGRzLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDbGljayBGaW5pc2guIFxuMSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJZiB0aGUgXCJvcGVuIHBlcnNwZWN0aXZlXCIgcHJvbXB0IGFwcGVhcnMsIGNsaWNrIFwiWWVzXCIgc28gdGhhdCB5b3Ugb3BlbiB0aGUgQy9DKysgcGVyc3BlY3RpdmUuIFxuMSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbiB0aGUgUHJvamVjdCBFeHBsb3JlciB3aW5kb3csIHJpZ2h0IGNsaWNrIHRoZSBwcm9qZWN0IC0+IFJlY29uZmlndXJlIHByb2plY3QuIFxuMSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbiB0aGUgUHJvamVjdCBFeHBsb3JlciB3aW5kb3csIHJpZ2h0IGNsaWNrIHRoZSBwcm9qZWN0IC0+IEJ1aWxkIHByb2plY3QuIFxuXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidW5kZXIgdGhlIFByb2plY3QgZmlsZXMsIGEgbmV3IGZvbGRlciBhcHBlYXJzIGNhbGxlZCBCaW5hcmllcy4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgY29tcGlsYXRpb24gaGF2ZSBiZWVuIHN1Y2Nlc3NmdWwgYW5kIHRoZSBwcm9qZWN0IGJpbmFyeSBoYXZlIGJlZW4gY3JlYXRlZC4gIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjE0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJpZ2h0IGNsaWNrIGl0IGFnYWluIGFuZCBSdW4gYXMgLT4gUnVuIENvbmZpZ3VyYXRpb25zLiBcblx0XHRcdFVuZGVyIFJ1biBDb25maWd1cmF0aW9ucyBleHBhbmQgXCJDL0MrKyBSZW1vdGUgQXBwbGljYXRpb25cIi4gQSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VycmVudCBwcm9qZWN0IHNob3VsZCBhcHBlYXIuIENsaWNraW5nIGl0IHdpbGwgZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gXG5cdFx0XHRpbiBcIkMvQysrIEFwcGxpY2F0aW9uXCIgZmllbGQgaW5wdXQgUmVtb3RlIEFic29sdXRlIEZpbGUgcGF0aCBmb3IgQy9DKysgQXBwbGljYXRpb24uIGUuZy46IC9ob21lL3Jvb3QvbXlhcHBsaWNhdGlvbiBcblx0XHRcdEluIFwiQ29ubmVjdGlvblwiIGRyb3AtZG93biBsaXN0IG1ha2Ugc3VyZSBhIFRDRiBjb25uZWN0aW9uIGlzIHNldCB1cCBmb3IgeW91ciB0YXJnZXQuIElmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSBieSBjbGlja2luZyB0aGUgTmV3IGJ1dHRvbi4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAic3RlcCAxNCB0byBzdGVwIDE2IC0+IEJ1aWxkIHN1Y2NlZWQgYW5kIHRoZSBjb25zb2xlIG91dHB1dHMgSGVsbG8gd29ybGQsIHlvdSBjYW4gYWxzbyBjaGVjayB0aGUgb3V0cHV0IG9uIHRhcmdldC4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgYWxsIHNldHRpbmdzIGFyZSBkb25lLCBzZWxlY3QgdGhlIFJ1biBidXR0b24gb24gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgXG5cbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVwZWF0IHRoZSBzdGVwcyAxNC0xNSwgYnV0IGluc3RlYWQgb2YgdXNpbmcgUnVuIENvbmZpZ3VyYXRpb25zIHVzZSBEZWJ1ZyBDb25maWd1cmF0aW9uczogXG5cdFx0UmlnaHQgY2xpY2sgaXQgYWdhaW4gYW5kIERlYnVnIGFzIC0+IERlYnVnIENvbmZpZ3VyYXRpb25zIFxuXHRcdFVuZGVyIERlYnVnIENvbmZpZ3VyYXRpb25zIGV4cGFuZCBcIkMvQysrIFJlbW90ZSBBcHBsaWNhdGlvblwiLiBBIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IHByb2plY3Qgc2hvdWxkIGFwcGVhci4gQ2xpY2tpbmcgaXQgd2lsbCBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBcblx0XHRpbiBcIkMvQysrIEFwcGxpY2F0aW9uXCIgZmllbGQgaW5wdXQgUmVtb3RlIEFic29sdXRlIEZpbGUgcGF0aCBmb3IgQy9DKysgQXBwbGljYXRpb24uIFxuXHRcdGUuZy46IC9ob21lL3Jvb3QvbXlhcHBsaWNhdGlvbiBcblx0XHRJbiBcIkNvbm5lY3Rpb25cIiBkcm9wLWRvd24gbGlzdCBtYWtlIHN1cmUgYSBUQ0YgY29ubmVjdGlvbiBpcyBzZXQgdXAgZm9yIHlvdXIgdGFyZ2V0LiBJZiBub3QsIGNyZWF0ZSBhIG5ldyBvbmUgYnkgY2xpY2tpbmcgdGhlIE5ldyBidXR0b24gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjE3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIGFsbCBzZXR0aW5ncyBhcmUgZG9uZSwgc2VsZWN0IHRoZSBEZWJ1ZyBidXR0b24gb24gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlJlbG9jYXRhYmxlX1NES18tX0MrK18tX0J1aWxkX0hlbGxvX1dvcmxkX0MrK19BdXRvdG9vbHNfcHJvamVjdCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiZWNsaXBzZS1wbHVnaW4uZWNsaXBzZS1wbHVnaW4uQnVpbGRfRWNsaXBzZV9QbHVnaW5fZnJvbV9zb3VyY2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJsYXVyZW50aXUuc2VyYmFuQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImxhdXJlbnRpdS5zZXJiYW5AaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNsb25lIGVjbGlwc2UtcG9reSBzb3VyY2UuICAgXG4gICAgXG4gICAgLSBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZWNsaXBzZS1wb2t5ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiRWNsaXBzZSBwbHVnaW4gaXMgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCAgXG5cbkRvY3VtZW50YXRpb24gaXMgdGhlcmUuIEZvciBleGFtcGxlIGlmIHlvdSBoYXZlIHJlbGVhc2UgeW9jdG8tMi4wLjEgeW91IHdpbGwgZm91bmQgb24gICBodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZy9wdWIvcmVsZWFzZXMveW9jdG8tMi4wLjEvZWNsaXBzZS1wbHVnaW4vbWFycy8gIGFyY2hpdmUgd2l0aCBkb2N1bWVudGF0aW9uIGxpa2Ugb3JnLnlvY3RvLmRvYy1kZXZlbG9wbWVudC0kZGF0ZS56aXAgIFxuICBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrb3V0IGNvcnJlY3QgdGFnLiAgXG5cbiAgICAtIGdpdCBjaGVja291dCA8ZWNsaXBzZS12ZXJzaW9uPi88eW9jdG8tdmVyc2lvbj4gXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkFmdGVyIHBsdWdpbiBpcyBidWlsZCB5b3UgbXVzdCBoYXZlICA0IGFyY2hpdmUgaW4gZm9kZXIgc2NyaXB0cyBmcm9tIGVjbGlwc2UtcG9reTogIFxuICAgICAtIG9yZy55b2N0by5iYyAtIG1hcnMtbWFzdGVyLSRkYXRlLnppcCAgXG4gICAgIC0gb3JnLnlvY3RvLmRvYyAtIG1hcnMtbWFzdGVyLSRkYXRlLnppcCAgICAtLT4gZG9jdW1lbnRhdGlvbiAgXG4gICAgIC0gb3JnLnlvY3RvLnNkayAtIG1hcnMtbWFzdGVyLSRkYXRlLnppcCAgICAgICBcbiAgICAgLSBvcmcueW9jdG8uc2RrIC0gbWFycy1tYXN0ZXItJGRhdGUuLWFyY2hpdmUuemlwICAtLT4gcGx1Z2luICAiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJNb3ZlIHRvIHNjcmlwdHMvIGZvbGRlci4gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSdW4gLi9zZXR1cC5zaCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIldoZW4gdGhlIHNjcmlwdCBmaW5pc2hlcywgaXQgcHJvbXB0cyBhIGNvbW1hbmQgdG8gaXNzdWUgdG8gYnVpbGQgdGhlIHBsdWdpbi4gSXQgc2hvdWxkIGxvb2sgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOiAgXG5cbiQgRUNMSVBTRV9IT01FPS9lY2xpcHNlLXBva3kvc2NyaXB0cy9lY2xpcHNlIC4vYnVpbGQuc2ggLyYxIHwgdGVlIC1hIGJ1aWxkLmxvZyAgXG5cbkhlcmUsIHRoZSB0aHJlZSBhcmd1bWVudHMgdG8gdGhlIGJ1aWxkIHNjcmlwdCBhcmUgdGFnIG5hbWUsIGJyYW5jaCBmb3IgZG9jdW1lbnRhdGlvbiBhbmQgcmVsZWFzZSBuYW1lLiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIk9uIGFuIGVjbGlwc2Ugd2l0aG91dCB0aGUgWW9jdG8gUGx1Z2luLCBzZWxlY3QgXCJJbnN0YWxsIE5ldyBTb2Z0d2FyZVwiIGZyb20gSGVscCBwdWxsLWRvd24gbWVudSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNlbGVjdCBBZGQgYW5kIGZyb20gdGhlIGRpYWxvZyBjaG9vc2UgQXJjaGl2ZS4uLiAgTG9vayBmb3IgdGhlICphcmNoaXZlLnppcCBmaWxlIHRoYXQgd2FzIGJ1aWx0IHByZXZpb3VzbHkgd2l0aCB0aGUgYnVpbGQuc2ggc2NyaXB0LiBDbGljayBPSy4gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiOCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZWxlY3QgYWxsIGNvbXBvbmVudHMgYW5kIHByb2NlZWQgd2l0aCBJbnN0YWxsYXRpb24gb2YgcGx1Z2luLiBSZXN0YXJ0aW5nIGVjbGlwc2UgbWlnaHQgYmUgcmVxdWlyZWQuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkJ1aWxkX0VjbGlwc2VfUGx1Z2luX2Zyb21fc291cmNlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJlY2xpcHNlLXBsdWdpbi5lY2xpcHNlLXBsdWdpbi5FY2xpcHNlX1Bva3lfaW5zdGFsbGF0aW9uX2FuZF9zZXR1cCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluc3RhbGwgU0RLICBcblx0YSlEb3dubG9hZCBodHRwczovL2F1dG9idWlsZGVyLnlvY3RvLmlvL3B1Yi9yZWxlYXNlcy8vdG9vbGNoYWluL3g4Nl82NC9wb2t5LWdsaWJjLXg4Nl82NC1jb3JlLVx0aW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0uc2ggIFxuXHRiKVJ1biB0aGUgU0RLIGluc3RhbGxlciBhbmQgYWNjZXB0IHRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5zdGFsbCBcIkVjbGlwc2UgSURFIGZvciBDL0MrKyBEZXZlbG9wZXJzXCIgT3h5Z2VuIHJlbGVhc2UgKDQuNy4wKSAgXG5cdGEpIEdvIHRvIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2Rvd25sb2Fkcy9wYWNrYWdlcy9hbGwsIGNsaWNrIFwiT3h5Z2VuIFJcIiAgXG5cdGIpIENsaWNrIHRvIGRvd25sb2FkIHRoZSBidWlsZCBmb3IgeW91ciBPUyAgXG5cdGMpIENsaWNrIFwiRG93bmxvYWRcIiBidXR0b24gdG8gZG93bmxvYWQgZnJvbSBhIG1pcnJvciAgXG5cdGQpIFJ1biBcInRhciB4ZlwiIHRvIGV4dHJhY3QgdGhlIGRvd25sb2FkZWQgYXJjaGl2ZSAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdCI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbnN0YWxsIFwiRWNsaXBzZSBJREUgZm9yIEMvQysrIERldmVsb3BlcnNcIiBPeHlnZW4gcmVsZWFzZSAoNC43LjApIChDb250aW51ZSkgIFxuXHRlKSBSdW4gXCJlY2xpcHNlL2VjbGlwc2VcIiB0byBzdGFydCBFY2xpcHNlICBcblx0ZikgT3B0aW9uYWwgc3RlcCBmb3IgaG9zdCBtYWNoaW5lIHdpdGhpbiBJbnRlbCBuZXR3b3JrOiBJbiBFY2xpcHNlIHdvcmtiZW5jaCB3aW5kb3csIGdvIHRvIFwiV2luZG93XCIgbWVudSAtPiBcIlByZWZlcmVuY2VzLi4uXCIuICBcblx0ZykgSW4gXCJQcmVmZXJlbmNlc1wiIGRpYWxvZywgZ28gdG8gXCJHZW5lcmFsXCIgLT4gXCJOZXR3b3JrIENvbm5lY3Rpb25zXCIsIHNldCBcIkFjdGl2ZSBQcm92aWRlclwiIHRvIFwiTWFudWFsXCIuIEluIFwiUHJveHkgXHRlbnRyaWVzXCIgdGFibGUsIHNlbGVjdCBIVFRQIGFuZCBjbGljayBcIkVkaXRcIiBhbmQgZW50ZXIgaG9zdCBcInByb3h5LWNoYWluLmludGVsLmNvbVwiIHBvcnQgOTExLCBjbGljayBPSy4gUmVwZWF0IGZvciBIVFRQUyB3aXRoIHBvcnQgOTEyIFxuQ2xpY2sgT0sgdG8gY2xvc2UgXCJQcmVmZXJlbmNlc1wiIGRpYWxvZy4gIFxuXHRoKSBHbyB0byBcIkZpbGVcIiBtZW51IC0+IFwiUmVzdGFydFwiIHRvIHJlc3RhcnQgRWNsaXBzZSBmb3IgcHJveHkgc2V0dGluZ3MgdG8gdGFrZSBlZmZlY3QuICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHQiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5zdGFsbCBFY2xpcHNlIFBva3kgcGx1Z2lucyAgXG5cdGEpIERvd25sb2FkIGh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vcHViL3JlbGVhc2VzLzx5b2N0by12ZXJzaW9uPi9lY2xpcHNlLXBsdWdpbi88ZWNsaXBzZS12ZXJzaW9uPi9vcmcueW9jdG8uc2RrLWRldmVsb3BtZW50LTxkYXRlPi1hcmNoaXZlLnppcCAgIFxuXHRiKSBJbiBFY2xpcHNlIHdvcmtiZW5jaCB3aW5kb3csIGdvIHRvIFwiSGVscFwiIG1lbnUgLT4gXCJJbnN0YWxsIE5ldyBTb2Z0d2FyZS4uLlwiICBcblx0YykgSW4gXCJJbnN0YWxsXCIgZGlhbG9nLCBjbGljayBcIkFkZC4uLlwiIGJ1dHRvbiAgXG5cdGQpIEluIFwiQWRkIFJlcG9zaXRvcnlcIiBkaWFsb2csIGVudGVyIFwiRWNsaXBzZSBQb2t5XCIgZm9yIChyZXBvc2l0b3J5KSBOYW1lLCBjbGljayBcIkFyY2hpdmUuLi5cIiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5zdGFsbCBFY2xpcHNlIFBva3kgcGx1Z2lucyAoY29udGludWUpICBcblx0ZSkgSW4gXCJSZXBvc2l0b3J5IGFyY2hpdmVcIiBicm93c2UgZGlhbG9nLCBzZWxlY3QgdGhlIGRvd25sb2FkZWQgRWNsaXBzZSBQb2t5IHJlcG9zaXRvcnkgYXJjaGl2ZSAgXG5cdGYpIEJhY2sgaW4gXCJBZGQgUmVwb3NpdG9yeVwiIGRpYWxvZywgY2xpY2sgXCJPS1wiICBcblx0ZykgQmFjayBpbiBcIkluc3RhbGxcIiBkaWFsb2csIG1ha2Ugc3VyZSBcIldvcmsgd2l0aDpcIiBpcyBzZXQgdG8gXCJFY2xpcHNlIFBva3lcIiByZXBvc2l0b3J5LCB0aWNrIFwiWW9jdG8gUHJvamVjdCBcdERvY3VtZW50YXRpb24gUGx1Zy1pblwiIGFuZCBcIllvY3RvIFByb2plY3QgU0RLIFBsdWctaW5cIiwgY2xpY2sgXCJOZXh0ID5cIiBhbmQgdmVyaWZ5IHBsdWdpbnMvZmVhdHVyZXMgbmFtZS92ZXJzaW9uLCBcdGNsaWNrIFwiTmV4dCA+XCIgYW5kIGFjY2VwdCBsaWNlbnNlIGFncmVlbWVudCwgY2xpY2sgXCJGaW5pc2hcIiAgXG5cdGgpIElmIFwiU2VjdXJpdHkgV2FybmluZ1wiIGRpYWxvZyBhcHBlYXJzLCBjbGljayBcIk9LXCIgdG8gaW5zdGFsbCB1bnNpZ25lZCBjb250ZW50LiAgXG5cdGkpIEluIFwiU29mdHdhcmUgVXBkYXRlc1wiIGRpYWxvZywgY2xpY2sgXCJZZXNcIiB0byByZXN0YXJ0IEVjbGlwc2UgdG8gY29tcGxldGUgRWNsaXBzZSBQb2t5IHBsdWdpbnMgaW5zdGFsbGF0aW9uLiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZXR1cCBFY2xpcHNlIFBva3kgdG8gdXNlIFNESyAgXG5cdGEpIEluIEVjbGlwc2Ugd29ya2JlbmNoIHdpbmRvdywgZ28gdG8gXCJXaW5kb3dcIiBtZW51IC0+IFwiUHJlZmVyZW5jZXNcIi4gIFxuXHRiKSBJbiBcIlByZWZlcmVuY2VzXCIgd2luZG93LCBnbyB0byBcIllvY3RvIFByb2plY3QgU0RLXCIsIGluIFwiQ3Jvc3MgQ29tcGlsZXIgT3B0aW9uc1wiIGZyYW1lLCBzZWxlY3QgXCJTdGFuZGFsb25lIHByZS1cdGJ1aWx0IHRvb2xjaGFpblwiLiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiRWNsaXBzZSBQb2t5IHBsdWdpbnMgaW5zdGFsbGVkIGFuZCBydW5uaW5nIHN1Y2Nlc3NmdWxseSwgZS5nLiBvYnNlcnZlIHRoYXQgXCJZb2N0byBQcm9qZWN0IFRvb2xzXCIgbWVudSBpcyBhdmFpbGFibGUgb24gRWNsaXBzZSB3b3JrYmVuY2ggd2luZG93LiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiRWNsaXBzZV9Qb2t5X2luc3RhbGxhdGlvbl9hbmRfc2V0dXAiCisgICAgICAgIH0KKyAgICB9CitdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9rZXJuZWwtZGV2Lmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2tlcm5lbC1kZXYuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTNiNGRkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9rZXJuZWwtZGV2Lmpzb24KQEAgLTAsMCArMSwyMDAgQEAKK1sKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2RlZmNvbmZpZyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfNyAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfNyIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfNyIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9kZWZjb25maWciCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImtlcm5lbC1jb25maWd1cmF0aW9uLmtlcm5lbC1jb25maWd1cmF0aW9uLlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfZGVmY29uZmlnK2ZyYWdtZW50cyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfOCAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfOCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfOCIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9kZWZjb25maWcrZnJhZ21lbnRzIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X0FwcGx5aW5nX3BhdGNoZXMiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJGb2xsb3cgdGhlIFNldCBVcCBwcm9jZWR1cmUgdG8gY29tcGxldGUgdGhlIGNvbW1vbiBhbmQgc3BlY2lmaWMgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyB0ZXN0IGNhc2UuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU2V0dXAgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNQcmVyZXF1aXNpdGVzICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeGVjdXRlIHRoZSB0ZXN0IGNhc2Ugc3RlcHMgYXNkb2N1bWVudGVkIG9uIHRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCIgd2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTdGVwcyIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHMiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfQXBwbHlpbmdfcGF0Y2hlcyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAia2VybmVsLWNvbmZpZ3VyYXRpb24ua2VybmVsLWNvbmZpZ3VyYXRpb24uVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9saW51eC15b2N0by1sb2NhbC1zb3VyY2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJGb2xsb3cgdGhlIFNldCBVcCBwcm9jZWR1cmUgdG8gY29tcGxldGUgdGhlIGNvbW1vbiBhbmQgc3BlY2lmaWMgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyB0ZXN0IGNhc2UuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU2V0dXAgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNQcmVyZXF1aXNpdGVzXzIgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4ZWN1dGUgdGhlIHRlc3QgY2FzZSBzdGVwcyBhc2RvY3VtZW50ZWQgb24gdGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIiB3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1N0ZXBzXzIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJSZXZpZXcgZXhwZWN0ZWQgcmVzdWx0cyBvbiB0aGV0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wid2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNFeHBlY3RlZF9SZXN1bHRzXzIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfbGludXgteW9jdG8tbG9jYWwtc291cmNlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2xpbnV4LXlvY3RvLWN1c3RvbS1sb2NhbC1zb3VyY2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJGb2xsb3cgdGhlIFNldCBVcCBwcm9jZWR1cmUgdG8gY29tcGxldGUgdGhlIGNvbW1vbiBhbmQgc3BlY2lmaWMgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyB0ZXN0IGNhc2UuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU2V0dXAgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNQcmVyZXF1aXNpdGVzXzMgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4ZWN1dGUgdGhlIHRlc3QgY2FzZSBzdGVwcyBhc2RvY3VtZW50ZWQgb24gdGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIiB3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1N0ZXBzXzMiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJSZXZpZXcgZXhwZWN0ZWQgcmVzdWx0cyBvbiB0aGV0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wid2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNFeHBlY3RlZF9SZXN1bHRzXzMiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfbGludXgteW9jdG8tY3VzdG9tLWxvY2FsLXNvdXJjZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAia2VybmVsLWNvbmZpZ3VyYXRpb24ua2VybmVsLWNvbmZpZ3VyYXRpb24uVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9yZWNpcGUtc3BhY2VfbWV0YSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfNSAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfNSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfNSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9yZWNpcGUtc3BhY2VfbWV0YSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAia2VybmVsLWNvbmZpZ3VyYXRpb24ua2VybmVsLWNvbmZpZ3VyYXRpb24uVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9FeHRlcm5hbF9zb3VyY2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJGb2xsb3cgdGhlIFNldCBVcCBwcm9jZWR1cmUgdG8gY29tcGxldGUgdGhlIGNvbW1vbiBhbmQgc3BlY2lmaWMgcHJlcmVxdWlzaXRlcyBmb3IgdGhpcyB0ZXN0IGNhc2UuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU2V0dXAgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNQcmVyZXF1aXNpdGVzXzYgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4ZWN1dGUgdGhlIHRlc3QgY2FzZSBzdGVwcyBhc2RvY3VtZW50ZWQgb24gdGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIiB3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1N0ZXBzXzYiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJSZXZpZXcgZXhwZWN0ZWQgcmVzdWx0cyBvbiB0aGV0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wid2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNFeHBlY3RlZF9SZXN1bHRzXzYiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfRXh0ZXJuYWxfc291cmNlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2J1aWxkaW5nX2V4dGVybmFsX21vZHVsZXMoaGVsbG8tbW9kKSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfMTAgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4ZWN1dGUgdGhlIHRlc3QgY2FzZSBzdGVwcyBhc2RvY3VtZW50ZWQgb24gdGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIiB3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1NldHVwXzEwIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUmV2aWV3IGV4cGVjdGVkIHJlc3VsdHMgb24gdGhldGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIndpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjRXhwZWN0ZWRfUmVzdWx0c18xMCIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9idWlsZGluZ19leHRlcm5hbF9tb2R1bGVzKGhlbGxvLW1vZCkiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImtlcm5lbC1jb25maWd1cmF0aW9uLmtlcm5lbC1jb25maWd1cmF0aW9uLlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfbG9jYWxfcGFyYWxsZWxfbWV0YSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2lvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNQcmVyZXF1aXNpdGVzXzQgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4ZWN1dGUgdGhlIHRlc3QgY2FzZSBzdGVwcyBhc2RvY3VtZW50ZWQgb24gdGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIiB3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1N0ZXBzXzQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJSZXZpZXcgZXhwZWN0ZWQgcmVzdWx0cyBvbiB0aGV0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wid2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNFeHBlY3RlZF9SZXN1bHRzXzQiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfbG9jYWxfcGFyYWxsZWxfbWV0YSIKKyAgICAgICAgfQorICAgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL29lLWNvcmUuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvb2UtY29yZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTNkODQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL29lLWNvcmUuanNvbgpAQCAtMCwwICsxLDI2MCBAQAorWworICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogIm9lLWNvcmUuc2NyaXB0cy5Vc2Vfc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS5weV90b19nZW5lcmF0ZV9idWlsZF9wcm9maWxlcyIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJ1biBhIGJ1aWxkIGZvciBhIHJlY2lwZSAoZS5nLiBjb3JlLWltYWdlLW1pbmltYWwpIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIHRoZSBwcm9maWxpbmcgc2NyaXB0LCAuLi9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpLnB5ICB0bXAvYnVpbGRzdGF0cy8gICAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB0aGUgcmVzdWx0cyAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoZSBzY3JpcHRzIGdlbmVyYXRlcyBzdmcgZmlsZXMgd2l0aCB0aGUgcHJvZmlsaW5nIHJlc3VsdHMgLiAiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJVc2Vfc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS5weV90b19nZW5lcmF0ZV9idWlsZF9wcm9maWxlcyIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAib2UtY29yZS5zY3JpcHRzLkNyb3NzdGFwX3NjcmlwdF9jaGVjayIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkNyZWF0ZSB0aGUgdHJhY2Vfb3Blbi5zdHAgc2NyaXB0IGFzIGZvbGxvd3MgaW4gdGhlIGhvc3QgbWFjaGluZTogIFxuXG5cbnByb2JlIHN5c2NhbGwub3BlbiAgICAgXG5cbnsgIFxuXG5cbiAgICAgICAgcHJpbnRmIChcIiVzKCVkKSBvcGVuICglcylcXG5cIiwgZXhlY25hbWUoKSwgcGlkKCksIGFyZ3N0cikgIFxuXG59ICBcblxuXG5cbmlmIHRoZSBhYm92ZSBmYWlsZWQsIHRoZW4gY3JlYXRlIHRoZSBiZWxvdyBpbnN0ZWFkLiAgXG5cbnByb2JlIHN5c2NhbGwub3BlbiBcbnsgXG4gIHByaW50ZiAoXCIlcyglZCkgb3BlblxcblwiLCBleGVjbmFtZSgpLCBwaWQoKSkgXG5cbn0gIFxuIFxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQWRkICd0b29scy1wcm9maWxlJyBhbmQgJ3NzaC1zZXJ2ZXItb3BlbnNzaCcgdG8gRVhUUkFfSU1BR0VfRkVBVFVSRVMgaW4gbG9jYWwuY29uZiBcblxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCBhIGNvcmUtaW1hZ2UtbWluaW1hbCBpbWFnZSwgYnVpbGQgc3lzdGVtdGFwLW5hdGl2ZS4gU3RhcnQgdGhlIGltYWdlIHVuZGVyIHFlbXUuIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJNYWtlIHN1cmUgdGhhdCB0aGUgc3NoIHNlcnZpY2UgaXMgc3RhcnRlZCBvbiB0aGUgUWVtdSBtYWNoaW5lLiBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI1IjogeworICAgICAgICAgICJhY3Rpb24iOiAiRnJvbSB0aGUgaG9zdCBtYWNoaW5lIHBva3kgYnVpbGRfZGlyLCBydW4gXCJjcm9zc3RhcCByb290QDE5Mi4xNjguNy4yIHRyYWNlX29wZW4uc3RwXCIuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI2IjogeworICAgICAgICAgICJhY3Rpb24iOiAiSW4gUUVNVSwgdHJ5IHRvIG9wZW4gc29tZSBhcHBsaWNhdGlvbnMsIHN1Y2ggYXMgb3BlbiBhIHRlcm1pbmFsLCBpbnB1dCBzb21lIGNvbW1hbmQsICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI3IjogeworICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgdGhlIGhvc3QgbWFjaGluZSwgXCJjcm9zc3RhcFwiIGhhcyByZWxhdGVkIG91dHB1dC4gXG5cblxuXG5OT1RFOiAgRG8gbm90IGJ1aWxkIHRoZSBrZXJuZWwgZnJvbSBzaGFyZWQgc3RhdGUoc3N0YXRlLWNhY2hlKSBmb3IgdGhpcyB0byB3b3JrLiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlIHNjcmlwdCBzaG91bGQgc3VjY2Vzc2Z1bGx5IGNvbm5lY3QgdG8gdGhlIHFlbXUgbWFjaGluZSBhbmQgdGhlcmUgXG5zaG91bGQgYmUgcHJlc2VudGVkIGEgbGlzdCBvZiBzZXJ2aWNlcyhwaWQsIHByb2Nlc3MgbmFtZSkgd2hpY2ggcnVuIG9uIFxudGhlIHFlbXUgbWFjaGluZS4gIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAiQ3Jvc3N0YXBfc2NyaXB0X2NoZWNrIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJvZS1jb3JlLnNjcmlwdHMuTGlzdF9hbGxfdGhlX1BBQ0tBR0VDT05GSUcnc19mbGFncyIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICIgRG93bmxvYWQgdGhlIHBva3kgc291cmNlIGFuZCBzZXR1cCB0aGUgZW52aXJvbm1lbnQuICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcIi4uL3NjcmlwdHMvY29udHJpYi9saXN0LXBhY2thZ2Vjb25maWctZmxhZ3MucHlcIiAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluIHN0ZXAgMiwgd2lsbCBsaXN0IGF2YWlsYWJsZSBwa2dzIHdoaWNoIGhhdmUgUEFDS0FHRUNPTkZJRyBmbGFnczogIFxuUEFDS0FHRSBOQU1FIChvciBSRUNJUEUgTkFNRSkgICAgICAgICAgIFBBQ0tBR0VDT05GSUcgRkxBR1MgIFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIFxuYWxzYS10b29scy0xLjAuMjYuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHZhbCBndGsrICBcbmF2YWhpLXVpLTAuNi4zMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHR2YWwgcHl0aG9uICBcbmJsdWV6NC00LjEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsc2EgZGVmYXVsdHZhbCBwaWUgIFxuIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcIi4uL3NjcmlwdHMvY29udHJpYi9saXN0LXBhY2thZ2Vjb25maWctZmxhZ3MucHkgLWZcIiAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluIHN0ZXAgMywgd2lsbCBsaXN0IGF2YWlsYWJsZSBQQUNLQUdFQ09ORklHIGZsYWdzIGFuZCBhbGwgYWZmZWN0ZWQgcGtncyAgXG5QQUNLQUdFQ09ORklHIEZMQUcgICAgICAgUEFDS0FHRSBOQU1FUyAob3IgUkVDSVBFIE5BTUVTKSAgXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIFxuM2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5tYW4tMS4xNiAgXG4gICAgICAgIFxuYXZhaGkgICAgICAgICAgICAgICAgICAgICAgICBjdXBzLTEuNi4zICBwdWxzZWF1ZGlvLTQuMCAgXG5iZWVjcnlwdCAgICAgICAgICAgICAgICAgICBycG0tNS40LjkgIHJwbS1uYXRpdmUtNS40LjkgIFxuIgorICAgICAgICB9LAorICAgICAgICAiNCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcIi4uL3NjcmlwdHMvY29udHJpYi9saXN0LXBhY2thZ2Vjb25maWctZmxhZ3MucHkgLWFcIiAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluIHN0ZXAgNCwgd2lsbCBsaXN0IGFsbCBwa2dzIGFuZCBQQUNLQUdFQ09ORklHIGluZm9ybWF0aW9uOiAgXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgXG5ndGsrLTIuMjQuMTggIFxuL2hvbWUvamlhaG9uZ3h1L3lvY3RvL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjE4LmJiICBcblBBQ0tBR0VDT05GSUcgeDExICBcblBBQ0tBR0VDT05GSUdbeDExXSAtLXdpdGgteD15ZXMgLS13aXRoLWdka3RhcmdldD14MTEsLS13aXRoLXg9bm8sJHtYMTFERVBFTkRTfSAgXG54Zjg2LXZpZGVvLWludGVsLTIuMjEuOSAgXG4vaG9tZS9qaWFob25neHUveW9jdG8vcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF8yLjIxLjkuYmIgIFxuUEFDS0FHRUNPTkZJRyBOb25lICBcblBBQ0tBR0VDT05GSUdbeHZtY10gLS1lbmFibGUteHZtYywtLWRpc2FibGUteHZtYyxsaWJ4dm1jICBcblBBQ0tBR0VDT05GSUdbc25hXSAtLWVuYWJsZS1zbmEsLS1kaXNhYmxlLXNuYSAgXG4iCisgICAgICAgIH0sCisgICAgICAgICI1IjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiLi4vc2NyaXB0cy9jb250cmliL2xpc3QtcGFja2FnZWNvbmZpZy1mbGFncy5weSAtcFwiICAgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJJbiBzdGVwIDUsIHdpbGwgbGlzdCBwa2dzIHdpdGggcHJlZmVycmVkIHZlcnNpb246ICBcblBBQ0tBR0UgTkFNRSAob3IgUkVDSVBFIE5BTUUpICAgICAgICAgICAgICBQQUNLQUdFQ09ORklHIEZMQUdTICBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgXG5hbHNhLXRvb2xzLTEuMC4yNi4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHR2YWwgZ3RrKyAgXG5hdmFoaS11aS0wLjYuMzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0dmFsIHB5dGhvbiAgXG5ibHVlejQtNC4xMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYSBkZWZhdWx0dmFsIHBpZSAgXG5ibHVlejUtNS43ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYSBkZWZhdWx0dmFsIG9iZXgtcHJvZmlsZXMgIFxuXG5cblxuICIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogIkxpc3RfYWxsX3RoZV9QQUNLQUdFQ09ORklHJ3NfZmxhZ3MiCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogIm9lLWNvcmUuYml0YmFrZS5UZXN0X2JpdGJha2VfbWVudWNvbmZpZyIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiY2xvbmUgcG9reSAgXG4gXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJjZCBwb2t5ICAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogInNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiAmJiBjZCBidWlsZCAgICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAic2V0IGJlbG93IGluIGxvY2FsLmNvbmYgICBcblxuICBcdE1BQ0hJTkUgPSBcInFlbXV4ODZcIiAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJpdGJha2UgbGludXgteW9jdG8gLWMga2VybmVsX2NvbmZpZ21lIC1mICAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJpdGJha2UgbGludXgteW9jdG8gLWMgbWVudWNvbmZpZyAgIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjciOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJPbmNlIG1lbnVjb25maWcgbGF1bmNoZXMsIHVzZSB0aGUgaW50ZXJmYWNlIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIHNlbGVjdGlvbnMgYW5kIFxuICAgZW5hYmxlIG9wdGlvbiBcIjY0LWJpdCBrZXJuZWxcIiAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiOCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlNhdmUgY2hhbmdlcyBhbmQgc2V0IG5hbWUgb2YgdGhlIGZpbGUgYXMgXCJ0ZXN0LmNvbmZpZ1wiICAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk9wZW4gZmlsZTogIFxuIFxucG9reS9idWlsZC8vdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvLzQuWC5YKyovbGludXgtcWVtdXg4Ni1zdGFuZGFyZC1idWlsZC90ZXN0LmNvbmZpZyAgIFxuICBcbiBcblxuYW5kIHZlcmlmeSB0aGF0IGNoYW5nZXMgYXJlIHByZXNlbnQgaW4gdGhlIGZpbGUgYXMgZm9sbG93czogICBcbiBcbkNPTkZJR182NEJJVD15ICBcbiBcbkNPTkZJR19YODZfNjQ9eSIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogIlRlc3RfYml0YmFrZV9tZW51Y29uZmlnIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJvZS1jb3JlLmJpdGJha2UudGVzdF9iaXRiYWtlX2RldnNoZWxsIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiam9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJjbG9uZSBwb2t5ICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImNkIHBva3kgICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogInNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiAmJiBjZCBidWlsZCAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJQYWNrYWdlIHdhcyBidWlsZCBjb3JyZWN0bHkgIgorICAgICAgICB9LAorICAgICAgICAiNSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZzaGVsbCAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkEgdGVybWluYWwgd2l0aCBhIHNoZWxsIHByb21wdCB3aXRoaW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudCBpcyBvcGVuZWQgIgorICAgICAgICB9LAorICAgICAgICAiNiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB0aGF0IFwibWF0Y2hib3gtZGVza3RvcFwiIGJpbmFyeSBmaWxlIGlzIG5vdCBjcmVhdGVkIHVuZGVyXCJzcmNcIiBkaXJlY3RvcnkgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI3IjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIGNvbW1hbmQ6Li9jb25maWd1cmUgJiYgbWFrZSAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZlcmlmeSB0aGF0IFwibWF0Y2hib3gtZGVza3RvcFwiIGJpbmFyeSBmaWxlIHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSB1bmRlciBcInNyYy9cIiBkaXJlY3RvcnkgIgorICAgICAgICB9LAorICAgICAgICAiOCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkV4aXQgZnJvbXRoZSBkZXZzaGVsbCB0ZXJtaW5hbCxleGl0ICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGVybWluYWwgYmFjayB0byB0aGUgYnVpbGQgZGlyZWN0b3J5IgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAidGVzdF9iaXRiYWtlX2RldnNoZWxsIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJvZS1jb3JlLmJpdGJha2UudGVzdF9kZXBlbmRlbmN5X2V4cGxvcmVyX2lzX2xhdW5jaGVkIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiam9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJjbG9uZSBwb2t5ICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImNkIHBva3kgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAic291cmNlIG9lLWluaXQtYnVpbGQtZW52ICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJpdGJha2UgLXUgdGFza2V4cCAtZyBjb3JlLWltYWdlLWZ1bGwtY21kbGluZSAgICBcblxuTk9URTogVG8gZXhlY3V0ZSB0aGUgbGFzdCBjb21tYW5kIG9mIHRoaXMgdGVzdCwgaXQncyBuZWNlc3NhcnkgdGhhdCB0aGUgbWFjaGluZSBpcyBleGVjdXRpbmcgYW4gWDExIHNlcnZlciwgb3IgaWYgdGhhdCdzIG5vdCB0aGUgY2FzZSAoZm9yIGV4YW1wbGUsIGlmIHJ1bm5pbmcgdGhlIHRlc3Qgb24gYSBoZWFkbGVzcyBzZXJ2ZXIpLCBpdCBpcyByZXF1aXJlZCB0byBlbmFibGUgc3NoIFgxMSBmb3J3YXJkaW5nIG9uIGJvdGgsIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGllbnQsIGFuZCBoYXZlIHRoZSBYMTEgc2VydmVyIHJ1bm5pbmcgb24gdGhlIGNsaWVudC4gICAgXG5cblRoZSBpbnN0cnVjdGlvbnMgdG8gZW5hYmxlIFgxMSBmb3J3YXJkaW5nIHZhcnkgYmV0d2VlbiBkaXN0cmlidXRpb25zLiBCdXQgZm9yIGV4YW1wbGUsIHRoZXNlIGFyZSB0aGUgc3RlcHMgdG8gZW5hYmxlIGl0IGJldHdlZW4gYSBzZXJ2ZXIgcnVubmluZyBvcGVuU1VTRSBMZWFwIDQyLjEgYW5kIGEgY2xpZW50IHdpdGggRmVkb3JhIDI0OiAgXG5BLiBPbiB0aGUgc2VydmVyLCBtYWtlIHN1cmUgL2hvbWUvLy5zc2gvY29uZmlnIGNvbnRhaW5zIHRoZSBsaW5lOiAgXG4gICAgIEZvcndhcmRYMTEgeWVzICBcbkIuIE9uIHRoZSBzZXJ2ZXIsIG1ha2Ugc3VyZSB4YXV0aCBpcyBpbnN0YWxsZWQgYnkgcnVubmluZzogIFxuICAgICAgd2hpY2ggeGF1dGggIFxuQy4gT24gdGhlIGNsaWVudCwgY29ubmVjdCB0byB0aGUgc2VydmVyLCBlbmFibGluZyBYMTEgZm9yd2FyZGluZywgZm9yIGV4YW1wbGUgYnkgdXNpbmc6ICBcbiAgICAgIHNzaCAtWCB1c2VyQHNlcnZlciAgICBcbk5PVEUgMjogZGVwZXhwIHdhcyByZW5hbWVkIHRvIHRhc2tleHAgb24gMi4zIE00IiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJWZXJpZnkgdGhhdCBhIFwiZGVwZW5kZW5jeSBleHBsb3JlclwiIGlzIG9wZW5lZCBhbmQgZmlsZSBcbiAgIGRlcGVuZGVuY2llcyBhcmUgbGlzdGVkICAiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJ0ZXN0X2RlcGVuZGVuY3lfZXhwbG9yZXJfaXNfbGF1bmNoZWQiCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogIm9lLWNvcmUuYml0YmFrZS50ZXN0X2JpdGJha2Vfc2FuZV9lcnJvcl9mb3JfaW52YWxpZF9sYXllciIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiY2xvbmUgcG9reSAgXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJjZCBwb2t5ICBcbiBcbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogInNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiAmJiBjZCBidWlsZCAgXG4gXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZGQgYSBpbnZhbGlkIGxheWVyIHRvIGNvbmYvYmJsYXllcnMuY29uZiAgXCI8cG9reSBkaXI+L215LWludmFsaWQtbGF5ZXJcIiBcblx0XG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjUiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQmVsb3cgZXJyb3Igc2hvdWxkIGJlIGRpc3BsYXllZDpcblwiRVJST1I6IExheWVyIGRpcmVjdG9yeSAgZG9lcyBub3QgZXhpc3QhIFBsZWFzZSBjaGVjayBCQkxBWUVSUyBpbiA8cG9reSBkaXI+LzxidWlsZCBkaXI+L2NvbmYvYmJsYXllcnMuY29uZlwiIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAidGVzdF9iaXRiYWtlX3NhbmVfZXJyb3JfZm9yX2ludmFsaWRfbGF5ZXIiCisgICAgfQorICB9CitdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9zZGsuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvc2RrLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3NTU4NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvc2RrLmpzb24KQEAgLTAsMCArMSwzMiBAQAorWworICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogInNkay5zZGtfcnVucWVtdS50ZXN0X3Nka190b29sY2hhaW5fY2FuX3J1bl9tdWx0aXBsZV9RRU1VX21hY2hpbmVzX3VuZGVyX1VORlMiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQcmVwYXJlIGtlcm5lbCwgcm9vdGZzIHRhci5iejIgaW1hZ2UsIGFuZCBxZW11IGNvbmZpZ3VyYXRpb24gIFxuICAgIFx0YS4gRG93bmxvYWQga2VybmVsLCByb290ZnMgdGFyLmJ6MiBpbWFnZSBhbmQgcWVtdSBjb25maWd1cmF0aW9uIGZyb20gcHVibGljIGF1dG9idWlsZGVyIHdlYnBhZ2UgIFxuICAgIFx0Yi4gR290byBodHRwczovL2F1dG9idWlsZGVyLnlvY3RvLmlvL3B1Yi9yZWxlYXNlcy88dGFyZ2V0X3JlbGVhc2U+L21hY2hpbmVzL3FlbXUvcWVtdXg4Ni8gXG4gICAgXHRjLiBEb3dubG9hZCAgXG4gICAgXHQgIFx0aS4gcm9vdGZzIHRhci5iejI6IGNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni50YXIuYnoyIFxuICAgICAgXHRcdGlpLiBrZXJuZWw6IGJ6SW1hZ2UtcWVtdXg4Ni5iaW4gXG4gICAgICBcdFx0aWlpLiBxZW11IGNvbmZpZ3VyYXRpb246IGNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni5xZW11Ym9vdC5jb25mICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkRvd25sb2FkICYgaW5zdGFsbCBzZGsgdG9vbGNoYWluIGZyb20gcHVibGljIGF1dG9idWlsZGVyIFxuICAgIFx0YS4gR290byBodHRwczovL2F1dG9idWlsZGVyLnlvY3RvLmlvL3B1Yi9yZWxlYXNlcy88dGFyZ2V0X3JlbGVhc2U+L3Rvb2xjaGFpbi94ODZfNjQvIFxuICAgIFx0Yi4gRG93bmxvYWQgcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLXNkay08dHlwZS1hcmNoPi10b29sY2hhaW4tPHJlbGVhc2UtdmVyc2lvbj4uc2ggXG4gICAgXHRjLiBSdW4gY29tbWFuZDogcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1zYXRvLXNkay08dHlwZS1hcmNoPi10b29sY2hhaW4tPHJlbGVhc2UtdmVyc2lvbj4uc2giLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeHRyYWN0IHJvb3RmcyB0d2ljZSBpbnRvIHR3byBpbWFnZXMgXG4gICAgXHRhLiBSdW4gMiBjb21tYW5kcyBiZWxvdzogIFxuICAgICAgICAgICAgICAgICAgcnVucWVtdS1leHRyYWN0LXNkayBjb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYudGFyLmJ6MiBxZW11eDg2X3Jvb3Rmc19pbWFnZTEgIFxuICAgICAgICAgICAgICAgICAgcnVucWVtdS1leHRyYWN0LXNkayBjb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYudGFyLmJ6MiBxZW11eDg2X3Jvb3Rmc19pbWFnZTIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgRnJvbSB0aGUgMiB0ZXJtaW5hbHMsIHN0YXJ0IHFlbXUgdG8gYm9vdCB1cCBib3RoIHR3byBpbWFnZXMgXG4gICAgXHRhLiBSdW4gMiBjb21tYW5kcyBiZWxvdzogIFxuICAgICAgICAgICAgICAgICAgcnVucWVtdSBjb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYucWVtdWJvb3QuY29uZiBxZW11eDg2X3Jvb3Rmc19pbWFnZTEgIFxuICAgICAgICAgICAgICAgICAgcnVucWVtdSBjb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYucWVtdWJvb3QuY29uZiBxZW11eDg2X3Jvb3Rmc19pbWFnZTIgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiRXhwZWN0IGJvdGggcWVtdSB0byBib290IHVwIHN1Y2Nlc3NmdWxseS4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInRlc3Rfc2RrX3Rvb2xjaGFpbl9jYW5fcnVuX211bHRpcGxlX1FFTVVfbWFjaGluZXNfdW5kZXJfVU5GUyIKKyAgICAgICAgfQorICAgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKaW5kZXggOGQ0ZGQzNS4uNzkzMTQzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQpAQCAtMTgsNyArMTgsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfREVCJ10sICdhbGwnKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKICAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0YXJ0KCkKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CmluZGV4IDJmODcyOTYuLmMxZWQzOWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKQEAgLTU1LDcgKzU1LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydXT1JLRElSJ10sICdvZS10ZXN0aW1hZ2UtcmVwbycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXAsIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC02Nyw3ICs2Nyw4IEBACiAgICAgICAgIGRlcGxveV91cmwgPSAnaHR0cDovLyVzOiVzLycgJShzZWxmLnRhcmdldC5zZXJ2ZXJfaXAsIHNlbGYucmVwb19zZXJ2ZXIucG9ydCkKICAgICAgICAgY21kbGluZXJlcG9vcHRzID0gWyItLXJlcG9mcm9tcGF0aD1vZS10ZXN0aW1hZ2UtcmVwby0lcywlcyVzIiAlKGFyY2gsIGRlcGxveV91cmwsIGFyY2gpIGZvciBhcmNoIGluIHBrZ2FyY2hzXQogCi0gICAgICAgIHNlbGYuZG5mKCIgIi5qb2luKGNtZGxpbmVyZXBvb3B0cykgKyAiIC0tbm9ncGdjaGVjayAiICsgY29tbWFuZCkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5kbmYoIiAiLmpvaW4oY21kbGluZXJlcG9vcHRzKSArICIgLS1ub2dwZ2NoZWNrICIgKyBjb21tYW5kKQorICAgICAgICByZXR1cm4gb3V0cHV0CiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZCYXNpY1Rlc3QudGVzdF9kbmZfaGVscCddKQogICAgIEBPRVRlc3RJRCgxNzQ0KQpAQCAtODgsNiArODksOSBAQAogICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZlJlcG9UZXN0LnRlc3RfZG5mX21ha2VjYWNoZSddKQogICAgIEBPRVRlc3RJRCgxNzQwKQogICAgIGRlZiB0ZXN0X2RuZl9pbnN0YWxsKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBzZWxmLmRuZl93aXRoX3JlcG8oJ2xpc3QgcnVuLXBvc3RpbnN0cy1kZXYnKQorICAgICAgICBpZiAnSW5zdGFsbGVkIFBhY2thZ2VzJyBpbiBvdXRwdXQ6CisgICAgICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ3JlbW92ZSAteSBydW4tcG9zdGluc3RzLWRldicpCiAgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygnaW5zdGFsbCAteSBydW4tcG9zdGluc3RzLWRldicpCiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZSZXBvVGVzdC50ZXN0X2RuZl9pbnN0YWxsJ10pCkBAIC0xMjAsNCArMTI0LDQ0IEBACiAgICAgZGVmIHRlc3RfZG5mX3JlaW5zdGFsbChzZWxmKToKICAgICAgICAgc2VsZi5kbmZfd2l0aF9yZXBvKCdyZWluc3RhbGwgLXkgcnVuLXBvc3RpbnN0cy1kZXYnKQogCisgICAgQE9FVGVzdERlcGVuZHMoWydkbmYuRG5mUmVwb1Rlc3QudGVzdF9kbmZfbWFrZWNhY2hlJ10pCisgICAgQE9FVGVzdElEKDE3NzEpCisgICAgZGVmIHRlc3RfZG5mX2luc3RhbGxyb290KHNlbGYpOgorICAgICAgICByb290cGF0aCA9ICcvaG9tZS9yb290L2Nocm9vdC90ZXN0JworICAgICAgICAjQ29weSBuZWNlc3NhcnkgZmlsZXMgdG8gYXZvaWQgZXJyb3JzIHdpdGggbm90IHlldCBpbnN0YWxsZWQgdG9vbHMgb24KKyAgICAgICAgI2luc3RhbGxyb290IGRpcmVjdG9yeS4KKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy9ldGMnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvYmluICVzL3NiaW4gJXMvdXNyL2JpbiAlcy91c3Ivc2JpbicgJSAocm9vdHBhdGgsIHJvb3RwYXRoLCByb290cGF0aCwgcm9vdHBhdGgpLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL2RldicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgI0hhbmRsZSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBsaWIgZGlycworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL2xpYicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy9saWJ4MzInICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvbGliNjQnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY3AgL2xpYi9saWJ0aW5mby5zby41ICVzL2xpYicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvbGlieDMyL2xpYnRpbmZvLnNvLjUgJXMvbGlieDMyJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC9saWI2NC9saWJ0aW5mby5zby41ICVzL2xpYjY0JyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC1yIC9ldGMvcnBtICVzL2V0YycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAtciAvZXRjL2RuZiAlcy9ldGMnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY3AgL2Jpbi9zaCAlcy9iaW4nICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbW91bnQgLW8gYmluZCAvZGV2ICVzL2Rldi8nICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygnaW5zdGFsbCAtLWluc3RhbGxyb290PSVzIC12IC15IC0tcnBtdmVyYm9zaXR5PWRlYnVnIGJ1c3lib3ggcnVuLXBvc3RpbnN0cycgJSByb290cGF0aCkKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3Rlc3QgLWUgJXMvdmFyL2NhY2hlL2RuZicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMsIG91dHB1dCkKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3Rlc3QgLWUgJXMvYmluL2J1c3lib3gnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzLCBvdXRwdXQpCiAKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZSZXBvVGVzdC50ZXN0X2RuZl9tYWtlY2FjaGUnXSkKKyAgICBAT0VUZXN0SUQoMTc3MikKKyAgICBkZWYgdGVzdF9kbmZfZXhjbHVkZShzZWxmKToKKyAgICAgICAgZXhjbHVkZXBrZyA9ICdjdXJsLWRldicKKyAgICAgICAgc2VsZi5kbmZfd2l0aF9yZXBvKCdpbnN0YWxsIC15IGN1cmwqJykKKyAgICAgICAgc2VsZi5kbmYoJ2xpc3QgJXMnICUgZXhjbHVkZXBrZywgMCkKKyAgICAgICAgI0F2b2lkIHJlbW92ZSBkZXBlbmRlbmNpZXMgdG8gc2tpcCBzb21lIGVycm9ycyBvbiBkaWZmZXJlbnQgYXJjaHMgYW5kIGltYWdlcworICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ3JlbW92ZSAtLXNldG9wdD1jbGVhbl9yZXF1aXJlbWVudHNfb25fcmVtb3ZlPTAgLXkgY3VybConKQorICAgICAgICAjY2hlY2sgY3VybC1kZXYgaXMgbm90IGluc3RhbGxlZCBhZHRlciByZW1vdmluZyBhbGwgY3VybCBvY2N1cnJlbmNlcworICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZG5mIGxpc3QgLS1pbnN0YWxsZWQgfCBncmVwICVzJyUgZXhjbHVkZXBrZywgMTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICIlcyB3YXMgbm90IHJlbW92ZWQsICBpcyBsaXN0ZWQgYXMgaW5zdGFsbGVkIiVleGNsdWRlcGtnKQorICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ2luc3RhbGwgLXkgLS1leGNsdWRlPSVzIC0tZXhjbHVkZT1jdXJsLXN0YXRpY2RldiBjdXJsKicgJSBleGNsdWRlcGtnKQorICAgICAgICAjY2hlY2sgY3VybC1kZXYgaXMgbm90IGluc3RhbGxlZCBhZnRlciBiZWluZyBleGNsdWRlZAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZG5mIGxpc3QgLS1pbnN0YWxsZWQgfCBncmVwICVzJyUgZXhjbHVkZXBrZyAsIDE1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAiJXMgd2FzIG5vdCBleGNsdWRlZCwgaXMgbGlzdGVkIGFzIGluc3RhbGxlZCIlZXhjbHVkZXBrZykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tzYW1wbGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9rc2FtcGxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NGNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9rc2FtcGxlLnB5CkBAIC0wLDAgKzEsMjIxIEBACitpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCisKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RmVhdHVyZQorCisjIG5lZWQgc29tZSBrZXJuZWwgZnJhZ21lbnRzCisjIGVjaG8gIktFUk5FTF9GRUFUVVJFU19hcHBlbmQgKz0gXCIgZmVhdHVyZXNcL2tlcm5lbFwtc2FtcGxlXC9rZXJuZWxcLXNhbXBsZS5zY2NcIiIgPj4gbG9jYWwuY29uZgorY2xhc3MgS1NhbXBsZShPRVJ1bnRpbWVUZXN0Q2FzZSk6CisgICAgZGVmIGNtZF9hbmRfY2hlY2soc2VsZiwgY21kPScnLCBtYXRjaF9zdHJpbmc9JycpOgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCisgICAgICAgIGlmIG5vdCBtYXRjaF9zdHJpbmc6CisgICAgICAgICAgICAjIHNlbmQgY21kCisgICAgICAgICAgICBtc2cgPSAnJXMgZmFpbGVkLCAlcycgJSAoY21kLCBvdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgY2hlY2sgcmVzdWx0CisgICAgICAgICAgICByZXN1bHQgPSAoIiVzIiAlIG1hdGNoX3N0cmluZykgaW4gb3V0cHV0CisgICAgICAgICAgICBtc2cgPSBvdXRwdXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQsIG1zZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBjbWQpCisKKyAgICBkZWYgY2hlY2tfY29uZmlnKHNlbGYsIGNvbmZpZ19vcHQ9JycpOgorICAgICAgICBjbWQgPSAiemNhdCAvcHJvYy9jb25maWcuZ3ogfCBncmVwICVzIiAlIGNvbmZpZ19vcHQKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQorICAgICAgICByZXN1bHQgPSAoIiVzPXkiICUgY29uZmlnX29wdCkgaW4gb3V0cHV0CisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlcyBpcyBub3Qgc2V0IiAlIGNvbmZpZ19vcHQpCisKKyAgICBkZWYgY2hlY2tfbW9kdWxlX2V4aXN0KHNlbGYsIHBhdGg9JycsIG1vZHVsZV9uYW1lPScnKToKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oInVuYW1lIC1yIikKKyAgICAgICAgY21kID0gImxzICIgKyAiL2xpYi9tb2R1bGVzLyIgKyBvdXRwdXQgKyAiL2tlcm5lbC9zYW1wbGVzLyIgKyBwYXRoICsgbW9kdWxlX25hbWUKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQorICAgICAgICBpZiBzdGF0dXMgIT0gMDoKKyAgICAgICAgICAgIGVycm9yX2luZm8gPSBtb2R1bGVfbmFtZSArICIgZG9lc24ndCBleGlzdCIKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoZXJyb3JfaW5mbykKKworICAgIGRlZiBrZmlmb19mdW5jKHNlbGYsIG5hbWU9JycpOgorICAgICAgICBtb2R1bGVfcHJlbmFtZSA9IG5hbWUgKyAiLWV4YW1wbGUiCisgICAgICAgIG1vZHVsZV9uYW1lID0gbmFtZSArICItZXhhbXBsZS5rbyIKKyAgICAgICAgc3lzbWJvbF9uYW1lID0gbmFtZSArICJfZXhhbXBsZSIKKworICAgICAgICAjIG1ha2Ugc3VyZSBpZiBtb2R1bGUgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlX2V4aXN0KCJrZmlmby8iLCBtb2R1bGVfbmFtZSkKKyAgICAgICAgIyBtb2Rwcm9iZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soIm1vZHByb2JlICVzIiAlIG1vZHVsZV9wcmVuYW1lKQorICAgICAgICAjIGxzbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibHNtb2QgfCBncmVwICVzIHwgY3V0IC1kXCcgXCcgLWYxIiAlIHN5c21ib2xfbmFtZSwgc3lzbWJvbF9uYW1lKQorICAgICAgICAjIGNoZWNrIHJlc3VsdAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImRtZXNnIHwgZ3JlcCBcInRlc3QgcGFzc2VkXCIgIiwgInRlc3QgcGFzc2VkIikKKyAgICAgICAgIyBybW1vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soInJtbW9kICVzIiAlICBtb2R1bGVfcHJlbmFtZSkKKworICAgIGRlZiBrcHJvYmVfZnVuYyhzZWxmLCBuYW1lPScnKToKKyAgICAgICAgIyBjaGVjayBjb25maWcKKyAgICAgICAgc2VsZi5jaGVja19jb25maWcoIkNPTkZJR19LUFJPQkVTIikKKworICAgICAgICBtb2R1bGVfcHJlbmFtZSA9IG5hbWUgKyAiX2V4YW1wbGUiCisgICAgICAgIG1vZHVsZV9uYW1lID0gbmFtZSArICJfZXhhbXBsZS5rbyIKKyAgICAgICAgc3lzbWJvbF9uYW1lID0gbW9kdWxlX3ByZW5hbWUKKworICAgICAgICAjIG1ha2Ugc3VyZSBpZiBtb2R1bGUgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlX2V4aXN0KCJrcHJvYmVzLyIsIG1vZHVsZV9uYW1lKQorICAgICAgICAjIG1vZHByb2JlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibW9kcHJvYmUgJXMiICUgbW9kdWxlX3ByZW5hbWUpCisgICAgICAgICMgbHNtb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJsc21vZCB8IGdyZXAgJXMgfCBjdXQgLWRcJyBcJyAtZjEiICUgc3lzbWJvbF9uYW1lLCBzeXNtYm9sX25hbWUpCisgICAgICAgICMgY2hlY2sgcmVzdWx0CisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiZG1lc2cgfCBncmVwIFBsYW50ZWQgfCBoZWFkIC1uMTAiLCAiUGxhbnRlZCIpCisgICAgICAgICMgcm1tb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJybW1vZCAlcyIgJSBtb2R1bGVfcHJlbmFtZSkKKworICAgIGRlZiBrb2JqZWN0X2Z1bmMoc2VsZiwgbmFtZT0nJyk6CisgICAgICAgIG1vZHVsZV9wcmVuYW1lID0gbmFtZSArICJfZXhhbXBsZSIKKyAgICAgICAgbW9kdWxlX25hbWUgPSBuYW1lICsgIi1leGFtcGxlLmtvIgorICAgICAgICBzeXNtYm9sX25hbWUgPSBtb2R1bGVfcHJlbmFtZQorCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoImtvYmplY3QvIiwgbW9kdWxlX25hbWUpCisgICAgICAgICMgbW9kcHJvYmUKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJtb2Rwcm9iZSAlcyIgJSBtb2R1bGVfcHJlbmFtZSkKKyAgICAgICAgIyBsc21vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzbW9kIHwgZ3JlcCAlcyB8IGN1dCAtZFwnIFwnIC1mMSIgJSBzeXNtYm9sX25hbWUsIHN5c21ib2xfbmFtZSkKKyAgICAgICAgIyBjaGVjayByZXN1bHQKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJscyAvc3lzL2tlcm5lbC8lcy8iICUgc3lzbWJvbF9uYW1lLCAiYmFyIikKKyAgICAgICAgIyBybW1vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soInJtbW9kICVzIiAlIG1vZHVsZV9wcmVuYW1lKQorCitjbGFzcyBLU2FtcGxlVGVzdChLU2FtcGxlKToKKyAgICAjIGtmaWZvCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X2tmaWZvX3Rlc3Qoc2VsZik6CisgICAgICAgIGluZGV4ID0gWyJkbWEiLCAiYnl0ZXN0cmVhbSIsICJpbnR0eXBlIiwgInJlY29yZCJdCisgICAgICAgIGZvciBpIGluIGluZGV4OgorICAgICAgICAgICAgc2VsZi5rZmlmb19mdW5jKGkpCisKKyAgICAjIGtwcm9iZQorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9rcHJvYmVfdGVzdChzZWxmKToKKyAgICAgICAgaW5kZXggPSBbImtwcm9iZSIsICJrcmV0cHJvYmUiXQorICAgICAgICBmb3IgaSBpbiBpbmRleDoKKyAgICAgICAgICAgIHNlbGYua3Byb2JlX2Z1bmMoaSkKKworICAgICMga29iamVjdAorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9rb2JqZWN0X3Rlc3Qoc2VsZik6CisgICAgICAgIGluZGV4ID0gWyJrb2JqZWN0IiwgImtzZXQiXQorICAgICAgICBmb3IgaSBpbiBpbmRleDoKKyAgICAgICAgICAgIHNlbGYua29iamVjdF9mdW5jKGkpCisKKyAgICAjdHJhY2UKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgZGVmIHRlc3RfdHJhY2VfZXZlbnRzKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGNvbmZpZworICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZygiQ09ORklHX1RSQUNJTkdfU1VQUE9SVCIpCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoInRyYWNlX2V2ZW50cy8iLCAidHJhY2UtZXZlbnRzLXNhbXBsZS5rbyIpCisgICAgICAgICMgbW9kcHJvYmUKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJtb2Rwcm9iZSB0cmFjZS1ldmVudHMtc2FtcGxlIikKKyAgICAgICAgIyBsc21vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzbW9kIHwgZ3JlcCB0cmFjZV9ldmVudHNfc2FtcGxlIHwgY3V0IC1kXCcgXCcgLWYxIiwgInRyYWNlX2V2ZW50c19zYW1wbGUiKQorICAgICAgICAjIGNoZWNrIGRpcgorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzLyB8IGdyZXAgc2FtcGxlLXRyYWNlIiwgInNhbXBsZS10cmFjZSIpCisgICAgICAgICMgZW5hYmxlIHRyYWNlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiZWNobyAxID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc2FtcGxlLXRyYWNlL2VuYWJsZSIpCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiY2F0IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3NhbXBsZS10cmFjZS9lbmFibGUiKQorICAgICAgICAjIGNoZWNrIHJlc3VsdAorICAgICAgICBzdGF0dXMgPSAxCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBzdGF0dXMgIT0gMDoKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZSB8IGdyZXAgaGVsbG8gfCBoZWFkIC1uMSB8IGN1dCAtZFwnOlwnIC1mMicpCisgICAgICAgICAgICBpZiAiIGZvb19iYXIiIGluIG91dHB1dDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgY291bnQgPSBjb3VudCArIDEKKyAgICAgICAgICAgIGlmIGNvdW50ID4gNToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UsICJUaW1lIG91dCB3aGVuIGNoZWNrIHJlc3VsdCIpCisgICAgICAgICMgZGlzYWJsZSB0cmFjZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImVjaG8gMCA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3NhbXBsZS10cmFjZS9lbmFibGUiKQorICAgICAgICAjIGNsZWFuIHVwIHRyYWNlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiZWNobyA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2UiKQorICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgdHJhY2UtZXZlbnRzLXNhbXBsZSIpCisKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgZGVmIHRlc3RfdHJhY2VfcHJpbnRrKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGNvbmZpZworICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZygiQ09ORklHX1RSQUNJTkdfU1VQUE9SVCIpCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoInRyYWNlX3ByaW50ay8iLCAidHJhY2UtcHJpbnRrLmtvIikKKyAgICAgICAgIyBtb2Rwcm9iZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soIm1vZHByb2JlIHRyYWNlLXByaW50ayIpCisgICAgICAgICMgbHNtb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJsc21vZCB8IGdyZXAgdHJhY2VfcHJpbnRrIHwgY3V0IC1kXCcgXCcgLWYxIiwgInRyYWNlX3ByaW50ayIpCisgICAgICAgICMgY2hlY2sgcmVzdWx0CisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiY2F0IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2UgfCBncmVwIHRyYWNlX3ByaW50a19pcnFfd29yayB8IGhlYWQgLW4xIHwgY3V0IC1kXCc6XCcgLWYyIiwgIiB0cmFjZV9wcmludGtfaXJxX3dvcmsiKQorICAgICAgICAjIGNsZWFuIHVwIHRyYWNlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiZWNobyA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2UiKQorICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgdHJhY2UtcHJpbnRrIikKKworICAgICMgaHcgYnJlYWtwb2ludAorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9od19icmVha3BvaW50X2V4YW1wbGUoc2VsZik6CisgICAgICAgICMgY2hlY2sgYXJjaAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigidW5hbWUgLW0iKQorICAgICAgICByZXN1bHQgPSAoIng4NiIgaW4gb3V0cHV0KSBvciAoImFhcmNoNjQiIGluIG91dHB1dCkKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRoZSBhcmNoIGRvZXNuJ3Qgc3VwcG9ydCBodyBicmVha3BvaW50IiAlIG91dHB1dCkKKyAgICAgICAgIyBjaGVjayBjb25maWcKKyAgICAgICAgc2VsZi5jaGVja19jb25maWcoIkNPTkZJR19LQUxMU1lNU19BTEwiKQorICAgICAgICAjIG1ha2Ugc3VyZSBpZiBtb2R1bGUgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlX2V4aXN0KCJod19icmVha3BvaW50LyIsICJkYXRhX2JyZWFrcG9pbnQua28iKQorICAgICAgICAjIG1vZHByb2JlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibW9kcHJvYmUgZGF0YV9icmVha3BvaW50IikKKyAgICAgICAgIyBsc21vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzbW9kIHwgZ3JlcCBkYXRhX2JyZWFrcG9pbnQgfCBjdXQgLWRcJyBcJyAtZjEiLCAiZGF0YV9icmVha3BvaW50IikKKyAgICAgICAgIyBjaGVjayByZXN1bHQKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJjYXQgL3Zhci9sb2cvbWVzc2FnZXMgfCBncmVwIHNhbXBsZV9oYnBfaGFuZGxlciIsICJzYW1wbGVfaGJwX2hhbmRsZXIiKQorICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgZGF0YV9icmVha3BvaW50IikKKworICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9jb25maWdmc19zYW1wbGUoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29uZmlnCisgICAgICAgIHN0YXR1cywgcmV0ID0gc2VsZi50YXJnZXQucnVuKCd6Y2F0IC9wcm9jL2NvbmZpZy5neiB8IGdyZXAgQ09ORklHX0NPTkZJR0ZTX0ZTJykKKyAgICAgICAgaWYgbm90IFsiQ09ORklHX0NPTkZJR0ZTX0ZTPW0iIGluIHJldCBvciAiQ09ORklHX0NPTkZJR0ZTX0ZTPXkiIGluIHJldF06CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDT05GSUcgZXJyb3IiKQorICAgICAgICAjIG1ha2Ugc3VyZSBpZiBtb2R1bGUgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlX2V4aXN0KCJjb25maWdmcy8iLCAiY29uZmlnZnNfc2FtcGxlLmtvIikKKyAgICAgICAgIyBtb2Rwcm9iZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soIm1vZHByb2JlIGNvbmZpZ2ZzX3NhbXBsZSIpCisgICAgICAgICMgbHNtb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJsc21vZCB8IGdyZXAgY29uZmlnZnNfc2FtcGxlIHwgY3V0IC1kXCcgXCcgLWYxIHwgaGVhZCAtbjEiLCAiY29uZmlnZnNfc2FtcGxlIikKKworICAgICAgICBzdGF0dXMgPSAxCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBzdGF0dXMgIT0gMDoKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgIHN0YXR1cywgcmV0ID0gc2VsZi50YXJnZXQucnVuKCdjYXQgL3N5cy9rZXJuZWwvY29uZmlnLzAxLWNoaWxkbGVzcy9kZXNjcmlwdGlvbicpCisgICAgICAgICAgICBjb3VudCA9IGNvdW50ICsgMQorICAgICAgICAgICAgaWYgY291bnQgPiAyMDA6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGltZSBvdXQgZm9yIGNoZWNrIGRpciIpCisKKyAgICAgICAgIyBybW1vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soInJtbW9kIGNvbmZpZ2ZzX3NhbXBsZSIpCisKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgZGVmIHRlc3RfY25fdGVzdChzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgaWYgbW9kdWxlIGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX21vZHVsZV9leGlzdCgiY29ubmVjdG9yLyIsICJjbl90ZXN0LmtvIikKKyAgICAgICAgIyBtb2Rwcm9iZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soIm1vZHByb2JlIGNuX3Rlc3QiKQorICAgICAgICAjIGxzbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibHNtb2QgfCBncmVwIGNuX3Rlc3QgfCBjdXQgLWRcJyBcJyAtZjEiLCAiY25fdGVzdCIpCisgICAgICAgICMgY2hlY2sgcmVzdWx0CisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiY2F0IC9wcm9jL25ldC9jb25uZWN0b3IgfCBncmVwIGNuX3Rlc3QgfCBoZWFkIC1uMSB8IGN1dCAtZFwnIFwnIC1mMSIsICJjbl90ZXN0IikKKyAgICAgICAgIyBybW1vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soInJtbW9kIGNuX3Rlc3QiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbGRkLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbGRkLnB5CmluZGV4IGM2ZDkyZmQuLjViZGUxODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xkZC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sZGQucHkKQEAgLTIsMjQgKzIsMjMgQEAKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3RGZWF0dXJlCitmcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCiAKIGNsYXNzIExkZFRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgogCiAgICAgQE9FVGVzdElEKDk2MikKLSAgICBAc2tpcElmTm90RmVhdHVyZSgndG9vbHMtc2RrJywKLSAgICAgICAgICAgICAgICAgICAgICAnVGVzdCByZXF1aXJlcyB0b29scy1zZGsgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQorICAgIEBPRUhhc1BhY2thZ2UoWyJsZGQiXSkKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCi0gICAgZGVmIHRlc3RfbGRkX2V4aXN0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9sZGQoc2VsZik6CiAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCd3aGljaCBsZGQnKQogICAgICAgICBtc2cgPSAnbGRkIGRvZXMgbm90IGV4aXN0IGluIFBBVEg6IHdoaWNoIGxkZDogJXMnICUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQogCi0gICAgQE9FVGVzdElEKDIzOSkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ2xkZC5MZGRUZXN0LnRlc3RfbGRkX2V4aXN0cyddKQotICAgIGRlZiB0ZXN0X2xkZF9ydGxkbGlzdF9jaGVjayhzZWxmKToKICAgICAgICAgY21kID0gKCdmb3IgaSBpbiAkKHdoaWNoIGxkZCB8IHhhcmdzIGNhdCB8IGdyZXAgIl5SVExETElTVCJ8ICcKICAgICAgICAgICAgICAgJ2N1dCAtZFwnPVwnIC1mMnx0ciAtZCBcJyJcJyk7ICcKICAgICAgICAgICAgICAgJ2RvIHRlc3QgLWYgJGkgJiYgZWNobyAkaSAmJiBicmVhazsgZG9uZScpCiAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKLSAgICAgICAgbXNnID0gImxkZCBwYXRoIG5vdCBjb3JyZWN0IG9yIFJUTERMSVNUIGZpbGVzIGRvbid0IGV4aXN0LiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9ImxkZCBwYXRoIG5vdCBjb3JyZWN0IG9yIFJUTERMSVNUIGZpbGVzIGRvbid0IGV4aXN0LiIpCisKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oImxkZCAvYmluL3RydWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPSJsZGQgZmFpbGVkIHRvIGV4ZWN1dGU6ICVzIiAlIG91dHB1dCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weQppbmRleCA5OTJmZWYyLi5kYjZlNjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5CkBAIC0yMSw5ICsyMSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCiAKICAgICAgICAgY21kID0gKCdzZWQgLWkgInMjd3RtcCB7I3d0bXAge1xcbiAgICBvbGRkaXIgJEhPTUUvbG9ncm90YXRlX2RpciMiJwotICAgICAgICAgICAgICAgJyAvZXRjL2xvZ3JvdGF0ZS5jb25mJykKKyAgICAgICAgICAgICAgICcgL2V0Yy9sb2dyb3RhdGUuZC93dG1wJykKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQotICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byBsb2dyb3RhdGUuY29uZiBmaWxlLiBTdGF0dXMgYW5kIG91dHB1dDogJworICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byBsb2dyb3RhdGUuZC93dG1wIGZpbGUuIFN0YXR1cyBhbmQgb3V0cHV0OiAnCiAgICAgICAgICAgICAgICAnICVzIGFuZCAlcycgJSAoc3RhdHVzLCBvdXRwdXQpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vZV9zeXNsb2cucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vZV9zeXNsb2cucHkKaW5kZXggMDA1YjY5Ny4uYTkyYTFmMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb2Vfc3lzbG9nLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29lX3N5c2xvZy5weQpAQCAtOCwxMiArOCwxNCBAQAogCiAgICAgQE9FVGVzdElEKDIwMSkKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCi0gICAgQE9FSGFzUGFja2FnZShbImJ1c3lib3gtc3lzbG9nIiwgInN5c2tsb2dkIl0pCisgICAgQE9FSGFzUGFja2FnZShbImJ1c3lib3gtc3lzbG9nIiwgInN5c2tsb2dkIiwgInJzeXNsb2ciLCAic3lzbG9nLW5nIl0pCiAgICAgZGVmIHRlc3Rfc3lzbG9nX3J1bm5pbmcoc2VsZik6Ci0gICAgICAgIGNtZCA9ICclcyAgfCBncmVwIC1pIFtzXXlzbG9nZCcgJSBzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddCi0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKLSAgICAgICAgbXNnID0gIk5vIHN5c2xvZ2QgcHJvY2VzczsgcHMgb3V0cHV0OiAlcyIgJSBvdXRwdXQKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oc2VsZi50Yy50YXJnZXRfY21kc1sncHMnXSkKKyAgICAgICAgbXNnID0gIkZhaWxlZCB0byBleGVjdXRlICVzIiAlIHNlbGYudGMudGFyZ2V0X2NtZHNbJ3BzJ10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCisgICAgICAgIG1zZyA9ICJObyBzeXNsb2cgZGFlbW9uIHByb2Nlc3M7ICVzIG91dHB1dDpcbiVzIiAlIChzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddLCBvdXRwdXQpCisgICAgICAgIGhhc2RhZW1vbiA9ICJzeXNsb2dkIiBpbiBvdXRwdXQgb3IgInN5c2xvZy1uZyIgaW4gb3V0cHV0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNkYWVtb24sIG1zZz1tc2cpCiAKIGNsYXNzIFN5c2xvZ1Rlc3RDb25maWcoT0VSdW50aW1lVGVzdENhc2UpOgogCkBAIC00NSw3ICs0Nyw3IEBACiAKICAgICBAT0VUZXN0SUQoMjAyKQogICAgIEBPRVRlc3REZXBlbmRzKFsnb2Vfc3lzbG9nLlN5c2xvZ1Rlc3RDb25maWcudGVzdF9zeXNsb2dfbG9nZ2VyJ10pCi0gICAgQE9FSGFzUGFja2FnZShbIiFzeXNrbG9nZCIsICJidXN5Ym94Il0pCisgICAgQE9FSGFzUGFja2FnZShbImJ1c3lib3gtc3lzbG9nIl0pCiAgICAgQHNraXBJZkRhdGFWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCAnc3lzdGVtZCcsCiAgICAgICAgICAgICAgICAgICAgJ05vdCBhcHByb3BpYXRlIGZvciBzeXN0ZW1kIGltYWdlJykKICAgICBkZWYgdGVzdF9zeXNsb2dfc3RhcnR1cF9jb25maWcoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQppbmRleCA2NzFlZTA2Li4yOWU5OTAyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKQEAgLTE3LDggKzE3LDExIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBzZXJ2aWNlX3JlcG8gPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydERVBMT1lfRElSX0lQSyddLCAnYWxsJykKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLCBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCkKKyAgICAgICAgYWxsYXJjaGZlZWQgPSAnYWxsJworICAgICAgICBpZiBjbHMudGMudGRbIk1VTFRJTElCX1ZBUklBTlRTIl06CisgICAgICAgICAgICBhbGxhcmNoZmVlZCA9IGNscy50Yy50ZFsiVFVORV9QS0dBUkNIIl0KKyAgICAgICAgc2VydmljZV9yZXBvID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUl9JUEsnXSwgYWxsYXJjaGZlZWQpCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXAsIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKaW5kZXggMWYzNmM2MS4uZjZlOTgyMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQpAQCAtNDksNiArNDksMTAgQEAKICAgICAiZXJyb3I6IGNvdWxkblwndCBtb3VudCBiZWNhdXNlIG9mIHVuc3VwcG9ydGVkIG9wdGlvbmFsIGZlYXR1cmVzIiwKICAgICAiR1BUOiBVc2UgR05VIFBhcnRlZCB0byBjb3JyZWN0IEdQVCBlcnJvcnMiLAogICAgICJDYW5ub3Qgc2V0IHhhdHRyIHVzZXIuTGlicmVwby5Eb3dubG9hZEluUHJvZ3Jlc3MiLAorICAgICJGYWlsZWQgdG8gcmVhZCAvdmFyL2xpYi9uZnMvc3RhdGQvc3RhdGU6IFN1Y2Nlc3MiLAorICAgICJlcnJvciByZXRyeSB0aW1lLW91dCA9IiwKKyAgICAibG9naW5kOiBjYW5ub3Qgc2V0dXAgc3lzdGVtZC1sb2dpbmQgaGVscGVyICgtNjEpLCB1c2luZyBsZWdhY3kgZmFsbGJhY2siLAorICAgICJFcnJvciBjaGFuZ2luZyBuZXQgaW50ZXJmYWNlIG5hbWUgJ2V0aDAnIHRvICIKICAgICBdCiAKIHZpZGVvX3JlbGF0ZWQgPSBbCkBAIC0xMjAsMTUgKzEyNCw2IEBACiAgICAgICAgICdkbWk6IEZpcm13YXJlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJywKICAgICAgICAgJ2lycTogdHlwZSBtaXNtYXRjaCwgZmFpbGVkIHRvIG1hcCBod2lycS0yNyBmb3IgL2ludGMnLAogICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKLSAgICAnZW1lbmxvdycgOiBbCi0gICAgICAgICdbRmlybXdhcmUgQnVnXTogQUNQSTogTm8gX0JRQyBtZXRob2QsIGNhbm5vdCBkZXRlcm1pbmUgaW5pdGlhbCBicmlnaHRuZXNzJywKLSAgICAgICAgJyhFRSkgRmFpbGVkIHRvIGxvYWQgbW9kdWxlICJwc2IiJywKLSAgICAgICAgJyhFRSkgRmFpbGVkIHRvIGxvYWQgbW9kdWxlIHBzYicsCi0gICAgICAgICcoRUUpIEZhaWxlZCB0byBsb2FkIG1vZHVsZSAicHNiZHJ2IicsCi0gICAgICAgICcoRUUpIEZhaWxlZCB0byBsb2FkIG1vZHVsZSBwc2JkcnYnLAotICAgICAgICAnKEVFKSBvcGVuIC9kZXYvZmIwOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5JywKLSAgICAgICAgJyhFRSkgQUlHTFg6IHJldmVydGluZyB0byBzb2Z0d2FyZSByZW5kZXJpbmcnLAotICAgICAgICBdICsgeDg2X2NvbW1vbiwKICAgICAnaW50ZWwtY29yZTItMzInIDogWwogICAgICAgICAnQUNQSTogTm8gX0JRQyBtZXRob2QsIGNhbm5vdCBkZXRlcm1pbmUgaW5pdGlhbCBicmlnaHRuZXNzJywKICAgICAgICAgJ1tGaXJtd2FyZSBCdWddOiBBQ1BJOiBObyBfQlFDIG1ldGhvZCwgY2Fubm90IGRldGVybWluZSBpbml0aWFsIGJyaWdodG5lc3MnLApAQCAtMTU2LDcgKzE1MSw2IEBACiAgICAgICAgICdCbHVldG9vdGg6IGhjaTA6IEZhaWxlZCB0byBzZW5kIGZpcm13YXJlIGRhdGEgKC0zOCknLAogICAgICAgICAnYXRrYmQgc2VyaW8wOiBGYWlsZWQgdG8gZW5hYmxlIGtleWJvYXJkIG9uIGlzYTAwNjAvc2VyaW8wJywKICAgICAgICAgXSArIHg4Nl9jb21tb24sCi0gICAgJ2Nyb3duYmF5JyA6IHg4Nl9jb21tb24sCiAgICAgJ2dlbmVyaWN4ODYnIDogeDg2X2NvbW1vbiwKICAgICAnZ2VuZXJpY3g4Ni02NCcgOiBbCiAgICAgICAgICdEaXJlY3QgZmlybXdhcmUgbG9hZCBmb3IgaTkxNScsCkBAIC0xNjksMTAgKzE2Myw2IEBACiAgICAgJ2VkZ2Vyb3V0ZXInIDogWwogICAgICAgICAnRmF0YWwgc2VydmVyIGVycm9yOicsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAotICAgICdqYXNwZXJmb3Jlc3QnIDogWwotICAgICAgICAnQWN0aXZhdGVkIHNlcnZpY2UgXCdvcmcuYmx1ZXpcJyBmYWlsZWQ6JywKLSAgICAgICAgJ1VuYWJsZSB0byBmaW5kIE5GQyBuZXRsaW5rIGZhbWlseScsCi0gICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAogfQogCiBsb2dfbG9jYXRpb25zID0gWyIvdmFyL2xvZy8iLCIvdmFyL2xvZy9kbWVzZyIsICIvdG1wL2RtZXNnX291dHB1dC5sb2ciXQpAQCAtMzIzLDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0c1tsb2cucmVwbGFjZSgndGFyZ2V0X2xvZ3MvJywnJyldID0ge30KKyAgICAgICAgICAgICAgICByZXN1bHRzW2xvZ10gPSB7fQogICAgICAgICAgICAgICAgIHJleiA9IHJlc3VsdC5zcGxpdGxpbmVzKCkKIAogICAgICAgICAgICAgICAgIGZvciB4cmV6IGluIHJlejoKQEAgLTMzMyw3ICszMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcF9vdXRwdXQgPSBjaGVja19vdXRwdXQoY21kKS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICByZXN1bHRzW2xvZy5yZXBsYWNlKCd0YXJnZXRfbG9ncy8nLCcnKV1beHJlel09Z3JlcF9vdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tsb2ddW3hyZXpdPWdyZXBfb3V0cHV0CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGVybC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BlcmwucHkKaW5kZXggZDBiN2U4ZS4uYWZlZWIxOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGVybC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wZXJsLnB5CkBAIC0xLDM3ICsxLDEzIEBACiBpbXBvcnQgb3MKIAogZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKIGZyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKIAogY2xhc3MgUGVybFRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGNscy50Yy5maWxlc19kaXIsICd0ZXN0LnBsJykKLSAgICAgICAgZHN0ID0gJy90bXAvdGVzdC5wbCcKLSAgICAgICAgY2xzLnRjLnRhcmdldC5jb3B5VG8oc3JjLCBkc3QpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBkc3QgPSAnL3RtcC90ZXN0LnBsJwotICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gJXMnICUgZHN0KQotCi0gICAgQE9FVGVzdElEKDExNDEpCi0gICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQotICAgIEBPRUhhc1BhY2thZ2UoWydwZXJsJ10pCi0gICAgZGVmIHRlc3RfcGVybF9leGlzdHMoc2VsZik6Ci0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCd3aGljaCBwZXJsJykKLSAgICAgICAgbXNnID0gJ1BlcmwgYmluYXJ5IG5vdCBpbiBQQVRIIG9yIG5vdCBvbiB0YXJnZXQuJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKLQogICAgIEBPRVRlc3RJRCgyMDgpCi0gICAgQE9FVGVzdERlcGVuZHMoWydwZXJsLlBlcmxUZXN0LnRlc3RfcGVybF9leGlzdHMnXSkKKyAgICBAT0VIYXNQYWNrYWdlKFsncGVybCddKQogICAgIGRlZiB0ZXN0X3Blcmxfd29ya3Moc2VsZik6Ci0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdwZXJsIC90bXAvdGVzdC5wbCcpCi0gICAgICAgIG1zZyA9ICdFeGl0IHN0YXR1cyB3YXMgbm90IDAuIE91dHB1dDogJXMnICUgb3V0cHV0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQotCi0gICAgICAgIG1zZyA9ICdJbmNvcnJlY3Qgb3V0cHV0OiAlcycgJSBvdXRwdXQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJ0aGUgdmFsdWUgb2YgYSBpcyAwLjAxIiwgbXNnPW1zZykKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oInBlcmwgLWUgJyRfPVwiVXJ5eWIsIGpiZXlxXCI7IHRyL2EtekEtWi9uLXphLW1OLVpBLU0vO3ByaW50JyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgIkhlbGxvLCB3b3JsZCIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9weXRob24ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9weXRob24ucHkKaW5kZXggYmYzZTE3OS4uNDQxOWE5ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHl0aG9uLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B5dGhvbi5weQpAQCAtMSw0MyArMSwyMSBAQAotaW1wb3J0IG9zCi0KIGZyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcwogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECi1mcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCiAKIGNsYXNzIFB5dGhvblRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgotCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGNscy50Yy5maWxlc19kaXIsICd0ZXN0LnB5JykKLSAgICAgICAgZHN0ID0gJy90bXAvdGVzdC5weScKLSAgICAgICAgY2xzLnRjLnRhcmdldC5jb3B5VG8oc3JjLCBkc3QpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBkc3QgPSAnL3RtcC90ZXN0LnB5JwotICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gJXMnICUgZHN0KQotCi0gICAgQE9FVGVzdElEKDExNDUpCi0gICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQotICAgIEBPRUhhc1BhY2thZ2UoWydweXRob24tY29yZSddKQotICAgIGRlZiB0ZXN0X3B5dGhvbl9leGlzdHMoc2VsZik6Ci0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCd3aGljaCBweXRob24nKQotICAgICAgICBtc2cgPSAnUHl0aG9uIGJpbmFyeSBub3QgaW4gUEFUSCBvciBub3Qgb24gdGFyZ2V0LicKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCisgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICBpZiAicHl0aG9uMy1jb3JlIiBub3QgaW4gY2xzLnRjLmltYWdlX3BhY2thZ2VzOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIlB5dGhvbjMgbm90IG9uIHRhcmdldCIpCiAKICAgICBAT0VUZXN0SUQoOTY1KQotICAgIEBPRVRlc3REZXBlbmRzKFsncHl0aG9uLlB5dGhvblRlc3QudGVzdF9weXRob25fZXhpc3RzJ10pCi0gICAgZGVmIHRlc3RfcHl0aG9uX3N0ZG91dChzZWxmKToKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3B5dGhvbiAvdG1wL3Rlc3QucHknKQorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9weXRob24zKHNlbGYpOgorICAgICAgICBjbWQgPSAicHl0aG9uMyAtYyBcImltcG9ydCBjb2RlY3M7IHByaW50KGNvZGVjcy5lbmNvZGUoJ1VyeXliLCBqYmV5cScsICdyb3QxMycpKVwiIgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCiAgICAgICAgIG1zZyA9ICdFeGl0IHN0YXR1cyB3YXMgbm90IDAuIE91dHB1dDogJXMnICUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQogCiAgICAgICAgIG1zZyA9ICdJbmNvcnJlY3Qgb3V0cHV0OiAlcycgJSBvdXRwdXQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJ0aGUgdmFsdWUgb2YgYSBpcyAwLjAxIiwgbXNnPW1zZykKLQotICAgIEBPRVRlc3RJRCgxMTQ2KQotICAgIEBPRVRlc3REZXBlbmRzKFsncHl0aG9uLlB5dGhvblRlc3QudGVzdF9weXRob25fc3Rkb3V0J10pCi0gICAgZGVmIHRlc3RfcHl0aG9uX3Rlc3RmaWxlKHNlbGYpOgotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbHMgL3RtcC90ZXN0ZmlsZS5weXRob24nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPSdQeXRob24gdGVzdCBmaWxlIGdlbmVyYXRlIGZhaWxlZC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgIkhlbGxvLCB3b3JsZCIsIG1zZz1tc2cpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9ycG0ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9ycG0ucHkKaW5kZXggODRjNTlhNi4uMWU1ZTQ2MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcnBtLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3JwbS5weQpAQCAtMzksMzEgKzM5LDMxIEBACiAKICAgICAgICAgcGtnYXJjaCA9IGNscy50ZFsnVFVORV9QS0dBUkNIJ10ucmVwbGFjZSgnLScsICdfJykKICAgICAgICAgcnBtZGlyID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUiddLCAncnBtJywgcGtnYXJjaCkKLSAgICAgICAgIyBQaWNrIHJwbS1kb2MgYXMgYSB0ZXN0IGZpbGUgdG8gZ2V0IGluc3RhbGxlZCwgYmVjYXVzZSBpdCdzIHNtYWxsCisgICAgICAgICMgUGljayBiYXNlLXBhc3N3ZC1kb2MgYXMgYSB0ZXN0IGZpbGUgdG8gZ2V0IGluc3RhbGxlZCwgYmVjYXVzZSBpdCdzIHNtYWxsCiAgICAgICAgICMgYW5kIGl0IHdpbGwgYWx3YXlzIGJlIGJ1aWx0IGZvciBzdGFuZGFyZCB0YXJnZXRzCi0gICAgICAgIHJwbV9kb2MgPSAncnBtLWRvYy0qLiVzLnJwbScgJSBwa2dhcmNoCisgICAgICAgIHJwbV9kb2MgPSAnYmFzZS1wYXNzd2QtZG9jLSouJXMucnBtJyAlIHBrZ2FyY2gKICAgICAgICAgZm9yIGYgaW4gZm5tYXRjaC5maWx0ZXIob3MubGlzdGRpcihycG1kaXIpLCBycG1fZG9jKToKICAgICAgICAgICAgIHRlc3RfZmlsZSA9IG9zLnBhdGguam9pbihycG1kaXIsIGYpCi0gICAgICAgIGRzdCA9ICcvdG1wL3JwbS1kb2MucnBtJworICAgICAgICBkc3QgPSAnL3RtcC9iYXNlLXBhc3N3ZC1kb2MucnBtJwogICAgICAgICBjbHMudGMudGFyZ2V0LmNvcHlUbyh0ZXN0X2ZpbGUsIGRzdCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGRzdCA9ICcvdG1wL3JwbS1kb2MucnBtJworICAgICAgICBkc3QgPSAnL3RtcC9iYXNlLXBhc3N3ZC1kb2MucnBtJwogICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gLWYgJXMnICUgZHN0KQogCiAgICAgQE9FVGVzdElEKDE5MikKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3JwbS5ScG1CYXNpY1Rlc3QudGVzdF9ycG1faGVscCddKQogICAgIGRlZiB0ZXN0X3JwbV9pbnN0YWxsKHNlbGYpOgotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncnBtIC1pdmggL3RtcC9ycG0tZG9jLnJwbScpCi0gICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gaW5zdGFsbCBycG0tZG9jIHBhY2thZ2U6ICVzJyAlIG91dHB1dAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncnBtIC1pdmggL3RtcC9iYXNlLXBhc3N3ZC1kb2MucnBtJykKKyAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBpbnN0YWxsIGJhc2UtcGFzc3dkLWRvYyBwYWNrYWdlOiAlcycgJSBvdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCiAKICAgICBAT0VUZXN0SUQoMTk0KQogICAgIEBPRVRlc3REZXBlbmRzKFsncnBtLlJwbUluc3RhbGxSZW1vdmVUZXN0LnRlc3RfcnBtX2luc3RhbGwnXSkKICAgICBkZWYgdGVzdF9ycG1fcmVtb3ZlKHNlbGYpOgotICAgICAgICBzdGF0dXMsb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdycG0gLWUgcnBtLWRvYycpCi0gICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gcmVtb3ZlIHJwbS1kb2MgcGFja2FnZTogJXMnICUgb3V0cHV0CisgICAgICAgIHN0YXR1cyxvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3JwbSAtZSBiYXNlLXBhc3N3ZC1kb2MnKQorICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIHJlbW92ZSBiYXNlLXBhc3N3ZC1kb2MgcGFja2FnZTogJXMnICUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQogCiAgICAgQE9FVGVzdElEKDEwOTYpCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgRXhwZWN0ZWQ6ICAgIFRoZXJlIHNob3VsZCBiZSBzb21lIFJQTSBwcmVmaXhlZCBlbnRyaWVzIGluIHRoZSBhYm92ZSBmaWxlLgogICAgICAgICBQcm9kdWN0OiAgICAgQlNQcwogICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZHJ1IEdlb3JnZXNjdSA8YWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbT4KLSAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KICAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KICAgICAgICAgIiIiCiAgICAgICAgIGRiX2ZpbGVzX2NtZCA9ICdscyAvdmFyL2xpYi9ycG0vX19kYi4qJwpAQCAtMTE5LDE2ICsxMTksMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMsIG1zZz1tc2cpCiAKICAgICAgICAgIyBSZW1vdmUgdGhlIHBhY2thZ2UganVzdCBpbiBjYXNlCi0gICAgICAgIHNlbGYudGFyZ2V0LnJ1bigncnBtIC1lIHJwbS1kb2MnKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ3JwbSAtZSBiYXNlLXBhc3N3ZC1kb2MnKQogCiAgICAgICAgICMgSW5zdGFsbC9SZW1vdmUgYSBwYWNrYWdlIDEwIHRpbWVzCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdycG0gLWl2aCAvdG1wL3JwbS1kb2MucnBtJykKLSAgICAgICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gaW5zdGFsbCBycG0tZG9jIHBhY2thZ2UuIFJlYXNvbjoge30nLmZvcm1hdChvdXRwdXQpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncnBtIC1pdmggL3RtcC9iYXNlLXBhc3N3ZC1kb2MucnBtJykKKyAgICAgICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gaW5zdGFsbCBiYXNlLXBhc3N3ZC1kb2MgcGFja2FnZS4gUmVhc29uOiB7fScuZm9ybWF0KG91dHB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzLCBtc2c9bXNnKQogCi0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncnBtIC1lIHJwbS1kb2MnKQotICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byByZW1vdmUgcnBtLWRvYyBwYWNrYWdlLiBSZWFzb246IHt9Jy5mb3JtYXQob3V0cHV0KQorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3JwbSAtZSBiYXNlLXBhc3N3ZC1kb2MnKQorICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byByZW1vdmUgYmFzZS1wYXNzd2QtZG9jIHBhY2thZ2UuIFJlYXNvbjoge30nLmZvcm1hdChvdXRwdXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cywgbXNnPW1zZykKIAogICAgICAgICAjIGlmIHVzaW5nIHN5c3RlbWQgdGhpcyBzaG91bGQgZW5zdXJlIGFsbCBlbnRyaWVzIGFyZSBmbHVzaGVkIHRvIC92YXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3NjYW5lbGYucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zY2FuZWxmLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmExZjc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3NjYW5lbGYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1mcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAotZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQotCi1jbGFzcyBTY2FuZWxmVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6Ci0gICAgc2NhbmNtZCA9ICdzY2FuZWxmIC0tcXVpZXQgLS1yZWN1cnNpdmUgLS1tb3VudCAtLWxkcGF0aCAtLXBhdGgnCi0KLSAgICBAT0VUZXN0SUQoOTY2KQotICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKLSAgICBAT0VIYXNQYWNrYWdlKFsncGF4LXV0aWxzJ10pCi0gICAgZGVmIHRlc3Rfc2NhbmVsZl90ZXh0cmVsKHNlbGYpOgotICAgICAgICAjIHByaW50IFRFWFRSRUwgaW5mb3JtYXRpb24KLSAgICAgICAgY21kID0gJyVzIC0tdGV4dHJlbCcgJSBzZWxmLnNjYW5jbWQKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQotICAgICAgICBtc2cgPSAnXG4nLmpvaW4oW2NtZCwgb3V0cHV0XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuc3RyaXAoKSwgJycsIG1zZz1tc2cpCi0KLSAgICBAT0VUZXN0SUQoOTY3KQotICAgIEBPRVRlc3REZXBlbmRzKFsnc2NhbmVsZi5TY2FuZWxmVGVzdC50ZXN0X3NjYW5lbGZfdGV4dHJlbCddKQotICAgIGRlZiB0ZXN0X3NjYW5lbGZfcnBhdGgoc2VsZik6Ci0gICAgICAgICMgcHJpbnQgUlBBVEggaW5mb3JtYXRpb24KLSAgICAgICAgY21kID0gJyVzIC0tdGV4dHJlbCAtLXJwYXRoJyAlIHNlbGYuc2NhbmNtZAotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCi0gICAgICAgIG1zZyA9ICdcbicuam9pbihbY21kLCBvdXRwdXRdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5zdHJpcCgpLCAnJywgbXNnPW1zZykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N0YXAucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zdGFwLnB5CmluZGV4IGZjNzI4YmYuLjk2ZTE5N2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N0YXAucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weQpAQCAtMjUsNyArMjUsNyBAQAogICAgIGRlZiB0ZXN0X3N0YXAoc2VsZik6CiAgICAgICAgIGNtZHMgPSBbCiAgICAgICAgICAgICAnY2QgL3Vzci9zcmMva2VybmVsICYmIG1ha2Ugc2NyaXB0cyBwcmVwYXJlJywKLSAgICAgICAgICAgICdjZCAvbGliL21vZHVsZXMvYHVuYW1lIC1yYCAmJiAoaWYgWyAhIC1MIGJ1aWxkIF07IHRoZW4gbG4gLXMgL3Vzci9zcmMva2VybmVsIGJ1aWxkOyBmaSknLAorICAgICAgICAgICAgJ2NkIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgICYmIChpZiBbICEgLWUgYnVpbGQgXTsgdGhlbiBsbiAtcyAvdXNyL3NyYy9rZXJuZWwgYnVpbGQ7IGZpKScsCiAgICAgICAgICAgICAnc3RhcCAtLWRpc2FibGUtY2FjaGUgLURTVFBfTk9fVkVSUkVMX0NIRUNLIC90bXAvaGVsbG8uc3RwJwogICAgICAgICAgICAgXQogICAgICAgICBmb3IgY21kIGluIGNtZHM6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zeXN0ZW1kLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3lzdGVtZC5weQppbmRleCBkYjY5Mzg0Li40NjBiOGZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zeXN0ZW1kLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N5c3RlbWQucHkKQEAgLTExLDExICsxMSwxMSBAQAogY2xhc3MgU3lzdGVtZFRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgogCiAgICAgZGVmIHN5c3RlbWN0bChzZWxmLCBhY3Rpb249JycsIHRhcmdldD0nJywgZXhwZWN0ZWQ9MCwgdmVyYm9zZT1GYWxzZSk6Ci0gICAgICAgIGNvbW1hbmQgPSAnc3lzdGVtY3RsICVzICVzJyAlIChhY3Rpb24sIHRhcmdldCkKKyAgICAgICAgY29tbWFuZCA9ICdTWVNURU1EX0JVU19USU1FT1VUPTI0MHMgc3lzdGVtY3RsICVzICVzJyAlIChhY3Rpb24sIHRhcmdldCkKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY29tbWFuZCkKICAgICAgICAgbWVzc2FnZSA9ICdcbicuam9pbihbY29tbWFuZCwgb3V0cHV0XSkKICAgICAgICAgaWYgc3RhdHVzICE9IGV4cGVjdGVkIGFuZCB2ZXJib3NlOgotICAgICAgICAgICAgY21kID0gJ3N5c3RlbWN0bCBzdGF0dXMgLS1mdWxsICVzJyAlIHRhcmdldAorICAgICAgICAgICAgY21kID0gJ1NZU1RFTURfQlVTX1RJTUVPVVQ9MjQwcyBzeXN0ZW1jdGwgc3RhdHVzIC0tZnVsbCAlcycgJSB0YXJnZXQKICAgICAgICAgICAgIG1lc3NhZ2UgKz0gc2VsZi50YXJnZXQucnVuKGNtZClbMV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIGV4cGVjdGVkLCBtZXNzYWdlKQogICAgICAgICByZXR1cm4gb3V0cHV0CkBAIC02Myw3ICs2Myw3IEBACiAgICAgICAgICIiIgogICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyAoNjAgKiAyKQogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3N5c3RlbWN0bCAtLXN0YXRlPWFjdGl2YXRpbmcnKQorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ1NZU1RFTURfQlVTX1RJTUVPVVQ9MjQwcyBzeXN0ZW1jdGwgLS1zdGF0ZT1hY3RpdmF0aW5nJykKICAgICAgICAgICAgIGlmICIwIGxvYWRlZCB1bml0cyBsaXN0ZWQiIGluIG91dHB1dDoKICAgICAgICAgICAgICAgICByZXR1cm4gKFRydWUsICcnKQogICAgICAgICAgICAgaWYgdGltZS50aW1lKCkgPj0gZW5kdGltZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CmluZGV4IDAyOTQwMDMuLmE3ZjM4MjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQpAQCAtMTEyLDEyICsxMTIsOSBAQAogICAgICAgICAgICAgIyBYWFg6IERvbid0IGJhc2UgeW91ciB0YXJnZXRzIG9uIHRoaXMgY29kZSBpdCB3aWxsIGJlIHJlZmFjdG9yZWQKICAgICAgICAgICAgICMgaW4gdGhlIG5lYXIgZnV0dXJlLgogICAgICAgICAgICAgIyBDdXN0b20gdGFyZ2V0IG1vZHVsZSBsb2FkaW5nCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X21vZHVsZXNfcGF0aCA9IGt3YXJncy5nZXQoJ3RhcmdldF9tb2R1bGVzX3BhdGgnLCAnJykKLSAgICAgICAgICAgICAgICBjb250cm9sbGVyID0gT0VSdW50aW1lVGVzdENvbnRleHRFeGVjdXRvci5nZXRDb250cm9sbGVyTW9kdWxlKHRhcmdldF90eXBlLCB0YXJnZXRfbW9kdWxlc19wYXRoKQotICAgICAgICAgICAgICAgIHRhcmdldCA9IGNvbnRyb2xsZXIobG9nZ2VyLCB0YXJnZXRfaXAsIHNlcnZlcl9pcCwgKiprd2FyZ3MpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkZhaWxlZCB0byBpbXBvcnQgJXMgZnJvbSBhdmFpbGFibGUgY29udHJvbGxlciBtb2R1bGVzIiAlIHRhcmdldF90eXBlKQorICAgICAgICAgICAgdGFyZ2V0X21vZHVsZXNfcGF0aCA9IGt3YXJncy5nZXQoJ3RhcmdldF9tb2R1bGVzX3BhdGgnLCAnJykKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBPRVJ1bnRpbWVUZXN0Q29udGV4dEV4ZWN1dG9yLmdldENvbnRyb2xsZXJNb2R1bGUodGFyZ2V0X3R5cGUsIHRhcmdldF9tb2R1bGVzX3BhdGgpCisgICAgICAgICAgICB0YXJnZXQgPSBjb250cm9sbGVyKGxvZ2dlciwgdGFyZ2V0X2lwLCBzZXJ2ZXJfaXAsICoqa3dhcmdzKQogCiAgICAgICAgIHJldHVybiB0YXJnZXQKIApAQCAtMTczLDEwICsxNzAsNyBAQAogICAgIGRlZiBfbG9hZENvbnRyb2xsZXJGcm9tTW9kdWxlKHRhcmdldCwgbW9kdWxlbmFtZSk6CiAgICAgICAgIG9iaiA9IE5vbmUKICAgICAgICAgIyBpbXBvcnQgbW9kdWxlLCBhbGxvd2luZyBpdCB0byByYWlzZSBpbXBvcnQgZXhjZXB0aW9uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obW9kdWxlbmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW3RhcmdldF0pCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJldHVybiBvYmoKKyAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXyhtb2R1bGVuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbdGFyZ2V0XSkKICAgICAgICAgIyBsb29rIGZvciB0YXJnZXQgY2xhc3MgaW4gdGhlIG1vZHVsZSwgY2F0Y2hpbmcgYW55IGV4Y2VwdGlvbnMgYXMgaXQKICAgICAgICAgIyBpcyB2YWxpZCB0aGF0IGEgbW9kdWxlIG1heSBub3QgaGF2ZSB0aGUgdGFyZ2V0IGNsYXNzLgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2Fzc2ltcC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYXNzaW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YzFkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2Fzc2ltcC5weQpAQCAtMCwwICsxLDYzIEBACitpbXBvcnQgb3MsIHN1YnByb2Nlc3MsIHVuaXR0ZXN0CitpbXBvcnQgYmIKK2Zyb20gb2VxYS5zZGsuY2FzZSBpbXBvcnQgT0VTREtUZXN0Q2FzZQorCitmcm9tIG9lcWEudXRpbHMuc3VicHJvY2Vzc3R3ZWFrIGltcG9ydCBlcnJvcnNfaGF2ZV9vdXRwdXQKK2Vycm9yc19oYXZlX291dHB1dCgpCisKK2NsYXNzIEJ1aWxkQXNzaW1wKE9FU0RLVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgY2FzZSB0byBidWlsZCBhIHByb2plY3QgdXNpbmcgY21ha2UuCisgICAgIiIiCisKKyAgICB0ZF92YXJzID0gWydEQVRFVElNRScsICdUQVJHRVRfT1MnLCAnVEFSR0VUX0FSQ0gnXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLWNtYWtlIikgb3IKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJjbWFrZS1uYXRpdmUiKSk6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTmVlZHMgY21ha2UiKQorCisgICAgZGVmIGZldGNoKHNlbGYsIHdvcmtkaXIsIGRsX2RpciwgdXJsLCBhcmNoaXZlPU5vbmUpOgorICAgICAgICBpZiBub3QgYXJjaGl2ZToKKyAgICAgICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorICAgICAgICAgICAgYXJjaGl2ZSA9IG9zLnBhdGguYmFzZW5hbWUodXJscGFyc2UodXJsKS5wYXRoKQorCisgICAgICAgIGlmIGRsX2RpcjoKKyAgICAgICAgICAgIHRhcmJhbGwgPSBvcy5wYXRoLmpvaW4oZGxfZGlyLCBhcmNoaXZlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHModGFyYmFsbCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmJhbGwKKworICAgICAgICB0YXJiYWxsID0gb3MucGF0aC5qb2luKHdvcmtkaXIsIGFyY2hpdmUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsid2dldCIsICItTyIsIHRhcmJhbGwsIHVybF0pCisgICAgICAgIHJldHVybiB0YXJiYWxsCisKKyAgICBkZWYgdGVzdF9hc3NpbXAoc2VsZik6CisgICAgICAgIGltcG9ydCB0ZW1wZmlsZQorICAgICAgICBpbXBvcnQgb2UucWEsIG9lLmVsZgorCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0iYXNzaW1wIiwgZGlyPXNlbGYudGMuc2RrX2RpcikgYXMgdGVzdGRpcjoKKyAgICAgICAgICAgIGRsX2RpciA9IHNlbGYudGQuZ2V0KCdETF9ESVInLCBOb25lKQorICAgICAgICAgICAgdGFyYmFsbCA9IHNlbGYuZmV0Y2godGVzdGRpciwgZGxfZGlyLCAiaHR0cHM6Ly9naXRodWIuY29tL2Fzc2ltcC9hc3NpbXAvYXJjaGl2ZS92NC4xLjAudGFyLmd6IikKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsidGFyIiwgInhmIiwgdGFyYmFsbCwgIi1DIiwgdGVzdGRpcl0pCisKKyAgICAgICAgICAgIHNvdXJjZWRpciA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiYXNzaW1wLTQuMS4wIikgCisgICAgICAgICAgICBidWlsZGRpciA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiYnVpbGQiKQorICAgICAgICAgICAgaW5zdGFsbGRpciA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiaW5zdGFsbCIpCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoYnVpbGRkaXIpCisKKyAgICAgICAgICAgIHNlbGYuX3J1bigiY2QgJXMgJiYgY21ha2UgLURDTUFLRV9WRVJCT1NFX01BS0VGSUxFOkJPT0w9T04gJXMgIiAlIChidWlsZGRpciwgc291cmNlZGlyKSkKKyAgICAgICAgICAgIHNlbGYuX3J1bigiY21ha2UgLS1idWlsZCAlcyAtLSAtaiIgJSBidWlsZGRpcikKKyAgICAgICAgICAgIHNlbGYuX3J1bigiY21ha2UgLS1idWlsZCAlcyAtLXRhcmdldCBpbnN0YWxsIC0tIERFU1RESVI9JXMiICUgKGJ1aWxkZGlyLCBpbnN0YWxsZGlyKSkKKworICAgICAgICAgICAgZWxmID0gb2UucWEuRUxGRmlsZShvcy5wYXRoLmpvaW4oaW5zdGFsbGRpciwgInVzciIsICJsb2NhbCIsICJsaWIiLCAibGliYXNzaW1wLnNvLjQuMS4wIikpCisgICAgICAgICAgICBlbGYub3BlbigpCisKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bigiZWNobyAkT0VDT1JFX1RBUkdFVF9PUzokT0VDT1JFX1RBUkdFVF9BUkNIIikKKyAgICAgICAgICAgIHRhcmdldF9vcywgdGFyZ2V0X2FyY2ggPSBvdXRwdXQuc3RyaXAoKS5zcGxpdCgiOiIpCisgICAgICAgICAgICBtYWNoaW5lX2RhdGEgPSBvZS5lbGYubWFjaGluZV9kaWN0KE5vbmUpW3RhcmdldF9vc11bdGFyZ2V0X2FyY2hdCisgICAgICAgICAgICAobWFjaGluZSwgb3NhYmksIGFiaXZlcnNpb24sIGVuZGlhbiwgYml0cykgPSBtYWNoaW5lX2RhdGEKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWNoaW5lLCBlbGYubWFjaGluZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBlbGYuYWJpU2l6ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmRpYW4sIGVsZi5pc0xpdHRsZUVuZGlhbigpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGdhbGN1bGF0b3IucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weQppbmRleCA3ODBhZmNjLi4wNTBkMWIzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weQpAQCAtOCw5ICs4LDExIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImd0a1wrMyIpIG9yXAotICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgibGliZ3RrLTMuMCIpKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoImd0ayszIiwgbXVsdGlsaWI9VHJ1ZSkgb3IgXAorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgibGliZ3RrLTMuMCIsIG11bHRpbGliPVRydWUpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJHYWxjdWxhdG9yVGVzdCBjbGFzczogU0RLIGRvbid0IHN1cHBvcnQgZ3RrKzMiKQorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1nZXR0ZXh0LWRldiIpKToKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJHYWxjdWxhdG9yVGVzdCBjbGFzczogU0RLIGRvZXNuJ3QgY29udGFpbiBnZXR0ZXh0IikKIAogICAgIGRlZiB0ZXN0X2dhbGN1bGF0b3Ioc2VsZik6CiAgICAgICAgIGRsX2RpciA9IHNlbGYudGQuZ2V0KCdETF9ESVInLCBOb25lKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGx6aXAucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weQppbmRleCAzYTg5Y2U4Li5iMjhjYzNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weQpAQCAtMTcsOCArMTcsOCBAQAogCiAgICAgICAgIG1hY2hpbmUgPSBzZWxmLnRkLmdldCgiTUFDSElORSIpCiAKLSAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKSBvcgotICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ2NjIikpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIl5nY2MtIiwgcmVnZXg9VHJ1ZSkpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIlNESyBkb2Vzbid0IGNvbnRhaW4gYSBjcm9zcy1jYW5hZGlhbiB0b29sY2hhaW4iKQogCiAgICAgZGVmIHRlc3RfbHppcChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvZ2NjLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkKaW5kZXggZDExZjRiNi4uYjMyYjAxZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkKQEAgLTE4LDggKzE4LDggQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgbWFjaGluZSA9IHNlbGYudGQuZ2V0KCJNQUNISU5FIikKLSAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKSBvcgotICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ2NjIikpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIl5nY2MtIiwgcmVnZXg9VHJ1ZSkpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkdjY0NvbXBpbGVUZXN0IGNsYXNzOiBTREsgZG9lc24ndCBjb250YWluIGEgY3Jvc3MtY2FuYWRpYW4gdG9vbGNoYWluIikKIAogICAgIGRlZiB0ZXN0X2djY19jb21waWxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5CmluZGV4IDgwODU2NzguLmZmNTBiNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcGVybC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkKQEAgLTEsOCArMSw0IEBACi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotCi1mcm9tIG9lcWEuY29yZS51dGlscy5wYXRoIGltcG9ydCByZW1vdmVfc2FmZQogZnJvbSBvZXFhLnNkay5jYXNlIGltcG9ydCBPRVNES1Rlc3RDYXNlCiAKIGNsYXNzIFBlcmxUZXN0KE9FU0RLVGVzdENhc2UpOgpAQCAtMTIsMTcgKzgsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJwZXJsLW5hdGl2ZSIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJObyBwZXJsIHBhY2thZ2UgaW4gdGhlIFNESyIpCiAKLSAgICAgICAgZm9yIGYgaW4gWyd0ZXN0LnBsJ106Ci0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKHNlbGYudGMuZmlsZXNfZGlyLCBmKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYudGMuc2RrX2RpciwgZikpCi0gICAgICAgIHNlbGYudGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGtfZGlyLCAidGVzdC5wbCIpCi0KLSAgICBkZWYgdGVzdF9wZXJsX2V4aXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuKCd3aGljaCBwZXJsJykKLQotICAgIGRlZiB0ZXN0X3Blcmxfd29ya3Moc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bigncGVybCAlcycgJSBzZWxmLnRlc3RmaWxlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6Ci0gICAgICAgIHJlbW92ZV9zYWZlKHNlbGYudGVzdGZpbGUpCisgICAgZGVmIHRlc3RfcGVybChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY21kID0gInBlcmwgLWUgJyRfPVwiVXJ5eWIsIGpiZXlxXCI7IHRyL2EtekEtWi9uLXphLW1OLVpBLU0vO3ByaW50JyIKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bihjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgIkhlbGxvLCB3b3JsZCIpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJVbmV4cGVjdGVkIGV4aXQgJWQgKG91dHB1dCAlcykiICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9weXRob24ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weQppbmRleCA3MmRmY2M3Li5iZDVmMWY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weQpAQCAtMSwzMiArMSwxNyBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSBvZXFhLmNvcmUudXRpbHMucGF0aCBpbXBvcnQgcmVtb3ZlX3NhZmUKK2ltcG9ydCBzdWJwcm9jZXNzLCB1bml0dGVzdAogZnJvbSBvZXFhLnNkay5jYXNlIGltcG9ydCBPRVNES1Rlc3RDYXNlCiAKIGNsYXNzIFB5dGhvblRlc3QoT0VTREtUZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLXB5dGhvbiIpIG9yCi0gICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicHl0aG9uLW5hdGl2ZSIpKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstcHl0aG9uMyIpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicHl0aG9uMy1uYXRpdmUiKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTm8gcHl0aG9uIHBhY2thZ2UgaW4gdGhlIFNESyIpCiAKLSAgICAgICAgZm9yIGYgaW4gWyd0ZXN0LnB5J106Ci0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKHNlbGYudGMuZmlsZXNfZGlyLCBmKSwKLSAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGtfZGlyLCBmKSkKLQotICAgIGRlZiB0ZXN0X3B5dGhvbl9leGlzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bignd2hpY2ggcHl0aG9uJykKLQotICAgIGRlZiB0ZXN0X3B5dGhvbl9zdGRvdXQoc2VsZik6Ci0gICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bigncHl0aG9uICVzL3Rlc3QucHknICUgc2VsZi50Yy5zZGtfZGlyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5zdHJpcCgpLCAidGhlIHZhbHVlIG9mIGEgaXMgMC4wMSIsIG1zZz0iSW5jb3JyZWN0IG91dHB1dDogJXMiICUgb3V0cHV0KQotCi0gICAgZGVmIHRlc3RfcHl0aG9uX3Rlc3RmaWxlKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW4oJ2xzIC90bXAvdGVzdGZpbGUucHl0aG9uJykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgotICAgICAgICByZW1vdmVfc2FmZSgiJXMvdGVzdC5weSIgJSBzZWxmLnRjLnNka19kaXIpCi0gICAgICAgIHJlbW92ZV9zYWZlKCIvdG1wL3Rlc3RmaWxlLnB5dGhvbiIpCisgICAgZGVmIHRlc3RfcHl0aG9uMyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY21kID0gInB5dGhvbjMgLWMgXCJpbXBvcnQgY29kZWNzOyBwcmludChjb2RlY3MuZW5jb2RlKCdVcnl5YiwgamJleXEnLCAncm90MTMnKSlcIiIKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bihjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgIkhlbGxvLCB3b3JsZFxuIikKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlVuZXhwZWN0ZWQgZXhpdCAlZCAob3V0cHV0ICVzKSIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKaW5kZXggODJlNGMxOWIuLmFkYzQxNjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKQEAgLTIwLDE3ICsyMCwzMCBAQAogICAgICAgICBzZWxmLnRhcmdldF9wa2dfbWFuaWZlc3QgPSB0YXJnZXRfcGtnX21hbmlmZXN0CiAgICAgICAgIHNlbGYuaG9zdF9wa2dfbWFuaWZlc3QgPSBob3N0X3BrZ19tYW5pZmVzdAogCi0gICAgZGVmIF9oYXNQYWNrYWdlKHNlbGYsIG1hbmlmZXN0LCBwa2cpOgotICAgICAgICBmb3IgaG9zdF9wa2cgaW4gbWFuaWZlc3Qua2V5cygpOgotICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHBrZywgaG9zdF9wa2cpOgorICAgIGRlZiBfaGFzUGFja2FnZShzZWxmLCBtYW5pZmVzdCwgcGtnLCByZWdleD1GYWxzZSk6CisgICAgICAgIGlmIHJlZ2V4OgorICAgICAgICAgICAgIyBkbyByZWdleCBtYXRjaAorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShwa2cpCisgICAgICAgICAgICBmb3IgcCBpbiBtYW5pZmVzdC5rZXlzKCk6CisgICAgICAgICAgICAgICAgaWYgcGF0LnNlYXJjaChwKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgZG8gZXhhY3QgbWF0Y2gKKyAgICAgICAgICAgIGlmIHBrZyBpbiBtYW5pZmVzdC5rZXlzKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgaGFzSG9zdFBhY2thZ2Uoc2VsZiwgcGtnKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2hhc1BhY2thZ2Uoc2VsZi5ob3N0X3BrZ19tYW5pZmVzdCwgcGtnKQorICAgIGRlZiBoYXNIb3N0UGFja2FnZShzZWxmLCBwa2csIHJlZ2V4PUZhbHNlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc1BhY2thZ2Uoc2VsZi5ob3N0X3BrZ19tYW5pZmVzdCwgcGtnLCByZWdleD1yZWdleCkKIAotICAgIGRlZiBoYXNUYXJnZXRQYWNrYWdlKHNlbGYsIHBrZyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9oYXNQYWNrYWdlKHNlbGYudGFyZ2V0X3BrZ19tYW5pZmVzdCwgcGtnKQorICAgIGRlZiBoYXNUYXJnZXRQYWNrYWdlKHNlbGYsIHBrZywgbXVsdGlsaWI9RmFsc2UsIHJlZ2V4PUZhbHNlKToKKyAgICAgICAgaWYgbXVsdGlsaWI6CisgICAgICAgICAgICAjIG1hdGNoIG11bHRpbGliIGFjY29yZGluZyB0byBzZGtfZW52CisgICAgICAgICAgICBtbHMgPSBzZWxmLnRkLmdldCgnTVVMVElMSUJfVkFSSUFOVFMnLCAnJykuc3BsaXQoKQorICAgICAgICAgICAgZm9yIG1sIGluIG1sczoKKyAgICAgICAgICAgICAgICBpZiAoJ21sJyttbCkgaW4gc2VsZi5zZGtfZW52OgorICAgICAgICAgICAgICAgICAgICBwa2cgPSBtbCArICctJyArIHBrZworICAgICAgICByZXR1cm4gc2VsZi5faGFzUGFja2FnZShzZWxmLnRhcmdldF9wa2dfbWFuaWZlc3QsIHBrZywgcmVnZXg9cmVnZXgpCiAKIGNsYXNzIE9FU0RLVGVzdENvbnRleHRFeGVjdXRvcihPRVRlc3RDb250ZXh0RXhlY3V0b3IpOgogICAgIF9jb250ZXh0X2NsYXNzID0gT0VTREtUZXN0Q29udGV4dApAQCAtNjUsNiArNzgsOSBAQAogICAgICAgICBzZGtfcmdyb3VwLmFkZF9hcmd1bWVudCgnLS1zZGstZGlyJywgcmVxdWlyZWQ9RmFsc2UsIGFjdGlvbj0nc3RvcmUnLCAKICAgICAgICAgICAgIGhlbHA9J3NkayBpbnN0YWxsZWQgZGlyZWN0b3J5JykKIAorICAgICAgICBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnQoJy1qJywgJy0tbnVtLXByb2Nlc3NlcycsIGRlc3Q9J3Byb2Nlc3NlcycsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgIHR5cGU9aW50LCBoZWxwPSJudW1iZXIgb2YgcHJvY2Vzc2VzIHRvIGV4ZWN1dGUgaW4gcGFyYWxsZWwgd2l0aCIpCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9sb2FkX21hbmlmZXN0KG1hbmlmZXN0KToKICAgICAgICAgcGtnX21hbmlmZXN0ID0ge30KQEAgLTg1LDYgKzEwMSw3IEBACiAgICAgICAgICAgICAgICAgT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLl9sb2FkX21hbmlmZXN0KGFyZ3MudGFyZ2V0X21hbmlmZXN0KQogICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydob3N0X3BrZ19tYW5pZmVzdCddID0gXAogICAgICAgICAgICAgICAgIE9FU0RLVGVzdENvbnRleHRFeGVjdXRvci5fbG9hZF9tYW5pZmVzdChhcmdzLmhvc3RfbWFuaWZlc3QpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsncHJvY2Vzc2VzJ10gPSBhcmdzLnByb2Nlc3NlcwogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZ2V0X3Nka19lbnZpcm9ucyhzZGtfZGlyKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvdXRpbHMvc2RrYnVpbGRwcm9qZWN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay91dGlscy9zZGtidWlsZHByb2plY3QucHkKaW5kZXggNGUyNTExNC4uNmZlZDczZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay91dGlscy9zZGtidWlsZHByb2plY3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay91dGlscy9zZGtidWlsZHByb2plY3QucHkKQEAgLTIwLDEwICsyMCw5IEBACiAgICAgICAgIEJ1aWxkUHJvamVjdC5fX2luaXRfXyhzZWxmLCB1cmksIGZvbGRlcm5hbWUsIHRtcGRpcj10ZXN0cGF0aCwgZGxfZGlyPWRsX2RpcikKIAogICAgIGRlZiBkb3dubG9hZF9hcmNoaXZlKHNlbGYpOgotCiAgICAgICAgIHNlbGYuX2Rvd25sb2FkX2FyY2hpdmUoKQogCi0gICAgICAgIGNtZCA9ICd0YXIgeGYgJXMlcyAtQyAlcycgJSAoc2VsZi50YXJnZXRkaXIsIHNlbGYuYXJjaGl2ZSwgc2VsZi50YXJnZXRkaXIpCisgICAgICAgIGNtZCA9ICd0YXIgeGYgJXMgLUMgJXMnICUgKG9zLnBhdGguam9pbihzZWxmLnRhcmdldGRpciwgc2VsZi5hcmNoaXZlKSwgc2VsZi50YXJnZXRkaXIpCiAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkKIAogICAgICAgICAjQ2hhbmdlIHRhcmdldGRpciB0byBwcm9qZWN0IGZvbGRlcgpAQCAtNDIsNCArNDEsOSBAQAogCiAgICAgZGVmIF9ydW4oc2VsZiwgY21kKToKICAgICAgICAgc2VsZi5sb2coIlJ1bm5pbmcgLiAlczsgIiAlIHNlbGYuc2RrZW52ICsgY21kKQotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKCIuICVzOyAiICUgc2VsZi5zZGtlbnYgKyBjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIuICVzOyAiICUgc2VsZi5zZGtlbnYgKyBjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHByaW50KGV4Yy5vdXRwdXQuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgcmV0dXJuIGV4Yy5yZXR1cm5jb2RlCisgICAgICAgIHJldHVybiAwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKaW5kZXggZWE5MDUxNy4uMDg2MGU4ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gb2VxYS5zZGtleHQuY2FzZSBpbXBvcnQgT0VTREtFeHRUZXN0Q2FzZQotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAogZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCiAKQEAgLTQ1LDI4ICs0NCwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5zdGFydHN3aXRoKHNlbGYudGMuc2RrX2RpciksIFRydWUsIFwKICAgICAgICAgICAgIG1zZz0iU2VlbXMgdGhhdCBkZXZ0b29sIGlzbid0IHRoZSBlU0RLIG9uZTogJXMiICUgb3V0cHV0KQogCi0gICAgQE9FVGVzdERlcGVuZHMoWyd0ZXN0X2RldnRvb2xfbG9jYXRpb24nXSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9yZXNldChzZWxmKToKICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCBteWFwcCAlcycgJSBzZWxmLm15YXBwX2RzdCkKICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0IG15YXBwJykKIAogICAgIEBPRVRlc3RJRCgxNjA1KQotICAgIEBPRVRlc3REZXBlbmRzKFsndGVzdF9kZXZ0b29sX2xvY2F0aW9uJ10pCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZF9tYWtlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2RldnRvb2xfYnVpbGQoc2VsZi5teWFwcF9kc3QpCiAKICAgICBAT0VUZXN0SUQoMTYwNikKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbiddKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRfZXNka19wYWNrYWdlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2RldnRvb2xfYnVpbGRfcGFja2FnZShzZWxmLm15YXBwX2RzdCkKIAogICAgIEBPRVRlc3RJRCgxNjA3KQotICAgIEBPRVRlc3REZXBlbmRzKFsndGVzdF9kZXZ0b29sX2xvY2F0aW9uJ10pCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZF9jbWFrZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9kZXZ0b29sX2J1aWxkKHNlbGYubXlhcHBfY21ha2VfZHN0KQogCiAgICAgQE9FVGVzdElEKDE2MDgpCi0gICAgQE9FVGVzdERlcGVuZHMoWyd0ZXN0X2RldnRvb2xfbG9jYXRpb24nXSkKICAgICBkZWYgdGVzdF9leHRlbmRfYXV0b3Rvb2xzX3JlY2lwZV9jcmVhdGlvbihzZWxmKToKICAgICAgICAgcmVxID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9yZGZhL2xpYnJkZmEnCiAgICAgICAgIHJlY2lwZSA9ICJsaWJyZGZhIgpAQCAtNzgsNyArNzIsNiBAQAogICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0ICVzJyAlIHJlY2lwZSkKIAogICAgIEBPRVRlc3RJRCgxNjA5KQotICAgIEBPRVRlc3REZXBlbmRzKFsndGVzdF9kZXZ0b29sX2xvY2F0aW9uJ10pCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9rZXJuZWxtb2R1bGUoc2VsZik6CiAgICAgICAgIGRvY2ZpbGUgPSAnaHR0cHM6Ly9naXRodWIuY29tL3VtbGFldXRlL3Y0bDJsb29wYmFjay5naXQnCiAgICAgICAgIHJlY2lwZSA9ICd2NGwybG9vcGJhY2stZHJpdmVyJwpAQCAtODksNyArODIsNiBAQAogICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0ICVzJyAlIHJlY2lwZSkKIAogICAgIEBPRVRlc3RJRCgxNjEwKQotICAgIEBPRVRlc3REZXBlbmRzKFsndGVzdF9kZXZ0b29sX2xvY2F0aW9uJ10pCiAgICAgZGVmIHRlc3RfcmVjaXBlc19mb3Jfbm9kZWpzKHNlbGYpOgogICAgICAgICBwYWNrYWdlX25vZGVqcyA9ICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT13aW5zdG9uO3ZlcnNpb249Mi4yLjAiCiAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBhZGQgJXMgJyAlIHBhY2thZ2Vfbm9kZWpzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQppbmRleCAyZTQ0NmIwLi45YzA4ZDU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQpAQCAtMjE1LDMxICsyMTUsMzEgQEAKICAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCiAKICAgICBkZWYgcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSk6Ci0gICAgICAgICIiIlJldHVybiBhYnNvbHV0ZSBwYXRoIG9mIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICAiIiJSZXR1cm4gYWJzb2x1dGUgcGF0aCBvZiBtZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgcmVjaXBlLCAndGVzdF9yZWNpcGUuaW5jJykKIAogICAgIGRlZiB3cml0ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGUgdG8gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCisgICAgICAgICIiIldyaXRlIHRvIG1ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgogICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCiAgICAgICAgIGZ0b29scy53cml0ZV9maWxlKGluY19maWxlLCBkYXRhKQogICAgICAgICByZXR1cm4gaW5jX2ZpbGUKIAogICAgIGRlZiBhcHBlbmRfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6Ci0gICAgICAgICIiIkFwcGVuZCBkYXRhIHRvIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICAiIiJBcHBlbmQgZGF0YSB0byBtZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKICAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBcHBlbmRpbmcgdG86ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCiAgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShpbmNfZmlsZSwgZGF0YSkKICAgICAgICAgcmV0dXJuIGluY19maWxlCiAKICAgICBkZWYgcmVtb3ZlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgotICAgICAgICAiIiJSZW1vdmUgZGF0YSBmcm9tIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICAiIiJSZW1vdmUgZGF0YSBmcm9tIG1ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgogICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCiAgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKGluY19maWxlLCBkYXRhKQogCiAgICAgZGVmIGRlbGV0ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlKToKLSAgICAgICAgIiIiRGVsZXRlIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyBmaWxlIiIiCisgICAgICAgICIiIkRlbGV0ZSBtZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMgZmlsZSIiIgogICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkRlbGV0aW5nIGZpbGU6ICVzIiAlIGluY19maWxlKQogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJsYXllcnMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJsYXllcnMucHkKaW5kZXggOTBhMjI0OS4uNDQ3YzU0YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYmxheWVycy5weQpAQCAtMiw3ICsyLDcgQEAKIGltcG9ydCByZQogCiBpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCiAKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRApAQCAtODUsNiArODUsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1pIG5vbmV4aXN0ZW50Y2xhc3Mgc2hvdWxkIGhhdmUgZmFpbGVkJykKICAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6JywgcmVzdWx0Lm91dHB1dCkKIAorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfY3JlYXRlbGF5ZXIoc2VsZik6CisgICAgICAgIHByaW9yaXR5ID0gMTAKKyAgICAgICAgbGF5ZXJuYW1lID0gJ3Rlc3QtYml0YmFrZWxheWVyLWxheWVyY3JlYXRlJworICAgICAgICBsYXllcnBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgbGF5ZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGxheWVycGF0aCksICclcyBzaG91bGQgbm90IGV4aXN0IGF0IHRoaXMgcG9pbnQgaW4gdGltZScgJSBsYXllcnBhdGgpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIC0tcHJpb3JpdHk9JWQgJXMnICUgKHByaW9yaXR5LCBsYXllcnBhdGgpKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGxheWVycGF0aCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgbGF5ZXJwYXRoKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgbGF5ZXJwYXRoKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgZmluZF9pbl9jb250ZW50cyA9IHJlLnNlYXJjaChyZS5lc2NhcGUobGF5ZXJuYW1lKSArIHInXHMrJyArIHJlLmVzY2FwZShsYXllcnBhdGgpICsgcidccysnICsgcmUuZXNjYXBlKHN0cihwcmlvcml0eSkpLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9pbl9jb250ZW50cywgIiVzIG5vdCBmb3VuZCBpbiBsYXllcnNcbiVzIiAlIChsYXllcm5hbWUsIHJlc3VsdC5vdXRwdXQpKQorCisgICAgICAgIGxheWVydmFycyA9IFsnQkJGSUxFX1BSSU9SSVRZJywgJ0JCRklMRV9QQVRURVJOJywgJ0xBWUVSREVQRU5EUycsICdMQVlFUlNFUklFU19DT01QQVQnXQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydCQkZJTEVfQ09MTEVDVElPTlMnXSArIFsnJXNfJXMnICUgKHYsIGxheWVybmFtZSkgZm9yIHYgaW4gbGF5ZXJ2YXJzXSkKKworICAgICAgICBmb3IgdiBpbiBsYXllcnZhcnM6CisgICAgICAgICAgICB2YXJuYW1lID0gJyVzXyVzJyAlICh2LCBsYXllcm5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShiYl92YXJzW3Zhcm5hbWVdLCAiJXMgbm90IGZvdW5kIiAlIHZhcm5hbWUpCisKKyAgICAgICAgZmluZF9pbl9jb250ZW50cyA9IHJlLnNlYXJjaChyJyhefFxzKScgKyByZS5lc2NhcGUobGF5ZXJuYW1lKSArIHInKCR8XHMpJywgYmJfdmFyc1snQkJGSUxFX0NPTExFQ1RJT05TJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2luX2NvbnRlbnRzLCAiJXMgbm90IGluIEJCRklMRV9DT0xMRUNUSU9OUyIgJSBsYXllcm5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYl92YXJzWydCQkZJTEVfUFJJT1JJVFlfJXMnICUgbGF5ZXJuYW1lXSwgc3RyKHByaW9yaXR5KSwgJ0JCRklMRV9QUklPUklUWV8lcyAhPSAlZCcgJSAobGF5ZXJuYW1lLCBwcmlvcml0eSkpCisKICAgICBkZWYgZ2V0X3JlY2lwZV9iYXNlbmFtZShzZWxmLCByZWNpcGUpOgogICAgICAgICByZWNpcGVfZmlsZSA9ICIiCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIC1mICVzIiAlIHJlY2lwZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKaW5kZXggMzUwNjE0OS4uMDA1ZmRkMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKQEAgLTE1LDE2ICsxNSwyNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBsCiAKICAgICBAT0VUZXN0SUQoNzg5KQorICAgICMgVGVzdCBiaXRiYWtlIGNhbiBydW4gZnJvbSB0aGUgPGJ1aWxkZGlyPi9jb25mIGRpcmVjdG9yeQogICAgIGRlZiB0ZXN0X3J1bl9iaXRiYWtlX2Zyb21fZGlyXzEoc2VsZik6CiAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJykuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSBcImNvbmZcIiBkaXIiKQogCiAgICAgQE9FVGVzdElEKDc5MCkKKyAgICAjIFRlc3QgYml0YmFrZSBjYW4gcnVuIGZyb20gdGhlIDxidWlsZGRpcj4ncyBwYXJlbnQgZGlyZWN0b3J5CiAgICAgZGVmIHRlc3RfcnVuX2JpdGJha2VfZnJvbV9kaXJfMihzZWxmKToKICAgICAgICAgbXlfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgbXlfZW52WydCQlBBVEgnXSA9IG15X2VudlsnQlVJTERESVInXQogICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUob3MuZW52aXJvblsnQlVJTERESVInXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnLCBlbnY9bXlfZW52KS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIGJ1aWxkZGlyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRiYWtlKCctZScsIGVudj1teV9lbnYpLnN0YXR1cywgMCwgbXNnID0gImJpdGJha2UgY291bGRuJ3QgcnVuIGZyb20gYnVpbGRkaXIncyBwYXJlbnQgZGlyZWN0b3J5IikKKworICAgICMgVGVzdCBiaXRiYWtlIGNhbiBydW4gZnJvbSBzb21lIG90aGVyIHJhbmRvbSBzeXN0ZW0gbG9jYXRpb24gKHdlIHVzZSAvdG1wLykKKyAgICBkZWYgdGVzdF9ydW5fYml0YmFrZV9mcm9tX2Rpcl8zKHNlbGYpOgorICAgICAgICBteV9lbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBteV9lbnZbJ0JCUEFUSCddID0gbXlfZW52WydCVUlMRERJUiddCisgICAgICAgIG9zLmNoZGlyKCIvdG1wLyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnLCBlbnY9bXlfZW52KS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIC90bXAvIikKKwogCiAgICAgQE9FVGVzdElEKDgwNikKICAgICBkZWYgdGVzdF9ldmVudF9oYW5kbGVyKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKaW5kZXggMjQ1OTdhYy4uZjIzNGJhYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5CkBAIC0xODAsMyArMTgwLDI2IEBACiAKICAgICAgICAgYml0YmFrZSgnZ2NjLXJ1bnRpbWUgbGliZ2ZvcnRyYW4nKQogCitjbGFzcyBTb3VyY2VNaXJyb3JpbmcoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAjIENhbiB3ZSBkb3dubG9hZCBldmVyeXRoaW5nIGZyb20gdGhlIFlvY3RvIFNvdXJjZXMgTWlycm9yIG92ZXIgaHR0cCBvbmx5CisgICAgZGVmIHRlc3RfeW9jdG9fc291cmNlX21pcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitCQl9BTExPV0VEX05FVFdPUktTID0gImRvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnIgorTUlSUk9SUyA9ICIiCitETF9ESVIgPSAiJHtUTVBESVJ9L3Rlc3RfZG93bmxvYWRzIgorUFJFTUlSUk9SUyA9ICJcXAorICAgIGJ6cjovLy4qLy4qICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBjdnM6Ly8uKi8uKiAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgZ2l0Oi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiBcXAorICAgIGdpdHNtOi8vLiovLiogaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBoZzovLy4qLy4qICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgb3NjOi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiBcXAorICAgIHA0Oi8vLiovLiogICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBzdm46Ly8uKi8uKiAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgZnRwOi8vLiovLiogICAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiBcXAorICAgIGh0dHA6Ly8uKi8uKiAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBodHRwczovLy4qLy4qICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIgorIiIiKQorCisgICAgICAgIGJpdGJha2UoIndvcmxkIC0tcnVuYWxsIGZldGNoIikKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQppbmRleCBkNWI2YTQ2Li45ZWI5YmFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQpAQCAtMTEsOSArMTEsMTI0IEBACiBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzLCBydW5xZW11LCBnZXRfdGVzdF9sYXllcgogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECiAKK29sZG1ldGFwYXRoID0gTm9uZQorCitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICBpbXBvcnQgYmIudXRpbHMKKworICAgIGdsb2JhbCB0ZW1wbGF5ZXJkaXIKKyAgICB0ZW1wbGF5ZXJkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICBjb3JlY29weWRpciA9IG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsICdjb3JlLWNvcHknKQorICAgIGJibGF5ZXJzX2NvbmYgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnQlVJTERESVInXSwgJ2NvbmYnLCAnYmJsYXllcnMuY29uZicpCisgICAgZWRpdGVkX2xheWVycyA9IFtdCisKKyAgICAjIFdlIG5lZWQgdG8gdGFrZSBhIGNvcHkgb2YgdGhlIG1ldGEgbGF5ZXIgc28gd2UgY2FuIG1vZGlmeSBpdCBhbmQgbm90CisgICAgIyBoYXZlIGFueSByYWNlcyBhZ2FpbnN0IG90aGVyIHRlc3RzIHRoYXQgbWlnaHQgYmUgcnVubmluZyBpbiBwYXJhbGxlbAorICAgICMgaG93ZXZlciB0aGluZ3MgbGlrZSBDT1JFQkFTRSBtZWFuIHRoYXQgeW91IGNhbid0IGp1c3QgY29weSBtZXRhLCB5b3UKKyAgICAjIG5lZWQgdGhlIHdob2xlIHJlcG9zaXRvcnkuCisgICAgZGVmIGJibGF5ZXJzX2VkaXRfY2IobGF5ZXJwYXRoLCBjYW5vbmljYWxfbGF5ZXJwYXRoKToKKyAgICAgICAgZ2xvYmFsIG9sZG1ldGFwYXRoCisgICAgICAgIGlmIG5vdCBjYW5vbmljYWxfbGF5ZXJwYXRoLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICAjIFRoaXMgaGVscHMgdXMgbWF0Y2ggZXhhY3RseSB3aGVuIHdlJ3JlIHVzaW5nIHRoaXMgcGF0aCBsYXRlcgorICAgICAgICAgICAgY2Fub25pY2FsX2xheWVycGF0aCArPSAnLycKKyAgICAgICAgaWYgbm90IGVkaXRlZF9sYXllcnMgYW5kIGNhbm9uaWNhbF9sYXllcnBhdGguZW5kc3dpdGgoJy9tZXRhLycpOgorICAgICAgICAgICAgY2Fub25pY2FsX2xheWVycGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoY2Fub25pY2FsX2xheWVycGF0aCkgKyAnLycKKyAgICAgICAgICAgIGVkaXRlZF9sYXllcnMuYXBwZW5kKGxheWVycGF0aCkKKyAgICAgICAgICAgIG9sZG1ldGFwYXRoID0gb3MucGF0aC5yZWFscGF0aChsYXllcnBhdGgpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgY3dkPWNhbm9uaWNhbF9sYXllcnBhdGgpCisgICAgICAgICAgICBvbGRyZXBvcm9vdCA9IHJlc3VsdC5vdXRwdXQucnN0cmlwKCkKKyAgICAgICAgICAgIG5ld21ldGFwYXRoID0gb3MucGF0aC5qb2luKGNvcmVjb3B5ZGlyLCBvcy5wYXRoLnJlbHBhdGgob2xkbWV0YXBhdGgsIG9sZHJlcG9yb290KSkKKyAgICAgICAgICAgIHJ1bkNtZCgnZ2l0IGNsb25lICVzICVzJyAlIChvbGRyZXBvcm9vdCwgY29yZWNvcHlkaXIpLCBjd2Q9dGVtcGxheWVyZGlyKQorICAgICAgICAgICAgIyBOb3cgd2UgbmVlZCB0byBjb3B5IGFueSBtb2RpZmllZCBmaWxlcworICAgICAgICAgICAgIyBZb3UgbWlnaHQgYXNrICJ3aHkgbm90IGp1c3QgY29weSB0aGUgZW50aXJlIHRyZWUgaW5zdGVhZCBvZgorICAgICAgICAgICAgIyBjbG9uaW5nIGFuZCBkb2luZyB0aGlzPyIgLSB3ZWxsLCB0aGUgcHJvYmxlbSB3aXRoIHRoYXQgaXMKKyAgICAgICAgICAgICMgVE1QRElSIG9yIGFuIGVxdWFsbHkgbGFyZ2Ugc3ViZGlyZWN0b3J5IG1pZ2h0IGV4aXN0CisgICAgICAgICAgICAjIHVuZGVyIENPUkVCQVNFIGFuZCB3ZSBkb24ndCB3YW50IHRvIGNvcHkgdGhhdCwgc28gd2UgaGF2ZQorICAgICAgICAgICAgIyB0byBiZSBzZWxlY3RpdmUuCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9b2xkcmVwb3Jvb3QpCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyBNICcpIG9yIGxpbmUuc3RhcnRzd2l0aCgnPz8gJyk6CisgICAgICAgICAgICAgICAgICAgIHJlbHB0aCA9IGxpbmUuc3BsaXQoKVsxXQorICAgICAgICAgICAgICAgICAgICBwdGggPSBvcy5wYXRoLmpvaW4ob2xkcmVwb3Jvb3QsIHJlbHB0aCkKKyAgICAgICAgICAgICAgICAgICAgaWYgcHRoLnN0YXJ0c3dpdGgoY2Fub25pY2FsX2xheWVycGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiByZWxwdGguZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKGNvcmVjb3B5ZGlyLCByZWxwdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHB0aCwgZGVzdGRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihjb3JlY29weWRpciwgb3MucGF0aC5kaXJuYW1lKHJlbHB0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKHB0aCwgZGVzdGRpcikKKyAgICAgICAgICAgIHJldHVybiBuZXdtZXRhcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGxheWVycGF0aAorICAgIGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBOb25lLCBOb25lLCBiYmxheWVyc19lZGl0X2NiKQorCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBpZiBvbGRtZXRhcGF0aDoKKyAgICAgICAgZWRpdGVkX2xheWVycyA9IFtdCisgICAgICAgIGRlZiBiYmxheWVyc19lZGl0X2NiKGxheWVycGF0aCwgY2Fub25pY2FsX2xheWVycGF0aCk6CisgICAgICAgICAgICBpZiBub3QgZWRpdGVkX2xheWVycyBhbmQgY2Fub25pY2FsX2xheWVycGF0aC5lbmRzd2l0aCgnL21ldGEnKToKKyAgICAgICAgICAgICAgICBlZGl0ZWRfbGF5ZXJzLmFwcGVuZChsYXllcnBhdGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9sZG1ldGFwYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBsYXllcnBhdGgKKyAgICAgICAgYmJsYXllcnNfY29uZiA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydCVUlMRERJUiddLCAnY29uZicsICdiYmxheWVycy5jb25mJykKKyAgICAgICAgYmIudXRpbHMuZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIE5vbmUsIE5vbmUsIGJibGF5ZXJzX2VkaXRfY2IpCisgICAgc2h1dGlsLnJtdHJlZSh0ZW1wbGF5ZXJkaXIpCisKIGNsYXNzIERldnRvb2xCYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKLSAgICBidWZmZXIgPSBUcnVlCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoRGV2dG9vbEJhc2UsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1RPUERJUicsICdTU1RBVEVfRElSJ10pCisgICAgICAgIGNscy5vcmlnaW5hbF9zc3RhdGUgPSBiYl92YXJzWydTU1RBVEVfRElSJ10KKyAgICAgICAgY2xzLmRldnRvb2xfc3N0YXRlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ1RPUERJUiddLCAnc3N0YXRlX2RldnRvb2wnKQorICAgICAgICBjbHMuc3N0YXRlX2NvbmYgID0gJ1NTVEFURV9ESVIgPSAiJXMiXG4nICUgY2xzLmRldnRvb2xfc3N0YXRlCisgICAgICAgIGNscy5zc3RhdGVfY29uZiArPSAoJ1NTVEFURV9NSVJST1JTICs9ICJmaWxlOi8vLiogZmlsZTovLy8lcy9QQVRIIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgY2xzLm9yaWdpbmFsX3NzdGF0ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5sb2dnZXIuZGVidWcoJ0RlbGV0aW5nIGRldnRvb2wgc3N0YXRlIGNhY2hlIG9uICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKKyAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQorICAgICAgICBzdXBlcihEZXZ0b29sQmFzZSwgY2xzKS50ZWFyRG93bkNsYXNzKCkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjYXNlIHNldHVwIGZ1bmN0aW9uIiIiCisgICAgICAgIHN1cGVyKERldnRvb2xCYXNlLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYud29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd3b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhzZWxmLnNzdGF0ZV9jb25mKQorCisgICAgZGVmIF9jaGVja19zcmNfcmVwbyhzZWxmLCByZXBvX2Rpcik6CisgICAgICAgICIiIkNoZWNrIHNyY3RyZWUgZ2l0IHJlcG9zaXRvcnkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHJlcG9fZGlyLCAnLmdpdCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgbm90IGZvdW5kJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXJlcG9fZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NyZWF0ZWQgZ2l0IHJlcG8gaXMgbm90IGNsZWFuJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3ltYm9saWMtcmVmIEhFQUQnLCBjd2Q9cmVwb19kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zdHJpcCgpLCAicmVmcy9oZWFkcy9kZXZ0b29sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnV3JvbmcgYnJhbmNoIGluIGdpdCByZXBvJykKKworICAgIGRlZiBfY2hlY2tfcmVwb19zdGF0dXMoc2VsZiwgcmVwb19kaXIsIGV4cGVjdGVkX3N0YXR1cyk6CisgICAgICAgICIiIkNoZWNrIHRoZSB3b3JrdHJlZSBzdGF0dXMgb2YgYSByZXBvc2l0b3J5IiIiCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAuIC0tcG9yY2VsYWluJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1yZXBvX2RpcikKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBmb3IgaW5kLCAoZl9zdGF0dXMsIGZuX3JlKSBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfc3RhdHVzKToKKyAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChmbl9yZSwgbGluZVszOl0pOgorICAgICAgICAgICAgICAgICAgICBpZiBmX3N0YXR1cyAhPSBsaW5lWzoyXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBzdGF0dXMgaW4gbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzLnBvcChpbmQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBtb2RpZmllZCBmaWxlIGluIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgIGlmIGV4cGVjdGVkX3N0YXR1czoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTWlzc2luZyBmaWxlIGNoYW5nZXM6ICVzJyAlIGV4cGVjdGVkX3N0YXR1cykKIAogICAgIGRlZiBfdGVzdF9yZWNpcGVfY29udGVudHMoc2VsZiwgcmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBjaGVja2luaGVyaXRzKToKICAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdyJykgYXMgZjoKQEAgLTExOCw1OCArMjMzLDYgQEAKIAogY2xhc3MgRGV2dG9vbFRlc3RzKERldnRvb2xCYXNlKToKIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgY2xzKS5zZXRVcENsYXNzKCkKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVE9QRElSJywgJ1NTVEFURV9ESVInXSkKLSAgICAgICAgY2xzLm9yaWdpbmFsX3NzdGF0ZSA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQotICAgICAgICBjbHMuZGV2dG9vbF9zc3RhdGUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snVE9QRElSJ10sICdzc3RhdGVfZGV2dG9vbCcpCi0gICAgICAgIGNscy5zc3RhdGVfY29uZiAgPSAnU1NUQVRFX0RJUiA9ICIlcyJcbicgJSBjbHMuZGV2dG9vbF9zc3RhdGUKLSAgICAgICAgY2xzLnNzdGF0ZV9jb25mICs9ICgnU1NUQVRFX01JUlJPUlMgKz0gImZpbGU6Ly8uKiBmaWxlOi8vLyVzL1BBVEgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjbHMub3JpZ2luYWxfc3N0YXRlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmxvZ2dlci5kZWJ1ZygnRGVsZXRpbmcgZGV2dG9vbCBzc3RhdGUgY2FjaGUgb24gJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQotICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcycgJSBjbHMuZGV2dG9vbF9zc3RhdGUpCi0gICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgY2xzKS50ZWFyRG93bkNsYXNzKCkKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjYXNlIHNldHVwIGZ1bmN0aW9uIiIiCi0gICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgc2VsZikuc2V0VXAoKQotICAgICAgICBzZWxmLndvcmtzcGFjZWRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksCi0gICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoc2VsZi5zc3RhdGVfY29uZikKLQotICAgIGRlZiBfY2hlY2tfc3JjX3JlcG8oc2VsZiwgcmVwb19kaXIpOgotICAgICAgICAiIiJDaGVjayBzcmN0cmVlIGdpdCByZXBvc2l0b3J5IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihyZXBvX2RpciwgJy5naXQnKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIG5vdCBmb3VuZCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD1yZXBvX2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVhdGVkIGdpdCByZXBvIGlzIG5vdCBjbGVhbicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN5bWJvbGljLXJlZiBIRUFEJywgY3dkPXJlcG9fZGlyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgInJlZnMvaGVhZHMvZGV2dG9vbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1dyb25nIGJyYW5jaCBpbiBnaXQgcmVwbycpCi0KLSAgICBkZWYgX2NoZWNrX3JlcG9fc3RhdHVzKHNlbGYsIHJlcG9fZGlyLCBleHBlY3RlZF9zdGF0dXMpOgotICAgICAgICAiIiJDaGVjayB0aGUgd29ya3RyZWUgc3RhdHVzIG9mIGEgcmVwb3NpdG9yeSIiIgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLiAtLXBvcmNlbGFpbicsCi0gICAgICAgICAgICAgICAgICAgICAgICBjd2Q9cmVwb19kaXIpCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgZm9yIGluZCwgKGZfc3RhdHVzLCBmbl9yZSkgaW4gZW51bWVyYXRlKGV4cGVjdGVkX3N0YXR1cyk6Ci0gICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goZm5fcmUsIGxpbmVbMzpdKToKLSAgICAgICAgICAgICAgICAgICAgaWYgZl9zdGF0dXMgIT0gbGluZVs6Ml06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgc3RhdHVzIGluIGxpbmU6ICVzJyAlIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0YXR1cy5wb3AoaW5kKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgbW9kaWZpZWQgZmlsZSBpbiBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICBpZiBleHBlY3RlZF9zdGF0dXM6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ01pc3NpbmcgZmlsZSBjaGFuZ2VzOiAlcycgJSBleHBlY3RlZF9zdGF0dXMpCi0KICAgICBAT0VUZXN0SUQoMTE1OCkKICAgICBkZWYgdGVzdF9jcmVhdGVfd29ya3NwYWNlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKQEAgLTE5MSw2ICsyNTQsOCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi53b3Jrc3BhY2VkaXIsIHJlc3VsdC5vdXRwdXQpCiAKK2NsYXNzIERldnRvb2xBZGRUZXN0cyhEZXZ0b29sQmFzZSk6CisKICAgICBAT0VUZXN0SUQoMTE1OSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZChzZWxmKToKICAgICAgICAgIyBGZXRjaCBzb3VyY2UKQEAgLTIzNSw2ICszMDAsOCBAQAogCiAgICAgQE9FVGVzdElEKDE0MjMpCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZ2l0X2xvY2FsKHNlbGYpOgorICAgICAgICAjIFdlIG5lZWQgZGJ1cyBidWlsdCBzbyB0aGF0IERFUEVORFMgcmVjb2duaXRpb24gd29ya3MKKyAgICAgICAgYml0YmFrZSgnZGJ1cycpCiAgICAgICAgICMgRmV0Y2ggc291cmNlIGZyb20gYSByZW1vdGUgVVJMLCBidXQgZG8gaXQgb3V0c2lkZSBvZiBkZXZ0b29sCiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQpAQCAtNDQ0LDYgKzUxMSw4IEBACiAgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UodGVzdHZlciwgJyR7UFZ9JykKICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKIAorY2xhc3MgRGV2dG9vbE1vZGlmeVRlc3RzKERldnRvb2xCYXNlKToKKwogICAgIEBPRVRlc3RJRCgxMTY0KQogICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5KHNlbGYpOgogICAgICAgICBpbXBvcnQgb2UucGF0aApAQCAtNjg5LDYgKzc1OCw3IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCiAgICAgICAgICMgVGhpcyBpcyBwcm9iYWJseSBzdWZmaWNpZW50CiAKK2NsYXNzIERldnRvb2xVcGRhdGVUZXN0cyhEZXZ0b29sQmFzZSk6CiAKICAgICBAT0VUZXN0SUQoMTE2OSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGUoc2VsZik6CkBAIC0xMTA1LDYgKzExNzUsOCBAQAogICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbXQogICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKIAorY2xhc3MgRGV2dG9vbEV4dHJhY3RUZXN0cyhEZXZ0b29sQmFzZSk6CisKICAgICBAT0VUZXN0SUQoMTE2MykKICAgICBkZWYgdGVzdF9kZXZ0b29sX2V4dHJhY3Qoc2VsZik6CiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKQEAgLTEyNzQsNiArMTM0Niw4IEBACiAgICAgICAgIGlmIHJlcXBrZ3M6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1RoZSBmb2xsb3dpbmcgcGFja2FnZXMgd2VyZSBub3QgcHJlc2VudCBpbiB0aGUgaW1hZ2UgYXMgZXhwZWN0ZWQ6ICVzJyAlICcsICcuam9pbihyZXFwa2dzKSkKIAorY2xhc3MgRGV2dG9vbFVwZ3JhZGVUZXN0cyhEZXZ0b29sQmFzZSk6CisKICAgICBAT0VUZXN0SUQoMTM2NykKICAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZ3JhZGUoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQppbmRleCA3YjI4MDA0Li5lN2I1ZTM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQpAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2tzIGRvIG5vdCByZWdyZXNzCiAgICAgICAgIEV4cGVjdGVkOiAgICBVcHN0cmVhbSB2ZXJzaW9uIGNoZWNrcyBzaG91bGQgc3VjY2VlZCBleGNlcHQgZm9yIHRoZSByZWNpcGVzIGxpc3RlZCBpbiB0aGUgZXhjZXB0aW9uIGxpc3QuCiAgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgogICAgICAgICBjaGVja3BrZ19yZXN1bHQgPSBvcGVuKG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJMT0dfRElSIiksICJjaGVja3BrZy5jc3YiKSkucmVhZGxpbmVzKClbMTpdCiAgICAgICAgIHJlZ3Jlc3NlZF9mYWlsdXJlcyA9IFtwa2dfZGF0YVswXSBmb3IgcGtnX2RhdGEgaW4gW3BrZ19saW5lLnNwbGl0KCdcdCcpIGZvciBwa2dfbGluZSBpbiBjaGVja3BrZ19yZXN1bHRdIGlmIHBrZ19kYXRhWzExXSA9PSAnVU5LTk9XTl9CUk9LRU4nXQpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IG9lLWNvcmUgcmVjaXBlcyBoYXZlIGEgbWFpbnRhaW5lcgogICAgICAgICBFeHBlY3RlZDogICAgQWxsIG9lLWNvcmUgcmVjaXBlcyAoZXhjZXB0IGEgZmV3IHNwZWNpYWwgc3RhdGljL3Rlc3Rpbmcgb25lcykgc2hvdWxkIGhhdmUgYSBtYWludGFpbmVyIGxpc3RlZCBpbiBtYWludGFpbmVycy5pbmMgZmlsZS4KICAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KICAgICAgICAgIiIiCiAgICAgICAgIGRlZiBpc19leGNlcHRpb24ocGtnKToKICAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBbInBhY2thZ2Vncm91cC0iLCAiaW5pdHJhbWZzLSIsICJzeXN0ZW1kLW1hY2hpbmUtdW5pdHMiLCAidGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSJdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5CmluZGV4IDBjODMyNTYuLmM2ZjM5ZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5CkBAIC0xMSw3ICsxMSw2IEBACiBjbGFzcyBHZW5lcmljRUZJVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgogICAgICIiIkVGSSBib290aW5nIHRlc3QgY2xhc3MiIiIKIAotICAgIGJ1ZmZlciA9IFRydWUKICAgICBjbWRfY29tbW9uID0gInJ1bnFlbXUgbm9ncmFwaGljIHNlcmlhbCB3aWMgb3ZtZiIKICAgICBlZmlfcHJvdmlkZXIgPSAic3lzdGVtZC1ib290IgogICAgIGltYWdlID0gImNvcmUtaW1hZ2UtbWluaW1hbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9mZXRjaC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9mZXRjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWNjOGNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ZldGNoLnB5CkBAIC0wLDAgKzEsNDkgQEAKK2ltcG9ydCBvZS5wYXRoCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBGZXRjaChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIEBPRVRlc3RJRCgxMDU4KQorICAgIGRlZiB0ZXN0X2dpdF9taXJyb3JzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVmVyaWZ5IHRoYXQgdGhlIGdpdCBmZXRjaGVyIHdpbGwgZmFsbCBiYWNrIHRvIHRoZSBIVFRQIG1pcnJvcnMuIFRoZQorICAgICAgICByZWNpcGUgbmVlZHMgdG8gYmUgb25lIHRoYXQgd2UgaGF2ZSBvbiB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgbWlycm9yCisgICAgICAgIGFuZCBpcyBob3N0ZWQgaW4gZ2l0LgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE86IG1rdGVtcGQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCisgICAgICAgIGRsZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1naXQtbWlycm9ycyIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZGxkaXIpCisKKyAgICAgICAgIyBObyBtaXJyb3JzLCBzaG91bGQgdXNlIGdpdCB0byBmZXRjaCBzdWNjZXNzZnVsbHkKKyAgICAgICAgZmVhdHVyZXMgPSAiIiIKK0RMX0RJUiA9ICIlcyIKK01JUlJPUlNfZm9yY2V2YXJpYWJsZSA9ICIiCitQUkVNSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIgorIiIiICUgZGxkaXIKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKGRsZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgIGJpdGJha2UoImRidXMtd2FpdCAtYyBmZXRjaCAtZiIpCisKKyAgICAgICAgIyBObyBtaXJyb3JzIGFuZCBicm9rZW4gZ2l0LCBzaG91bGQgZmFpbAorICAgICAgICBmZWF0dXJlcyA9ICIiIgorRExfRElSID0gIiVzIgorR0lUX1BST1hZX0NPTU1BTkQgPSAiZmFsc2UiCitNSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIgorUFJFTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gIiIKKyIiIiAlIGRsZGlyCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBvZS5wYXRoLnJlbW92ZShkbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIGJpdGJha2UoImRidXMtd2FpdCAtYyBmZXRjaCAtZiIpCisKKyAgICAgICAgIyBCcm9rZW4gZ2l0IGJ1dCBhIHNwZWNpZmljIG1pcnJvcgorICAgICAgICBmZWF0dXJlcyA9ICIiIgorRExfRElSID0gIiVzIgorR0lUX1BST1hZX0NPTU1BTkQgPSAiZmFsc2UiCitNSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiZ2l0Oi8vLiovLiogaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyIKKyIiIiAlIGRsZGlyCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBvZS5wYXRoLnJlbW92ZShkbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiaXRiYWtlKCJkYnVzLXdhaXQgLWMgZmV0Y2ggLWYiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VfdHlwZWRlcC5weQppbmRleCBlNjc4ODg1Li45MzJjN2Y4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VfdHlwZWRlcC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VfdHlwZWRlcC5weQpAQCAtMjksMTEgKzI5LDE0IEBACiAgICAgICAgICMgbGlrZSBDT05WRVJTSU9OX0RFUEVORFNfYnoyPSJzb21lZGVwIgogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZSBlbXB0eXRlc3QnKQogCisgICAgICAgIGRlcCA9IE5vbmUKICAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKToKICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnQ09OVkVSU0lPTl9ERVBFTkRTX2J6MicpOgogICAgICAgICAgICAgICAgIGRlcCA9IGxpbmUuc3BsaXQoJz0nKVsxXS5zdHJpcCgnIicpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShkZXAsICJDT05WRVJTSU9OX0RFUEVORFNfYnoyIGRlcGVuZGVuY3kgbm90IGZvdW5kIGluIGJpdGJha2UgLWUgb3V0cHV0IikKKwogICAgICAgICAjIE5vdyBnZXQgdGhlIGRlcGVuZGVuY3kgdGFzayBsaXN0IGFuZCBjaGVjayBmb3IgdGhlIGV4cGVjdGVkIHRhc2sKICAgICAgICAgIyBkZXBlbmRlbmN5CiAgICAgICAgIGJpdGJha2UoJy1nIGVtcHR5dGVzdCcpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CmluZGV4IDA5ZTBiMjAuLjhjOTU0MzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CkBAIC0xMCw4ICsxMCw2IEBACiAgICAgdGVzdF91c2VyID0gJ3Rlc3RlcicKICAgICByb290X3VzZXIgPSAncm9vdCcKIAotICAgIGJ1ZmZlciA9IFRydWUKLQogICAgIEBPRVRlc3RJRCgxMTA3KQogICAgIGRlZiB0ZXN0X25vbl9yb290X3VzZXJfY2FuX2Nvbm5lY3RfdmlhX3NzaF93aXRob3V0X3Bhc3N3b3JkKHNlbGYpOgogICAgICAgICAiIiIKQEAgLTIzLDcgKzIxLDcgQEAKICAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KICAgICAgICAgIiIiCiAKLSAgICAgICAgZmVhdHVyZXMgPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAic3NoLXNlcnZlci1vcGVuc3NoIGVtcHR5LXJvb3QtcGFzc3dvcmQgYWxsb3ctZW1wdHktcGFzc3dvcmQiXG4nCisgICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBlbXB0eS1yb290LXBhc3N3b3JkIGFsbG93LWVtcHR5LXBhc3N3b3JkIGFsbG93LXJvb3QtbG9naW4iXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdJTkhFUklUICs9ICJleHRyYXVzZXJzIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfVVNFUlNfUEFSQU1TID0gInVzZXJhZGQgLXAgXCdcJyB7fTsgdXNlcm1vZCAtcyAvYmluL3NoIHt9OyInLmZvcm1hdChzZWxmLnRlc3RfdXNlciwgc2VsZi50ZXN0X3VzZXIpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQpAQCAtNDksNyArNDcsNyBAQAogICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgogICAgICAgICAiIiIKIAotICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggYWxsb3ctZW1wdHktcGFzc3dvcmQiXG4nCisgICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBhbGxvdy1lbXB0eS1wYXNzd29yZCBhbGxvdy1yb290LWxvZ2luIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiZXh0cmF1c2VycyJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX1VTRVJTX1BBUkFNUyA9ICJ1c2VyYWRkIC1wIFwnXCcge307IHVzZXJtb2QgLXMgL2Jpbi9zaCB7fTsiJy5mb3JtYXQoc2VsZi50ZXN0X3VzZXIsIHNlbGYudGVzdF91c2VyKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWNfY2hlY2tzdW0ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGljX2NoZWNrc3VtLnB5CmluZGV4IDM3NDA3MTUuLmY5OTJiMzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWNfY2hlY2tzdW0ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpY19jaGVja3N1bS5weQpAQCAtMTksNiArMTksOCBAQAogICAgICAgICBvcy5jbG9zZShsaWNfZmlsZSkKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChsaWNfcGF0aCkKIAorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKKwogICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnZW1wdHl0ZXN0JywgIiIiCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJXM7bWQ1PWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlIgpAQCAtMjksNyArMzEsNiBAQAogICAgICAgICB3aXRoIG9wZW4obGljX3BhdGgsICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImRhdGEiKQogCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKGJpdGJha2VfY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKHJlc3VsdC5vdXRwdXQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvZWxmLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2VsZi5weQppbmRleCA3NGVlNmExLi4xNWMwM2Y0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvZWxmLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9lbGYucHkKQEAgLTE1LDYgKzE1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgzMiksICJJQS02NCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4M0UpLCAieDg2LTY0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhCNyksICJBQXJjaDY0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhGNyksICJCUEYiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDApLCAiVW5rbm93biAoMCkiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweERFQURCRUVGKSwgIlVua25vd24gKDM3MzU5Mjg1NTkpIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi91dGlscy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi91dGlscy5weQppbmRleCA5ZmI2YzE1Li43ODljNmY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdXRpbHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3V0aWxzLnB5CkBAIC0xLDUgKzEsOCBAQAoraW1wb3J0IHN5cwogZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBUZXN0Q2FzZQotZnJvbSBvZS51dGlscyBpbXBvcnQgcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0sIHRyaW1fdmVyc2lvbgorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2Zyb20gb2UudXRpbHMgaW1wb3J0IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtLCB0cmltX3ZlcnNpb24sIG11bHRpcHJvY2Vzc19sYXVuY2gKIAogY2xhc3MgVGVzdFBhY2thZ2VzRmlsdGVyT3V0U3lzdGVtKFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9maWx0ZXIoc2VsZik6CkBAIC00OSwzICs1Miw0OCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAyKSwgIjEuMiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDMpLCAiMS4yLjMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCA0KSwgIjEuMi4zIikKKworCitjbGFzcyBUZXN0TXVsdGlwcm9jZXNzTGF1bmNoKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X211bHRpcHJvY2Vzc2xhdW5jaChzZWxmKToKKyAgICAgICAgaW1wb3J0IGJiCisKKyAgICAgICAgZGVmIHRlc3RmdW5jdGlvbihpdGVtLCBkKToKKyAgICAgICAgICAgIGlmIGl0ZW0gPT0gIjIiIG9yIGl0ZW0gPT0gIjEiOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCJJbnZhbGlkIG51bWJlciAlcyIgJSBpdGVtKQorICAgICAgICAgICAgcmV0dXJuICJGb3VuZCAlcyIgJSBpdGVtCisKKyAgICAgICAgZGVmIGR1bW15ZXJyb3IobXNnKToKKyAgICAgICAgICAgIHByaW50KCJFUlJPUjogJXMiICUgbXNnKQorICAgICAgICBkZWYgZHVtbXlmYXRhbChtc2cpOgorICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiAlcyIgJSBtc2cpCisgICAgICAgICAgICByYWlzZSBiYi5CQkhhbmRsZWRFeGNlcHRpb24oKQorCisgICAgICAgIEBjb250ZXh0bWFuYWdlcgorICAgICAgICBkZWYgY2FwdHVyZWRfb3V0cHV0KCk6CisgICAgICAgICAgICBuZXdfb3V0LCBuZXdfZXJyID0gU3RyaW5nSU8oKSwgU3RyaW5nSU8oKQorICAgICAgICAgICAgb2xkX291dCwgb2xkX2VyciA9IHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyID0gbmV3X291dCwgbmV3X2VycgorICAgICAgICAgICAgICAgIHlpZWxkIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciA9IG9sZF9vdXQsIG9sZF9lcnIKKworICAgICAgICBkID0gYmIuZGF0YV9zbWFydC5EYXRhU21hcnQoKQorICAgICAgICBiYi5lcnJvciA9IGR1bW15ZXJyb3IKKyAgICAgICAgYmIuZmF0YWwgPSBkdW1teWZhdGFsCisKKyAgICAgICAgIyBBc3NlcnQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJpZ2h0IHJlc3VsdHMKKyAgICAgICAgcmVzdWx0ID0gbXVsdGlwcm9jZXNzX2xhdW5jaCh0ZXN0ZnVuY3Rpb24sIFsiMyIsICI0IiwgIjUiLCAiNiJdLCBkLCBleHRyYWFyZ3M9KGQsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiRm91bmQgMyIsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiRm91bmQgNCIsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiRm91bmQgNSIsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiRm91bmQgNiIsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0KSwgNCkKKworICAgICAgICAjIEFzc2VydCB0aGUgZnVuY3Rpb24gcHJpbnRzIGV4Y2VwdGlvbnMKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoKSBhcyAob3V0LCBlcnIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmIuQkJIYW5kbGVkRXhjZXB0aW9uLCBtdWx0aXByb2Nlc3NfbGF1bmNoLCB0ZXN0ZnVuY3Rpb24sIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiXSwgZCwgZXh0cmFhcmdzPShkLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIktleUVycm9yOiAnSW52YWxpZCBudW1iZXIgMSciLCBvdXQuZ2V0dmFsdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiS2V5RXJyb3I6ICdJbnZhbGlkIG51bWJlciAyJyIsIG91dC5nZXR2YWx1ZSgpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKaW5kZXggMWVlNzUzNy4uYmNkYzJkNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CkBAIC0xMCw2ICsxMCwxOSBAQAogICAgICAgICB0YXJnZXQgPSAneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScKICAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMVwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPVRydWUpCiAgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjBcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPVRydWUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgib2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUEtHViAlcyIgJSB0YXJnZXQpCisgICAgICAgIHBrZ3YgPSByZXN1bHQub3V0cHV0LnJzdHJpcCgpCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiYnVpbGRoaXN0b3J5LWRpZmYgLXAgJXMiICUgZ2V0X2JiX3ZhcignQlVJTERISVNUT1JZX0RJUicpKQotICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSAnUFIgY2hhbmdlZCBmcm9tICJyMSIgdG8gInIwIicKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkX291dHB1dCBpbiByZXN1bHQub3V0cHV0LCBtc2c9IkRpZCBub3QgZmluZCBleHBlY3RlZCBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGV4cGVjdGVkX2VuZGxpbmVzID0gWworICAgICAgICAgICAgInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtZGV2OiBSREVQRU5EUzogcmVtb3ZlZCBcInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgKFsnPSAlcy1yMSddKVwiLCBhZGRlZCBcInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgKFsnPSAlcy1yMCddKVwiIiAlIChwa2d2LCBwa2d2KSwKKyAgICAgICAgICAgICJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLXN0YXRpY2RldjogUkRFUEVORFM6IHJlbW92ZWQgXCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLWRldiAoWyc9ICVzLXIxJ10pXCIsIGFkZGVkIFwieGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1kZXYgKFsnPSAlcy1yMCddKVwiIiAlIChwa2d2LCBwa2d2KQorICAgICAgICBdCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZm9yIGVsIGluIGV4cGVjdGVkX2VuZGxpbmVzOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoZWwpOgorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9lbmRsaW5lcy5yZW1vdmUoZWwpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBsaW5lOlxuJXNcbkV4cGVjdGVkIGxpbmUgZW5kaW5nczpcbiAgJXMnICUgKGxpbmUsICdcbiAgJy5qb2luKGV4cGVjdGVkX2VuZGxpbmVzKSkpCisgICAgICAgIGlmIGV4cGVjdGVkX2VuZGxpbmVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdNaXNzaW5nIGV4cGVjdGVkIGxpbmUgZW5kaW5nczpcbiAgJXMnICUgJ1xuICAnLmpvaW4oZXhwZWN0ZWRfZW5kbGluZXMpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQppbmRleCAxNjk2OThmLi4wYTg4ZGMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQpAQCAtMSw2ICsxLDcgQEAKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycywgZ2V0X2JiX3ZhciwgcnVucWVtdQoraW1wb3J0IHN0YXQKIGltcG9ydCBzdWJwcm9jZXNzLCBvcwogaW1wb3J0IG9lLnBhdGgKIApAQCAtMjksNyArMzAsNyBAQAogICAgICAgICBjbHMuYmluZGlyID0gb2UucGF0aC5qb2luKGNscy5zdGFnaW5nLCB2YXJzWyJiaW5kaXJfbmF0aXZlIl0pCiAgICAgICAgIGNscy5saWJkaXIgPSBvZS5wYXRoLmpvaW4oY2xzLnN0YWdpbmcsIHZhcnNbImxpYmRpcl9uYXRpdmUiXSkKIAotICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKICAgICAgICAgIyBKdXN0IGZvciBjb252ZW5pZW5jZQogICAgICAgICBzZWxmLnN0YWdpbmcgPSB0eXBlKHNlbGYpLnN0YWdpbmcKICAgICAgICAgc2VsZi5iaW5kaXIgPSB0eXBlKHNlbGYpLmJpbmRpcgpAQCAtODQsMyArODUsNjUgQEAKICAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbChjb21tYW5kLCBlbnY9ZW52KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdGF0dXMsICg5OSwgMTAwLCAxMDEpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMgLSAxMDAsIHNvcnQsICIlcyAlcyAoJWQpIGZhaWxlZCIgJSAodmVyMSwgdmVyMiwgc29ydCkpCisKK2NsYXNzIFBhY2thZ2VUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICMgVmVyaWZ5IHRoYXQgYSByZWNpcGUgd2hpY2ggc2V0cyB1cCBoYXJkbGluayBmaWxlcyBoYXMgdGhvc2UgcHJlc2VydmVkIGludG8gc3BsaXQgcGFja2FnZXMKKyAgICAjIEFsc28gdGVzdCBmaWxlIHNwYXJzZW5lc3MgaXMgcHJlc2VydmVkCisgICAgZGVmIHRlc3RfcHJlc2VydmVfc3BhcnNlX2hhcmRsaW5rcyhzZWxmKToKKyAgICAgICAgYml0YmFrZSgic2VsZnRlc3QtaGFyZGxpbmsgLWMgcGFja2FnZSIpCisKKyAgICAgICAgZGVzdCA9IGdldF9iYl92YXIoJ1BLR0RFU1QnLCAnc2VsZnRlc3QtaGFyZGxpbmsnKQorICAgICAgICBiaW5kaXIgPSBnZXRfYmJfdmFyKCdiaW5kaXInLCAnc2VsZnRlc3QtaGFyZGxpbmsnKQorCisgICAgICAgIGRlZiBjaGVja2ZpbGVzKCk6CisgICAgICAgICAgICAjIFJlY2lwZSBjcmVhdGVzIDQgaGFyZGxpbmtlZCBmaWxlcywgdGhlcmUgaXMgYSBjb3B5IGluIHBhY2thZ2UvIGFuZCBhIGNvcHkgaW4gcGFja2FnZXMtc3BsaXQvCisgICAgICAgICAgICAjIHNvIGV4cGVjdCA4IGluIHRvdGFsLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGRlc3QgKyAiL3NlbGZ0ZXN0LWhhcmRsaW5rIiArIGJpbmRpciArICIvaGVsbG8xIikuc3RfbmxpbmssIDgpCisKKyAgICAgICAgICAgICMgVGVzdCBhIHNwYXJzZSBmaWxlIHJlbWFpbnMgc3BhcnNlCisgICAgICAgICAgICBzcGFyc2VzdGF0ID0gb3Muc3RhdChkZXN0ICsgIi9zZWxmdGVzdC1oYXJkbGluayIgKyBiaW5kaXIgKyAiL3NwYXJzZXRlc3QiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFyc2VzdGF0LnN0X2Jsb2NrcywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhcnNlc3RhdC5zdF9zaXplLCAxMDQ4NTc2KQorCisgICAgICAgIGNoZWNrZmlsZXMoKQorCisgICAgICAgICMgQ2xlYW4gYW5kIHJlaW5zdGFsbCBzbyBpdHMgbm93IGRlZmluaXRlbHkgZnJvbSBzc3RhdGUsIHRoZW4gcmV0ZXN0LgorICAgICAgICBiaXRiYWtlKCJzZWxmdGVzdC1oYXJkbGluayAtYyBjbGVhbiIpCisgICAgICAgIGJpdGJha2UoInNlbGZ0ZXN0LWhhcmRsaW5rIC1jIHBhY2thZ2UiKQorCisgICAgICAgIGNoZWNrZmlsZXMoKQorCisgICAgIyBWZXJpZnkgZ2RiIHRvIHJlYWQgc3ltYm9scyBmcm9tIHNlcGFyYXRlZCBkZWJ1ZyBoYXJkbGluayBmaWxlIGNvcnJlY3RseQorICAgIGRlZiB0ZXN0X2dkYl9oYXJkbGlua19kZWJ1ZyhzZWxmKToKKyAgICAgICAgZmVhdHVyZXMgPSAnSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHNlbGZ0ZXN0LWhhcmRsaW5rIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHNlbGZ0ZXN0LWhhcmRsaW5rLWRiZyJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBzZWxmdGVzdC1oYXJkbGluay1nZGIiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQorCisgICAgICAgIGRlZiBnZGJ0ZXN0KHFlbXUsIGJpbmFyeSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIENoZWNrIHRoYXQgZ2RiIGBgYmluYXJ5YGAgdG8gcmVhZCBzeW1ib2xzIGZyb20gc2VwYXJhdGVkIGRlYnVnIGZpbGUKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiZ2RidGVzdCAlcyIgJSBiaW5hcnkpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgnL3Vzci9iaW4vZ2RiLnNoICVzJyAlIGJpbmFyeSwgdGltZW91dD02MCkKKyAgICAgICAgICAgIGZvciBsIGluIG91dHB1dC5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgICAgICAjIENoZWNrIGRlYnVnZ2luZyBzeW1ib2xzIGV4aXN0cworICAgICAgICAgICAgICAgIGlmICcobm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQpJyBpbiBsOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiTm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQuIEdEQiByZXN1bHQ6XG4lcyIgJSBvdXRwdXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICAgICAgICAgIyBDaGVjayBkZWJ1Z2dpbmcgc3ltYm9scyB3b3JrcyBjb3JyZWN0bHkKKyAgICAgICAgICAgICAgICBlbGlmICJCcmVha3BvaW50IDEsIG1haW4gKCkgYXQgaGVsbG8uYzo0IiBpbiBsOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiR0RCIHJlc3VsdDpcbiVzOiAlcyIgJSBvdXRwdXQpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6CisgICAgICAgICAgICBmb3IgYmluYXJ5IGluIFsnL3Vzci9iaW4vaGVsbG8xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2Jpbi9oZWxsbzInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbGliZXhlYy9oZWxsbzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbGliZXhlYy9oZWxsbzQnXToKKyAgICAgICAgICAgICAgICBpZiBub3QgZ2RidGVzdChxZW11LCBiaW5hcnkpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0dEQiAlcyBmYWlsZWQnICUgYmluYXJ5KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQppbmRleCA0MzdlYjJhLi4wNmY5ODBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQpAQCAtNDI3LDYgKzQyNyw4IEBACiAKICAgICBAT0VUZXN0SUQoMTQxOCkKICAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9jbWFrZShzZWxmKToKKyAgICAgICAgYml0YmFrZSgnLWMgcGFja2FnZWRhdGEgZ3RrKycpCisKICAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCiAgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKICAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKQEAgLTQzOSw3ICs0NDEsNyBAQAogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvbmF2aXQtJHtQVn0udGFyLmd6JwogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbbWQ1c3VtXSddID0gJzI0MmYzOThlOTc5YTZiOGMwZjNjODAyYjYzNDM1YjY4JwogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUklbc2hhMjU2c3VtXSddID0gJzEzMzUzNDgxZDdmYzAxYTRmNjRlMzg1ZGRhNDYwYjUxNDk2MzY2YmJhMGZkMmNjODVhODlhMDc0NzkxMGU5NGQnCi0gICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnZnJlZXR5cGUnLCAnemxpYicsICdvcGVuc3NsJywgJ2dsaWItMi4wJywgJ3ZpcnR1YWwvbGliZ2wnLCAndmlydHVhbC9lZ2wnLCAnZ3RrKycsICdsaWJwbmcnLCAnbGlic2RsJywgJ2ZyZWVnbHV0JywgJ2RidXMtZ2xpYiddKQorICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2ZyZWV0eXBlJywgJ3psaWInLCAnb3BlbnNzbCcsICdnbGliLTIuMCcsICd2aXJ0dWFsL2xpYmdsJywgJ3ZpcnR1YWwvZWdsJywgJ2d0aysnLCAnbGlicG5nJywgJ2xpYnNkbCcsICdmcmVlZ2x1dCcsICdkYnVzLWdsaWInLCAnZnJpYmlkaSddKQogICAgICAgICBpbmhlcml0cyA9IFsnY21ha2UnLCAncHl0aG9uLWRpcicsICdnZXR0ZXh0JywgJ3BrZ2NvbmZpZyddCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKaW5kZXggYTc1OGFhZi4uNGUzNWJiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKQEAgLTE0LDggKzE0LDYgQEAKIAogICAgIGltYWdlX2lzX3JlYWR5ID0gRmFsc2UKICAgICBkZXBsb3lfZGlyX2ltYWdlID0gJycKLSAgICAjIFdlIG9ubHkgd2FudCB0byBwcmludCBydW5xZW11IHN0ZG91dC9zdGRlcnIgaWYgdGhlcmUgaXMgYSB0ZXN0IGNhc2UgZmFpbHVyZQotICAgIGJ1ZmZlciA9IFRydWUKIAogICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgogICAgICAgICBzdXBlcihSdW5xZW11VGVzdHMsIHNlbGYpLnNldFVwTG9jYWwoKQpAQCAtMTc2LDE0ICsxNzQsMTcgQEAKICAgICAgICAgIyB3aGVuIHFlbXUgd2FzIHNodXRkb3duIGJ5IHRoZSBhYm92ZSBzaHV0ZG93biBjb21tYW5kCiAgICAgICAgIHFlbXUucnVubmVyLnN0b3BfdGhyZWFkKCkKICAgICAgICAgdGltZV90cmFjayA9IDAKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlzX2FsaXZlID0gcWVtdS5jaGVjaygpCi0gICAgICAgICAgICBpZiBub3QgaXNfYWxpdmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgIGlmIHRpbWVfdHJhY2sgPiB0aW1lb3V0OgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAgICAgdGltZV90cmFjayArPSAxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgaXNfYWxpdmUgPSBxZW11LmNoZWNrKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNfYWxpdmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgaWYgdGltZV90cmFjayA+IHRpbWVvdXQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgICAgICB0aW1lX3RyYWNrICs9IDEKKyAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHRlc3RfcWVtdV9jYW5fc2h1dGRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHNlbGYucWVtdWJvb3RfY29uZikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CmluZGV4IDE0NmRhZjguLjkwNmU0NjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQpAQCAtMTIyLDYgKzEyMiw3IEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBub3QgYnVpbGRhYmxlIGZvciBwb2t5LXRpbnknKQogCiAgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBsaWJzc2wiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIHNzaCBzZWxmdGVzdCJcbicKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCiAKQEAgLTEzNSw3ICsxMzYsNyBAQAogICAgICAgICBTdW1tYXJ5OiBDaGVjayBwYWNrYWdlIGZlZWRzIGZ1bmN0aW9uYWxpdHkgZm9yIGRuZgogICAgICAgICBFeHBlY3RlZDogMS4gQ2hlY2sgdGhhdCByZW1vdGUgcGFja2FnZSBmZWVkcyBjYW4gYmUgYWNjZXNzZWQKICAgICAgICAgUHJvZHVjdDogb2UtY29yZQotICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgogICAgICAgICBpZiBnZXRfYmJfdmFyKCdESVNUUk8nKSA9PSAncG9reS10aW55JzoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIG5vdCBidWlsZGFibGUgZm9yIHBva3ktdGlueScpCkBAIC0yMzMsNyArMjM0LDcgQEAKICAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBzY3JpcHRsZXQgZmFpbHVyZSBpcyBwcm9wZXJseSByZXBvcnRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHRoYXQgaXMgY3JlYXRlZCBhZnRlciB0aGUgZXJyb3IgaW4gdGhlIHNjcmlwdGxldCBpcyBub3QgcHJlc2VudC4KICAgICAgICAgUHJvZHVjdDogb2UtY29yZQotICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgogCiAgICAgICAgIGltcG9ydCBvZS5wYXRoCkBAIC0yNTEsOCArMjUyLDggQEAKICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicG9zdGluc3Qtcm9vdGZzLWZhaWxpbmciXG4nCiAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCiAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0gICAgICAgICAgICAgICAgYmJfcmVzdWx0ID0gYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChiYl9yZXN1bHQub3V0cHV0LmZpbmQoIkludGVudGlvbmFsbHkgZmFpbGluZyBwb3N0aW5zdGFsbCBzY3JpcHRsZXRzIG9mIFsncG9zdGluc3Qtcm9vdGZzLWZhaWxpbmcnXSB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QgaXMgZGVwcmVjYXRlZC4iKSwgMCwKKyAgICAgICAgICAgICAgICBiYl9yZXN1bHQgPSBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYmJfcmVzdWx0Lm91dHB1dC5maW5kKCJQb3N0aW5zdGFsbCBzY3JpcHRsZXRzIG9mIFsncG9zdGluc3Qtcm9vdGZzLWZhaWxpbmcnXSBoYXZlIGZhaWxlZC4iKSwgMCwKICAgICAgICAgICAgICAgICAgICAgIldhcm5pbmcgYWJvdXQgYSBmYWlsZWQgc2NyaXB0bGV0IG5vdCBmb3VuZCBpbiBiaXRiYWtlIG91dHB1dDogJXMiICUoYmJfcmVzdWx0Lm91dHB1dCkpCiAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzLWJlZm9yZS1mYWlsdXJlIikpLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQppbmRleCAwZWRhZjQwLi40ZmE5OWFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQpAQCAtNTksNyArNTksNyBAQAogICAgICAgICBFeHBlY3RlZDogICAgSW1hZ2VzIGNhbiBiZSBjcmVhdGVkIGZyb20gc2lnbmVkIHBhY2thZ2VzCiAgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCiAgICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CiAgICAgICAgICIiIgogICAgICAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQppbmRleCA3YjAwOGU0Li4wNzdkNmU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CkBAIC0yNjIsNiArMjYyLDcgQEAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCiBNQUNISU5FID0gInFlbXV4ODYiCiBUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaCIKK1RDTElCQ0FQUEVORCA9ICIiCiBCVUlMRF9BUkNIID0gIng4Nl82NCIKIEJVSUxEX09TID0gImxpbnV4IgogU0RLTUFDSElORSA9ICJ4ODZfNjQiCkBAIC0yNzIsNiArMjczLDcgQEAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCiBNQUNISU5FID0gInFlbXV4ODYiCiBUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDIiCitUQ0xJQkNBUFBFTkQgPSAiIgogQlVJTERfQVJDSCA9ICJpNjg2IgogQlVJTERfT1MgPSAibGludXgiCiBTREtNQUNISU5FID0gImk2ODYiCkBAIC0zMDcsMTIgKzMwOSwxNCBAQAogCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK1RDTElCQ0FQUEVORCA9IFwiXCIKIE5BVElWRUxTQlNUUklORyA9IFwiRGlzdHJvQVwiCiAiIiIpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCiAgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCiBUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK1RDTElCQ0FQUEVORCA9IFwiXCIKIE5BVElWRUxTQlNUUklORyA9IFwiRGlzdHJvQlwiCiAiIiIpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQpAQCAtMzQwLDI1ICszNDQsMjUgQEAKIAogICAgICAgICBjb25maWdBID0gIiIiCiBUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorVENMSUJDQVBQRU5EID0gXCJcIgogTUFDSElORSA9IFwicWVtdXg4Ni02NFwiCiAiIiIKICAgICAgICAgY29uZmlnQiA9ICIiIgogVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCiBNQUNISU5FID0gXCJxZW11YXJtXCIKICIiIgogICAgICAgICBzZWxmLnNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKGNvbmZpZ0EsIGNvbmZpZ0IpCiAKICAgICBAT0VUZXN0SUQoMTY0NSkKLSAgICBkZWYgdGVzdF9zc3RhdGVfYWxsYXJjaF9zYW1lc2lnc19tdWx0aWxpYihzZWxmKToKKyAgICBkZWYgdGVzdF9zc3RhdGVfbmF0aXZlc2RrX3NhbWVzaWdzX211bHRpbGliKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgYWxsYXJjaCBtdWx0aWxpYiBwYWNrYWdlcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyCi0gICAgICAgIE1BQ0hJTkUgaXMgc2V0LiBDaGVjayB0aGlzIHVzaW5nIGJpdGJha2UgLVMuCi0gICAgICAgIEFsc28sIHJhdGhlciB0aGFuIGR1cGxpY2F0ZSB0aGUgdGVzdCwgY2hlY2sgbmF0aXZlc2RrIHN0YW1wcyBhcmUgdGhlIHNhbWUgYmV0d2VlbgotICAgICAgICB0aGUgdHdvIE1BQ0hJTkUgdmFsdWVzLgorICAgICAgICBjaGVjayBuYXRpdmVzZGsgc3RhbXBzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuIHRoZSB0d28gTUFDSElORSB2YWx1ZXMuCiAgICAgICAgICIiIgogCiAgICAgICAgIGNvbmZpZ0EgPSAiIiIKIFRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCiBNQUNISU5FID0gXCJxZW11eDg2LTY0XCIKIHJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCiBNVUxUSUxJQlMgPSBcIm11bHRpbGliOmxpYjMyXCIKQEAgLTM2Niw2ICszNzAsNyBAQAogIiIiCiAgICAgICAgIGNvbmZpZ0IgPSAiIiIKIFRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorVENMSUJDQVBQRU5EID0gXCJcIgogTUFDSElORSA9IFwicWVtdWFybVwiCiByZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgogTVVMVElMSUJTID0gXCJcIgpAQCAtMzkyLDEwICszOTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKF8sIHRhc2ssIF8sIHNoYXNoKSA9IG5hbWUucnNwbGl0KCIuIiwgMykKICAgICAgICAgICAgICAgICAgICAgICAgIGZbb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUocm9vdCksIHRhc2spXSA9IHNoYXNoCiAgICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvYWxsIiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItIiArIHNlbGYudGFyZ2V0X29zKQotICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzL2FsbCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLSIgKyBzZWxmLnRhcmdldF9vcykKLSAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzMSwgZmlsZXMyKQogCiAgICAgICAgIG5hdGl2ZXNka2RpciA9IG9zLnBhdGguYmFzZW5hbWUoZ2xvYi5nbG9iKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyotbmF0aXZlc2RrKi1saW51eCIpWzBdKQogCkBAIC00MTQsNiArNDE1LDcgQEAKIAogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKIFRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCiBNQUNISU5FID0gXCJxZW11eDg2XCIKIHJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCiBNVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCkBAIC00MjMsNiArNDI1LDcgQEAKICAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCiBNQUNISU5FID0gXCJxZW11eDg2Y29weVwiCiByZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgogTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgpAQCAtNDU4LDYgKzQ2MSw3IEBACiAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCiBUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaCIKK1RDTElCQ0FQUEVORCA9ICIiCiBCQl9OVU1CRVJfVEhSRUFEUyA9ICIke0BvZS51dGlscy5jcHVfY291bnQoKX0iCiBQQVJBTExFTF9NQUtFID0gIi1qIDEiCiBETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMSIKQEAgLTQ3MSw2ICs0NzUsNyBAQAogICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCiBUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDIiCitUQ0xJQkNBUFBFTkQgPSAiIgogQkJfTlVNQkVSX1RIUkVBRFMgPSAiJHtAb2UudXRpbHMuY3B1X2NvdW50KCkrMX0iCiBQQVJBTExFTF9NQUtFID0gIi1qIDIiCiBETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CmluZGV4IGJhZjNhZjYuLjM2ZWU1ZTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQpAQCAtNjEsOTQgKzYxLDEwMyBAQAogICAgIHJldHVybiB3cmFwcGVyCiAKIAotY2xhc3MgV2ljKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CitjbGFzcyBXaWNUZXN0Q2FzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgogICAgICIiIldpYyB0ZXN0IGNsYXNzLiIiIgogCiAgICAgaW1hZ2VfaXNfcmVhZHkgPSBGYWxzZQotICAgIG5hdGl2ZV9zeXNyb290ID0gTm9uZQogICAgIHdpY2Vudl9jYWNoZSA9IHt9CiAKICAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKICAgICAgICAgIiIiVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGJlZm9yZSBlYWNoIHRlc3QgbWV0aG9kLiIiIgogICAgICAgICBzZWxmLnJlc3VsdGRpciA9IHNlbGYuYnVpbGRkaXIgKyAiL3dpYy10bXAvIgotICAgICAgICBzdXBlcihXaWMsIHNlbGYpLnNldFVwTG9jYWwoKQotICAgICAgICBpZiBub3Qgc2VsZi5uYXRpdmVfc3lzcm9vdDoKLSAgICAgICAgICAgIFdpYy5uYXRpdmVfc3lzcm9vdCA9IGdldF9iYl92YXIoJ1NUQUdJTkdfRElSX05BVElWRScsICd3aWMtdG9vbHMnKQorICAgICAgICBzdXBlcihXaWNUZXN0Q2FzZSwgc2VsZikuc2V0VXBMb2NhbCgpCiAKICAgICAgICAgIyBEbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBpbiBzZXRVcENsYXNzIGFzIHRoZSBiYXNlIHNldFVwIGRvZXMgc29tZQogICAgICAgICAjIGNsZWFuIHVwIHdoaWNoIGNhbiByZXN1bHQgaW4gdGhlIG5hdGl2ZSB0b29scyBidWlsdCBlYXJsaWVyIGluCiAgICAgICAgICMgc2V0VXBDbGFzcyBiZWluZyB1bmF2YWlsYWJsZS4KLSAgICAgICAgaWYgbm90IFdpYy5pbWFnZV9pc19yZWFkeToKKyAgICAgICAgaWYgbm90IFdpY1Rlc3RDYXNlLmltYWdlX2lzX3JlYWR5OgogICAgICAgICAgICAgaWYgZ2V0X2JiX3ZhcignVVNFX05MUycpID09ICd5ZXMnOgogICAgICAgICAgICAgICAgIGJpdGJha2UoJ3dpYy10b29scycpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3dpYy10b29scyBjYW5ub3QgYmUgYnVpbHQgZHVlIGl0cyAoaW50bHRvb2x8Z2V0dGV4dCktbmF0aXZlIGRlcGVuZGVuY3kgYW5kIE5MUyBkaXNhYmxlJykKIAogICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgICAgIFdpYy5pbWFnZV9pc19yZWFkeSA9IFRydWUKKyAgICAgICAgICAgIFdpY1Rlc3RDYXNlLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQogCiAgICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQogCiAgICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6CiAgICAgICAgICIiIlJlbW92ZSByZXN1bHRkaXIgYXMgaXQgbWF5IGNvbnRhaW4gaW1hZ2VzLiIiIgogICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKLSAgICAgICAgc3VwZXIoV2ljLCBzZWxmKS50ZWFyRG93bkxvY2FsKCkKKyAgICAgICAgc3VwZXIoV2ljVGVzdENhc2UsIHNlbGYpLnRlYXJEb3duTG9jYWwoKQorCisgICAgZGVmIF9nZXRfaW1hZ2VfZW52X3BhdGgoc2VsZiwgaW1hZ2UpOgorICAgICAgICAiIiJHZW5lcmF0ZSBhbmQgb2J0YWluIHRoZSBwYXRoIHRvIDxpbWFnZT4uZW52IiIiCisgICAgICAgIGlmIGltYWdlIG5vdCBpbiBXaWNUZXN0Q2FzZS53aWNlbnZfY2FjaGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJyVzIC1jIGRvX3Jvb3Rmc193aWNlbnYnICUgaW1hZ2UpLnN0YXR1cykKKyAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfRElSJywgJ01BQ0hJTkUnXSwgaW1hZ2UpCisgICAgICAgICAgICBzdGRpciA9IGJiX3ZhcnNbJ1NUQUdJTkdfRElSJ10KKyAgICAgICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KKyAgICAgICAgICAgIFdpY1Rlc3RDYXNlLndpY2Vudl9jYWNoZVtpbWFnZV0gPSBvcy5wYXRoLmpvaW4oc3RkaXIsIG1hY2hpbmUsICdpbWdkYXRhJykKKyAgICAgICAgcmV0dXJuIFdpY1Rlc3RDYXNlLndpY2Vudl9jYWNoZVtpbWFnZV0KKworY2xhc3MgV2ljKFdpY1Rlc3RDYXNlKToKIAogICAgIEBPRVRlc3RJRCgxNTUyKQogICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIC0tdmVyc2lvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC0tdmVyc2lvbicpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgLS12ZXJzaW9uJykKIAogICAgIEBPRVRlc3RJRCgxMjA4KQogICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIC0taGVscCBhbmQgd2ljIC1oIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLS1oZWxwJykuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC1oJykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyAtLWhlbHAnKQorICAgICAgICBydW5DbWQoJ3dpYyAtaCcpCiAKICAgICBAT0VUZXN0SUQoMTIwOSkKICAgICBkZWYgdGVzdF9jcmVhdGVoZWxwKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgLS1oZWxwIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgY3JlYXRlIC0taGVscCcpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgY3JlYXRlIC0taGVscCcpCiAKICAgICBAT0VUZXN0SUQoMTIxMCkKICAgICBkZWYgdGVzdF9saXN0aGVscChzZWxmKToKICAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCAtLWhlbHAiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IC0taGVscCcpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgbGlzdCAtLWhlbHAnKQogCiAgICAgQE9FVGVzdElEKDE1NTMpCiAgICAgZGVmIHRlc3RfaGVscF9jcmVhdGUoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgY3JlYXRlIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBjcmVhdGUnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGhlbHAgY3JlYXRlJykKIAogICAgIEBPRVRlc3RJRCgxNTU0KQogICAgIGRlZiB0ZXN0X2hlbHBfbGlzdChzZWxmKToKICAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBsaXN0IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBsaXN0Jykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyBoZWxwIGxpc3QnKQogCiAgICAgQE9FVGVzdElEKDEyMTUpCiAgICAgZGVmIHRlc3RfaGVscF9vdmVydmlldyhzZWxmKToKICAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBvdmVydmlldyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgb3ZlcnZpZXcnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGhlbHAgb3ZlcnZpZXcnKQogCiAgICAgQE9FVGVzdElEKDEyMTYpCiAgICAgZGVmIHRlc3RfaGVscF9wbHVnaW5zKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIHBsdWdpbnMiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIHBsdWdpbnMnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGhlbHAgcGx1Z2lucycpCiAKICAgICBAT0VUZXN0SUQoMTIxNykKICAgICBkZWYgdGVzdF9oZWxwX2tpY2tzdGFydChzZWxmKToKICAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBraWNrc3RhcnQiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGtpY2tzdGFydCcpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgaGVscCBraWNrc3RhcnQnKQogCiAgICAgQE9FVGVzdElEKDE1NTUpCiAgICAgZGVmIHRlc3RfbGlzdF9pbWFnZXMoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGxpc3QgaW1hZ2VzIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCBpbWFnZXMnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGxpc3QgaW1hZ2VzJykKIAogICAgIEBPRVRlc3RJRCgxNTU2KQogICAgIGRlZiB0ZXN0X2xpc3Rfc291cmNlX3BsdWdpbnMoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGxpc3Qgc291cmNlLXBsdWdpbnMiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IHNvdXJjZS1wbHVnaW5zJykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyBsaXN0IHNvdXJjZS1wbHVnaW5zJykKIAogICAgIEBPRVRlc3RJRCgxNTU3KQogICAgIGRlZiB0ZXN0X2xpc3RlZF9pbWFnZXNfaGVscChzZWxmKToKQEAgLTE1Niw3ICsxNjUsNyBAQAogICAgICAgICBvdXRwdXQgPSBydW5DbWQoJ3dpYyBsaXN0IGltYWdlcycpLm91dHB1dAogICAgICAgICBpbWFnZWxpc3QgPSBbbGluZS5zcGxpdCgpWzBdIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCldCiAgICAgICAgIGZvciBpbWFnZSBpbiBpbWFnZWxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgJXMgaGVscCcgJSBpbWFnZSkuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKCd3aWMgbGlzdCAlcyBoZWxwJyAlIGltYWdlKQogCiAgICAgQE9FVGVzdElEKDEyMTMpCiAgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfc3ViY29tbWFuZChzZWxmKToKQEAgLTE3Miw3ICsxODEsNyBAQAogICAgIGRlZiB0ZXN0X2J1aWxkX2ltYWdlX25hbWUoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsIiIiCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTE1NykKQEAgLTE4MCw3ICsxODksNyBAQAogICAgIGRlZiB0ZXN0X2dwdF9pbWFnZShzZWxmKToKICAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBjb3JlLWltYWdlLW1pbmltYWwgd2l0aCBncHQgdGFibGUgYW5kIFVVSUQgYm9vdCIiIgogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLWdwdCAtLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTM0NikKQEAgLTE5NCw3ICsyMDMsNyBAQAogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwgY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcycpCiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIG1raHlicmlkaXNvIC0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiSFlCUklEX0lTT19JTUctKi5kaXJlY3QiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiSFlCUklEX0lTT19JTUctKi5pc28iKSkpCiAKQEAgLTIwMyw3ICsyMTIsNyBAQAogICAgIGRlZiB0ZXN0X3FlbXV4ODZfZGlyZWN0ZGlzayhzZWxmKToKICAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBxZW11eC04Ni1kaXJlY3RkaXNrIGltYWdlIiIiCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHFlbXV4ODYtZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAicWVtdXg4Ni1kaXJlY3RkaXNrLSpkaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTM1MCkKQEAgLTIxMSw3ICsyMjAsNyBAQAogICAgIGRlZiB0ZXN0X21rZWZpZGlzayhzZWxmKToKICAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBta2VmaWRpc2sgaW1hZ2UiIiIKICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgbWtlZmlkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxMzg1KQpAQCAtMjIzLDcgKzIzMiw3IEBACiAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWctKmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxNTYwKQpAQCAtMjM1LDcgKzI0NCw3IEBACiAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHN5c3RlbWQtYm9vdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInN5c3RlbWQtYm9vdGRpc2stKmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxNTYxKQpAQCAtMjQ0LDcgKzI1Myw3IEBACiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHNkaW1hZ2UtYm9vdHBhcnQgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCiAgICAgICAgIGtpbWd0eXBlID0gZ2V0X2JiX3ZhcignS0VSTkVMX0lNQUdFVFlQRScsICdjb3JlLWltYWdlLW1pbmltYWwnKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU1BR0VfQk9PVF9GSUxFUyA9ICIlcyJcbicgJSBraW1ndHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic2RpbWFnZS1ib290cGFydC0qZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDE1NjIpCkBAIC0yNTgsNyArMjY3LDcgQEAKICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKICAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKCJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDEyMTIpCkBAIC0yNzEsMzcgKzI4MCwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1pbWFnZS1taW5pbWFsJykpCiAgICAgICAgIGJidmFycyA9IHtrZXkubG93ZXIoKTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gYmJfdmFycy5pdGVtcygpfQogICAgICAgICBiYnZhcnNbJ3Jlc3VsdGRpciddID0gc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLWIgJShzdGFnaW5nX2RhdGFkaXIpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLWsgJShkZXBsb3lfZGlyX2ltYWdlKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi1uICUocmVjaXBlX3N5c3Jvb3RfbmF0aXZlKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi1yICUoaW1hZ2Vfcm9vdGZzKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi1vICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAiLW8gJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxMjY0KQogICAgIGRlZiB0ZXN0X2NvbXByZXNzX2d6aXAoc2VsZik6CiAgICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCBnemlwIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgZ3ppcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgZ3ppcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC5neiIpKSkKIAogICAgIEBPRVRlc3RJRCgxMjY1KQogICAgIGRlZiB0ZXN0X2NvbXByZXNzX2J6aXAyKHNlbGYpOgogICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggYnppcDIiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyBiemlwMiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgYnppcDIgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QuYnoyIikpKQogCiAgICAgQE9FVGVzdElEKDEyNjYpCiAgICAgZGVmIHRlc3RfY29tcHJlc3NfeHooc2VsZik6CiAgICAgICAgICIiIlRlc3QgY29tcHJlc3NpbmcgYW4gaW1hZ2Ugd2l0aCB4eiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY29tcHJlc3Mtd2l0aD14eiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jb21wcmVzcy13aXRoPXh6IC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0Lnh6IikpKQogCiAgICAgQE9FVGVzdElEKDEyNjcpCkBAIC0zMTUsNjMgKzMyMyw2MiBAQAogICAgIEBPRVRlc3RJRCgxNTU4KQogICAgIGRlZiB0ZXN0X2RlYnVnX3Nob3J0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IC1EIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxNjU4KQogICAgIGRlZiB0ZXN0X2RlYnVnX2xvbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLS1kZWJ1ZyBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWRlYnVnIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWRlYnVnIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDE1NjMpCiAgICAgZGVmIHRlc3Rfc2tpcF9idWlsZF9jaGVja19zaG9ydChzZWxmKToKICAgICAgICAgIiIiVGVzdCAtcyBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTY3MSkKICAgICBkZWYgdGVzdF9za2lwX2J1aWxkX2NoZWNrX2xvbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLS1za2lwLWJ1aWxkLWNoZWNrIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tc2tpcC1idWlsZC1jaGVjayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTU2NCkKICAgICBkZWYgdGVzdF9idWlsZF9yb290ZnNfc2hvcnQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLWYgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWYgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1mIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDE2NTYpCiAgICAgZGVmIHRlc3RfYnVpbGRfcm9vdGZzX2xvbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLS1idWlsZC1yb290ZnMgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1idWlsZC1yb290ZnMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDEyNjgpCiAgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCiAgICAgZGVmIHRlc3Rfcm9vdGZzX2luZGlyZWN0X3JlY2lwZXMoc2VsZik6CiAgICAgICAgICIiIlRlc3QgdXNhZ2Ugb2Ygcm9vdGZzIHBsdWdpbiB3aXRoIHJvb3RmcyByZWNpcGVzIiIiCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMgcm9vdGZzMT1jb3JlLWltYWdlLW1pbmltYWwgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzIHJvb3RmczI9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stbXVsdGktcm9vdGZzKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTI2OSkKQEAgLTM4NSwxNCArMzkyLDEzIEBACiAgICAgICAgIGJidmFycyA9IHtrZXkubG93ZXIoKTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gYmJfdmFycy5pdGVtcygpfQogICAgICAgICBiYnZhcnNbJ3drcyddID0gImRpcmVjdGRpc2stbXVsdGktcm9vdGZzIgogICAgICAgICBiYnZhcnNbJ3Jlc3VsdGRpciddID0gc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlICUod2tzKXMgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJSh3a3MpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1ib290aW1nLWRpcj0lKHN0YWdpbmdfZGF0YWRpcilzICIKICAgICAgICAgICAgICAgICAgICAgICAgICItLWtlcm5lbC1kaXI9JShkZXBsb3lfZGlyX2ltYWdlKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0tbmF0aXZlLXN5c3Jvb3Q9JShyZWNpcGVfc3lzcm9vdF9uYXRpdmUpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMtZGlyIHJvb3RmczE9JShpbWFnZV9yb290ZnMpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMtZGlyIHJvb3RmczI9JShpbWFnZV9yb290ZnMpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlKHJlc3VsdGRpcilzIiAlIGJidmFycykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICIlKHdrcylzLSouZGlyZWN0IiAlIGJidmFycykpKQogCiAgICAgQE9FVGVzdElEKDE2NjEpCkBAIC00MTEsOCArNDE3LDggQEAKIHBhcnQgL3VzciAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tcm9vdGZzLWRpciAlcy91c3IKIHBhcnQgL2V0YyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIGJpbi8gLS1yb290ZnMtZGlyICVzL3VzciIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyb290ZnNfZGlyLCByb290ZnNfZGlyKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkKIAogICAgICAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQogICAgICAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlICd0ZW1wJykKQEAgLTQyMiw3ICs0MjgsNiBAQAogCiAgICAgICAgICAgICAjIHZlcmlmeSBwYXJ0aXRpb24gc2l6ZSB3aXRoIHdpYwogICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJwYXJ0ZWQgLW0gJXMgdW5pdCBiIHAgMj4vZGV2L251bGwiICUgd2ljaW1nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQogCiAgICAgICAgICAgICAjIHBhcnNlIHBhcnRlZCBvdXRwdXQgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgogICAgICAgICAgICAgIyBCWVQ7XG4KQEAgLTQzOCw4ICs0NDMsOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgbGVuKHBhcnRsbikpCiAgICAgICAgICAgICAgICAgc3RhcnQgPSBpbnQocGFydGxuWzFdLnJzdHJpcCgiQiIpKSAvIDUxMgogICAgICAgICAgICAgICAgIGxlbmd0aCA9IGludChwYXJ0bG5bM10ucnN0cmlwKCJCIikpIC8gNTEyCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoImRkIGlmPSVzIG9mPSVzIHNraXA9JWQgY291bnQ9JWQiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2ljaW1nLCBwYXJ0X2ZpbGUsIHN0YXJ0LCBsZW5ndGgpKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgcnVuQ21kKCJkZCBpZj0lcyBvZj0lcyBza2lwPSVkIGNvdW50PSVkIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpY2ltZywgcGFydF9maWxlLCBzdGFydCwgbGVuZ3RoKSkKIAogICAgICAgICAgICAgZGVmIGV4dHJhY3RfZmlsZXMoZGVidWdmc19vdXRwdXQpOgogICAgICAgICAgICAgICAgICIiIgpAQCAtNDYzLDcgKzQ2OCw2IEBACiAgICAgICAgICAgICAjIC91c3IuCiAgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MSIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQogICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJldGMiLCBmaWxlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQpAQCAtNDcyLDcgKzQ3Niw2IEBACiAgICAgICAgICAgICAjIGRpcmVjdG9yaWVzLgogICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDIiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKICAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZXRjIiwgZmlsZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKQEAgLTQ4Miw3ICs0ODUsNiBAQAogICAgICAgICAgICAgIyBkaXJlY3RvcnksIGJ1dCBub3QgdGhlIGZpbGVzIGluc2lkZSBpdC4KICAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQzIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCiAgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImV0YyIsIGZpbGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCkBAIC00OTAsNyArNDkyLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJpbiIsIGZpbGVzKQogICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCBiaW4nICVzIDI+L2Rldi9udWxsIiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQzIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCiAgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi4iLCBmaWxlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi4uIiwgZmlsZXMpCkBAIC01MjIsMTIgKzUyMywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKICAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQogCitjbGFzcyBXaWMyKFdpY1Rlc3RDYXNlKToKKwogICAgIEBPRVRlc3RJRCgxNDk2KQogICAgIGRlZiB0ZXN0X2JtYXBfc2hvcnQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiAuYm1hcCBmaWxlIC1tIG9wdGlvbiIiIgogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW0gLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKGNtZCkuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdC5ibWFwIikpKQogCkBAIC01MzUsMjEgKzUzNywxMCBAQAogICAgIGRlZiB0ZXN0X2JtYXBfbG9uZyhzZWxmKToKICAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIC5ibWFwIGZpbGUgLS1ibWFwIG9wdGlvbiIiIgogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLS1ibWFwIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZChjbWQpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QuYm1hcCIpKSkKIAotICAgIGRlZiBfZ2V0X2ltYWdlX2Vudl9wYXRoKHNlbGYsIGltYWdlKToKLSAgICAgICAgIiIiR2VuZXJhdGUgYW5kIG9idGFpbiB0aGUgcGF0aCB0byA8aW1hZ2U+LmVudiIiIgotICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZi53aWNlbnZfY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJyVzIC1jIGRvX3Jvb3Rmc193aWNlbnYnICUgaW1hZ2UpLnN0YXR1cykKLSAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfRElSJywgJ01BQ0hJTkUnXSwgaW1hZ2UpCi0gICAgICAgICAgICBzdGRpciA9IGJiX3ZhcnNbJ1NUQUdJTkdfRElSJ10KLSAgICAgICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KLSAgICAgICAgICAgIHNlbGYud2ljZW52X2NhY2hlW2ltYWdlXSA9IG9zLnBhdGguam9pbihzdGRpciwgbWFjaGluZSwgJ2ltZ2RhdGEnKQotICAgICAgICByZXR1cm4gc2VsZi53aWNlbnZfY2FjaGVbaW1hZ2VdCi0KICAgICBAT0VUZXN0SUQoMTM0NykKICAgICBkZWYgdGVzdF9pbWFnZV9lbnYoc2VsZik6CiAgICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiA8aW1hZ2U+LmVudiBmaWxlcy4iIiIKQEAgLTU4MCwxMCArNTcxLDEwIEBACiAgICAgICAgIGltZ2VudmRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKICAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAid2ljLXRvb2xzIikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9JXMgLXYgJXMgLW4gJXMgLW8gJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltYWdlLCBpbWdlbnZkaXIsIG5hdGl2ZV9zeXNyb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRkaXIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTY2NSkKQEAgLTU5MywxMyArNTg0LDEzIEBACiAgICAgICAgIGltZ2VudmRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKICAgICAgICAgbmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAid2ljLXRvb2xzIikKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9JXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS12YXJzICVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbmF0aXZlLXN5c3Jvb3QgJXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGltYWdlLCBpbWdlbnZkaXIsIG5hdGl2ZV9zeXNyb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRkaXIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTM1MSkKQEAgLTY3OSwxOSArNjcwLDIxIEBACiAgICAgICAgIFRlc3QgY3JlYXRpb24gb2YgYSBzaW1wbGUgaW1hZ2Ugd2l0aCBwYXJ0aXRpb24gc2l6ZSBjb250cm9sbGVkIHRocm91Z2gKICAgICAgICAgLS1maXhlZC1zaXplIGZsYWcKICAgICAgICAgIiIiCi0gICAgICAgIHdrc3BhdGgsIHdrc25hbWUgPSBXaWMuX21ha2VfZml4ZWRfc2l6ZV93a3MoMjAwKQorICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljMi5fbWFrZV9maXhlZF9zaXplX3drcygyMDApCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSkKICAgICAgICAgb3MucmVtb3ZlKHdrc3BhdGgpCiAgICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3aWNvdXQpKQogCiAgICAgICAgIHdpY2ltZyA9IHdpY291dFswXQogCisgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgIndpYy10b29scyIpCisKICAgICAgICAgIyB2ZXJpZnkgcGFydGl0aW9uIHNpemUgd2l0aCB3aWMKICAgICAgICAgcmVzID0gcnVuQ21kKCJwYXJ0ZWQgLW0gJXMgdW5pdCBtaWIgcCAyPi9kZXYvbnVsbCIgJSB3aWNpbWcsCi0gICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1zZWxmLm5hdGl2ZV9zeXNyb290KQorICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9bmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgIyBwYXJzZSBwYXJ0ZWQgb3V0cHV0IHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKICAgICAgICAgIyBCWVQ7XG4KQEAgLTcwOSw3ICs3MDIsNyBAQAogICAgICAgICAtLWZpeGVkLXNpemUgZmxhZy4gVGhlIHNpemUgb2YgcGFydGl0aW9uIGlzIGludGVudGlvbmFsbHkgc2V0IHRvIDFNaUIKICAgICAgICAgaW4gb3JkZXIgdG8gdHJpZ2dlciBhbiBlcnJvciBpbiB3aWMuCiAgICAgICAgICIiIgotICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDEpCisgICAgICAgIHdrc3BhdGgsIHdrc25hbWUgPSBXaWMyLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDEpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCkBAIC03NDYsNyArNzM5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9vdGxvYWRlciAtLXRpbWVvdXQ9MCAtLWFwcGVuZD0iY29uc29sZT10dHlTMCwxMTUyMDBuOCJcbiddKQogICAgICAgICAgICAgd2tzLmZsdXNoKCkKICAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQogICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQpAQCAtNzYzLDEwICs3NTYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eXZmYXQgICAtLWZzdHlwZSB2ZmF0ICAgLS1zaXplIDFNXG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5bXNkb3MgIC0tZnN0eXBlIG1zZG9zICAtLXNpemUgMU1cbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlleHQyICAgLS1mc3R5cGUgZXh0MiAgIC0tc2l6ZSAxTVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWJ0cmZzICAtLWZzdHlwZSBidHJmcyAgLS1zaXplIDEwME1cbiddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5YnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAtLXNpemUgMTUwTVxuJ10pCiAgICAgICAgICAgICB3a3MuZmx1c2goKQogICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICBydW5DbWQoY21kKQogICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCiAgICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCkBAIC03NzksNyArNzcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1vdmVyaGVhZC1mYWN0b3IgMS4yIC0tc2l6ZSAxMDBrXG4nXSkKICAgICAgICAgICAgIHdrcy5mbHVzaCgpCiAgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgKHdrcy5uYW1lLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQogICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQpAQCAtNzkxLDcgKzc4NCw3IEBACiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHNkaW1hZ2UtYm9vdHBhcnQgLWUgJXMgLW8gJXMiICUgKGltZywgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9CT09UX0ZJTEVTID0gIiVzKiInICUgZ2V0X2JiX3ZhcignS0VSTkVMX0lNQUdFVFlQRScsIGltZykKICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAic2RpbWFnZS1ib290cGFydC0qZGlyZWN0IikpKQogCkBAIC04MjcsOSArODIwLDkgQEAKICAgICBAT0VUZXN0SUQoMTg1NykKICAgICBkZWYgdGVzdF93aWNfbHMoc2VsZik6CiAgICAgICAgICIiIlRlc3QgbGlzdGluZyBpbWFnZSBjb250ZW50IHVzaW5nICd3aWMgbHMnIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKIApAQCAtODM3LDIwICs4MzAsMTggQEAKIAogICAgICAgICAjIGxpc3QgcGFydGl0aW9ucwogICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlcyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKIAogICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgogICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKIAogICAgIEBPRVRlc3RJRCgxODU2KQogICAgIGRlZiB0ZXN0X3dpY19jcChzZWxmKToKICAgICAgICAgIiIiVGVzdCBjb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgdGhlIHdpYyBpbWFnZS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQogCkBAIC04NTgsMTkgKzg0OSwxNiBAQAogCiAgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZmlyc3QgcGFydGl0aW9uCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQogCiAgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2ljLWNwIikgYXMgdGVzdGZpbGU6CiAgICAgICAgICAgICB0ZXN0ZmlsZS53cml0ZSgidGVzdCIpCiAKICAgICAgICAgICAgICMgY29weSBmaWxlIHRvIHRoZSBwYXJ0aXRpb24KLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGNwICVzICVzOjEvIC1uICVzIiAlICh0ZXN0ZmlsZS5uYW1lLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3AgJXMgJXM6MS8gLW4gJXMiICUgKHRlc3RmaWxlLm5hbWUsIGltYWdlc1swXSwgc3lzcm9vdCkpCiAKICAgICAgICAgICAgICMgY2hlY2sgaWYgZmlsZSBpcyB0aGVyZQogICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MS8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlLm5hbWUpIGluIHJlc3VsdC5vdXRwdXQpCiAKQEAgLTg4MSwyMSArODY5LDE5IEBACiAgICAgICAgICAgICBjb3B5KHRlc3RmaWxlLm5hbWUsIHRlc3RkaXIpCiAKICAgICAgICAgICAgICMgY29weSBkaXJlY3RvcnkgdG8gdGhlIHBhcnRpdGlvbgotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgY3AgJXMgJXM6MS8gLW4gJXMiICUgKHRlc3RkaXIsIGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcCAlcyAlczoxLyAtbiAlcyIgJSAodGVzdGRpciwgaW1hZ2VzWzBdLCBzeXNyb290KSkKIAogICAgICAgICAgICAgIyBjaGVjayBpZiBkaXJlY3RvcnkgaXMgdGhlcmUKICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZSh0ZXN0ZGlyKSBpbiByZXN1bHQub3V0cHV0KQogCiAgICAgQE9FVGVzdElEKDE4NTgpCiAgICAgZGVmIHRlc3Rfd2ljX3JtKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmcm9tIHRoZSB0aGUgd2ljIGltYWdlLiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIm1rZWZpZGlzay0qLmRpcmVjdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCiAKQEAgLTkwMywyMSArODg5LDE3IEBACiAKICAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBmaXJzdCBwYXJ0aXRpb24KICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydEluKCdcbkJaSU1BR0UgICAgICAgICcsIHJlc3VsdC5vdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuRUZJICAgICAgICAgIDxESVI+ICAgICAnLCByZXN1bHQub3V0cHV0KQogCiAgICAgICAgICMgcmVtb3ZlIGZpbGUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgcm0gJXM6MS9iemltYWdlIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgid2ljIHJtICVzOjEvYnppbWFnZSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKIAogICAgICAgICAjIHJlbW92ZSBkaXJlY3RvcnkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgcm0gJXM6MS9lZmkgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCJ3aWMgcm0gJXM6MS9lZmkgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCiAKICAgICAgICAgIyBjaGVjayBpZiB0aGV5J3JlIHJlbW92ZWQKICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdcbkJaSU1BR0UgICAgICAgICcsIHJlc3VsdC5vdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1xuRUZJICAgICAgICAgIDxESVI+ICAgICAnLCByZXN1bHQub3V0cHV0KQogCkBAIC05MzYsNyArOTE4LDcgQEAKICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlidHJmcyAgLS1mc3R5cGUgYnRyZnMgIC0tc2l6ZSAxMDBNIC0tbWtmcy1leHRyYW9wdHMgIi0tbWl4ZWQgLUsiXG4nXSkKICAgICAgICAgICAgIHdrcy5mbHVzaCgpCiAgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KICAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKQEAgLTk2Niw3ICs5NDgsNyBAQAogCiAgICAgICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCiAgICAgICAgICAgICBjbWQgPSAid2ljIHdyaXRlIC1uICVzIC0tZXhwYW5kIDE6MCAlcyAlcyIgJSAoc3lzcm9vdCwgaW1hZ2VfcGF0aCwgbmV3X2ltYWdlX3BhdGgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZChjbWQpCiAKICAgICAgICAgICAgICMgY2hlY2sgaWYgcGFydGl0aW9ucyBhcmUgZXhwYW5kZWQKICAgICAgICAgICAgIG9yaWcgPSBydW5DbWQoIndpYyBscyAlcyAtbiAlcyIgJSAoaW1hZ2VfcGF0aCwgc3lzcm9vdCkpCkBAIC05OTYsOSArOTc4LDkgQEAKIAogICAgIGRlZiB0ZXN0X3dpY19sc19leHQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgbGlzdGluZyBjb250ZW50IG9mIHRoZSBleHQgcGFydGl0aW9uIHVzaW5nICd3aWMgbHMnIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKIApAQCAtMTAwNiwxNSArOTg4LDE0IEBACiAKICAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBzZWNvbmQgZXh0NCBwYXJ0aXRpb24KICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChbJ2JpbicsICdob21lJywgJ3Byb2MnLCAndXNyJywgJ3ZhcicsICdkZXYnLCAnbGliJywgJ3NiaW4nXSkuaXNzdWJzZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKSkpCiAKICAgICBkZWYgdGVzdF93aWNfY3BfZXh0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSBleHQgcGFydGl0aW9uLiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCiAKQEAgLTEwMjIsNyArMTAwMyw2IEBACiAKICAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBleHQ0IHBhcnRpdGlvbgogICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBkaXJzID0gc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KFsnYmluJywgJ2hvbWUnLCAncHJvYycsICd1c3InLCAndmFyJywgJ2RldicsICdsaWInLCAnc2JpbiddKS5pc3N1YnNldChkaXJzKSkKIApAQCAtMTAzMCwyMCArMTAxMCwxOCBAQAogICAgICAgICAgICAgdGVzdGZpbGUud3JpdGUoInRlc3QiKQogCiAgICAgICAgICAgICAjIGNvcHkgZmlsZSB0byB0aGUgcGFydGl0aW9uCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBjcCAlcyAlczoyLyAtbiAlcyIgJSAodGVzdGZpbGUubmFtZSwgaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNwICVzICVzOjIvIC1uICVzIiAlICh0ZXN0ZmlsZS5uYW1lLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQogCiAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgbmV3ZGlycyA9IHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZGlycy5kaWZmZXJlbmNlKGRpcnMpLCBzZXQoW29zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUubmFtZSldKSkKIAogICAgIGRlZiB0ZXN0X3dpY19ybV9leHQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgcmVtb3ZpbmcgZmlsZXMgZnJvbSB0aGUgZXh0IHBhcnRpdGlvbi4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKi5kaXJlY3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQogCkBAIC0xMDUxLDE0ICsxMDI5LDExIEBACiAKICAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSAvZXRjIGRpcmVjdG9yeSBvbiBleHQ0IHBhcnRpdGlvbgogICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyL2V0Yy8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmc3RhYicgaW4gW2xpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lXSkKIAogICAgICAgICAjIHJlbW92ZSBmaWxlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIHJtICVzOjIvZXRjL2ZzdGFiIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgid2ljIHJtICVzOjIvZXRjL2ZzdGFiIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQogCiAgICAgICAgICMgY2hlY2sgaWYgaXQncyByZW1vdmVkCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvZXRjLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZzdGFiJyBub3QgaW4gW2xpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKaW5kZXggOWE1Njg4OC4uYzUyMTI5MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKQEAgLTExLDYgKzExLDcgQEAKIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2UKIAogaW1wb3J0IG9lcWEKK2ltcG9ydCBvZQogCiBmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0LCBPRVRlc3RDb250ZXh0RXhlY3V0b3IKIGZyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVByZVJ1biwgT0VRQVRlc3ROb3RGb3VuZApAQCAtMjUsMTQgKzI2LDE0IEBACiAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IE5vbmUKICAgICAgICAgc2VsZi5jb25maWdfcGF0aHMgPSBjb25maWdfcGF0aHMKIAotICAgIGRlZiBydW5UZXN0cyhzZWxmLCBtYWNoaW5lPU5vbmUsIHNraXBzPVtdKToKKyAgICBkZWYgcnVuVGVzdHMoc2VsZiwgcHJvY2Vzc2VzPU5vbmUsIG1hY2hpbmU9Tm9uZSwgc2tpcHM9W10pOgogICAgICAgICBpZiBtYWNoaW5lOgogICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gbWFjaGluZQogICAgICAgICAgICAgaWYgbWFjaGluZSA9PSAncmFuZG9tJzoKICAgICAgICAgICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBjaG9pY2Uoc2VsZi5tYWNoaW5lcykKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ1J1biB0ZXN0cyB3aXRoIGN1c3RvbSBNQUNISU5FIHNldCB0bzogJXMnICUgXAogICAgICAgICAgICAgICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUpCi0gICAgICAgIHJldHVybiBzdXBlcihPRVNlbGZ0ZXN0VGVzdENvbnRleHQsIHNlbGYpLnJ1blRlc3RzKHNraXBzKQorICAgICAgICByZXR1cm4gc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0LCBzZWxmKS5ydW5UZXN0cyhwcm9jZXNzZXMsIHNraXBzKQogCiAgICAgZGVmIGxpc3RUZXN0cyhzZWxmLCBkaXNwbGF5X3R5cGUsIG1hY2hpbmU9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzdXBlcihPRVNlbGZ0ZXN0VGVzdENvbnRleHQsIHNlbGYpLmxpc3RUZXN0cyhkaXNwbGF5X3R5cGUpCkBAIC02OCw2ICs2OSw5IEBACiAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICBoZWxwPSdMaXN0IGFsbCBhdmFpbGFibGUgdGVzdHMuJykKIAorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaicsICctLW51bS1wcm9jZXNzZXMnLCBkZXN0PSdwcm9jZXNzZXMnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICB0eXBlPWludCwgaGVscD0ibnVtYmVyIG9mIHByb2Nlc3NlcyB0byBleGVjdXRlIGluIHBhcmFsbGVsIHdpdGgiKQorCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbWFjaGluZScsIHJlcXVpcmVkPUZhbHNlLCBjaG9pY2VzPVsncmFuZG9tJywgJ2FsbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biB0ZXN0cyBvbiBkaWZmZXJlbnQgbWFjaGluZXMgKHJhbmRvbS9hbGwpLicpCiAgICAgICAgIApAQCAtOTYsNyArMTAwLDYgQEAKICAgICAgICAgcmV0dXJuIGNhc2VzX3BhdGhzCiAKICAgICBkZWYgX3Byb2Nlc3NfYXJncyhzZWxmLCBsb2dnZXIsIGFyZ3MpOgotCiAgICAgICAgIGFyZ3MudGVzdF9zdGFydF90aW1lID0gdGltZS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikKICAgICAgICAgYXJncy50ZXN0X2RhdGFfZmlsZSA9IE5vbmUKICAgICAgICAgYXJncy5DQVNFU19QQVRIUyA9IE5vbmUKQEAgLTE0Myw2ICsxNDYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19iYWNrdXAnXSkKIAogICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ3NraXBzJ10gPSBhcmdzLnNraXBzCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsncHJvY2Vzc2VzJ10gPSBhcmdzLnByb2Nlc3NlcwogCiAgICAgZGVmIF9wcmVfcnVuKHNlbGYpOgogICAgICAgICBkZWYgX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJpYWJsZXModmFycyk6CkBAIC0xNTgsNyArMTYyLDcgQEAKICAgICAgICAgICAgICAgICBvcy5jaGRpcihidWlsZGRpcikKIAogICAgICAgICAgICAgaWYgbm90ICJtZXRhLXNlbGZ0ZXN0IiBpbiBzZWxmLnRjLnRkWyJCQkxBWUVSUyJdOgotICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLndhcm4oIm1ldGEtc2VsZnRlc3QgbGF5ZXIgbm90IGZvdW5kIGluIEJCTEFZRVJTLCBhZGRpbmcgaXQiKQorICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLndhcm5pbmcoIm1ldGEtc2VsZnRlc3QgbGF5ZXIgbm90IGZvdW5kIGluIEJCTEFZRVJTLCBhZGRpbmcgaXQiKQogICAgICAgICAgICAgICAgIG1ldGFfc2VsZnRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGMudGRbIkJCTEFZRVJTX0ZFVENIX0RJUiJdLCAnbWV0YS1zZWxmdGVzdCcpCiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihtZXRhX3NlbGZ0ZXN0ZGlyKToKQEAgLTE4OSw2ICsxOTMsMTAgQEAKICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCJZb3UgaGF2ZSBidWlsZGhpc3RvcnkgZW5hYmxlZCBhbHJlYWR5IGFuZCB0aGlzIGlzbid0IHJlY29tbWVuZGVkIGZvciBzZWxmdGVzdCwgcGxlYXNlIGRpc2FibGUgaXQgZmlyc3QuIikKICAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KIAorICAgICAgICBpZiAicm1fd29yay5iYmNsYXNzIiBpbiBzZWxmLnRjLnRkWyJCQklOQ0xVREVEIl06CisgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiWW91IGhhdmUgcm1fd29yayBlbmFibGVkIHdoaWNoIGlzbid0IHJlY29tbWVuZGVkIHdoaWxlIHJ1bm5pbmcgb2Utc2VsZnRlc3QuIFBsZWFzZSBkaXNhYmxlIGl0IGJlZm9yZSBjb250aW51aW5nLiIpCisgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCisKICAgICAgICAgaWYgIlBSU0VSVl9IT1NUIiBpbiBzZWxmLnRjLnRkOgogICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoIlBsZWFzZSB1bnNldCBQUlNFUlZfSE9TVCBpbiBvcmRlciB0byBydW4gb2Utc2VsZnRlc3QiKQogICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgpAQCAtMTk5LDggKzIwNyw4IEBACiAKICAgICAgICAgX2FkZF9sYXllcl9saWJzKCkKIAotICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSdW5uaW5nIGJpdGJha2UgLXAiKQotICAgICAgICBydW5DbWQoImJpdGJha2UgLXAiKQorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSdW5uaW5nIGJpdGJha2UgLWUgdG8gdGVzdCB0aGUgY29uZmlndXJhdGlvbiBpcyB2YWxpZC9wYXJzYWJsZSIpCisgICAgICAgIHJ1bkNtZCgiYml0YmFrZSAtZSIpCiAKICAgICBkZWYgZ2V0X2pzb25fcmVzdWx0X2RpcihzZWxmLCBhcmdzKToKICAgICAgICAganNvbl9yZXN1bHRfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGMudGRbIkxPR19ESVIiXSwgJ29lcWEnKQpAQCAtMjE2LDcgKzIyNCw3IEBACiAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSB7J1RFU1RfVFlQRSc6ICdvZXNlbGZ0ZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICdTVEFSVFRJTUUnOiBhcmdzLnRlc3Rfc3RhcnRfdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICdNQUNISU5FJzogc2VsZi50Yy50ZFsiTUFDSElORSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0hPU1RfRElTVFJPJzogKCctJy5qb2luKHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpKSkucmVwbGFjZSgnICcsICctJyksCisgICAgICAgICAgICAgICAgICAgICAgICAnSE9TVF9ESVNUUk8nOiBvZS5sc2IuZGlzdHJvX2lkZW50aWZpZXIoKS5yZXBsYWNlKCcgJywgJy0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdIT1NUX05BTUUnOiBtZXRhZGF0YVsnaG9zdG5hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICdMQVlFUlMnOiBtZXRhZGF0YVsnbGF5ZXJzJ119CiAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CmluZGV4IDdkMTIzMzEuLmE0OGQ0OTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CkBAIC0xLDEzICsxLDEzIEBACiBpbXBvcnQgaHR0cC5zZXJ2ZXIKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCBvcworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHNpZ25hbAogZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ01peEluCiAKIGNsYXNzIEhUVFBTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIpOgogCi0gICAgZGVmIHNlcnZlcl9zdGFydChzZWxmLCByb290X2Rpcik6Ci0gICAgICAgIGltcG9ydCBzaWduYWwKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgc2lnbmFsLlNJR19ERkwpCisgICAgZGVmIHNlcnZlcl9zdGFydChzZWxmLCByb290X2RpciwgbG9nZ2VyKToKICAgICAgICAgb3MuY2hkaXIocm9vdF9kaXIpCiAgICAgICAgIHNlbGYuc2VydmVfZm9yZXZlcigpCiAKQEAgLTE4LDE5ICsxOCw0MCBAQAogCiBjbGFzcyBIVFRQU2VydmljZShvYmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBob3N0PScnKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdF9kaXIsIGhvc3Q9JycsIGxvZ2dlcj1Ob25lKToKICAgICAgICAgc2VsZi5yb290X2RpciA9IHJvb3RfZGlyCiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5wb3J0ID0gMAorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5yb290X2Rpcik6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJOb3Qgc3RhcnRpbmcgSFRUUFNlcnZpY2UgZm9yIGRpcmVjdG9yeSAlcyB3aGljaCBkb2Vzbid0IGV4aXN0IiAlIChzZWxmLnJvb3RfZGlyKSkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHNlbGYuc2VydmVyID0gSFRUUFNlcnZlcigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBIVFRQUmVxdWVzdEhhbmRsZXIpCiAgICAgICAgIGlmIHNlbGYucG9ydCA9PSAwOgogICAgICAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2ZXIuc2VydmVyX3BvcnQKLSAgICAgICAgc2VsZi5wcm9jZXNzID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuc2VydmVyLnNlcnZlcl9zdGFydCwgYXJncz1bc2VsZi5yb290X2Rpcl0pCisgICAgICAgIHNlbGYucHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNlcnZlci5zZXJ2ZXJfc3RhcnQsIGFyZ3M9W3NlbGYucm9vdF9kaXIsIHNlbGYubG9nZ2VyXSkKKworICAgICAgICAjIFRoZSBzaWduYWwgaGFuZGxlciBmcm9tIHRlc3RpbWFnZS5iYmNsYXNzIGNhbiBjYXVzZSBkZWFkbG9ja3MgaGVyZQorICAgICAgICAjIGlmIHRoZSBIVFRQU2VydmVyIGlzIHRlcm1pbmF0ZWQgYmVmb3JlIGl0IGNhbiByZXN0b3JlIHRoZSBzdGFuZGFyZCAKKyAgICAgICAgI3NpZ25hbCBiZWhhdmlvdXIKKyAgICAgICAgb3JpZyA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNpZ25hbC5TSUdfREZMKQogICAgICAgICBzZWxmLnByb2Nlc3Muc3RhcnQoKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBvcmlnKQorCisgICAgICAgIGlmIHNlbGYubG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RhcnRlZCBIVFRQU2VydmljZSBvbiAlczolcyIgJSAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorCiAKICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1pbmF0ZSgpCi0gICAgICAgIHNlbGYucHJvY2Vzcy5qb2luKCkKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAic2VydmVyIik6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJwcm9jZXNzIik6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3MudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5qb2luKCkKKyAgICAgICAgaWYgc2VsZi5sb2dnZXI6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdG9wcGVkIEhUVFBTZXJ2aWNlIG9uICVzOiVzIiAlIChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5CmluZGV4IGFmZDViOGUuLjE0OTVmODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtMjIsMTMgKzIyLDE1IEBACiAgICAgICAgIHBtID0gT3BrZ1BNKGQsCiAgICAgICAgICAgICAgICAgICAgIHJvb3RfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIklQS0dDT05GX1RBUkdFVCIpLAotICAgICAgICAgICAgICAgICAgICBkLmdldFZhcigiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiKSkKKyAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIkFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTIiksCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzPUZhbHNlKQogCiAgICAgZWxpZiBwa2dfY2xhc3MgPT0gImRlYiI6CiAgICAgICAgIHBtID0gRHBrZ1BNKGQsCiAgICAgICAgICAgICAgICAgICAgIHJvb3RfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1BBQ0tBR0VfQVJDSFMnKSwKLSAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0RQS0dfQVJDSCcpKQorICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignRFBLR19BUkNIJyksCisgICAgICAgICAgICAgICAgICAgIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzPUZhbHNlKQogCiAgICAgcG0ud3JpdGVfaW5kZXgoKQogICAgIHBtLnVwZGF0ZSgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CmluZGV4IGI4N2Q3NzYuLmM3NDQyYTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CkBAIC0zNTAsMTAgKzM1MCwxMCBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQotICAgICAgICBzZWxmLnN0b3BfcWVtdV9zeXN0ZW0oKQogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJvcmlnY2hsZGhhbmRsZXIiKToKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0NITEQsIHNlbGYub3JpZ2NobGRoYW5kbGVyKQorICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKKyAgICAgICAgc2VsZi5zdG9wX3FlbXVfc3lzdGVtKCkKICAgICAgICAgaWYgc2VsZi5ydW5xZW11OgogICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAibW9uaXRvcnBpZCIpOgogICAgICAgICAgICAgICAgIG9zLmtpbGwoc2VsZi5tb25pdG9ycGlkLCBzaWduYWwuU0lHS0lMTCkKQEAgLTM5Miw3ICszOTIsNyBAQAogICAgICAgICAgICAgICAgICMgcWVtdS1zeXN0ZW0gYmVoYXZlcyB3ZWxsIGFuZCBhIFNJR1RFUk0gaXMgZW5vdWdoCiAgICAgICAgICAgICAgICAgb3Mua2lsbChzZWxmLnFlbXVwaWQsIHNpZ25hbC5TSUdURVJNKQogICAgICAgICAgICAgZXhjZXB0IFByb2Nlc3NMb29rdXBFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm4oJ3FlbXUtc3lzdGVtIGVuZGVkIHVuZXhwZWN0ZWRseScpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygncWVtdS1zeXN0ZW0gZW5kZWQgdW5leHBlY3RlZGx5JykKIAogICAgIGRlZiBzdG9wX3RocmVhZChzZWxmKToKICAgICAgICAgaWYgc2VsZi50aHJlYWQgYW5kIHNlbGYudGhyZWFkLmlzX2FsaXZlKCk6CkBAIC00MDgsNyArNDA4LDcgQEAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnJ1bnFlbXU6CisgICAgICAgIGlmIG5vdCBzZWxmLnJ1bnFlbXUgb3Igc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnFlbXVfcGlkZmlsZSk6CiAgICAgICAgICAgICBmID0gb3BlbihzZWxmLnFlbXVfcGlkZmlsZSwgJ3InKQpAQCAtNDY5LDcgKzQ2OSw3IEBACiAKICAgICBkZWYgX2R1bXBfaG9zdChzZWxmKToKICAgICAgICAgc2VsZi5ob3N0X2R1bXBlci5jcmVhdGVfZGlyKCJxZW11IikKLSAgICAgICAgc2VsZi5sb2dnZXIud2FybigiUWVtdSBlbmRlZCB1bmV4cGVjdGVkbHksIGR1bXAgZGF0YSBmcm9tIGhvc3QiCisgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIlFlbXUgZW5kZWQgdW5leHBlY3RlZGx5LCBkdW1wIGRhdGEgZnJvbSBob3N0IgogICAgICAgICAgICAgICAgICIgaXMgaW4gJXMiICUgc2VsZi5ob3N0X2R1bXBlci5kdW1wX2RpcikKICAgICAgICAgc2VsZi5ob3N0X2R1bXBlci5kdW1wX2hvc3QoKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWRfMi4wLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkXzIuMC4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg2NTI2Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWRfMi4wLjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGFjcGlkLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hY3BpZC5oO2VuZGxpbmU9MjQ7bWQ1PTMyNGE5Y2YyMjVhZTY5ZGRhYWQxYmY5ZDk0MjExNWI1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDQzMjQwN2I1ZmY3NWFlOGUwOGFmYjQzMDUyZmRlMmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTgwYzNhNTRiMGQzZjJmZDQ5ZmQ4NDVhMDU4NGM1YzJhYmVhYWI5ZTlhYzA5ZmNiYjY4Njg2YmJiNTdhNzExMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hY3BpZC9hY3BpZF8yLjAuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWRfMi4wLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMTlkMjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWRfMi4wLjMwLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBhY3BpZC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWNwaWQuaDtlbmRsaW5lPTI0O21kNT0zMjRhOWNmMjI1YWU2OWRkYWFkMWJmOWQ5NDIxMTViNSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1MjgwNDBiNWQzNGY4YzI0ZWJhYmQ5N2JlZmJmOTEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4Yjc3YjYyZDNmNjRlYmQxYzJhM2QxNmJjY2M2ZDQzMzNiNGUyNGE4NmFlYWNlYmVjMjU1ZmFkMjIzY2Y0Y2IiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYXBtZC9hcG1kL2xlZ2FjeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hcG1kL2FwbWQvbGVnYWN5LnBhdGNoCmluZGV4IDVkYjg5NWUuLjg4NzEzMTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hcG1kL2FwbWQvbGVnYWN5LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hcG1kL2FwbWQvbGVnYWN5LnBhdGNoCkBAIC03LDcgKzcsNyBAQAogZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9hL2FwbWQvYXBtZF8zLjIuMi0xNS5kZWJpYW4udGFyLnh6CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCiAgTWFrZWZpbGUgfCAgMiArLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZWVlLWFjcGktc2NyaXB0c19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9lZWUtYWNwaS1zY3JpcHRzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJhMDJhYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9lZWUtYWNwaS1zY3JpcHRzX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiZWVlUEMgc3BlY2lmaWMgQUNQSSBzY3JpcHRzIgotSE9NRVBBR0UgPSAiaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2RlYmlhbi1lZWVwYy8iCi1TRUNUSU9OID0gImJhc2UiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT03N2VmODNhYjVmNGFmOTM4YTkzZWRiNjFmN2I3NGYyYyIKLQotU1JDUkVWID0gIjlkNGNkZWRjYTI1YjM5NjQwNWY4NTg3ZjljNGZiZjgyMjllMDQxYzIiCi1QViA9ICIxLjEuMTIrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlYmlhbi5vcmcvZ2l0L2RlYmlhbi1lZWVwYy9lZWVwYy1hY3BpLXNjcmlwdHMuZ2l0IFwKLQkgICBmaWxlOi8vcmVtb3ZlLWRvYy1jaGVjay5wYXRjaCBcCi0JICAgZmlsZTovL3Bvd2VyYnRuLnBhdGNoIFwKLQkgICBmaWxlOi8vcG9saWN5LWZ1bmNzICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9hY3BpLXN1cHBvcnQvIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZWVlcGMtYWNwaS1zY3JpcHRzIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC8gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hY3BpLyIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYWNwaS9hY3Rpb25zLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYWNwaS9ldmVudHMvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hY3BpL2xpYi91ZGV2L3J1bGVzLmQKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2VlZXBjLWFjcGktc2NyaXB0cy8KLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FjcGktc3VwcG9ydC8KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2V2ZW50cy8qICR7RH0ke3N5c2NvbmZkaXJ9L2FjcGkvZXZlbnRzLwotCWluc3RhbGwgLW0gNjQ0ICR7U30vbGliL3VkZXYvcnVsZXMuZC8qICR7RH0ke3N5c2NvbmZkaXJ9L2FjcGkvbGliL3VkZXYvcnVsZXMuZC8KLQlpbnN0YWxsICR7U30vYWN0aW9ucy8qICR7RH0ke3N5c2NvbmZkaXJ9L2FjcGkvYWN0aW9ucy8KLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9hY3BpbGliL2Z1bmN0aW9ucy5zaCAke0R9JHtkYXRhZGlyfS9lZWVwYy1hY3BpLXNjcmlwdHMvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcG9saWN5LWZ1bmNzICR7RH0ke2RhdGFkaXJ9L2FjcGktc3VwcG9ydC8KLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vZWVlcGMtYWNwaS1zY3JpcHRzLmRlZmF1bHQqICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gInBtLXV0aWxzIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9maWxlcy9wb2xpY3ktZnVuY3MgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9maWxlcy9wb2xpY3ktZnVuY3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMDk5ZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcG9saWN5LWZ1bmNzCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1DaGVja1BvbGljeSgpIHsKLQlpZiBwaWRvZiBnbm9tZS1wb3dlci1tYW5hZ2VyIGtwb3dlcnNhdmUgPiAvZGV2L251bGwgfHwKLQkgICAocGlkb2YgZGNvcHNlcnZlciA+IC9kZXYvbnVsbCAmJiB0ZXN0IC14IC91c3IvYmluL2Rjb3AgJiYgL3Vzci9iaW4vZGNvcCBrZGVkIGtkZWQgbG9hZGVkTW9kdWxlcyB8IGdyZXAgLXEga2xhcHRvcGRhZW1vbikgOyB0aGVuCi0JCWVjaG8gMDsKLQllbHNlCi0JCWVjaG8gMTsKLQlmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcG93ZXJidG4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9maWxlcy9wb3dlcmJ0bi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAzZTU1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9maWxlcy9wb3dlcmJ0bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS0tLQotIGFjdGlvbnMvcG93ZXIuc2ggfCAgICAzICsrKwotIGV2ZW50cy9wb3dlcmJ0biAgfCAgICAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbmFibGUgZmVhdHVyZV0KLQotSW5kZXg6IGdpdC9ldmVudHMvcG93ZXJidG4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnaXQvZXZlbnRzL3Bvd2VyYnRuCTIwMDgtMTAtMDggMTc6NDM6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDIgQEAKLStldmVudD1idXR0b24vcG93ZXIgUFdSRgotK2FjdGlvbj0vZXRjL2FjcGkvYWN0aW9ucy9wb3dlci5zaAotSW5kZXg6IGdpdC9hY3Rpb25zL3Bvd2VyLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2l0L2FjdGlvbnMvcG93ZXIuc2gJMjAwOC0xMC0wOCAxNzo0NToyNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMyBAQAotKyMhL2Jpbi9zaAotKwotKy9zYmluL3NodXRkb3duIC1oIG5vdyAiUG93ZXIgYnV0dG9uIHByZXNzZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9maWxlcy9yZW1vdmUtZG9jLWNoZWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcmVtb3ZlLWRvYy1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZiM2RjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZWVlLWFjcGktc2NyaXB0cy9maWxlcy9yZW1vdmUtZG9jLWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLS0tCi0gYWN0aW9ucy9ob3RrZXkuc2ggICAgIHwgICAgMyAtLS0KLSBhY3Rpb25zL3N1c3BlbmQuc2ggICAgfCAgICAzIC0tLQotIGFjdGlvbnMvdmdhLXRvZ2dsZS5zaCB8ICAgIDMgLS0tCi0gYWN0aW9ucy92b2x1bWUuc2ggICAgIHwgICAgMyAtLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDEyIGRlbGV0aW9ucygtKQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBnaXQvZWVlcGMtYWNwaS1zY3JpcHRzL3ZvbHVtZS5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2VlZXBjLWFjcGktc2NyaXB0cy92b2x1bWUuc2gJMjAxMS0xMS0yOSAxOToyMTo1NS4wMDAwMDAwMDAgKzA4MDAKLSsrKyBnaXQvZWVlcGMtYWNwaS1zY3JpcHRzL3ZvbHVtZS5zaAkyMDExLTExLTI5IDE5OjQxOjM2LjAwMDAwMDAwMCArMDgwMAotQEAgLTMsMTIgKzMsMTAgQEAKLSBbIC1kIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9lZWVwYyBdIHx8IFsgLWQgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2VlZXBjLXdtaSBdIHx8IGV4aXQgMAotICMgVm9sdW1lIGNvbnRyb2xzCi0gCi0tIyBkbyBub3RoaW5nIGlmIHBhY2thZ2UgaXMgcmVtb3ZlZAotIFBLRz1lZWVwYy1hY3BpLXNjcmlwdHMKLSBQS0dfRElSPS91c3Ivc2hhcmUvYWNwaS1zdXBwb3J0LyRQS0cKLSBGVU5DX0xJQj0kUEtHX0RJUi9saWIvZnVuY3Rpb25zLnNoCi0gREVGQVVMVD0vZXRjL2RlZmF1bHQvJFBLRwotLVsgLWUgIiRGVU5DX0xJQiIgXSB8fCBleGl0IDAKLSAKLSAuICRGVU5DX0xJQgotIC4gJFBLR19ESVIvbGliL3NvdW5kLnNoCi1JbmRleDogZ2l0L2VlZXBjLWFjcGktc2NyaXB0cy9ob3RrZXkuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9lZWVwYy1hY3BpLXNjcmlwdHMvaG90a2V5LnNoCTIwMTEtMTEtMjkgMTk6MjE6NTUuMDAwMDAwMDAwICswODAwCi0rKysgZ2l0L2VlZXBjLWFjcGktc2NyaXB0cy9ob3RrZXkuc2gJMjAxMS0xMS0yOSAxOTozOTo1MS4wMDAwMDAwMDAgKzA4MDAKLUBAIC0xLDEyICsxLDEwIEBACi0gIyEvYmluL3NoCi0gCi0gWyAtZCAvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMgXSB8fCBbIC1kIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9lZWVwYy13bWkgXSB8fCBleGl0IDAKLS0jIGRvIG5vdGhpbmcgaWYgcGFja2FnZSBpcyByZW1vdmVkCi0gUEtHPWVlZXBjLWFjcGktc2NyaXB0cwotIFBLR19ESVI9L3Vzci9zaGFyZS9hY3BpLXN1cHBvcnQvJFBLRwotIEZVTkNfTElCPSRQS0dfRElSL2xpYi9mdW5jdGlvbnMuc2gKLSBERUZBVUxUPS9ldGMvZGVmYXVsdC8kUEtHCi0tWyAtZSAiJEZVTkNfTElCIiBdIHx8IGV4aXQgMAotIAotIGNhc2UgJChydW5sZXZlbCkgaW4KLSAgICAgKjB8KjYpCi1JbmRleDogZ2l0L2VlZXBjLWFjcGktc2NyaXB0cy92Z2EtdG9nZ2xlLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZWVlcGMtYWNwaS1zY3JpcHRzL3ZnYS10b2dnbGUuc2gJMjAxMS0xMS0yOSAxOToyMTo1NS4wMDAwMDAwMDAgKzA4MDAKLSsrKyBnaXQvZWVlcGMtYWNwaS1zY3JpcHRzL3ZnYS10b2dnbGUuc2gJMjAxMS0xMS0yOSAxOTo0MDoyNC4wMDAwMDAwMDAgKzA4MDAKLUBAIC0xLDEyICsxLDEwIEBACi0gIyEvYmluL3NoCi0gCi0gWyAtZCAvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMgXSB8fCBbIC1kIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9lZWVwYy13bWkgXSB8fCBleGl0IDAKLS0jIGRvIG5vdGhpbmcgaWYgcGFja2FnZSBpcyByZW1vdmVkCi0gUEtHPWVlZXBjLWFjcGktc2NyaXB0cwotIFBLR19ESVI9L3Vzci9zaGFyZS9hY3BpLXN1cHBvcnQvJFBLRwotIEZVTkNfTElCPSRQS0dfRElSL2xpYi9mdW5jdGlvbnMuc2gKLSBERUZBVUxUPS9ldGMvZGVmYXVsdC8kUEtHCi0tWyAtZSAiJEZVTkNfTElCIiBdIHx8IGV4aXQgMAotIAotIGlmIFsgLWUgIiRERUZBVUxUIiBdOyB0aGVuIC4gIiRERUZBVUxUIjsgZmkKLSAuICRGVU5DX0xJQgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoCmluZGV4IDFiMmFlMWUuLmRjMDBiOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvbGliLU1ha2VmaWxlLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2xpYi1NYWtlZmlsZS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDBkYWEzNTRhMTZhYTNjYWRlNTZlZDQyM2QwZjhhMDRjZjFjMjJmOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNlYzhjMmE3MDMwNGVhYmQ1NzYwOTM3YTRlYzNmYmM0MDY4YTc3ZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjMgQXByIDIwMTUgMDE6NDk6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliL01ha2VmaWxlOiBmaXggcGFyYWxsZWwgaXNzdWUKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGxpYi9NYWtlZmlsZTogZml4IHBhcmFsbGVsIGlzc3VlCiAKIEZpeGVkOgogQXNzZW1ibGVyIG1lc3NhZ2VzOgpAQCAtMTcsMjIgKzE3LDIyIEBACiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gbGliL01ha2VmaWxlIHwgICAgMiArKworIGxpYi9NYWtlZmlsZSB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IGRjNGI5NGEuLmY2NGQxZWQgMTAwNjQ0CitpbmRleCAwNDg3NTFhLi5lZDM5YmJiIDEwMDY0NAogLS0tIGEvbGliL01ha2VmaWxlCiArKysgYi9saWIvTWFrZWZpbGUKLUBAIC03Myw2ICs3Myw4IEBAIGFsbDogbGlic3ViZGlycyBsaWJlZmkuYQorQEAgLTc0LDYgKzc0LDggQEAgYWxsOiBsaWJzdWJkaXJzIGxpYmVmaS5hCiAgbGlic3ViZGlyczoKICAJZm9yIHNkaXIgaW4gJChTVUJESVJTKTsgZG8gbWtkaXIgLXAgJCRzZGlyOyBkb25lCiAgCiArJChPQkpTKTogbGlic3ViZGlycwogKwogIGxpYmVmaS5hOiAkKE9CSlMpCi0gCSQoQVIpIHJ2ICRAICQoT0JKUykKKyAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAgCiAtLSAKLTEuNy45LjUKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaAppbmRleCAwMTEwMjYwLi5hOTgwNmNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxNjg2NWRlNjZkYjMzY2E3MDg3MjE5OWU3MGQ5M2VmY2NlY2M4NTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0OGIyY2RiY2Q3NjExMDVlOGViYWQ0MTJmY2JmMjNkYjFhYzRlZjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgogRGF0ZTogU3VuLCA5IE1hciAyMDE0IDE1OjIyOjE1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMS8zXSBGaXggcGFyYWxsZWwgbWFrZSBmYWlsdXJlIGZvciBhcmNoaXZlcwpAQCAtMTcsMTMgKzE3LDE1IEBACiBTaWduZWQtb2ZmLWJ5OiBEYXJyZW4gSGFydCA8ZHZoYXJ0QGxpbnV4LmludGVsLmNvbT4KIFtSZWJhc2VkIGZvciAzLjAuNl0KIFNpZ25lZC1vZmYtYnk6IENhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+CitbUmViYXNlZCBmb3IgMy4wLjhdCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KICBnbnVlZmkvTWFrZWZpbGUgfCAzICsrLQogIGxpYi9NYWtlZmlsZSAgICB8IDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dudWVmaS9NYWtlZmlsZSBiL2dudWVmaS9NYWtlZmlsZQotaW5kZXggMmE2MTY5OS4uMTQ4MTA2ZSAxMDA2NDQKK2luZGV4IDJhNjE2OTkuLjg5YjU2MGEgMTAwNjQ0CiAtLS0gYS9nbnVlZmkvTWFrZWZpbGUKICsrKyBiL2dudWVmaS9NYWtlZmlsZQogQEAgLTU0LDcgKzU0LDggQEAgVEFSR0VUUwk9IGNydDAtZWZpLSQoQVJDSCkubyBsaWJnbnVlZmkuYQpAQCAtMzIsMjMgKzM0LDIzIEBACiAgCiAtbGliZ251ZWZpLmE6ICQocGF0c3Vic3QgJSxsaWJnbnVlZmkuYSglKSwkKE9CSlMpKQogK2xpYmdudWVmaS5hOiAkKE9CSlMpCi0rCSQoQVIpIHJ2ICRAICQoT0JKUykKKysJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAgCiAgY2xlYW46CiAgCXJtIC1mICQoVEFSR0VUUykgKn4gKi5vICQoT0JKUykKIGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IGI4ZDFjZTcuLjZlZjgxMDcgMTAwNjQ0CitpbmRleCAwZTY0MTBkLi4wNDg3NTFhIDEwMDY0NAogLS0tIGEvbGliL01ha2VmaWxlCiArKysgYi9saWIvTWFrZWZpbGUKIEBAIC03NSw3ICs3NSw3IEBAIGxpYnN1YmRpcnM6CiAgCWZvciBzZGlyIGluICQoU1VCRElSUyk7IGRvIG1rZGlyIC1wICQkc2RpcjsgZG9uZQogIAogIGxpYmVmaS5hOiAkKE9CSlMpCi0tCSQoQVIpIHJ2IC1VICRAICReCi0rCSQoQVIpIHJ2ICRAICQoT0JKUykKKy0JJChBUikgJChBUkZMQUdTKSAkQCAkXgorKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKICAKICBjbGVhbjoKICAJcm0gLWYgbGliZWZpLmEgKn4gJChPQkpTKSAqLyoubwogLS0gCi0yLjkuNAorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNjA3MTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyaWVzIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbnUtZWZpLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyKyB8IEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hcm0uUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYWFyY2g2NC5TO2JlZ2lubGluZT00O2VuZGxpbmU9MTY7bWQ1PWU1ODI3NjRhNDc3NmU2MGM5NWJmOWFiNjE3MzQzZDM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbGludGYuaDtiZWdpbmxpbmU9MTM7ZW5kbGluZT0yMDttZDU9MjAyNzY2Yjc5ZDcwOGVmZjNjYzcwZmNlMTVmYjgwYzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxscGFybS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTE7bWQ1PTQ2OGIxMjMxYjA1YmJjODRiYWUzYTBkNTc3NGUzYmI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9tYXRoLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYi1NYWtlZmlsZS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ2ZjYzMzc1OGE4YTM3ZGI5ZmQ2OTA5ZmUyNzBjMjZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxNTE1OTAyZDgwZmJlYTIzMzI4YTYxZDcwZDNkNTFhNDcyMDRhYmQxNTA3ZWJmYTI3NTUwYTdiOWJmMjJjOTEiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCi1DT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKLQotZG9fY29uZmlndXJlX2xpbnV4LWdudXgzMl9wcmVwZW5kKCkgewotCWNwICR7U1RBR0lOR19JTkNESVJ9L2dudS9zdHVicy14MzIuaCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMtNjQuaAotCWNwICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtMzIuaCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTY0LmgKLX0KLQotZGVmIGdudV9lZmlfYXJjaChkKToKLSAgICBpbXBvcnQgcmUKLSAgICB0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCi0gICAgaWYgcmUubWF0Y2goImlbMzQ1Njc4OV04NiIsIHRhcmNoKToKLSAgICAgICAgcmV0dXJuICJpYTMyIgotICAgIHJldHVybiB0YXJjaAotCi1FWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtAZ251X2VmaV9hcmNoKGQpfScgJ0NDPSR7Q0N9JyAnQVM9JHtBU30nICdMRD0ke0xEfScgJ0FSPSR7QVJ9JyBcCi0gICAgICAgICAgICAgICAgJ1JBTkxJQj0ke1JBTkxJQn0nICdPQkpDT1BZPSR7T0JKQ09QWX0nICdQUkVGSVg9JHtwcmVmaXh9JyAnTElCRElSPSR7bGliZGlyfScgXAotICAgICAgICAgICAgICAgICIKLQotIyBnbnUtZWZpJ3MgTWFrZWZpbGUgdHJlYXRzIHByZWZpeCBhcyB0b29sY2hhaW4gcHJlZml4LCBzbyBkb24ndAotIyBleHBvcnQgaXQuCi1wcmVmaXhbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0iJHtEfSIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkcyIKLQotIyA2NC1iaXQgYmluYXJpZXMgYXJlIGV4cGVjdGVkIGZvciBFRkkgd2hlbiB0YXJnZXRpbmcgWDMyCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKLUlOU0FORV9TS0lQXyR7UE59LWRldl9hcHBlbmRfbGludXgtbXVzbHgzMiA9ICIgYXJjaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgSXQgZG9lc24ndCBzdXBwb3J0IHNzZSwgaXRzIG1ha2UuZGVmYXVsdHMgc2V0czoKLSMgQ0ZMQUdTICs9IC1tbm8tbW14IC1tbm8tc3NlCi0jIFNvIGFsc28gcmVtb3ZlIC1tZnBtYXRoPXNzZSBmcm9tIFRVTkVfQ0NBUkdTCi1UVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgotCi1weXRob24gKCkgewotICAgIGNjYXJncyA9IGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpLnNwbGl0KCkKLSAgICBpZiAnLW14MzInIGluIGNjYXJnczoKLSAgICAgICAgIyB1c2UgeDg2XzY0IEVGSSBBQkkKLSAgICAgICAgY2NhcmdzLnJlbW92ZSgnLW14MzInKQotICAgICAgICBjY2FyZ3MuYXBwZW5kKCctbTY0JykKLSAgICAgICAgZC5zZXRWYXIoJ1RVTkVfQ0NBUkdTJywgJyAnLmpvaW4oY2NhcmdzKSkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYTQ3MzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC44LmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiTGlicmFyaWVzIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbnUtZWZpLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyKyB8IEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hcm0uUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYWFyY2g2NC5TO2JlZ2lubGluZT00O2VuZGxpbmU9MTY7bWQ1PWU1ODI3NjRhNDc3NmU2MGM5NWJmOWFiNjE3MzQzZDM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbGludGYuaDtiZWdpbmxpbmU9MTM7ZW5kbGluZT0yMDttZDU9MjAyNzY2Yjc5ZDcwOGVmZjNjYzcwZmNlMTVmYjgwYzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxscGFybS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTE7bWQ1PTQ2OGIxMjMxYjA1YmJjODRiYWUzYTBkNTc3NGUzYmI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9tYXRoLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYi1NYWtlZmlsZS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImFlMzIwMTFjZmU2YjFjNDBjMGYyNDRiOWE0OWJhMTgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2MDA2ZDhlYThkNjdiY2Y3MmYzNWQwOWQ0M2U5ZWY2YTY5NDAwZDZkNWQ0YmY2NGJhZjFhYjc0MzRlMmI3MjIiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKiktbGludXgiCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKKworZG9fY29uZmlndXJlX2xpbnV4LWdudXgzMl9wcmVwZW5kKCkgeworCWNwICR7U1RBR0lOR19JTkNESVJ9L2dudS9zdHVicy14MzIuaCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMtNjQuaAorCWNwICR7U1RBR0lOR19JTkNESVJ9L2JpdHMvbG9uZy1kb3VibGUtMzIuaCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTY0LmgKK30KKworZGVmIGdudV9lZmlfYXJjaChkKToKKyAgICBpbXBvcnQgcmUKKyAgICB0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCisgICAgaWYgcmUubWF0Y2goImlbMzQ1Njc4OV04NiIsIHRhcmNoKToKKyAgICAgICAgcmV0dXJuICJpYTMyIgorICAgIHJldHVybiB0YXJjaAorCitFWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtAZ251X2VmaV9hcmNoKGQpfScgJ0NDPSR7Q0N9JyAnQVM9JHtBU30nICdMRD0ke0xEfScgJ0FSPSR7QVJ9JyBcCisgICAgICAgICAgICAgICAgJ1JBTkxJQj0ke1JBTkxJQn0nICdPQkpDT1BZPSR7T0JKQ09QWX0nICdQUkVGSVg9JHtwcmVmaXh9JyAnTElCRElSPSR7bGliZGlyfScgXAorICAgICAgICAgICAgICAgICIKKworIyBnbnUtZWZpJ3MgTWFrZWZpbGUgdHJlYXRzIHByZWZpeCBhcyB0b29sY2hhaW4gcHJlZml4LCBzbyBkb24ndAorIyBleHBvcnQgaXQuCitwcmVmaXhbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0iJHtEfSIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkcyIKKworIyA2NC1iaXQgYmluYXJpZXMgYXJlIGV4cGVjdGVkIGZvciBFRkkgd2hlbiB0YXJnZXRpbmcgWDMyCitJTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKK0lOU0FORV9TS0lQXyR7UE59LWRldl9hcHBlbmRfbGludXgtbXVzbHgzMiA9ICIgYXJjaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgSXQgZG9lc24ndCBzdXBwb3J0IHNzZSwgaXRzIG1ha2UuZGVmYXVsdHMgc2V0czoKKyMgQ0ZMQUdTICs9IC1tbm8tbW14IC1tbm8tc3NlCisjIFNvIGFsc28gcmVtb3ZlIC1tZnBtYXRoPXNzZSBmcm9tIFRVTkVfQ0NBUkdTCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorCitweXRob24gKCkgeworICAgIGNjYXJncyA9IGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpLnNwbGl0KCkKKyAgICBpZiAnLW14MzInIGluIGNjYXJnczoKKyAgICAgICAgIyB1c2UgeDg2XzY0IEVGSSBBQkkKKyAgICAgICAgY2NhcmdzLnJlbW92ZSgnLW14MzInKQorICAgICAgICBjY2FyZ3MuYXBwZW5kKCctbTY0JykKKyAgICAgICAgZC5zZXRWYXIoJ1RVTkVfQ0NBUkdTJywgJyAnLmpvaW4oY2NhcmdzKSkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEteDg2LTY0LVRyZWF0LVJfWDg2XzY0X1BMVDMyLWFzLVJfWDg2XzY0X1BDMzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLXg4Ni02NC1UcmVhdC1SX1g4Nl82NF9QTFQzMi1hcy1SX1g4Nl82NF9QQzMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZDU4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLXg4Ni02NC1UcmVhdC1SX1g4Nl82NF9QTFQzMi1hcy1SX1g4Nl82NF9QQzMyLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gODQyYzM5MDQ2OWUyYzJlMTBiNWFhMzY3MDAzMjRjZDNiZGUyNTg3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6NDc6MjggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0geDg2LTY0OiBUcmVhdCBSX1g4Nl82NF9QTFQzMiBhcyBSX1g4Nl82NF9QQzMyCisKK1N0YXJ0aW5nIGZyb20gYmludXRpbHMgY29tbWl0IGJkN2FiMTZiNDUzNzc4OGFkNTM1MjFjNDU0NjlhMWJkYWU4NGFkNGE6CisKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWJpbnV0aWxzLWdkYi5naXQ7YT1jb21taXQ7aD1iZDdhYjE2YjQ1Mzc3ODhhZDUzNTIxYzQ1NDY5YTFiZGFlODRhZDRhCisKK3g4Ni02NCBhc3NlbWJsZXIgZ2VuZXJhdGVzIFJfWDg2XzY0X1BMVDMyLCBpbnN0ZWFkIG9mIFJfWDg2XzY0X1BDMzIsIGZvcgorMzItYml0IFBDLXJlbGF0aXZlIGJyYW5jaGVzLiAgR3J1YjIgc2hvdWxkIHRyZWF0IFJfWDg2XzY0X1BMVDMyIGFzCitSX1g4Nl82NF9QQzMyLgorCitTaWduZWQtb2ZmLWJ5OiBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+CistLS0KKyBncnViLWNvcmUvZWZpZW11L2kzODYvbG9hZGNvcmU2NC5jIHwgMSArCisgZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMgICAgICAgICB8IDEgKworIHV0aWwvZ3J1Yi1ta2ltYWdleHguYyAgICAgICAgICAgICAgfCAxICsKKyB1dGlsL2dydWItbW9kdWxlLXZlcmlmaWVyLmMgICAgICAgIHwgMSArCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dydWItY29yZS9lZmllbXUvaTM4Ni9sb2FkY29yZTY0LmMgYi9ncnViLWNvcmUvZWZpZW11L2kzODYvbG9hZGNvcmU2NC5jCitpbmRleCBlNDlkMGI2ZmYuLjE4ZmFjZjQ3ZiAxMDA2NDQKKy0tLSBhL2dydWItY29yZS9lZmllbXUvaTM4Ni9sb2FkY29yZTY0LmMKKysrKyBiL2dydWItY29yZS9lZmllbXUvaTM4Ni9sb2FkY29yZTY0LmMKK0BAIC05OCw2ICs5OCw3IEBAIGdydWJfYXJjaF9lZmllbXVfcmVsb2NhdGVfc3ltYm9sczY0IChncnViX2VmaWVtdV9zZWdtZW50X3Qgc2VncywKKyAJCSAgICBicmVhazsKKyAKKyAJCSAgY2FzZSBSX1g4Nl82NF9QQzMyOgorKwkJICBjYXNlIFJfWDg2XzY0X1BMVDMyOgorIAkJICAgIGVyciA9IGdydWJfZWZpZW11X3dyaXRlX3ZhbHVlIChhZGRyLAorIAkJCQkJCSAgICphZGRyMzIgKyByZWwtPnJfYWRkZW5kCisgCQkJCQkJICAgKyBzeW0ub2ZmCitkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMgYi9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYworaW5kZXggNDQwNjkwNjczLi4zYTczZTZlNmMgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYworKysrIGIvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMKK0BAIC03MCw2ICs3MCw3IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAorIAkgIGJyZWFrOworIAorIAljYXNlIFJfWDg2XzY0X1BDMzI6CisrCWNhc2UgUl9YODZfNjRfUExUMzI6CisgCSAgeworIAkgICAgZ3J1Yl9pbnQ2NF90IHZhbHVlOworIAkgICAgdmFsdWUgPSAoKGdydWJfaW50MzJfdCkgKmFkZHIzMikgKyByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZSAtCitkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLW1raW1hZ2V4eC5jIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jCitpbmRleCBhMmJiMDU0MzkuLjM5ZDdlZmI5MSAxMDA2NDQKKy0tLSBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYworKysrIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jCitAQCAtODQxLDYgKzg0MSw3IEBAIFNVRkZJWCAocmVsb2NhdGVfYWRkcmVzc2VzKSAoRWxmX0VoZHIgKmUsIEVsZl9TaGRyICpzZWN0aW9ucywKKyAJCSAgYnJlYWs7CisgCisgCQljYXNlIFJfWDg2XzY0X1BDMzI6CisrCQljYXNlIFJfWDg2XzY0X1BMVDMyOgorIAkJICB7CisgCQkgICAgZ3J1Yl91aW50MzJfdCAqdDMyID0gKGdydWJfdWludDMyX3QgKikgdGFyZ2V0OworIAkJICAgICp0MzIgPSBncnViX2hvc3RfdG9fdGFyZ2V0NjQgKGdydWJfdGFyZ2V0X3RvX2hvc3QzMiAoKnQzMikKK2RpZmYgLS1naXQgYS91dGlsL2dydWItbW9kdWxlLXZlcmlmaWVyLmMgYi91dGlsL2dydWItbW9kdWxlLXZlcmlmaWVyLmMKK2luZGV4IDkxNzkyODVhNS4uYTc5MjcxZjY2IDEwMDY0NAorLS0tIGEvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllci5jCisrKysgYi91dGlsL2dydWItbW9kdWxlLXZlcmlmaWVyLmMKK0BAIC0xOSw2ICsxOSw3IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CisgICAgICAgLTEKKyAgICAgfSwgKGludFtdKXsKKyAgICAgICBSX1g4Nl82NF9QQzMyLAorKyAgICAgIFJfWDg2XzY0X1BMVDMyLAorICAgICAgIC0xCisgICAgIH0KKyAgIH0sCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgppbmRleCA3YmZjOGVlLi4xNGZjZTk3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKQEAgLTI1LDYgKzI1LDkgQEAKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JywgdGFyZ2V0KToKICAgICAgICAgZ3J1YnRhcmdldCA9ICdhcm02NCcKICAgICAgICAgZ3J1YmltYWdlID0gcHJlZml4ICsgImJvb3RhYTY0LmVmaSIKKyAgICBlbGlmIHJlLm1hdGNoKCdhcm0nLCB0YXJnZXQpOgorICAgICAgICBncnVidGFyZ2V0ID0gJ2FybScKKyAgICAgICAgZ3J1YmltYWdlID0gcHJlZml4ICsgImJvb3Rhcm0uZWZpIgogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImdydWItZWZpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJSB0YXJnZXQpCiAgICAgZC5zZXRWYXIoIkdSVUJfVEFSR0VUIiwgZ3J1YnRhcmdldCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwppbmRleCBhOGYzMzVlLi4zMjVlY2EyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCkBAIC0xNyw4ICsxNyw5IEBACiAgICAgICAgICAgIGZpbGU6Ly9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaCBcCi0JICAgZmlsZTovL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2djYzgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtNjQtVHJlYXQtUl9YODZfNjRfUExUMzItYXMtUl9YODZfNjRfUEMzMi5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMTExNmQxZjYwYzg0MGU2ZGJkNjdhYmJjOTlhY2I0NWQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjYwZWUxMzZmYmNlZTA4ODU4NTE2ZWQ0ZGUyYWQ4NzA2OGJmZTFiNmI4YjM3ODk2Y2UzNTI5ZmYwNTRhNzI2ZCIKQEAgLTMyLDcgKzMzLDcgQEAKICMgY29uZmlndXJlLmFjIGhhcyBjb2RlIHRvIHNldCB0aGlzIGF1dG9tYWdpY2FsbHkgZnJvbSB0aGUgdGFyZ2V0IHR1cGxlCiAjIGJ1dCB0aGUgT0UgZnJlZWZvcm0gb25lIChjb3JlMi1mb28tYmFyLWxpbnV4KSBkb24ndCB3b3JrIHdpdGggdGhhdC4KIAotR1JVQlBMQVRGT1JNX2FybSA9ICJ1Ym9vdCIKK0dSVUJQTEFURk9STV9hcm0gPSAiZWZpIgogR1JVQlBMQVRGT1JNX2FhcmNoNjQgPSAiZWZpIgogR1JVQlBMQVRGT1JNID8/PSAicGMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE4YjdkYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKLXRvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKLUhPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJ6bGliIGttb2QiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGU1MjI3ODM5OWI3YjM1ZmNmYzAzMWJjMDVkYTgwYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjM0NmVlYjkwY2NlMDkxMGMwNWI4NzdmZTQ5ZWFkYzc2MGZhMDg0YzA0NTVmZDMxM2UzOWQ0YjJjMmQ0YmIyMSIKLQotaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKLQotUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCi0KLSMgc2VlIGNvbmZpZ3VyZS5wYXRjaAotZG9fY29uZmlndXJlICgpIHsKLQkoCi0JICBjZCBsaWIgJiYgXAotCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKLQkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQotCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9Ci0JKQotfQotCi1leHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKLWV4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCi1leHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKLWV4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgotCi0jIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKLUhPU1RbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKLQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKLUZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgotRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKLVNVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCi1ERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzNDIxYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuMi5iYgpAQCAtMCwwICsxLDYwIEBACitTVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKK3RvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKK0hPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJ6bGliIGttb2QiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzc5NjM3OTZkMWJlNGY0NTFiODNlNmRhMjhiYTRmODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI0NTJlYzk4NmVkZWZkODhhZjBkMjIyZDIyZjYxMDJmODAzMGE4NjMzZmRmZTg0NmMzYWU0YmRlOWJiOTNmMyIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKKworUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCisKKyMgc2VlIGNvbmZpZ3VyZS5wYXRjaAorZG9fY29uZmlndXJlICgpIHsKKwkoCisJICBjZCBsaWIgJiYgXAorCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKKwkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQorCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9CisJKQorfQorCitleHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKK2V4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCitleHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKK2V4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgorCitBU05FRURFRCA9ICIiCisKKyMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAorSE9TVFt1bmV4cG9ydF0gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgorCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgorRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCitGSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgorU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKK0RFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmM2ZDc1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IGtlcm5lbCB1c2VybGFuZCB1dGlsaXRpZXMgZm9yIHRoZSBQQ01DSUEgc3Vic3lzdGVtIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL3BjbWNpYS8iCi1TRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1ERVBFTkRTID0gInVkZXYgc3lzZnN1dGlscyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJ1ZGV2IG1vZHVsZS1pbml0LXRvb2xzIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL3BjbWNpYS8ke0JQfS50YXIueHoiCi0KLVMgPSAiJHtXT1JLRElSfS9wY21jaWF1dGlscy0ke1BWfSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZXhwb3J0IEhPU1RDQyA9ICIke0JVSUxEX0NDfSIKLWV4cG9ydCBldGNkaXIgPSAiJHtzeXNjb25mZGlyfSIKLWV4cG9ydCBzYmluZGlyID0gIiR7YmFzZV9zYmluZGlyfSIKLWV4cG9ydCBwY21jaWFjb25mZGlyID0gIiR7c3lzY29uZmRpcn0vcGNtY2lhIgotZXhwb3J0IHVkZXZkaXIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgotZXhwb3J0IHVkZXZydWxlc2RpciA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCIKLWV4cG9ydCBVREVWID0gIjEiCi1MRCA9ICIke0NDfSIKLUNGTEFHUyA9KyAiLUkke1N9L3NyYyIKLUNGTEFHUyA9KyAiLURQQ01DSUFVVElMU19WRVJTSU9OPVxcIiR7UFZ9XFwiIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgJ1NUUklQPWVjaG8nICdMSUJfT0JKUz0tbGMgLWxzeXNmcycgJ0xFWD1mbGV4JyIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9wY21jaWEvY29uZmlnLm9wdHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHNfMDE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYwZjU4YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHNfMDE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBwY21jaWF1dGlscy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGVfcmFjZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbGV4X3N5c190eXBlcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ODU0MzFjM2NlZmI3NmZmZGFkOGNiOTg1MTM0ZTk5NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1N2MyN2JlOGYwNGVmNGQ1MzViY2ZhOTg4NTY3MzE2Y2M1NzY1OWZlNjkwNjgzMjc0ODZkYWI1Mzc5MWU2NTU4IgotCi1QUiA9ICJyMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMDAwMS1lZmlfbG9hZGVyLWF2b2lkLW1ha2UtcmFjZS1jb25kaXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzAwMDEtZWZpX2xvYWRlci1hdm9pZC1tYWtlLXJhY2UtY29uZGl0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTdlMjdjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMDAwMS1lZmlfbG9hZGVyLWF2b2lkLW1ha2UtcmFjZS1jb25kaXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDVjMmUyNGE5ZWQ1NGRmZWU3N2QxODQ0YTA4MGU5OThiNGFmZmU5MTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIZWlucmljaCBTY2h1Y2hhcmR0IDx4eXByb24uZ2xwa0BnbXguZGU+Ci1EYXRlOiBTYXQsIDIgSnVuIDIwMTggMTk6MDA6NDEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZWZpX2xvYWRlcjogYXZvaWQgbWFrZSByYWNlIGNvbmRpdGlvbgotCi1XaGVuIFUtQm9vdCBpcyBidWlsdCB3aXRoICdtYWtlIC1qJyB0aGVyZSBpcyBub3QgZ3VhcmFudGVlIHRoYXQgdGFyZ2V0cyBpbgotZGlyZWN0b3J5IGFyY2gvIGFyZSBidWlsdCBiZWZvcmUgdGFyZ2V0cyBpbiBkaXJlY3RvcnkgbGliLy4gVGhlIGN1cnJlbnQKLWJ1aWxkIGluc3RydWN0aW9uIGZvciBFRkkgYmluYXJpZXMgaW4gbGliLyByZWx5IG9uIGRlcGVuZGVuY2llcyBpbiBhcmNoLy4KLUlmICQoRUZJX0NSVDApIG9yICQoRUZJX1JFTE9DKSBpcyBub3QgeWV0IGJ1aWx0IGJlZm9yZSB0cnlpbmcgdG8gYnVpbGQKLSUuZWZpIGFuIGVycm9yCi0gICAgKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJyUuZWZpJwotb2NjdXJzLgotCi1XaXRoIHRoZSBwYXRjaCBzZXBhcmF0ZSBjb3BpZXMgb2YgJChFRklfQ1JUMCkgYW5kICQoRUZJX1JFTE9DKSBuYW1lZAotZWZpX2NydDAubyBhbmQgZWZpX3JlbG9jLm8gYXJlIGJ1aWx0IGluIGxpYi9lZmlfbG9hZGVyIGFuZAotbGliL2VmaV9zZWxmdGVzdC4KLQotU2lnbmVkLW9mZi1ieTogSGVpbnJpY2ggU2NodWNoYXJkdCA8eHlwcm9uLmdscGtAZ214LmRlPgotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEdyYWYgPGFncmFmQHN1c2UuZGU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgZnJvbSAyMDE4LjA3Ci0KLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLS0tLQotIHNjcmlwdHMvTWFrZWZpbGUubGliIHwgMTAgKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zY3JpcHRzL01ha2VmaWxlLmxpYiBiL3NjcmlwdHMvTWFrZWZpbGUubGliCi1pbmRleCA4ZjE5YjJkYjU2Li5mMmYzOThjOTM1IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9NYWtlZmlsZS5saWIKLSsrKyBiL3NjcmlwdHMvTWFrZWZpbGUubGliCi1AQCAtNDA0LDggKzQwNCwxNCBAQCBjbWRfZWZpX2xkID0gJChMRCkgLW5vc3RkbGliIC16bm9jb21icmVsb2MgLVQgJChFRklfTERTX1BBVEgpIC1zaGFyZWQgXAotIAotIEVGSV9MRFNfUEFUSCA9ICQoc3JjdHJlZSkvYXJjaC8kKEFSQ0gpL2xpYi8kKEVGSV9MRFMpCi0gCi0tJChvYmopLyVfZWZpLnNvOiAkKG9iaikvJS5vIGFyY2gvJChBUkNIKS9saWIvJChFRklfQ1JUMCkgXAotLQkJYXJjaC8kKEFSQ0gpL2xpYi8kKEVGSV9SRUxPQykKLSskKG9iaikvZWZpX2NydDAubzogJChzcmN0cmVlKS9hcmNoLyQoQVJDSCkvbGliLyQoRUZJX0NSVDA6Lm89LlMpCi0rCSQoY2FsbCBpZl9jaGFuZ2VkX2RlcCxhc19vX1MpCi0rCi0rJChvYmopL2VmaV9yZWxvYy5vOiAkKHNyY3RyZWUpL2FyY2gvJChBUkNIKS9saWIvJChFRklfUkVMT0M6Lm89LmMpICQocmVjb3JkbWNvdW50X3NvdXJjZSkgRk9SQ0UKLSsJJChjYWxsIGNtZCxmb3JjZV9jaGVja3NyYykKLSsJJChjYWxsIGlmX2NoYW5nZWRfcnVsZSxjY19vX2MpCi0rCi0rJChvYmopLyVfZWZpLnNvOiAkKG9iaikvJS5vICQob2JqKS9lZmlfY3J0MC5vICQob2JqKS9lZmlfcmVsb2MubwotIAkkKGNhbGwgY21kLGVmaV9sZCkKLSAKLSAjIEFDUEkKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvQ1ZFLTIwMTgtMTAwMDIwNS0xLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9DVkUtMjAxOC0xMDAwMjA1LTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkM2MzZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvQ1ZFLTIwMTgtMTAwMDIwNS0xLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gNzM0NmMxZTE5MmQ2M2NkMzVmOTljN2U4NDVlNTNjNWQ0ZDBiZGMyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRlZGR5IFJlZWQgPHRlZGR5LnJlZWRAZ21haWwuY29tPgorRGF0ZTogU2F0LCA5IEp1biAyMDE4IDExOjQ1OjIwIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHZib290OiBEbyBub3QgdXNlIGhhc2hlZC1zdHJpbmdzIG9mZnNldAorCitUaGUgaGFzaGVkLXN0cmluZ3Mgc2lnbmF0dXJlIHByb3BlcnR5IGluY2x1ZGVzIHR3byB1aW50MzJfdCB2YWx1ZXMuCitUaGUgZmlyc3QgaXMgdW5uZWVkZWQgYXMgdGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgc3RhcnQgb2Zmc2V0IGludG8gdGhlCitzdHJpbmdzIHJlZ2lvbi4gVGhlIHNlY29uZCwgdGhlIHNpemUsIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBhZGRlZAorc2lnbmF0dXJlIG5vZGUgYXBwZW5kcyB0byB0aGlzIHJlZ2lvbi4KKworU2VlIHRvb2xzL2ltYWdlLWhvc3QuYywgd2hlcmUgYSBzdGF0aWMgMCB2YWx1ZSBpcyB1c2VkIGZvciB0aGUgb2Zmc2V0LgorCitTaWduZWQtb2ZmLWJ5OiBUZWRkeSBSZWVkIDx0ZWRkeS5yZWVkQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBTaW1vbiBHbGFzcyA8c2pnQGNocm9taXVtLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwOi8vZ2l0LmRlbnguZGUvP3A9dS1ib290LmdpdDthPWNvbW1pdDsKKyAgICAgICAgICAgICAgICAgaD03MzQ2YzFlMTkyZDYzY2QzNWY5OWM3ZTg0NWU1M2M1ZDRkMGJkYzI0XQorCitDVkU6IENWRS0yMDE4LTEwMDAyMDUKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbW1vbi9pbWFnZS1zaWcuYyB8IDcgKysrKystLQorIHRvb2xzL2ltYWdlLWhvc3QuYyB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL2ltYWdlLXNpZy5jIGIvY29tbW9uL2ltYWdlLXNpZy5jCitpbmRleCA4ZDJmZDEwLi41YTI2OWQzIDEwMDY0NAorLS0tIGEvY29tbW9uL2ltYWdlLXNpZy5jCisrKysgYi9jb21tb24vaW1hZ2Utc2lnLmMKK0BAIC0zNzcsOCArMzc3LDExIEBAIGludCBmaXRfY29uZmlnX2NoZWNrX3NpZyhjb25zdCB2b2lkICpmaXQsIGludCBub2Zmc2V0LCBpbnQgcmVxdWlyZWRfa2V5bm9kZSwKKyAJLyogQWRkIHRoZSBzdHJpbmdzICovCisgCXN0cmluZ3MgPSBmZHRfZ2V0cHJvcChmaXQsIG5vZmZzZXQsICJoYXNoZWQtc3RyaW5ncyIsIE5VTEwpOworIAlpZiAoc3RyaW5ncykgeworLQkJZmR0X3JlZ2lvbnNbY291bnRdLm9mZnNldCA9IGZkdF9vZmZfZHRfc3RyaW5ncyhmaXQpICsKKy0JCQkJZmR0MzJfdG9fY3B1KHN0cmluZ3NbMF0pOworKwkJLyoKKysJCSAqIFRoZSBzdHJpbmdzIHJlZ2lvbiBvZmZzZXQgbXVzdCBiZSBhIHN0YXRpYyAweDAuCisrCQkgKiBUaGlzIGlzIHNldCBpbiB0b29sL2ltYWdlLWhvc3QuYworKwkJICovCisrCQlmZHRfcmVnaW9uc1tjb3VudF0ub2Zmc2V0ID0gZmR0X29mZl9kdF9zdHJpbmdzKGZpdCk7CisgCQlmZHRfcmVnaW9uc1tjb3VudF0uc2l6ZSA9IGZkdDMyX3RvX2NwdShzdHJpbmdzWzFdKTsKKyAJCWNvdW50Kys7CisgCX0KK2RpZmYgLS1naXQgYS90b29scy9pbWFnZS1ob3N0LmMgYi90b29scy9pbWFnZS1ob3N0LmMKK2luZGV4IDhlNDM2NzEuLmJlMmQ1OWIgMTAwNjQ0CistLS0gYS90b29scy9pbWFnZS1ob3N0LmMKKysrKyBiL3Rvb2xzL2ltYWdlLWhvc3QuYworQEAgLTEzNSw2ICsxMzUsNyBAQCBzdGF0aWMgaW50IGZpdF9pbWFnZV93cml0ZV9zaWcodm9pZCAqZml0LCBpbnQgbm9mZnNldCwgdWludDhfdCAqdmFsdWUsCisgCisgCQlyZXQgPSBmZHRfc2V0cHJvcChmaXQsIG5vZmZzZXQsICJoYXNoZWQtbm9kZXMiLAorIAkJCQkgICByZWdpb25fcHJvcCwgcmVnaW9uX3Byb3BsZW4pOworKwkJLyogVGhpcyBpcyBhIGxlZ2FjeSBvZmZzZXQsIGl0IGlzIHVudXNlZCwgYW5kIG11c3QgcmVtYWluIDAuICovCisgCQlzdHJkYXRhWzBdID0gMDsKKyAJCXN0cmRhdGFbMV0gPSBjcHVfdG9fZmR0MzIoc3RyaW5nX3NpemUpOworIAkJaWYgKCFyZXQpIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9DVkUtMjAxOC0xMDAwMjA1LTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL0NWRS0yMDE4LTEwMDAyMDUtMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjc5YWYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9DVkUtMjAxOC0xMDAwMjA1LTIucGF0Y2gKQEAgLTAsMCArMSwxNDMgQEAKK0Zyb20gNzIyMzlmYzg1ZjNlZGEwNzg1NDc5NTY2MDhjMDYzYWI5NjVlOTBlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRlZGR5IFJlZWQgPHRlZGR5LnJlZWRAZ21haWwuY29tPgorRGF0ZTogU2F0LCA5IEp1biAyMDE4IDExOjM4OjA1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHZib290OiBBZGQgRklUX1NJR05BVFVSRV9NQVhfU0laRSBwcm90ZWN0aW9uCisKK1RoaXMgYWRkcyBhIG5ldyBjb25maWcgdmFsdWUgRklUX1NJR05BVFVSRV9NQVhfU0laRSwgd2hpY2ggY29udHJvbHMgdGhlCittYXggc2l6ZSBvZiBhIEZJVCBoZWFkZXIncyB0b3RhbHNpemUgZmllbGQuIFRoZSBmaWVsZCBpcyBjaGVja2VkIGJlZm9yZQorc2lnbmF0dXJlIGNoZWNrcyBhcmUgYXBwbGllZCB0byBwcm90ZWN0IGZyb20gcmVhZGluZyBwYXN0IHRoZSBpbnRlbmRlZAorRklUIHJlZ2lvbnMuCisKK1RoaXMgZmllbGQgaXMgbm90IHBhcnQgb2YgdGhlIHZib290IHNpZ25hdHVyZSBzbyBpdCBzaG91bGQgYmUgc2FuaXR5CitjaGVja2VkLiBJZiB0aGUgZmllbGQgaXMgY29ycnVwdGVkIHRoZW4gdGhlIHN0cnVjdHVyZSBvciBzdHJpbmcgcmVnaW9uCityZWFkcyBtYXkgaGF2ZSB1bmludGVuZGVkIGJlaGF2aW9yLCBzdWNoIGFzIHJlYWRpbmcgZnJvbSBkZXZpY2UgbWVtb3J5LgorQSBkZWZhdWx0IHZhbHVlIG9mIDI1Nk1CIGlzIHNldCBhbmQgaW50ZW5kZWQgdG8gc3VwcG9ydCBtb3N0IG1heCBzdG9yYWdlCitzaXplcy4KKworU3VnZ2VzdGVkLWJ5OiBTaW1vbiBHbGFzcyA8c2pnQGNocm9taXVtLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFRlZGR5IFJlZWQgPHRlZGR5LnJlZWRAZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IFNpbW9uIEdsYXNzIDxzamdAY2hyb21pdW0ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHA6Ly9naXQuZGVueC5kZS8/cD11LWJvb3QuZ2l0O2E9Y29tbWl0OworICAgICAgICAgICAgICAgICBoPTcyMjM5ZmM4NWYzZWRhMDc4NTQ3OTU2NjA4YzA2M2FiOTY1ZTkwZTldCisKK0NWRTogQ1ZFLTIwMTgtMTAwMDIwNQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKworIGNvbW1vbi9pbWFnZS1zaWcuYyAgICAgICAgICB8ICA1ICsrKysrCisgdGVzdC9weS90ZXN0cy90ZXN0X3Zib290LnB5IHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgdG9vbHMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgIDEgKworIDQgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvS2NvbmZpZyBiL0tjb25maWcKK2luZGV4IDVhODJjOTUuLmM4Yjg2Y2QgMTAwNjQ0CistLS0gYS9LY29uZmlnCisrKysgYi9LY29uZmlnCitAQCAtMjY3LDYgKzI2NywxNiBAQCBjb25maWcgRklUX1NJR05BVFVSRQorIAkgIGZvcm1hdCBzdXBwb3J0IGluIHRoaXMgY2FzZSwgZW5hYmxlIGl0IHVzaW5nCisgCSAgQ09ORklHX0lNQUdFX0ZPUk1BVF9MRUdBQ1kuCisgCisrY29uZmlnIEZJVF9TSUdOQVRVUkVfTUFYX1NJWkUKKysJaGV4ICJNYXggc2l6ZSBvZiBzaWduZWQgRklUIHN0cnVjdHVyZXMiCisrCWRlcGVuZHMgb24gRklUX1NJR05BVFVSRQorKwlkZWZhdWx0IDB4MTAwMDAwMDAKKysJaGVscAorKwkgIFRoaXMgb3B0aW9uIHNldHMgYSBtYXggc2l6ZSBpbiBieXRlcyBmb3IgdmVyaWZpZWQgRklUIHVJbWFnZXMuCisrCSAgQSBzYW5lIHZhbHVlIG9mIDI1Nk1CIHByb3RlY3RzIGNvcnJ1cHRlZCBEVEIgc3RydWN0dXJlcyBmcm9tIG92ZXJsYXBwaW5nCisrCSAgZGV2aWNlIG1lbW9yeS4gQXNzdXJlIHRoaXMgc2l6ZSBkb2VzIG5vdCBleHRlbmQgcGFzdCBleHBlY3RlZCBzdG9yYWdlCisrCSAgc3BhY2UuCisrCisgY29uZmlnIEZJVF9WRVJCT1NFCisgCWJvb2wgIlNob3cgdmVyYm9zZSBtZXNzYWdlcyB3aGVuIEZJVCBpbWFnZXMgZmFpbCIKKyAJaGVscAorZGlmZiAtLWdpdCBhL2NvbW1vbi9pbWFnZS1zaWcuYyBiL2NvbW1vbi9pbWFnZS1zaWcuYworaW5kZXggZjY1ZDg4My4uOGQyZmQxMCAxMDA2NDQKKy0tLSBhL2NvbW1vbi9pbWFnZS1zaWcuYworKysrIGIvY29tbW9uL2ltYWdlLXNpZy5jCitAQCAtMTU2LDYgKzE1NiwxMSBAQCBzdGF0aWMgaW50IGZpdF9pbWFnZV9zZXR1cF92ZXJpZnkoc3RydWN0IGltYWdlX3NpZ25faW5mbyAqaW5mbywKKyB7CisgCWNoYXIgKmFsZ29fbmFtZTsKKyAKKysJaWYgKGZkdF90b3RhbHNpemUoZml0KSA+IENPTkZJR19GSVRfU0lHTkFUVVJFX01BWF9TSVpFKSB7CisrCQkqZXJyX21zZ3AgPSAiVG90YWwgc2l6ZSB0b28gbGFyZ2UiOworKwkJcmV0dXJuIDE7CisrCX0KKysKKyAJaWYgKGZpdF9pbWFnZV9oYXNoX2dldF9hbGdvKGZpdCwgbm9mZnNldCwgJmFsZ29fbmFtZSkpIHsKKyAJCSplcnJfbXNncCA9ICJDYW4ndCBnZXQgaGFzaCBhbGdvIHByb3BlcnR5IjsKKyAJCXJldHVybiAtMTsKK2RpZmYgLS1naXQgYS90ZXN0L3B5L3Rlc3RzL3Rlc3RfdmJvb3QucHkgYi90ZXN0L3B5L3Rlc3RzL3Rlc3RfdmJvb3QucHkKK2luZGV4IGVlOTM5ZjIuLjNkMjVlYzMgMTAwNjQ0CistLS0gYS90ZXN0L3B5L3Rlc3RzL3Rlc3RfdmJvb3QucHkKKysrKyBiL3Rlc3QvcHkvdGVzdHMvdGVzdF92Ym9vdC5weQorQEAgLTI2LDYgKzI2LDcgQEAgVGVzdHMgcnVuIHdpdGggYm90aCBTSEExIGFuZCBTSEEyNTYgaGFzaGluZy4KKyAKKyBpbXBvcnQgcHl0ZXN0CisgaW1wb3J0IHN5cworK2ltcG9ydCBzdHJ1Y3QKKyBpbXBvcnQgdV9ib290X3V0aWxzIGFzIHV0aWwKKyAKKyBAcHl0ZXN0Lm1hcmsuYm9hcmRzcGVjKCdzYW5kYm94JykKK0BAIC0xMDUsNiArMTA2LDI2IEBAIGRlZiB0ZXN0X3Zib290KHVfYm9vdF9jb25zb2xlKToKKyAgICAgICAgIHV0aWwucnVuX2FuZF9sb2coY29ucywgW21raW1hZ2UsICctRicsICctaycsIHRtcGRpciwgJy1LJywgZHRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1yJywgZml0XSkKKyAKKysgICAgZGVmIHJlcGxhY2VfZml0X3RvdGFsc2l6ZShzaXplKToKKysgICAgICAgICIiIlJlcGxhY2UgRklUIGhlYWRlcidzIHRvdGFsc2l6ZSB3aXRoIHNvbWV0aGluZyBncmVhdGVyLgorKworKyAgICAgICAgVGhlIHRvdGFsc2l6ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBGSVRfU0lHTkFUVVJFX01BWF9TSVpFLgorKyAgICAgICAgSWYgdGhlIHNpemUgaXMgZ3JlYXRlciwgdGhlIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gc2hvdWxkIHJldHVybiBmYWxzZS4KKysKKysgICAgICAgIEFyZ3M6CisrICAgICAgICAgICAgc2l6ZTogVGhlIG5ldyB0b3RhbHNpemUgb2YgdGhlIGhlYWRlcgorKworKyAgICAgICAgUmV0dXJuczoKKysgICAgICAgICAgICBwcmV2X3NpemU6IFRoZSBwcmV2aW91cyB0b3RhbHNpemUgcmVhZCBmcm9tIHRoZSBoZWFkZXIKKysgICAgICAgICIiIgorKyAgICAgICAgdG90YWxfc2l6ZSA9IDAKKysgICAgICAgIHdpdGggb3BlbihmaXQsICdyK2InKSBhcyBoYW5kbGU6CisrICAgICAgICAgICAgaGFuZGxlLnNlZWsoNCkKKysgICAgICAgICAgICB0b3RhbF9zaXplID0gaGFuZGxlLnJlYWQoNCkKKysgICAgICAgICAgICBoYW5kbGUuc2Vlayg0KQorKyAgICAgICAgICAgIGhhbmRsZS53cml0ZShzdHJ1Y3QucGFjaygiPkkiLCBzaXplKSkKKysgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCI+SSIsIHRvdGFsX3NpemUpWzBdCisrCisgICAgIGRlZiB0ZXN0X3dpdGhfYWxnbyhzaGFfYWxnbyk6CisgICAgICAgICAiIiJUZXN0IHZlcmlmaWVkIGJvb3Qgd2l0aCB0aGUgZ2l2ZW4gaGFzaCBhbGdvcml0aG0uCisgCitAQCAtMTQ2LDYgKzE2NywxOCBAQCBkZWYgdGVzdF92Ym9vdCh1X2Jvb3RfY29uc29sZSk6CisgICAgICAgICB1dGlsLnJ1bl9hbmRfbG9nKGNvbnMsIFtmaXRfY2hlY2tfc2lnbiwgJy1mJywgZml0LCAnLWsnLCB0bXBkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWsnLCBkdGJdKQorIAorKyAgICAgICAgIyBSZXBsYWNlIGhlYWRlciBieXRlcworKyAgICAgICAgYmNmZyA9IHVfYm9vdF9jb25zb2xlLmNvbmZpZy5idWlsZGNvbmZpZworKyAgICAgICAgbWF4X3NpemUgPSBpbnQoYmNmZy5nZXQoJ2NvbmZpZ19maXRfc2lnbmF0dXJlX21heF9zaXplJywgMHgxMDAwMDAwMCksIDApCisrICAgICAgICBleGlzdGluZ19zaXplID0gcmVwbGFjZV9maXRfdG90YWxzaXplKG1heF9zaXplICsgMSkKKysgICAgICAgIHJ1bl9ib290bShzaGFfYWxnbywgJ1NpZ25lZCBjb25maWcgd2l0aCBiYWQgaGFzaCcsICdCYWQgRGF0YSBIYXNoJywgRmFsc2UpCisrICAgICAgICBjb25zLmxvZy5hY3Rpb24oJyVzOiBDaGVjayBvdmVyZmxvd2VkIEZJVCBoZWFkZXIgdG90YWxzaXplJyAlIHNoYV9hbGdvKQorKworKyAgICAgICAgIyBSZXBsYWNlIHdpdGggZXhpc3RpbmcgaGVhZGVyIGJ5dGVzCisrICAgICAgICByZXBsYWNlX2ZpdF90b3RhbHNpemUoZXhpc3Rpbmdfc2l6ZSkKKysgICAgICAgIHJ1bl9ib290bShzaGFfYWxnbywgJ3NpZ25lZCBjb25maWcnLCAnZGV2KycsIFRydWUpCisrICAgICAgICBjb25zLmxvZy5hY3Rpb24oJyVzOiBDaGVjayBkZWZhdWx0IEZJVCBoZWFkZXIgdG90YWxzaXplJyAlIHNoYV9hbGdvKQorKworICAgICAgICAgIyBJbmNyZW1lbnQgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHNpZ25hdHVyZSwgd2hpY2ggc2hvdWxkIGNhdXNlIGZhaWx1cmUKKyAgICAgICAgIHNpZyA9IHV0aWwucnVuX2FuZF9sb2coY29ucywgJ2ZkdGdldCAtdCBieCAlcyAlcyB2YWx1ZScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZml0LCBzaWdfbm9kZSkpCitkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUgYi90b29scy9NYWtlZmlsZQoraW5kZXggNWRkMzNlZC4uMGMzMzQxZSAxMDA2NDQKKy0tLSBhL3Rvb2xzL01ha2VmaWxlCisrKysgYi90b29scy9NYWtlZmlsZQorQEAgLTEzMyw2ICsxMzMsNyBAQCBpZmRlZiBDT05GSUdfRklUX1NJR05BVFVSRQorICMgVGhpcyBhZmZlY3RzIGluY2x1ZGUvaW1hZ2UuaCwgYnV0IGluY2x1ZGluZyB0aGUgYm9hcmQgY29uZmlnIGZpbGUKKyAjIGlzIHRyaWNreSwgc28gbWFudWFsbHkgZGVmaW5lIHRoaXMgb3B0aW9ucyBoZXJlLgorIEhPU1RfRVhUUkFDRkxBR1MJKz0gLURDT05GSUdfRklUX1NJR05BVFVSRQorK0hPU1RfRVhUUkFDRkxBR1MJKz0gLURDT05GSUdfRklUX1NJR05BVFVSRV9NQVhfU0laRT0kKENPTkZJR19GSVRfU0lHTkFUVVJFX01BWF9TSVpFKQorIGVuZGlmCisgCisgaWZkZWYgQ09ORklHX1NZU19VX0JPT1RfT0ZGUworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNhYTE3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotRW5hYmxlZCBkaGNwIGNsaWVudCBmdW5jdGlvbmFsaXR5IGZvciBZb2N0byByZWZlcmVuY2UKLWhhcmR3YXJlIE1QQzgzMTVFLVJEQi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogZ2l0L2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKLSsrKyBnaXQvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKLUBAIC0xMiw2ICsxMiw3IEBAIENPTkZJR19DTURfUENJPXkKLSBDT05GSUdfQ01EX1NBVEE9eQotIENPTkZJR19DTURfVVNCPXkKLSAjIENPTkZJR19DTURfU0VURVhQUiBpcyBub3Qgc2V0Ci0rQ09ORklHX0NNRF9ESENQPXkKLSBDT05GSUdfQ01EX01JST15Ci0gQ09ORklHX0NNRF9QSU5HPXkKLSBDT05GSUdfQ01EX0RBVEU9eQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI4MmI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9XZWJIb21lIgotU0VDVElPTiA9ICJib290bG9hZGVycyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9SRUFETUU7bWQ1PWEyYzY3OGNmZDRhNGQ5NzEzNTU4NWNhZDkwODU0MWM2IgotUEUgPSAiMSIKLQotIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQotIyByZXBvIGR1cmluZyBwYXJzZQotU1JDUkVWID0gImYzZGQ4N2UwYjk4OTk5YTc4ZTUwMGU4YzZkMmIwNjNlYmFkZjUzNWEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCBcCi0gICAgZmlsZTovL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1lZmlfbG9hZGVyLWF2b2lkLW1ha2UtcmFjZS1jb25kaXRpb24ucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDcuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjQ0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxOC4wNy5pbmMKQEAgLTAsMCArMSwxOCBAQAorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kZW54LmRlL3dpa2kvVS1Cb290L1dlYkhvbWUiCitTRUNUSU9OID0gImJvb3Rsb2FkZXJzIgorREVQRU5EUyArPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2VzL1JFQURNRTttZDU9MzA1MDNmZDMyMTQzMmZjNzEzMjM4ZjU4MjE5M2I3OGUiCitQRSA9ICIxIgorCisjIFdlIHVzZSB0aGUgcmV2aXNpb24gaW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGZldGNoIGl0IGZyb20gdGhlCisjIHJlcG8gZHVyaW5nIHBhcnNlCitTUkNSRVYgPSAiOGM1ZDRmZDBlYzIyMjcwMTU5OGEyN2IyNmFiNzI2NWQ0Y2VlNDVhMyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZGVueC5kZS91LWJvb3QuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMDAyMDUtMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwMjA1LTIucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOC4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyODg3YTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOC4wMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLXJlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKLQotU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBmd19wcmludGVudi9zZXRlbnYgdXRpbGl0aWVzIgotREVQRU5EUyA9ICJtdGQtdXRpbHMiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdIT1NUQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBWPTEnCi0KLWluaGVyaXQgdWJvb3QtY29uZmlnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJHtVQk9PVF9NQUNISU5FfQotCW9lX3J1bm1ha2UgZW52dG9vbHMKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3NldGVudgotCWluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Vudi9md19lbnYuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3N9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19wcmludGVudgotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfc2V0ZW52Ci19Ci0KLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLUJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE4LjA3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOC4wNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmMxM2U3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOC4wNy5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyIKK0RFUEVORFMgKz0gIm10ZC11dGlscyIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYWxyZWFkeS1zdHJpcHBlZCIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ0hPU1RDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIFY9MScKKworaW5oZXJpdCB1Ym9vdC1jb25maWcKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAke1VCT09UX01BQ0hJTkV9CisJb2VfcnVubWFrZSBlbnZ0b29scworfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19wcmludGVudgorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfc2V0ZW52CisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvZW52L2Z3X2Vudi5jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZndfZW52LmNvbmZpZworfQorCitkb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc30KKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3ByaW50ZW52CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19zZXRlbnYKK30KKworU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgJHtiaW5kaXJfY3Jvc3N9IgorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorQkJDTEFTU0VYVEVORCA9ICJjcm9zcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMwMDhiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTguMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKLURFUEVORFMgPSAib3BlbnNzbCIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZwotCi0JIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAotCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKLQkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgotCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKLQotCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCi0JbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJkdGMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGJmZjFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE4LjA3LmJiCkBAIC0wLDAgKzEsMjkgQEAKK3JlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBpbWFnZSBjcmVhdGlvbiB0b29sIgorREVQRU5EUyArPSAib3BlbnNzbCIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZworCisJIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAorCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKKwkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgorCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKKworCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCisJbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJkdGMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYwppbmRleCA5NWMyZjRkLi40OGZiYzU3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCkBAIC0yMzEsNyArMjMxLDcgQEAKICAgICAgICAgcm0gLWYgJHtVQk9PVF9CSU5BUll9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7VUJPT1RfQklOQVJZfQotICAgZmkKKyAgICBmaQogCiAgICAgaWYgWyAtbiAiJHtVQk9PVF9FTEZ9IiBdCiAgICAgdGhlbgpAQCAtMjYzLDMyICsyNjMsMzIgQEAKIAogICAgICBpZiBbIC1uICIke1NQTF9CSU5BUll9IiBdCiAgICAgIHRoZW4KLSAgICAgICAgIGlmIFsgLW4gIiR7VUJPT1RfQ09ORklHfSIgXQotICAgICAgICAgdGhlbgotICAgICAgICAgICAgIGZvciBjb25maWcgaW4gJHtVQk9PVF9NQUNISU5FfTsgZG8KLSAgICAgICAgICAgICAgICAgaT0kKGV4cHIgJGkgKyAxKTsKLSAgICAgICAgICAgICAgICAgZm9yIHR5cGUgaW4gJHtVQk9PVF9DT05GSUd9OyBkbwotICAgICAgICAgICAgICAgICAgICAgaj0kKGV4cHIgJGogKyAxKTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KLSAgICAgICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS8ke1NQTF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfQotICAgICAgICAgICAgICAgICAgICAgICAgIHJtIC1mICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30tJHt0eXBlfQotICAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0tJHt0eXBlfQotICAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0KLSAgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX1NZTUxJTkt9LSR7dHlwZX0KLSAgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX1NZTUxJTkt9Ci0gICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgICBkb25lCi0gICAgICAgICAgICAgICAgIHVuc2V0ICBqCi0gICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgIHVuc2V0ICBpCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke1NQTF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1NQTF9JTUFHRX0KLSAgICAgICAgICAgICBybSAtZiAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0gJHtERVBMT1lESVJ9LyR7U1BMX1NZTUxJTkt9Ci0gICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfSAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0KLSAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfQotICAgICAgICAgZmkKLSAgICAgZmkKKyAgICAgICAgaWYgWyAtbiAiJHtVQk9PVF9DT05GSUd9IiBdCisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIGZvciBjb25maWcgaW4gJHtVQk9PVF9NQUNISU5FfTsgZG8KKyAgICAgICAgICAgICAgICBpPSQoZXhwciAkaSArIDEpOworICAgICAgICAgICAgICAgIGZvciB0eXBlIGluICR7VUJPT1RfQ09ORklHfTsgZG8KKyAgICAgICAgICAgICAgICAgICAgaj0kKGV4cHIgJGogKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgWyAkaiAtZXEgJGkgXQorICAgICAgICAgICAgICAgICAgICB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS8ke1NQTF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfQorICAgICAgICAgICAgICAgICAgICAgICAgcm0gLWYgJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfS0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9LSR7dHlwZX0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30tJHt0eXBlfQorICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICB1bnNldCAgagorICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgdW5zZXQgIGkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke1NQTF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1NQTF9JTUFHRX0KKyAgICAgICAgICAgIHJtIC1mICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30KKyAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9CisgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfQorICAgICAgICBmaQorICAgIGZpCiAKIAogICAgIGlmIFsgLW4gIiR7VUJPT1RfRU5WfSIgXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxOC4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTguMDcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTguMDEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTguMDcuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy91c2ItZGV2aWNlcy1hdm9pZC1kZXBlbmRlbmN5LW9uLWJhc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvdXNiLWRldmljZXMtYXZvaWQtZGVwZW5kZW5jeS1vbi1iYXNoLnBhdGNoCmluZGV4IGE2YjI0MWYuLjdlZGZmMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy91c2ItZGV2aWNlcy1hdm9pZC1kZXBlbmRlbmN5LW9uLWJhc2gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL3VzYi1kZXZpY2VzLWF2b2lkLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaApAQCAtMSwzMCArMSwzMCBAQAotRnJvbSAzMzNkNWZiYmMwMzQ4MWYxYWEyMjJiZDY4YzI2MDlkYjE2OGFlM2UwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDI2IEp1bCAyMDEyIDEwOjM3OjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzYi1kZXZpY2VzOiBhdm9pZCBkZXBlbmRlbmN5IG9uIGJhc2gKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgKGh0dHBzOi8vZ2l0aHViLmNvbS9ncmVna2gvdXNidXRpbHMvY29tbWl0LzUwOGQxYWNmNDJlMWJmZDQ3MGM2YmYxYTE4ODU3NGM2OWMyMGFlZWQpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCi1CeSB2aXJ0dWUgb2YgaGF2aW5nICMhL2Jpbi9iYXNoIHRoaXMgc2NyaXB0IGRlY2xhcmVkIHRoYXQgaXQgcmVxdWlyZXMKLWJhc2gsIGhvd2V2ZXIgbWFudWFsIGV4YW1pbmF0aW9uLCBjaGVja2Jhc2hpc21zIGFuZCB0ZXN0cyB3aXRoIGRhc2gKLWFuZCBidXN5Ym94IHNob3cgdGhhdCBpdCBkb2Vzbid0IGNvbnRhaW4gYW55IGJhc2hpc21zLCBzbyBjaGFuZ2UgdGhlCi1oZWFkZXIgdG8gYXZvaWQgdGhlIGRlcGVuZGVuY3kuCitGcm9tIDFjOTE2MmE1YjMwNTUwYWVjOGZhMTYzOTA2MDY3YmMxNzkyOTFiNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogRnJpLCAyNyBKdWwgMjAxOCAxNToyODozNCArMDEwMAorU3ViamVjdDogW1BBVENIXSB1c2ItZGV2aWNlczogdXNlIC9iaW4vc2gKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitUaGlzIHNjcmlwdCBkb2Vzbid0IHVzZSBhbnkgYmFzaGlzbXMsIHNvIGNoYW5nZSB0aGUgaGFzaGJhbmcgdG8gL2Jpbi9zaC4KIAotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitGaXhlcyAjNzMuCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAtLS0KLSB1c2ItZGV2aWNlcyB8ICAgIDIgKy0KKyB1c2ItZGV2aWNlcyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3VzYi1kZXZpY2VzIGIvdXNiLWRldmljZXMKLWluZGV4IGIyMDUyZTIuLjE0YTUzNTggMTAwNzU1CitpbmRleCBhZmI0MjE3Li44OWQxYjdkIDEwMDc1NQogLS0tIGEvdXNiLWRldmljZXMKICsrKyBiL3VzYi1kZXZpY2VzCiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vYmFzaAogKyMhL2Jpbi9zaAotIAotICMgQ29weXJpZ2h0OiAyMDA5IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+Ci0gIyAgICAgICAgICAgIDIwMDkgUmFuZHkgRHVubGFwIDxyZHVubGFwQHhlbm90aW1lLm5ldD4KKyAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKworICMKKyAjIENvcHlyaWdodCAoYykgMjAwOSBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPgogLS0gCi0xLjcuOS41CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZmMwZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiSG9zdCBzaWRlIFVTQiBjb25zb2xlIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIkNvbnRhaW5zIHRoZSBsc3VzYiB1dGlsaXR5IGZvciBpbnNwZWN0aW5nIHRoZSBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUgVVNCIGJ1cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmciCi1TRUNUSU9OID0gImJhc2UiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLURFUEVORFMgPSAibGlidXNiIHpsaWIgdmlydHVhbC9saWJpY29udiB1ZGV2IgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvdXNiL3VzYnV0aWxzL3VzYnV0aWxzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly91c2ItZGV2aWNlcy1hdm9pZC1kZXBlbmRlbmN5LW9uLWJhc2gucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImI1ZGJjNDk4YjJlYjUwNThmN2E1N2ZjNjUzMmQwYWFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3MzU0MzI5M2ExN2M3ODAzOTk0ZWFjOTdhNDllNThiMzc3ZTA4ZTYyOTliYTExYWFkMDk3OTRiOTEzNDBlOGIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJsc3VzYiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAidWRldi1od2RiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibGliYm9vc3Qtc3lzdGVtIGxpYmJvb3N0LXRocmVhZCIKLQotUEFDS0FHRV9CRUZPUkVfUE4gPSsgIiR7UE59LXB5dGhvbiIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtiaW5kaXJ9L2xzdXNiLnB5IgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtY29yZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgc2VkIC1pIC1FICcxcywjIS4rcHl0aG9uLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2xzdXNiLnB5Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAxMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmQwNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAxMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkhvc3Qgc2lkZSBVU0IgY29uc29sZSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJDb250YWlucyB0aGUgbHN1c2IgdXRpbGl0eSBmb3IgaW5zcGVjdGluZyB0aGUgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIFVTQiBidXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC11c2Iub3JnIgorU0VDVElPTiA9ICJiYXNlIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIChHUEx2MiB8IEdQTHYzKSIKKyMgTGljZW5zZSBmaWxlcyB3ZW50IG1pc3NpbmcgaW4gMDEwLCB3aGVuIDAxMSBpcyByZWxlYXNlZCBhZGQgTElDRU5TRVMvKiBiYWNrCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sc3VzYi5jO2VuZGxpbmU9MTttZDU9N2Q0ODYxZDk3OGZmNWJhN2NiMmIzMTllZDFkNGFmZTMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbHN1c2IucHkuaW47YmVnaW5saW5lPTI7ZW5kbGluZT0yO21kNT0xOTRkNmEwMjI2YmY5MGY0ZjY4M2U4OTY4ODc4YjZjZCIKKworREVQRU5EUyA9ICJsaWJ1c2IxIHZpcnR1YWwvbGliaWNvbnYgdWRldiIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL3VzYi91c2J1dGlscy91c2J1dGlscy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdXNiLWRldmljZXMtYXZvaWQtZGVwZW5kZW5jeS1vbi1iYXNoLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNWViMmQyZDY4ZjllZDZkYzNlOTY1OWE1OTg4ZjdlZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODgxYmE0N2ZiMmRmMTBjM2JhNTRhNGNkNjc1NWE5MDM3NzE4MDg5MDc4OGU0NzZmOTlkNDgwZWE5YmM4YmI1OCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxzdXNiIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCisjIFRoZSBiaW5hcmllcyBhcmUgbW9zdGx5IEdQTHYyKyBhcGFydCBmcm9tIGxzdXNiLnB5IHdoaWNoIGlzIEdQTHYyIG9yIHYzLgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFXyR7UE59LXB5dGhvbiA9ICJHUEx2MiB8IEdQTHYzIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJ1ZGV2LWh3ZGIiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0rICIke1BOfS1weXRob24iCitGSUxFU18ke1BOfS1weXRob24gKz0gIiR7YmluZGlyfS9sc3VzYi5weSIKK1JERVBFTkRTXyR7UE59LXB5dGhvbiA9ICJweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkL1N1cHBvcnQtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZC9TdXBwb3J0LWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWY3MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZC9TdXBwb3J0LWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDhlZGE1OTY1NGZkMzE0MTYxNjRjNzhmNjA2ODcxNWIwMTc2N2VkNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZXJoZXkgUG9wb3Z5Y2ggPHNlcmhlLnBvcG92eWNoQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzEgT2N0IDIwMTggMDc6MzE6NDcgLTA0MDAKK1N1YmplY3Q6IHY4NmQ6IFN1cHBvcnQgZm9yIGNyb3NzIGNvbXBpbGF0aW9uCisKK0l0IGlzIGNvbW1vbiB0byBidWlsZCBvbiBvbmUgc3lzdGVtIGZvciBhbm90aGVyIChlLmcuIG9uIElCTSBQb3dlcgorbWFjaGluZSBmb3IgSW50ZWwgeDg2KSB3aGVyZSBIT1NUX0FSQ0ggKHVuYW1lIC1tKSAhPSBUQVJHRVRfQVJDSC4KKworVGFrZSBUQVJHRVRfQVJDSCBmcm9tIGVudmlyb25tZW50IGlmIGl0IGlzIGdpdmVuLCBvdGhlcndpc2UgZmFsbCBiYWNrCit0byBgdW5hbWUgLW1gLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFNlcmhleSBQb3BvdnljaCA8c2VyaGUucG9wb3Z5Y2hAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGNiYmQ2YjMuLjA0NmFhOTkgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTIzLDcgKzIzLDggQEAgY29wdF94ODZlbXVfdHlwZT0iYm9vbCIKKyBjb3B0X3g4NmVtdV9kZWY9YXV0bworIGNvcHRfeDg2ZW11X3Rlc3QoKQorIHsKKy0JbG9jYWwgbT1gdW5hbWUgLW1gCisrCWxvY2FsIG09IiR7VEFSR0VUX0FSQ0g6LSQodW5hbWUgLW0pfSIKKysKKyAJaWYgWyAiJG0iID0gImk2ODYiIC1vICIkbSIgPSAiaTU4NiIgLW8gIiRtIiA9ICJpNDg2IiAtbyAiJG0iID0gImkzODYiIF07IHRoZW4KKyAJCWVjaG8gIm4iOworIAllbGlmIFsgIiRtIiA9ICJ4ODZfNjQiIF07IHRoZW4KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkL2FhcmNoNjQtaG9zdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmQvYWFyY2g2NC1ob3N0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDFmZWQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmQvYWFyY2g2NC1ob3N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotQWNjZXB0IGFhcmNoNjQgYXMgdmFsaWQgYnVpbGQgaG9zdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiB2ODZkLTAuMS4xMC9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB2ODZkLTAuMS4xMC5vcmlnL2NvbmZpZ3VyZQotKysrIHY4NmQtMC4xLjEwL2NvbmZpZ3VyZQotQEAgLTI2LDcgKzI2LDcgQEAgY29wdF94ODZlbXVfdGVzdCgpCi0gCWxvY2FsIG09YHVuYW1lIC1tYAotIAlpZiBbICIkbSIgPSAiaTY4NiIgLW8gIiRtIiA9ICJpNTg2IiAtbyAiJG0iID0gImk0ODYiIC1vICIkbSIgPSAiaTM4NiIgXTsgdGhlbgotIAkJZWNobyAibiI7Ci0tCWVsaWYgWyAiJG0iID0gIng4Nl82NCIgXTsgdGhlbgotKwllbGlmIFsgIiRtIiA9ICJ4ODZfNjQiIC1vICIkbSIgPSAiYWFyY2g2NCIgXTsgdGhlbgotIAkJZWNobyAieSI7Ci0gCWVsc2UKLSAJCWVjaG8gIkl0IGxvb2tzIGxpa2UgeW91ciBhcmNoaXRlY3R1cmUgJyRtJyBpc24ndCBzdXBwb3J0ZWQgYnkgdGhpcyB2ZXJzaW9uIG9mIHY4NmQuIiA+JjIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKaW5kZXggZjk3YjgwZC4uODRlMjdkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKQEAgLTEyLDcgKzEyLDcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxMTA0MjdUMDM1NTA2Wi9wb29sL21haW4vdi8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL1VwZGF0ZS14ODZlbXUtZnJvbS1YLm9yZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hci1mcm9tLWVudi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hYXJjaDY0LWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vU3VwcG9ydC1mb3ItY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiODg5Njg2ZWM4NDI0NDY4ZmUwZDIwNTc0MmU3N2E0YzIiCkBAIC0yMiw3ICsyMiw3IEBACiBDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JwogCiBkb19jb25maWd1cmUgKCkgewotCS4vY29uZmlndXJlIC0td2l0aC14ODZlbXUKKwlUQVJHRVRfQVJDSD0iJHtUQVJHRVRfQVJDSH0iIC4vY29uZmlndXJlIC0td2l0aC14ODZlbXUKIH0KIAogZG9fY29tcGlsZSAoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgppbmRleCA1NjQ4ZTM4Li5hNzc2NTNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIKQEAgLTEsMzEgKzEsMTggQEAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKLQogcmVxdWlyZSBhdmFoaS5pbmMKIAogaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIEFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZDc2YzU5ZDA4ODJhYzZjMjU2ZDcwYTJhNTg1MzYyYTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdhOTliNWRmZTdmZGFlNzk0ZTNkMWVlN2E2Mjk3M2EzNjhlOTFlNDE0YmQwZGZhNWQ4NDQzNGRlNWIxNDgwNCIKLQogREVQRU5EUyArPSAiYXZhaGkiCiAKIEFWQUhJX0dUSyA9ICJndGszIgogCiBTID0gIiR7V09SS0RJUn0vYXZhaGktJHtQVn0iCiAKLVBBQ0tBR0VTID0gIiR7UE59ICR7UE59LXV0aWxzICR7UE59LWRiZyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyBhdmFoaS1kaXNjb3ZlciIKK1BBQ0tBR0VTICs9ICIke1BOfS11dGlscyBhdmFoaS1kaXNjb3ZlciIKIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkke1NPTElCU0RFVn0iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJhdmFoaS11aS5hIgotCiBGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vYiogJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvYioiCi0KIEZJTEVTX2F2YWhpLWRpc2NvdmVyID0gIiR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2F2YWhpLWRpc2NvdmVyLmRlc2t0b3AgXAogICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hdmFoaS9pbnRlcmZhY2VzL2F2YWhpLWRpc2NvdmVyLnVpIFwKICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hdmFoaS1kaXNjb3Zlci1zdGFuZGFsb25lIFwKQEAgLTU5LDQgKzQ2LDMgQEAKICAgICAgICAgcm0gJHtEfSR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyAtcmYKICAgICAgICAgcm0gJHtEfSR7ZGF0YWRpcn0vZ2lyLTEuMC8gLXJmCiB9Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCmluZGV4IGVjMzY4ZGUuLjExODQ2ODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYwpAQCAtMTMsMTYgKzEzLDIwIEBACiAjIG1ham9yIHBhcnQgaXMgdW5kZXIgTEdQTHYyLjErLCBidXQgc2V2ZXJhbCAuZHRkLCAueHNsLCBpbml0c2NyaXB0cyBhbmQKICMgcHl0aG9uIHNjcmlwdHMgYXJlIHVuZGVyIEdQTHYyKwogTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xhdGhpYXQvYXZhaGkvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2F2YWhpLSR7UFZ9LnRhci5neiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L2F2YWhpL3JlbGVhc2VzLyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNzZjNTlkMDg4MmFjNmMyNTZkNzBhMmE1ODUzNjJhNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1N2E5OWI1ZGZlN2ZkYWU3OTRlM2QxZWU3YTYyOTczYTM2OGU5MWU0MTRiZDBkZmE1ZDg0NDM0ZGU1YjE0ODA0IgogCiBERVBFTkRTID0gImV4cGF0IGxpYmNhcCBsaWJkYWVtb24gZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L2F2YWhpL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9hdmFoaS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgIGZpbGU6Ly8wMGF2YWhpLWF1dG9pcGQgXAotICAgICAgICAgIGZpbGU6Ly85OWF2YWhpLWF1dG9pcGQgXAotICAgICAgICAgIGZpbGU6Ly9pbml0c2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xhdGhpYXQvYXZhaGkvcmVsZWFzZXMvIgotCiAjIEZvciBndGsgcmVsYXRlZCBQQUNLQUdFQ09ORklHczogZ3RrLCBndGszCiBBVkFISV9HVEsgPz0gIiIKIApAQCAtMzEsMTggKzM1LDcgQEAKIFBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrIgogUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLWVuYWJsZS1ndGszLC0tZGlzYWJsZS1ndGszLGd0ayszIgogCi1VU0VSQUREX1BBQ0tBR0VTID0gImF2YWhpLWRhZW1vbiBhdmFoaS1hdXRvaXBkIgotVVNFUkFERF9QQVJBTV9hdmFoaS1kYWVtb24gPSAiLS1zeXN0ZW0gLS1ob21lIC9ydW4vYXZhaGktZGFlbW9uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBhdmFoaSIKLQotVVNFUkFERF9QQVJBTV9hdmFoaS1hdXRvaXBkID0gIi0tc3lzdGVtIC0taG9tZSAvcnVuL2F2YWhpLWF1dG9pcGQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1jIFwiQXZhaGkgYXV0b2lwIGRhZW1vblwiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWhpLWF1dG9pcGQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHVzZXJhZGQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24KIAogRVhUUkFfT0VDT05GID0gIi0td2l0aC1hdmFoaS1wcml2LWFjY2Vzcy1ncm91cD1hZG0gXAogICAgICAgICAgICAgIC0tZGlzYWJsZS1zdGFjay1wcm90ZWN0b3IgXApAQCAtNzMsNjcgKzY2LDEyIEBACiAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vYXZhaGktZ29iamVjdC8ubGliczoke0J9L2F2YWhpLWNvbW1vbi8ubGliczoke0J9L2F2YWhpLWNsaWVudC8ubGliczoke0J9L2F2YWhpLWdsaWIvLmxpYnMiCiB9CiAKLVBBQ0tBR0VTID0rICJhdmFoaS1kYWVtb24gbGliYXZhaGktY29tbW9uIGxpYmF2YWhpLWNvcmUgbGliYXZhaGktY2xpZW50IGF2YWhpLWRuc2NvbmZkIGxpYmF2YWhpLWdsaWIgbGliYXZhaGktdWkgYXZhaGktYXV0b2lwZCBhdmFoaS11dGlscyIKLQotIyBBcyBhdmFoaSBkb2Vzbid0IHB1dCBhbnkgZmlsZXMgaW50byBQTiwgY2xlYXIgdGhlIGZpbGVzIGxpc3QgdG8gYXZvaWQgcHJvYmxlbXMKLSMgaWYgZXh0cmEgbGlicmFyaWVzIGFwcGVhci4KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTX2F2YWhpLWF1dG9pcGQgPSAiJHtzYmluZGlyfS9hdmFoaS1hdXRvaXBkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1hdXRvaXBkLmFjdGlvbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGhjcC8qL2F2YWhpLWF1dG9pcGQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkaGNwYy5kLzAwYXZhaGktYXV0b2lwZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRoY3BjLmQvOTlhdmFoaS1hdXRvaXBkIgotRklMRVNfbGliYXZhaGktY29tbW9uID0gIiR7bGliZGlyfS9saWJhdmFoaS1jb21tb24uc28uKiIKLUZJTEVTX2xpYmF2YWhpLWNvcmUgPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLWNvcmUuc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC9BdmFoaUNvcmUqLnR5cGVsaWIiCi1GSUxFU19hdmFoaS1kYWVtb24gPSAiJHtzYmluZGlyfS9hdmFoaS1kYWVtb24gXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktZGFlbW9uLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvaG9zdHMgXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvc2VydmljZXMgXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9hdmFoaS1kYWVtb24gXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50cm9zcGVjdGlvbi8qLmludHJvc3BlY3QgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvYXZhaGktc2VydmljZS5kdGQgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvc2VydmljZS10eXBlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIgotRklMRVNfbGliYXZhaGktY2xpZW50ID0gIiR7bGliZGlyfS9saWJhdmFoaS1jbGllbnQuc28uKiIKLUZJTEVTX2xpYmF2YWhpLXVpID0gIiR7bGliZGlyfS9saWJhdmFoaS11aS5zby4qIgotRklMRVNfYXZhaGktZG5zY29uZmQgPSAiJHtzYmluZGlyfS9hdmFoaS1kbnNjb25mZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL2F2YWhpLWRuc2NvbmZkLmFjdGlvbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9hdmFoaS1kbnNjb25mZCIKLUZJTEVTX2xpYmF2YWhpLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLWdsaWIuc28uKiIKLUZJTEVTX2xpYmF2YWhpLWdvYmplY3QgPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLWdvYmplY3Quc28uKiAgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvQXZhaGkqLnR5cGVsaWIiCi1GSUxFU19hdmFoaS11dGlscyA9ICIke2JpbmRpcn0vYXZhaGktKiIKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gImF2YWhpLWRhZW1vbiAoPSAke0VYVEVORFBLR1Z9KSBsaWJhdmFoaS1jb3JlICg9ICR7RVhURU5EUEtHVn0pIGxpYmF2YWhpLWNsaWVudCAoPSAke0VYVEVORFBLR1Z9KSIKLQotUlJFQ09NTUVORFNfYXZhaGktZGFlbW9uX2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIFJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIAotQ09ORkZJTEVTX2F2YWhpLWRhZW1vbiA9ICIke3N5c2NvbmZkaXJ9L2F2YWhpL2F2YWhpLWRhZW1vbi5jb25mIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImF2YWhpLWRhZW1vbiBhdmFoaS1kbnNjb25mZCIKLUlOSVRTQ1JJUFRfTkFNRV9hdmFoaS1kYWVtb24gPSAiYXZhaGktZGFlbW9uIgotSU5JVFNDUklQVF9QQVJBTVNfYXZhaGktZGFlbW9uID0gImRlZmF1bHRzIDIxIDE5IgotSU5JVFNDUklQVF9OQU1FX2F2YWhpLWRuc2NvbmZkID0gImF2YWhpLWRuc2NvbmZkIgotSU5JVFNDUklQVF9QQVJBTVNfYXZhaGktZG5zY29uZmQgPSAiZGVmYXVsdHMgMjIgMTkiCi0KIGRvX2luc3RhbGwoKSB7CiAJYXV0b3Rvb2xzX2RvX2luc3RhbGwKIAlybSAtcmYgJHtEfS9ydW4KIAlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMKIAl0ZXN0IC1kICR7RH0ke2RhdGFkaXJ9L2RidXMtMSAmJiBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtkYXRhZGlyfS9kYnVzLTEKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9hdmFoaQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGhjcGMuZAotCWluc3RhbGwgJHtXT1JLRElSfS8wMGF2YWhpLWF1dG9pcGQgJHtEfSR7c3lzY29uZmRpcn0vdWRoY3BjLmQKLQlpbnN0YWxsICR7V09SS0RJUn0vOTlhdmFoaS1hdXRvaXBkICR7RH0ke3N5c2NvbmZkaXJ9L3VkaGNwYy5kCi19Ci0KLSMgQXQgdGhlIHRpbWUgdGhlIHBvc3RpbnN0IHJ1bnMsIGRidXMgbWlnaHQgbm90IGJlIHNldHVwIHNvIG9ubHkgcmVzdGFydCBpZiBydW5uaW5nIAotIyBEb24ndCBleGl0IGVhcmx5LCBiZWNhdXNlIHVwZGF0ZS1yYy5kIG5lZWRzIHRvIHJ1biBzdWJzZXF1ZW50bHkuCi0KLXBrZ19wb3N0aW5zdF9hdmFoaS1kYWVtb24gKCkgewotaWYgWyAteiAiJEQiIF07IHRoZW4KLQlraWxsYWxsIC1xIC1IVVAgZGJ1cy1kYWVtb24gfHwgdHJ1ZQotZmkKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCmluZGV4IDdjOTFmMTAuLjNkNWYzMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgpAQCAtMSwyMCArMSw4MCBAQAogcmVxdWlyZSBhdmFoaS5pbmMKIAotaW5oZXJpdCBzeXN0ZW1kCitTUkNfVVJJICs9ICJmaWxlOi8vMDBhdmFoaS1hdXRvaXBkIFwKKyAgICAgICAgICAgZmlsZTovLzk5YXZhaGktYXV0b2lwZCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0c2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitpbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZAorCitQQUNLQUdFUyA9KyAibGliYXZhaGktZ29iamVjdCBhdmFoaS1kYWVtb24gbGliYXZhaGktY29tbW9uIGxpYmF2YWhpLWNvcmUgbGliYXZhaGktY2xpZW50IGF2YWhpLWRuc2NvbmZkIGxpYmF2YWhpLWdsaWIgYXZhaGktYXV0b2lwZCBhdmFoaS11dGlscyIKKworIyBBcyBhdmFoaSBkb2Vzbid0IHB1dCBhbnkgZmlsZXMgaW50byBQTiwgY2xlYXIgdGhlIGZpbGVzIGxpc3QgdG8gYXZvaWQgcHJvYmxlbXMKKyMgaWYgZXh0cmEgbGlicmFyaWVzIGFwcGVhci4KK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTX2F2YWhpLWF1dG9pcGQgPSAiJHtzYmluZGlyfS9hdmFoaS1hdXRvaXBkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1hdXRvaXBkLmFjdGlvbiBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGhjcC8qL2F2YWhpLWF1dG9pcGQgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkaGNwYy5kLzAwYXZhaGktYXV0b2lwZCBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRoY3BjLmQvOTlhdmFoaS1hdXRvaXBkIgorRklMRVNfbGliYXZhaGktY29tbW9uID0gIiR7bGliZGlyfS9saWJhdmFoaS1jb21tb24uc28uKiIKK0ZJTEVTX2xpYmF2YWhpLWNvcmUgPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLWNvcmUuc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC9BdmFoaUNvcmUqLnR5cGVsaWIiCitGSUxFU19hdmFoaS1kYWVtb24gPSAiJHtzYmluZGlyfS9hdmFoaS1kYWVtb24gXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktZGFlbW9uLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvaG9zdHMgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvc2VydmljZXMgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9hdmFoaS1kYWVtb24gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50cm9zcGVjdGlvbi8qLmludHJvc3BlY3QgXAorICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvYXZhaGktc2VydmljZS5kdGQgXAorICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvc2VydmljZS10eXBlcyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIgorRklMRVNfbGliYXZhaGktY2xpZW50ID0gIiR7bGliZGlyfS9saWJhdmFoaS1jbGllbnQuc28uKiIKK0ZJTEVTX2F2YWhpLWRuc2NvbmZkID0gIiR7c2JpbmRpcn0vYXZhaGktZG5zY29uZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1kbnNjb25mZC5hY3Rpb24gXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvYXZhaGktZG5zY29uZmQiCitGSUxFU19saWJhdmFoaS1nbGliID0gIiR7bGliZGlyfS9saWJhdmFoaS1nbGliLnNvLioiCitGSUxFU19saWJhdmFoaS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJhdmFoaS1nb2JqZWN0LnNvLiogICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wL0F2YWhpKi50eXBlbGliIgorRklMRVNfYXZhaGktdXRpbHMgPSAiJHtiaW5kaXJ9L2F2YWhpLSoiCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICJhdmFoaS1kYWVtb24gKD0gJHtFWFRFTkRQS0dWfSkgbGliYXZhaGktY29yZSAoPSAke0VYVEVORFBLR1Z9KSBsaWJhdmFoaS1jbGllbnQgKD0gJHtFWFRFTkRQS0dWfSkiCisKK1JSRUNPTU1FTkRTX2F2YWhpLWRhZW1vbl9hcHBlbmRfbGliYy1nbGliYyA9ICIgbGlibnNzLW1kbnMiCisKK0NPTkZGSUxFU19hdmFoaS1kYWVtb24gPSAiJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1kYWVtb24uY29uZiIKKworVVNFUkFERF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktYXV0b2lwZCIKK1VTRVJBRERfUEFSQU1fYXZhaGktZGFlbW9uID0gIi0tc3lzdGVtIC0taG9tZSAvcnVuL2F2YWhpLWRhZW1vbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYXZhaGkiCisKK1VTRVJBRERfUEFSQU1fYXZhaGktYXV0b2lwZCA9ICItLXN5c3RlbSAtLWhvbWUgL3J1bi9hdmFoaS1hdXRvaXBkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtYyBcIkF2YWhpIGF1dG9pcCBkYWVtb25cIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFoaS1hdXRvaXBkIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gImF2YWhpLWRhZW1vbiBhdmFoaS1kbnNjb25mZCIKK0lOSVRTQ1JJUFRfTkFNRV9hdmFoaS1kYWVtb24gPSAiYXZhaGktZGFlbW9uIgorSU5JVFNDUklQVF9QQVJBTVNfYXZhaGktZGFlbW9uID0gImRlZmF1bHRzIDIxIDE5IgorSU5JVFNDUklQVF9OQU1FX2F2YWhpLWRuc2NvbmZkID0gImF2YWhpLWRuc2NvbmZkIgorSU5JVFNDUklQVF9QQVJBTVNfYXZhaGktZG5zY29uZmQgPSAiZGVmYXVsdHMgMjIgMTkiCiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tZGFlbW9uICR7UE59LWRuc2NvbmZkIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LWRhZW1vbiA9ICJhdmFoaS1kYWVtb24uc2VydmljZSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfS1kbnNjb25mZCA9ICJhdmFoaS1kbnNjb25mZC5zZXJ2aWNlIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkaGNwYy5kCisJaW5zdGFsbCAke1dPUktESVJ9LzAwYXZhaGktYXV0b2lwZCAke0R9JHtzeXNjb25mZGlyfS91ZGhjcGMuZAorCWluc3RhbGwgJHtXT1JLRElSfS85OWF2YWhpLWF1dG9pcGQgJHtEfSR7c3lzY29uZmRpcn0vdWRoY3BjLmQKK30KIAotU1JDX1VSSVttZDVzdW1dID0gImQ3NmM1OWQwODgyYWM2YzI1NmQ3MGEyYTU4NTM2MmE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YTk5YjVkZmU3ZmRhZTc5NGUzZDFlZTdhNjI5NzNhMzY4ZTkxZTQxNGJkMGRmYTVkODQ0MzRkZTViMTQ4MDQiCi0KLURFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKLQotUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QiCisjIEF0IHRoZSB0aW1lIHRoZSBwb3N0aW5zdCBydW5zLCBkYnVzIG1pZ2h0IG5vdCBiZSBzZXR1cCBzbyBvbmx5IHJlc3RhcnQgaWYgcnVubmluZyAKKyMgRG9uJ3QgZXhpdCBlYXJseSwgYmVjYXVzZSB1cGRhdGUtcmMuZCBuZWVkcyB0byBydW4gc3Vic2VxdWVudGx5LgorcGtnX3Bvc3RpbnN0X2F2YWhpLWRhZW1vbiAoKSB7CitpZiBbIC16ICIkRCIgXTsgdGhlbgorCWtpbGxhbGwgLXEgLUhVUCBkYnVzLWRhZW1vbiB8fCB0cnVlCitmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZTdlOGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1GaXgtb3BlbmluZy1ldGMtcmVzb2x2LmNvbmYtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA3ODk2NzgxNGY1YzM3ZWQ2N2Y0Y2Y2NGQ3MGM5Zjc2YTAzZWU4OWJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMCBKdW4gMjAxOCAxMzo1NzozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggb3BlbmluZyAvZXRjL3Jlc29sdi5jb25mIGVycm9yCisKK0ZpeCB0byBzdGFydCBhdmFoaS1kYWVtb24gYWZ0ZXIgc3lzdGVtZC1yZXNvbHZlZC5zZXJ2aWNlLiBUaGlzIGlzIGJlY2F1c2UKKy9ldGMvcmVzb2x2LmNvbmYgaXMgYSBsaW5rIHRvIC9ldGMvcmVzb2x2LWNvbmYuc3lzdGVtZCB3aGljaCBpbiB0dXJuIGlzCithIHN5bWxpbmsgdG8gL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYuIEFuZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZgoraXMgY3JlYXRlZCBieSBzeXN0ZW1kLXJlc29sdmVkLnNlcnZpY2UgYnkgZGVmYXVsdCBpbiBjdXJyZW50IE9FJ3Mgc3lzdGVtZAorYmFzZWQgc3lzdGVtcy4KKworVGhpcyBmaXhlcyBlcnJybyBsaWtlIGJlbG93LgorCisgIEZhaWxlZCB0byBvcGVuIC9ldGMvcmVzb2x2LmNvbmY6IEludmFsaWQgYXJndW1lbnQKKworSW4gZmFjdCwgaGFuZGxpbmcgb2YgL2V0Yy9yZXNvbHYuY29uZiBpcyBxdWl0ZSBkaXN0cm8gc3BlY2lmaWMuIFNvIHRoaXMgcGF0Y2gKK2lzIG1hcmtlZCBhcyBPRSBzcGVjaWZpYy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5zZXJ2aWNlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLnNlcnZpY2UuaW4gYi9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLnNlcnZpY2UuaW4KK2luZGV4IDU0OGM4MzQuLjYzZTI4ZTQgMTAwNjQ0CistLS0gYS9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLnNlcnZpY2UuaW4KKysrKyBiL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uc2VydmljZS5pbgorQEAgLTE4LDYgKzE4LDcgQEAKKyBbVW5pdF0KKyBEZXNjcmlwdGlvbj1BdmFoaSBtRE5TL0ROUy1TRCBTdGFjaworIFJlcXVpcmVzPWF2YWhpLWRhZW1vbi5zb2NrZXQKKytBZnRlcj1zeXN0ZW1kLXJlc29sdmVkLnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPWRidXMKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWF2b2lkLXN0YXJ0LWZhaWx1cmUtd2l0aC1iaW5kLXVzZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiOTZlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMzFkZGUzNTYyZjI4NzQyOWVlYTk0Yjc3MjUwZDE4NDgxOGI0OTA2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTUgT2N0IDIwMTggMTY6NTU6MDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZvaWQgc3RhcnQgZmFpbHVyZSB3aXRoIGJpbmQgdXNlcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgaW5pdC5kIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9pbml0LmQgYi9pbml0LmQKK2luZGV4IGIyZWVjNjAuLjZlMDM5MzYgMTAwNjQ0CistLS0gYS9pbml0LmQKKysrKyBiL2luaXQuZAorQEAgLTU3LDYgKzU3LDcgQEAgY2FzZSAiJDEiIGluCisgCW1vZHByb2JlIGNhcGFiaWxpdHkgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAJaWYgWyAhIC1mIC9ldGMvYmluZC9ybmRjLmtleSBdOyB0aGVuCisgCSAgICAvdXNyL3NiaW4vcm5kYy1jb25mZ2VuIC1hIC1iIDUxMiAtciAvZGV2L3VyYW5kb20KKysJICAgIGNob3duIHJvb3Q6YmluZCAvZXRjL2JpbmQvcm5kYy5rZXkgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAJICAgIGNobW9kIDA2NDAgL2V0Yy9iaW5kL3JuZGMua2V5CisgCWZpCisgCWlmIFsgLWYgL3Zhci9ydW4vbmFtZWQvbmFtZWQucGlkIF07IHRoZW4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxYmIyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA5NTA4NjdkOWZkM2Y2OTBlMjcxYzhjODA3YjZlZWQxNDRiMjkzNWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNyBBdWcgMjAxOCAxNTowMDo1MSArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IHJlbW92ZSB1c2VsZXNzIGAtTCR1c2Vfb3BlbnNzbC9saWInCisKK1NpbmNlIGAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9JyBpcyB1c2VkIGluIGJpbmQgcmVjaXBlLAordGhlIGAtTCR1c2Vfb3BlbnNzbC9saWInIGhhcyBhIGhhcmRjb2RlZCBzdWZmaXgsIHJlbW92aW5nIGl0IGlzIGhhcm1sZXNzCithbmQgaGVscGZ1bCBmb3IgY2xlYW4gdXAgaG9zdCBidWlsZCBwYXRoIGluIGlzYy1jb25maWcuc2gKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDU0ZWZjNTUuLjc2YWMwZWIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTE2OTEsNyArMTY5MSw3IEBAIElmIHlvdSBkb24ndCB3YW50IE9wZW5TU0wsIHVzZSAtLXdpdGhvdXQtb3BlbnNzbF0pCisgCQkJCWZpCisgCQkJCTs7CisgCQkJKikKKy0JCQkJRFNUX09QRU5TU0xfTElCUz0iLUwkdXNlX29wZW5zc2wvbGliIC1sY3J5cHRvIgorKwkJCQlEU1RfT1BFTlNTTF9MSUJTPSItbGNyeXB0byIKKyAJCQkJOzsKKyAJCQllc2FjCisgCQlmaQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCmluZGV4IDEyMTUwOTMuLmE4ZDYwMWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCkBAIC03LDExICs3LDExIEBACiAgbGliL2Rucy9nZW4uYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvZ2VuLmMgYi9saWIvZG5zL2dlbi5jCi1pbmRleCA3YTdkYWZiLi41MWEwNDM1IDEwMDY0NAotLS0tIGEvbGliL2Rucy9nZW4uYwotKysrIGIvbGliL2Rucy9nZW4uYwotQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9CitJbmRleDogYmluZC05LjExLjMvbGliL2Rucy9nZW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGJpbmQtOS4xMS4zLm9yaWcvbGliL2Rucy9nZW4uYworKysrIGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKK0BAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQogICNkZWZpbmUgVFlQRUNMQVNTQlVGIChUWVBFQ0xBU1NMRU4gKyAxKQogICNkZWZpbmUgVFlQRUNMQVNTRk1UICIlIiBTVFIoVFlQRUNMQVNTTEVOKSAiWy0wLTlhLXpdXyVkIgogICNkZWZpbmUgQVRUUklCVVRFU0laRSAyNTYKQEAgLTIwLDYgKzIwLDMgQEAKICAKICBzdGF0aWMgc3RydWN0IGNjIHsKICAJc3RydWN0IGNjICpuZXh0OwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2gKaW5kZXggMWVkODU4Yy4uMDE4NzRhNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaApAQCAtMTMsMTEgKzEzLDExIEBACiAgbGliL2Rucy9nZW4uYyB8ICAgIDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvZ2VuLmMgYi9saWIvZG5zL2dlbi5jCi1pbmRleCA1MWEwNDM1Li4zZDcyMTRmIDEwMDY0NAotLS0tIGEvbGliL2Rucy9nZW4uYwotKysrIGIvbGliL2Rucy9nZW4uYwotQEAgLTE0OCw3ICsxNDgsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQorSW5kZXg6IGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBiaW5kLTkuMTEuMy5vcmlnL2xpYi9kbnMvZ2VuLmMKKysrKyBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCitAQCAtMTMwLDcgKzEzMCwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9CiAgI2RlZmluZSBUWVBFQ0xBU1NCVUYgKFRZUEVDTEFTU0xFTiArIDEpCiAgI2RlZmluZSBUWVBFQ0xBU1NGTVQgIiUiIFNUUihUWVBFQ0xBU1NMRU4pICJbLTAtOWEtel1fJWQiCiAgI2RlZmluZSBBVFRSSUJVVEVTSVpFIDI1NgpAQCAtMjksNiArMjksMyBAQAogIAogIHN0YXRpYyBzdHJ1Y3QgY2MgewogIAlzdHJ1Y3QgY2MgKm5leHQ7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OTA4YWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbmFtZWQtbHdyZXNkLVYtYW5kLXN0YXJ0LWxvZy1oaWRlLWJ1aWxkLW9wdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBhM2FmNGE0MDViYWY1ZmY1ODJlODJhYWJhMzkyZGQ5NjY3ZDk0YmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNyBBdWcgMjAxOCAyMToyNDoyMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBgbmFtZWQvbHdyZXNkIC1WJyBhbmQgc3RhcnQgbG9nIGhpZGUgYnVpbGQgb3B0aW9ucworCitUaGUgYnVpbGQgb3B0aW9ucyBleHBvc2UgYnVpbGQgcGF0aCBkaXJlY3Rvcmllcywgc28gaGlkZSB0aGVtLgorW3NuaXBdCiskIG5hbWVkIC1WCit8YnVpbHQgYnkgbWFrZSB3aXRoICoqKiAob3B0aW9ucyBhcmUgaGlkZGVuKQorW3NuaXBdCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvZ2xvYmFscy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvZ2xvYmFscy5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvZ2xvYmFscy5oCitpbmRleCBiYTM0NTdlLi43NzQxZGE3IDEwMDY0NAorLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvZ2xvYmFscy5oCisrKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9nbG9iYWxzLmgKK0BAIC02OCw3ICs2OCw3IEBAIEVYVEVSTiBjb25zdCBjaGFyICoJCW5zX2dfdmVyc2lvbgkJSU5JVChWRVJTSU9OKTsKKyBFWFRFUk4gY29uc3QgY2hhciAqCQluc19nX3Byb2R1Y3QJCUlOSVQoUFJPRFVDVCk7CisgRVhURVJOIGNvbnN0IGNoYXIgKgkJbnNfZ19kZXNjcmlwdGlvbglJTklUKERFU0NSSVBUSU9OKTsKKyBFWFRFUk4gY29uc3QgY2hhciAqCQluc19nX3NyY2lkCQlJTklUKFNSQ0lEKTsKKy1FWFRFUk4gY29uc3QgY2hhciAqCQluc19nX2NvbmZpZ2FyZ3MJCUlOSVQoQ09ORklHQVJHUyk7CisrRVhURVJOIGNvbnN0IGNoYXIgKgkJbnNfZ19jb25maWdhcmdzCQlJTklUKCIqKiogKG9wdGlvbnMgYXJlIGhpZGRlbikiKTsKKyBFWFRFUk4gY29uc3QgY2hhciAqCQluc19nX2J1aWxkZXIJCUlOSVQoQlVJTERFUik7CisgRVhURVJOIGluX3BvcnRfdAkJbnNfZ19wb3J0CQlJTklUKDApOworIEVYVEVSTiBpc2NfZHNjcF90CQluc19nX2RzY3AJCUlOSVQoLTEpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE4LTU3NDAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE4LTU3NDAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyYmE3ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTgtNTc0MC5wYXRjaApAQCAtMCwwICsxLDcyIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS85LjExLjQtUDEvcGF0Y2hlcy9DVkUtMjAxOC01NzQwXQorCitDVkU6IENWRS0yMDE4LTU3NDAKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCitpbmRleCA3NTBiNjAwLi4zZDhkNjU1IDEwMDY0NAorLS0tIGEvQ0hBTkdFUworKysrIGIvQ0hBTkdFUworQEAgLTEsMyArMSw5IEBACisrCS0tLSA5LjExLjQtUDEgcmVsZWFzZWQgLS0tCisrCisrNDk5Ny4JW3NlY3VyaXR5XQluYW1lZCBjb3VsZCBjcmFzaCBkdXJpbmcgcmVjdXJzaXZlIHByb2Nlc3NpbmcKKysJCQlvZiBETkFNRSByZWNvcmRzIHdoZW4gImRlbnktYW5zd2VyLWFsaWFzZXMiIHdhcworKwkJCWluIHVzZS4gKENWRS0yMDE4LTU3NDApIFtHTCAjMzg3XQorKworIAktLS0gOS4xMS40IHJlbGVhc2VkIC0tLQorIAorIAktLS0gOS4xMS40cmMyIHJlbGVhc2VkIC0tLQorZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmVzb2x2ZXIuYyBiL2xpYi9kbnMvcmVzb2x2ZXIuYworaW5kZXggOGY2NzRhMi4uNDFkMTM4NSAxMDA2NDQKKy0tLSBhL2xpYi9kbnMvcmVzb2x2ZXIuYworKysrIGIvbGliL2Rucy9yZXNvbHZlci5jCitAQCAtNjMxOCw2ICs2MzE4LDcgQEAgaXNfYW5zd2VydGFyZ2V0X2FsbG93ZWQoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX25hbWVfdCAqcW5hbWUsIGRuc19uYW1lX3QgKnJuYW1lLAorIAl1bnNpZ25lZCBpbnQgbmxhYmVsczsKKyAJZG5zX2ZpeGVkbmFtZV90IGZpeGVkOworIAlkbnNfbmFtZV90IHByZWZpeDsKKysJaW50IG9yZGVyOworIAorIAlSRVFVSVJFKHJkYXRhc2V0ICE9IE5VTEwpOworIAlSRVFVSVJFKHJkYXRhc2V0LT50eXBlID09IGRuc19yZGF0YXR5cGVfY25hbWUgfHwKK0BAIC02MzQwLDE3ICs2MzQxLDI1IEBAIGlzX2Fuc3dlcnRhcmdldF9hbGxvd2VkKGZldGNoY3R4X3QgKmZjdHgsIGRuc19uYW1lX3QgKnFuYW1lLCBkbnNfbmFtZV90ICpybmFtZSwKKyAJCXRuYW1lID0gJmNuYW1lLmNuYW1lOworIAkJYnJlYWs7CisgCWNhc2UgZG5zX3JkYXRhdHlwZV9kbmFtZToKKysJCWlmIChkbnNfbmFtZV9mdWxsY29tcGFyZShxbmFtZSwgcm5hbWUsICZvcmRlciwgJm5sYWJlbHMpICE9CisrCQkgICAgZG5zX25hbWVyZWxuX3N1YmRvbWFpbikKKysJCXsKKysJCQlyZXR1cm4gKElTQ19UUlVFKTsKKysJCX0KKyAJCXJlc3VsdCA9IGRuc19yZGF0YV90b3N0cnVjdCgmcmRhdGEsICZkbmFtZSwgTlVMTCk7CisgCQlSVU5USU1FX0NIRUNLKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKTsKKyAJCWRuc19uYW1lX2luaXQoJnByZWZpeCwgTlVMTCk7CisgCQl0bmFtZSA9IGRuc19maXhlZG5hbWVfaW5pdG5hbWUoJmZpeGVkKTsKKy0JCW5sYWJlbHMgPSBkbnNfbmFtZV9jb3VudGxhYmVscyhxbmFtZSkgLQorLQkJCSAgZG5zX25hbWVfY291bnRsYWJlbHMocm5hbWUpOworKwkJbmxhYmVscyA9IGRuc19uYW1lX2NvdW50bGFiZWxzKHJuYW1lKTsKKyAJCWRuc19uYW1lX3NwbGl0KHFuYW1lLCBubGFiZWxzLCAmcHJlZml4LCBOVUxMKTsKKyAJCXJlc3VsdCA9IGRuc19uYW1lX2NvbmNhdGVuYXRlKCZwcmVmaXgsICZkbmFtZS5kbmFtZSwgdG5hbWUsCisgCQkJCQkgICAgICBOVUxMKTsKKy0JCWlmIChyZXN1bHQgPT0gRE5TX1JfTkFNRVRPT0xPTkcpCisrCQlpZiAocmVzdWx0ID09IEROU19SX05BTUVUT09MT05HKSB7CisrCQkJaWYgKGNoYWluaW5ncCAhPSBOVUxMKSB7CisrCQkJCSpjaGFpbmluZ3AgPSBJU0NfVFJVRTsKKysJCQl9CisgCQkJcmV0dXJuIChJU0NfVFJVRSk7CisrCQl9CisgCQlSVU5USU1FX0NIRUNLKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKTsKKyAJCWJyZWFrOworIAlkZWZhdWx0OgorQEAgLTcwNzEsNyArNzA4MCw5IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7CisgCQl9CisgCQlpZiAoKGFyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX2NuYW1lIHx8CisgCQkgICAgIGFyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX2RuYW1lKSAmJgorLQkJICAgICAhaXNfYW5zd2VydGFyZ2V0X2FsbG93ZWQoZmN0eCwgcW5hbWUsIGFuYW1lLCBhcmRhdGFzZXQsCisrCQkgICAgdHlwZSAhPSBhcmRhdGFzZXQtPnR5cGUgJiYKKysJCSAgICB0eXBlICE9IGRuc19yZGF0YXR5cGVfYW55ICYmCisrCQkgICAgIWlzX2Fuc3dlcnRhcmdldF9hbGxvd2VkKGZjdHgsIHFuYW1lLCBhbmFtZSwgYXJkYXRhc2V0LAorIAkJCQkJICAgICAgTlVMTCkpCisgCQl7CisgCQkJcmV0dXJuIChETlNfUl9TRVJWRkFJTCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmM0ZWEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSA5YjQwNjE5ZmY2ZmRkZmVmMjc1OGJhNzk3Nzg5Zjg0ODdmNDEyZGYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE2IEZlYiAyMDE1IDAwOjUwOjAxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZnZW46IGRvbid0IGJ1aWxkIHVuaXgubyB0d2ljZQotCi1GaXhlZDoKLXVuaXgvb3MubzogZmlsZSBub3QgcmVjb2duaXplZDogRmlsZSB0cnVuY2F0ZWQKLWNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotCi1UaGlzIGlzIGJlY2F1c2Ugb3MubyB3YXMgYnVpbHQgdHdpY2U6Ci0qIFRoZSBpbXBsaWNpdHkgcnVsZSAoZGVwZW5kcyBvbiB1bml4L29zLm8pCi0qIFRoZSAibWFrZSBhbGwiIGluIHVuaXggc3ViZGlyIChkZXBlbmRzIG9uIHVuaXgvb3MubykKLQotRGVwZW5kIG9uIHN1YmRpcnMgd2hpY2ggaXMgdW5peCBvbmx5IHJhdGhlciB0aGFuIHVuaXgvb3MubyB3aWxsIGZpeCB0aGUKLXByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotVXBkYXRlIGNvbnRleHQodHJhaWxpbmcgd2hpdGVzcGFjZSkgZm9yIHZlcnNpb24gOS4xMC41LVAzLgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJpbi9jb25mZ2VuL01ha2VmaWxlLmluIHwgICAgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluIGIvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4KLWluZGV4IGRjYTI3MmYuLjAyYmVjY2UgMTAwNjQ0Ci0tLS0gYS9iaW4vY29uZmdlbi9NYWtlZmlsZS5pbgotKysrIGIvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4KLUBAIC03NCwxMSArNzQsMTEgQEAgcm5kYy1jb25mZ2VuLkBPQDogcm5kYy1jb25mZ2VuLmMKLSBkZG5zLWNvbmZnZW4uQE9AOiBkZG5zLWNvbmZnZW4uYwotIAkke0xJQlRPT0xfTU9ERV9DT01QSUxFfSAke0NDfSAke0FMTF9DRkxBR1N9IC1jICR7c3JjZGlyfS9kZG5zLWNvbmZnZW4uYwotIAotLXJuZGMtY29uZmdlbkBFWEVFWFRAOiBybmRjLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30gJHtDT05GREVQTElCU30KLStybmRjLWNvbmZnZW5ARVhFRVhUQDogcm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7Q09ORkRFUExJQlN9ICQoU1VCRElSUykKLSAJZXhwb3J0IEJBU0VPQkpTPSJybmRjLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtVT0JKU30iOyBcCi0gCSR7RklOQUxCVUlMRENNRH0KLSAKLS1kZG5zLWNvbmZnZW5ARVhFRVhUQDogZGRucy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9ICR7Q09ORkRFUExJQlN9Ci0rZGRucy1jb25mZ2VuQEVYRUVYVEA6IGRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke0NPTkZERVBMSUJTfSAkKFNVQkRJUlMpCi0gCWV4cG9ydCBCQVNFT0JKUz0iZGRucy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9IjsgXAotIAkke0ZJTkFMQlVJTERDTUR9Ci0gCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoCmluZGV4IDEzZGYzYmIuLjM3ZTIxMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2gKQEAgLTMxLDExICszMSwxMSBAQAogIGNvbmZpZ3VyZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggYzllZjNhNjAxMzQzLi4xN2ExZjYxM2U5YWMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTIxMzksNyArMjEzOSw3IEBAIGNhc2UgIiR1c2VfbGlianNvbiIgaW4KK0luZGV4OiBiaW5kLTkuMTEuMy9jb25maWd1cmUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBiaW5kLTkuMTEuMy5vcmlnL2NvbmZpZ3VyZS5pbgorKysrIGJpbmQtOS4xMS4zL2NvbmZpZ3VyZS5pbgorQEAgLTI1NzQsNyArMjU3NCw3IEBAIGNhc2UgIiR1c2VfbGlianNvbiIgaW4KICAJCWxpYmpzb25fbGlicz0iIgogIAkJOzsKICAJYXV0b3x5ZXMpCkBAIC00NCw2ICs0NCwzIEBACiAgCQlkbwogIAkJCWlmIHRlc3QgLWYgIiR7ZH0vaW5jbHVkZS9qc29uL2pzb24uaCIKICAJCQl0aGVuCi0tLSAKLTIuNC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDJlY2IxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZG9udC10ZXN0LW9uLWhvc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogYmluZC05LjkuNS9iaW4vTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiaW5kLTkuOS41Lm9yaWcvYmluL01ha2VmaWxlLmluCi0rKysgYmluZC05LjkuNS9iaW4vTWFrZWZpbGUuaW4KLUBAIC0xOSw3ICsxOSw3IEBAIHNyY2RpciA9CUBzcmNkaXJACi0gVlBBVEggPQkJQHNyY2RpckAKLSB0b3Bfc3JjZGlyID0JQHRvcF9zcmNkaXJACi0gCi0tU1VCRElSUyA9CW5hbWVkIHJuZGMgZGlnIGRlbHYgZG5zc2VjIHRvb2xzIHRlc3RzIG5zdXBkYXRlIFwKLStTVUJESVJTID0JbmFtZWQgcm5kYyBkaWcgZGVsdiBkbnNzZWMgdG9vbHMgbnN1cGRhdGUgXAotIAkJY2hlY2sgY29uZmdlbiBAUFlUSE9OX1RPT0xTQCBAUEtDUzExX1RPT0xTQAotIFRBUkdFVFMgPQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyOWYxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVVzZSBweXRob24zIHJhdGhlciBkZWZhdWx0IHB5dGhvbiB3aGljaCBtYXliZSBsaW5rcyB0byBweXRob24yIGZvciBvZS4gQW5kIGFkZAotb3B0aW9uIGZvciBzZXR1cC5weSB0byBpbnN0YWxsIGZpbGVzIHRvIHJpZ2h0IGRpcmVjdG9yeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9iaW4vcHl0aG9uL01ha2VmaWxlLmluIGIvYmluL3B5dGhvbi9NYWtlZmlsZS5pbgotaW5kZXggYTQzYTNjMS4uMmU3MjdmMiAxMDA2NDQKLS0tLSBhL2Jpbi9weXRob24vTWFrZWZpbGUuaW4KLSsrKyBiL2Jpbi9weXRob24vTWFrZWZpbGUuaW4KLUBAIC01NSw5ICs1NSw5IEBAIGluc3RhbGw6OiAke1RBUkdFVFN9IGluc3RhbGxkaXJzCi0gCSR7SU5TVEFMTF9EQVRBfSAke3NyY2Rpcn0vZG5zc2VjLWNvdmVyYWdlLjggJHtERVNURElSfSR7bWFuZGlyfS9tYW44Ci0gCWlmIHRlc3QgLW4gIiR7UFlUSE9OfSIgOyB0aGVuIFwKLSAJCWlmIHRlc3QgLW4gIiR7REVTVERJUn0iIDsgdGhlbiBcCi0tCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0ke0RFU1RESVJ9IC0tcHJlZml4PSR7cHJlZml4fSA7IFwKLSsJCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1yb290PSR7REVTVERJUn0gLS1wcmVmaXg9JHtwcmVmaXh9IC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gOyBcCi0gCQllbHNlIFwKLS0JCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtwcmVmaXh9IDsgXAotKwkJCSR7UFlUSE9OfSAke3NyY2Rpcn0vc2V0dXAucHkgaW5zdGFsbCAtLXByZWZpeD0ke3ByZWZpeH0gLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSA7IFwKLSAJCWZpIFwKLSAJZmkKLSAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDMxNGJiOTAuLjg2NzkyM2UgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTIyNyw3ICsyMjcsNyBAQCBBQ19BUkdfV0lUSChweXRob24sCi0gWyAgLS13aXRoLXB5dGhvbj1QQVRIICAgICAgc3BlY2lmeSBwYXRoIHRvIHB5dGhvbiBpbnRlcnByZXRlcl0sCi0gICAgIHVzZV9weXRob249IiR3aXRodmFsIiwgdXNlX3B5dGhvbj0idW5zcGVjIikKLSAKLS1weXRob249InB5dGhvbiBweXRob24zIHB5dGhvbjMuNSBweXRob24zLjQgcHl0aG9uMy4zIHB5dGhvbjMuMiBweXRob24yIHB5dGhvbjIuNyIKLStweXRob249InB5dGhvbjMgcHl0aG9uMy41IHB5dGhvbjMuNCBweXRob24zLjMgcHl0aG9uMy4yIHB5dGhvbjIgcHl0aG9uMi43IgotIAotIHRlc3RhcmdwYXJzZT0ndHJ5OiBpbXBvcnQgYXJncGFyc2UKLSBleGNlcHQ6IGV4aXQoMSknCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yjg4MzViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLVNVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIklTQyAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ZGJhNDY1MDc0NDYxOTgxMTliY2RlMzJhNGZlYWFiNDMiCi0KLURFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKLSAgICAgICAgICAgZmlsZTovL25hbWVkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYmluZDkgXAotICAgICAgICAgICBmaWxlOi8vaW5pdC5kLWFkZC1zdXBwb3J0LWZvci1yZWFkLW9ubHktcm9vdGZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0ZTY2MzI4NGIxN2FlZTBkZjFjZTZmMjQ4YjEzN2Q3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3YmJjZDJiZDdiMWQzMmY1YmE0YjMwZDVkYmU4YTM5YmNlMjAwMDc5MDQ4MDczZDFlMGQwNTBmZGY0N2U2OWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45KFwuXGQrKSsoLVBcZCspKikvIgotCi0KLUVOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKLUVYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLWxpYnRvb2wgLS1lbmFibGUtdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZW5hYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIFwKLSAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBweXRob24zLWRpcgotCi1leHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKLQotIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKLUZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tbGlicyIKLUZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9Lyouc28qIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKLQkjIGJ5ICJtYWtlIGluc3RhbGwiOgotCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAotCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gIiR7RH0ke2JpbmRpcn0vbnNsb29rdXAiCi0Jcm0gIiR7RH0ke21hbmRpcn0vbWFuMS9uc2xvb2t1cC4xIgotCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0Jcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCi0JaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCi0Jc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzCi0KLQkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLQkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgotCWZpCi0KLSAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vaXNjLyoucHljCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCi0JIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNGEyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNC5iYgpAQCAtMCwwICsxLDEzNyBAQAorU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiSVNDICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT02YmE3YzlmZTBjODg4YTk0M2M3OWM5M2U2ZGU3NDRmYiIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCB6bGliIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmFtZWQtbHdyZXNkLVYtYW5kLXN0YXJ0LWxvZy1oaWRlLWJ1aWxkLW9wdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTU3NDAucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWI0ODM0ZDc4ZjMwY2RiNzk2Y2U0MzcyNjIyNzJhMzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk1MDcwYjAzMWY4NjlmODkzOTY1NmI1YTVkMTFiMTIxMjExOTY3ZjE1ZjZhZmVhZmE4OTVkZjc0NTI3OTYxNyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkoXC5cZCspKygtUFxkKykqKS8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2JpbmQ5LWNvbmZpZyAke1BOfToke2JpbmRpcn0vaXNjLWNvbmZpZy5zaCIKKworIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKK1BBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSAtLXdpdGgtcHl0aG9uLWluc3RhbGwtZGlyPSR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgorCitFTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCitFWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyAtLXdpdGgtZWRkc2E9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG1kYj1ubyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICIKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUgZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQorCisjIGRoY3AgbmVlZHMgLmxhIHNvIGtlZXAgdGhlbQorUkVNT1ZFX0xJQlRPT0xfTEEgPSAiMCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKKwkjIGJ5ICJtYWtlIGluc3RhbGwiOgorCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAorCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisKKwlybSAiJHtEfSR7YmluZGlyfS9uc2xvb2t1cCIKKwlybSAiJHtEfSR7bWFuZGlyfS9tYW4xL25zbG9va3VwLjEiCisJcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisJaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKKwlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnIFwKKwkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlIFwKKwkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAorCQkke0R9JHtzYmluZGlyfS9kbnNzZWMta2V5bWdyCisJZmkKKworCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCisJZmkKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKKwkiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWcgJHtiaW5kaXJ9L21kaWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCitGSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8qLnNvKiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyoubGEiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtYmluZCcsICcnLCBkKX0iCitGSUxFU19weXRob24zLWJpbmQgPSAiJHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCisgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9kbnNzZWMta2V5bWdyICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSREVQRU5EU19weXRob24zLWJpbmQgPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtcGx5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCmluZGV4IGFlMmE4MzMuLjlkOTczOWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKQEAgLTQyLDYgKzQyLDcgQEAKIFBBQ0tBR0VDT05GSUdbdGhyZWFkc10gPSAiLS1lbmFibGUtdGhyZWFkcywtLWRpc2FibGUtdGhyZWFkcyIKIFBBQ0tBR0VDT05GSUdbZGVwcmVjYXRlZF0gPSAiLS1lbmFibGUtZGVwcmVjYXRlZCwtLWRpc2FibGUtZGVwcmVjYXRlZCIKIFBBQ0tBR0VDT05GSUdbbWVzaF0gPSAiLS1lbmFibGUtbWVzaCwtLWRpc2FibGUtbWVzaCwganNvbi1jIgorUEFDS0FHRUNPTkZJR1tidHBjbGllbnRdID0gIi0tZW5hYmxlLWJ0cGNsaWVudCwtLWRpc2FibGUtYnRwY2xpZW50LCBlbGwiCiAKIFNSQ19VUkkgPSAiXAogICAgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvYmx1ZXRvb3RoL2JsdWV6LSR7UFZ9LnRhci54eiBcCkBAIC01MCw2ICs1MSw3IEBACiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS10ZXN0LWdhdHQtRml4LWh1bmctaXNzdWUucGF0Y2ggXAogIgogUyA9ICIke1dPUktESVJ9L2JsdWV6LSR7UFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gKaW5kZXggMmZkZTdiYy4uZGE3MTQwOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaApAQCAtMSwzICsxLDQgQEAKK0Zyb20gOTljY2RiZTE1NTAyOGM0Yzc4OTgwM2E0MjkwNzI2NzViODdkMGMzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEdpb3Zhbm5pIENhbXBhZ25hIDxnY2FtcGFnbmEtY05VZGxSb3RGTW5OTHhqVGVuTGV0d0BwdWJsaWMuZ21hbmUub3JnPgogRGF0ZTogU2F0LCAxMiBPY3QgMjAxMyAxNzo0NToyNSArMDIwMAogU3ViamVjdDogW1BBVENIXSBBbGxvdyB1c2luZyBvYmV4ZCB3aXRob3V0IHN5c3RlbWQgaW4gdGhlIHVzZXIgc2Vzc2lvbgpAQCAtMTQsMTkgKzE1LDE4IEBACiBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5saW51eC5ibHVlei5rZXJuZWwvMzg3MjUvZm9jdXM9Mzg4NDMKIAogU2lnbmVkLW9mZi1ieTogSmF2aWVyIFZpZ3VlcmEgPGphdmllci52aWd1ZXJhQGRpZ2kuY29tPgorCiAtLS0KLSBNYWtlZmlsZS5vYmV4ZCAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlICAgIHwgNCAtLS0tCi0gb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW4gfCA0ICsrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UKLSBjcmVhdGUgbW9kZSAxMDA2NDQgb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW4KKyBNYWtlZmlsZS5vYmV4ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBvYmV4ZC9zcmMve29yZy5ibHVlei5vYmV4LnNlcnZpY2UgPT4gb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbn0gfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgcmVuYW1lIG9iZXhkL3NyYy97b3JnLmJsdWV6Lm9iZXguc2VydmljZSA9PiBvcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmlufSAoNzYlKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUub2JleGQgYi9NYWtlZmlsZS5vYmV4ZAotaW5kZXggMmUzM2NiYzcyZjJiLi5kNWQ4NThjODU3YjQgMTAwNjQ0CitpbmRleCBjNDYyNjkyLi4wMzI1ZjY2IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUub2JleGQKICsrKyBiL01ha2VmaWxlLm9iZXhkCi1AQCAtMiwxMiArMiwxMiBAQAorQEAgLTEsMTIgKzEsMTIgQEAKICBpZiBTWVNURU1ECiAgc3lzdGVtZHVzZXJ1bml0ZGlyID0gQFNZU1RFTURfVVNFUlVOSVRESVJACiAgc3lzdGVtZHVzZXJ1bml0X0RBVEEgPSBvYmV4ZC9zcmMvb2JleC5zZXJ2aWNlCkBAIC0zOSwyNSArMzksMTggQEAKIC1FWFRSQV9ESVNUICs9IG9iZXhkL3NyYy9vYmV4LnNlcnZpY2UuaW4gb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UKICtFWFRSQV9ESVNUICs9IG9iZXhkL3NyYy9vYmV4LnNlcnZpY2UuaW4gb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW4KICAKLSBvYmV4X3BsdWdpbmRpciA9ICQobGliZGlyKS9vYmV4L3BsdWdpbnMKKyBpZiBPQkVYCiAgCi1kaWZmIC0tZ2l0IGEvb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UgYi9vYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBhNTM4MDg4ODQ1NTQuLjAwMDAwMDAwMDAwMAorZGlmZiAtLWdpdCBhL29iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlIGIvb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW4KK3NpbWlsYXJpdHkgaW5kZXggNzYlCityZW5hbWUgZnJvbSBvYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZQorcmVuYW1lIHRvIG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluCitpbmRleCBhNTM4MDg4Li45YzgxNWYyIDEwMDY0NAogLS0tIGEvb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UKLSsrKyAvZGV2L251bGwKLUBAIC0xLDQgKzAsMCBAQAotLVtELUJVUyBTZXJ2aWNlXQotLU5hbWU9b3JnLmJsdWV6Lm9iZXgKLS1FeGVjPS9iaW4vZmFsc2UKLS1TeXN0ZW1kU2VydmljZT1kYnVzLW9yZy5ibHVlei5vYmV4LnNlcnZpY2UKLWRpZmYgLS1naXQgYS9vYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbiBiL29iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi45YzgxNWYyNDZiNzcKLS0tLSAvZGV2L251bGwKICsrKyBiL29iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluCi1AQCAtMCwwICsxLDQgQEAKLStbRC1CVVMgU2VydmljZV0KLStOYW1lPW9yZy5ibHVlei5vYmV4CitAQCAtMSw0ICsxLDQgQEAKKyBbRC1CVVMgU2VydmljZV0KKyBOYW1lPW9yZy5ibHVlei5vYmV4CistRXhlYz0vYmluL2ZhbHNlCiArRXhlYz1AbGliZXhlY2RpckAvb2JleGQKLStTeXN0ZW1kU2VydmljZT1kYnVzLW9yZy5ibHVlei5vYmV4LnNlcnZpY2UKKyBTeXN0ZW1kU2VydmljZT1kYnVzLW9yZy5ibHVlei5vYmV4LnNlcnZpY2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10ZXN0LWdhdHQtRml4LWh1bmctaXNzdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwYjZhNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNjFlNzQxNjU0Y2MyZWIxNjdiY2EyMTJhM2JiMmJhOGYzYmEyODBjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI0IEF1ZyAyMDE4IDEyOjA0OjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3QtZ2F0dDogRml4IGh1bmcgaXNzdWUKKworVGhlIGJlbG93IHRlc3QgaGFuZ3MgaW5maW5pdGVseQorJCB1bml0L3Rlc3QtZ2F0dCAtcCAgL3JvYnVzdG5lc3MvdW5rb3duLXJlcXVlc3QgLWQKKy9yb2J1c3RuZXNzL3Vua293bi1yZXF1ZXN0IC0gaW5pdAorL3JvYnVzdG5lc3MvdW5rb3duLXJlcXVlc3QgLSBzZXR1cAorL3JvYnVzdG5lc3MvdW5rb3duLXJlcXVlc3QgLSBzZXR1cCBjb21wbGV0ZQorL3JvYnVzdG5lc3MvdW5rb3duLXJlcXVlc3QgLSBydW4KKyAgR0FUVDogPCAwMiAxNyAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgIGJ0X2dhdHRfc2VydmVyOk1UVSBleGNoYW5nZSBjb21wbGV0ZSwgd2l0aCBNVFU6IDIzCisgIEdBVFQ6ID4gMDMgMDAgMDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICBQRFU6ID0gMDMgMDAgMDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICBHQVRUOiA8IGJmIDAwCisKK0FjdHVhbGx5LCB0aGUgL3JvYnVzdG5lc3MvdW5rb3duLXJlcXVlc3QgdGVzdCBkb2VzCitubyBhY3Rpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL21hcmMuaW5mby8/bD1saW51eC1ibHVldG9vdGgmbT0xNTM1MDg4ODE4MDQ2MzUmdz0yXQorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgdW5pdC90ZXN0LWdhdHQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1nYXR0LmMgYi91bml0L3Rlc3QtZ2F0dC5jCitpbmRleCBjN2UyOGY4Li5iNTczNzNiIDEwMDY0NAorLS0tIGEvdW5pdC90ZXN0LWdhdHQuYworKysrIGIvdW5pdC90ZXN0LWdhdHQuYworQEAgLTQ0NjMsNyArNDQ2Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJdGVzdF9zZXJ2ZXIsIHNlcnZpY2VfZGJfMSwgTlVMTCwKKyAJCQlyYXdfcGR1KDB4MDMsIDB4MDAsIDB4MDIpLAorIAkJCXJhd19wZHUoMHhiZiwgMHgwMCksCistCQkJcmF3X3BkdSgweDAxLCAweGJmLCAweDAwLCAweDAwLCAweDA2KSk7CisrCQkJcmF3X3BkdSgpKTsKKyAKKyAJZGVmaW5lX3Rlc3Rfc2VydmVyKCIvcm9idXN0bmVzcy91bmtvd24tY29tbWFuZCIsCisgCQkJdGVzdF9zZXJ2ZXIsIHNlcnZpY2VfZGJfMSwgTlVMTCwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0YTZjZDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzljODUzZjNjOTA1NjRjYWJlYzc1YWIzNTEwNmMzNTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjlhODcyMzA3MmVmNjZiYWU3ZWMzMDFjNzc0OTAyZWJjYjQ0NGM5YzViMTQ5YjVhMTk5ZTYwYTFiYTk3MGU5MCIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKLSAgICBlbXVsYXRvci9idHZpcnQgXAotICAgIGVtdWxhdG9yL2IxZWUgXAotICAgIGVtdWxhdG9yL2hmcCBcCi0gICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCi0gICAgdG9vbHMvM2RzcCBcCi0gICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAotICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAotICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCi0gICAgdG9vbHMvc2NvLXRlc3RlciBcCi0gICAgdG9vbHMvc21wLXRlc3RlciBcCi0gICAgdG9vbHMvaGNpLXRlc3RlciBcCi0gICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCi0gICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAotICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19CVCA/PSAiIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRpbmZvIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvYm5lcHRlc3QgXAotICAgIHRvb2xzL21jYXB0ZXN0IFwKLSAgICB0b29scy9jbHRlc3QgXAotICAgIHRvb2xzL29vYnRlc3QgXAotICAgIHRvb2xzL2FkdnRlc3QgXAotICAgIHRvb2xzL3NlcTJic2VxIFwKLSAgICB0b29scy9ub2tmdyBcCi0gICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKLSAgICB0b29scy9lZGR5c3RvbmUgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKLSAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCi0gICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKLSAgICBwcm9maWxlcy9pYXAvaWFwZCBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjUwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjI3MTQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYgpAQCAtMCwwICsxLDcwIEBACityZXF1aXJlIGJsdWV6NS5pbmMKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImJsdWV6NSIKKworU1JDX1VSSVttZDVzdW1dID0gIjhlMzVjNjdjODFhNTVkM2FkNGM5ZjIyMjgwZGFlMTc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZmNhYWUxOGJiYjYxNTVmMTU5MWJlOGMyNDg5OGRjMTJmMDYyMDc1YTQwYjUzOGI3NDViZmQ0Nzc0ODE5MTEiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAorICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAorICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAorICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAorICAgIHRvb2xzL29iZXhjdGwgXAorICAgIHRvb2xzL2J0bWdtdCBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCisgICAgZW11bGF0b3IvYnR2aXJ0IFwKKyAgICBlbXVsYXRvci9iMWVlIFwKKyAgICBlbXVsYXRvci9oZnAgXAorICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAorICAgIHRvb2xzLzNkc3AgXAorICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKKyAgICB0b29scy9nYXAtdGVzdGVyIFwKKyAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAorICAgIHRvb2xzL3Njby10ZXN0ZXIgXAorICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAorICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAorICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAorICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKKyAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfQlQgPz0gIiBcCisgICAgdG9vbHMvYmRhZGRyIFwKKyAgICB0b29scy9hdmluZm8gXAorICAgIHRvb2xzL2F2dGVzdCBcCisgICAgdG9vbHMvc2NvdGVzdCBcCisgICAgdG9vbHMvYW1wdGVzdCBcCisgICAgdG9vbHMvaHdkYiBcCisgICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKKyAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAorICAgIHRvb2xzL2J0aW5mbyBcCisgICAgdG9vbHMvYnRzbm9vcCBcCisgICAgdG9vbHMvYnRwcm94eSBcCisgICAgdG9vbHMvYnRpb3Rlc3QgXAorICAgIHRvb2xzL2JuZXB0ZXN0IFwKKyAgICB0b29scy9tY2FwdGVzdCBcCisgICAgdG9vbHMvY2x0ZXN0IFwKKyAgICB0b29scy9vb2J0ZXN0IFwKKyAgICB0b29scy9hZHZ0ZXN0IFwKKyAgICB0b29scy9zZXEyYnNlcSBcCisgICAgdG9vbHMvbm9rZncgXAorICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCisgICAgdG9vbHMvZWRkeXN0b25lIFwKKyAgICB0b29scy9pYmVhY29uIFwKKyAgICB0b29scy9idGdhdHQtY2xpZW50IFwKKyAgICB0b29scy9idGdhdHQtc2VydmVyIFwKKyAgICB0b29scy90ZXN0LXJ1bm5lciBcCisgICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAorICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCisgICAgcHJvZmlsZXMvaWFwL2lhcGQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2J0cGNsaWVudCcsICd0b29scy9idHBjbGllbnQnLCAnJywgZCl9IFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaAppbmRleCAwNTkzNDI3Li42MzljY2ZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItcmVzb2x2ZS1tdXNsLWRvZXMtbm90LWltcGxlbWVudC1yZXNfbmluaXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoCkBAIC0xNyw2ICsxNywxNCBAQAogaW5kZXggNWNmN2E5YS4uM2FkOGU3MCAxMDA2NDQKIC0tLSBhL2d3ZWIvZ3Jlc29sdi5jCiArKysgYi9nd2ViL2dyZXNvbHYuYworQEAgLTM2LDYgKzM2LDcgQEAKKyAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKysjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKyAjaW5jbHVkZSAiZ3Jlc29sdi5oIgorIAogQEAgLTg3NSw4ICs4NzUsNiBAQCBHUmVzb2x2ICpnX3Jlc29sdl9uZXcoaW50IGluZGV4KQogIAlyZXNvbHYtPmluZGV4ID0gaW5kZXg7CiAgCXJlc29sdi0+bmFtZXNlcnZlcl9saXN0ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vaW5jbHVkZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL2luY2x1ZGVzLnBhdGNoCmluZGV4IDU1Y2IxODcuLjlmNzM5NWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vaW5jbHVkZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi9pbmNsdWRlcy5wYXRjaApAQCAtMSw2ICsxLDYgQEAKIEZpeCB2YXJpb3VzIGlzc3VlcyB3aGljaCBjYXVzZSBwcm9ibGVtcyB1bmRlciBtdXNsLgogCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbYmQxMzI2YmE3ZDY4ZGYzOGM1Y2NhYWZkMjQwM2E1ZmIzMGJkNDUyYl0KIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKIEZyb20gNjMwNTE2YmNjMDIzM2IwNDdmNjU2NjVjMDAzMjAxYmE2ZTc3NDUzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKQEAgLTMwMCwyMCArMzAwLDE0IEBACiBpbmRleCA4YTUxYTlmLi5kNTUwMjdjIDEwMDY0NAogLS0tIGEvZ3dlYi9ncmVzb2x2LmMKICsrKyBiL2d3ZWIvZ3Jlc29sdi5jCi1AQCAtMjMsMTEgKzIzLDEzIEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+CitAQCAtMjksNiArMjksNyBAQAogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1ZGUgPHJlc29sdi5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxuZXRkYi5oPgogZGlmZiAtLWdpdCBhL3BsdWdpbnMvd2lmaS5jIGIvcGx1Z2lucy93aWZpLmMKIGluZGV4IDlkNTY2NzEuLjE0ODEzMWQgMTAwNjQ0CiAtLS0gYS9wbHVnaW5zL3dpZmkuYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwppbmRleCA0NGU5NDZjLi4zZTY1ZTVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwpAQCAtOCw5ICs4LDkgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy8iCiAKIExJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9NDttZDU9YzVjNjRkNjk2MTA3Zjg0YjU2ZmUzMzdkMTRkYTE3NTMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO2JlZ2lubGluZT00O21kNT0wMDRhNGRiNTBhMWUyMDk3MmU5MjRhODYxODc0N2MwMSIKIAotREVQRU5EUyA9ICJvcGVuc3NsIgorREVQRU5EUyA9ICJvcGVuc3NsIGJpbmQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Z0cC5pc2Mub3JnL2lzYy9kaGNwLyR7UFZ9L2RoY3AtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2luaXQtcmVsYXkgZmlsZTovL2RlZmF1bHQtcmVsYXkgXApAQCAtMjQsNyArMjQsNyBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImZ0cDovL2Z0cC5pc2Mub3JnL2lzYy9kaGNwLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrXC4oXGQrPykpLyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCB1c2VyYWRkIHVwZGF0ZS1yYy5kCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZCB1c2VyYWRkIHVwZGF0ZS1yYy5kCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyIgogVVNFUkFERF9QQVJBTV8ke1BOfS1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuLyR7QlBOfSAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwICR7QlBOfSIKQEAgLTUwLDggKzUwLDE1IEBACiAgICAgICAgICAgICAgICAgLS13aXRoLWNsaTYtbGVhc2UtZmlsZT0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kaGNwL2RoY2xpZW50Ni5sZWFzZXMgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBhcmFub2lhIC0tZGlzYWJsZS1zdGF0aWMgXAogICAgICAgICAgICAgICAgIC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20gXAorICAgICAgICAgICAgICAgIC0td2l0aC1saWJiaW5kPSR7U1RBR0lOR19ESVJfSE9TVH0gXAorCQktLWVuYWJsZS1saWJ0b29sIFwKICAgICAgICAgICAgICAgICIKIAorI0VuYWJsZSBzaGFyZWQgbGlicyBwZXIgZGhjcCBSRUFETUUKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwljcCBjb25maWd1cmUuYWMrbHQgY29uZmlndXJlLmFjCit9CisKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdApAQCAtOTUsOCArMTAyLDcgQEAKIFBBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfSIKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCiBSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiIgotCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWJkaGNwY3RsLnNvLjAqICR7bGliZGlyfS9saWJvbWFwaS5zby4wKiIKK0ZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9L2xpYmRoY3BjdGwuc28uMCogJHtsaWJkaXJ9L2xpYm9tYXBpLnNvLjAqICR7bGliZGlyfS9saWJkaGNwLnNvLjAqIgogCiBGSUxFU18ke1BOfS1zZXJ2ZXIgPSAiJHtzYmluZGlyfS9kaGNwZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9kaGNwLXNlcnZlciIKIFJSRUNPTU1FTkRTXyR7UE59LXNlcnZlciA9ICJkaGNwLXNlcnZlci1jb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoCmluZGV4IGU1YjNjZjkuLmQxYjU3ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoCkBAIC0xMSwxMSArMTEsMTEgQEAKICBpbmNsdWRlcy9zaXRlLmggfCAzICsrLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3NpdGUuaCBiL2luY2x1ZGVzL3NpdGUuaAotaW5kZXggYjJmN2ZkNy4uMjgwZmJiOSAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL3NpdGUuaAotKysrIGIvaW5jbHVkZXMvc2l0ZS5oCi1AQCAtMTQ5LDcgKzE0OSw4IEBACitJbmRleDogZGhjcC00LjQuMS9pbmNsdWRlcy9zaXRlLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvaW5jbHVkZXMvc2l0ZS5oCisrKysgZGhjcC00LjQuMS9pbmNsdWRlcy9zaXRlLmgKK0BAIC0xNDgsNyArMTQ4LDggQEAKICAvKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0aGUgZGhjcGQuY29uZiBmaWxlIHRvIGdvIHNvbWV3aGVyZSBvdGhlciB0aGFuCiAgICAgdGhlIGRlZmF1bHQgbG9jYXRpb24uICAgQnkgZGVmYXVsdCwgaXQgZ29lcyBpbiAvZXRjL2RoY3BkLmNvbmYuICovCiAgCkBAIC0yNSw2ICsyNSwzIEBACiAgCiAgLyogTmV0d29yayBBUEkgZGVmaW5pdGlvbnMuICAgWW91IGRvIG5vdCBuZWVkIHRvIGNob29zZSBvbmUgb2YgdGhlc2UgLSBpZgogICAgIHlvdSBkb24ndCBjaG9vc2UsIG9uZSB3aWxsIGJlIGNob3NlbiBmb3IgeW91IGluIHlvdXIgc3lzdGVtJ3MgY29uZmlnCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoCmluZGV4IDgxMGM3YjYuLjViMzU5MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKQEAgLTE4LDExICsxOCwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2RmYTM1Mi4uNDRmYjU3ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTkxLDYgKzU5MSwxMCBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbdm9pZCBmb28oKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOworSW5kZXg6IGRoY3AtNC40LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGRoY3AtNC40LjEvY29uZmlndXJlLmFjCitAQCAtNjEyLDYgKzYxMiwxMCBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sCiAgIyBMb29rIGZvciBvcHRpb25hbCBoZWFkZXJzLgogIEFDX0NIRUNLX0hFQURFUlMoc3lzL3NvY2tldC5oIG5ldC9pZl9kbC5oIG5ldC9pZjYuaCByZWdleC5oKQogIApAQCAtMzMsNiArMzMsMyBAQAogICMgU29sYXJpcyBuZWVkcyBzb21lIGxpYnJhcmllcyBmb3IgZnVuY3Rpb25zCiAgQUNfU0VBUkNIX0xJQlMoc29ja2V0LCBbc29ja2V0XSkKICBBQ19TRUFSQ0hfTElCUyhpbmV0X250b2EsIFtuc2xdKQotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKaW5kZXggN2QxZDg2Ny4uYjcxYzkzZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTE5LDgyICsxOSw3NSBAQAogIHNlcnZlci9NYWtlZmlsZS5hbSAgfCAyICstCiAgNiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KLWluZGV4IDJjYjgzZDguLjQ3MzBiYjMgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQotQEAgLTcsMTEgKzcsMTEgQEAgU1VCRElSUyA9IC4gdGVzdHMKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKLS0JICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInCi0rCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY2xpZW50LmNvbmYuZXhhbXBsZQotIHNiaW5fUFJPR1JBTVMgPSBkaGNsaWVudAotLWRoY2xpZW50X1NPVVJDRVMgPSBjbHBhcnNlLmMgZGhjbGllbnQuYyBkaGM2LmMgXAotK2RoY2xpZW50X1NPVVJDRVMgPSAkKHNyY2RpcikvY2xwYXJzZS5jICQoc3JjZGlyKS9kaGNsaWVudC5jICQoc3JjZGlyKS9kaGM2LmMgXAotIAkJICAgc2NyaXB0cy9ic2RvcyBzY3JpcHRzL2ZyZWVic2Qgc2NyaXB0cy9saW51eCBzY3JpcHRzL21hY29zIFwKLSAJCSAgIHNjcmlwdHMvbmV0YnNkIHNjcmlwdHMvbmV4dHN0ZXAgc2NyaXB0cy9vcGVuYnNkIFwKLSAJCSAgIHNjcmlwdHMvc29sYXJpcyBzY3JpcHRzL29wZW53cnQKLWRpZmYgLS1naXQgYS9jb21tb24vTWFrZWZpbGUuYW0gYi9jb21tb24vTWFrZWZpbGUuYW0KLWluZGV4IDExM2FlZTguLjBmMjRmYmIgMTAwNjQ0Ci0tLS0gYS9jb21tb24vTWFrZWZpbGUuYW0KLSsrKyBiL2NvbW1vbi9NYWtlZmlsZS5hbQorSW5kZXg6IGRoY3AtNC40LjEvY29tbW9uL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2NvbW1vbi9NYWtlZmlsZS5hbQorKysrIGRoY3AtNC40LjEvY29tbW9uL01ha2VmaWxlLmFtCiBAQCAtMSw0ICsxLDUgQEAKIC1BTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwogK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwogKwogIEFNX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCiAgCi0gbm9pbnN0X0xJQlJBUklFUyA9IGxpYmRoY3AuYQotZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCi1pbmRleCBjZWIwZGUxLi5iYThkZDhiIDEwMDY0NAotLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQotKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotQEAgLTEsNSArMSw3IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKyBsaWJfTElCUkFSSUVTID0gbGliZGhjcC5hCitJbmRleDogZGhjcC00LjQuMS9kaGNwY3RsL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2RoY3BjdGwvTWFrZWZpbGUuYW0KKysrKyBkaGNwLTQuNC4xL2RoY3BjdGwvTWFrZWZpbGUuYW0KK0BAIC0zLDYgKzMsOCBAQCBCSU5ETElCRE5TRElSPUBCSU5ETElCRE5TRElSQAorIEJJTkRMSUJJU0NDRkdESVI9QEJJTkRMSUJJU0NDRkdESVJACisgQklORExJQklTQ0RJUj1AQklORExJQklTQ0RJUkAKICAKICtBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKICsKICBiaW5fUFJPR1JBTVMgPSBvbXNoZWxsCiAgbGliX0xJQlJBUklFUyA9IGxpYmRoY3BjdGwuYQogIG5vaW5zdF9QUk9HUkFNUyA9IGNsdGVzdAotZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQotaW5kZXggNDQ2YTU5NC4uZGQxYWZhMCAxMDA2NDQKLS0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQotKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDUgQEAKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi0gbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKLSBub2luc3RfUFJPR1JBTVMgPSBzdnRlc3QKLWRpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCi1pbmRleCAzMDYwZWNhLi42ZDY1MmY2IDEwMDY0NAotLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KLSsrKyBiL3JlbGF5L01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKLStBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQotIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCi1kaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCi1pbmRleCA1NGZlZWRmLi4zOTkwYjljIDEwMDY0NAotLS0tIGEvc2VydmVyL01ha2VmaWxlLmFtCi0rKysgYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KLUBAIC02LDcgKzYsNyBAQCBTVUJESVJTID0gLiB0ZXN0cwotIAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCitJbmRleDogZGhjcC00LjQuMS9zZXJ2ZXIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvc2VydmVyL01ha2VmaWxlLmFtCisrKysgZGhjcC00LjQuMS9zZXJ2ZXIvTWFrZWZpbGUuYW0KK0BAIC00LDcgKzQsNyBAQAorICMgcHJvZHVjdGlvbiBjb2RlLiBTYWRseSwgd2UgYXJlIG5vdCB0aGVyZSB5ZXQuCisgU1VCRElSUyA9IC4gdGVzdHMKICAKIC1BTV9DUFBGTEFHUyA9IC1JLi4gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKICtBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKICAKICBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY3BkLmNvbmYuZXhhbXBsZQogIHNiaW5fUFJPR1JBTVMgPSBkaGNwZAotLS0gCi0xLjguMy4xCi0KK0luZGV4OiBkaGNwLTQuNC4xL2NsaWVudC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBkaGNwLTQuNC4xL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTUsNyArNSw3IEBACisgU1VCRElSUyA9IC4gdGVzdHMKKyAKKyBBTV9DUFBGTEFHUyA9IC1EQ0xJRU5UX1BBVEg9JyJQQVRIPSQoc2JpbmRpcik6L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4iJworLUFNX0NQUEZMQUdTICs9IC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJworK0FNX0NQUEZMQUdTICs9IC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY2xpZW50LmNvbmYuZXhhbXBsZQorIHNiaW5fUFJPR1JBTVMgPSBkaGNsaWVudAorSW5kZXg6IGRoY3AtNC40LjEvb21hcGlwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGRoY3AtNC40LjEvb21hcGlwL01ha2VmaWxlLmFtCitAQCAtMiw2ICsyLDcgQEAgQklORExJQklSU0RJUj1AQklORExJQklSU0RJUkAKKyBCSU5ETElCRE5TRElSPUBCSU5ETElCRE5TRElSQAorIEJJTkRMSUJJU0NDRkdESVI9QEJJTkRMSUJJU0NDRkdESVJACisgQklORExJQklTQ0RJUj1AQklORExJQklTQ0RJUkAKKytBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCisgbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0CitJbmRleDogZGhjcC00LjQuMS9yZWxheS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9yZWxheS9NYWtlZmlsZS5hbQorKysrIGRoY3AtNC40LjEvcmVsYXkvTWFrZWZpbGUuYW0KK0BAIC0xLDQgKzEsNCBAQAorLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKKytBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQorIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2gKaW5kZXggYzYyYjI4My4uNmVmNzBjYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNi1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaApAQCAtMTIsMTEgKzEyLDExIEBACiAgaW5jbHVkZXMvc2l0ZS5oIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCi1pbmRleCAyODBmYmI5Li5lNmMyOTcyIDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCi0rKysgYi9pbmNsdWRlcy9zaXRlLmgKLUBAIC0yOTYsNyArMjk2LDcgQEAKK0luZGV4OiBkaGNwLTQuNC4xL2luY2x1ZGVzL3NpdGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9pbmNsdWRlcy9zaXRlLmgKKysrKyBkaGNwLTQuNC4xL2luY2x1ZGVzL3NpdGUuaAorQEAgLTI5NSw3ICsyOTUsNyBAQAogICAgIHNpdHVhdGlvbnMuICBXZSBwbGFuIHRvIHJldmlzaXQgdGhpcyBmZWF0dXJlIGFuZCBtYXkKICAgICBtYWtlIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBjaGFuZ2VzIGluY2x1ZGluZyB0aGUKICAgICByZW1vdmFsIG9mIHRoaXMgZGVmaW5lLiAgVXNlIGF0IHlvdXIgb3duIHJpc2suICAqLwpAQCAtMjUsNiArMjUsMyBAQAogIAogIC8qIEluY2x1ZGUgb2xkIGVycm9yIGNvZGVzLiAgVGhpcyBpcyBwcm92aWRlZCBpbiBjYXNlIHlvdQogICAgIGFyZSBidWlsZGluZyBhbiBleHRlcm5hbCBwcm9ncmFtIHNpbWlsYXIgdG8gb21zaGVsbCBmb3IKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoCmluZGV4IDQzYzI2ZWEuLmZlYjA3NTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoCkBAIC0xNSwxMyArMTUsMTMgQEAKICBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ0ZmI1N2UuLjhlOWY1MDkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYxMSw2ICs2MTEsMTcgQEAgQUNfQ0hFQ0tfRlVOQ1Moc3RybGNhdCkKLSAjIEZvciBIUC9VWCB3ZSBuZWVkIC1saXB2NiBmb3IgaWZfbmFtZXRvaW5kZXgsIHBlcmhhcHMgb3RoZXJzLgotIEFDX1NFQVJDSF9MSUJTKGlmX25hbWV0b2luZGV4LCBbaXB2Nl0pCitJbmRleDogZGhjcC00LjQuMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgZGhjcC00LjQuMS9jb25maWd1cmUuYWMKK0BAIC02NDIsNiArNjQyLDE3IEBAIGlmIHRlc3QgIiRoYXZlX25hbm9zbGVlcCIgPSAicnQiOyB0aGVuCisgCUxJQlM9Ii1scnQgJExJQlMiCisgZmkKICAKICtBQ19BUkdfV0lUSChsaWJ4bWwyLAogKwlBU19IRUxQX1NUUklORyhbLS13aXRoLWxpYnhtbDJdLCBbbGluayBhZ2FpbnN0IGxpYnhtbDIuIHRoaXMgaXMgbmVlZGVkIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggeG1sMiBzdXBwb3J0IGVuYWJsZWRdKSwKQEAgLTM3LDYgKzM3LDI2IEBACiAgIyBjaGVjayBmb3IgL2Rldi9yYW5kb20gKGRlY2xhcmVzIEhBVkVfREVWX1JBTkRPTSkKICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHJhbmRvbSBkZXZpY2UpCiAgQUNfQVJHX1dJVEgocmFuZG9tZGV2LAotLS0gCi0xLjguMy4xCi0KK0luZGV4OiBkaGNwLTQuNC4xL2NvbmZpZ3VyZS5hYytsdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9jb25maWd1cmUuYWMrbHQKKysrKyBkaGNwLTQuNC4xL2NvbmZpZ3VyZS5hYytsdAorQEAgLTkwOSw2ICs5MDksMTggQEAgZWxpZiB0ZXN0ICIkd2FudF9saWJ0b29sIiA9ICJ5ZXMiIC1hICIkdQorIGZpCisgQU1fQ09ORElUSU9OQUwoSU5TVEFMTF9CSU5ELCB0ZXN0ICIkd2FudF9pbnN0YWxsX2JpbmQiID0gInllcyIpCisgCisrQUNfQVJHX1dJVEgobGlieG1sMiwKKysJQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJ4bWwyXSwgW2xpbmsgYWdhaW5zdCBsaWJ4bWwyLiB0aGlzIGlzIG5lZWRlZCBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHhtbDIgc3VwcG9ydCBlbmFibGVkXSksCisrCXdpdGhfbGlieG1sMj0iJHdpdGh2YWwiLCB3aXRoX2xpYnhtbDI9Im5vIikKKysKKytpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhubzsgdGhlbgorKwlBQ19TRUFSQ0hfTElCUyh4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50LCBbeG1sMl0sLAorKwkJW2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geGF1dG87IHRoZW4KKysJCQlBQ19NU0dfRkFJTFVSRShbKioqIENhbm5vdCBmaW5kIHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQgd2l0aCAtbHhtbDIgYW5kIGxpYnhtbDIgd2FzIHJlcXVlc3RlZF0pCisrCQlmaV0pCisrZmkKKysKKysKKyAjIE9wZW5MREFQIHN1cHBvcnQuCisgQUNfQVJHX1dJVEgobGRhcCwKKyAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sZGFwXSxbZW5hYmxlIE9wZW5MREFQIHN1cHBvcnQgaW4gZGhjcGQgKGRlZmF1bHQgaXMgbm8pXSksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDgtdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA4LXR3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaAppbmRleCBhMjBiNWY5Li4wMDZkMThhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDgtdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKQEAgLTIwLDEwICsyMCwxMCBAQAogIHNlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KICA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGRoY3AtNC4zLjYvY2xpZW50L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL2NsaWVudC9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvY2xpZW50L01ha2VmaWxlLmFtCitkaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlLmFtIGIvY2xpZW50L01ha2VmaWxlLmFtCitpbmRleCA0NzMwYmIzLi44NGQ4MTMxIDEwMDY0NAorLS0tIGEvY2xpZW50L01ha2VmaWxlLmFtCisrKysgYi9jbGllbnQvTWFrZWZpbGUuYW0KIEBAIC00LDcgKzQsNyBAQAogICMgcHJvZHVjdGlvbiBjb2RlLiBTYWRseSwgd2UgYXJlIG5vdCB0aGVyZSB5ZXQuCiAgU1VCRElSUyA9IC4gdGVzdHMKQEAgLTMzLDEwICszMywxMCBAQAogIAogIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKICAJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotSW5kZXg6IGRoY3AtNC4zLjYvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCitkaWZmIC0tZ2l0IGEvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA1MDMxZDBjLi5hOGRmZDI2IDEwMDY0NAorLS0tIGEvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC0xLDYgKzEsNiBAQAogIFNVQkRJUlMgPSAuCiAgCkBAIC00NSwxMCArNDUsMTAgQEAKICAKICBBTV9DUFBGTEFHUyA9ICQoQVRGX0NGTEFHUykgLURVTklUX1RFU1QgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCiAgQU1fQ1BQRkxBR1MgKz0gLUlAQklORERJUkAvaW5jbHVkZSAtSSQodG9wX3NyY2RpcikKLUluZGV4OiBkaGNwLTQuMy42L2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggZjZhNDNlNC4uMmY5OGQyMiAxMDA2NDQKKy0tLSBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDYgQEAKICBTVUJESVJTID0gLgogIApAQCAtNTcsNDAgKzU3LDQwIEBACiAgCiAgQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwogIAotSW5kZXg6IGRoY3AtNC4zLjYvZGhjcGN0bC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9kaGNwY3RsL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9kaGNwY3RsL01ha2VmaWxlLmFtCitkaWZmIC0tZ2l0IGEvZGhjcGN0bC9NYWtlZmlsZS5hbSBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK2luZGV4IGJhOGRkOGIuLjliMjQ4NmUgMTAwNjQ0CistLS0gYS9kaGNwY3RsL01ha2VmaWxlLmFtCisrKysgYi9kaGNwY3RsL01ha2VmaWxlLmFtCiBAQCAtMSw0ICsxLDQgQEAKIC1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgogK0JJTkRMSUJESVIgPSBAQklORERJUkAKICAKICBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKICAKLUluZGV4OiBkaGNwLTQuMy42L29tYXBpcC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9vbWFwaXAvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L29tYXBpcC9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQoraW5kZXggZGQxYWZhMC4uZTRhODU5OSAxMDA2NDQKKy0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCiBAQCAtMSw0ICsxLDQgQEAKIC1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgogK0JJTkRMSUJESVIgPSBAQklORERJUkAKICBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwogIAotIGxpYl9MVExJQlJBUklFUyA9IGxpYm9tYXBpLmxhCi1JbmRleDogZGhjcC00LjMuNi9yZWxheS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9yZWxheS9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvcmVsYXkvTWFrZWZpbGUuYW0KKyBsaWJfTElCUkFSSUVTID0gbGlib21hcGkuYQorZGlmZiAtLWdpdCBhL3JlbGF5L01ha2VmaWxlLmFtIGIvcmVsYXkvTWFrZWZpbGUuYW0KK2luZGV4IDZkNjUyZjYuLmIzYmY1NzggMTAwNjQ0CistLS0gYS9yZWxheS9NYWtlZmlsZS5hbQorKysrIGIvcmVsYXkvTWFrZWZpbGUuYW0KIEBAIC0xLDQgKzEsNCBAQAogLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCiArQklORExJQkRJUiA9IEBCSU5ERElSQAogIAogIEFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCiAgCi1JbmRleDogZGhjcC00LjMuNi9zZXJ2ZXIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvc2VydmVyL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK2luZGV4IDM5OTBiOWMuLmI1ZDhjMmQgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQogQEAgLTQsNyArNCw3IEBACiAgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KICBTVUJESVJTID0gLiB0ZXN0cwpAQCAtMTAwLDEwICsxMDAsMTAgQEAKICAKICBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKICAKLUluZGV4OiBkaGNwLTQuMy42L3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggYTg3YzVlNy4uOTgyMTA4MSAxMDA2NDQKKy0tLSBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDYgQEAKICBTVUJESVJTID0gLgogIApAQCAtMTEyLDMgKzExMiw2IEBACiAgCiAgQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1EVU5JVF9URVNUIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwogIEFNX0NQUEZMQUdTICs9IC1JQEJJTkRESVJAL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OThiMWZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMC1idWlsZC1zaGFyZWQtbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBACi1Gcm9tIDc2YzM3MGE5MjllNWFiNWRiYzgxYzJmYmNmNGU1MGY0ZmJjMDhjZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6NTM6MzcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMV0gYnVpbGQgc2hhcmVkIGxpYnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVBvcnQgcGF0Y2hlcyBmcm9tIEZlZG9yYSB0byBidWlsZCBzaGFyZWQgbGlicyByYXRoZXIgdGhhbiBzdGF0aWMgbGlicy4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLVJlYmFzZSB0byA0LjMuNgotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjbGllbnQvTWFrZWZpbGUuYW0gICAgICAgfCAgNCArKy0tCi0gY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIHwgMTMgKysrKystLS0tLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICB8IDEyICsrLS0tLS0tLS0tLQotIGRoY3BjdGwvTWFrZWZpbGUuYW0gICAgICB8IDE0ICsrKysrKy0tLS0tLS0tCi0gb21hcGlwL01ha2VmaWxlLmFtICAgICAgIHwgIDcgKysrLS0tLQotIHJlbGF5L01ha2VmaWxlLmFtICAgICAgICB8ICA1ICsrLS0tCi0gc2VydmVyL01ha2VmaWxlLmFtICAgICAgIHwgIDcgKysrLS0tLQotIHNlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSB8ICA3ICsrKy0tLS0KLSA4IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZGhjcC00LjMuNi9jbGllbnQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvY2xpZW50L01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9jbGllbnQvTWFrZWZpbGUuYW0KLUBAIC0xNSw3ICsxNSw3IEBAIGRoY2xpZW50X1NPVVJDRVMgPSAkKHNyY2RpcikvY2xwYXJzZS5jICQKLSAJCSAgIHNjcmlwdHMvYnNkb3Mgc2NyaXB0cy9mcmVlYnNkIHNjcmlwdHMvbGludXggc2NyaXB0cy9tYWNvcyBcCi0gCQkgICBzY3JpcHRzL25ldGJzZCBzY3JpcHRzL25leHRzdGVwIHNjcmlwdHMvb3BlbmJzZCBcCi0gCQkgICBzY3JpcHRzL3NvbGFyaXMgc2NyaXB0cy9vcGVud3J0Ci0tZGhjbGllbnRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAotLQkJICQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rZGhjbGllbnRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCi0rCQkgIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYwotIG1hbl9NQU5TID0gZGhjbGllbnQuOCBkaGNsaWVudC1zY3JpcHQuOCBkaGNsaWVudC5jb25mLjUgZGhjbGllbnQubGVhc2VzLjUKLSBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKLUluZGV4OiBkaGNwLTQuMy42L2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTE1LDI2ICsxNSwyMyBAQCBBVEZfVEVTVFMgKz0gYWxsb2NfdW5pdHRlc3QgZG5zX3VuaXR0ZXN0Ci0gYWxsb2NfdW5pdHRlc3RfU09VUkNFUyA9IHRlc3RfYWxsb2MuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYwotIGFsbG9jX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKLSBhbGxvY191bml0dGVzdF9MREFERCArPSAuLi9saWJkaGNwLmEgIFwKLS0JLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCi0tCSQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAgJChCSU5ETElCRElSKS9saWJpc2MuYQotKwkuLi8uLi9vbWFwaXAvbGlib21hcGkubGEgLUwkKEJJTkRMSUJESVIpIC1sZG5zIC1saXNjY2ZnIC1saXNjCi0gCi0gZG5zX3VuaXR0ZXN0X1NPVVJDRVMgPSBkbnNfdW5pdHRlc3QuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYwotIGRuc191bml0dGVzdF9MREFERCA9ICQoQVRGX0xERkxBR1MpCi0gZG5zX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAotLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKLS0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rCS4uLy4uL29tYXBpcC9saWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxkbnMgLWxpc2NjZmcgLWxpc2MKLSAKLSBtaXNjX3VuaXR0ZXN0X1NPVVJDRVMgPSBtaXNjX3VuaXR0ZXN0LmMgJCh0b3Bfc3JjZGlyKS90ZXN0cy90X2FwaV9kaGNwLmMKLSBtaXNjX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKLSBtaXNjX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAotLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKLS0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rCS4uLy4uL29tYXBpcC9saWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxkbnMgLWxpc2NjZmcgLWxpc2MKLSAKLSBuc19uYW1lX3VuaXR0ZXN0X1NPVVJDRVMgPSBuc19uYW1lX3Rlc3QuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYwotIG5zX25hbWVfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQotIG5zX25hbWVfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCi0tCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAotLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKLSsJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgLUwkKEJJTkRMSUJESVIpIFwKLSsJLWxkbnMgLWxpc2NjZmcgLWxpc2MKLSAKLSBjaGVjazogJChBVEZfVEVTVFMpCi0gCUBpZiB0ZXN0ICQodG9wX3NyY2RpcikgIT0gJHt0b3BfYnVpbGRkaXJ9OyB0aGVuIFwKLUluZGV4OiBkaGNwLTQuMy42L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9jb25maWd1cmUuYWMKLSsrKyBkaGNwLTQuMy42L2NvbmZpZ3VyZS5hYwotQEAgLTQ3LDE2ICs0Nyw4IEBAIEFNX0NPTkRJVElPTkFMKENST1NTX0NPTVBJTElORywgdGVzdCAiJGMKLSAjIFVzZSB0aGlzIHRvIGRlZmluZSBfR05VX1NPVVJDRSB0byBwdWxsIGluIHRoZSBJUHY2IEFkdmFuY2VkIFNvY2tldCBBUEkuCi0gQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0gCi0tQUNfUFJPR19SQU5MSUIKLS0KLS1BQ19QQVRIX1BST0coQVIsIGFyKQotLUFDX1NVQlNUKEFSKQotLQotLWlmIHRlc3QgIlgkQVIiID0gIlgiOyB0aGVuCi0tCUFDX01TR19FUlJPUihbCi0tYXIgcHJvZ3JhbSBub3QgZm91bmQuICBQbGVhc2UgZml4IHlvdXIgUEFUSCB0byBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgaW4KLS13aGljaCBhciByZXNpZGVzLCBvciBzZXQgQVIgaW4gdGhlIGVudmlyb25tZW50IHdpdGggdGhlIGZ1bGwgcGF0aCB0byBhci5dKQotLWZpCi0rIyBVc2UgbGlidG9vbCB0byBzaW1wbGlmeSBidWlsZGluZyBvZiBzaGFyZWQgbGlicmFyaWVzCi0rQUNfUFJPR19MSUJUT09MCi0gCi0gQUNfQ09ORklHX0hFQURFUlMoW2luY2x1ZGVzL2NvbmZpZy5oXSkKLSAKLUluZGV4OiBkaGNwLTQuMy42L2RoY3BjdGwvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvZGhjcGN0bC9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvZGhjcGN0bC9NYWtlZmlsZS5hbQotQEAgLTMsMTkgKzMsMTcgQEAgQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKLSAKLSBiaW5fUFJPR1JBTVMgPSBvbXNoZWxsCi0tbGliX0xJQlJBUklFUyA9IGxpYmRoY3BjdGwuYQotK2xpYl9MVExJQlJBUklFUyA9IGxpYmRoY3BjdGwubGEKLSBub2luc3RfUFJPR1JBTVMgPSBjbHRlc3QKLSBtYW5fTUFOUyA9IG9tc2hlbGwuMSBkaGNwY3RsLjMKLSBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKLSAKLSBvbXNoZWxsX1NPVVJDRVMgPSBvbXNoZWxsLmMKLS1vbXNoZWxsX0xEQUREID0gbGliZGhjcGN0bC5hIC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgXAotLQkgICAgICAgICQoQklORExJQkRJUikvbGliaXJzLmEgJChCSU5ETElCRElSKS9saWJkbnMuYSBcCi0tCSAgICAgICAgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rb21zaGVsbF9MREFERCA9IGxpYmRoY3BjdGwubGEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAotKwkgICAgICAgIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYwotIAotLWxpYmRoY3BjdGxfYV9TT1VSQ0VTID0gZGhjcGN0bC5jIGNhbGxiYWNrLmMgcmVtb3RlLmMKLStsaWJkaGNwY3RsX2xhX1NPVVJDRVMgPSBkaGNwY3RsLmMgY2FsbGJhY2suYyByZW1vdGUuYwotIAotIGNsdGVzdF9TT1VSQ0VTID0gY2x0ZXN0LmMKLS1jbHRlc3RfTERBREQgPSBsaWJkaGNwY3RsLmEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCi0tCSAgICAgICAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAotLSAgICAgICAgICAgICAgICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQotK2NsdGVzdF9MREFERCA9IGxpYmRoY3BjdGwubGEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAotKwkgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCi1JbmRleDogZGhjcC00LjMuNi9vbWFwaXAvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvb21hcGlwL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9vbWFwaXAvTWFrZWZpbGUuYW0KLUBAIC0xLDEwICsxLDEwIEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotLWxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCi0rbGliX0xUTElCUkFSSUVTID0gbGlib21hcGkubGEKLSBub2luc3RfUFJPR1JBTVMgPSBzdnRlc3QKLSAKLS1saWJvbWFwaV9hX1NPVVJDRVMgPSBwcm90b2NvbC5jIGJ1ZmZlci5jIGFsbG9jLmMgcmVzdWx0LmMgY29ubmVjdGlvbi5jIFwKLStsaWJvbWFwaV9sYV9TT1VSQ0VTID0gcHJvdG9jb2wuYyBidWZmZXIuYyBhbGxvYy5jIHJlc3VsdC5jIGNvbm5lY3Rpb24uYyBcCi0gCQkgICAgIGVycndhcm4uYyBsaXN0ZW5lci5jIGRpc3BhdGNoLmMgZ2VuZXJpYy5jIHN1cHBvcnQuYyBcCi0gCQkgICAgIGhhbmRsZS5jIG1lc3NhZ2UuYyBjb252ZXJ0LmMgaGFzaC5jIGF1dGguYyBpbmV0X2FkZHIuYyBcCi0gCQkgICAgIGFycmF5LmMgdHJhY2UuYyB0b2lzYy5jIGlzY3ByaW50LmMgaXNjbGliLmMKLUBAIC0xMyw2ICsxMyw1IEBAIG1hbl9NQU5TID0gb21hcGkuMwotIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQotIAotIHN2dGVzdF9TT1VSQ0VTID0gdGVzdC5jCi0tc3Z0ZXN0X0xEQUREID0gbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAotLQkJJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rc3Z0ZXN0X0xEQUREID0gbGlib21hcGkubGEgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCi0gCi1JbmRleDogZGhjcC00LjMuNi9yZWxheS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9yZWxheS9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvcmVsYXkvTWFrZWZpbGUuYW0KLUBAIC00LDkgKzQsOCBAQCBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0Ci0gCi0gc2Jpbl9QUk9HUkFNUyA9IGRoY3JlbGF5Ci0gZGhjcmVsYXlfU09VUkNFUyA9IGRoY3JlbGF5LmMKLS1kaGNyZWxheV9MREFERCA9IC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgXAotLQkJICQoQklORExJQkRJUikvbGliaXJzLmEgJChCSU5ETElCRElSKS9saWJkbnMuYSBcCi0tCQkgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rZGhjcmVsYXlfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCi0rCQkgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCi0gbWFuX01BTlMgPSBkaGNyZWxheS44Ci0gRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCi0gCi1JbmRleDogZGhjcC00LjMuNi9zZXJ2ZXIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvc2VydmVyL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9zZXJ2ZXIvTWFrZWZpbGUuYW0KLUBAIC0xNSwxMCArMTUsOSBAQCBkaGNwZF9TT1VSQ0VTID0gZGhjcGQuYyBkaGNwLmMgYm9vdHAuYyBjCi0gCQlkaGNwdjYuYyBtZGI2LmMgbGRhcC5jIGxkYXBfY2FzYS5jIGxlYXNlY2hhaW4uYyBsZGFwX2tyYl9oZWxwZXIuYwotIAotIGRoY3BkX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCi0tZGhjcGRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKLS0JICAgICAgLi4vZGhjcGN0bC9saWJkaGNwY3RsLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCi0tCSAgICAgICQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSBcCi0tCSAgICAgICQoQklORExJQkRJUikvbGliaXNjLmEgJChMREFQX0xJQlMpCi0rZGhjcGRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCi0rCSAgICAgIC4uL2RoY3BjdGwvbGliZGhjcGN0bC5sYSAtTCQoQklORExJQkRJUikgXAotKwkgICAgICAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYyAkKExEQVBfTElCUykKLSAKLSBtYW5fTUFOUyA9IGRoY3BkLjggZGhjcGQuY29uZi41IGRoY3BkLmxlYXNlcy41Ci0gRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCi1JbmRleDogZGhjcC00LjMuNi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xOSwxMCArMTksOSBAQCBESENQU1JDID0gLi4vZGhjcC5jIC4uL2Jvb3RwLmMgLi4vY29uZnBhCi0gICAgICAgICAgIC4uL2RkbnMuYyAuLi9kaGNwbGVhc2VxdWVyeS5jIC4uL2RoY3B2Ni5jIC4uL21kYjYuYyAgICAgICAgXAotICAgICAgICAgICAuLi9sZGFwLmMgLi4vbGRhcF9jYXNhLmMgLi4vZGhjcGQuYyAuLi9sZWFzZWNoYWluLmMKLSAKLS1ESENQTElCUyA9ICQodG9wX2J1aWxkZGlyKS9jb21tb24vbGliZGhjcC5hICQodG9wX2J1aWxkZGlyKS9vbWFwaXAvbGlib21hcGkuYSBcCi0tICAgICAgICAgICQodG9wX2J1aWxkZGlyKS9kaGNwY3RsL2xpYmRoY3BjdGwuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKLS0JICAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgXAotLQkgICQoQklORExJQkRJUikvbGliaXNjLmEKLStESENQTElCUyA9ICQodG9wX2J1aWxkZGlyKS9jb21tb24vbGliZGhjcC5hICQodG9wX2J1aWxkZGlyKS9vbWFwaXAvbGlib21hcGkubGEgXAotKyAgICAgICAgICAkKHRvcF9idWlsZGRpcikvZGhjcGN0bC9saWJkaGNwY3RsLmxhIFwKLSsgICAgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCi0gCi0gQVRGX1RFU1RTID0KLSBpZiBIQVZFX0FURgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiYjQ2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLUZyb20gMzc3MjVmM2UyMmVkYjUwZTBjYTJkMWZmZjk3MTMyMWE1YTRkNTExMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMDM6MDU6MTMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xMV0gTW92ZWQgdGhlIGNhbGwgdG8gaXNjX2FwcF9jdHhzdGFydCgpIHRvIG5vdCBnZXQgc2lnbmFsCi0gYmxvY2sgYnkgYWxsIHRocmVhZHMKLQotU2lnbmVkLW9mZi1ieTogRnJhbmNpcyBEdXBvbnQgPGZkdXBvbnRAaXNjLm9yZz4KLQotSW4gaHR0cHM6Ly9zb3VyY2UuaXNjLm9yZy9naXQvYmluZDkuZ2l0LCBzaW5jZSB0aGUgZm9sbG93aW5nCi1jb21taXQgYXBwbGllZDoKLS4uLgotY29tbWl0IGI5OWJmYTE4NGJjOTM3NTQyMWI1ZGY5MTVlZWE3ZGZhYzZhNjhhOTkKLUF1dGhvcjogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+Ci1EYXRlOiAgIFdlZCBBcHIgMTAgMTM6NDk6NTcgMjAxMyAtMDcwMAotCi0gICAgW21hc3Rlcl0gdW5pZnkgaW50ZXJuYWwgYW5kIGV4cG9ydCBsaWJyYXJpZXMKLQotICAgIDM1NTAuICAgICAgIFtmdW5jXSAgICAgICAgICBVbmlmaWVkIHRoZSBpbnRlcm5hbCBhbmQgZXhwb3J0IHZlcnNpb25zIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgQklORCBsaWJyYXJpZXMsIGFsbG93aW5nIGV4dGVybmFsIGNsaWVudHMgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBsaWJyYXJpZXMgYXMgQklORC4gW1JUICMzMzEzMV0KLS4uLgotKGdpdCBzaG93IGI5OWJmYTE4NGJjOTM3NTQyMWI1ZGY5MTVlZWE3ZGZhYzZhNjhhOTkgLS0gLi9saWIvaXNjL3VuaXgvYXBwLmMpCi0KLUluIHRoaXMgY29tbWl0LCBpZiBiaW5kOSBlbmFibGUgdGhyZWFkcyhJU0NfUExBVEZPUk1fVVNFVEhSRUFEUyksCi1pdCBibG9ja3Mgc2lnbmFsIFNJR0hVUCwgU0lHSU5UIGFuZCBTSUdURVJNIGluIGlzY19fYXBwX2N0eHN0YXJ0LgotV2hpY2ggY2F1c2VkIGRoY2xpZW50L2RoY3BkIGNvdWxkIG5vdCBiZSBzdG9wcGVkIGJ5IFNJR1RFUk0uCi0KLUl0IGNhdXNlZCBzeXN0ZW1kJ3MgcmVib290IGh1bmcgd2hpY2ggc2VuZCBTSUdURVJNIGJ5IGRlZmF1bHQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNlLmlzYy5vcmcvZ2l0L2RoY3AuZ2l0XQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gb21hcGlwL2lzY2xpYi5jIHwgMjUgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL29tYXBpcC9pc2NsaWIuYyBiL29tYXBpcC9pc2NsaWIuYwotaW5kZXggY2U4NjQ5MC4uNmEwNDM0NSAxMDA2NDQKLS0tLSBhL29tYXBpcC9pc2NsaWIuYwotKysrIGIvb21hcGlwL2lzY2xpYi5jCi1AQCAtMTg1LDE2ICsxODUsNiBAQCBkaGNwX2NvbnRleHRfY3JlYXRlKGludCBmbGFncywKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlnb3RvIGNsZWFudXA7Ci0gCi0tCQlyZXN1bHQgPSBpc2NfYXBwX2N0eHN0YXJ0KGRoY3BfZ2JsX2N0eC5hY3R4KTsKLS0JCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLS0JCQlyZXR1cm4gKHJlc3VsdCk7Ci0tCQlkaGNwX2dibF9jdHguYWN0eF9zdGFydGVkID0gSVNDX1RSVUU7Ci0tCi0tCQkvKiBOb3QgYWxsIE9TcyBzdXBwb3J0IHN1cHByZXNzaW5nIFNJR1BJUEUgdGhyb3VnaCBzb2NrZXQKLS0JCSAqIG9wdGlvbnMsIHNvIHNldCB0aGUgc2lnYWwgYWN0aW9uIHRvIGJlIGlnbm9yZS4gIFRoaXMgYWxsb3dzCi0tCQkgKiBicm9rZW4gY29ubmVjdGlvbnMgdG8gZmFpbCBncmFjZWZ1bGx5IHdpdGggRVBJUEUgb24gd3JpdGVzICovCi0tCQloYW5kbGVfc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotLQotIAkJcmVzdWx0ID0gaXNjX3Rhc2ttZ3JfY3JlYXRlaW5jdHgoZGhjcF9nYmxfY3R4Lm1jdHgsCi0gCQkJCQkJIGRoY3BfZ2JsX2N0eC5hY3R4LAotIAkJCQkJCSAxLCAwLAotQEAgLTIxNyw2ICsyMDcsMjEgQEAgZGhjcF9jb250ZXh0X2NyZWF0ZShpbnQgZmxhZ3MsCi0gCQlyZXN1bHQgPSBpc2NfdGFza19jcmVhdGUoZGhjcF9nYmxfY3R4LnRhc2ttZ3IsIDAsICZkaGNwX2dibF9jdHgudGFzayk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJZ290byBjbGVhbnVwOwotKwotKwkJcmVzdWx0ID0gaXNjX2FwcF9jdHhzdGFydChkaGNwX2dibF9jdHguYWN0eCk7Ci0rCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0rCQkJcmV0dXJuIChyZXN1bHQpOwotKwkJZGhjcF9nYmxfY3R4LmFjdHhfc3RhcnRlZCA9IElTQ19UUlVFOwotKwotKwkJLyogTm90IGFsbCBPU3Mgc3VwcG9ydCBzdXBwcmVzc2luZyBTSUdQSVBFIHRocm91Z2ggc29ja2V0Ci0rCQkgKiBvcHRpb25zLCBzbyBzZXQgdGhlIHNpZ2FsIGFjdGlvbiB0byBiZSBpZ25vcmUuICBUaGlzIGFsbG93cwotKwkJICogYnJva2VuIGNvbm5lY3Rpb25zIHRvIGZhaWwgZ3JhY2VmdWxseSB3aXRoIEVQSVBFIG9uIHdyaXRlcyAqLwotKwkJaGFuZGxlX3NpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLSsKLSsJCS8qIFJlc2V0IGhhbmRsZXJzIGluc3RhbGxlZCBieSBpc2NfYXBwX2N0eHN0YXJ0KCkKLSsJCSAqIHRvIGRlZmF1bHQgZm9yIGNvbnRyb2wtYyBhbmQga2lsbCAqLwotKwkJaGFuZGxlX3NpZ25hbChTSUdJTlQsIFNJR19ERkwpOwotKwkJaGFuZGxlX3NpZ25hbChTSUdURVJNLCBTSUdfREZMKTsKLSAJfQotIAotICNpZiBkZWZpbmVkIChOU1VQREFURSkKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoCmluZGV4IDJkM2FmOWQuLjM5YmE2NWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoCkBAIC0xOSwxMSArMTksMTEgQEAKICBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGJmZTk4OGEuLmYwNDU5ZTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYwOCw3ICs2MDgsNyBAQCBBQ19BUkdfV0lUSChsaWJ4bWwyLAorSW5kZXg6IGRoY3AtNC40LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGRoY3AtNC40LjEvY29uZmlndXJlLmFjCitAQCAtNjQ3LDcgKzY0Nyw3IEBAIEFDX0FSR19XSVRIKGxpYnhtbDIsCiAgCXdpdGhfbGlieG1sMj0iJHdpdGh2YWwiLCB3aXRoX2xpYnhtbDI9Im5vIikKICAKICBpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhubzsgdGhlbgpAQCAtMzIsNiArMzIsMyBAQAogIAkJW2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geGF1dG87IHRoZW4KICAJCQlBQ19NU0dfRkFJTFVSRShbKioqIENhbm5vdCBmaW5kIHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQgd2l0aCAtbHhtbDIgYW5kIGxpYnhtbDIgd2FzIHJlcXVlc3RlZF0pCiAgCQlmaV0pCi0tLSAKLTIuMTEuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTMtZml4dXBfdXNlX2xpYmJpbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTMtZml4dXBfdXNlX2xpYmJpbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNlYzAxMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMy1maXh1cF91c2VfbGliYmluZC5wYXRjaApAQCAtMCwwICsxLDY0IEBACitsaWIgYW5kIGluY2x1ZGUgcGF0aCBpcyBoYXJkY29kZWQgZm9yIHVzZV9saWJiaW5kIAorCit1c2UgbGliZGlyIGFuZCBpbmNsdWRlZGlyIHZhcnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCitJbmRleDogZGhjcC00LjQuMS9jb25maWd1cmUuYWMrbHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvY29uZmlndXJlLmFjK2x0CisrKysgZGhjcC00LjQuMS9jb25maWd1cmUuYWMrbHQKK0BAIC04MDEsMjIgKzgwMSwyMiBAQCBubykKKyAJaWYgdGVzdCAhIC1kICIkdXNlX2xpYmJpbmQiOyB0aGVuCisgCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGJpbmQgZGlyZWN0b3J5IGF0ICR1c2VfbGliYmluZF0pCisgCWZpCistCWlmIHRlc3QgISAtZCAiJHVzZV9saWJiaW5kL2luY2x1ZGUiIC1vIFwKKy0JICAgICAgICAhIC1mICIkdXNlX2xpYmJpbmQvaW5jbHVkZS9pc2MvYnVmZmVyLmgiCisrCWlmIHRlc3QgISAtZCAiJHVzZV9saWJiaW5kLyRpbmNsdWRlZGlyIiAtbyBcCisrCSAgICAgICAgISAtZiAiJHVzZV9saWJiaW5kLyRpbmNsdWRlZGlyL2lzYy9idWZmZXIuaCIKKyAJdGhlbgorLQkJQUNfTVNHX0VSUk9SKFtDYW5ub3QgZmluZCBiaW5kIGluY2x1ZGVzIGF0ICR1c2VfbGliYmluZC9pbmNsdWRlXSkKKysJCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgYmluZCBpbmNsdWRlcyBhdCAkdXNlX2xpYmJpbmQvJGluY2x1ZGVkaXJdKQorIAlmaQorLQlpZiB0ZXN0CSEgLWQgIiR1c2VfbGliYmluZC9saWIiIC1vIFwKKy0JICAgICAgICBcKCAhIC1mICIkdXNlX2xpYmJpbmQvbGliL2xpYmlzYy5hIiAtYSBcCistCQkgICAhIC1mCSIkdXNlX2xpYmJpbmQvbGliL2xpYmlzYy5sYSIgXCkKKysJaWYgdGVzdAkhIC1kICIkdXNlX2xpYmJpbmQvJGxpYmRpciIgLW8gXAorKwkgICAgICAgIFwoICEgLWYgIiR1c2VfbGliYmluZC8kbGliZGlyL2xpYmlzYy5hIiAtYSBcCisrCQkgICAhIC1mCSIkdXNlX2xpYmJpbmQvJGxpYmRpci9saWJpc2MubGEiIFwpCisgCXRoZW4KKy0JCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgYmluZCBsaWJyYXJpZXMgYXQgJHVzZV9saWJiaW5kL2xpYl0pCisrCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGJpbmQgbGlicmFyaWVzIGF0ICR1c2VfbGliYmluZC8kbGliZGlyXSkKKyAJZmkKKyAJQklORERJUj0iJHVzZV9saWJiaW5kIgorLQlCSU5ETElCSVJTRElSPSIkQklORERJUi9saWIiCistCUJJTkRMSUJETlNESVI9IiRCSU5ERElSL2xpYiIKKy0JQklORExJQklTQ0NGR0RJUj0iJEJJTkRESVIvbGliIgorLQlCSU5ETElCSVNDRElSPSIkQklORERJUi9saWIiCQorKwlCSU5ETElCSVJTRElSPSIkQklORERJUi8kbGliZGlyIgorKwlCSU5ETElCRE5TRElSPSIkQklORERJUi8kbGliZGlyIgorKwlCSU5ETElCSVNDQ0ZHRElSPSIkQklORERJUi8kbGliZGlyIgorKwlCSU5ETElCSVNDRElSPSIkQklORERJUi8kbGliZGlyIgorIAlESVNUQ0hFQ0tfTElCQklORF9DT05GSUdVUkVfRkxBRz0iLS13aXRoLWxpYmJpbmQ9JHVzZV9saWJiaW5kIgorIAk7OworIGVzYWMKK0BAIC04NTYsMTQgKzg1NiwxNCBAQCBBQ19BUkdfRU5BQkxFKGxpYnRvb2wsCisgCisgaWYgdGVzdCAiJHVzZV9saWJiaW5kIiAhPSAibm8iOyB0aGVuCisgCWlmIHRlc3QgIiR3YW50X2xpYnRvb2wiID0gInllcyIgLWEgXAorLQkgICAgICAgICEgLWYgIiR1c2VfbGliYmluZC9saWIvbGliaXNjLmxhIgorKwkgICAgICAgICEgLWYgIiR1c2VfbGliYmluZC8kbGliZGlyL2xpYmlzYy5sYSIKKyAJdGhlbgorLQkJQUNfTVNHX0VSUk9SKFtDYW5ub3QgZmluZCBkeW5hbWljIGxpYnJhcmllcyBhdCAkdXNlX2xpYmJpbmQvbGliXSkKKysJCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgZHluYW1pYyBsaWJyYXJpZXMgYXQgJHVzZV9saWJiaW5kLyRsaWJkaXJdKQorIAlmaQorIAlpZiB0ZXN0ICIkd2FudF9saWJ0b29sIiA9ICJubyIgLWEgXAorLQkgICAgICAgICEgLWYgIiR1c2VfbGliYmluZC9saWIvbGliaXNjLmEiCisrCSAgICAgICAgISAtZiAiJHVzZV9saWJiaW5kLyRsaWJkaXIvbGliaXNjLmEiCisgCXRoZW4KKy0JCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgc3RhdGljIGxpYnJhcmllcyBhdCAkdXNlX2xpYmJpbmQvbGliXSkKKysJCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgc3RhdGljIGxpYnJhcmllcyBhdCAkdXNlX2xpYmJpbmQvJGxpYmRpcl0pCisgCWZpCisgZmkKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTctMzE0NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTctMzE0NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIyNjg4Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL0NWRS0yMDE3LTMxNDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIDhjZmRlZGVlMzY5YzI2ZDI4NjliNmVjNGE2NDQ2MGI1ZjVhMzA5MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgTWFya3dhbGRlciA8dG1hcmtAaXNjLm9yZz4KLURhdGU6IFRodSwgNyBEZWMgMjAxNyAxMTozOTozMCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBbdjRfM10gUGx1Z3MgYSBzb2NrZXQgZGVzY3JpcHRvciBsZWFrIGluIE9NQVBJCi0KLSAgICAgICAgTWVyZ2VzIGluIHJ0NDY3NjcuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL3NvdXJjZS5pc2Mub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWRoY3AuZ2l0O2E9Y29tbWl0ZGlmZjtoPTUwOTdiYzA1NTlmNTkyNjgzZmFhYzFmNjdiZjM1MGUxYmRkZjZlZDRdCi0KLUNWRTogQ1ZFLTIwMTctMzE0NAotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gUkVMTk9URVMgICAgICAgICB8IDcgKysrKysrKwotIG9tYXBpcC9idWZmZXIuYyAgfCA5ICsrKysrKysrKwotIG9tYXBpcC9tZXNzYWdlLmMgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9SRUxOT1RFUyBiL1JFTE5PVEVTCi1pbmRleCBkZDQwYWFmLi4zNzQxYjgwIDEwMDY0NAotLS0tIGEvUkVMTk9URVMKLSsrKyBiL1JFTE5PVEVTCi1AQCAtNjYsNiArNjYsMTMgQEAgV2Ugd2VsY29tZSBjb21tZW50cyBmcm9tIERIQ1AgdXNlcnMsIGFib3V0IHRoaXMgb3IgYW55dGhpbmcgZWxzZSB3ZSBkby4KLSBFbWFpbCBWaWNreSBSaXNrLCBQcm9kdWN0IE1hbmFnZXIgYXQgdmlja3lAaXNjLm9yZyBvciBkaXNjdXNzIG9uIAotIGRoY3AtdXNlcnNAbGlzdHMuaXNjLm9yZy4KLSAKLSstIFBsdWdnZWQgYSBzb2NrZXQgZGVzY3JpcHRvciBsZWFrIGluIE9NQVBJLCB0aGF0IGNhbiBvY2N1ciB3aGVuIHRoZXJlIGlzCi0rICBkYXRhIHBlbmRpbmcgdG8gYmUgd3JpdHRlbiB0byBhbiBPTUFQSSBjb25uZWN0aW9uLCB3aGVuIHRoZSBjb25uZWN0aW9uCi0rICBpcyBjbG9zZWQgYnkgdGhlIHJlYWRlci4gIFRoYW5rcyB0byBQYXZlbCBaaHVrb3YgYXQgUmVkSGF0IGZvciBicmluZ2luZwotKyAgdGhpcyBpc3N1ZSB0byBvdXIgYXR0ZW50aW9uIGFuZCB3aG9zZSBwYXRjaCBoZWxwZWQgZ3VpZGUgdXMgaW4gdGhlIHJpZ2h0Ci0rICBkaXJlY3Rpb24uCi0rICBbSVNjLUJ1Z3MgIzQ2NzY3XQotKwotIAkJCUNoYW5nZXMgc2luY2UgNC4zLjZiMQotIAotIC0gTm9uZQotZGlmZiAtLWdpdCBhL29tYXBpcC9idWZmZXIuYyBiL29tYXBpcC9idWZmZXIuYwotaW5kZXggZjdmZGMzMi4uODA5MDM0ZCAxMDA2NDQKLS0tLSBhL29tYXBpcC9idWZmZXIuYwotKysrIGIvb21hcGlwL2J1ZmZlci5jCi1AQCAtNTY2LDYgKzU2NiwxNSBAQCBpc2NfcmVzdWx0X3Qgb21hcGlfY29ubmVjdGlvbl93cml0ZXIgKG9tYXBpX29iamVjdF90ICpoKQotIAkJCW9tYXBpX2J1ZmZlcl9kZXJlZmVyZW5jZSAoJmJ1ZmZlciwgTURMKTsKLSAJCX0KLSAJfQotKwotKwkvKiBJZiB3ZSBoYWQgZGF0YSBsZWZ0IHRvIHdyaXRlIHdoZW4gd2UncmUgdG9sZCB0byBkaXNjb25uZWN0LAotKwkqIHdlIG5lZWQgcmVjYWxsIGRpc2Nvbm5lY3QsIG5vdyB0aGF0IHdlJ3JlIGRvbmUgd3JpdGluZy4KLSsJKiBTZWUgcnQ0Njc2Ny4gKi8KLSsJaWYgKGMtPm91dF9ieXRlcyA9PSAwICYmIGMtPnN0YXRlID09IG9tYXBpX2Nvbm5lY3Rpb25fZGlzY29ubmVjdGluZykgewotKwkJb21hcGlfZGlzY29ubmVjdCAoaCwgMSk7Ci0rCQlyZXR1cm4gSVNDX1JfU0hVVFRJTkdET1dOOwotKwl9Ci0rCi0gCXJldHVybiBJU0NfUl9TVUNDRVNTOwotIH0KLSAKLWRpZmYgLS1naXQgYS9vbWFwaXAvbWVzc2FnZS5jIGIvb21hcGlwL21lc3NhZ2UuYwotaW5kZXggNTljY2RjMi4uMjFiY2ZjMyAxMDA2NDQKLS0tLSBhL29tYXBpcC9tZXNzYWdlLmMKLSsrKyBiL29tYXBpcC9tZXNzYWdlLmMKLUBAIC0zMzksNyArMzM5LDcgQEAgaXNjX3Jlc3VsdF90IG9tYXBpX21lc3NhZ2VfdW5yZWdpc3RlciAob21hcGlfb2JqZWN0X3QgKm1vKQotIH0KLSAKLSAjaWZkZWYgREVCVUdfUFJPVE9DT0wKLS1zdGF0aWMgY29uc3QgY2hhciAqb21hcGlfbWVzc2FnZV9vcF9uYW1lKGludCBvcCkgewotK2NvbnN0IGNoYXIgKm9tYXBpX21lc3NhZ2Vfb3BfbmFtZShpbnQgb3ApIHsKLSAJc3dpdGNoIChvcCkgewotIAljYXNlIE9NQVBJX09QX09QRU46ICAgIHJldHVybiAiT01BUElfT1BfT1BFTiI7Ci0gCWNhc2UgT01BUElfT1BfUkVGUkVTSDogcmV0dXJuICJPTUFQSV9PUF9SRUZSRVNIIjsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMzA1NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgZGhjcC5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNi1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMzE0NC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotIyB1c2UgaW50ZXJuYWwgbGliaXNjIGxpYnJhcmllcyB3aGljaCBhcmUgYmFzZWQgb24gYmluZCA5LjkuMTEgLSB0aGVyZQotIyBpcyBhIGJ1ZyBpbiBiaW5kIDkuMTAueCAobm9ybWFsbHkgc3VwcGxpZWQgYnkgT0UpIHRoYXQgcHJldmVudHMKLSMgZGhjcGQvZGhjbGllbnQgZnJvbSBzaHV0dGluZyBkb3duIGNsZWFubHkgb24gc2lndGVybSBhbmQgZnJvbSBydW5uaW5nCi0jIGluIHRoZSBiYWNrZ3JvdW5kCi0jCi0jIFtodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ0XQotIwotIyByZW1vdmUgImV4dC1iaW5kIiBhbmQKLSMgYWxzbyBzZXQgUEFSQUxMRUxfTUFLRSA9ICIiIAotIyBbIFlvY3RvIDEyNzQ0IF0KLSMKLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2V4dC1iaW5kJywgJ2ZpbGU6Ly8wMDA4LXR3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaCcsICcnLCBkKX0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZmE2ZTliM2ViNzUzOWVhMDQ4NDIxYTgyYzY2OGFkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNDFlYWY2MzY0ZjEzNzdmZTA2NWQzNTY3MWQ5Y2Y4MmJiYmM4ZjIxMjA3ODE5YjJiOWYzM2Y2NTJhZWM2ZjFiIgotCi1QQUNLQUdFQ09ORklHID89ICJleHQtYmluZCIKLVBBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW2V4dC1iaW5kXSA9ICItLXdpdGgtbGliYmluZD0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRob3V0LWxpYmJpbmQsIGJpbmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTlhYmJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMS5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRoY3AuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjE4YzdmNGRjYmIwYTYzZGYyNTA5ODIxNmQ0N2IxZWRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhMjI1MDg5MjJhYjM2N2I0YWY0NjY0YTA0NzJkYzIyMGNjOTYwMzQ4MmNmM2MxNmQ5YWZmMTRmM2E3NmI2MDgiCisKK0xERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tiaW5kLWh0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY3BkNi5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjcGQ2LnNlcnZpY2UKaW5kZXggY2E5NmFiYi4uNTJhNjIyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjcGQ2LnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjcGQ2LnNlcnZpY2UKQEAgLTksNyArOSw3IEBACiBFbnZpcm9ubWVudEZpbGU9QFNZU0NPTkZESVJAL2RlZmF1bHQvZGhjcC1zZXJ2ZXIKIEVudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL3N5c2NvbmZpZy9kaGNwZDYKIEV4ZWNTdGFydFByZT1AYmFzZV9iaW5kaXJAL3RvdWNoIEBsb2NhbHN0YXRlZGlyQC9saWIvZGhjcC9kaGNwZDYubGVhc2VzCi1FeGVjU3RhcnQ9QFNCSU5ESVJAL2RoY3BkIC1mIC02IC1jZiBAU1lTQ09ORkRJUkAvZGhjcC9kaGNwZC5jb25mIC1wZiBAbG9jYWxzdGF0ZWRpckAvcnVuL2RoY3BkNi5waWQgJERIQ1BEQVJHUyAtcSAkSU5URVJGQUNFUworRXhlY1N0YXJ0PUBTQklORElSQC9kaGNwZCAtZiAtNiAtY2YgQFNZU0NPTkZESVJAL2RoY3AvZGhjcGQ2LmNvbmYgLXBmIEBsb2NhbHN0YXRlZGlyQC9ydW4vZGhjcGQ2LnBpZCAkREhDUERBUkdTIC1xICRJTlRFUkZBQ0VTCiAKIFtJbnN0YWxsXQogV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCmluZGV4IDRmYmZlYzYuLmIyODM1ODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwpAQCAtOSw3ICs5LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwL2lwLmM7YmVnaW5saW5lPTM7ZW5kbGluZT04O21kNT02ODlkNjkxZDA0MTBhNGI2NGQzODk5ZjhkNmUzMTgxNyIKIAotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgaXB0YWJsZXMgZWxmdXRpbHMiCitERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBpcHRhYmxlcyBlbGZ1dGlscyBsaWJjYXAiCiAKIGluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBiYXNoLWNvbXBsZXRpb24gcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkM2ZlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGlwcm91dGUyOiBkZS1iYXNoIHNjcmlwdHMKLQotZGUtYmFzaCB0aGVzZSB0d28gc2NyaXB0cyB0byBtYWtlIGlwcm91dGUyIG5vdCBkZXBlbmQgb24gYmFzaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGlwL2lmY2ZnIHwgMTUgKysrKysrKystLS0tLS0tCi0gaXAvcnRwciAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaXAvaWZjZmcgYi9pcC9pZmNmZwotaW5kZXggMzBhMmRjNC4uODY3N2IyZSAxMDA2NDQKLS0tLSBhL2lwL2lmY2ZnCi0rKysgYi9pcC9pZmNmZwotQEAgLTEsMTIgKzEsMTMgQEAKLS0jISAvYmluL2Jhc2gKLSsjISAvYmluL3NoCi0gCi0gQ2hlY2tGb3J3YXJkaW5nICgpIHsKLS0gIGxvY2FsIHNiYXNlIGZ3ZAotKyAgbG9jYWwgc2Jhc2UgZndkIGZvcndhcmRpbmcKLSAgIHNiYXNlPS9wcm9jL3N5cy9uZXQvaXB2NC9jb25mCi0gICBmd2Q9MAotICAgaWYgWyAtZCAkc2Jhc2UgXTsgdGhlbgotICAgICBmb3IgZGlyIGluICRzYmFzZS8qL2ZvcndhcmRpbmc7IGRvCi0tICAgICAgZndkPSRbJGZ3ZCArIGBjYXQgJGRpcmBdCi0rICAgICAgZm9yd2FyZGluZz1gY2F0ICRkaXJgCi0rICAgICAgZndkPSQoKCRmd2QrJGZvcndhcmRpbmcpKQotICAgICBkb25lCi0gICBlbHNlCi0gICAgIGZ3ZD0yCi1AQCAtMTI3LDEyICsxMjgsMTIgQEAgZmkKLSBhcnBpbmcgLXEgLUEgLWMgMSAtSSAkZGV2ICRpcGFkZHIKLSBub2FycD0kPwotICggc2xlZXAgMiA7Ci0tICBhcnBpbmcgLXEgLVUgLWMgMSAtSSAkZGV2ICRpcGFkZHIgKSA+JiAvZGV2L251bGwgPC9kZXYvbnVsbCAmCi0rICBhcnBpbmcgLXEgLVUgLWMgMSAtSSAkZGV2ICRpcGFkZHIgKSA+IC9kZXYvbnVsbCAyPiYxIDwvZGV2L251bGwgJgotIAotLWlwIHJvdXRlIGFkZCB1bnJlYWNoYWJsZSAyMjQuMC4wLjAvMjQgPiYgL2Rldi9udWxsCi0taXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDI1NS4yNTUuMjU1LjI1NSA+JiAvZGV2L251bGwKLStpcCByb3V0ZSBhZGQgdW5yZWFjaGFibGUgMjI0LjAuMC4wLzI0ID4gL2Rldi9udWxsIDI+JjEKLStpcCByb3V0ZSBhZGQgdW5yZWFjaGFibGUgMjU1LjI1NS4yNTUuMjU1ID4gL2Rldi9udWxsIDI+JjEKLSBpZiBbICJgaXAgbGluayBscyAkZGV2IHwgZ3JlcCAtYyBNVUxUSUNBU1RgIiAtZ2UgMSBdOyB0aGVuCi0tICBpcCByb3V0ZSBhZGQgMjI0LjAuMC4wLzQgZGV2ICRkZXYgc2NvcGUgZ2xvYmFsID4mIC9kZXYvbnVsbAotKyAgaXAgcm91dGUgYWRkIDIyNC4wLjAuMC80IGRldiAkZGV2IHNjb3BlIGdsb2JhbCA+IC9kZXYvbnVsbCAyPiYxCi0gZmkKLSAKLSBpZiBbICRmd2QgLWVxIDAgXTsgdGhlbgotZGlmZiAtLWdpdCBhL2lwL3J0cHIgYi9pcC9ydHByCi1pbmRleCBjMzYyOWZkLi42NzQxOThkIDEwMDY0NAotLS0tIGEvaXAvcnRwcgotKysrIGIvaXAvcnRwcgotQEAgLTEsNCArMSw0IEBACi0tIyEgL2Jpbi9iYXNoCi0rIyEgL2Jpbi9zaAotIAotIGV4ZWMgdHIgIltcXFxcXSIgIlsKLSBdIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFlMmU0YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBpcHJvdXRlMi5pbmMKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25ldC8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwcm91dGUyLWRlLWJhc2gtc2NyaXB0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMDc1NDIzZDcwMjllMDJhOGYyM2VkNGY0MmI3ZTM3MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDNhYzA2OGFmY2MzNTBhNDQ4ZjQ1ODFiNmUyOTIzMzFlZjdlNGU3YWE3NDZlMzQ5ODE1ODJkNWZkYjEwMDY3IgotCi0jIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjE4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZWQzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xOC4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgaXByb3V0ZTIuaW5jCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGI4NjgwZTkxMzkwYzU3Y2FiNzg4ZmJmOGU5Mjk0NzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTllNmM3MGM5NWY1MTM4NzFjNWUxZjRlNDUyYzA0ZmNiM2M0ZDhhMDViZTY1MWJkNzk0Y2Q5OTRhNTJkYWE0NSIKKworIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCmluZGV4IDhkMmZlZWMuLmQwZWIyNzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCkBAIC0xNyw2ICsxNyw4IEBACiAKIFMgPSAiJHtXT1JLRElSfS9uc3MtbWRucy0ke1BWfSIKIAorbG9jYWxzdGF0ZWRpciA9ICIvIgorCiBpbmhlcml0IGF1dG90b29scwogCiBFWFRSQV9PRUNPTkYgPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1kaXNhYmxlLWx5bnggLS1lbmFibGUtYXZhaGkiCkBAIC0yOCwxMyArMzAsMTYgQEAKIFJERVBFTkRTXyR7UE59ID0gImF2YWhpLWRhZW1vbiIKIAogcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxtZG5zXD4vLycgXAotCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbWRuczRfbWluaW1hbCBbTk9URk9VTkQ9cmV0dXJuXVwzXDQgbWRuc1w1LycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorCXNlZCAnCisJCS9eaG9zdHM6LyAhYgorCQkvXDxtZG5zXCg0XHw2XClcP1woX21pbmltYWxcKVw/XD4vIGIKKwkJcy9cKFtbOmJsYW5rOl1dXCtcKWRuc1w+L1wxbWRuczRfbWluaW1hbCBbTk9URk9VTkQ9cmV0dXJuXSBkbnMvZworCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCiB9CiAKIHBrZ19wcmVybV8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKLQkJLWUgJy9eaG9zdHM6L3MvXHMqbWRuczRfbWluaW1hbFxzXCtcW05PVEZPVU5EPXJldHVyblxdLy8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKKwlzZWQgJworCQkvXmhvc3RzOi8gIWIKKwkJcy9bWzpibGFuazpdXVwrbWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXCggXFtOT1RGT1VORD1yZXR1cm5cXVwpXD9cKVw/Ly9nCisJCScgLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL211bHRpbGliZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbXVsdGlsaWJmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U5N2U4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL211bHRpbGliZml4LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoZSBtb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8ucGMgZmlsZSBpcyBpbnN0YWxsZWQgaW50byBhIG5vbi1hcmNoIGRpcmVjdG9yeQoreWV0IGNvbnRhaW5zIGxpYmRpciB3aGljaCBjYW4gdmFyeSBkZXBlbmRpbmcgb24gd2hpY2ggbXVsdGlsaWIgaXMgY29uZmlndXJlZC4KK1RoZSAucGMgZmlsZSBkb2VzIG5vdCByZXF1aXJlIGxpYmRpciBzbyByZW1vdmUgdGhpcyB0byBmaXggbXVsdGlsaWIgYnVpbGRzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs4MTA5ZmNkM2M3Mjk5ZmFlODU5ZmI4OTFmZjQxNjkyNzU4MWE5OTU1XQorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGdpdC9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8ucGMuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8ucGMuaW4JMjAxOC0wOC0wNyAxMzowOTozMS44MTEzNjQwNjMgKzA4MDAKKysrKyBnaXQvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLnBjLmluCTIwMTgtMDgtMTAgMTc6NDk6MjUuNjQ1Mjg4MzIwICswODAwCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACisgcGtnZGF0YWRpcj0ke2RhdGFyb290ZGlyfS9AUEFDS0FHRUAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCmluZGV4IDU3ZjUyMWEuLjdmMWRkNzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mb19naXQuYmIKQEAgLTcsOCArNyw5IEBACiBQViA9ICIyMDE3MDMxMCIKIFBFID0gIjEiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm87cHJvdG9jb2w9aHR0cHMiCi0KK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8uZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL211bHRpbGliZml4LnBhdGNoIFwKKyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZ2V0dGluZy11Xy10eXBlZGVmcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1nZXR0aW5nLXVfLXR5cGVkZWZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWM1MjkwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1nZXR0aW5nLXVfLXR5cGVkZWZzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBhNWU5NWE0MmU3YmNlZGRjOWVjYWQwNjY5NGMxYTA1ODhmNGJhZmM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTQgQXByIDIwMTUgMDc6MjI6NDcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgZ2V0dGluZyB1XyogdHlwZWRlZnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjZmcuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvY2ZnLmggYi9jZmcuaAotaW5kZXggZDRkNGNhYi4uZmU0OWU4ZiAxMDA2NDQKLS0tLSBhL2NmZy5oCi0rKysgYi9jZmcuaAotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaWZuZGVmIF9DT05GX0hfCi0gI2RlZmluZSBfQ09ORl9IXwotIAotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSAicXVldWUuaCIKLSAKLSBzdHJ1Y3QgY29uZl9saXN0X25vZGUgewotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwL1NldF9ub2JvZHlfdXNlcl9ncm91cC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvU2V0X25vYm9keV91c2VyX2dyb3VwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMzZGE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvU2V0X25vYm9keV91c2VyX2dyb3VwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU2V0IG5vYm9keSB1c2VyIGFuZCBncm91cAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLSBhL2lkbWFwZC5jb25mCi0rKysgYi9pZG1hcGQuY29uZgotQEAgLTE3LDggKzE3LDggQEAKLSAKLSBbTWFwcGluZ10KLSAKLS0jTm9ib2R5LVVzZXIgPSBub2JvZHkKLS0jTm9ib2R5LUdyb3VwID0gbm9ib2R5Ci0rTm9ib2R5LVVzZXIgPSBub2JvZHkKLStOb2JvZHktR3JvdXAgPSBub2dyb3VwCi0gCi0gW1RyYW5zbGF0aW9uXQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9saWJuZnNpZG1hcC9maXgtYWMtcHJlcmVxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9saWJuZnNpZG1hcC9maXgtYWMtcHJlcmVxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODFjN2M1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvZml4LWFjLXByZXJlcS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xLDcgKzEsNyBAQAotICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KLSAjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gCi0tQUNfUFJFUkVRKFsyLjY4XSkKLStBQ19QUkVSRVEoWzIuNjVdKQotIEFDX0lOSVQoW2xpYm5mc2lkbWFwXSxbMC4yNV0sW2xpbnV4LW5mc0B2Z2VyLmtlcm5lbC5vcmddKQotIEFDX0NPTkZJR19TUkNESVIoW25mc2lkbWFwLmhdKQotIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXBfMC4yNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXBfMC4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2NTc3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwXzAuMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIk5GUyBpZCBtYXBwaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmNpdGkudW1pY2guZWR1L3Byb2plY3RzL25mc3Y0L2xpbnV4LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOWM2YTJhMGNhNjAxN2ZkYTdjZDkwNWVkMjczOWIzNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNpdGkudW1pY2guZWR1L3Byb2plY3RzL25mc3Y0L2xpbnV4L2xpYm5mc2lkbWFwLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LWFjLXByZXJlcS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9TZXRfbm9ib2R5X3VzZXJfZ3JvdXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1nZXR0aW5nLXVfLXR5cGVkZWZzLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYWM0ODkzYzkyNzE2YWRkMWExNDQ3YWUwMWRmNzdhYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTZkMjQ1ZDg0NDAwZTEwMzBmOGY0MGE1YTI3ZGE3NjM3MDY5MGM0YTkzMmJhZjI0OTExMGYwNDdmZTdlZmNmIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5jaXRpLnVtaWNoLmVkdS9wcm9qZWN0cy9uZnN2NC9saW51eC9saWJuZnNpZG1hcC8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59LSR7UFZ9L2lkbWFwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2lkbWFwZC5jb25mCi19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLUFsbG93LXRvLWV4cGxpY2l0bHktZGlzYWJsZS1uZnNpZG1hcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLUFsbG93LXRvLWV4cGxpY2l0bHktZGlzYWJsZS1uZnNpZG1hcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZiNTU4Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDliODRjZmYzMDU4NjZhYmQxNTBjZjFhNGM2ZTdlNWViZjhhN2ViM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IE5vdiAyMDEzIDIzOjIxOjM1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWxsb3cgdG8gZXhwbGljaXRseSBkaXNhYmxlIG5mc2lkbWFwCi0KLSoga2V5dXRpbHMgYXZhaWxhYmlsaXR5IGlzIGF1dG9kZXRlY3RlZCBhbmQgYnVpbGRzIGFyZW4ndCByZXByb2R1Y2libGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBuZnMtdXRpbHMtMi4xLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMS4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbmZzLXV0aWxzLTIuMS4xL2NvbmZpZ3VyZS5hYwotQEAgLTkyLDYgKzkyLDEyIEBAIEFDX0FSR19FTkFCTEUobmZzdjQsCi0gCUFDX1NVQlNUKGVuYWJsZV9uZnN2NCkKLSAJQU1fQ09ORElUSU9OQUwoQ09ORklHX05GU1Y0LCBbdGVzdCAiJGVuYWJsZV9uZnN2NCIgPSAieWVzIl0pCi0gCi0rQUNfQVJHX0VOQUJMRShuZnNpZG1hcCwKLSsgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtbmZzaWRtYXBdLAotKyAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgTkZTdjQgaWRtYXBwZXIgQDw6QGRlZmF1bHQ9eWVzQDo+QF0pXSwKLSsgICAgICAgIGVuYWJsZV9uZnNpZG1hcD0kZW5hYmxldmFsLAotKyAgICAgICAgZW5hYmxlX25mc2lkbWFwPXllcykKLSsKLSBBQ19BUkdfRU5BQkxFKG5mc3Y0MSwKLSAJW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbmZzdjQxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZSBzdXBwb3J0IGZvciBORlN2NDEgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAotQEAgLTMzOSw3ICszNDUsNyBAQCBmaQotIAotIGRubCBlbmFibGUgbmZzaWRtYXAgd2hlbiBpdHMgc3VwcG9ydCBieSBsaWJuZnNpZG1hcAotIEFNX0NPTkRJVElPTkFMKENPTkZJR19ORlNEQ0xUUkFDSywgW3Rlc3QgIiRlbmFibGVfbmZzZGNsdHJhY2siID0gInllcyIgXSkKLS1BTV9DT05ESVRJT05BTChDT05GSUdfTkZTSURNQVAsIFt0ZXN0ICIkYWNfY3ZfaGVhZGVyX2tleXV0aWxzX2gkYWNfY3ZfbGliX25mc2lkbWFwX25mczRfb3duZXJfdG9fdWlkIiA9ICJ5ZXN5ZXMiXSkKLStBTV9DT05ESVRJT05BTChDT05GSUdfTkZTSURNQVAsIFt0ZXN0ICIkZW5hYmxlX25mc2lkbWFwJGFjX2N2X2hlYWRlcl9rZXl1dGlsc19oJGFjX2N2X2xpYl9uZnNpZG1hcF9uZnM0X293bmVyX3RvX3VpZCIgPSAieWVzeWVzeWVzIl0pCi0gCi0gCi0gaWYgdGVzdCAiJGtuZnNkX2N2X2dsaWJjMiIgPSBubzsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVVJTlQxNl9NQVgtZGVmaW5pdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM1YTJjNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVVJTlQxNl9NQVgtZGVmaW5pdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gMzZiNDgwNTdiY2U3NmRjZWQzMzVkNjdhMjg5NGE0MjA5Njc4MTFjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIwIE1heSAyMDE3IDE0OjA3OjUzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIFVJTlQxNl9NQVggZGVmaW5pdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHN1cHBvcnQvbnNtL3JwYy5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zdXBwb3J0L25zbS9ycGMuYyBiL3N1cHBvcnQvbnNtL3JwYy5jCi1pbmRleCA0ZTVmNDBlLi5kOTFjNmVhIDEwMDY0NAotLS0tIGEvc3VwcG9ydC9uc20vcnBjLmMKLSsrKyBiL3N1cHBvcnQvbnNtL3JwYy5jCi1AQCAtNDAsNiArNDAsNyBAQAotIAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9maWxlcy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE4YTU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1GaXhlcyBlcnJvcnMgbGlrZQotc20tbm90aWZ5WzEwNzBdOiBETlMgcmVzb2x1dGlvbiBvZiBhLmIuYy5kLi5jb20gZmFpbGVkOyByZXRyeWluZyBsYXRlcgotVGhpcyBlcnJvciB3aWxsIG9jY3VyIGFueXRpbWUgc20tbm90aWZ5IGlzIHJ1biBiZWZvcmUgdGhlIG5ldHdvcmsgaWYgZnVsbHkgdXAsCi13aGljaCBpcyBoYXBwZW5pbmcgbW9yZSBhbmQgbW9yZSB3aXRoIHBhcmFsbGVsIHN0YXJ0dXAgc3lzdGVtcy4KLVRoZSByZXNfaW5pdCgpIGNhbGwgaXMgc2ltcGxlLCBzYWZlLCBxdWljaywgYW5kIGEgcGF0Y2ggdG8gdXNlIGl0IHNob3VsZCBiZQotYWJsZSB0byBnbyB1cHN0cmVhbS4gIFByZXN1bWFibHkgdGhlIHdob2xlIHJlYXNvbiBzbS1ub3RpZnkgdHJpZXMgc2V2ZXJhbAotdGltZXMgaXMgdG8gd2FpdCBmb3IgcG9zc2libGUgY2hhbmdlcyB0byB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uLCBidXQgd2l0aG91dAotY2FsbGluZyByZXNfaW5pdCgpIGl0IHdpbGwgbmV2ZXIgYmUgYXdhcmUgb2YgdGhvc2UgY2hhbmdlcwotCi1CYWNrcG9ydGVkIGRyb20gRmVkb3JhCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotCi1JbmRleDogbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMS4xLm9yaWcvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMKLSsrKyBuZnMtdXRpbHMtMi4xLjEvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMKLUBAIC0yOCw2ICsyOCw5IEBACi0gI2luY2x1ZGUgPG5ldGRiLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGdycC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0rI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgotKyNpbmNsdWRlIDxyZXNvbHYuaD4KLSAKLSAjaW5jbHVkZSAiY29uZmZpbGUuaCIKLSAjaW5jbHVkZSAic29ja2FkZHIuaCIKLUBAIC04OSw2ICs5Miw3IEBAIHNtbl9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkKLSAJfTsKLSAJaW50IGVycm9yOwotIAotKwlyZXNfaW5pdCgpOwotIAllcnJvciA9IGdldGFkZHJpbmZvKG5hbWUsIE5VTEwsICZoaW50LCAmYWkpOwotIAlpZiAoZXJyb3IgIT0gMCkgewotIAkJeGxvZyhEX0dFTkVSQUwsICJnZXRhZGRyaW5mbygzKTogJXMiLCBnYWlfc3RyZXJyb3IoZXJyb3IpKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtbGltaXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtbGltaXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1Y2E0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1saW1pdHMucGF0Y2gKQEAgLTAsMCArMSwxMzMgQEAKK0ZpeGVkOgorfCBmaWxlLmM6IEluIGZ1bmN0aW9uICdnZW5lcmljX21ha2VfcGF0aG5hbWUnOgorfCBmaWxlLmM6NDg6MTM6IGVycm9yOiAnUEFUSF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdSQU5EX01BWCc/Cit8ICAgaWYgKHNpemUgPiBQQVRIX01BWCkKK3wgICAgICAgICAgICAgIF5+fn5+fn5+Citbc25pcF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvY2dpdC9hcG9ydHMvdHJlZS9tYWluL25mcy11dGlscy9saW1pdHMucGF0Y2g/aWQ9ZjY3MzRhNzdkM2NhZWU3MzMyNWY4Y2MxZjc3ZDFiNTExN2E3NTA5Nl0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzdXBwb3J0L2V4cG9ydC9leHBvcnQuYyAgICAgICAgICB8IDEgKworIHN1cHBvcnQvZXhwb3J0L3h0YWIuYyAgICAgICAgICAgIHwgMSArCisgc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgICAgICAgICAgfCAxICsKKyBzdXBwb3J0L25mcy94Y29tbW9uLmMgICAgICAgICAgICB8IDEgKworIHN1cHBvcnQvbnNtL2ZpbGUuYyAgICAgICAgICAgICAgIHwgMSArCisgdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgfCAxICsKKyB1dGlscy9nc3NkL2tyYjVfdXRpbC5jICAgICAgICAgICB8IDEgKworIHV0aWxzL21vdW50ZC9jYWNoZS5jICAgICAgICAgICAgIHwgMSArCisgdXRpbHMvbW91bnRkL21vdW50ZC5jICAgICAgICAgICAgfCAxICsKKyB1dGlscy9tb3VudGQvcm10YWIuYyAgICAgICAgICAgICB8IDEgKworIDEwIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3N1cHBvcnQvZXhwb3J0L2V4cG9ydC5jIGIvc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMKKy0tLSBhL3N1cHBvcnQvZXhwb3J0L2V4cG9ydC5jCisrKysgYi9zdXBwb3J0L2V4cG9ydC9leHBvcnQuYworQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSAieG1hbGxvYy5oIgorICNpbmNsdWRlICJuZnNsaWIuaCIKKyAjaW5jbHVkZSAiZXhwb3J0ZnMuaCIKK2RpZmYgLS1naXQgYS9zdXBwb3J0L2V4cG9ydC94dGFiLmMgYi9zdXBwb3J0L2V4cG9ydC94dGFiLmMKKy0tLSBhL3N1cHBvcnQvZXhwb3J0L3h0YWIuYworKysrIGIvc3VwcG9ydC9leHBvcnQveHRhYi5jCitAQCAtMTgsNiArMTgsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxsaWJnZW4uaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgIm5mc2xpYi5oIgorICNpbmNsdWRlICJleHBvcnRmcy5oIgorZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9maWxlLmMgYi9zdXBwb3J0L21pc2MvZmlsZS5jCistLS0gYS9zdXBwb3J0L21pc2MvZmlsZS5jCisrKysgYi9zdXBwb3J0L21pc2MvZmlsZS5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgInhsb2cuaCIKKyAjaW5jbHVkZSAibWlzYy5oIgorZGlmZiAtLWdpdCBhL3N1cHBvcnQvbmZzL3hjb21tb24uYyBiL3N1cHBvcnQvbmZzL3hjb21tb24uYworLS0tIGEvc3VwcG9ydC9uZnMveGNvbW1vbi5jCisrKysgYi9zdXBwb3J0L25mcy94Y29tbW9uLmMKK0BAIC0xNiw2ICsxNiw3IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgInhjb21tb24uaCIKKyAjaW5jbHVkZSAibmxzLmgiCS8qIF8oKSAqLworZGlmZiAtLWdpdCBhL3N1cHBvcnQvbnNtL2ZpbGUuYyBiL3N1cHBvcnQvbnNtL2ZpbGUuYworLS0tIGEvc3VwcG9ydC9uc20vZmlsZS5jCisrKysgYi9zdXBwb3J0L25zbS9maWxlLmMKK0BAIC04NSw2ICs4NSw3IEBACisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxncnAuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgInhsb2cuaCIKKyAjaW5jbHVkZSAibnNtLmgiCitkaWZmIC0tZ2l0IGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYworLS0tIGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKKysrKyBiL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCitAQCAtNDksNiArNDksNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8bGliZ2VuLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KKyAKKyAjaWZkZWYgSEFWRV9DT05GSUdfSAorZGlmZiAtLWdpdCBhL3V0aWxzL2dzc2Qva3JiNV91dGlsLmMgYi91dGlscy9nc3NkL2tyYjVfdXRpbC5jCistLS0gYS91dGlscy9nc3NkL2tyYjVfdXRpbC5jCisrKysgYi91dGlscy9nc3NkL2tyYjVfdXRpbC5jCitAQCAtMTIwLDYgKzEyMCw3IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGtyYjUuaD4KKyAjaW5jbHVkZSA8cnBjL2F1dGhfZ3NzLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJnc3NkLmgiCisgI2luY2x1ZGUgImVycl91dGlsLmgiCitkaWZmIC0tZ2l0IGEvdXRpbHMvbW91bnRkL2NhY2hlLmMgYi91dGlscy9tb3VudGQvY2FjaGUuYworLS0tIGEvdXRpbHMvbW91bnRkL2NhY2hlLmMKKysrKyBiL3V0aWxzL21vdW50ZC9jYWNoZS5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlIDxwd2QuaD4KKyAjaW5jbHVkZSA8Z3JwLmg+CisgI2luY2x1ZGUgPG1udGVudC5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSAibWlzYy5oIgorICNpbmNsdWRlICJuZnNsaWIuaCIKKyAjaW5jbHVkZSAiZXhwb3J0ZnMuaCIKK2RpZmYgLS1naXQgYS91dGlscy9tb3VudGQvbW91bnRkLmMgYi91dGlscy9tb3VudGQvbW91bnRkLmMKKy0tLSBhL3V0aWxzL21vdW50ZC9tb3VudGQuYworKysrIGIvdXRpbHMvbW91bnRkL21vdW50ZC5jCitAQCAtMjIsNiArMjIsNyBAQAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgImNvbmZmaWxlLmgiCisgI2luY2x1ZGUgInhtYWxsb2MuaCIKK2RpZmYgLS1naXQgYS91dGlscy9tb3VudGQvcm10YWIuYyBiL3V0aWxzL21vdW50ZC9ybXRhYi5jCistLS0gYS91dGlscy9tb3VudGQvcm10YWIuYworKysrIGIvdXRpbHMvbW91bnRkL3JtdGFiLmMKK0BAIC0xNiw2ICsxNiw3IEBACisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgI2luY2x1ZGUgPG5ldGRiLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJtaXNjLmgiCisgI2luY2x1ZGUgImV4cG9ydGZzLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE2OWU2YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaApAQCAtMCwwICsxLDIyIEBACitGaXhlZDoKK2NvbmZpZ3VyZTogZXJyb3I6IHJlc19xdWVyeWRvbWFpbiBuZWVkZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvY2dpdC9hcG9ydHMvdHJlZS9tYWluL25mcy11dGlscy9tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaD9pZD1mNjczNGE3N2QzY2FlZTczMzI1ZjhjYzFmNzdkMWI1MTE3YTc1MDk2XQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00MDEsNyArNDAxLDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9nc3MiID0geWVzOyB0aGVuCisgZmkKKyAKKyBkbmwgbGliZG5zaWRtYXAgc3BlY2lmaWMgY2hlY2tzCistQUNfQ0hFQ0tfTElCKFtyZXNvbHZdLCBbX19yZXNfcXVlcnlkb21haW5dLCAsIEFDX01TR19FUlJPUihyZXNfcXVlcnlkb21haW4gbmVlZGVkKSkKKytBQ19DSEVDS19MSUIoW3Jlc29sdl0sIFtyZXNfcXVlcnlkb21haW5dLCAsIEFDX01TR19FUlJPUihyZXNfcXVlcnlkb21haW4gbmVlZGVkKSkKKyAKKyBBQ19BUkdfRU5BQkxFKFtsZGFwXSwKKyAJW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGRhcF0sW0Rpc2FibGUgc3VwcG9ydCBmb3IgTERBUCBAPDpkZWZhdWx0PWRldGVjdEA6PkBdKV0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTQ1M2FkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLVNVTU1BUlkgPSAidXNlcnNwYWNlIHV0aWxpdGllcyBmb3Iga2VybmVsIG5mcyIKLURFU0NSSVBUSU9OID0gIlRoZSBuZnMtdXRpbHMgcGFja2FnZSBwcm92aWRlcyBhIGRhZW1vbiBmb3IgdGhlIGtlcm5lbCBcCi1ORlMgc2VydmVyIGFuZCByZWxhdGVkIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9uZnMuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIk1JVCAmIEdQTHYyKyAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk1ZjNhOTNhNWMzYzc4ODhkZTYyM2I0NmVhMDg1YTg0IgotCi0jIHV0aWwtbGludXggZm9yIGxpYmJsa2lkCi1ERVBFTkRTID0gImxpYmNhcCBsaWJuZnNpZG1hcCBsaWJldmVudCB1dGlsLWxpbnV4IHNxbGl0ZTMgbGlidGlycGMiCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1jbGllbnQgYmFzaCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmZzZCIKLQotaW5oZXJpdCB1c2VyYWRkCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tY2xpZW50IgotVVNFUkFERF9QQVJBTV8ke1BOfS1jbGllbnQgPSAiLS1zeXN0ZW0gIC0taG9tZS1kaXIgL3Zhci9saWIvbmZzIFwKLQkJCSAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcnBjdXNlciIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25mcy11dGlscy8ke1BWfS9uZnMtdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFsbG93LXRvLWV4cGxpY2l0bHktZGlzYWJsZS1uZnNpZG1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25mc3NlcnZlciBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNjb21tb24gXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXNlcnZlci5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1tb3VudGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtc3RhdGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLURvLW5vdC1wYXNzLUNGTEFHUy10by1nY2Mtd2hpbGUtYnVpbGRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVVJTlQxNl9NQVgtZGVmaW5pdGlvbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1OWRmY2IyZTYyNTRiMTI5ZjkwMWY0MGM4NjA4NmIxMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZmFlYjU0YzcwYjg0ZTZiZDNiOWI2OTAxNTQ0YjFmNmFkZDhkMjQ2ZjM1YzE2ODNlNDAyZGFmNGUwYzcxOWVmIgotCi0jIE9ubHkga2VybmVsLW1vZHVsZS1uZnNkIGlzIHJlcXVpcmVkIGhlcmUgKGJ1dCBjYW4gYmUgYnVpbHQtaW4pICAtIHRoZSBuZnNkIG1vZHVsZSB3aWxsCi0jIHB1bGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzLgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKLUlOSVRTQ1JJUFRfTkFNRSA9ICJuZnNzZXJ2ZXIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1jbGllbnQgPSAibmZzY29tbW9uIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tY2xpZW50ID0gImRlZmF1bHRzIDE5IDIxIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmZzLXNlcnZlci5zZXJ2aWNlIG5mcy1tb3VudGQuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAibmZzLXN0YXRkLnNlcnZpY2UiCi0KLSMgLS1lbmFibGUtdXVpZCBpcyBuZWVkIGZvciBjcm9zcy1jb21waWxpbmcKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc3RhdGR1c2VyPXJwY3VzZXIgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vdW50Y29uZmlnIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJtb3VudC1tb3VudCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtdXVpZCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc2RjbHRyYWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3RhdGRwYXRoPS92YXIvbGliL25mcy9zdGF0ZCBcCi0gICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1tuZnNpZG1hcF0gPSAiLS1lbmFibGUtbmZzaWRtYXAsLS1kaXNhYmxlLW5mc2lkbWFwLGtleXV0aWxzIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLSMgbGliZGV2bWFwcGVyIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCi1QQUNLQUdFQ09ORklHW25mc3Y0MV0gPSAiLS1lbmFibGUtbmZzdjQxLC0tZGlzYWJsZS1uZnN2NDEsbGliZGV2bWFwcGVyIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgotCi1DT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvZXRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvcm10YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3h0YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlIFwKLQkJCSAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiIKLQotRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7c2JpbmRpcn0vKnN0YXRkIFwKLQkJICAgICAgJHtzYmluZGlyfS9ycGMuaWRtYXBkICR7c2JpbmRpcn0vc20tbm90aWZ5IFwKLQkJICAgICAgJHtzYmluZGlyfS9zaG93bW91bnQgJHtzYmluZGlyfS9uZnNzdGF0IFwKLQkJICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9uZnMtdXRpbHMuY29uZiBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbiBcCi0JCSAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmZzLXN0YXRkLnNlcnZpY2UiCi1SREVQRU5EU18ke1BOfS1jbGllbnQgPSAiJHtQTn0tbW91bnQgcnBjYmluZCIKLQotRklMRVNfJHtQTn0tbW91bnQgPSAiJHtiYXNlX3NiaW5kaXJ9Lyptb3VudC5uZnMqIgotCi1GSUxFU18ke1BOfS1zdGF0cyA9ICIke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtzYmluZGlyfS9uZnNpb3N0YXQiCi1SREVQRU5EU18ke1BOfS1zdGF0cyA9ICJweXRob24zLWNvcmUiCi0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAotICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQotCi0gICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAke1N9L3V0aWxzL29zZF9sb2dpbi9NYWtlZmlsZS5hbQotfQotCi0jIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAotIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCW1ha2UgY2xlYW4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzc2VydmVyICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNzZXJ2ZXIKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNjb21tb24gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbgotCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzLXV0aWxzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS91dGlscy9tb3VudC9uZnNtb3VudC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1tb3VudGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc3RhdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzLwotCSAgICBsbiAtc2YgLi4vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3Byb2MtZnMtbmZzZC5tb3VudAotCWZpCi0KLQkjIGtlcm5lbCBjb2RlIGFzIG9mIDMuOCBoYXJkLWNvZGVzIHRoaXMgcGF0aCBhcyBhIGRlZmF1bHQKLQlpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9uZnMvdjRyZWNvdmVyeQotCi0JIyBjaG93biB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCi0JY2hvd24gLVIgcnBjdXNlcjpycGN1c2VyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQKLQljaG1vZCAwNjQ0ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUKLQotCSMgdGhlIGZvbGxvd2luZyBhcmUgYnVpbHQgYnkgQ0NfRk9SX0JVSUxECi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vcnBjZGVidWcKLQlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNnZW4KLQlybSAtZiAke0R9JHtzYmluZGlyfS9sb2NrdGVzdAotCi0gICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAotCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDUwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjMuMS5iYgpAQCAtMCwwICsxLDE1MSBAQAorU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgorREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKK05GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCisKKyMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKK0RFUEVORFMgPSAibGliY2FwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCBiYXNoIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1uZnNkIgorCitpbmhlcml0IHVzZXJhZGQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1jbGllbnQiCitVU0VSQUREX1BBUkFNXyR7UE59LWNsaWVudCA9ICItLXN5c3RlbSAgLS1ob21lLWRpciAvdmFyL2xpYi9uZnMgXAorCQkJICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBycGN1c2VyIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmZzLXV0aWxzLyR7UFZ9L25mcy11dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbmZzc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL25mc2NvbW1vbiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtc2VydmVyLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmZzLW1vdW50ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1zdGF0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3Byb2MtZnMtbmZzZC5tb3VudCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtRG8tbm90LXBhc3MtQ0ZMQUdTLXRvLWdjYy13aGlsZS1idWlsZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtZGViaWFuaXplLXN0YXJ0LXN0YXRkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1tdXNsLWxpbWl0cy5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3N2IxODJhOWVlMzk2YWE2MjIxYWMyNDAxYWQ3MDQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2ZDA2YjVhODZiMTg1ODE1NzYwZDhmMDRjMzRmZGZhY2U4ZmE4Yjk5NDlmZjI1NmFjMDVjM2ViYzA4MzM1YTUiCisKKyMgT25seSBrZXJuZWwtbW9kdWxlLW5mc2QgaXMgcmVxdWlyZWQgaGVyZSAoYnV0IGNhbiBiZSBidWlsdC1pbikgIC0gdGhlIG5mc2QgbW9kdWxlIHdpbGwKKyMgcHVsbCBpbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMuCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgorSU5JVFNDUklQVF9OQU1FID0gIm5mc3NlcnZlciIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LWNsaWVudCA9ICJuZnNjb21tb24iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1jbGllbnQgPSAiZGVmYXVsdHMgMTkgMjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZworCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZnMtc2VydmVyLnNlcnZpY2UgbmZzLW1vdW50ZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWNsaWVudCA9ICJuZnMtc3RhdGQuc2VydmljZSIKKworIyAtLWVuYWJsZS11dWlkIGlzIG5lZWQgZm9yIGNyb3NzLWNvbXBpbGluZworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zdGF0ZHVzZXI9cnBjdXNlciBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbW91bnRjb25maWcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYm1vdW50LW1vdW50IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS11dWlkIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzZGNsdHJhY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zdGF0ZHBhdGg9L3Zhci9saWIvbmZzL3N0YXRkIFwKKyAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0td2l0aC10Y3Atd3JhcHBlcnMsLS13aXRob3V0LXRjcC13cmFwcGVycyx0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorIyBsaWJkZXZtYXBwZXIgaXMgYXZhaWxhYmxlIGluIG1ldGEtb2UKK1BBQ0tBR0VDT05GSUdbbmZzdjQxXSA9ICItLWVuYWJsZS1uZnN2NDEsLS1kaXNhYmxlLW5mc3Y0MSxsaWJkZXZtYXBwZXIiCisjIGtleXV0aWxzIGlzIGF2YWlsYWJsZSBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW25mc3Y0XSA9ICItLWVuYWJsZS1uZnN2NCwtLWRpc2FibGUtbmZzdjQsa2V5dXRpbHMiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCisKK0NPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAorCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgorCitGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAorCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAorCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAorCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKKwkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgorCitGSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCisKK0ZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKK1JERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCisKKyAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICR7U30vdXRpbHMvb3NkX2xvZ2luL01ha2VmaWxlLmFtCit9CisKKyMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCisjIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJbWFrZSBjbGVhbgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCisKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCisJICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50CisJZmkKKworCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAorCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5CisKKwkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKKwljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAorCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQorCisJIyB0aGUgZm9sbG93aW5nIGFyZSBidWlsdCBieSBDQ19GT1JfQlVJTEQKKwlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNkZWJ1ZworCXJtIC1mICR7RH0ke3NiaW5kaXJ9L3JwY2dlbgorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2xvY2t0ZXN0CisKKyAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0CisKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1N2VhYTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgb2Zvbm8uaW5jCi0KLVNSQ19VUkkgID0gIlwKLSAgJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAotICBmaWxlOi8vb2Zvbm8gXAotICBmaWxlOi8vdXNlLXB5dGhvbjMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjJhNjgzYWI4ZTk4NDQ4YWQ4YmM1ZGM5ODY4ZDI4OTNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlMzRhNjY5NmMzMDBjOTg0MWI1NWU4ZGZmNjQwYmQzMDk2ZTQ5ZjVkYmU1NWJiZWJhYTY5YTcxNjc2ZjY4N2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjI0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlN2Q5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yNC5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgb2Zvbm8uaW5jCisKK1NSQ19VUkkgID0gIlwKKyAgJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAorICBmaWxlOi8vb2Zvbm8gXAorICBmaWxlOi8vdXNlLXB5dGhvbjMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImJlMjRlODBmNjU1MWY0NmZlYTBjNWI1ODc5OTY0ZDZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOGUzNTFiNzY1OGY0YjQzZjlhNDM4MGI3MzFjNDdkMmQ3NTQ0YTg5OTg3YzQ4YzNmMjI3ZTczNjM2Yzg3YWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9kaXNhYmxlLWNpcGhlcnMtbm90LXN1cHBvcnRlZC1ieS1PcGVuU1NMLURFUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEyZDFhMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAyNjVlYWFiOGIzOWQ4ZDg3MjEyMjRhNDhlZWZlZDViZjE2OTZkMzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxOCBBcHIgMjAxOCAyMTo1ODozMiArMDgwMAotU3ViamVjdDogW1BBVENIXSBkaXNhYmxlIGNpcGhlcnMgbm90IHN1cHBvcnRlZCBieSBPcGVuU1NMIERFUwotCi1XaGlsZSBjb21waWxpbmcgb3BlbnNzbCB3aXRoIG9wdGlvbiBgbm8tZGVzJywgaXQgY2F1c2VkIHRoZSBvcGVuc3NoCi1idWlsZCBmYWlsdXJlCi0uLi4KLWNpcGhlci5jOjg1OjQxOiBlcnJvcjogJ0VWUF9kZXNfZWRlM19jYmMnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pOwotLi4uCi0KLU9wZW5TU0wgY29uZmlndXJlZCB0aGF0IHdheSBkZWZpbmVzIE9QRU5TU0xfTk9fREVTIHRvIGRpc2FibGUgZGVzCi0KLVN1Z2dlc3RlZCBieSBkdHVja2VyQAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbb3BlbnNzaC11bml4LWRldkBtaW5kcm90Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyLmMgYi9jaXBoZXIuYwotaW5kZXggYzNjZDVkYy4uODY1NThlMSAxMDA2NDQKLS0tLSBhL2NpcGhlci5jCi0rKysgYi9jaXBoZXIuYwotQEAgLTgyLDcgKzgyLDkgQEAgc3RydWN0IHNzaGNpcGhlciB7Ci0gCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBzc2hjaXBoZXIgY2lwaGVyc1tdID0gewotICNpZmRlZiBXSVRIX09QRU5TU0wKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCXsgIjNkZXMtY2JjIiwJCTgsIDI0LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9kZXNfZWRlM19jYmMgfSwKLSsjZW5kaWYKLSAJeyAiYWVzMTI4LWNiYyIsCQkxNiwgMTYsIDAsIDAsIENGTEFHX0NCQywgRVZQX2Flc18xMjhfY2JjIH0sCi0gCXsgImFlczE5Mi1jYmMiLAkJMTYsIDI0LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9hZXNfMTkyX2NiYyB9LAotIAl7ICJhZXMyNTYtY2JjIiwJCTE2LCAzMiwgMCwgMCwgQ0ZMQUdfQ0JDLCBFVlBfYWVzXzI1Nl9jYmMgfSwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9pbml0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9pbml0CmluZGV4IDM0YmEwZjguLjg4ODdlM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvaW5pdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2luaXQKQEAgLTM2LDcgKzM2LDcgQEAKIH0KIAogY2hlY2tfY29uZmlnKCkgewotCS91c3Ivc2Jpbi9zc2hkIC10ICRTU0hEX09QVFMgfHwgZXhpdCAxCisgICAgL3Vzci9zYmluL3NzaGQgJFNTSERfT1BUUyAtdCB8fCBleGl0IDEKIH0KIAogZXhwb3J0IFBBVEg9IiR7UEFUSDorJFBBVEg6fS91c3Ivc2Jpbjovc2JpbiIKQEAgLTQ4LDE5ICs0OCwxOSBAQAogCUBMSUJFWEVDRElSQC9zc2hkX2NoZWNrX2tleXMKIAljaGVja19wcml2c2VwX2RpcgogCXN0YXJ0LXN0b3AtZGFlbW9uIC1TIC1wICRQSURGSUxFIC14IC91c3Ivc2Jpbi9zc2hkIC0tICRTU0hEX09QVFMKLSAgICAgICAgZWNobyAiZG9uZS4iCisJZWNobyAiZG9uZS4iCiAJOzsKICAgc3RvcCkKLSAgICAgICAgZWNobyAtbiAiU3RvcHBpbmcgT3BlbkJTRCBTZWN1cmUgU2hlbGwgc2VydmVyOiBzc2hkIgorCWVjaG8gLW4gIlN0b3BwaW5nIE9wZW5CU0QgU2VjdXJlIFNoZWxsIHNlcnZlcjogc3NoZCIKIAlzdGFydC1zdG9wLWRhZW1vbiAtSyAtcCAkUElERklMRSAteCAvdXNyL3NiaW4vc3NoZAotICAgICAgICBlY2hvICIuIgorCWVjaG8gIi4iCiAJOzsKIAogICByZWxvYWR8Zm9yY2UtcmVsb2FkKQogCWNoZWNrX2Zvcl9ub19zdGFydAogCUBMSUJFWEVDRElSQC9zc2hkX2NoZWNrX2tleXMKIAljaGVja19jb25maWcKLSAgICAgICAgZWNobyAtbiAiUmVsb2FkaW5nIE9wZW5CU0QgU2VjdXJlIFNoZWxsIHNlcnZlcidzIGNvbmZpZ3VyYXRpb24iCisJZWNobyAtbiAiUmVsb2FkaW5nIE9wZW5CU0QgU2VjdXJlIFNoZWxsIHNlcnZlcidzIGNvbmZpZ3VyYXRpb24iCiAJc3RhcnQtc3RvcC1kYWVtb24gLUsgLXAgJFBJREZJTEUgLXMgMSAteCAvdXNyL3NiaW4vc3NoZAogCWVjaG8gIi4iCiAJOzsKQEAgLTY4LDcgKzY4LDcgQEAKICAgcmVzdGFydCkKIAlATElCRVhFQ0RJUkAvc3NoZF9jaGVja19rZXlzCiAJY2hlY2tfY29uZmlnCi0gICAgICAgIGVjaG8gLW4gIlJlc3RhcnRpbmcgT3BlbkJTRCBTZWN1cmUgU2hlbGwgc2VydmVyOiBzc2hkIgorCWVjaG8gLW4gIlJlc3RhcnRpbmcgT3BlbkJTRCBTZWN1cmUgU2hlbGwgc2VydmVyOiBzc2hkIgogCXN0YXJ0LXN0b3AtZGFlbW9uIC1LIC1wICRQSURGSUxFIC0tb2tub2RvIC14IC91c3Ivc2Jpbi9zc2hkCiAJY2hlY2tfZm9yX25vX3N0YXJ0CiAJY2hlY2tfcHJpdnNlcF9kaXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoX2NvbmZpZyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoX2NvbmZpZwppbmRleCA5ZTkxOTE1Li5lMGQwMjM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaF9jb25maWcKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hfY29uZmlnCkBAIC0xLDQgKzEsNCBAQAotIwkkT3BlbkJTRDogc3NoX2NvbmZpZyx2IDEuMjggMjAxMy8wOS8xNiAxMTozNTo0MyBzdGhlbiBFeHAgJAorIwkkT3BlbkJTRDogc3NoX2NvbmZpZyx2IDEuMzMgMjAxNy8wNS8wNyAyMzoxMjo1NyBkam0gRXhwICQKIAogIyBUaGlzIGlzIHRoZSBzc2ggY2xpZW50IHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFNlZQogIyBzc2hfY29uZmlnKDUpIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgVGhpcyBmaWxlIHByb3ZpZGVzIGRlZmF1bHRzIGZvcgpAQCAtMzEsMTQgKzMxLDE0IEBACiAjICAgQWRkcmVzc0ZhbWlseSBhbnkKICMgICBDb25uZWN0VGltZW91dCAwCiAjICAgU3RyaWN0SG9zdEtleUNoZWNraW5nIGFzawotIyAgIElkZW50aXR5RmlsZSB+Ly5zc2gvaWRlbnRpdHkKICMgICBJZGVudGl0eUZpbGUgfi8uc3NoL2lkX3JzYQogIyAgIElkZW50aXR5RmlsZSB+Ly5zc2gvaWRfZHNhCisjICAgSWRlbnRpdHlGaWxlIH4vLnNzaC9pZF9lY2RzYQorIyAgIElkZW50aXR5RmlsZSB+Ly5zc2gvaWRfZWQyNTUxOQogIyAgIFBvcnQgMjIKLSMgICBQcm90b2NvbCAyLDEKLSMgICBDaXBoZXIgM2RlcwotIyAgIENpcGhlcnMgYWVzMTI4LWN0cixhZXMxOTItY3RyLGFlczI1Ni1jdHIsYXJjZm91cjI1NixhcmNmb3VyMTI4LGFlczEyOC1jYmMsM2Rlcy1jYmMKLSMgICBNQUNzIGhtYWMtbWQ1LGhtYWMtc2hhMSx1bWFjLTY0QG9wZW5zc2guY29tLGhtYWMtcmlwZW1kMTYwCisjICAgUHJvdG9jb2wgMgorIyAgIENpcGhlcnMgYWVzMTI4LWN0cixhZXMxOTItY3RyLGFlczI1Ni1jdHIsYWVzMTI4LWNiYywzZGVzLWNiYworIyAgIE1BQ3MgaG1hYy1tZDUsaG1hYy1zaGExLHVtYWMtNjRAb3BlbnNzaC5jb20KICMgICBFc2NhcGVDaGFyIH4KICMgICBUdW5uZWwgbm8KICMgICBUdW5uZWxEZXZpY2UgYW55OmFueQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cwppbmRleCA1NDYzYjFhLi4xOTMxZGM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cwpAQCAtNTYsMzUgKzU2LDIzIEBACiAgICAgZXNhYwogZG9uZQogCi0jIHBhcnNlIGxvY2F0aW9uIG9mIGtleXMKLUhPU1RfS0VZX1JTQT0kKGdyZXAgXkhvc3RLZXkgIiR7c3NoZF9jb25maWd9IiB8IGdyZXAgX3JzYV8gfCB0YWlsIC0xIHwgYXdrICcgeyBwcmludCAkMiB9ICcpCi1bIC16ICIke0hPU1RfS0VZX1JTQX0iIF0gJiYgSE9TVF9LRVlfUlNBPSQoZ3JlcCBIb3N0S2V5ICIke3NzaGRfY29uZmlnfSIgfCBncmVwIF9yc2FfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9SU0F9IiBdICYmIEhPU1RfS0VZX1JTQT0kU1lTQ09ORkRJUi9zc2hfaG9zdF9yc2Ffa2V5Ci1IT1NUX0tFWV9EU0E9JChncmVwIF5Ib3N0S2V5ICIke3NzaGRfY29uZmlnfSIgfCBncmVwIF9kc2FfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9EU0F9IiBdICYmIEhPU1RfS0VZX0RTQT0kKGdyZXAgSG9zdEtleSAiJHtzc2hkX2NvbmZpZ30iIHwgZ3JlcCBfZHNhXyB8IHRhaWwgLTEgfCBhd2sgJyB7IHByaW50ICQyIH0gJykKLVsgLXogIiR7SE9TVF9LRVlfRFNBfSIgXSAmJiBIT1NUX0tFWV9EU0E9JFNZU0NPTkZESVIvc3NoX2hvc3RfZHNhX2tleQotSE9TVF9LRVlfRUNEU0E9JChncmVwIF5Ib3N0S2V5ICIke3NzaGRfY29uZmlnfSIgfCBncmVwIF9lY2RzYV8gfCB0YWlsIC0xIHwgYXdrICcgeyBwcmludCAkMiB9ICcpCi1bIC16ICIke0hPU1RfS0VZX0VDRFNBfSIgXSAmJiBIT1NUX0tFWV9FQ0RTQT0kKGdyZXAgSG9zdEtleSAiJHtzc2hkX2NvbmZpZ30iIHwgZ3JlcCBfZWNkc2FfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9FQ0RTQX0iIF0gJiYgSE9TVF9LRVlfRUNEU0E9JFNZU0NPTkZESVIvc3NoX2hvc3RfZWNkc2Ffa2V5Ci1IT1NUX0tFWV9FRDI1NTE5PSQoZ3JlcCBeSG9zdEtleSAiJHtzc2hkX2NvbmZpZ30iIHwgZ3JlcCBfZWQyNTUxOV8gfCB0YWlsIC0xIHwgYXdrICcgeyBwcmludCAkMiB9ICcpCi1bIC16ICIke0hPU1RfS0VZX0VEMjU1MTl9IiBdICYmIEhPU1RfS0VZX0VEMjU1MTk9JChncmVwIEhvc3RLZXkgIiR7c3NoZF9jb25maWd9IiB8IGdyZXAgX2VkMjU1MTlfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9FRDI1NTE5fSIgXSAmJiBIT1NUX0tFWV9FRDI1NTE5PSRTWVNDT05GRElSL3NzaF9ob3N0X2VkMjU1MTlfa2V5CitIT1NUX0tFWVM9JChzZWQgLW4gJ3MvXlsgXHRdKkhvc3RLZXlbIFx0XVwrXCguKlwpL1wxL3AnICIke3NzaGRfY29uZmlnfSIpCitbIC16ICIke0hPU1RfS0VZU30iIF0gJiYgSE9TVF9LRVlTPSIkU1lTQ09ORkRJUi9zc2hfaG9zdF9yc2Ffa2V5ICRTWVNDT05GRElSL3NzaF9ob3N0X2VjZHNhX2tleSAkU1lTQ09ORkRJUi9zc2hfaG9zdF9lZDI1NTE5X2tleSIKIAotIyBjcmVhdGUga2V5cyBpZiBuZWNlc3NhcnkKLWlmIFsgISAtZiAkSE9TVF9LRVlfUlNBIF07IHRoZW4KLSAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIFJTQSBrZXkuLi4iCi0gICAgZ2VuZXJhdGVfa2V5ICRIT1NUX0tFWV9SU0EgcnNhCi1maQotaWYgWyAhIC1mICRIT1NUX0tFWV9FQ0RTQSBdOyB0aGVuCi0gICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBFQ0RTQSBrZXkuLi4iCi0gICAgZ2VuZXJhdGVfa2V5ICRIT1NUX0tFWV9FQ0RTQSBlY2RzYQotZmkKLWlmIFsgISAtZiAkSE9TVF9LRVlfRFNBIF07IHRoZW4KLSAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIERTQSBrZXkuLi4iCi0gICAgZ2VuZXJhdGVfa2V5ICRIT1NUX0tFWV9EU0EgZHNhCi1maQotaWYgWyAhIC1mICRIT1NUX0tFWV9FRDI1NTE5IF07IHRoZW4KLSAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIEVEMjU1MTkga2V5Li4uIgotICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRUQyNTUxOSBlZDI1NTE5Ci1maQotCitmb3Iga2V5IGluICR7SE9TVF9LRVlTfSA7IGRvCisgICAgWyAtZiAka2V5IF0gJiYgY29udGludWUKKyAgICBjYXNlICRrZXkgaW4KKyAgICAqX3JzYV9rZXkpCisgICAgICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggUlNBIGhvc3Qga2V5Li4uIgorICAgICAgICBnZW5lcmF0ZV9rZXkgJGtleSByc2EKKyAgICAgICAgOzsKKyAgICAqX2VjZHNhX2tleSkKKyAgICAgICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBFQ0RTQSBob3N0IGtleS4uLiIKKyAgICAgICAgZ2VuZXJhdGVfa2V5ICRrZXkgZWNkc2EKKyAgICAgICAgOzsKKyAgICAqX2VkMjU1MTlfa2V5KQorICAgICAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIEVEMjU1MTkgaG9zdCBrZXkuLi4iCisgICAgICAgIGdlbmVyYXRlX2tleSAka2V5IGVkMjU1MTkKKyAgICAgICAgOzsKKyAgICBlc2FjCitkb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NvbmZpZwppbmRleCAzMWZlNWQ5Li4xNWYwNjFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcKQEAgLTEsNCArMSw0IEBACi0jCSRPcGVuQlNEOiBzc2hkX2NvbmZpZyx2IDEuODAgMjAwOC8wNy8wMiAwMjoyNDoxOCBkam0gRXhwICQKKyMJJE9wZW5CU0Q6IHNzaGRfY29uZmlnLHYgMS4xMDIgMjAxOC8wMi8xNiAwMjozMjo0MCBkam0gRXhwICQKIAogIyBUaGlzIGlzIHRoZSBzc2hkIHNlcnZlciBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGUuICBTZWUKICMgc3NoZF9jb25maWcoNSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC03LDcgKzcsNyBAQAogCiAjIFRoZSBzdHJhdGVneSB1c2VkIGZvciBvcHRpb25zIGluIHRoZSBkZWZhdWx0IHNzaGRfY29uZmlnIHNoaXBwZWQgd2l0aAogIyBPcGVuU1NIIGlzIHRvIHNwZWNpZnkgb3B0aW9ucyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWUgd2hlcmUKLSMgcG9zc2libGUsIGJ1dCBsZWF2ZSB0aGVtIGNvbW1lbnRlZC4gIFVuY29tbWVudGVkIG9wdGlvbnMgY2hhbmdlIGEKKyMgcG9zc2libGUsIGJ1dCBsZWF2ZSB0aGVtIGNvbW1lbnRlZC4gIFVuY29tbWVudGVkIG9wdGlvbnMgb3ZlcnJpZGUgdGhlCiAjIGRlZmF1bHQgdmFsdWUuCiAKICNQb3J0IDIyCkBAIC0xNSw0MyArMTUsMzAgQEAKICNMaXN0ZW5BZGRyZXNzIDAuMC4wLjAKICNMaXN0ZW5BZGRyZXNzIDo6CiAKLSMgVGhlIGRlZmF1bHQgcmVxdWlyZXMgZXhwbGljaXQgYWN0aXZhdGlvbiBvZiBwcm90b2NvbCAxCi1Qcm90b2NvbCAyCi0KLSMgSG9zdEtleSBmb3IgcHJvdG9jb2wgdmVyc2lvbiAxCi0jSG9zdEtleSAvZXRjL3NzaC9zc2hfaG9zdF9rZXkKLSMgSG9zdEtleXMgZm9yIHByb3RvY29sIHZlcnNpb24gMgogI0hvc3RLZXkgL2V0Yy9zc2gvc3NoX2hvc3RfcnNhX2tleQotI0hvc3RLZXkgL2V0Yy9zc2gvc3NoX2hvc3RfZHNhX2tleQogI0hvc3RLZXkgL2V0Yy9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5CiAjSG9zdEtleSAvZXRjL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleQogCi0jIExpZmV0aW1lIGFuZCBzaXplIG9mIGVwaGVtZXJhbCB2ZXJzaW9uIDEgc2VydmVyIGtleQotI0tleVJlZ2VuZXJhdGlvbkludGVydmFsIDFoCi0jU2VydmVyS2V5Qml0cyAxMDI0Ci0KICMgQ2lwaGVycyBhbmQga2V5aW5nCiAjUmVrZXlMaW1pdCBkZWZhdWx0IG5vbmUKIAogIyBMb2dnaW5nCi0jIG9ic29sZXRlcyBRdWlldE1vZGUgYW5kIEZhc2Npc3RMb2dnaW5nCiAjU3lzbG9nRmFjaWxpdHkgQVVUSAogI0xvZ0xldmVsIElORk8KIAogIyBBdXRoZW50aWNhdGlvbjoKIAogI0xvZ2luR3JhY2VUaW1lIDJtCi0jUGVybWl0Um9vdExvZ2luIHllcworI1Blcm1pdFJvb3RMb2dpbiBwcm9oaWJpdC1wYXNzd29yZAogI1N0cmljdE1vZGVzIHllcwogI01heEF1dGhUcmllcyA2CiAjTWF4U2Vzc2lvbnMgMTAKIAotI1JTQUF1dGhlbnRpY2F0aW9uIHllcwogI1B1YmtleUF1dGhlbnRpY2F0aW9uIHllcwogCiAjIFRoZSBkZWZhdWx0IGlzIHRvIGNoZWNrIGJvdGggLnNzaC9hdXRob3JpemVkX2tleXMgYW5kIC5zc2gvYXV0aG9yaXplZF9rZXlzMgogIyBidXQgdGhpcyBpcyBvdmVycmlkZGVuIHNvIGluc3RhbGxhdGlvbnMgd2lsbCBvbmx5IGNoZWNrIC5zc2gvYXV0aG9yaXplZF9rZXlzCi1BdXRob3JpemVkS2V5c0ZpbGUgLnNzaC9hdXRob3JpemVkX2tleXMKK0F1dGhvcml6ZWRLZXlzRmlsZQkuc3NoL2F1dGhvcml6ZWRfa2V5cwogCiAjQXV0aG9yaXplZFByaW5jaXBhbHNGaWxlIG5vbmUKIApAQCAtNTksMTEgKzQ2LDkgQEAKICNBdXRob3JpemVkS2V5c0NvbW1hbmRVc2VyIG5vYm9keQogCiAjIEZvciB0aGlzIHRvIHdvcmsgeW91IHdpbGwgYWxzbyBuZWVkIGhvc3Qga2V5cyBpbiAvZXRjL3NzaC9zc2hfa25vd25faG9zdHMKLSNSaG9zdHNSU0FBdXRoZW50aWNhdGlvbiBubwotIyBzaW1pbGFyIGZvciBwcm90b2NvbCB2ZXJzaW9uIDIKICNIb3N0YmFzZWRBdXRoZW50aWNhdGlvbiBubwogIyBDaGFuZ2UgdG8geWVzIGlmIHlvdSBkb24ndCB0cnVzdCB+Ly5zc2gva25vd25faG9zdHMgZm9yCi0jIFJob3N0c1JTQUF1dGhlbnRpY2F0aW9uIGFuZCBIb3N0YmFzZWRBdXRoZW50aWNhdGlvbgorIyBIb3N0YmFzZWRBdXRoZW50aWNhdGlvbgogI0lnbm9yZVVzZXJLbm93bkhvc3RzIG5vCiAjIERvbid0IHJlYWQgdGhlIHVzZXIncyB+Ly5yaG9zdHMgYW5kIH4vLnNob3N0cyBmaWxlcwogI0lnbm9yZVJob3N0cyB5ZXMKQEAgLTcyLDcgKzU3LDggQEAKICNQYXNzd29yZEF1dGhlbnRpY2F0aW9uIHllcwogI1Blcm1pdEVtcHR5UGFzc3dvcmRzIG5vCiAKLSMgQ2hhbmdlIHRvIG5vIHRvIGRpc2FibGUgcy9rZXkgcGFzc3dvcmRzCisjIENoYW5nZSB0byB5ZXMgdG8gZW5hYmxlIGNoYWxsZW5nZS1yZXNwb25zZSBwYXNzd29yZHMgKGJld2FyZSBpc3N1ZXMgd2l0aAorIyBzb21lIFBBTSBtb2R1bGVzIGFuZCB0aHJlYWRzKQogQ2hhbGxlbmdlUmVzcG9uc2VBdXRoZW50aWNhdGlvbiBubwogCiAjIEtlcmJlcm9zIG9wdGlvbnMKQEAgLTExMSw3ICs5Nyw3IEBACiBDb21wcmVzc2lvbiBubwogQ2xpZW50QWxpdmVJbnRlcnZhbCAxNQogQ2xpZW50QWxpdmVDb3VudE1heCA0Ci0jVXNlRE5TIHllcworI1VzZUROUyBubwogI1BpZEZpbGUgL3Zhci9ydW4vc3NoZC5waWQKICNNYXhTdGFydHVwcyAxMDozMDoxMDAKICNQZXJtaXRUdW5uZWwgbm8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy42cDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNnAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTFlOGQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy42cDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAotdGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAotU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAotYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT00Mjk2NThjNjYxMmYzYTliMTI5Mzc4MjM2NmFiMjlkOCIKLQotIyBvcGVuc3NsIDEuMSBwYXRjaGVzIGFyZSBwcm9wb3NlZCBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3B1bGwvNDgKLURFUEVORFMgPSAiemxpYiBvcGVuc3NsMTAiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAotICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDZhODg2OTkwMThlNWZlZjEzZDQ2NTVhYmZlZDFmNjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMyM2NhZWVkZGZlMTQ1YmFhYTBkYjE2ZTk4ZDc4NGIxZmJjN2RkNDM2YTZiZjFmNDc5ZGZkNWNkMWQyMTcyMyIKLQotaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi0jIExGUyBzdXBwb3J0OgotQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLSMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPS92YXIvcnVuL3NzaGQgXAotICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPS91c3IvYmluL3hhdXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAotICAgICAgICAgICAgICAgICIKLQotIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgotCi0jIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0Ci0jIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKLSMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCi0KLSMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKLQotIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWV4cG9ydCBMRD0iJHtDQ30iCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCi0gICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCi0gICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKLQkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KLQlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KLQotCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCi0JaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCi0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCi0JY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCi1GSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLUZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgotRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKLUZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKLUZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCi1SREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgotCi1SUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKLVJQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgotCi1DT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKLUNPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgotQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy44cDErZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjhwMStnaXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU0ZGZiNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy44cDErZ2l0LmJiCkBAIC0wLDAgKzEsMTY0IEBACitTVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCit0aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCitTc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCithbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTQyOTY1OGM2NjEyZjNhOWIxMjkzNzgyMzY2YWIyOWQ4IgorCitERVBFTkRTID0gInpsaWIgb3BlbnNzbCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGU7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgorCitTUkNSRVYgPSAiY2NlOGNiZTBlZDdkMWJhM2E1NzUzMTBlMGI2M2MxOTMzMjZhZTYxNiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitFWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCBcCisgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9JHtiaW5kaXJ9L3hhdXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAorICAgICAgICAgICAgICAgICIKKworIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQgXAorICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3MvY2hlY2stcGVybSByZWdyZXNzL21rZHRlbXAKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCisKK0NPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgorQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCitBTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL2ZpbGVzL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL2ZpbGVzL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWQ5MmJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KLQotSW5kZXg6IG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJuLm9yaWcvQ29uZmlndXJlCi0rKysgb3BlbnNzbC0xLjAuMm4vQ29uZmlndXJlCi1AQCAtMTMzLDYgKzEzMywxMCBAQCBteSAkY2xhbmdfZGV2dGVhbV93YXJuID0gIi1Xbm8tdW51c2VkLXBhCi0gIyBXYXJuIHRoYXQgIm1ha2UgZGVwZW5kIiBzaG91bGQgYmUgcnVuPwotIG15ICR3YXJuX21ha2VfZGVwZW5kID0gMDsKLSAKLSsjIFRoZXJlIGFyZSBubyBzZXBhcmF0ZSBDRkxBR1MvQ1BQRkxBR1MvTERGTEFHUywgc2V0IGV2ZXJ5dGhpbmcgaW4gQ0ZMQUdTCi0rbXkgJGRlYmlhbl9jZmxhZ3MgPSBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IENGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IENQUEZMQUdTYCAuIGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgTERGTEFHU2AgLiAiLVdhLC0tbm9leGVjc3RhY2sgLVdhbGwiOwotKyRkZWJpYW5fY2ZsYWdzID1+IHMvXG4vIC9nOwotKwotIG15ICRzdHJpY3Rfd2FybmluZ3MgPSAwOwotIAotIG15ICR4ODZfZ2NjX2Rlcz0iREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCI7Ci1AQCAtMzY5LDYgKzM3Myw1NSBAQCBteSAldGFibGU9KAotICJvc2YxLWFscGhhLWNjIiwgICJjYzotc3RkMSAtdHVuZSBob3N0IC1PNCAtcmVhZG9ubHlfc3RyaW5nczo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjo6LnNvIiwKLSAidHJ1NjQtYWxwaGEtY2MiLCAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtZmFzdCAtcmVhZG9ubHlfc3RyaW5nczo6LXB0aHJlYWQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Oi1tc3ltOi5zbyIsCi0gCi0rIyBEZWJpYW4gR05VLyogKHZhcmlvdXMgYXJjaGl0ZWN0dXJlcykKLSsiZGViaWFuLWFscGhhIiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hbHBoYS1ldjQiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT1ldjQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hbHBoYS1ldjUiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT1ldjU6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hcm02NCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFybWVsIiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFybWhmIiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFtZDY0IiwgImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6IiwKLSsiZGViaWFuLWF2cjMyIiwgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9OR19CRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4ta2ZyZWVic2QtYW1kNjQiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4ta2ZyZWVic2QtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNDg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taHBwYSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taHVyZC1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtV2EsLS1ub2V4ZWNzdGFjayAtZyAtbXR1bmU9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWlhNjQiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4Ni1pNDg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWkzODYtaTU4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk1ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2LWk2ODYvY21vdiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk2ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1tNjhrIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHNlbCIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzbjMyIiwgICAibWlwczY0LWxpbnV4LWdudWFiaW4zMi1nY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwc24zMmVsIiwgICAibWlwczY0ZWwtbGludXgtZ251YWJpbjMyLWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzNjQiLCAgICJtaXBzNjQtbGludXgtZ251YWJpNjQtZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHM2NGVsIiwgICAibWlwczY0ZWwtbGludXgtZ251YWJpNjQtZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW5ldGJzZC1pMzg2IiwJImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tNDg2OjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1uZXRic2QtbTY4ayIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1uZXRic2Qtc3BhcmMiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW12ODo6KHVua25vd24pOjo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1vcGVuYnNkLWFscGhhIiwiZ2NjOi1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OjpTSVhUWV9GT1VSX0JJVF9MT05HIERFU19JTlQgREVTX1BUUiBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1vcGVuYnNkLWkzODYiLCAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tNDg2OjoodW5rbm93bik6OjpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfYXNtfTphLm91dDpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3BlbmJzZC1taXBzIiwiZ2NjOi1ETF9FTkRJQU4gJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggUkM0X0NIQVIgREVTX1VOUk9MTCBERVNfUklTQzIgREVTX1BUUiBCRl9QVFI6JHtub19hc219OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1vcjFrIiwgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tcG93ZXJwYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wb3dlcnBjc3BlIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBwYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tcHBjNjRlbCIsImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0bGU6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tczM5MCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwgCi0rImRlYmlhbi1zMzkweCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2gzIiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoNCIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zaDNlYiIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zaDRlYiIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1tMzJyIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNwYXJjIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNwYXJjLXY4IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OCAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmMtdjkiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PXY5IC1XYSwtQXY4cGx1cyAtRFVMVFJBU1BBUkMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNwYXJjNjQiLCJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjlfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi14MzIiLCJnY2M6LW14MzIgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbXgzMjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OngzMiIsCi0rCi0gIyMjIwotICMjIyMgVmFyaWV0eSBvZiBMSU5VWDotKQotICMjIyMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2U0ZTQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDA4ZmFjZTQzNTNkODAxMTE5NzNhYmE5YzEzMDRjOTIxNThjZmFkMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggTWFyIDIwMTcgMTY6NDA6MTIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGFrZSBsaW5raW5nIGZsYWdzIGZyb20gTERGTEFHUyBlbnYgdmFyCi0KLVRoaXMgZml4ZXMgIk5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5IiBpc3N1ZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsIHwgMiArLQotIENvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbCBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAotaW5kZXggYzAyOTgxNy4uNDNiNzY5YiAxMDA2NDQKLS0tLSBhL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAotKysrIGIvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsCi1AQCAtMTczLDcgKzE3Myw3IEBAIENST1NTX0NPTVBJTEU9IHstICRjb25maWd7Y3Jvc3NfY29tcGlsZV9wcmVmaXh9IC19Ci0gQ0M9ICQoQ1JPU1NfQ09NUElMRSl7LSAkdGFyZ2V0e2NjfSAtfQotIENGTEFHUz17LSBvdXIgJGNmbGFnczIgPSBqb2luKCIgIiwobWFwIHsgIi1EIi4kX30gQHskdGFyZ2V0e2RlZmluZXN9fSwgQHskY29uZmlne2RlZmluZXN9fSksIi1ET1BFTlNTTERJUj1cIlxcXCJcJChPUEVOU1NMRElSKVxcXCJcIiIsIi1ERU5HSU5FU0RJUj1cIlxcXCJcJChFTkdJTkVTRElSKVxcXCJcIiIpIC19IHstICR0YXJnZXR7Y2ZsYWdzfSAtfSB7LSAkY29uZmlne2NmbGFnc30gLX0KLSBDRkxBR1NfUT17LSAkY2ZsYWdzMiA9fiBzfChbXFwiXSl8XFwkMXxnOyAkY2ZsYWdzMiAtfSB7LSAkY29uZmlne2NmbGFnc30gLX0KLS1MREZMQUdTPSB7LSAkdGFyZ2V0e2xmbGFnc30gLX0KLStMREZMQUdTPSB7LSAkdGFyZ2V0e2xmbGFnc30uIiAiLiRFTlZ7J0xERkxBR1MnfSAtfQotIFBMSUJfTERGTEFHUz0gey0gJHRhcmdldHtwbGliX2xmbGFnc30gLX0KLSBFWF9MSUJTPSB7LSAkdGFyZ2V0e2V4X2xpYnN9IC19IHstICRjb25maWd7ZXhfbGlic30gLX0KLSBMSUJfQ0ZMQUdTPXstICR0YXJnZXR7c2hhcmVkX2NmbGFnfSB8fCAiIiAtfQotZGlmZiAtLWdpdCBhL0NvbmZpZ3VyZSBiL0NvbmZpZ3VyZQotaW5kZXggYWVlN2NjMy4uMjc0ZDIzNiAxMDA3NTUKLS0tLSBhL0NvbmZpZ3VyZQotKysrIGIvQ29uZmlndXJlCi1AQCAtOTc5LDcgKzk3OSw3IEBAICRjb25maWd7YnVpbGRfZmlsZX0gPSAkdGFyZ2V0e2J1aWxkX2ZpbGV9OwotICRjb25maWd7ZGVmaW5lc30gPSBbXTsKLSAkY29uZmlne2NmbGFnc30gPSAiIjsKLSAkY29uZmlne2V4X2xpYnN9ID0gIiI7Ci0tJGNvbmZpZ3tzaGFyZWRfbGRmbGFnfSA9ICIiOwotKyRjb25maWd7c2hhcmVkX2xkZmxhZ30gPSAkRU5WeydMREZMQUdTJ307Ci0gCi0gIyBNYWtlIHN1cmUgYnVpbGRfc2NoZW1lIGlzIGNvbnNpc3RlbnQuCi0gJHRhcmdldHtidWlsZF9zY2hlbWV9ID0gWyAkdGFyZ2V0e2J1aWxkX3NjaGVtZX0gXQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWJ1aWxkaW5mby1zdHJpcC1zeXNyb290LWFuZC1kZWJ1Zy1wcmVmaXgtbWFwLWZyb20tY28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYnVpbGRpbmZvLXN0cmlwLXN5c3Jvb3QtYW5kLWRlYnVnLXByZWZpeC1tYXAtZnJvbS1jby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGI2MmFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWJ1aWxkaW5mby1zdHJpcC1zeXNyb290LWFuZC1kZWJ1Zy1wcmVmaXgtbWFwLWZyb20tY28ucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSAzZTFkMDA0ODEwOTNlMTA3NzVlYWY2OWQ2MTljNDViMzJhNGFhN2RjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP01hcnRpbj0yMEh1bmRlYj1DMz1COGxsPz0gPG1hcnRpbkBnZWFuaXguY29tPgorRGF0ZTogVHVlLCA2IE5vdiAyMDE4IDE0OjUwOjQ3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkaW5mbzogc3RyaXAgc3lzcm9vdCBhbmQgZGVidWctcHJlZml4LW1hcCBmcm9tIGNvbXBpbGVyCisgaW5mbworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGUgb3BlbnNzbCBidWlsZCBzeXN0ZW0gZ2VuZXJhdGVzIGJ1aWxkaW5mLmggY29udGFpbmluZyB0aGUgZnVsbAorY29tcGlsZXIgY29tbWFuZCBsaW5lIHVzZWQgdG8gY29tcGlsZSBvYmplY3RzLiBUaGlzIGJyZWFrcworcmVwcm9kdWNpYmlsaXR5LCBhcyB0aGUgY29tcGlsZSBjb21tYW5kIGlzIGJha2VkIGludG8gbGliY3J5cHRvLCB3aGVyZQoraXQgaXMgdXNlZCB3aGVuIHJ1bm5pbmcgYG9wZW5zc2wgdmVyc2lvbiAtZmAuCisKK0FkZCBzdHJpcHBlZCBidWlsZCB2YXJpYWJsZXMgZm9yIHRoZSBjb21waWxlciBhbmQgY2ZsYWdzIGxpbmVzLCBhbmQgdXNlCit0aG9zZSB3aGVuIGdlbmVyYXRpbmcgYnVpbGRpbmZvLmguCisKK1RoaXMgaXMgYmFzZWQgb24gYSBzaW1pbGFyIHBhdGNoIGZvciBvbGRlciBvcGVuc3NsIHZlcnNpb25zOgoraHR0cHM6Ly9wYXRjaHdvcmsub3BlbmVtYmVkZGVkLm9yZy9wYXRjaC8xNDcyMjkvCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSHVuZGViw7hsbCA8bWFydGluQGdlYW5peC5jb20+CistLS0KKyBDb25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwgfCAxMCArKysrKysrKystCisgY3J5cHRvL2J1aWxkLmluZm8gICAgICAgICAgICAgICAgIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwgYi9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKK2luZGV4IDE2YWY0ZDIwODcuLjU0YzE2Mjc4NGMgMTAwNjQ0CistLS0gYS9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKKysrKyBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAorQEAgLTMxNywxMyArMzE3LDIxIEBAIEJJTl9MREZMQUdTPXstIGpvaW4oJyAnLCAkdGFyZ2V0e2Jpbl9sZmxhZ3N9IHx8ICgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnJChDTkZfTERGTEFHUyknLCAnJChMREZMQUdTKScpIC19CisgQklOX0VYX0xJQlM9JChDTkZfRVhfTElCUykgJChFWF9MSUJTKQorIAorLSMgQ1BQRkxBR1NfUSBpcyB1c2VkIGZvciBvbmUgdGhpbmcgb25seTogdG8gYnVpbGQgdXAgYnVpbGRpbmYuaAorKyMgKl9RIHZhcmlhYmxlcyBhcmUgdXNlZCBmb3Igb25lIHRoaW5nIG9ubHk6IHRvIGJ1aWxkIHVwIGJ1aWxkaW5mLmgKKyBDUFBGTEFHU19RPXstICRjcHBmbGFnczEgPX4gc3woW1xcIl0pfFxcJDF8ZzsKKyAgICAgICAgICAgICAgICRjcHBmbGFnczIgPX4gc3woW1xcIl0pfFxcJDF8ZzsKKyAgICAgICAgICAgICAgICRsaWJfY3BwZmxhZ3MgPX4gc3woW1xcIl0pfFxcJDF8ZzsKKyAgICAgICAgICAgICAgIGpvaW4oJyAnLCAkbGliX2NwcGZsYWdzIHx8ICgpLCAkY3BwZmxhZ3MyIHx8ICgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICRjcHBmbGFnczEgfHwgKCkpIC19CisgCisrQ0ZMQUdTX1E9ey0gZm9yIChAeyRjb25maWd7Q0ZMQUdTfX0pIHsKKysgICAgICAgICAgICAgIHN8LWZkZWJ1Zy1wcmVmaXgtbWFwPVteIF0rfC1mZGVidWctcHJlZml4LW1hcD18ZzsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgam9pbignICcsIEB7JGNvbmZpZ3tDRkxBR1N9fSkgLX0KKysKKytDQ19RPXstICRjb25maWd7Q0N9ID1+IHN8LS1zeXNyb290PVteIF0rfC0tc3lzcm9vdD1yZWNpcGUtc3lzcm9vdHxnOworKyAgICAgICAgam9pbignICcsICRjb25maWd7Q0N9KSAtfQorKworIFBFUkxBU01fU0NIRU1FPSB7LSAkdGFyZ2V0e3Blcmxhc21fc2NoZW1lfSAtfQorIAorICMgRm9yIHg4NiBhc3NlbWJsZXI6IFNldCBQUk9DRVNTT1IgdG8gMzg2IGlmIHlvdSB3YW50IHRvIHN1cHBvcnQKK2RpZmYgLS1naXQgYS9jcnlwdG8vYnVpbGQuaW5mbyBiL2NyeXB0by9idWlsZC5pbmZvCitpbmRleCBiNTE1YjczMThlLi44YzljZWUyYTA5IDEwMDY0NAorLS0tIGEvY3J5cHRvL2J1aWxkLmluZm8KKysrKyBiL2NyeXB0by9idWlsZC5pbmZvCitAQCAtMTAsNyArMTAsNyBAQCBFWFRSQT0gIC4uL21zL3VwbGluay14ODYucGwgLi4vbXMvdXBsaW5rLmMgLi4vbXMvYXBwbGluay5jIFwKKyAgICAgICAgIHBwY2NwdWlkLnBsIHBhcmlzY2lkLnBsIGFscGhhY3B1aWQucGwgYXJtNjRjcHVpZC5wbCBhcm12NGNwdWlkLnBsCisgCisgREVQRU5EW2N2ZXJzaW9uLm9dPWJ1aWxkaW5mLmgKKy1HRU5FUkFURVtidWlsZGluZi5oXT0uLi91dGlsL21rYnVpbGRpbmYucGwgIiQoQ0MpICQoTElCX0NGTEFHUykgJChDUFBGTEFHU19RKSIgIiQoUExBVEZPUk0pIgorK0dFTkVSQVRFW2J1aWxkaW5mLmhdPS4uL3V0aWwvbWtidWlsZGluZi5wbCAiJChDQ19RKSAkKENGTEFHU19RKSAkKENQUEZMQUdTX1EpIiAiJChQTEFURk9STSkiCisgREVQRU5EW2J1aWxkaW5mLmhdPS4uL2NvbmZpZ2RhdGEucG0KKyAKKyBHRU5FUkFURVt1cGxpbmsteDg2LnNdPS4uL21zL3VwbGluay14ODYucGwgJChQRVJMQVNNX1NDSEVNRSkKKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLXNraXAtdGVzdF9zeW1ib2xfcHJlc2VuY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhkOTY1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYTk0MDFiMjI4OTY1NmM1YTM2ZGQxYjBlY2ViZjBkMjNlMjkxY2U3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMiBPY3QgMjAxOCAyMzo1ODoyNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBza2lwIHRlc3Rfc3ltYm9sX3ByZXNlbmNlCisKK1dlIGNhbm5vdCBza2lwIGAwMS10ZXN0X3N5bWJvbF9wcmVzZW5jZS50JyBieSBjb25maWd1cmluZyBvcHRpb24gYG5vLXNoYXJlZCcKK2FzIElOU1RBTEwgdG9sZCB1cyB0aGUgc2hhcmVkIGxpYnJhcmllcyB3aWxsIG5vdCBiZSBidWlsdC4KKworW0lOU1RBTEwgc25pcF0KKyBOb3RlcyBvbiBzaGFyZWQgbGlicmFyaWVzCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgRm9yIG1vc3Qgc3lzdGVtcyB0aGUgT3BlblNTTCBDb25maWd1cmUgc2NyaXB0IGtub3dzIHdoYXQgaXMgbmVlZGVkIHRvCisgYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBmb3IgbGliY3J5cHRvIGFuZCBsaWJzc2wuIE9uIHRoZXNlIHN5c3RlbXMKKyB0aGUgc2hhcmVkIGxpYnJhcmllcyB3aWxsIGJlIGNyZWF0ZWQgYnkgZGVmYXVsdC4gVGhpcyBjYW4gYmUgc3VwcHJlc3NlZCBhbmQKKyBvbmx5IHN0YXRpYyBsaWJyYXJpZXMgY3JlYXRlZCBieSB1c2luZyB0aGUgIm5vLXNoYXJlZCIgb3B0aW9uLiBPbiBzeXN0ZW1zCisgd2hlcmUgT3BlblNTTCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHRoZSAibm8tc2hhcmVkIgorIG9wdGlvbiB3aWxsIGJlIGZvcmNlZCBhbmQgb25seSBzdGF0aWMgbGlicmFyaWVzIHdpbGwgYmUgY3JlYXRlZC4KK1tJTlNUQUxMIHNuaXBdCisKK0hlbmNlIGRpcmVjdGx5IG1vZGlmaWNhdGlvbiB0aGUgY2FzZSB0byBza2lwIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0L3JlY2lwZXMvMDEtdGVzdF9zeW1ib2xfcHJlc2VuY2UudCB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWNpcGVzLzAxLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnQgYi90ZXN0L3JlY2lwZXMvMDEtdGVzdF9zeW1ib2xfcHJlc2VuY2UudAoraW5kZXggN2YyYTJkNy4uMGI5Mzc0NSAxMDA2NDQKKy0tLSBhL3Rlc3QvcmVjaXBlcy8wMS10ZXN0X3N5bWJvbF9wcmVzZW5jZS50CisrKysgYi90ZXN0L3JlY2lwZXMvMDEtdGVzdF9zeW1ib2xfcHJlc2VuY2UudAorQEAgLTE0LDggKzE0LDcgQEAgdXNlIE9wZW5TU0w6OlRlc3Q6OlV0aWxzOworIAorIHNldHVwKCJ0ZXN0X3N5bWJvbF9wcmVzZW5jZSIpOworIAorLXBsYW4gc2tpcF9hbGwgPT4gIk9ubHkgdXNlZnVsIHdoZW4gYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcyIKKy0gICAgaWYgZGlzYWJsZWQoInNoYXJlZCIpOworK3BsYW4gc2tpcF9hbGwgPT4gIlRoZSBjYXNlIG5lZWRzIGRlYnVnIHN5bWJvbHMgdGhlbiB3ZSBqdXN0IGRpc2FibGUgaXQiOworIAorIG15IEBsaWJuYW1lcyA9ICgiY3J5cHRvIiwgInNzbCIpOworIG15ICR0ZXN0Y291bnQgPSBzY2FsYXIgQGxpYm5hbWVzOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDItZml4LUNWRS0yMDE4LTA3MzQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDItZml4LUNWRS0yMDE4LTA3MzQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEzZTAzZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMi1maXgtQ1ZFLTIwMTgtMDczNC5wYXRjaApAQCAtMCwwICsxLDEwOCBAQAorQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTA3MzQuIFJlbW92ZSBhIHNlY3Rpb24gd2hpY2ggb25seSByZW1vdmUgYQorc3BhY2UuIEl0IGNhbid0IGJlIGFwcGxpZWQgYmVjYXVzZSB0aGUgY29udGV4dCBpcyBkaWZmZXJlbnQuCisKK0NWRTogQ1ZFLTIwMTgtMDczNAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworRnJvbSA4YWJmZTcyZThjMWRlMWI5NWY1MGFhMGQ5MTM0ODAzYjRkMDAwNzBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bGkgPHBhdWwuZGFsZUBvcmFjbGUuY29tPgorRGF0ZTogV2VkLCAyNCBPY3QgMjAxOCAwNzo0Mjo0NiArMTAwMAorU3ViamVjdDogW1BBVENIXSBUaW1pbmcgdnVsbmVyYWJpbGl0eSBpbiBEU0Egc2lnbmF0dXJlIGdlbmVyYXRpb24KKyAoQ1ZFLTIwMTgtMDczNCkuCisKK0F2b2lkIGEgdGltaW5nIGF0dGFjayB0aGF0IGxlYWtzIGluZm9ybWF0aW9uIHZpYSBhIHNpZGUgY2hhbm5lbCB0aGF0Cit0cmlnZ2VycyB3aGVuIGEgQk4gaXMgcmVzaXplZC4gIEluY3JlYXNpbmcgdGhlIHNpemUgb2YgdGhlIEJOcworcHJpb3IgdG8gZG9pbmcgYW55dGhpbmcgd2l0aCB0aGVtIHN1cHByZXNzZXMgdGhlIGF0dGFjay4KKworVGhhbmtzIGR1ZSB0byBTYW11ZWwgV2Vpc2VyIGZvciBmaW5kaW5nIGFuZCBsb2NhdGluZyB0aGlzLgorCitSZXZpZXdlZC1ieTogQmVybmQgRWRsaW5nZXIgPGJlcm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+CisoTWVyZ2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9wdWxsLzc0ODYpCisKKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGE5Y2ZiOGMyYWE3MjU0YTRhYTZhMTcxNjkwOWUzZjhjYjc4MDQ5YjYpCistLS0KKyBjcnlwdG8vZHNhL2RzYV9vc3NsLmMgfCAyOCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jIGIvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCitpbmRleCBjYTIwODExMjAwLi4yZGQyZDc0ODlhIDEwMDY0NAorLS0tIGEvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCisrKysgYi9jcnlwdG8vZHNhL2RzYV9vc3NsLmMKK0BAIC05LDYgKzksNyBAQAorIAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlICJpbnRlcm5hbC9jcnlwdGxpYi5oIgorKyNpbmNsdWRlICJpbnRlcm5hbC9ibl9pbnQuaCIKKyAjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPgorICNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorICNpbmNsdWRlICJkc2FfbG9jbC5oIgorQEAgLTE4MCw5ICsxODEsOSBAQCBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwKKyB7CisgICAgIEJOX0NUWCAqY3R4ID0gTlVMTDsKKyAgICAgQklHTlVNICprLCAqa2ludiA9IE5VTEwsICpyID0gKnJwOworLSAgICBCSUdOVU0gKmwsICptOworKyAgICBCSUdOVU0gKmw7CisgICAgIGludCByZXQgPSAwOworLSAgICBpbnQgcV9iaXRzOworKyAgICBpbnQgcV9iaXRzLCBxX3dvcmRzOworIAorICAgICBpZiAoIWRzYS0+cCB8fCAhZHNhLT5xIHx8ICFkc2EtPmcpIHsKKyAgICAgICAgIERTQWVycihEU0FfRl9EU0FfU0lHTl9TRVRVUCwgRFNBX1JfTUlTU0lOR19QQVJBTUVURVJTKTsKK0BAIC0xOTEsOCArMTkyLDcgQEAgc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sCisgCisgICAgIGsgPSBCTl9uZXcoKTsKKyAgICAgbCA9IEJOX25ldygpOworLSAgICBtID0gQk5fbmV3KCk7CistICAgIGlmIChrID09IE5VTEwgfHwgbCA9PSBOVUxMIHx8IG0gPT0gTlVMTCkKKysgICAgaWYgKGsgPT0gTlVMTCB8fCBsID09IE5VTEwpCisgICAgICAgICBnb3RvIGVycjsKKyAKKyAgICAgaWYgKGN0eF9pbiA9PSBOVUxMKSB7CitAQCAtMjAzLDkgKzIwMyw5IEBAIHN0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorIAorICAgICAvKiBQcmVhbGxvY2F0ZSBzcGFjZSAqLworICAgICBxX2JpdHMgPSBCTl9udW1fYml0cyhkc2EtPnEpOworLSAgICBpZiAoIUJOX3NldF9iaXQoaywgcV9iaXRzKQorLSAgICAgICAgfHwgIUJOX3NldF9iaXQobCwgcV9iaXRzKQorLSAgICAgICAgfHwgIUJOX3NldF9iaXQobSwgcV9iaXRzKSkKKysgICAgcV93b3JkcyA9IGJuX2dldF90b3AoZHNhLT5xKTsKKysgICAgaWYgKCFibl93ZXhwYW5kKGssIHFfd29yZHMgKyAyKQorKyAgICAgICAgfHwgIWJuX3dleHBhbmQobCwgcV93b3JkcyArIDIpKQorICAgICAgICAgZ290byBlcnI7CisgCisgICAgIC8qIEdldCByYW5kb20gayAqLworQEAgLTI0MCwxNCArMjQwLDE3IEBAIHN0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorICAgICAgKiBzbWFsbCB0aW1pbmcgaW5mb3JtYXRpb24gbGVha2FnZS4gIFdlIHRoZW4gY2hvb3NlIHRoZSBzdW0gdGhhdCBpcworICAgICAgKiBvbmUgYml0IGxvbmdlciB0aGFuIHRoZSBtb2R1bHVzLgorICAgICAgKgorLSAgICAgKiBUT0RPOiByZXZpc2l0IHRoZSBCTl9jb3B5IGFpbWluZyBmb3IgYSBtZW1vcnkgYWNjZXNzIGFnbm9zdGljCistICAgICAqIGNvbmRpdGlvbmFsIGNvcHkuCisrICAgICAqIFRoZXJlIGFyZSBzb21lIGNvbmNlcm5zIGFib3V0IHRoZSBlZmZpY2FjeSBvZiBkb2luZyB0aGlzLiAgTW9yZQorKyAgICAgKiBzcGVjaWZpY2x5IHJlZmVyIHRvIHRoZSBkaXNjdXNzaW9uIHN0YXJ0aW5nIHdpdGg6CisrICAgICAqICAgICBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvNzQ4NiNkaXNjdXNzaW9uX3IyMjgzMjM3MDUKKysgICAgICogVGhlIGZpeCBpcyB0byByZXdvcmsgQk4gc28gdGhlc2UgZ3ltbmFzdGljcyBhcmVuJ3QgcmVxdWlyZWQuCisgICAgICAqLworICAgICBpZiAoIUJOX2FkZChsLCBrLCBkc2EtPnEpCistICAgICAgICB8fCAhQk5fYWRkKG0sIGwsIGRzYS0+cSkKKy0gICAgICAgIHx8ICFCTl9jb3B5KGssIEJOX251bV9iaXRzKGwpID4gcV9iaXRzID8gbCA6IG0pKQorKyAgICAgICAgfHwgIUJOX2FkZChrLCBsLCBkc2EtPnEpKQorICAgICAgICAgZ290byBlcnI7CisgCisrICAgIEJOX2NvbnN0dGltZV9zd2FwKEJOX2lzX2JpdF9zZXQobCwgcV9iaXRzKSwgaywgbCwgcV93b3JkcyArIDIpOworKworICAgICBpZiAoKGRzYSktPm1ldGgtPmJuX21vZF9leHAgIT0gTlVMTCkgeworICAgICAgICAgICAgIGlmICghZHNhLT5tZXRoLT5ibl9tb2RfZXhwKGRzYSwgciwgZHNhLT5nLCBrLCBkc2EtPnAsIGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc2EtPm1ldGhvZF9tb250X3ApKQorQEAgLTI3NSw3ICsyNzgsNiBAQCBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwKKyAgICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7CisgICAgIEJOX2NsZWFyX2ZyZWUoayk7CisgICAgIEJOX2NsZWFyX2ZyZWUobCk7CistICAgIEJOX2NsZWFyX2ZyZWUobSk7CisgICAgIHJldHVybiByZXQ7CisgfQorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAzLWZpeC1DVkUtMjAxOC0wNzM1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAzLWZpeC1DVkUtMjAxOC0wNzM1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNjMyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDMtZml4LUNWRS0yMDE4LTA3MzUucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorQ1ZFOiBDVkUtMjAxOC0wNzM1CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK0Zyb20gYjFkNmQ1NWVjZTFjMjZmYTI4MjllMmI4MTliMDM4ZDdiNmQ2OTJiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWxpIDxwYXVsLmRhbGVAb3JhY2xlLmNvbT4KK0RhdGU6IEZyaSwgMjYgT2N0IDIwMTggMTA6NTQ6NTggKzEwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGltaW5nIHZ1bG5lcmFiaWxpdHkgaW4gRUNEU0Egc2lnbmF0dXJlIGdlbmVyYXRpb24KKyAoQ1ZFLTIwMTgtMDczNSkKKworUHJlYWxsb2NhdGUgYW4gZXh0cmEgbGltYiBmb3Igc29tZSBvZiB0aGUgYmlnIG51bWJlcnMgdG8gYXZvaWQgYSByZWFsbG9jYXRpb24KK3RoYXQgY2FuIHBvdGVudGlhbGx5IHByb3ZpZGUgYSBzaWRlIGNoYW5uZWwuCisKK1Jldmlld2VkLWJ5OiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KKyhNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvNzQ4NikKKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgOTk1NDBlYzc5NDkxZjU5ZWQ4YjQ2YjRlZGYxMzBlMTdkYzkwN2Y1MikKKy0tLQorIGNyeXB0by9lYy9lY19tdWx0LmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jcnlwdG8vZWMvZWNfbXVsdC5jIGIvY3J5cHRvL2VjL2VjX211bHQuYworaW5kZXggN2UxYjM2NTBlNy4uMGUwYTVlMTM5NCAxMDA2NDQKKy0tLSBhL2NyeXB0by9lYy9lY19tdWx0LmMKKysrKyBiL2NyeXB0by9lYy9lY19tdWx0LmMKK0BAIC0yMDYsOCArMjA2LDggQEAgaW50IGVjX3NjYWxhcl9tdWxfbGFkZGVyKGNvbnN0IEVDX0dST1VQICpncm91cCwgRUNfUE9JTlQgKnIsCisgICAgICAqLworICAgICBjYXJkaW5hbGl0eV9iaXRzID0gQk5fbnVtX2JpdHMoY2FyZGluYWxpdHkpOworICAgICBncm91cF90b3AgPSBibl9nZXRfdG9wKGNhcmRpbmFsaXR5KTsKKy0gICAgaWYgKChibl93ZXhwYW5kKGssIGdyb3VwX3RvcCArIDEpID09IE5VTEwpCistICAgICAgICB8fCAoYm5fd2V4cGFuZChsYW1iZGEsIGdyb3VwX3RvcCArIDEpID09IE5VTEwpKSB7CisrICAgIGlmICgoYm5fd2V4cGFuZChrLCBncm91cF90b3AgKyAyKSA9PSBOVUxMKQorKyAgICAgICAgfHwgKGJuX3dleHBhbmQobGFtYmRhLCBncm91cF90b3AgKyAyKSA9PSBOVUxMKSkgeworICAgICAgICAgRUNlcnIoRUNfRl9FQ19TQ0FMQVJfTVVMX0xBRERFUiwgRVJSX1JfQk5fTElCKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CitAQCAtMjQ0LDcgKzI0NCw3IEBAIGludCBlY19zY2FsYXJfbXVsX2xhZGRlcihjb25zdCBFQ19HUk9VUCAqZ3JvdXAsIEVDX1BPSU5UICpyLAorICAgICAgKiBrIDo9IHNjYWxhciArIDIqY2FyZGluYWxpdHkKKyAgICAgICovCisgICAgIGtiaXQgPSBCTl9pc19iaXRfc2V0KGxhbWJkYSwgY2FyZGluYWxpdHlfYml0cyk7CistICAgIEJOX2NvbnN0dGltZV9zd2FwKGtiaXQsIGssIGxhbWJkYSwgZ3JvdXBfdG9wICsgMSk7CisrICAgIEJOX2NvbnN0dGltZV9zd2FwKGtiaXQsIGssIGxhbWJkYSwgZ3JvdXBfdG9wICsgMik7CisgCisgICAgIGdyb3VwX3RvcCA9IGJuX2dldF90b3AoZ3JvdXAtPmZpZWxkKTsKKyAgICAgaWYgKChibl93ZXhwYW5kKHMtPlgsIGdyb3VwX3RvcCkgPT0gTlVMTCkKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKaW5kZXggNjVjNmNjNy4uMGE2MjBkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKQEAgLTEsNCArMSwxMiBAQAogIyEvYmluL3NoCi1jZCB0ZXN0Ci1PUEVOU1NMX0VOR0lORVM9Li4vZW5naW5lcyBCTERUT1A9Li4gU1JDVE9QPS4uIHBlcmwgcnVuX3Rlc3RzLnBsCi1jZCAuLgorCitzZXQgLWUKKworIyBPcHRpb25hbCBhcmd1bWVudHMgYXJlICdsaXN0JyB0byBsaXN0cyBhbGwgdGVzdHMsIG9yIHRoZSB0ZXN0IG5hbWUgKGJhc2UgbmFtZQorIyBpZSB0ZXN0X2V2cCwgbm90IDAzX3Rlc3RfZXZwLnQpLgorCitleHBvcnQgVE9QPS4KKyMgT1BFTlNTTF9FTkdJTkVTIGlzIHJlbGF0aXZlIGZyb20gdGhlIHRlc3QgYmluYXJpZXMKK2V4cG9ydCBPUEVOU1NMX0VOR0lORVM9Li4vZW5naW5lcworCitwZXJsIC4vdGVzdC9ydW5fdGVzdHMucGwgJCoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC8wMDAxLWFsbG93LW1hbnBhZ2VzLXRvLWJlLWRpc2FibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLzAwMDEtYWxsb3ctbWFucGFnZXMtdG8tYmUtZGlzYWJsZWQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwLzAwMDEtYWxsb3ctbWFucGFnZXMtdG8tYmUtZGlzYWJsZWQucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLWFsbG93LW1hbnBhZ2VzLXRvLWJlLWRpc2FibGVkLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvMDAwMS1maXgtQ1ZFLTIwMTgtMDczNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLWZpeC1DVkUtMjAxOC0wNzM0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ODY1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvMDAwMS1maXgtQ1ZFLTIwMTgtMDczNC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitDVkU6IENWRS0yMDE4LTA3MzQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworRnJvbSA0M2U2YTU4ZDQ5OTFhNDUxZGFmNDg5MWZmMDVhNDg3MzVkZjg3MWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bGkgPHBhdWwuZGFsZUBvcmFjbGUuY29tPgorRGF0ZTogTW9uLCAyOSBPY3QgMjAxOCAwODoyNDoyMiArMTAwMAorU3ViamVjdDogW1BBVENIXSBNZXJnZSBEU0EgcmVhbGxvY2F0aW9uIHRpbWluZyBmaXggQ1ZFLTIwMTgtMDczNC4KKworUmV2aWV3ZWQtYnk6IFJpY2hhcmQgTGV2aXR0ZSA8bGV2aXR0ZUBvcGVuc3NsLm9yZz4KKyhNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvNzUxMykKKy0tLQorIGNyeXB0by9kc2EvZHNhX29zc2wuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NyeXB0by9kc2EvZHNhX29zc2wuYyBiL2NyeXB0by9kc2EvZHNhX29zc2wuYworaW5kZXggMmRjZmVkZWVlZS4uMTAwZTI2OTI2OCAxMDA2NDQKKy0tLSBhL2NyeXB0by9kc2EvZHNhX29zc2wuYworKysrIGIvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCitAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLCBCSUdOVU0gKipraW52cCwKKyAgICAgICAgIGdvdG8gZXJyOworIAorICAgICAvKiBQcmVhbGxvY2F0ZSBzcGFjZSAqLworLSAgICBxX2JpdHMgPSBCTl9udW1fYml0cyhkc2EtPnEpOworKyAgICBxX2JpdHMgPSBCTl9udW1fYml0cyhkc2EtPnEpICsgc2l6ZW9mKGRzYS0+cS0+ZFswXSkgKiAxNjsKKyAgICAgaWYgKCFCTl9zZXRfYml0KCZrLCBxX2JpdHMpCisgICAgICAgICB8fCAhQk5fc2V0X2JpdCgmbCwgcV9iaXRzKQorICAgICAgICAgfHwgIUJOX3NldF9iaXQoJm0sIHFfYml0cykpCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL01ha2VmaWxlcy1wdGVzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvY29uZmlndXJlLXRhcmdldHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvY29uZmlndXJlLXRhcmdldHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvY29uZmlndXJlLXRhcmdldHMucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzA5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KKworSW5kZXg6IG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4wLjJuLm9yaWcvQ29uZmlndXJlCisrKysgb3BlbnNzbC0xLjAuMm4vQ29uZmlndXJlCitAQCAtMTMzLDYgKzEzMywxMCBAQCBteSAkY2xhbmdfZGV2dGVhbV93YXJuID0gIi1Xbm8tdW51c2VkLXBhCisgIyBXYXJuIHRoYXQgIm1ha2UgZGVwZW5kIiBzaG91bGQgYmUgcnVuPworIG15ICR3YXJuX21ha2VfZGVwZW5kID0gMDsKKyAKKysjIFRoZXJlIGFyZSBubyBzZXBhcmF0ZSBDRkxBR1MvQ1BQRkxBR1MvTERGTEFHUywgc2V0IGV2ZXJ5dGhpbmcgaW4gQ0ZMQUdTCisrbXkgJGRlYmlhbl9jZmxhZ3MgPSBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IENGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IENQUEZMQUdTYCAuIGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgTERGTEFHU2AgLiAiLVdhLC0tbm9leGVjc3RhY2sgLVdhbGwiOworKyRkZWJpYW5fY2ZsYWdzID1+IHMvXG4vIC9nOworKworIG15ICRzdHJpY3Rfd2FybmluZ3MgPSAwOworIAorIG15ICR4ODZfZ2NjX2Rlcz0iREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCI7CitAQCAtMzY5LDYgKzM3Myw1NSBAQCBteSAldGFibGU9KAorICJvc2YxLWFscGhhLWNjIiwgICJjYzotc3RkMSAtdHVuZSBob3N0IC1PNCAtcmVhZG9ubHlfc3RyaW5nczo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjo6LnNvIiwKKyAidHJ1NjQtYWxwaGEtY2MiLCAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtZmFzdCAtcmVhZG9ubHlfc3RyaW5nczo6LXB0aHJlYWQ6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Oi1tc3ltOi5zbyIsCisgCisrIyBEZWJpYW4gR05VLyogKHZhcmlvdXMgYXJjaGl0ZWN0dXJlcykKKysiZGViaWFuLWFscGhhIiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbHBoYS1ldjQiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT1ldjQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbHBoYS1ldjUiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT1ldjU6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke2FscGhhX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm02NCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWFybWVsIiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWFybWhmIiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YXJtdjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWFtZDY0IiwgImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6IiwKKysiZGViaWFuLWF2cjMyIiwgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLWZvbWl0LWZyYW1lLXBvaW50ZXI6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9OR19CRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4ta2ZyZWVic2QtYW1kNjQiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4ta2ZyZWVic2QtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNDg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taHBwYSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taHVyZC1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TIC1PMyAtV2EsLS1ub2V4ZWNzdGFjayAtZyAtbXR1bmU9aTQ4NiAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWlhNjQiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19VTlJPTEwgREVTX0lOVDoke2lhNjRfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taTM4Ni1pNDg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYtaTU4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk1ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2LWk2ODYvY21vdiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk2ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1tNjhrIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHNlbCIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzbjMyIiwgICAibWlwczY0LWxpbnV4LWdudWFiaW4zMi1nY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwc24zMmVsIiwgICAibWlwczY0ZWwtbGludXgtZ251YWJpbjMyLWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzNjQiLCAgICJtaXBzNjQtbGludXgtZ251YWJpNjQtZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwczY0ZWwiLCAgICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NC1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1uZXRic2QtaTM4NiIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLW02OGsiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLXNwYXJjIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tdjg6Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1hbHBoYSIsImdjYzotRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1pMzg2IiwgICJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQ6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW9wZW5ic2QtbWlwcyIsImdjYzotRExfRU5ESUFOICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3IxayIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBvd2VycGMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tcG93ZXJwY3NwZSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1wcGM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBwYzY0ZWwiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXMzOTAiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6UkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsIAorKyJkZWJpYW4tczM5MHgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNoMyIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zaDQiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2gzZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2g0ZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbTMyciIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYy12OCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djggLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNwYXJjLXY5IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OSAtV2EsLUF2OHBsdXMgLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4teDMyIiwiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzIiLAorKworICMjIyMKKyAjIyMjIFZhcmlldHkgb2YgTElOVVg6LSkKKyAjIyMjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vbWFuLWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vbWFuLWRpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL21hbi1kaXIucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vbWFuLWRpci5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL25vLXJwYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL3BpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vcGljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vcGljLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL3BpYy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29lLWxkZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvb2UtbGRmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvb2UtbGRmbGFncy5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29lLWxkZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29wZW5zc2wtY19yZWhhc2guc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvb3BlbnNzbC1jX3JlaGFzaC5zaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvb3BlbnNzbC1jX3JlaGFzaC5zaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29wZW5zc2wtY19yZWhhc2guc2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3BhcmFsbGVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3BhcmFsbGVsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9wYXJhbGxlbC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3BhcmFsbGVsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9wdGVzdC1kZXBzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3B0ZXN0LWRlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3B0ZXN0LWRlcHMucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9wdGVzdC1kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcnVuLXB0ZXN0CnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9zaGFyZWQtbGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9zaGFyZWQtbGlicy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvc2hhcmVkLWxpYnMucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9zaGFyZWQtbGlicy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwXzEuMC4ycC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMF8xLjAuMnAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMyNTk0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMF8xLjAuMnAuYmIKQEAgLTAsMCArMSwzNjEgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY0NzUzNjg5MjQ4MjdkMDZkNGI0MTYxMTFjOGJkYjc3IgorCitERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBvcGVuc3NsLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zaGFyZWQtbGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LWRlcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWxsb3ctbWFucGFnZXMtdG8tYmUtZGlzYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtQ1ZFLTIwMTgtMDczNC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImFjNWViMzBiZjU3OThhYTE0YjFhZTZkMGU3ZGE1OGRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwYTk4ZTA3YjFhODllYjhmNmE5OTQ3N2YyNjJkZjcxYzZmYTdiZWY3N2RmNGRjODMwMjVhMjg0NWM4MjdkMDAiCisKK1MgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJvcGVuc3NsLSg/UDxwdmVyPjFcLjAuKylcLnRhciIKKworaW5oZXJpdCBwa2djb25maWcgc2l0ZWluZm8gbXVsdGlsaWJfaGVhZGVyIHB0ZXN0IG1hbnBhZ2VzCisKK1BBQ0tBR0VDT05GSUcgPz0gImNyeXB0b2Rldi1saW51eCIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMsLGNyeXB0b2Rldi1saW51eCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIiwsLCIKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLCwsIgorCisjIFJlbW92ZSB0aGlzIHRvIGVuYWJsZSBTU0x2My4gU1NMdjMgaXMgZGVmYXVsdGVkIHRvIGRpc2FibGVkIGR1ZSB0byB0aGUgUE9PRExFCisjIHZ1bG5lcmFiaWxpdHkKK0VYVFJBX09FQ09ORiA9ICJuby1zc2wzIgorCitFWFRSQV9PRU1BS0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWFucGFnZXMnLCAnJywgJ09FX0RJU0FCTEVfTUFOUEFHRVM9MScsIGQpfSIKKworZXhwb3J0IE9FX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKKworIyBvcGVuc3NsIGZhaWxzIHdpdGggY2NhY2hlOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODEwCitDQ0FDSEUgPSAiIgorCitURVJNSU8gPz0gIi1EVEVSTUlPIgorVEVSTUlPX2xpYmMtbXVzbCA9ICItRFRFUk1JT1MiCisKK0NGTEFHID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCisgICAgICAgICAke1RFUk1JT30gJHtDRkxBR1N9IC1XYWxsIgorCisjIEF2b2lkIGJpbmFyaWVzIGJlaW5nIG1hcmtlZCBhcyByZXF1aXJpbmcgYW4gZXhlY3V0YWJsZSBzdGFjayBzaW5jZSB0aGV5IGRvbid0CisjIChhbmQgaXQgY2F1c2VzIGlzc3VlcyB3aXRoIFNFTGludXgpCitDRkxBRyArPSAiLVdhLC0tbm9leGVjc3RhY2siCisKK0NGTEFHX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1mUElDIgorCitkb19jb25maWd1cmUgKCkgeworCSMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKKwkjIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5CisJIyBkZWZhdWx0LiAgQXMgdGhlIHJlc3VsdGluZyBlcnJvciBpcyB2ZXJ5IG1pc2xlYWRpbmcgY2hlY2sgZm9yIGJpZ251bSBiZWZvcmUKKwkjIGJ1aWxkaW5nLgorCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCisJCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCisJZmkKKworCWxuIC1zZiBhcHBzL29wZW5zc2wucG9kIGNyeXB0by9jcnlwdG8ucG9kIHNzbC9zc2wucG9kIGRvYy8KKworCW9zPSR7SE9TVF9PU30KKwljYXNlICRvcyBpbgorCWxpbnV4LWdudWVhYmkgfFwKKwlsaW51eC1nbnVzcGUgfFwKKwlsaW51eC1tdXNsZWFiaSB8XAorCWxpbnV4LW11c2xzcGUgfFwKKwlsaW51eC1tdXNsICkKKwkJb3M9bGludXgKKwkJOzsKKwkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWVsZi1hcm1lYgorCQk7OworCWxpbnV4LWFhcmNoNjQqKQorCQl0YXJnZXQ9bGludXgtYWFyY2g2NAorCQk7OworCWxpbnV4LXNoMykKKwkJdGFyZ2V0PWRlYmlhbi1zaDMKKwkJOzsKKwlsaW51eC1zaDQpCisJCXRhcmdldD1kZWJpYW4tc2g0CisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk0ODYKKwkJOzsKKwlsaW51eC1pNTg2IHwgbGludXgtdmlhYzMpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNTg2CisJCTs7CisJbGludXgtaTY4NikKKwkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk2ODYvY21vdgorCQk7OworCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCisJCXRhcmdldD1saW51eC14MzIKKwkJOzsKKwlsaW51eC1nbnU2NC14ODZfNjQpCisJCXRhcmdldD1saW51eC14ODZfNjQKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyplbCkKKwkJdGFyZ2V0PWRlYmlhbi1taXBzbjMyZWwKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyopCisJCXRhcmdldD1kZWJpYW4tbWlwc24zMgorCQk7OworCWxpbnV4LW1pcHMqNjQqZWwpCisJCXRhcmdldD1kZWJpYW4tbWlwczY0ZWwKKwkJOzsKKwlsaW51eC1taXBzKjY0KikKKwkJdGFyZ2V0PWRlYmlhbi1taXBzNjQKKwkJOzsKKwlsaW51eC1taXBzKmVsKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHNlbAorCQk7OworCWxpbnV4LW1pcHMqKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHMKKwkJOzsKKwlsaW51eC1taWNyb2JsYXplKiB8IGxpbnV4LW5pb3MyKiB8IGxpbnV4LWdudSppbHAzMioqIHwgbGludXgtYXJjKikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXBvd2VycGMpCisJCXRhcmdldD1saW51eC1wcGMKKwkJOzsKKwlsaW51eC1wb3dlcnBjNjQpCisJCXRhcmdldD1saW51eC1wcGM2NAorCQk7OworCWxpbnV4LXJpc2N2MzIpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1yaXNjdjY0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0CisJCTs7CisJbGludXgtc3BhcmMgfCBsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OAorCQk7OworCWVzYWMKKworCSMgaW5qZWN0IG1hY2hpbmUtc3BlY2lmaWMgZmxhZ3MKKwlzZWQgLWkgLWUgInN8XlwoXCIkdGFyZ2V0XCIsXHMqXCJbXjpdXCtcKTpcKFteOl1cK1wpfFwxOiR7Q0ZMQUd9fGciIENvbmZpZ3VyZQorCisJdXNlcHJlZml4PSR7cHJlZml4fQorCWlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCisJCXVzZXByZWZpeD0vCisJZmkKKwlsaWJkaXJsZWFmPSIkKCBlY2hvICIke2xpYmRpcn0iIHwgc2VkICJzOl4kdXNlcHJlZml4Lyo6OiIgKSIKKwlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPSRsaWJkaXJsZWFmICR0YXJnZXQKK30KKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBkZXBlbmQKKwlvZV9ydW5tYWtlCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtdGFyZ2V0ICgpIHsKKwlzZWQgLWkgJ3MvXCgoT1BFTlNTTD1cKSIuKiIvXDEib3BlbnNzbCIvJyBNYWtlZmlsZQorCW9lX3J1bm1ha2UgZGVwZW5kCisJY2Nfc2FuaXRpemVkPSQoZWNobyAiJHtDQ30gJHtDRkxBR30iIHwgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIC1lICdzL1sgXHRdXCsvIC9nJykKKwlvZV9ydW5tYWtlIENDX0lORk89IiRjY19zYW5pdGl6ZWQiCit9CisKK2RvX2NvbXBpbGVfcHRlc3QgKCkgeworCW9lX3J1bm1ha2UgYnVpbGR0ZXN0Cit9CisKK2RvX2luc3RhbGwgKCkgeworCSMgQ3JlYXRlICR7RH0vJHtwcmVmaXh9IHRvIGZpeCBwYXJhbGxlbCBpc3N1ZXMKKwlta2RpciAtcCAke0R9LyR7cHJlZml4fS8KKworCW9lX3J1bm1ha2UgSU5TVEFMTF9QUkVGSVg9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBpbnN0YWxsCisKKwlvZV9saWJpbnN0YWxsIC1zbyBsaWJjcnlwdG8gJHtEfSR7bGliZGlyfQorCW9lX2xpYmluc3RhbGwgLXNvIGxpYnNzbCAke0R9JHtsaWJkaXJ9CisKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJY3AgLS1kZXJlZmVyZW5jZSAtUiBpbmNsdWRlL29wZW5zc2wgJHtEfSR7aW5jbHVkZWRpcn0KKworCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKKworCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKKwlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKKworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwZXJsJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsCisJCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0CisJZWxzZQorCQlybSAtZiAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvdHNnZXQKKwlmaQorCisJIyBDcmVhdGUgU1NMIHN0cnVjdHVyZSBmb3IgcGFja2FnZXMgc3VjaCBhcyBjYS1jZXJ0aWZpY2F0ZXMgd2hpY2gKKwkjIGNvbnRhaW4gaGFyZC1jb2RlZCBwYXRocyB0byAvZXRjL3NzbC4gRGViaWFuIGRvZXMgdGhlIHNhbWUuCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2wKKwltdiAke0R9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZSBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAorCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKworCSMgQWx0aG91Z2ggYWJzb2x1dGUgc3ltbGlua3Mgd291bGQgYmUgT0sgZm9yIHRoZSB0YXJnZXQsIHRoZXkgYmVjb21lCisJIyBpbnZhbGlkIGlmIG5hdGl2ZSBvciBuYXRpdmVzZGsgYXJlIHJlbG9jYXRlZCBmcm9tIHNzdGF0ZS4KKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbCcsICcke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cycpfSAke0R9JHtsaWJkaXJ9L3NzbC9jZXJ0cworCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsJywgJyR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUnKX0gJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZQorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsJywgJyR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mJyl9ICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mCisKKwkjIFJlbmFtZSBtYW4gcGFnZXMgdG8gcHJlZml4IG9wZW5zc2wxMC0qCisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBmYDsgZG8KKwkgICAgbXYgJGYgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKKwlkb25lCisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBsYDsgZG8KKwkgICAgbG5fZj1gcmVhZGxpbmsgJGZgCisJICAgIHJtIC1mICRmCisJICAgIGxuIC1zIG9wZW5zc2wxMC0kbG5fZiAkKGRpcm5hbWUgJGYpL29wZW5zc2wxMC0kKGJhc2VuYW1lICRmKQorCWRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAorCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCisJICAgIFNTTF9DRVJUX0RJUj0ke2xpYmRpcn0vc3NsL2NlcnRzIFwKKwkgICAgU1NMX0NFUlRfRklMRT0ke2xpYmRpcn0vc3NsL2NlcnQucGVtIFwKKwkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9zc2wvZW5naW5lcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgLUwgTWFrZWZpbGUub3JnIE1ha2VmaWxlIHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgUmVwbGFjZSB0aGUgcGF0aCB0byBuYXRpdmUgcGVybCB3aXRoIHRoZSBwYXRoIHRvIHRhcmdldCBwZXJsCisJc2VkIC1pICdzLF5QRVJMPS4qLFBFUkw9JHtiaW5kaXJ9L3BlcmwsJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisJY3AgQ29uZmlndXJlIGNvbmZpZyBlX29zLmggJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAtTCBpbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9CisJbG4gLXNmICR7bGliZGlyfS9saWJjcnlwdG8uYSAke0R9JHtQVEVTVF9QQVRIfQorCWxuIC1zZiAke2xpYmRpcn0vbGlic3NsLmEgJHtEfSR7UFRFU1RfUEFUSH0KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9jcnlwdG8KKwljcCBjcnlwdG8vY29uc3RhbnRfdGltZV9sb2NsLmggJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCisJY3AgLXIgY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7bGliZGlyfS9zc2wvbWlzYy9DQS5zaCAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7YmluZGlyfS9vcGVuc3NsICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWNwIGFwcHMvc2VydmVyLnBlbSAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWNwIGFwcHMvc2VydmVyMi5wZW0gICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKKwlpbnN0YWxsIHV0aWwvb3BlbnNzbHdyYXAuc2ggICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAorCWluc3RhbGwgdXRpbC9zaGxpYl93cmFwLnNoICAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCisJIyBUaW1lIHN0YW1wcyBhcmUgcmVsZXZhbnQgZm9yICJtYWtlIGFsbHRlc3RzIiwgb3RoZXJ3aXNlCisJIyBtYWtlIG1heSB0cnkgdG8gcmVjb21waWxlIGJpbmFyaWVzLiBOb3Qgb25seSBtdXN0IHRoZQorCSMgYmluYXJ5IGZpbGVzIGJlIG5ld2VyIHRoYW4gdGhlIHNvdXJjZXMsIHRoZXkgYWxzbyBtdXN0CisJIyBiZSBtb3JlIHJlY2VudCB0aGFuIHRoZSBoZWFkZXIgZmlsZXMgaW4gL3Vzci9pbmNsdWRlLgorCSMKKwkjIFVzaW5nICJjcCAtYSIgaXMgbm90IHN1ZmZpY2llbnQsIGJlY2F1c2UgZG9faW5zdGFsbAorCSMgZG9lcyBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHRpbWUgc3RhbXBzLgorCSMKKwkjIFNvIGluc3RlYWQgb2YgdXNpbmcgdGhlIG9yaWdpbmFsIGZpbGUgc3RhbXBzLCB3ZSBzZXQKKwkjIHRoZSBjdXJyZW50IHRpbWUgZm9yIGFsbCBmaWxlcy4gQmluYXJpZXMgd2lsbCBnZXQKKwkjIG1vZGlmaWVkIGFnYWluIGxhdGVyIHdoZW4gc3RyaXBwaW5nIHRoZW0sIGJ1dCB0aGF0J3Mgb2theS4KKwl0b3VjaCAke0R9JHtQVEVTVF9QQVRIfQorCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtcHJpbnQwIHwgeGFyZ3MgLS12ZXJib3NlIC0wIHRvdWNoIC1yICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIGV4Y2x1ZGUgYmluYXJ5IGZpbGVzIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKKwlmb3IgZCBpbiBzc2x0ZXN0X29sZCB2M2V4dCB4NTA5YXV4OyBkbworCQlybSAtcmYgJHtEfSR7bGliZGlyfS8ke0JQTn0vcHRlc3QvdGVzdC8kZAorCWRvbmUKKworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtaSBcCisJLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS9Db25maWd1cmUKK30KKworIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiBNYWtlIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBSUkVDT01NRU5EUyBvbiB0aGlzIHBhY2thZ2UuIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KKyMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2Ugc2luY2UgdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgorCitQQUNLQUdFUyA9KyAibGliY3J5cHRvMTAgbGlic3NsMTAgb3BlbnNzbDEwLWNvbmYgJHtQTn0tZW5naW5lcyAke1BOfS1taXNjIgorCitGSUxFU19saWJjcnlwdG8xMCA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgorRklMRVNfbGlic3NsMTAgPSAiJHtsaWJkaXJ9L2xpYnNzbCR7U09MSUJTfSIKK0ZJTEVTX29wZW5zc2wxMC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vc3NsL2VuZ2luZXMvKi5zbyAke2xpYmRpcn0vZW5naW5lcyIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC9taXNjIgorRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9zc2wvKiIKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoIgorCitDT05GRklMRVNfb3BlbnNzbDEwLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCisKK1JSRUNPTU1FTkRTX2xpYmNyeXB0bzEwICs9ICJvcGVuc3NsMTAtY29uZiIKK1JERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCBkKX0iCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbWlzYyBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBiYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJvcGVuc3NsX3BhY2thZ2VfcHJlcHJvY2VzcyIKKworIyBvcGVuc3NsIDEuMCBkZXZlbG9wbWVudCBmaWxlcyBhbmQgZXhlY3V0YWJsZSBiaW5hcmllcyBjbGFzaCB3aXRoIG9wZW5zc2wgMS4xCisjIGZpbGVzIHdoZW4gaW5zdGFsbGVkIGludG8gdGFyZ2V0IHJvb3Rmcy4gU28gd2UgZG9uJ3QgcHV0IHRoZW0gaW50bworIyBwYWNrYWdlcywgYnV0IHRoZXkgY29udGludWUgdG8gYmUgcHJvdmlkZWQgdmlhIHRhcmdldCBzeXNyb290IGZvcgorIyBjcm9zcy1jb21waWxhdGlvbiBvbiB0aGUgaG9zdCwgaWYgc29tZSBzb2Z0d2FyZSBzdGlsbCBkZXBlbmRzIG9uIG9wZW5zc2wgMS4wLgorb3BlbnNzbF9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgeworICAgICAgICBmb3IgZmlsZSBpbiBgZmluZCAke1BLR0R9IC1uYW1lICouaCAtbyAtbmFtZSAqLnBjIC1vIC1uYW1lICouc29gOyBkbworICAgICAgICAgICAgICAgIHJtICRmaWxlCisgICAgICAgIGRvbmUKKyAgICAgICAgcm0gJHtQS0dEfS91c3IvYmluL29wZW5zc2wKKyAgICAgICAgcm0gJHtQS0dEfS91c3IvYmluL2NfcmVoYXNoCisgICAgICAgIHJtZGlyICR7UEtHRH0vdXNyL2JpbgorCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ycC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDQxOTc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKLURFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi0jICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKLUxJQ0VOU0UgPSAib3BlbnNzbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY0NzUzNjg5MjQ4MjdkMDZkNGI0MTYxMTFjOGJkYjc3IgotCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBvcGVuc3NsLW5hdGl2ZSIKLQotUFJPVklERVMgKz0gIm9wZW5zc2wxMCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGFyZWQtbGlicy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vZS1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LWRlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWxsb3ctbWFucGFnZXMtdG8tYmUtZGlzYWJsZWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYzVlYjMwYmY1Nzk4YWExNGIxYWU2ZDBlN2RhNThkZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MGE5OGUwN2IxYTg5ZWI4ZjZhOTk0NzdmMjYyZGY3MWM2ZmE3YmVmNzdkZjRkYzgzMDI1YTI4NDVjODI3ZDAwIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJvcGVuc3NsLSg/UDxwdmVyPjFcLjAuKylcLnRhciIKLQotaW5oZXJpdCBwa2djb25maWcgc2l0ZWluZm8gbXVsdGlsaWJfaGVhZGVyIHB0ZXN0IHJlbGF0aXZlX3N5bWxpbmtzIG1hbnBhZ2VzCi0KLVBBQ0tBR0VDT05GSUcgPz0gImNyeXB0b2Rldi1saW51eCIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMsLGNyeXB0b2Rldi1saW51eCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIiwsLCIKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLCwsIgotCi0jIFJlbW92ZSB0aGlzIHRvIGVuYWJsZSBTU0x2My4gU1NMdjMgaXMgZGVmYXVsdGVkIHRvIGRpc2FibGVkIGR1ZSB0byB0aGUgUE9PRExFCi0jIHZ1bG5lcmFiaWxpdHkKLUVYVFJBX09FQ09ORiA9ICJuby1zc2wzIgotCi1FWFRSQV9PRU1BS0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWFucGFnZXMnLCAnJywgJ09FX0RJU0FCTEVfTUFOUEFHRVM9MScsIGQpfSIKLQotZXhwb3J0IE9FX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKLQotIyBvcGVuc3NsIGZhaWxzIHdpdGggY2NhY2hlOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODEwCi1DQ0FDSEUgPSAiIgotCi1URVJNSU8gPz0gIi1EVEVSTUlPIgotVEVSTUlPX2xpYmMtbXVzbCA9ICItRFRFUk1JT1MiCi0KLUNGTEFHID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCi0gICAgICAgICAke1RFUk1JT30gJHtDRkxBR1N9IC1XYWxsIgotCi0jIEF2b2lkIGJpbmFyaWVzIGJlaW5nIG1hcmtlZCBhcyByZXF1aXJpbmcgYW4gZXhlY3V0YWJsZSBzdGFjayBzaW5jZSB0aGV5IGRvbid0Ci0jIChhbmQgaXQgY2F1c2VzIGlzc3VlcyB3aXRoIFNFTGludXgpCi1DRkxBRyArPSAiLVdhLC0tbm9leGVjc3RhY2siCi0KLUNGTEFHX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1mUElDIgotCi1kb19jb25maWd1cmUgKCkgewotCSMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKLQkjIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5Ci0JIyBkZWZhdWx0LiAgQXMgdGhlIHJlc3VsdGluZyBlcnJvciBpcyB2ZXJ5IG1pc2xlYWRpbmcgY2hlY2sgZm9yIGJpZ251bSBiZWZvcmUKLQkjIGJ1aWxkaW5nLgotCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCi0JCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCi0JZmkKLQotCWxuIC1zZiBhcHBzL29wZW5zc2wucG9kIGNyeXB0by9jcnlwdG8ucG9kIHNzbC9zc2wucG9kIGRvYy8KLQotCW9zPSR7SE9TVF9PU30KLQljYXNlICRvcyBpbgotCWxpbnV4LWdudWVhYmkgfFwKLQlsaW51eC1nbnVzcGUgfFwKLQlsaW51eC1tdXNsZWFiaSB8XAotCWxpbnV4LW11c2xzcGUgfFwKLQlsaW51eC1tdXNsICkKLQkJb3M9bGludXgKLQkJOzsKLQkqKQotCQk7OwotCWVzYWMKLQl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCi0JY2FzZSAkdGFyZ2V0IGluCi0JbGludXgtYXJtKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hcm1lYikKLQkJdGFyZ2V0PWxpbnV4LWVsZi1hcm1lYgotCQk7OwotCWxpbnV4LWFhcmNoNjQqKQotCQl0YXJnZXQ9bGludXgtYWFyY2g2NAotCQk7OwotCWxpbnV4LXNoMykKLQkJdGFyZ2V0PWRlYmlhbi1zaDMKLQkJOzsKLQlsaW51eC1zaDQpCi0JCXRhcmdldD1kZWJpYW4tc2g0Ci0JCTs7Ci0JbGludXgtaTQ4NikKLQkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk0ODYKLQkJOzsKLQlsaW51eC1pNTg2IHwgbGludXgtdmlhYzMpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNTg2Ci0JCTs7Ci0JbGludXgtaTY4NikKLQkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk2ODYvY21vdgotCQk7OwotCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCi0JCXRhcmdldD1saW51eC14MzIKLQkJOzsKLQlsaW51eC1nbnU2NC14ODZfNjQpCi0JCXRhcmdldD1saW51eC14ODZfNjQKLQkJOzsKLQlsaW51eC1nbnVuMzItbWlwcyplbCkKLQkJdGFyZ2V0PWRlYmlhbi1taXBzbjMyZWwKLQkJOzsKLQlsaW51eC1nbnVuMzItbWlwcyopCi0JCXRhcmdldD1kZWJpYW4tbWlwc24zMgotCQk7OwotCWxpbnV4LW1pcHMqNjQqZWwpCi0JCXRhcmdldD1kZWJpYW4tbWlwczY0ZWwKLQkJOzsKLQlsaW51eC1taXBzKjY0KikKLQkJdGFyZ2V0PWRlYmlhbi1taXBzNjQKLQkJOzsKLQlsaW51eC1taXBzKmVsKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHNlbAotCQk7OwotCWxpbnV4LW1pcHMqKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHMKLQkJOzsKLQlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMip8bGludXgtZ251KmlscDMyKiopCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1wb3dlcnBjKQotCQl0YXJnZXQ9bGludXgtcHBjCi0JCTs7Ci0JbGludXgtcG93ZXJwYzY0KQotCQl0YXJnZXQ9bGludXgtcHBjNjQKLQkJOzsKLQlsaW51eC1yaXNjdjMyKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcmlzY3Y2NCkKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAotCQk7OwotCWxpbnV4LXN1cGVyc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y4Ci0JCTs7Ci0JbGludXgtc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y4Ci0JCTs7Ci0JZXNhYwotCi0JIyBpbmplY3QgbWFjaGluZS1zcGVjaWZpYyBmbGFncwotCXNlZCAtaSAtZSAic3xeXChcIiR0YXJnZXRcIixccypcIlteOl1cK1wpOlwoW146XVwrXCl8XDE6JHtDRkxBR318ZyIgQ29uZmlndXJlCi0KLQl1c2VwcmVmaXg9JHtwcmVmaXh9Ci0JaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KLQkJdXNlcHJlZml4PS8KLQlmaQotCWxpYmRpcmxlYWY9IiQoZWNobyAke2xpYmRpcn0gfCBzZWQgczokdXNlcHJlZml4OjopIgotCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gc2hhcmVkIC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wgLS1saWJkaXI9JGxpYmRpcmxlYWYgJHRhcmdldAotfQotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlIGRlcGVuZAotCW9lX3J1bm1ha2UKLX0KLQotZG9fY29tcGlsZV9jbGFzcy10YXJnZXQgKCkgewotCXNlZCAtaSAncy9cKChPUEVOU1NMPVwpIi4qIi9cMSJvcGVuc3NsIi8nIE1ha2VmaWxlCi0Jb2VfcnVubWFrZSBkZXBlbmQKLQljY19zYW5pdGl6ZWQ9JChlY2hvICIke0NDfSAke0NGTEFHfSIgfCBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgLWUgJ3MvWyBcdF1cKy8gL2cnKQotCW9lX3J1bm1ha2UgQ0NfSU5GTz0iJGNjX3Nhbml0aXplZCIKLX0KLQotZG9fY29tcGlsZV9wdGVzdCAoKSB7Ci0Jb2VfcnVubWFrZSBidWlsZHRlc3QKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JIyBDcmVhdGUgJHtEfS8ke3ByZWZpeH0gdG8gZml4IHBhcmFsbGVsIGlzc3VlcwotCW1rZGlyIC1wICR7RH0vJHtwcmVmaXh9LwotCi0Jb2VfcnVubWFrZSBJTlNUQUxMX1BSRUZJWD0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIGluc3RhbGwKLQotCW9lX2xpYmluc3RhbGwgLXNvIGxpYmNyeXB0byAke0R9JHtsaWJkaXJ9Ci0Jb2VfbGliaW5zdGFsbCAtc28gbGlic3NsICR7RH0ke2xpYmRpcn0KLQotCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KLQljcCAtLWRlcmVmZXJlbmNlIC1SIGluY2x1ZGUvb3BlbnNzbCAke0R9JHtpbmNsdWRlZGlyfQotCi0JaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAotCXNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwZXJsJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsCi0JCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0Ci0JZWxzZQotCQlybSAtZiAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvdHNnZXQKLQlmaQotCi0JIyBDcmVhdGUgU1NMIHN0cnVjdHVyZQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NsLwotCW12ICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKLQkgICAke0R9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZSBcCi0JICAgXAotCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KLQlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMKLQlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZSAke0R9JHtsaWJkaXJ9L3NzbC9wcml2YXRlCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mCi0KLQkjIFJlbmFtZSBtYW4gcGFnZXMgdG8gcHJlZml4IG9wZW5zc2wxMC0qCi0JZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBmYDsgZG8KLQkgICAgbXYgJGYgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKLQlkb25lCi0JZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBsYDsgZG8KLQkgICAgbG5fZj1gcmVhZGxpbmsgJGZgCi0JICAgIHJtIC1mICRmCi0JICAgIGxuIC1zIG9wZW5zc2wxMC0kbG5fZiAkKGRpcm5hbWUgJGYpL29wZW5zc2wxMC0kKGJhc2VuYW1lICRmKQotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JY3AgLXIgLUwgTWFrZWZpbGUub3JnIE1ha2VmaWxlIHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQotCSMgUmVwbGFjZSB0aGUgcGF0aCB0byBuYXRpdmUgcGVybCB3aXRoIHRoZSBwYXRoIHRvIHRhcmdldCBwZXJsCi0Jc2VkIC1pICdzLF5QRVJMPS4qLFBFUkw9JHtiaW5kaXJ9L3BlcmwsJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotCi0JY3AgQ29uZmlndXJlIGNvbmZpZyBlX29zLmggJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAtTCBpbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9Ci0JbG4gLXNmICR7bGliZGlyfS9saWJjcnlwdG8uYSAke0R9JHtQVEVTVF9QQVRIfQotCWxuIC1zZiAke2xpYmRpcn0vbGlic3NsLmEgJHtEfSR7UFRFU1RfUEFUSH0KLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9jcnlwdG8KLQljcCBjcnlwdG8vY29uc3RhbnRfdGltZV9sb2NsLmggJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCi0JY3AgLXIgY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JbG4gLXNmICR7bGliZGlyfS9zc2wvbWlzYy9DQS5zaCAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JbG4gLXNmICR7YmluZGlyfS9vcGVuc3NsICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWNwIGFwcHMvc2VydmVyLnBlbSAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWNwIGFwcHMvc2VydmVyMi5wZW0gICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKLQlpbnN0YWxsIHV0aWwvb3BlbnNzbHdyYXAuc2ggICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAotCWluc3RhbGwgdXRpbC9zaGxpYl93cmFwLnNoICAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCi0JIyBUaW1lIHN0YW1wcyBhcmUgcmVsZXZhbnQgZm9yICJtYWtlIGFsbHRlc3RzIiwgb3RoZXJ3aXNlCi0JIyBtYWtlIG1heSB0cnkgdG8gcmVjb21waWxlIGJpbmFyaWVzLiBOb3Qgb25seSBtdXN0IHRoZQotCSMgYmluYXJ5IGZpbGVzIGJlIG5ld2VyIHRoYW4gdGhlIHNvdXJjZXMsIHRoZXkgYWxzbyBtdXN0Ci0JIyBiZSBtb3JlIHJlY2VudCB0aGFuIHRoZSBoZWFkZXIgZmlsZXMgaW4gL3Vzci9pbmNsdWRlLgotCSMKLQkjIFVzaW5nICJjcCAtYSIgaXMgbm90IHN1ZmZpY2llbnQsIGJlY2F1c2UgZG9faW5zdGFsbAotCSMgZG9lcyBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHRpbWUgc3RhbXBzLgotCSMKLQkjIFNvIGluc3RlYWQgb2YgdXNpbmcgdGhlIG9yaWdpbmFsIGZpbGUgc3RhbXBzLCB3ZSBzZXQKLQkjIHRoZSBjdXJyZW50IHRpbWUgZm9yIGFsbCBmaWxlcy4gQmluYXJpZXMgd2lsbCBnZXQKLQkjIG1vZGlmaWVkIGFnYWluIGxhdGVyIHdoZW4gc3RyaXBwaW5nIHRoZW0sIGJ1dCB0aGF0J3Mgb2theS4KLQl0b3VjaCAke0R9JHtQVEVTVF9QQVRIfQotCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtcHJpbnQwIHwgeGFyZ3MgLS12ZXJib3NlIC0wIHRvdWNoIC1yICR7RH0ke1BURVNUX1BBVEh9Ci0KLQkjIGV4Y2x1ZGUgYmluYXJ5IGZpbGVzIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKLQlmb3IgZCBpbiBzc2x0ZXN0X29sZCB2M2V4dCB4NTA5YXV4OyBkbwotCQlybSAtcmYgJHtEfSR7bGliZGlyfS8ke0JQTn0vcHRlc3QvdGVzdC8kZAotCWRvbmUKLQotCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotCXNlZCAtaSBcCi0JLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS9Db25maWd1cmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3BlbnNzbCBcCi0JICAgIE9QRU5TU0xfQ09ORj0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKLQkgICAgU1NMX0NFUlRfRElSPSR7bGliZGlyfS9zc2wvY2VydHMgXAotCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wvY2VydC5wZW0gXAotCSAgICBPUEVOU1NMX0VOR0lORVM9JHtsaWJkaXJ9L3NzbC9lbmdpbmVzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCi19Ci0KLSMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gIE1ha2UgdGhlIGxpYmNyeXB0bwotIyBwYWNrYWdlIFJSRUNPTU1FTkRTIG9uIHRoaXMgcGFja2FnZS4gIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KLSMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2Ugc2luY2UgdGhlIGJhc2Ugb3BlbnNzbCBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgotCi1QQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCBvcGVuc3NsLWNvbmYgJHtQTn0tZW5naW5lcyAke1BOfS1taXNjIgotCi1GSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKLUZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgotRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vc3NsL2VuZ2luZXMvKi5zbyAke2xpYmRpcn0vZW5naW5lcyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC9taXNjIgotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9zc2wvKiIKLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoIgotCi1DT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotCi1SUkVDT01NRU5EU19saWJjcnlwdG8gKz0gIm9wZW5zc2wtY29uZiIKLVJERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCBkKX0iCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbWlzYyBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBiYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4waS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwMDYyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4waS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCi1MSUNFTlNFID0gIm9wZW5zc2wiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNTdkNTExMDMwYzlkNjZlZjVmNTk2NmJlZTVhN2VmZiIKLQotREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVRha2UtbGlua2luZy1mbGFncy1mcm9tLUxERkxBR1MtZW52LXZhci5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NDk1MTI2YWFmZDI2NTlkMzU3ZWE2NmE5NjljM2ZlMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYmJmYzg0NGE4YzhjYzBlYTVkYzEwYjg2YzljZTk3ZjQwMTgzN2YzZmEwOGMxN2IyY2RhZGMxMTgyNTNjZjk5IgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi0jfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzogSW4gZnVuY3Rpb24gJ2V2ZW50ZmQnOgotI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6MTEwOjIwOiBlcnJvcjogJ19fTlJfZXZlbnRmZCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0jfCAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZXZlbnRmZCwgbik7Ci0jfCAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgotRVhUUkFfT0VDT05GX2FwcGVuZF9hYXJjaDY0ID0gIiBuby1hZmFsZ2VuZyIKLQotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtRE9QRU5TU0xfTk9fQVNZTkMiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0Jb3M9JHtIT1NUX09TfQotCWNhc2UgJG9zIGluCi0JbGludXgtZ251ZWFiaSB8XAotCWxpbnV4LWdudXNwZSB8XAotCWxpbnV4LW11c2xlYWJpIHxcCi0JbGludXgtbXVzbHNwZSB8XAotCWxpbnV4LW11c2wgKQotCQlvcz1saW51eAotCQk7OwotCSopCi0JCTs7Ci0JZXNhYwotCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKLQljYXNlICR0YXJnZXQgaW4KLQlsaW51eC1hcm0pCi0JCXRhcmdldD1saW51eC1hcm12NAotCQk7OwotCWxpbnV4LWFybWViKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1zaDMpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1zaDQpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1pNDg2KQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtaTY4NikKLQkJdGFyZ2V0PWxpbnV4LWVsZgotCQk7OwotCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCi0JCXRhcmdldD1saW51eC14MzIKLQkJOzsKLQlsaW51eC1nbnU2NC14ODZfNjQpCi0JCXRhcmdldD1saW51eC14ODZfNjQKLQkJOzsKLQlsaW51eC1taXBzKQotCQkjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKLQkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCi0JCTs7Ci0JbGludXgtbWlwc2VsKQotCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKLQkJOzsKLQlsaW51eC1nbnVuMzItbWlwcyopCi0JCXRhcmdldD1saW51eC1taXBzNjQKLQkJOzsKLQlsaW51eC0qLW1pcHM2NCB8IGxpbnV4LW1pcHM2NCkKLQkJdGFyZ2V0PWxpbnV4NjQtbWlwczY0Ci0JCTs7Ci0JbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQotCQl0YXJnZXQ9bGludXg2NC1taXBzNjQKLQkJOzsKLQlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMiopCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1wb3dlcnBjKQotCQl0YXJnZXQ9bGludXgtcHBjCi0JCTs7Ci0JbGludXgtcG93ZXJwYzY0KQotCQl0YXJnZXQ9bGludXgtcHBjNjQKLQkJOzsKLQlsaW51eC1yaXNjdjMyKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcmlzY3Y2NCkKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAotCQk7OwotCWxpbnV4LXN1cGVyc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JbGludXgtc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JZGFyd2luLWkzODYpCi0JCXRhcmdldD1kYXJ3aW4taTM4Ni1jYwotCQk7OwotCWVzYWMKLQotCXVzZXByZWZpeD0ke3ByZWZpeH0KLQlpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgotCQl1c2VwcmVmaXg9LwotCWZpCi0JbGliZGlybGVhZj0iJChlY2hvICR7bGliZGlyfSB8IHNlZCBzOiR1c2VwcmVmaXg6OikiCi0JcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsLTEuMSAtLWxpYmRpcj0kbGliZGlybGVhZiAkdGFyZ2V0Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAotCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQkjIEluc3RhbGwgYSBjdXN0b20gdmVyc2lvbiBvZiBjX3JlaGFzaCB0aGF0IGNhbiBoYW5kbGUgc3lzcm9vdHMgcHJvcGVybHkuCi0JIyBUaGlzIHZlcnNpb24gaXMgdXNlZCBmb3IgZXhhbXBsZSB3aGVuIGluc3RhbGxpbmcgY2EtY2VydGlmaWNhdGVzIGR1cmluZwotCSMgaW1hZ2UgY3JlYXRpb24uCi0JaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAotCXNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtciAqICR7RH0ke1BURVNUX1BBVEh9Ci0KLQkjIFB1dHRpbmcgLnNvIGZpbGVzIGluIHB0ZXN0IHBhY2thZ2Ugd2lsbCBtZXNzIHVwIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIG1haW4gb3BlbnNzbCBwYWNrYWdlCi0JIyBzbyB3ZSByZW5hbWUgdGhlbSB0byAuc28ucHRlc3QgYW5kIHBhdGNoIHRoZSB0ZXN0IGFjY29yZGluZ2x5Ci0JbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zby5wdGVzdAotCW12ICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28ucHRlc3QKLQlzZWQgLWkgJ3MvJHRhcmdldHtzaGFyZWRfZXh0ZW5zaW9uX3NpbXBsZX0vIi5zby5wdGVzdCIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlY2lwZXMvOTAtdGVzdF9zaGxpYmxvYWQudAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKLQotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9zc2wtMS4xLyoiCi1GSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaCIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBiYXNoIHB5dGhvbiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzNGI2NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjEuYmIKQEAgLTAsMCArMSwyMDUgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIiBoZXJlIGFjdHVhbGx5IG1lYW5zIGJvdGggT3BlblNTTCBhbmQgU1NMZWF5IGxpY2Vuc2VzIGFwcGx5CisjIChzZWUgbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvT3BlblNTTCB0byB3aGljaCAib3BlbnNzbCIgaXMgU1BEWExJQ0VOU0VNQVBwZWQpCitMSUNFTlNFID0gIm9wZW5zc2wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNTdkNTExMDMwYzlkNjZlZjVmNTk2NmJlZTVhN2VmZiIKKworREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1jX3JlaGFzaC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGVzdF9zeW1ib2xfcHJlc2VuY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtQ1ZFLTIwMTgtMDczNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWZpeC1DVkUtMjAxOC0wNzM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRpbmZvLXN0cmlwLXN5c3Jvb3QtYW5kLWRlYnVnLXByZWZpeC1tYXAtZnJvbS1jby5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MDc5ZWIwMTc0MjllMGZmYjllZmI0MmJmODBjY2IyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyODM2ODc1YTBmODljMDNkMGZkZjQ4Mzk0MTUxMjYxM2E1MGNmYjQyMWQ2ZmQ5NGI5ZjQxZDcyNzlkNTg2YTNkIgorCitpbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBwdGVzdAorCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ha2Vjb250ZXh0JworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIG5vLWFzeW5jIgorCisjIFRoaXMgcHJldmVudHMgb3BlbnNzbCBmcm9tIHVzaW5nIGdldHJhbmRvbSgpIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24gb2xkZXIgZ2xpYmMgdmVyc2lvbnMKKyMgKG5hdGl2ZSB2ZXJzaW9ucyBjYW4gYmUgYnVpbHQgd2l0aCBuZXdlciBnbGliYywgYnV0IHRoZW4gcmVsb2NhdGVkIG9udG8gYSBzeXN0ZW0gd2l0aCBvbGRlciBnbGliYykKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRoLXJhbmQtc2VlZD1kZXZyYW5kb20iCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aC1yYW5kLXNlZWQ9ZGV2cmFuZG9tIgorCisjIFJlbHlpbmcgb24gaGFyZGNvZGVkIGJ1aWx0LWluIHBhdGhzIGNhdXNlcyBvcGVuc3NsLW5hdGl2ZSB0byBub3QgYmUgcmVsb2NhdGVhYmxlIGZyb20gc3N0YXRlLgorQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisJb3M9JHtIT1NUX09TfQorCWNhc2UgJG9zIGluCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2xlYWJpIHxcCisJbGludXgtbXVzbHNwZSB8XAorCWxpbnV4LW11c2wgKQorCQlvcz1saW51eAorCQk7OworCSopCisJCTs7CisJZXNhYworCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKKwljYXNlICR0YXJnZXQgaW4KKwlsaW51eC1hcm0qKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hYXJjaDY0KikKKwkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKKwkJOzsKKwlsaW51eC1pPzg2IHwgbGludXgtdmlhYzMpCisJCXRhcmdldD1saW51eC14ODYKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtbWlwcyB8IGxpbnV4LW1pcHNlbCkKKwkJIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCisJCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgorCQk7OworCWxpbnV4LWdudW4zMi1taXBzKikKKwkJdGFyZ2V0PWxpbnV4LW1pcHM2NAorCQk7OworCWxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0IHwgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorCQl0YXJnZXQ9bGludXg2NC1taXBzNjQKKwkJOzsKKwlsaW51eC1taWNyb2JsYXplKiB8IGxpbnV4LW5pb3MyKiB8IGxpbnV4LXNoMyB8IGxpbnV4LXNoNCB8IGxpbnV4LWFyYyopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1yaXNjdjMyKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcmlzY3Y2NCkKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAorCQk7OworCWxpbnV4LXNwYXJjIHwgbGludXgtc3VwZXJzcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKKwkJOzsKKwllc2FjCisKKwl1c2VwcmVmaXg9JHtwcmVmaXh9CisJaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KKwkJdXNlcHJlZml4PS8KKwlmaQorCSMgV0FSTklORzogZG8gbm90IHNldCBjb21waWxlci9saW5rZXIgZmxhZ3MgKC1JLy1EIGV0Yy4pIGluIEVYVFJBX09FQ09ORiwgYXMgdGhleSB3aWxsIGZ1bGx5IHJlcGxhY2UgdGhlCisJIyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IGJ5IGJpdGJha2UuIEFkanVzdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluc3RlYWQuCisJUEVSTDVMSUI9IiR7U30vZXh0ZXJuYWwvcGVybC9UZXh0LVRlbXBsYXRlLTEuNDYvbGliLyIgXAorCXBlcmwgJHtTfS9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJ9ICR0YXJnZXQKK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCisKKwkjIENyZWF0ZSBTU0wgc3RydWN0dXJlIGZvciBwYWNrYWdlcyBzdWNoIGFzIGNhLWNlcnRpZmljYXRlcyB3aGljaAorCSMgY29udGFpbiBoYXJkLWNvZGVkIHBhdGhzIHRvIC9ldGMvc3NsLiBEZWJpYW4gZG9lcyB0aGUgc2FtZS4KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbAorCW12ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCisJICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsLworCisJIyBBbHRob3VnaCBhYnNvbHV0ZSBzeW1saW5rcyB3b3VsZCBiZSBPSyBmb3IgdGhlIHRhcmdldCwgdGhleSBiZWNvbWUKKwkjIGludmFsaWQgaWYgbmF0aXZlIG9yIG5hdGl2ZXNkayBhcmUgcmVsb2NhdGVkIGZyb20gc3N0YXRlLgorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cycpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZScpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZQorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZicpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAorCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAorCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAorCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wtMS4xL2NlcnQucGVtIFwKKwkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9zc2wtMS4xL2VuZ2luZXMKKworCSMgSW5zdGFsbCBhIGN1c3RvbSB2ZXJzaW9uIG9mIGNfcmVoYXNoIHRoYXQgY2FuIGhhbmRsZSBzeXNyb290cyBwcm9wZXJseS4KKwkjIFRoaXMgdmVyc2lvbiBpcyB1c2VkIGZvciBleGFtcGxlIHdoZW4gaW5zdGFsbGluZyBjYS1jZXJ0aWZpY2F0ZXMgZHVyaW5nCisJIyBpbWFnZSBjcmVhdGlvbi4KKwlpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vb3BlbnNzbC1jX3JlaGFzaC5zaCAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCisJc2VkIC1pIC1lICdzLC9ldGMvb3BlbnNzbCwke3N5c2NvbmZkaXJ9L3NzbCxnJyAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAorCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAorCXNlZCAnc3wvdXNyL2xpYi9zc2wvfC91c3IvbGliL3NzbC0xLjEvfGcnIC1pICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwkjIFBydW5lIHRoZSBidWlsZCB0cmVlCisJcm0gLWYgJHtCfS9mdXp6LyouKiAke0J9L3Rlc3QvKi4qCisKKwljcCAke1N9L0NvbmZpZ3VyZSAke0J9L2NvbmZpZ2RhdGEucG0gJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9L2V4dGVybmFsICR7Qn0vdGVzdCAke1N9L3Rlc3QgJHtCfS9mdXp6ICR7U30vdXRpbCAke0J9L3V0aWwgJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgRm9yIHRlc3Rfc2hsaWJsb2FkCisJbG4gLXMgJHtsaWJkaXJ9L2xpYmNyeXB0by5zby4xLjEgJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvCisJbG4gLXMgJHtsaWJkaXJ9L2xpYnNzbC5zby4xLjEgJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtcyAke2JpbmRpcn0vb3BlbnNzbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJaW5zdGFsbCAtbTY0NCAke1N9L2FwcHMvKi5wZW0gJHtTfS9hcHBzLyouc3JsICR7U30vYXBwcy9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJaW5zdGFsbCAtbTc1NSAke0J9L2FwcHMvQ0EucGwgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCisJaW5zdGFsbCAtbTc1NSAke0J9L2VuZ2luZXMvb3NzbHRlc3Quc28gJHtEfSR7UFRFU1RfUEFUSH0vZW5naW5lcworfQorCisjIEFkZCB0aGUgb3BlbnNzbC5jbmYgZmlsZSB0byB0aGUgb3BlbnNzbC1jb25mIHBhY2thZ2UuIE1ha2UgdGhlIGxpYmNyeXB0bworIyBwYWNrYWdlIFJSRUNPTU1FTkRTIG9uIHRoaXMgcGFja2FnZS4gVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgorIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgb3BlbnNzbC1iaW4gcGFja2FnZSBhbmQgdGhlIGxpYmNyeXB0bworIyBwYWNrYWdlIHNpbmNlIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgorCitQQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCBvcGVuc3NsLWNvbmYgJHtQTn0tZW5naW5lcyAke1BOfS1taXNjIgorCitGSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKK0ZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgorRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vZW5naW5lcy0xLjEiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wtMS4xL21pc2MiCitGSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3NzbC0xLjEvKiIKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoIgorCitDT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorCitSUkVDT01NRU5EU19saWJjcnlwdG8gKz0gIm9wZW5zc2wtY29uZiIKK1JERVBFTkRTXyR7UE59LWJpbiA9ICJwZXJsIgorUkRFUEVORFNfJHtQTn0tbWlzYyA9ICJwZXJsIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm9wZW5zc2wtYmluIHBlcmwgcGVybC1tb2R1bGVzIGJhc2ggcHl0aG9uIgorCitSUFJPVklERVNfb3BlbnNzbC1jb25mID0gIm9wZW5zc2wxMC1jb25mIgorUlJFUExBQ0VTX29wZW5zc2wtY29uZiA9ICJvcGVuc3NsMTAtY29uZiIKK1JDT05GTElDVFNfb3BlbnNzbC1jb25mID0gIm9wZW5zc2wxMC1jb25mIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtMi40LjctREVTLW9wZW5zc2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtMi40LjctREVTLW9wZW5zc2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUzZjI0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL3BwcC0yLjQuNy1ERVMtb3BlbnNzbC5wYXRjaApAQCAtMCwwICsxLDg0IEBACitVc2VkIG9wZW5zc2wgZm9yIHRoZSBERVMgaW5zdGVhZCBvZiB0aGUgbGliY3J5cHQgLyBnbGliYworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworSW5kZXg6IHBwcC0yLjQuNy9wcHBkL01ha2VmaWxlLmxpbnV4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHBwLTIuNC43Lm9yaWcvcHBwZC9NYWtlZmlsZS5saW51eAorKysrIHBwcC0yLjQuNy9wcHBkL01ha2VmaWxlLmxpbnV4CitAQCAtMzgsNyArMzgsNyBAQCBMSUJTID0KKyAjIFVuY29tbWVudCB0aGUgbmV4dCAyIGxpbmVzIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0J3MKKyAjIE1TLUNIQVAgYXV0aGVudGljYXRpb24gcHJvdG9jb2wuICBBbHNvLCBlZGl0IHBsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4LgorIENIQVBNUz15CistVVNFX0NSWVBUPXkKKysjVVNFX0NSWVBUPXkKKyAjIERvbid0IHVzZSBNU0xBTk1BTiB1bmxlc3MgeW91IHJlYWxseSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLgorICNNU0xBTk1BTj15CisgIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1QUEUuICBDSEFQTVMgKGFib3ZlKSBtdXN0CitAQCAtMTMyLDcgKzEzMiw3IEBAIGVuZGlmCisgCisgaWZkZWYgTkVFRERFUworIGlmbmRlZiBVU0VfQ1JZUFQKKy1MSUJTICAgICArPSAtbGRlcyAkKExJQlMpCisrTElCUyAgICAgKz0gLWxjcnlwdG8KKyBlbHNlCisgQ0ZMQUdTICAgKz0gLURVU0VfQ1JZUFQ9MQorIGVuZGlmCitJbmRleDogcHBwLTIuNC43L3BwcGQvcHBwY3J5cHQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvcHBwY3J5cHQuYworKysrIHBwcC0yLjQuNy9wcHBkL3BwcGNyeXB0LmMKK0BAIC02NCw3ICs2NCw3IEBAIHVfY2hhciAqZGVzX2tleTsJLyogT1VUIDY0IGJpdCBERVMga2V5IHcKKyAJZGVzX2tleVs3XSA9IEdldDdCaXRzKGtleSwgNDkpOworIAorICNpZm5kZWYgVVNFX0NSWVBUCistCWRlc19zZXRfb2RkX3Bhcml0eSgoZGVzX2NibG9jayAqKWRlc19rZXkpOworKwlERVNfc2V0X29kZF9wYXJpdHkoKERFU19jYmxvY2sgKilkZXNfa2V5KTsKKyAjZW5kaWYKKyB9CisgCitAQCAtMTU4LDI1ICsxNTgsMjUgQEAgdV9jaGFyICpjbGVhcjsJLyogT1VUIDggb2N0ZXRzICovCisgfQorIAorICNlbHNlIC8qIFVTRV9DUllQVCAqLworLXN0YXRpYyBkZXNfa2V5X3NjaGVkdWxlCWtleV9zY2hlZHVsZTsKKytzdGF0aWMgREVTX2tleV9zY2hlZHVsZQlrZXlfc2NoZWR1bGU7CisgCisgYm9vbAorIERlc1NldGtleShrZXkpCisgdV9jaGFyICprZXk7CisgeworLQlkZXNfY2Jsb2NrIGRlc19rZXk7CisrCURFU19jYmxvY2sgZGVzX2tleTsKKyAJTWFrZUtleShrZXksIGRlc19rZXkpOworLQlkZXNfc2V0X2tleSgmZGVzX2tleSwga2V5X3NjaGVkdWxlKTsKKysJREVTX3NldF9rZXkoJmRlc19rZXksICZrZXlfc2NoZWR1bGUpOworIAlyZXR1cm4gKDEpOworIH0KKyAKKyBib29sCistRGVzRW5jcnlwdChjbGVhciwga2V5LCBjaXBoZXIpCisrRGVzRW5jcnlwdChjbGVhciwgY2lwaGVyKQorIHVfY2hhciAqY2xlYXI7CS8qIElOICA4IG9jdGV0cyAqLworIHVfY2hhciAqY2lwaGVyOwkvKiBPVVQgOCBvY3RldHMgKi8KKyB7CistCWRlc19lY2JfZW5jcnlwdCgoZGVzX2NibG9jayAqKWNsZWFyLCAoZGVzX2NibG9jayAqKWNpcGhlciwKKy0JICAgIGtleV9zY2hlZHVsZSwgMSk7CisrCURFU19lY2JfZW5jcnlwdCgoREVTX2NibG9jayAqKWNsZWFyLCAoREVTX2NibG9jayAqKWNpcGhlciwKKysJICAgICZrZXlfc2NoZWR1bGUsIDEpOworIAlyZXR1cm4gKDEpOworIH0KKyAKK0BAIC0xODUsOCArMTg1LDggQEAgRGVzRGVjcnlwdChjaXBoZXIsIGNsZWFyKQorIHVfY2hhciAqY2lwaGVyOwkvKiBJTiAgOCBvY3RldHMgKi8KKyB1X2NoYXIgKmNsZWFyOwkvKiBPVVQgOCBvY3RldHMgKi8KKyB7CistCWRlc19lY2JfZW5jcnlwdCgoZGVzX2NibG9jayAqKWNpcGhlciwgKGRlc19jYmxvY2sgKiljbGVhciwKKy0JICAgIGtleV9zY2hlZHVsZSwgMCk7CisrCURFU19lY2JfZW5jcnlwdCgoREVTX2NibG9jayAqKWNpcGhlciwgKERFU19jYmxvY2sgKiljbGVhciwKKysJICAgICZrZXlfc2NoZWR1bGUsIDApOworIAlyZXR1cm4gKDEpOworIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKaW5kZXggYTVmNzY0Zi4uNjQ0Y2RlNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKQEAgLTQsNyArNCw3IEBACiBTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKIEhPTUVQQUdFID0gImh0dHA6Ly9zYW1iYS5vcmcvcHBwLyIKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3BwcC5zYW1iYS5vcmcvY2dpLWJpbi9wcHAtYnVncyIKLURFUEVORFMgPSAibGlicGNhcCIKK0RFUEVORFMgPSAibGlicGNhcCBvcGVuc3NsIHZpcnR1YWwvY3J5cHQiCiBMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2MisgJiBQRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BwcGQvY2NwLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yOTttZDU9ZTJjNDNmZTZlODFmZjc3ZDg3ZGM5YzI5MGE0MjRkZWEgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHBwZC9wbHVnaW5zL3Bhc3Nwcm9tcHQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0zYmNiY2RiZjBlMzY5YzlhM2UwYjhjODI3NWIwNjVkOCBcCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTUtMzMxMC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcG9lLWluY2x1ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwLVJlbW92ZS11bm5lZWRlZC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BwcC0yLjQuNy1ERVMtb3BlbnNzbC5wYXRjaCBcCiAiCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCkBAIC00OSw3ICs1MCw3IEBACiAjIFBhY2thZ2UgTWFrZWZpbGUgY29tcHV0ZXMgQ0ZMQUdTLCByZWZlcmVuY2luZyBDT1BUUy4KICMgVHlwaWNhbGx5IGhhcmQtY29kZWQgdG8gJy1PMiAtZycgaW4gdGhlIE1ha2VmaWxlJ3MuCiAjCi1FWFRSQV9PRU1BS0UgKz0gJyBDT1BUUz0iJHtDRkxBR1N9IC1JJHtTfS9pbmNsdWRlIicKK0VYVFJBX09FTUFLRSArPSAnIENPUFRTPSIke0NGTEFHU30gLUkke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsIC1JJHtTfS9pbmNsdWRlIicKIAogZG9fY29uZmlndXJlICgpIHsKIAlvZV9ydW5jb25mCkBAIC04MCw2ICs4MSwxMCBAQAogCWNobW9kIHUrcyAke0R9JHtzYmluZGlyfS9wcHBkCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCAoKSB7CisJaW5zdGFsbCAtRG0gMDY0NCAke1N9L2luY2x1ZGUvbmV0L3BwcF9kZWZzLmggJHtEfSR7aW5jbHVkZWRpcn0vbmV0L3BwcF9kZWZzLmgKK30KKwogQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vcHBwL3BhcC1zZWNyZXRzICR7c3lzY29uZmRpcn0vcHBwL2NoYXAtc2VjcmV0cyAke3N5c2NvbmZkaXJ9L3BwcC9vcHRpb25zIgogUEFDS0FHRVMgPSsgIiR7UE59LW9hICR7UE59LW9lICR7UE59LXJhZGl1cyAke1BOfS13aW5iaW5kICR7UE59LW1pbmNvbm4gJHtQTn0tcGFzc3dvcmQgJHtQTn0tbDJ0cCAke1BOfS10b29scyIKIEZJTEVTXyR7UE59ICAgICAgICA9ICIke3N5c2NvbmZkaXJ9ICR7YmluZGlyfSAke3NiaW5kaXJ9L2NoYXQgJHtzYmluZGlyfS9wcHBkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHBwQC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMi5iYgppbmRleCA2MzczZGQ0Li45MjdkZjc0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMi5iYgpAQCAtNywxMSArNywxMCBAQAogCiBERVBFTkRTID0gIm9wZW5zc2wgcmVhZGxpbmUiCiAKLUxJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgorTElDRU5TRSA9ICJHUEwtMi4wKy13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNTc7ZW5kbGluZT0yODc7bWQ1PTMzOGMwNWVhZGQwMTM4NzJhYmIxZDZlMTk4ZTEwYTNmIgogCi0KIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0L2Rvd25sb2FkL3NvY2F0LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tZml4LWZvci1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRlZmluZS1ORVREQl9JTlRFUk5BTC10by0xLWlmLW5vdC1hdmFpbGFibGUucGF0Y2ggXApAQCAtMjYsOSArMjUsMjMgQEAKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgogCiBFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2hhdmVfel9tb2RpZmllcj15ZXMgXAotICAgICAgICBhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIFwKKyAgICAgICAgICAgICAgICAgc2NfY3ZfdGVybWlvc19pc3BlZWQ9bm8gXAorICAgICAgICAgICAgICAgICAke1RFUk1CSVRTX1NISUZUU30gXAogIgogCitURVJNQklUU19TSElGVFMgPz0gInNjX2N2X3N5c19jcmRseV9zaGlmdD05IFwKKyAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMSBcCisgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD00IgorCitURVJNQklUU19TSElGVFNfcG93ZXJwYyA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKKworVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGM2NCA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCisKIFBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAidGNwLXdyYXBwZXJzIgogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9hdm9pZF9zdHJpcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9hdm9pZF9zdHJpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0ZTI0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvYXZvaWRfc3RyaXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi13aXJlbGVzc190b29sczogQXZvaWQgc3RyaXBwaW5nIGl3bXVsdGljYWxsCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCi0gIFRoZSByZW1vdmVkIGNvZGUgd2FzIGZyb20gdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtdXIgd2lyZWxlc3NfdG9vbHMuMjkub3JpZy9NYWtlZmlsZSB3aXJlbGVzc190b29scy4yOS9NYWtlZmlsZQotLS0tIHdpcmVsZXNzX3Rvb2xzLjI5Lm9yaWcvTWFrZWZpbGUJMjAxMS0wNi0xOCAxMTozNToxMi4xODM5MDc0NTMgLTA1MDAKLSsrKyB3aXJlbGVzc190b29scy4yOS9NYWtlZmlsZQkyMDExLTA2LTE4IDExOjM4OjA5Ljk5NTkwNzk4NSAtMDUwMAotQEAgLTEzNSw5ICsxMzUsOCBAQAotIAotIG1hY2FkZHI6IG1hY2FkZHIubyAkKElXTElCKQotIAotLSMgQWx3YXlzIGRvIHN5bWJvbCBzdHJpcHBpbmcgaGVyZQotIGl3bXVsdGljYWxsOiBpd211bHRpY2FsbC5vCi0tCSQoQ0MpICQoTERGTEFHUykgLVdsLC1zICQoWENGTEFHUykgLW8gJEAgJF4gJChMSUJTKQotKwkkKENDKSAkKExERkxBR1MpICQoU1RSSVBGTEFHUykgJChYQ0ZMQUdTKSAtbyAkQCAkXiAkKExJQlMpCi0gCi0gIyBJdCdzIGEga2luZCBvZiBtYWdpYy4uLgotIHdpcmVsZXNzLmg6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvbGRmbGFncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzBkOGNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9sZGZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotd2lyZWxlc3MtdG9vbHM6IFJlbW92ZSBRQSB3YXJuaW5nOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQotICBVc2VmdWwgd2l0aGluIGJpdGJha2UgZW52aXJvbm1lbnQgb25seS4KLQotU2lnbmVkLW9mZi1ieTogTXVoYW1tYWQgU2hha2VlbCA8bXVoYW1tYWRfc2hha2VlbEBtZW50b3IuY29tPgotCi0tLS0KLSBNYWtlZmlsZSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIHdpcmVsZXNzX3Rvb2xzLjI5Lm9yaWcvTWFrZWZpbGUKLSsrKyB3aXJlbGVzc190b29scy4yOS9NYWtlZmlsZQotQEAgLTE0NCw3ICsxNDQsNyBAQCB3aXJlbGVzcy5oOgotIAotICMgQ29tcGlsYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlicmFyeQotICQoRFlOQU1JQyk6ICQoT0JKUzoubz0uc28pCi0tCSQoQ0MpIC1zaGFyZWQgLW8gJEAgLVdsLC1zb25hbWUsJEAgJChTVFJJUEZMQUdTKSAkKExJQlMpIC1sYyAkXgotKwkkKENDKSAtc2hhcmVkIC1vICRAIC1XbCwtc29uYW1lLCRAICQoTERGTEFHUykgJChTVFJJUEZMQUdTKSAkKExJQlMpIC1sYyAkXgotIAotICMgQ29tcGlsYXRpb24gb2YgdGhlIHN0YXRpYyBsaWJyYXJ5Ci0gJChTVEFUSUMpOiAkKE9CSlM6Lm89LnNvKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXRvb2xzL3dpcmVsZXNzLXRvb2xzL21hbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9tYW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNzU3ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXRvb2xzL3dpcmVsZXNzLXRvb2xzL21hbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IHdpcmVsZXNzX3Rvb2xzLjMwL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2lyZWxlc3NfdG9vbHMuMzAub3JpZy9NYWtlZmlsZQkyMDE0LTAyLTAxIDAwOjIxOjA0LjE0ODQ2MzM4MiAtMDgwMAotKysrIHdpcmVsZXNzX3Rvb2xzLjMwL01ha2VmaWxlCTIwMTQtMDItMDEgMDA6MjM6MzUuNDQ4MDcyMjc5IC0wODAwCi1AQCAtNzYsNyArNzYsNyBAQAotIElOU1RBTExfRElSPSAkKFBSRUZJWCkvc2JpbgotIElOU1RBTExfTElCPSAkKFBSRUZJWCkvbGliCi0gSU5TVEFMTF9JTkM9ICQoUFJFRklYKS9pbmNsdWRlCi0tSU5TVEFMTF9NQU49ICQoUFJFRklYKS9tYW4KLStJTlNUQUxMX01BTj0gJChQUkVGSVgpL3NoYXJlL21hbgotIAotICMgVmFyaW91cyBjb21tYW5kcwotIFJNID0gcm0gLWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyMmMzZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1XaGVuIC9ldGMvbGQuc28uY2FjaGUgaXMgd3JpdGVhYmxlIGJ5IHVzZXIgcnVubmluZyBiaXRiYWtlIHRoZW4gaXQgY3JlYXRlcyBpbnZhbGlkIGNhY2hlIAotKGluIG15IGNhc2UgbGlic3RkYysrLnNvIGNhbm5vdCBiZSBmb3VuZCBhZnRlciBidWlsZGluZyB6bGliKC1uYXRpdmUpIGFuZCBJIGhhdmUgdG8gY2FsbCAKLXRvdWNoICovbGlic3RkYysrLnNvICYmIC9zYmluL2xkY29uZmlnIHRvIGZpeCBpdC4KLQotU28gcmVtb3ZlIGxkY29uZmlnIGNhbGwgZnJvbSBtYWtlIGluc3RhbGwtbGlicwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotZGlmZiAtdU5yIHdpcmVsZXNzX3Rvb2xzLjI5Lm9yaWcvTWFrZWZpbGUgd2lyZWxlc3NfdG9vbHMuMjkvTWFrZWZpbGUKLS0tLSB3aXJlbGVzc190b29scy4yOS5vcmlnL01ha2VmaWxlCTIwMDctMDktMTggMDE6NTY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgd2lyZWxlc3NfdG9vbHMuMjkvTWFrZWZpbGUJMjAxMi0wMi0xNSAyMDo0Njo0MS43ODA3NjM1MTQgKzAxMDAKLUBAIC0xNjMsNyArMTYzLDYgQEAKLSAJaW5zdGFsbCAtbSA3NTUgJChEWU5BTUlDKSAkKElOU1RBTExfTElCKQotIAlsbiAtc2ZuICQoRFlOQU1JQykgJChJTlNUQUxMX0xJQikvJChEWU5BTUlDX0xJTkspCi0gCUBlY2hvICIqKiogRG9uJ3QgZm9yZ2V0IHRvIGFkZCAkKElOU1RBTExfTElCKSB0byAvZXRjL2xkLnNvLmNvbmYsIGFuZCBydW4gbGRjb25maWcgYXMgcm9vdC4gKioqIgotLQlAJChMRENPTkZJRykgfHwgZWNobyAiKioqIENvdWxkIG5vdCBydW4gbGRjb25maWcgISAqKioiCi0gCi0gIyBJbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeQotIGluc3RhbGwtc3RhdGljOjogJChTVEFUSUMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHNfMzAucHJlOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29sc18zMC5wcmU5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTM0MjA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29sc18zMC5wcmU5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgdGhlIExpbnV4IFN0YW5kYXJkIFdpcmVsZXNzIEV4dGVuc2lvbiBTdWJzeXN0ZW0iCi1IT01FUEFHRSA9ICJodHRwczovL2hld2xldHRwYWNrYXJkLmdpdGh1Yi5pby93aXJlbGVzcy10b29scy9Ub29scy5odG1sIgotTElDRU5TRSA9ICJHUEx2MiAmIChMR1BMdjIuMSB8IE1QTC0xLjEgfCBCU0QpIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkJZmlsZTovL2l3Y29uZmlnLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMjttZDU9Y2Y3MTBlYjE3OTVjMzc2ZWIxMGVhNGZmMDQ2NDljYWYgXAotCQkJZmlsZTovL2l3ZXZlbnQuYztiZWdpbmxpbmU9NTk7ZW5kbGluZT03MjttZDU9ZDY2YTEwMDI2ZDQzOTRmMGE1YjFjNTU4N2JjZTQ1MzcgXAotCQkJZmlsZTovL3NhbXBsZV9lbmMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQ7bWQ1PTgzODM3MmJlMDc4NzQyNjBiNTY2YmFlMmY2ZWQzM2I2IgotU0VDVElPTiA9ICJiYXNlIgotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwczovL2hld2xldHRwYWNrYXJkLmdpdGh1Yi5pby93aXJlbGVzcy10b29scy93aXJlbGVzc190b29scy4ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3N0cmlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTkxYmE3YzdlZmY5YmZmZjY5MjZiMWEzNGE0Njk3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmQ5YzVjOThhYmYxZmRkMTE4OTJhYzJmOGE1NjczNzU0NGZlMTAxZTFiZTI3YzYyNDFhNTY0OTQ4ZjM0YzYzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9oZXdsZXR0cGFja2FyZC5naXRodWIuaW8vd2lyZWxlc3MtdG9vbHMvVG9vbHMuaHRtbCIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIndpcmVsZXNzX3Rvb2xzXC4oP1A8cHZlcj4oXGQrKShcLi4qfCkpXC50YXJcLmd6IgotCi1TID0gIiR7V09SS0RJUn0vd2lyZWxlc3NfdG9vbHMuMzAiCi0KLUNGTEFHUyA9KyAiLUkke1N9IgotRVhUUkFfT0VNQUtFID0gIi1lICdCVUlMRF9TSEFSRUQ9eScgXAotCQknSU5TVEFMTF9ESVI9JHtEfSR7YmFzZV9zYmluZGlyfScgXAotCQknSU5TVEFMTF9MSUI9JHtEfSR7bGliZGlyfScgXAotCQknSU5TVEFMTF9JTkM9JHtEfSR7aW5jbHVkZWRpcn0nIFwKLQkJJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0nIgotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UgYWxsIGxpYml3LmEKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIFBSRUZJWD0ke0R9IGluc3RhbGwtaXdtdWx0aWNhbGwgaW5zdGFsbC1keW5hbWljIGluc3RhbGwtbWFuIGluc3RhbGwtaGRyCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSBpZnJlbmFtZSAke0R9JHtzYmluZGlyfS9pZnJlbmFtZQotfQotCi1QQUNLQUdFUyA9ICJsaWJpdyBsaWJpdy1kZXYgbGliaXctZG9jIGlmcmVuYW1lLWRvYyBpZnJlbmFtZSAke1BOfSAke1BOfS1kb2MgJHtQTn0tZGJnIgotCi1GSUxFU19saWJpdyA9ICIke2xpYmRpcn0vKi5zby4qIgotRklMRVNfbGliaXctZGV2ID0gIiR7bGliZGlyfS8qLmEgJHtsaWJkaXJ9Lyouc28gJHtpbmNsdWRlZGlyfSIKLUZJTEVTX2xpYml3LWRvYyA9ICIke21hbmRpcn0vbWFuNyIKLUZJTEVTX2lmcmVuYW1lID0gIiR7c2JpbmRpcn0vaWZyZW5hbWUiCi1GSUxFU19pZnJlbmFtZS1kb2MgPSAiJHttYW5kaXJ9L21hbjgvaWZyZW5hbWUuOCAke21hbmRpcn0vbWFuNS9pZnRhYi41IgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0vaXcqICR7YmFzZV9zYmluZGlyfSAke2Jhc2VfYmluZGlyfSAke3N5c2NvbmZkaXJ9L25ldHdvcmsiCi1GSUxFU18ke1BOfS1kb2MgPSAiJHttYW5kaXJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUKaW5kZXggYTA2MjAyOC4uOWU0MjgzZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlCkBAIC0yMCwxNCArMjAsMTIgQEAKIAl1bnNldCBpCiBmaQogCi1pZiBjb21tYW5kIC12IHJlc2l6ZSA+L2Rldi9udWxsICYmIGNvbW1hbmQgLXYgdHR5ID4vZGV2L251bGw7IHRoZW4KLQkjIE1ha2Ugc3VyZSB3ZSBhcmUgb24gYSBzZXJpYWwgY29uc29sZSAoaS5lLiB0aGUgZGV2aWNlIHVzZWQgc3RhcnRzIHdpdGgKLQkjIC9kZXYvdHR5W0Etel0pLCBvdGhlcndpc2Ugd2UgY29uZnVzZSBlLmcuIHRoZSBlY2xpcHNlIGxhdW5jaGVyIHdoaWNoCi0JIyB0cmllcyBkbyB1c2Ugc3NoCi0JY2FzZSAkKHR0eSkgaW4KLQkJL2Rldi90dHlbQS16XSopIHJlc2l6ZSA+L2Rldi9udWxsOzsKLQllc2FjCi1maQorIyBNYWtlIHN1cmUgd2UgYXJlIG9uIGEgc2VyaWFsIGNvbnNvbGUgKGkuZS4gdGhlIGRldmljZSB1c2VkIHN0YXJ0cyB3aXRoCisjIC9kZXYvdHR5W0Etel0pLCBvdGhlcndpc2Ugd2UgY29uZnVzZSBlLmcuIHRoZSBlY2xpcHNlIGxhdW5jaGVyIHdoaWNoIHRyaWVzIGRvCisjIHVzZSBzc2gKK2Nhc2UgJCh0dHkgMj4vZGV2L251bGwpIGluCisJL2Rldi90dHlbQS16XSopIFsgLXggQEJJTkRJUkAvcmVzaXplIF0gJiYgQEJJTkRJUkAvcmVzaXplID4vZGV2L251bGw7OworZXNhYwogCiBleHBvcnQgUEFUSCBQUzEgT1BJRURJUiBRUEVESVIgUVRESVIgRURJVE9SIFRFUk0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiCmluZGV4IGE2OTYzYmEuLjZlNzU2NTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKQEAgLTEyNSw2ICsxMjUsNyBAQAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3VzYmQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC91c2JkCiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvZmlsZSAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlCiAJc2VkIC1pICdzI1JPT1RIT01FIyR7Uk9PVF9IT01FfSMnICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUKKyAgICAgICAgc2VkIC1pICdzI0BCSU5ESVJAIyR7YmluZGlyfSNnJyAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlCiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2hlbGxzICR7RH0ke3N5c2NvbmZkaXJ9L3NoZWxscwogCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3NoYXJlL2RvdC5wcm9maWxlICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwvLnByb2ZpbGUKIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zaGFyZS9kb3QuYmFzaHJjICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwvLmJhc2hyYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI3LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC1pbml0dGFiXzEuMjkuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI3LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yOS4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKaW5kZXggZjFiMDlkOS4uMDk0MzNkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwpAQCAtMyw3ICszLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQiCiBCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5idXN5Ym94Lm5ldC8iCiAKLURFUEVORFMgKz0gImtlcm4tdG9vbHMtbmF0aXZlIgorREVQRU5EUyArPSAia2Vybi10b29scy1uYXRpdmUgdmlydHVhbC9jcnlwdCIKIAogIyBiemlwMiBhcHBsZXQgaW4gYnVzeWJveCBpcyBiYXNlZCBvbiBsaWdodGx5LW1vZGlmaWVkIGJ6aXAyIHNvdXJjZQogIyB0aGUgR1BMIGlzIHZlcnNpb24gMiBvbmx5CkBAIC00MSwxMiArNDEsMTMgQEAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3lzbG9nIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c2xvZyA9ICIke0BiYi51dGlscy5jb250YWlucygnU1JDX1VSSScsICdmaWxlOi8vc3lzbG9nLmNmZycsICdidXN5Ym94LXN5c2xvZy5zZXJ2aWNlJywgJycsIGQpfSIKIAorUkRFUEVORFNfJHtQTn0tc3lzbG9nID0gImJ1c3lib3giCiBDT05GRklMRVNfJHtQTn0tc3lzbG9nID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLXN0YXJ0dXAuY29uZiIKIFJDT05GTElDVFNfJHtQTn0tc3lzbG9nID0gInJzeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgogCiBDT05GRklMRVNfJHtQTn0tbWRldiA9ICIke3N5c2NvbmZkaXJ9L21kZXYuY29uZiIKIAotUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tc3lzbG9nICR7UE59LXVkaGNwYyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LXVkaGNwYyIKIAogUkRFUEVORFNfJHtQTn0gPSAiJHtAWyIiLCAiYnVzeWJveC1pbml0dGFiIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ2J1c3lib3gnKV19IgogCkBAIC0xMTYsMTMgKzExNywxMyBAQAogCQkke1N9Ly5jb25maWcKIAlzZWQgLWkgLWUgJyR7Y29uZmlnbWFuZ2xlfScgJHtTfS8uY29uZmlnCiAJaWYgdGVzdCAke0RPX0lQdjR9IC1lcSAwICYmIHRlc3QgJHtET19JUHY2fSAtZXEgMDsgdGhlbgotCSAgIyBkaXNhYmxlIG5ldHdvcmtpbmcgYXBwbGV0cwotCSAgbXYgJHtTfS8uY29uZmlnICR7U30vLmNvbmZpZy5vZS10bXAKLQkgIGF3ayAnQkVHSU57bmV0PTB9Ci0JICAvXiMgTmV0d29ya2luZyBVdGlsaXRpZXMve25ldD0xfQotCSAgL14jJC97aWYobmV0KXtuZXQ9bmV0KzF9fQotCSAge2lmKG5ldD09MiYmJDAgIX4gL14jLyYmJDEpe3ByaW50KCIjICIkMSIgaXMgbm90IHNldCIpfWVsc2V7cHJpbnR9fScgXAotCQkgICR7U30vLmNvbmZpZy5vZS10bXAgPiAke1N9Ly5jb25maWcKKwkJIyBkaXNhYmxlIG5ldHdvcmtpbmcgYXBwbGV0cworCQltdiAke1N9Ly5jb25maWcgJHtTfS8uY29uZmlnLm9lLXRtcAorCQlhd2sgJ0JFR0lOe25ldD0wfQorCQkvXiMgTmV0d29ya2luZyBVdGlsaXRpZXMve25ldD0xfQorCQkvXiMkL3tpZihuZXQpe25ldD1uZXQrMX19CisJCXtpZihuZXQ9PTImJiQwICF+IC9eIy8mJiQxKXtwcmludCgiIyAiJDEiIGlzIG5vdCBzZXQiKX1lbHNle3ByaW50fX0nIFwKKwkJJHtTfS8uY29uZmlnLm9lLXRtcCA+ICR7U30vLmNvbmZpZwogCWZpCiAJc2VkIC1pICdzL0NPTkZJR19JRlVQRE9XTl9VREhDUENfQ01EX09QVElPTlM9Ii1SIC1uIi9DT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtYiIvJyAke1N9Ly5jb25maWcKIAlzZWQgLWkgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgJHtTfS8uY29uZmlnCkBAIC0xNTAsNyArMTUxLDcgQEAKIAkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQogCWZpCiAJaWYgWyAiJHtCVVNZQk9YX1NQTElUX1NVSUR9IiA9ICIxIiAtYSB4YGdyZXAgIkNPTkZJR19GRUFUVVJFX0lORElWSURVQUw9eSIgLmNvbmZpZ2AgPSB4IF07IHRoZW4KLQkjIHNwbGl0IHRoZSAuY29uZmlnIGludG8gdHdvIHBhcnRzLCBhbmQgbWFrZSB0d28gYnVzeWJveCBiaW5hcmllcworCQkjIHNwbGl0IHRoZSAuY29uZmlnIGludG8gdHdvIHBhcnRzLCBhbmQgbWFrZSB0d28gYnVzeWJveCBiaW5hcmllcwogCQlpZiBbIC1lIC5jb25maWcub3JpZyBdOyB0aGVuCiAJCQkjIE5lZWQgdG8gZ3VhcmQgYWdhaW4gYW4gaW50ZXJydXB0ZWQgZG9fY29tcGlsZSAtIHJlc3RvcmUgYW55IGJhY2t1cAogCQkJY3AgLmNvbmZpZy5vcmlnIC5jb25maWcKQEAgLTIwOSw2ICsyMTAsMTAgQEAKIAlzZWQgLWkgInM6Xi91c3IvYmluLzpCSU5ESVIvOiIgYnVzeWJveC5saW5rcyoKIAlzZWQgLWkgInM6Xi91c3Ivc2Jpbi86U0JJTkRJUi86IiBidXN5Ym94LmxpbmtzKgogCisJIyBNb3ZlIGFyY2gvbGluayB0byBCSU5ESVIgdG8gbWF0Y2ggY29yZXV0aWxzCisJc2VkIC1pICJzOl5CQVNFX0JJTkRJUi9hcmNoOkJJTkRJUi9hcmNoOiIgYnVzeWJveC5saW5rcyoKKwlzZWQgLWkgInM6XkJBU0VfQklORElSL2xpbms6QklORElSL2xpbms6IiBidXN5Ym94LmxpbmtzKgorCiAJc2VkIC1pICJzOl5CQVNFX0JJTkRJUi86JHtiYXNlX2JpbmRpcn0vOiIgYnVzeWJveC5saW5rcyoKIAlzZWQgLWkgInM6XkJBU0VfU0JJTkRJUi86JHtiYXNlX3NiaW5kaXJ9LzoiIGJ1c3lib3gubGlua3MqCiAJc2VkIC1pICJzOl5CSU5ESVIvOiR7YmluZGlyfS86IiBidXN5Ym94LmxpbmtzKgpAQCAtMjUwLDggKzI1NSw3IEBACiAJCQlsbiAtc2YgYnVzeWJveCAke0R9JHtiYXNlX2JpbmRpcn0vYnVzeWJveC5ub3N1aWQKIAkJZmkKIAllbHNlCi0JCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9ICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9ICR7RH0ke2JpbmRpcn0gJHtEfSR7c2JpbmRpcn0KKwkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0gJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9CiAJCWNhdCBidXN5Ym94LmxpbmtzIHwgd2hpbGUgcmVhZCBGSUxFOyBkbwogCQkJTkFNRT1gYmFzZW5hbWUgIiRGSUxFImAKIAkJCWluc3RhbGwgLW0gMDc1NSAiMF9saWIvJE5BTUUiICIke0R9JEZJTEUuJHtCUE59IgpAQCAtMjc1LDc3ICsyNzksNzYgQEAKIAkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2ctc3RhcnR1cC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYKIAkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZgogCWZpCi0JaWYgZ3JlcCAiQ09ORklHX0NST05EPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCWlmIGdyZXAgLXEgIkNPTkZJR19DUk9ORD15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vYnVzeWJveC1jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KIAlmaQotCWlmIGdyZXAgIkNPTkZJR19IVFRQRD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwlpZiBncmVwIC1xICJDT05GSUdfSFRUUEQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2J1c3lib3gtaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogCQlpbnN0YWxsIC1kICR7RH0vc3J2L3d3dwogCWZpCi0JaWYgZ3JlcCAiQ09ORklHX1VESENQRD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwlpZiBncmVwIC1xICJDT05GSUdfVURIQ1BEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9idXN5Ym94LXVkaGNwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAJZmkKLQlpZiBncmVwICJDT05GSUdfSFdDTE9DSz15IiAke0J9Ly5jb25maWc7IHRoZW4KKwlpZiBncmVwIC1xICJDT05GSUdfSFdDTE9DSz15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaHdjbG9jay5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAJZmkKLQlpZiBncmVwICJDT05GSUdfVURIQ1BDPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCWlmIGdyZXAgLXEgIkNPTkZJR19VREhDUEM9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRoY3BjLmQKIAkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS91ZGhjcGMKIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2ltcGxlLnNjcmlwdCAke0R9JHtzeXNjb25mZGlyfS91ZGhjcGMuZC81MGRlZmF1bHQKIAkJc2VkIC1pICJzOi9TQklOX0RJUi86JHtiYXNlX3NiaW5kaXJ9LzoiICR7RH0ke3N5c2NvbmZkaXJ9L3VkaGNwYy5kLzUwZGVmYXVsdAogCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kZWZhdWx0LnNjcmlwdCAke0R9JHtkYXRhZGlyfS91ZGhjcGMvZGVmYXVsdC5zY3JpcHQKIAlmaQotCWlmIGdyZXAgIkNPTkZJR19JTkVURD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwlpZiBncmVwIC1xICJDT05GSUdfSU5FVEQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luZXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pbmV0ZC4ke0JQTn0KIAkJc2VkIC1pICJzOi91c3Ivc2Jpbi86JHtzYmluZGlyfS86IiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvaW5ldGQuJHtCUE59CiAJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZXRkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vCiAJZmkKLSAgICAgICAgaWYgZ3JlcCAiQ09ORklHX01ERVY9eSIgJHtCfS8uY29uZmlnOyB0aGVuCi0gICAgICAgICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tZGV2ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tZGV2Ci0gICAgICAgICAgICAgICBpZiBncmVwICJDT05GSUdfRkVBVFVSRV9NREVWX0NPTkY9eSIgJHtCfS8uY29uZmlnOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbWRldi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L21kZXYuY29uZgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21kZXYKLSAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZmluZC10b3VjaHNjcmVlbi5zaCAke0R9JHtzeXNjb25mZGlyfS9tZGV2Ci0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21kZXYtbW91bnQuc2ggJHtEfSR7c3lzY29uZmRpcn0vbWRldgotICAgICAgICAgICAgICAgZmkKKwlpZiBncmVwIC1xICJDT05GSUdfTURFVj15IiAke0J9Ly5jb25maWc7IHRoZW4KKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWRldiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbWRldgorCQlpZiBncmVwICJDT05GSUdfRkVBVFVSRV9NREVWX0NPTkY9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L21kZXYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9tZGV2LmNvbmYKKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vbWRldgorCQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZmluZC10b3VjaHNjcmVlbi5zaCAke0R9JHtzeXNjb25mZGlyfS9tZGV2CisJCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tZGV2LW1vdW50LnNoICR7RH0ke3N5c2NvbmZkaXJ9L21kZXYKKwkJZmkKIAlmaQotICAgICAgICBpZiBncmVwICJDT05GSUdfSU5JVD15IiAke0J9Ly5jb25maWc7IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NzcgJHtXT1JLRElSfS9yY1MgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JjUwotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc3NyAke1dPUktESVJ9L3JjSyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcmNLCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vcnVubGV2ZWwgJHtEfSR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbAotICAgICAgICBmaQorCWlmIGdyZXAgLXEgIkNPTkZJR19JTklUPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA3NzcgJHtXT1JLRElSfS9yY1MgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JjUworCQlpbnN0YWxsIC1EIC1tIDA3NzcgJHtXT1JLRElSfS9yY0sgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JjSworCWZpCiAKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGlmIGdyZXAgLXEgIkNPTkZJR19LTE9HRD15IiAke0J9Ly5jb25maWc7IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgICAgIHNlZCAncyxAYmFzZV9zYmluZGlyQCwke2Jhc2Vfc2JpbmRpcn0sZycgPCAke1dPUktESVJ9L2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCi0gICAgICAgICAgICA+ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2J1c3lib3gta2xvZ2Quc2VydmljZQotICAgICAgICBmaQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaWYgZ3JlcCAtcSAiQ09ORklHX0tMT0dEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQkJc2VkICdzLEBiYXNlX3NiaW5kaXJALCR7YmFzZV9zYmluZGlyfSxnJyA8ICR7V09SS0RJUn0vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKKwkJCT4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYnVzeWJveC1rbG9nZC5zZXJ2aWNlCisJCWZpCiAKLSAgICAgICAgaWYgZ3JlcCAtcSAiQ09ORklHX1NZU0xPR0Q9eSIgJHtCfS8uY29uZmlnOyB0aGVuCi0gICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgICAgICBzZWQgJ3MsQGJhc2Vfc2JpbmRpckAsJHtiYXNlX3NiaW5kaXJ9LGcnIDwgJHtXT1JLRElSfS9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKLQkJPiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlCi0gICAgICAgICAgICBpZiAgWyAhIC1lICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2J1c3lib3gta2xvZ2Quc2VydmljZSBdIDsgdGhlbgotICAgICAgICAgICAgICAgIHNlZCAtaSAnL2tsb2cvZCcgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYnVzeWJveC1zeXNsb2cuc2VydmljZQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGlmIFsgLWYgJHtXT1JLRElSfS9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IF0gOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9idXN5Ym94LXN5c2xvZy5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvYnVzeWJveC1zeXNsb2cKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGZpCi0gICAgZmkKKwkJaWYgZ3JlcCAtcSAiQ09ORklHX1NZU0xPR0Q9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCQlzZWQgJ3MsQGJhc2Vfc2JpbmRpckAsJHtiYXNlX3NiaW5kaXJ9LGcnIDwgJHtXT1JLRElSfS9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKKwkJCT4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYnVzeWJveC1zeXNsb2cuc2VydmljZQorCQkJaWYgIFsgISAtZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9idXN5Ym94LWtsb2dkLnNlcnZpY2UgXSA7IHRoZW4KKwkJCQlzZWQgLWkgJy9rbG9nL2QnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UKKwkJCWZpCisJCQlpZiBbIC1mICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBdIDsgdGhlbgorCQkJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCQkJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9idXN5Ym94LXN5c2xvZworCQkJZmkKKwkJZmkKKwlmaQogCi0gICAgIyBSZW1vdmUgdGhlIHN5c3Zpbml0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3Igc3lzdGVtZCBzeXN0ZW1zIHRvIGF2b2lkIGNvbmZ1c2lvbgotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYKLSAgICBmaQorCSMgUmVtb3ZlIHRoZSBzeXN2aW5pdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHN5c3RlbWQgc3lzdGVtcyB0byBhdm9pZCBjb25mdXNpb24KKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLXN0YXJ0dXAuY29uZgorCWZpCiB9CiAKIGRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgICAgICBjcCAtciAke0J9L3Rlc3RzdWl0ZSAke0R9JHtQVEVTVF9QQVRIfS8KLSAgICAgICAgY3AgJHtCfS8uY29uZmlnICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vCi0gICAgICAgIGxuIC1zIC9iaW4vYnVzeWJveCAgICR7RH0ke1BURVNUX1BBVEh9L2J1c3lib3gKKwljcCAtciAke0J9L3Rlc3RzdWl0ZSAke0R9JHtQVEVTVF9QQVRIfS8KKwljcCAke0J9Ly5jb25maWcgICAgICAke0R9JHtQVEVTVF9QQVRIfS8KKwlsbiAtcyAvYmluL2J1c3lib3ggICAke0R9JHtQVEVTVF9QQVRIfS9idXN5Ym94CiB9CiAKIGluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwpAQCAtMzY4LDcgKzM3MSwxMCBAQAogICAgICAgICAgICAgIyBNYXRjaCBjb3JldXRpbHMKICAgICAgICAgICAgIGlmIGFsdF9uYW1lID09ICdbJzoKICAgICAgICAgICAgICAgICBhbHRfbmFtZSA9ICdsYnJhY2tldCcKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcycgJSAocG4pLCAnICcgKyBhbHRfbmFtZSkKKyAgICAgICAgICAgIGlmIGFsdF9uYW1lID09ICdrbG9nZCcgb3IgYWx0X25hbWUgPT0gJ3N5c2xvZ2QnOgorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcy1zeXNsb2cnICUgKHBuKSwgJyAnICsgYWx0X25hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcycgJSAocG4pLCAnICcgKyBhbHRfbmFtZSkKICAgICAgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgYWx0X25hbWUsIGFsdF9saW5rX25hbWUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygnJXMlcycgJSAoZHZhciwgdGFyZ2V0KSk6CiAgICAgICAgICAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVQnLCBhbHRfbmFtZSwgdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTEtNTMyNS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDExLTUzMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA5MjYxMDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTEtNTMyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MSArMCwwIEBACi1idXN5Ym94LTEuMjcuMjogRml4IENWRS0yMDExLTUzMjUKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvc2hvd19idWcuY2dpP2lkPTg0MTEKLQotbGliYXJjaGl2ZTogZG8gbm90IGV4dHJhY3QgdW5zYWZlIHN5bWxpbmtzCi0KLVByZXZlbnQgdW5zYWZlIGxpbmtzIGV4dHJhY3RpbmcgdW5sZXNzIGVudiB2YXJpYWJsZSAkRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MQotaXMgbm90IHNldC4gVW50YXJyaW5nIGZpbGUgd2l0aCAtQyBERVNURElSIHBhcmFtZXRlciBjb3VsZCBiZSBleHRyYWN0ZWQgd2l0aAotdW53YW50ZWQgc3ltbGlua3MuIFRoaXMgZG9lc24ndCBmZWVsIHJpZ2h0LCBhbmQgSUlSQyBHTlUgdGFyIGRvZXNuJ3QgZG8gdGhhdC4KLUluY2x1ZGUgbmVjZXNzYXJ5IGNoYW5nZXMgZnJvbSBwcmV2aW91cyBjb21taXRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YmM5YmJlYjJiODEwMDFlODczMWNkMmFlNTAxYzhmY2NjOGQ4N2NjN10KLUNWRTogQ1ZFLTIwMTEtNTMyNQotYnVnOiA4NDExCi1TaWduZWQtb2ZmLWJ5OiBSYWRvdmFuIFNjYXNueSA8cmFkb3Zhbi5zY2FzbnlAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYwotaW5kZXggOTQyZTc1NS4uZTFhOGE3NSAxMDA2NDQKLS0tLSBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYwotKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9LYnVpbGQuc3JjCi1AQCAtMTIsNiArMTIsOCBAQCBDT01NT05fRklMRVM6PSBcCi0gCWRhdGFfZXh0cmFjdF9hbGwubyBcCi0gCWRhdGFfZXh0cmFjdF90b19zdGRvdXQubyBcCi0gXAotKwl1bnNhZmVfc3ltbGlua190YXJnZXQubyBcCi0rXAotIAlmaWx0ZXJfYWNjZXB0X2FsbC5vIFwKLSAJZmlsdGVyX2FjY2VwdF9saXN0Lm8gXAotIAlmaWx0ZXJfYWNjZXB0X3JlamVjdF9saXN0Lm8gXAotZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGF0YV9leHRyYWN0X2FsbC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKLWluZGV4IDE4MzBmZmIuLmI4MjhiNjUgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RhdGFfZXh0cmFjdF9hbGwuYwotKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKLUBAIC0xMjgsMTAgKzEyOCw5IEBAIHZvaWQgRkFTVF9GVU5DIGRhdGFfZXh0cmFjdF9hbGwoYXJjaGl2ZV9oYW5kbGVfdCAqYXJjaGl2ZV9oYW5kbGUpCi0gCQlyZXMgPSBsaW5rKGhhcmRfbGluaywgZHN0X25hbWUpOwotIAkJaWYgKHJlcyAhPSAwICYmICEoYXJjaGl2ZV9oYW5kbGUtPmFoX2ZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1FVSUVUKSkgewotIAkJCS8qIHNoYXJlZCBtZXNzYWdlICovCi0tCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAiCi0tCQkJCQkiJXMgdG8gJXMiLCAiaGFyZCIsCi0tCQkJCQlkc3RfbmFtZSwKLS0JCQkJCWhhcmRfbGluayk7Ci0rCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAotKwkJCQkJICJoYXJkIiwgZHN0X25hbWUsIGhhcmRfbGluawotKwkJCSk7Ci0gCQl9Ci0gCQkvKiBIYXJkbGlua3MgaGF2ZSBubyBzZXBhcmF0ZSBtb2RlL293bmVyc2hpcCwgc2tpcCBjaG93bi9jaG1vZCAqLwotIAkJZ290byByZXQ7Ci1AQCAtMTc4LDE1ICsxNzcsMTcgQEAgdm9pZCBGQVNUX0ZVTkMgZGF0YV9leHRyYWN0X2FsbChhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSkKLSAJY2FzZSBTX0lGTE5LOgotIAkJLyogU3ltbGluayAqLwotIC8vVE9ETzogd2hhdCBpZiBmaWxlX2hlYWRlci0+bGlua190YXJnZXQgPT0gTlVMTCAoc2F5LCBjb3JydXB0ZWQgdGFyYmFsbD8pCi0tCQlyZXMgPSBzeW1saW5rKGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCwgZHN0X25hbWUpOwotLQkJaWYgKHJlcyAhPSAwCi0tCQkgJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpCi0tCQkpIHsKLS0JCQkvKiBzaGFyZWQgbWVzc2FnZSAqLwotLQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgIgotLQkJCQkiJXMgdG8gJXMiLCAic3ltIiwKLS0JCQkJZHN0X25hbWUsCi0tCQkJCWZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCk7Ci0rCQlpZiAoIXVuc2FmZV9zeW1saW5rX3RhcmdldChmaWxlX2hlYWRlci0+bGlua190YXJnZXQpKSB7Ci0rCQkJcmVzID0gc3ltbGluayhmaWxlX2hlYWRlci0+bGlua190YXJnZXQsIGRzdF9uYW1lKTsKLSsJCQlpZiAocmVzICE9IDAKLSsJCQkJJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpCi0rCQkJKSB7Ci0rCQkJCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KLSsJCQkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCi0rCQkJCQkJCSJzeW0iLAotKwkJCQkJCQlkc3RfbmFtZSwgZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0Ci0rCQkJCQkJKTsKLSsJCQl9Ci0gCQl9Ci0gCQlicmVhazsKLSAJY2FzZSBTX0lGU09DSzoKLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL3Vuc2FmZV9zeW1saW5rX3RhcmdldC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS91bnNhZmVfc3ltbGlua190YXJnZXQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmVlNDZlMjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvdW5zYWZlX3N5bWxpbmtfdGFyZ2V0LmMKLUBAIC0wLDAgKzEsNDggQEAKLSsvKiB2aTogc2V0IHN3PTQgdHM9NDogKi8KLSsvKgotKyAqIExpY2Vuc2VkIHVuZGVyIEdQTHYyIG9yIGxhdGVyLCBzZWUgZmlsZSBMSUNFTlNFIGluIHRoaXMgc291cmNlIHRyZWUuCi0rICovCi0rI2luY2x1ZGUgImxpYmJiLmgiCi0rI2luY2x1ZGUgImJiX2FyY2hpdmUuaCIKLSsKLStpbnQgRkFTVF9GVU5DIHVuc2FmZV9zeW1saW5rX3RhcmdldChjb25zdCBjaGFyICp0YXJnZXQpCi0rewotKwljb25zdCBjaGFyICpkb3Q7Ci0rCi0rCWlmICh0YXJnZXRbMF0gPT0gJy8nKSB7Ci0rCQljb25zdCBjaGFyICp2YXI7Ci0rdW5zYWZlOgotKwkJdmFyID0gZ2V0ZW52KCJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIpOwotKwkJaWYgKHZhcikgewotKwkJCWlmIChMT05FX0NIQVIodmFyLCAnMScpKQotKwkJCQlyZXR1cm4gMDsgLyogcHJldGVuZCBpdCdzIHNhZmUgKi8KLSsJCQlyZXR1cm4gMTsgLyogIlVOU0FGRSEiICovCi0rCQl9Ci0rCQliYl9lcnJvcl9tc2coInNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICclcycgaW4gYXJjaGl2ZSwiCi0rCQkJIiBzZXQgJXM9MSB0byBleHRyYWN0IiwKLSsJCQl0YXJnZXQsCi0rCQkJIkVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTIgotKwkJKTsKLSsJCS8qIFByZXZlbnQgZnVydGhlciBtZXNzYWdlcyAqLwotKwkJc2V0ZW52KCJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIsICIwIiwgMCk7Ci0rCQlyZXR1cm4gMTsgLyogIlVOU0FGRSEiICovCi0rCX0KLSsKLSsJZG90ID0gdGFyZ2V0OwotKwlmb3IgKDs7KSB7Ci0rCQlkb3QgPSBzdHJjaHIoZG90LCAnLicpOwotKwkJCWlmICghZG90KQotKwkJCQlyZXR1cm4gMDsgLyogc2FmZSB0YXJnZXQgKi8KLSsKLSsJCQkvKiBJcyBpdCBhIHBhdGggY29tcG9uZW50IHN0YXJ0aW5nIHdpdGggIi4uIj8gKi8KLSsJCQlpZiAoKGRvdFsxXSA9PSAnLicpCi0rCQkJCSYmIChkb3QgPT0gdGFyZ2V0IHx8IGRvdFstMV0gPT0gJy8nKQotKwkJCQkJLyogSXMgaXQgZXhhY3RseSAiLi4iPyAqLwotKwkJCQkmJiAoZG90WzJdID09ICcvJyB8fCBkb3RbMl0gPT0gJ1wwJykKLSsJCQkpIHsKLSsJCQkJZ290byB1bnNhZmU7Ci0rCQkJfQotKwkJCS8qIE5COiBpdCBjYW4gZXZlbiBiZSB0cmFpbGluZyAiLiIsIHNob3VsZCBvbmx5IGFkZCAxICovCi0rCQkJZG90ICs9IDE7Ci0rCX0KLSt9Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQgYS9hcmNoaXZhbC91bnppcC5jIGIvYXJjaGl2YWwvdW56aXAuYwotaW5kZXggOTAzNzI2Mi4uMjcwZTI2MSAxMDA2NDQKLS0tLSBhL2FyY2hpdmFsL3VuemlwLmMKLSsrKyBiL2FyY2hpdmFsL3VuemlwLmMKLUBAIC0zMzUsNiArMzM1LDQ0IEBAIHN0YXRpYyB2b2lkIHVuemlwX2NyZWF0ZV9sZWFkaW5nX2RpcnMoY29uc3QgY2hhciAqZm4pCi0gCWZyZWUobmFtZSk7Ci0gfQotIAotK3N0YXRpYyB2b2lkIHVuemlwX2V4dHJhY3Rfc3ltbGluayh6aXBfaGVhZGVyX3QgKnppcCwgY29uc3QgY2hhciAqZHN0X2ZuKQotK3sKLSsJY2hhciAqdGFyZ2V0OwotKwotKwlpZiAoemlwLT5mbXQudWNtcHNpemUgPiAweGZmZikgLyogbm8gZnVubnkgYnVzaW5lc3MgcGxlYXNlICovCi0rCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiYmFkIGFyY2hpdmUiKTsKLSsKLSsJaWYgKHppcC0+Zm10Lm1ldGhvZCA9PSAwKSB7Ci0rCQkvKiBNZXRob2QgMCAtIHN0b3JlZCAobm90IGNvbXByZXNzZWQpICovCi0rCQl0YXJnZXQgPSB4emFsbG9jKHppcC0+Zm10LnVjbXBzaXplICsgMSk7Ci0rCQl4cmVhZCh6aXBfZmQsIHRhcmdldCwgemlwLT5mbXQudWNtcHNpemUpOwotKwl9IGVsc2UgewotKyNpZiAxCi0rCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiY29tcHJlc3NlZCBzeW1saW5rIGlzIG5vdCBzdXBwb3J0ZWQiKTsKLSsjZWxzZQotKwkJdHJhbnNmb3JtZXJfc3RhdGVfdCB4c3RhdGU7Ci0rCQlpbml0X3RyYW5zZm9ybWVyX3N0YXRlKCZ4c3RhdGUpOwotKwkJeHN0YXRlLm1lbV9vdXRwdXRfc2l6ZV9tYXggPSB6aXAtPmZtdC51Y21wc2l6ZTsKLSsJCS8qIC4uLnVucGFjay4uLiAqLwotKwkJaWYgKCF4c3RhdGUubWVtX291dHB1dF9idWYpCi0rCQkJV1RGKCk7Ci0rCQl0YXJnZXQgPSB4c3RhdGUubWVtX291dHB1dF9idWY7Ci0rCQl0YXJnZXQgPSB4cmVhbGxvYyh0YXJnZXQsIHhzdGF0ZS5tZW1fb3V0cHV0X3NpemUgKyAxKTsKLSsJCXRhcmdldFt4c3RhdGUubWVtX291dHB1dF9zaXplXSA9ICdcMCc7Ci0rI2VuZGlmCi0rCX0KLSsJaWYgKCF1bnNhZmVfc3ltbGlua190YXJnZXQodGFyZ2V0KSkgewotKy8vVE9ETzogbGliYmIgY2FuZGlkYXRlCi0rCQlpZiAoc3ltbGluayh0YXJnZXQsIGRzdF9mbikpIHsKLSsJCQkvKiBzaGFyZWQgbWVzc2FnZSAqLwotKwkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAotKwkJCQkic3ltIiwgZHN0X2ZuLCB0YXJnZXQKLSsJCQkpOwotKwkJfQotKwl9Ci0rCWZyZWUodGFyZ2V0KTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgdW56aXBfZXh0cmFjdCh6aXBfaGVhZGVyX3QgKnppcCwgaW50IGRzdF9mZCkKLSB7Ci0gCXRyYW5zZm9ybWVyX3N0YXRlX3QgeHN0YXRlOwotQEAgLTgxMyw3ICs4NTEsNyBAQCBpbnQgdW56aXBfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQl9Ci0gIGNoZWNrX2ZpbGU6Ci0gCQkvKiBFeHRyYWN0IGZpbGUgKi8KLS0JCWlmIChzdGF0KGRzdF9mbiwgJnN0YXRfYnVmKSA9PSAtMSkgewotKwkJaWYgKGxzdGF0KGRzdF9mbiwgJnN0YXRfYnVmKSA9PSAtMSkgewotIAkJCS8qIEZpbGUgZG9lcyBub3QgZXhpc3QgKi8KLSAJCQlpZiAoZXJybm8gIT0gRU5PRU5UKSB7Ci0gCQkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3Qgc3RhdCAnJXMnIiwgZHN0X2ZuKTsKLUBAIC04MzQsNiArODcyLDcgQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWdvdG8gZG9fb3Blbl9hbmRfZXh0cmFjdDsKLSAJCXByaW50ZigicmVwbGFjZSAlcz8gW3ldZXMsIFtuXW8sIFtBXWxsLCBbTl1vbmUsIFtyXWVuYW1lOiAiLCBkc3RfZm4pOwotIAkJbXlfZmdldHM4MChrZXlfYnVmKTsKLSsvL1RPRE86IHJlZG8gbHN0YXQgKyBJU1JFRyBjaGVjayEgdXNlciBpbnB1dCBjb3VsZCBoYXZlIHRha2VuIGEgbG9uZyB0aW1lIQotIAotIAkJc3dpdGNoIChrZXlfYnVmWzBdKSB7Ci0gCQljYXNlICdBJzoKLUBAIC04NDIsNyArODgxLDggQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICBkb19vcGVuX2FuZF9leHRyYWN0OgotIAkJCXVuemlwX2NyZWF0ZV9sZWFkaW5nX2RpcnMoZHN0X2ZuKTsKLSAjaWYgRU5BQkxFX0ZFQVRVUkVfVU5aSVBfQ0RGCi0tCQkJZHN0X2ZkID0geG9wZW4zKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgZmlsZV9tb2RlKTsKLSsJCQlpZiAoIVNfSVNMTksoZmlsZV9tb2RlKSkKLSsJCQkJZHN0X2ZkID0geG9wZW4zKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgZmlsZV9tb2RlKTsKLSAjZWxzZQotIAkJCWRzdF9mZCA9IHhvcGVuKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7Ci0gI2VuZGlmCi1AQCAtODUyLDEwICs4OTIsMTggQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQkJPyAiIGV4dHJhY3Rpbmc6ICVzXG4iCi0gCQkJCQk6ICovICIgIGluZmxhdGluZzogJXNcbiIsIGRzdF9mbik7Ci0gCQkJfQotLQkJCXVuemlwX2V4dHJhY3QoJnppcCwgZHN0X2ZkKTsKLS0JCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIHsKLS0JCQkJLyogY2xvc2luZyBTVERPVVQgaXMgcG90ZW50aWFsbHkgYmFkIGZvciBmdXR1cmUgYnVzaW5lc3MgKi8KLS0JCQkJY2xvc2UoZHN0X2ZkKTsKLSsjaWYgRU5BQkxFX0ZFQVRVUkVfVU5aSVBfQ0RGCi0rCQkJaWYgKFNfSVNMTksoZmlsZV9tb2RlKSkgewotKwkJCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIC8qIG5vIC1wICovCi0rCQkJCQl1bnppcF9leHRyYWN0X3N5bWxpbmsoJnppcCwgZHN0X2ZuKTsKLSsJCQl9IGVsc2UKLSsjZW5kaWYKLSsJCQl7Ci0rCQkJCXVuemlwX2V4dHJhY3QoJnppcCwgZHN0X2ZkKTsKLSsJCQkJaWYgKGRzdF9mZCAhPSBTVERPVVRfRklMRU5PKSB7Ci0rCQkJCQkvKiBjbG9zaW5nIFNURE9VVCBpcyBwb3RlbnRpYWxseSBiYWQgZm9yIGZ1dHVyZSBidXNpbmVzcyAqLwotKwkJCQkJY2xvc2UoZHN0X2ZkKTsKLSsJCQkJfTsKLSAJCQl9Ci0gCQkJYnJlYWs7Ci0gCi1kaWZmIC0tZ2l0IGEvY29yZXV0aWxzL2xpbmsuYyBiL2NvcmV1dGlscy9saW5rLmMKLWluZGV4IGFjM2VmODUuLmFhYjI0OWQgMTAwNjQ0Ci0tLS0gYS9jb3JldXRpbHMvbGluay5jCi0rKysgYi9jb3JldXRpbHMvbGluay5jCi1AQCAtMzIsOSArMzIsOCBAQCBpbnQgbGlua19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCWFyZ3YgKz0gb3B0aW5kOwotIAlpZiAobGluayhhcmd2WzBdLCBhcmd2WzFdKSAhPSAwKSB7Ci0gCQkvKiBzaGFyZWQgbWVzc2FnZSAqLwotLQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBjcmVhdGUgJXNsaW5rICIKLS0JCQkJCSIlcyB0byAlcyIsICJoYXJkIiwKLS0JCQkJCWFyZ3ZbMV0sIGFyZ3ZbMF0KLSsJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAotKwkJCQkJImhhcmQiLAlhcmd2WzFdLCBhcmd2WzBdCi0gCQkpOwotIAl9Ci0gCXJldHVybiBFWElUX1NVQ0NFU1M7Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9iYl9hcmNoaXZlLmggYi9pbmNsdWRlL2JiX2FyY2hpdmUuaAotaW5kZXggMmI5YzVmMC4uMWU0ZGEzYyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYmJfYXJjaGl2ZS5oCi0rKysgYi9pbmNsdWRlL2JiX2FyY2hpdmUuaAotQEAgLTE5Niw2ICsxOTYsNyBAQCB2b2lkIHNlZWtfYnlfanVtcChpbnQgZmQsIG9mZl90IGFtb3VudCkgRkFTVF9GVU5DOwotIHZvaWQgc2Vla19ieV9yZWFkKGludCBmZCwgb2ZmX3QgYW1vdW50KSBGQVNUX0ZVTkM7Ci0gCi0gY29uc3QgY2hhciAqc3RyaXBfdW5zYWZlX3ByZWZpeChjb25zdCBjaGFyICpzdHIpIEZBU1RfRlVOQzsKLStpbnQgdW5zYWZlX3N5bWxpbmtfdGFyZ2V0KGNvbnN0IGNoYXIgKnRhcmdldCkgRkFTVF9GVU5DOwotIAotIHZvaWQgZGF0YV9hbGlnbihhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSwgdW5zaWduZWQgYm91bmRhcnkpIEZBU1RfRlVOQzsKLSBjb25zdCBsbGlzdF90ICpmaW5kX2xpc3RfZW50cnkoY29uc3QgbGxpc3RfdCAqbGlzdCwgY29uc3QgY2hhciAqZmlsZW5hbWUpIEZBU1RfRlVOQzsKLWRpZmYgLS1naXQgYS9saWJiYi9jb3B5X2ZpbGUuYyBiL2xpYmJiL2NvcHlfZmlsZS5jCi1pbmRleCAyM2MwZjgzLi5iZTkwMDY2IDEwMDY0NAotLS0tIGEvbGliYmIvY29weV9maWxlLmMKLSsrKyBiL2xpYmJiL2NvcHlfZmlsZS5jCi1AQCAtMzcxLDcgKzM3MSwxMCBAQCBpbnQgRkFTVF9GVU5DIGNvcHlfZmlsZShjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKmRlc3QsIGludCBmbGFncykKLSAJCQlpbnQgciA9IHN5bWxpbmsobHBhdGgsIGRlc3QpOwotIAkJCWZyZWUobHBhdGgpOwotIAkJCWlmIChyIDwgMCkgewotLQkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgc3ltbGluayAnJXMnIiwgZGVzdCk7Ci0rCQkJCS8qIHNoYXJlZCBtZXNzYWdlICovCi0rCQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKLSsJCQkJCSJzeW0iLCBkZXN0LCBscGF0aAotKwkJCQkpOwotIAkJCQlyZXR1cm4gLTE7Ci0gCQkJfQotIAkJCWlmIChmbGFncyAmIEZJTEVVVElMU19QUkVTRVJWRV9TVEFUVVMpCi1kaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3Rhci50ZXN0cyBiL3Rlc3RzdWl0ZS90YXIudGVzdHMKLWluZGV4IDlmN2NlMTUuLmI3Y2Q3NGMgMTAwNzU1Ci0tLS0gYS90ZXN0c3VpdGUvdGFyLnRlc3RzCi0rKysgYi90ZXN0c3VpdGUvdGFyLnRlc3RzCi1AQCAtMTAsOSArMTAsNiBAQCB1bnNldCBMQ19DT0xMQVRFCi0gdW5zZXQgTENfQUxMCi0gdW1hc2sgMDIyCi0gCi0tcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0tbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCi0tCi0gIyB0ZXN0aW5nICJ0ZXN0IG5hbWUiICJzY3JpcHQiICJleHBlY3RlZCByZXN1bHQiICJmaWxlIGlucHV0IiAic3RkaW4iCi0gCi0gdGVzdGluZyAiRW1wdHkgZmlsZSBpcyBub3QgYSB0YXJiYWxsIiAnXAotQEAgLTUzLDYgKzUwLDcgQEAgZGQgaWY9L2Rldi96ZXJvIGJzPTUxMiBjb3VudD0yMCAyPi9kZXYvbnVsbCB8IHRhciB4dmYgLSAyPiYxOyBlY2hvICQ/Ci0gIiIgIiIKLSBTS0lQPQotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotICMgInRhciBjZiB0ZXN0LnRhciBpbnB1dCBpbnB1dF9kaXIvIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyIGlucHV0X2hhcmQxIGlucHV0X2Rpci8gaW5wdXQiOgotICMgR05VIHRhciAxLjI2IHJlY29yZHMgYXMgaGFyZGxpbmtzOgotICMgIGlucHV0X2hhcmQyIC0+IGlucHV0X2hhcmQxCi1AQCAtNjQsNyArNjIsNiBAQCBTS0lQPQotICMgV2UgYWxzbyBkb24ndCB1c2UgImhydy1yLS1yLS0iIG5vdGF0aW9uIGZvciBoYXJkbGlua3MgaW4gInRhciB0diIgbGlzdGluZy4KLSBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9MU19TT1JURklMRVMKLSB0ZXN0aW5nICJ0YXIgaGFyZGxpbmtzIGFuZCByZXBlYXRlZCBmaWxlcyIgJ1wKLS1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAotID5pbnB1dF9oYXJkMQotIGxuIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyCi0gbWtkaXIgaW5wdXRfZGlyCi1AQCAtOTUsMTAgKzkyLDExIEBAIGRyd3hyLXhyLXggaW5wdXRfZGlyCi0gIiBcCi0gIiIgIiIKLSBTS0lQPQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0gCi0rbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCi0gb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfTFNfU09SVEZJTEVTCi0gdGVzdGluZyAidGFyIGhhcmRsaW5rcyBtb2RlIiAnXAotLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCi0gPmlucHV0X2hhcmQxCi0gY2htb2QgNzQxIGlucHV0X2hhcmQxCi0gbG4gaW5wdXRfaGFyZDEgaW5wdXRfaGFyZDIKLUBAIC0xMjgsMTAgKzEyNiwxMSBAQCBPazogMAotICIgXAotICIiICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX0xTX1NPUlRGSUxFUwotIHRlc3RpbmcgInRhciBzeW1saW5rcyBtb2RlIiAnXAotLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCi0gPmlucHV0X2ZpbGUKLSBjaG1vZCA3NDEgaW5wdXRfZmlsZQotIGxuIC1zIGlucHV0X2ZpbGUgaW5wdXRfc29mdAotQEAgLTE1OSwxMCArMTU4LDExIEBAIGxyd3hyd3hyd3ggaW5wdXRfZmlsZQotICIgXAotICIiICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX1RBUl9MT05HX09QVElPTlMKLSB0ZXN0aW5nICJ0YXIgLS1vdmVyd3JpdGUiICJcCi0tcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKLSBsbiBpbnB1dCBpbnB1dF9oYXJkCi0gdGFyIGNmIHRlc3QudGFyIGlucHV0X2hhcmQKLSBlY2hvIFdST05HID5pbnB1dAotQEAgLTE3NCwxMiArMTc0LDEzIEBAIE9rCi0gIiBcCi0gIk9rXG4iICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotIHRlc3QgeCIkU0tJUF9LTk9XTl9CVUdTIiA9IHgiIiAmJiB7Ci0gIyBOZWVkcyB0byBiZSBydW4gdW5kZXIgbm9uLXJvb3QgZm9yIG1lYW5pbmdmdWwgdGVzdAotIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURQotIHRlc3RpbmcgInRhciB3cml0aW5nIGludG8gcmVhZC1vbmx5IGRpciIgJ1wKLS1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAotIG1rZGlyIGlucHV0X2RpcgotID5pbnB1dF9kaXIvaW5wdXRfZmlsZQotIGNobW9kIDU1MCBpbnB1dF9kaXIKLUBAIC0yMDEsNyArMjAyLDkgQEAgZHIteHIteC0tLSBpbnB1dF9kaXIKLSAiIiAiIgotIFNLSVA9Ci0gfQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0gCi0rbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCi0gIyBIYWQgYSBidWcgd2hlcmUgb24gZXh0cmFjdCBhdXRvZGV0ZWN0IGZpcnN0ICJzd2l0Y2hlZCBvZmYiIC16Ci0gIyBhbmQgdGhlbiBmYWlsZWQgdG8gcmVjb2duaXplIC50Z3ogZXh0ZW5zaW9uCi0gb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfU0VBTUxFU1NfR1ogR1VOWklQCi1AQCAtMjE3LDcgKzIyMCw5IEBAIE9rCi0gIiBcCi0gIiIgIiIKLSBTS0lQPQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0gCi0rbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCi0gIyBEbyB3ZSBkZXRlY3QgWFotY29tcHJlc3NlZCBkYXRhIChldmVuIHcvbyAudGFyLnh6IG9yIHR4eiBleHRlbnNpb24pPwotICMgKHRoZSB1dWVuY29kZWQgaGVsbG9fd29ybGQudHh6IGNvbnRhaW5zIG9uZSBlbXB0eSBmaWxlIG5hbWVkICJoZWxsb193b3JsZCIpCi0gb3B0aW9uYWwgVVVERUNPREUgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVCBGRUFUVVJFX1NFQU1MRVNTX1haCi1AQCAtMjM2LDcgKzI0MSw5IEBAIEFBQUVXVm89Ci0gPT09PQotICIKLSBTS0lQPQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0gCi0rbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCi0gIyBPbiBleHRyYWN0LCBldmVyeXRoaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgbGFzdCAiLi4iIGNvbXBvbmVudCBpcyBzdHJpcHBlZAotIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURQotIHRlc3RpbmcgInRhciBzdHJpcHMgLy4uLyBvbiBleHRyYWN0IiAiXAotQEAgLTI1NSw3ICsyNjIsOSBAQCBPawotICIgXAotICIiICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotICMgYXR0YWNrLnRhci5iejIgaGFzIHN5bWxpbmsgcG9pbnRpbmcgdG8gYSBzeXN0ZW0gZmlsZQotICMgZm9sbG93ZWQgYnkgYSByZWd1bGFyIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCi0gIyBjb250YWluaW5nICJyb290OjowOjA6Oi9yb290Oi9iaW4vc2giOgotQEAgLTI3MCw2ICsyNzksNyBAQCBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfQloyCi0gdGVzdGluZyAidGFyIGRvZXMgbm90IGV4dHJhY3QgaW50byBzeW1saW5rcyIgIlwKLSA+Pi90bXAvcGFzc3dkICYmIHV1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4ZiBpbnB1dCAyPiYxICYmIHJtIHBhc3N3ZDsgY2F0IC90bXAvcGFzc3dkOyBlY2hvIFwkPwotICIgIlwKLSt0YXI6IHNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICcvdG1wL3Bhc3N3ZCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAotIDAKLSAiIFwKLSAiIiAiXAotQEAgLTI4MSwxMiArMjkxLDE1IEBAIGw0L1Y4TERvZTkweWlXSmhPSnZJeXBnRWZ4ZHlSVGhRa0JWbi9iST0KLSA9PT09Ci0gIgotIFNLSVA9Ci0rY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKLSsKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSAjIEFuZCBzYW1lIHdpdGggLWsKLSBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfQloyCi0gdGVzdGluZyAidGFyIC1rIGRvZXMgbm90IGV4dHJhY3QgaW50byBzeW1saW5rcyIgIlwKLSA+Pi90bXAvcGFzc3dkICYmIHV1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4ZiBpbnB1dCAtayAyPiYxICYmIHJtIHBhc3N3ZDsgY2F0IC90bXAvcGFzc3dkOyBlY2hvIFwkPwotICIgIlwKLS10YXI6IGNhbid0IG9wZW4gJ3Bhc3N3ZCc6IEZpbGUgZXhpc3RzCi0rdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcC9wYXNzd2QnIGluIGFyY2hpdmUsIHNldCBFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xIHRvIGV4dHJhY3QKLSAwCi0gIiBcCi0gIiIgIlwKLUBAIC0yOTgsNyArMzExLDkgQEAgbDQvVjhMRG9lOTB5aVdKaE9Kdkl5cGdFZnhkeVJUaFFrQlZuL2JJPQotID09PT0KLSAiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotIG9wdGlvbmFsIFVOSUNPREVfU1VQUE9SVCBGRUFUVVJFX1RBUl9HTlVfRVhURU5TSU9OUyBGRUFUVVJFX1NFQU1MRVNTX0JaMiBGRUFUVVJFX1RBUl9BVVRPREVURUNUCi0gdGVzdGluZyAiUGF4LWVuY29kZWQgVVRGOCBuYW1lcyBhbmQgc3ltbGlua3MiICdcCi0gdGFyIHh2ZiAuLi90YXIudXRmOC50YXIuYnoyIDI+JjE7IGVjaG8gJD8KLUBAIC0zMDksMTcgKzMyNCw0NSBAQCBybSAtcmYgZXRjIHVzcgotICcgIlwKLSBldGMvc3NsL2NlcnRzLzNiMjcxNmU1LjAKLSBldGMvc3NsL2NlcnRzL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLnBlbQotK3Rhcjogc2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJy91c3Ivc2hhcmUvY2EtY2VydGlmaWNhdGVzL21vemlsbGEvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEuY3J0JyBpbiBhcmNoaXZlLCBzZXQgRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MSB0byBleHRyYWN0Ci0gZXRjL3NzbC9jZXJ0cy9mODBjYzdmNi4wCi0gdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcy9tb3ppbGxhL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLmNydAotIDAKLSBldGMvc3NsL2NlcnRzLzNiMjcxNmU1LjAgLT4gRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCi0tZXRjL3NzbC9jZXJ0cy9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5wZW0gLT4gL3Vzci9zaGFyZS9jYS1jZXJ0aWZpY2F0ZXMvbW96aWxsYS9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5jcnQKLSBldGMvc3NsL2NlcnRzL2Y4MGNjN2Y2LjAgLT4gRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCi0gIiBcCi0gIiIgIiIKLSBTS0lQPQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0gCi0tCi0tY2QgLi4gJiYgcm0gLXJmIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotK29wdGlvbmFsIFVVREVDT0RFIEZFQVRVUkVfU0VBTUxFU1NfQloyIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QKLSt0ZXN0aW5nICJTeW1saW5rIGF0dGFjazogY3JlYXRlIHN5bWxpbmsgYW5kIHRoZW4gd3JpdGUgdGhyb3VnaCBpdCIgJ1wKLStleGVjIDI+JjEKLSt1dWRlY29kZSAtbyBpbnB1dCAmJiB0YXIgeHZmIGlucHV0OyBlY2hvICQ/Ci0rbHMgL3RtcC9iYl90ZXN0X2V2aWxmaWxlCi0rbHMgYmJfdGVzdF9ldmlsZmlsZQotK2xzIHN5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQotKycgIlwKLSthbnl0aGluZy50eHQKLStzeW1saW5rCi0rdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAotK3N5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQotKzAKLStsczogL3RtcC9iYl90ZXN0X2V2aWxmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0rbHM6IGJiX3Rlc3RfZXZpbGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLStzeW1saW5rL2JiX3Rlc3RfZXZpbGZpbGUKLSsiIFwKLSsiIiAiXAotK2JlZ2luLWJhc2U2NCA2NDQgdGFyX3N5bWxpbmtfYXR0YWNrLnRhci5iejIKLStRbHBvT1RGQldTWlRXWmdzN2JRQUFMVC9oTW1RQUZCQUFmK0FFTUFHSlBQdjMyQUFBSUFJTUFDNXRobFIKLStvbUFqQW1DTUFEUVQxQnFORTBBRXdBQWpBRXdFbFRLZW85TlRSNmg2Z2Flb0EwRFFOTFZkd1paNWlOVGsKLStBUXdDQVY2UzAwUUZKWWhybGZGa1ZDRURFR3RnTlZxWXJJMHVLM2dnbnQzMGdxazRlMVRUUW01UUlBS2EKLStTSnF6UkdTRkxNbU9sb0hTQWN2TGlGeHhSaVF0UVpGK3FQeGJvMTczWkRJU09Bb05vUE40UFFQaEJoS1MKLStuOGZZYUtsaW9DVHpMMm9YWWN6eVVVSVA0dTVJcHdvU0V3V2R0b0E9Ci0rPT09PQotKyIKLStTS0lQPQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0gCi0gZXhpdCAkRkFJTENPVU5UCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODczLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTAyN2M5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODczLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotYnVzeWJveC0xLjI3LjI6IEZpeCBDVkUtMjAxNy0xNTg3MwotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVncy5idXN5Ym94Lm5ldC9zaG93X2J1Zy5jZ2k/aWQ9MTA0MzEKLQotYnVuemlwMjogZml4IHJ1bkNudCBvdmVyZmxvdwotCi1UaGUgZ2V0X25leHRfYmxvY2sgZnVuY3Rpb24gaW4gYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYwotaW4gQnVzeUJveCAxLjI3LjIgaGFzIGFuIEludGVnZXIgT3ZlcmZsb3cgdGhhdCBtYXkgbGVhZCB0byBhIHdyaXRlIAotYWNjZXNzIHZpb2xhdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTA0MDJjYjMyZGYwMTVkOTM3MjU3OGUzZGIyN2RiNDdiMzNkNWM3YjBdCi1DVkU6IENWRS0yMDE3LTE1ODczCi1idWc6IDEwNDMxCi1TaWduZWQtb2ZmLWJ5OiBSYWRvdmFuIFNjYXNueSA8cmFkb3Zhbi5zY2FzbnlAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYwotaW5kZXggN2NkMThmNS4uYmVjODllZCAxMDA2NDQKLS0tLSBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMKLUBAIC0xNTYsMTUgKzE1NiwxNSBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0X2JpdHMoYnVuemlwX2RhdGEgKmJkLCBpbnQgYml0c193YW50ZWQpCi0gc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCi0gewotIAlzdHJ1Y3QgZ3JvdXBfZGF0YSAqaHVmR3JvdXA7Ci0tCWludCBkYnVmQ291bnQsIGRidWZTaXplLCBncm91cENvdW50LCAqYmFzZSwgKmxpbWl0LCBzZWxlY3RvciwKLS0JCWksIGosIHJ1blBvcywgc3ltQ291bnQsIHN5bVRvdGFsLCBuU2VsZWN0b3JzLCBieXRlQ291bnRbMjU2XTsKLS0JaW50IHJ1bkNudCA9IHJ1bkNudDsgLyogZm9yIGNvbXBpbGVyICovCi0rCWludCBncm91cENvdW50LCAqYmFzZSwgKmxpbWl0LCBzZWxlY3RvciwKLSsJCWksIGosIHN5bUNvdW50LCBzeW1Ub3RhbCwgblNlbGVjdG9ycywgYnl0ZUNvdW50WzI1Nl07Ci0gCXVpbnQ4X3QgdWMsIHN5bVRvQnl0ZVsyNTZdLCBtdGZTeW1ib2xbMjU2XSwgKnNlbGVjdG9yczsKLSAJdWludDMyX3QgKmRidWY7Ci0gCXVuc2lnbmVkIG9yaWdQdHIsIHQ7Ci0rCXVuc2lnbmVkIGRidWZDb3VudCwgcnVuUG9zOwotKwl1bnNpZ25lZCBydW5DbnQgPSBydW5DbnQ7IC8qIGZvciBjb21waWxlciAqLwotIAotIAlkYnVmID0gYmQtPmRidWY7Ci0tCWRidWZTaXplID0gYmQtPmRidWZTaXplOwotIAlzZWxlY3RvcnMgPSBiZC0+c2VsZWN0b3JzOwotIAotIC8qIEluIGJib3gsIHdlIGFyZSBvayB3aXRoIGFib3J0aW5nIHRocm91Z2ggc2V0am1wIHdoaWNoIGlzIHNldCB1cCBpbiBzdGFydF9idW56aXAgKi8KLUBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCi0gCSAgIGl0IGRpZG4ndCBhY3R1YWxseSB3b3JrLiAqLwotIAlpZiAoZ2V0X2JpdHMoYmQsIDEpKSByZXR1cm4gUkVUVkFMX09CU09MRVRFX0lOUFVUOwotIAlvcmlnUHRyID0gZ2V0X2JpdHMoYmQsIDI0KTsKLS0JaWYgKChpbnQpb3JpZ1B0ciA+IGRidWZTaXplKSByZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7Ci0rCWlmIChvcmlnUHRyID4gYmQtPmRidWZTaXplKSByZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7Ci0gCi0gCS8qIG1hcHBpbmcgdGFibGU6IGlmIHNvbWUgYnl0ZSB2YWx1ZXMgYXJlIG5ldmVyIHVzZWQgKGVuY29kaW5nIHRoaW5ncwotIAkgICBsaWtlIGFzY2lpIHRleHQpLCB0aGUgY29tcHJlc3Npb24gY29kZSByZW1vdmVzIHRoZSBnYXBzIHRvIGhhdmUgZmV3ZXIKLUBAIC00MzUsNyArNDM1LDE0IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQotIAkJCSAgIHN5bWJvbHMsIGJ1dCBhIHJ1biBvZiBsZW5ndGggMCBkb2Vzbid0IG1lYW4gYW55dGhpbmcgaW4gdGhpcwotIAkJCSAgIGNvbnRleHQpLiAgVGh1cyBzcGFjZSBpcyBzYXZlZC4gKi8KLSAJCQlydW5DbnQgKz0gKHJ1blBvcyA8PCBuZXh0U3ltKTsgLyogK3J1blBvcyBpZiBSVU5BOyArMipydW5Qb3MgaWYgUlVOQiAqLwotLQkJCWlmIChydW5Qb3MgPCBkYnVmU2l6ZSkgcnVuUG9zIDw8PSAxOwotKy8vVGhlIDMyLWJpdCBvdmVyZmxvdyBvZiBydW5DbnQgd2Fzbid0IHlldCBzZWVuLCBidXQgcHJvYmFibHkgY2FuIGhhcHBlbi4KLSsvL1RoaXMgd291bGQgYmUgdGhlIGZpeCAoY2F0Y2hlcyB0b28gbGFyZ2UgY291bnQgd2F5IGJlZm9yZSBpdCBjYW4gb3ZlcmZsb3cpOgotKy8vCQkJaWYgKHJ1bkNudCA+IGJkLT5kYnVmU2l6ZSkgewotKy8vCQkJCWRiZygicnVuQ250OiV1ID4gZGJ1ZlNpemU6JXUgUkVUVkFMX0RBVEFfRVJST1IiLAotKy8vCQkJCQkJcnVuQ250LCBiZC0+ZGJ1ZlNpemUpOwotKy8vCQkJCXJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKLSsvLwkJCX0KLSsJCQlpZiAocnVuUG9zIDwgYmQtPmRidWZTaXplKSBydW5Qb3MgPDw9IDE7Ci0gCQkJZ290byBlbmRfb2ZfaHVmZm1hbl9sb29wOwotIAkJfQotIAotQEAgLTQ0NSwxNCArNDUyLDE1IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQotIAkJICAgbGl0ZXJhbCB1c2VkIGlzIHRoZSBvbmUgYXQgdGhlIGhlYWQgb2YgdGhlIG10ZlN5bWJvbCBhcnJheS4pICovCi0gCQlpZiAocnVuUG9zICE9IDApIHsKLSAJCQl1aW50OF90IHRtcF9ieXRlOwotLQkJCWlmIChkYnVmQ291bnQgKyBydW5DbnQgPiBkYnVmU2l6ZSkgewotLQkJCQlkYmcoImRidWZDb3VudDolZCtydW5DbnQ6JWQgJWQgPiBkYnVmU2l6ZTolZCBSRVRWQUxfREFUQV9FUlJPUiIsCi0tCQkJCQkJZGJ1ZkNvdW50LCBydW5DbnQsIGRidWZDb3VudCArIHJ1bkNudCwgZGJ1ZlNpemUpOwotKwkJCWlmIChkYnVmQ291bnQgKyBydW5DbnQgPiBiZC0+ZGJ1ZlNpemUpIHsKLSsJCQkJZGJnKCJkYnVmQ291bnQ6JXUrcnVuQ250OiV1ICV1ID4gZGJ1ZlNpemU6JXUgUkVUVkFMX0RBVEFfRVJST1IiLAotKwkJCQkJCWRidWZDb3VudCwgcnVuQ250LCBkYnVmQ291bnQgKyBydW5DbnQsIGJkLT5kYnVmU2l6ZSk7Ci0gCQkJCXJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKLSAJCQl9Ci0gCQkJdG1wX2J5dGUgPSBzeW1Ub0J5dGVbbXRmU3ltYm9sWzBdXTsKLSAJCQlieXRlQ291bnRbdG1wX2J5dGVdICs9IHJ1bkNudDsKLS0JCQl3aGlsZSAoLS1ydW5DbnQgPj0gMCkgZGJ1ZltkYnVmQ291bnQrK10gPSAodWludDMyX3QpdG1wX2J5dGU7Ci0rCQkJd2hpbGUgKChpbnQpLS1ydW5DbnQgPj0gMCkKLSsJCQkJZGJ1ZltkYnVmQ291bnQrK10gPSAodWludDMyX3QpdG1wX2J5dGU7Ci0gCQkJcnVuUG9zID0gMDsKLSAJCX0KLSAKLUBAIC00NjYsNyArNDc0LDcgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCi0gCQkgICBmaXJzdCBzeW1ib2wgaW4gdGhlIG10ZiBhcnJheSwgcG9zaXRpb24gMCwgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQKLSAJCSAgIGFzIHBhcnQgb2YgYSBydW4gYWJvdmUuICBUaGVyZWZvcmUgMSB1bnVzZWQgbXRmIHBvc2l0aW9uIG1pbnVzCi0gCQkgICAyIG5vbi1saXRlcmFsIG5leHRTeW0gdmFsdWVzIGVxdWFscyAtMS4pICovCi0tCQlpZiAoZGJ1ZkNvdW50ID49IGRidWZTaXplKSByZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7Ci0rCQlpZiAoZGJ1ZkNvdW50ID49IGJkLT5kYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOwotIAkJaSA9IG5leHRTeW0gLSAxOwotIAkJdWMgPSBtdGZTeW1ib2xbaV07Ci0gCi0tLSAKLWNnaXQgdjAuMTIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODc0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTctMTU4NzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjRlZDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTctMTU4NzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGU3NWMwMWJiMzI0OWRmMTYyMDFiNDgyYjc5YmIyNGJlYzNiNTgxODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAxNTozNzowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSB1bmx6bWE6IGZpeCBTRUdWLCBjbG9zZXMgMTA0MzYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD05YWM0MmM1MDA1ODZmYTVmMTBhMWY2ZDIyYzNmNzk3ZGYxMWIxZjZiXQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNpbmFuIEtheWEgPG9rYXlhQGtlcm5lbC5vcmc+Ci0tLS0KLSBhcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfdW5sem1hLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfdW5sem1hLmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfdW5sem1hLmMKLWluZGV4IDI5ZWVlMmEuLjQxZTQ5MmYgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfdW5sem1hLmMKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc191bmx6bWEuYwotQEAgLTM1Myw2ICszNTMsMTAgQEAgdW5wYWNrX2x6bWFfc3RyZWFtKHRyYW5zZm9ybWVyX3N0YXRlX3QgKnhzdGF0ZSkKLSAJCQkJCQlwb3MgPSBidWZmZXJfcG9zIC0gcmVwMDsKLSAJCQkJCQlpZiAoKGludDMyX3QpcG9zIDwgMCkgewotIAkJCQkJCQlwb3MgKz0gaGVhZGVyLmRpY3Rfc2l6ZTsKLSsJCQkJCQkJLyogYnVnIDEwNDM2IGhhcyBhbiBleGFtcGxlIGZpbGUgd2hlcmUgdGhpcyB0cmlnZ2VyczogKi8KLSsJCQkJCQkJaWYgKChpbnQzMl90KXBvcyA8IDApCi0rCQkJCQkJCQlnb3RvIGJhZDsKLSsKLSAJCQkJCQkJLyogc2VlIHVuemlwX2JhZF9sem1hXzIuemlwOiAqLwotIAkJCQkJCQlpZiAocG9zID49IGJ1ZmZlcl9zaXplKQotIAkJCQkJCQkJZ290byBiYWQ7Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxOWVlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBjMzc5N2Q0MGExYzU3MzUyMTkyYzYxMDZjYzBmNDM1ZTdkOWMxMWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNyBOb3YgMjAxNyAxODowOToyOSArMDEwMAotU3ViamVjdDogbGluZWVkaXQ6IGRvIG5vdCB0YWItY29tcGxldGUgYW55IHN0cmluZ3Mgd2hpY2ggaGF2ZSBjb250cm9sCi0gY2hhcmFjdGVycwotCi1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKLWFkZF9tYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxICAgICAgNjggICAgICsyNwotCi1DVkU6IENWRS0yMDE3LTE2NTQ0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYmIvbGluZWVkaXQuYyB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJiYi9saW5lZWRpdC5jIGIvbGliYmIvbGluZWVkaXQuYwotaW5kZXggYzBlMzViYi4uNTZlODE0MCAxMDA2NDQKLS0tLSBhL2xpYmJiL2xpbmVlZGl0LmMKLSsrKyBiL2xpYmJiL2xpbmVlZGl0LmMKLUBAIC02NDUsNiArNjQ1LDE4IEBAIHN0YXRpYyB2b2lkIGZyZWVfdGFiX2NvbXBsZXRpb25fZGF0YSh2b2lkKQotIAotIHN0YXRpYyB2b2lkIGFkZF9tYXRjaChjaGFyICptYXRjaGVkKQotIHsKLSsJdW5zaWduZWQgY2hhciAqcCA9ICh1bnNpZ25lZCBjaGFyKiltYXRjaGVkOwotKwl3aGlsZSAoKnApIHsKLSsJCS8qIEVTQyBhdHRhY2sgZml4OiBkcm9wIGFueSBzdHJpbmcgd2l0aCBjb250cm9sIGNoYXJzICovCi0rCQlpZiAoKnAgPCAnICcKLSsJCSB8fCAoIUVOQUJMRV9VTklDT0RFX1NVUFBPUlQgJiYgKnAgPj0gMHg3ZikKLSsJCSB8fCAoRU5BQkxFX1VOSUNPREVfU1VQUE9SVCAmJiAqcCA9PSAweDdmKQotKwkJKSB7Ci0rCQkJZnJlZShtYXRjaGVkKTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0rCQlwKys7Ci0rCX0KLSAJbWF0Y2hlcyA9IHhyZWFsbG9jX3ZlY3RvcihtYXRjaGVzLCA0LCBudW1fbWF0Y2hlcyk7Ci0gCW1hdGNoZXNbbnVtX21hdGNoZXNdID0gbWF0Y2hlZDsKLSAJbnVtX21hdGNoZXMrKzsKLS0tIAotY2dpdCB2MC4xMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1maXgtbHptYS1zZWdmYXVsdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWZpeC1sem1hLXNlZ2ZhdWx0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2ZGZhOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWZpeC1sem1hLXNlZ2ZhdWx0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1idXN5Ym94LTEuMjcuMjogRml4IGx6bWEgc2VnZmF1bHRzCi0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0L3Nob3dfYnVnLmNnaT9pZD0xMDg3MQotCi1saWJhcmNoaXZlOiBjaGVjayBidWZmZXIgaW5kZXggaW4gbHptYV9kZWNvbXByZXNzCi0KLVdpdGggc3BlY2lmaWMgZGVmY29uZmlnIGJ1c3lib3ggZmFpbHMgdG8gY2hlY2sgemlwIGZpbGVoZWFkZXIgbWFnaWMKLShhcmNoaXZhbC91bnppcC5jKSBhbmQgdXNlcyAoYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jKQotZm9yIGRlY29tcHJlc3Npb24gd2hpY2ggbGVhZHMgdG8gc2VnbWVudGF0aW9uIGZhdWx0LiBJdCBwcmV2ZW50cyBhY2Nlc3NpbmcgaW50bwotYnVmZmVyLCB3aGljaCBpcyBzbWFsbGVyIHRoYW4gcG9zIGluZGV4LiBQYXRjaCBpbmNsdWRlcyBtdWx0aXBsZSBzZWdtZW50YXRpb24KLWZhdWx0IGZpeGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YTM2OTg2YmI4MDI4OWMxY2Q4ZDE1YTU1N2U0OTIwN2M5YTQyOTQ2Yl0KLWJ1ZzogMTA0MzYgMTA4NzEKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jCi1pbmRleCBhOTA0MDg3Li4yOWVlZTJhIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfdW5sem1hLmMKLUBAIC0xMSw2ICsxMSwxNCBAQAotICNpbmNsdWRlICJsaWJiYi5oIgotICNpbmNsdWRlICJiYl9hcmNoaXZlLmgiCi0gCi0rCi0rI2lmIDAKLSsjIGRlZmluZSBkYmcoLi4uKSBiYl9lcnJvcl9tc2coX19WQV9BUkdTX18pCi0rI2Vsc2UKLSsjIGRlZmluZSBkYmcoLi4uKSAoKHZvaWQpMCkKLSsjZW5kaWYKLSsKLSsKLSAjaWYgRU5BQkxFX0ZFQVRVUkVfTFpNQV9GQVNUCi0gIyAgZGVmaW5lIHNwZWVkX2lubGluZSBBTFdBWVNfSU5MSU5FCi0gIyAgZGVmaW5lIHNpemVfaW5saW5lCi1AQCAtMjE3LDYgKzIyNSw3IEBAIHVucGFja19sem1hX3N0cmVhbSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gCXJjX3QgKnJjOwotIAlpbnQgaTsKLSAJdWludDhfdCAqYnVmZmVyOwotKwl1aW50MzJfdCBidWZmZXJfc2l6ZTsKLSAJdWludDhfdCBwcmV2aW91c19ieXRlID0gMDsKLSAJc2l6ZV90IGJ1ZmZlcl9wb3MgPSAwLCBnbG9iYWxfcG9zID0gMDsKLSAJaW50IGxlbiA9IDA7Ci1AQCAtMjQ2LDcgKzI1NSw4IEBAIHVucGFja19sem1hX3N0cmVhbSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gCWlmIChoZWFkZXIuZGljdF9zaXplID09IDApCi0gCQloZWFkZXIuZGljdF9zaXplKys7Ci0gCi0tCWJ1ZmZlciA9IHhtYWxsb2MoTUlOKGhlYWRlci5kc3Rfc2l6ZSwgaGVhZGVyLmRpY3Rfc2l6ZSkpOwotKwlidWZmZXJfc2l6ZSA9IE1JTihoZWFkZXIuZHN0X3NpemUsIGhlYWRlci5kaWN0X3NpemUpOwotKwlidWZmZXIgPSB4bWFsbG9jKGJ1ZmZlcl9zaXplKTsKLSAKLSAJewotIAkJaW50IG51bV9wcm9iczsKLUBAIC0zNDEsOCArMzUxLDEyIEBAIHVucGFja19sem1hX3N0cmVhbSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gCQkJCQkJc3RhdGUgPSBzdGF0ZSA8IExaTUFfTlVNX0xJVF9TVEFURVMgPyA5IDogMTE7Ci0gCi0gCQkJCQkJcG9zID0gYnVmZmVyX3BvcyAtIHJlcDA7Ci0tCQkJCQkJaWYgKChpbnQzMl90KXBvcyA8IDApCi0rCQkJCQkJaWYgKChpbnQzMl90KXBvcyA8IDApIHsKLSAJCQkJCQkJcG9zICs9IGhlYWRlci5kaWN0X3NpemU7Ci0rCQkJCQkJCS8qIHNlZSB1bnppcF9iYWRfbHptYV8yLnppcDogKi8KLSsJCQkJCQkJaWYgKHBvcyA+PSBidWZmZXJfc2l6ZSkKLSsJCQkJCQkJCWdvdG8gYmFkOwotKwkJCQkJCX0KLSAJCQkJCQlwcmV2aW91c19ieXRlID0gYnVmZmVyW3Bvc107Ci0gCQkJCQkJZ290byBvbmVfYnl0ZTE7Ci0gI2Vsc2UKLUBAIC00MTcsNiArNDMxLDEwIEBAIHVucGFja19sem1hX3N0cmVhbSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gCQkJCQkJZm9yICg7IG51bV9iaXRzMiAhPSBMWk1BX05VTV9BTElHTl9CSVRTOyBudW1fYml0czItLSkKLSAJCQkJCQkJcmVwMCA9IChyZXAwIDw8IDEpIHwgcmNfZGlyZWN0X2JpdChyYyk7Ci0gCQkJCQkJcmVwMCA8PD0gTFpNQV9OVU1fQUxJR05fQklUUzsKLSsJCQkJCQlpZiAoKGludDMyX3QpcmVwMCA8IDApIHsKLSsJCQkJCQkJZGJnKCIlZCByZXAwOiVkIiwgX19MSU5FX18sIHJlcDApOwotKwkJCQkJCQlnb3RvIGJhZDsKLSsJCQkJCQl9Ci0gCQkJCQkJcHJvYjMgPSBwICsgTFpNQV9BTElHTjsKLSAJCQkJCX0KLSAJCQkJCWkyID0gMTsKLUBAIC00NTAsOCArNDY4LDEyIEBAIHVucGFja19sem1hX3N0cmVhbSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gIElGX05PVF9GRUFUVVJFX0xaTUFfRkFTVChzdHJpbmc6KQotIAkJCWRvIHsKLSAJCQkJdWludDMyX3QgcG9zID0gYnVmZmVyX3BvcyAtIHJlcDA7Ci0tCQkJCWlmICgoaW50MzJfdClwb3MgPCAwKQotKwkJCQlpZiAoKGludDMyX3QpcG9zIDwgMCkgewotIAkJCQkJcG9zICs9IGhlYWRlci5kaWN0X3NpemU7Ci0rCQkJCQkvKiBtb3JlIHN0cmluZ2VudCB0ZXN0IChzZWUgdW56aXBfYmFkX2x6bWFfMS56aXApOiAqLwotKwkJCQkJaWYgKHBvcyA+PSBidWZmZXJfc2l6ZSkKLSsJCQkJCQlnb3RvIGJhZDsKLSsJCQkJfQotIAkJCQlwcmV2aW91c19ieXRlID0gYnVmZmVyW3Bvc107Ci0gIElGX05PVF9GRUFUVVJFX0xaTUFfRkFTVChvbmVfYnl0ZTI6KQotIAkJCQlidWZmZXJbYnVmZmVyX3BvcysrXSA9IHByZXZpb3VzX2J5dGU7Ci1AQCAtNDc4LDYgKzUwMCwxMiBAQCB1bnBhY2tfbHptYV9zdHJlYW0odHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAkJSUZfREVTS1RPUCh0b3RhbF93cml0dGVuICs9IGJ1ZmZlcl9wb3M7KQotIAkJaWYgKHRyYW5zZm9ybWVyX3dyaXRlKHhzdGF0ZSwgYnVmZmVyLCBidWZmZXJfcG9zKSAhPSAoc3NpemVfdClidWZmZXJfcG9zKSB7Ci0gIGJhZDoKLSsJCQkvKiBPbmUgb2Ygb3VyIHVzZXJzLCBiYnVucGFjaygpLCBleHBlY3RzIF91c18gdG8gZW1pdAotKwkJCSAqIHRoZSBlcnJvciBtZXNzYWdlIChzaW5jZSBpdCdzIHRoZSBiZXN0IHBsYWNlIHRvIGdpdmUKLSsJCQkgKiBwb3RlbnRpYWxseSBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uKS4KLSsJCQkgKiBEbyBub3QgZmFpbCBzaWxlbnRseS4KLSsJCQkgKi8KLSsJCQliYl9lcnJvcl9tc2coImNvcnJ1cHRlZCBkYXRhIik7Ci0gCQkJdG90YWxfd3JpdHRlbiA9IC0xOyAvKiBmYWlsdXJlICovCi0gCQl9Ci0gCQlyY19mcmVlKHJjKTsKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2gKaW5kZXggNTgyYTI1OC4uNzZkYWFmMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2gKQEAgLTMxLDExICszMSwxMSBAQAogIG5ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKLUluZGV4OiBidXN5Ym94LTEuMjcuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKK0luZGV4OiBidXN5Ym94LTEuMjkuMS9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBidXN5Ym94LTEuMjcuMi5vcmlnL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYwotKysrIGJ1c3lib3gtMS4yNy4yL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYwotQEAgLTQ5LDYgKzQ5LDggQEAgc3RydWN0IHRwYWNrZXRfYXV4ZGF0YSB7CistLS0gYnVzeWJveC0xLjI5LjEub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKKysrKyBidXN5Ym94LTEuMjkuMS9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKK0BAIC00OCw2ICs0OCw4IEBACiAgfTsKICAjZW5kaWYKICAKQEAgLTQ0LDcgKzQ0LDcgQEAKICAKICAvKiAic3RydWN0IGNsaWVudF9jb25maWdfdCBjbGllbnRfY29uZmlnIiBpcyBpbiBiYl9jb21tb25fYnVmc2l6MSAqLwogIAotQEAgLTEwNCw4ICsxMDYsOSBAQCBlbnVtIHsKK0BAIC0xMDMsOCArMTA1LDkgQEAKICAJT1BUX3ggPSAxIDw8IDE4LAogIAlPUFRfZiA9IDEgPDwgMTksCiAgCU9QVF9CID0gMSA8PCAyMCwKQEAgLTU1LDcgKzU1LDcgQEAKICAJVVNFX0ZPUl9NTVUoICAgICAgICAgICAgIE9QVEJJVF9iLCkKICAJSUZfRkVBVFVSRV9VREhDUENfQVJQSU5HKE9QVEJJVF9hLCkKICAJSUZfRkVBVFVSRV9VREhDUF9QT1JUKCAgIE9QVEJJVF9QLCkKLUBAIC0xMTEwLDcgKzExMTMsOCBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtX3JlbmV3KHZvaWQpCitAQCAtMTExNiw3ICsxMTE5LDggQEAKICAJCXN0YXRlID0gUkVORVdfUkVRVUVTVEVEOwogIAkJYnJlYWs7CiAgCWNhc2UgUkVORVdfUkVRVUVTVEVEOiAvKiBpbXBhdGllbnQgYXJlIHdlPyBmaW5lLCBzcXVhcmUgMSAqLwpAQCAtNjUsNyArNjUsNyBAQAogIAljYXNlIFJFUVVFU1RJTkc6CiAgCWNhc2UgUkVMRUFTRUQ6CiAgCQljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX1JBVyk7Ci1AQCAtMTE0Niw3ICsxMTUwLDggQEAgc3RhdGljIHZvaWQgcGVyZm9ybV9yZWxlYXNlKHVpbnQzMl90IHNlcnZlcl9hZGRyLCB1aW50MzJfdCByZXF1ZXN0ZWRfaXApCitAQCAtMTE1Miw3ICsxMTU2LDggQEAKICAgKiBVc2VycyByZXF1ZXN0ZWQgdG8gYmUgbm90aWZpZWQgaW4gYWxsIGNhc2VzLCBldmVuIGlmIG5vdCBpbiBvbmUKICAgKiBvZiB0aGUgc3RhdGVzIGFib3ZlLgogICAqLwpAQCAtNzUsMTYgKzc1LDE2IEBACiAgCiAgCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fTk9ORSk7CiAgCXN0YXRlID0gUkVMRUFTRUQ7Ci1AQCAtMTI5OCw3ICsxMzAzLDcgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCS8qIE8seDogbGlzdDsgLVQsLXQsLUEgdGFrZSBudW1lcmljIHBhcmFtICovCi0gCUlGX1VESENQX1ZFUkJPU0Uob3B0X2NvbXBsZW1lbnRhcnkgPSAidnYiOykKLSAJSUZfTE9OR19PUFRTKGFwcGxldF9sb25nX29wdGlvbnMgPSB1ZGhjcGNfbG9uZ29wdHM7KQotLQlvcHQgPSBnZXRvcHQzMihhcmd2LCAiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOit0OitTQTorTzoqb3g6KmZCIgotKwlvcHQgPSBnZXRvcHQzMihhcmd2LCAiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOit0OitTQTorTzoqb3g6KmZCRCIKK0BAIC0xMjY1LDcgKzEyNzAsNyBAQAorIAkvKiBQYXJzZSBjb21tYW5kIGxpbmUgKi8KKyAJb3B0ID0gZ2V0b3B0MzJsb25nKGFyZ3YsICJeIgorIAkJLyogTyx4OiBsaXN0OyAtVCwtdCwtQSB0YWtlIG51bWVyaWMgcGFyYW0gKi8KKy0JCSJDVjpIOmg6RjppOm5wOnFScjpzOlQ6K3Q6K1NBOitPOipveDoqZkIiCisrCQkiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOit0OitTQTorTzoqb3g6KmZCRCIKICAJCVVTRV9GT1JfTU1VKCJiIikKICAJCUlGX0ZFQVRVUkVfVURIQ1BDX0FSUElORygiYTo6IikKICAJCUlGX0ZFQVRVUkVfVURIQ1BfUE9SVCgiUDoiKQotQEAgLTE0MDksNiArMTQxNCwxMCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKK0BAIC0xMzc2LDYgKzEzODEsMTAgQEAKICAJCWxvZ21vZGUgfD0gTE9HTU9ERV9TWVNMT0c7CiAgCX0KICAKQEAgLTk0LDggKzk0LDggQEAKICsKICAJLyogTWFrZSBzdXJlIGZkIDAsMSwyIGFyZSBvcGVuICovCiAgCWJiX3Nhbml0aXplX3N0ZGlvKCk7Ci0gCS8qIEVxdWl2YWxlbnQgb2YgZG9pbmcgYSBmZmx1c2ggYWZ0ZXIgZXZlcnkgXG4gKi8KLUBAIC0xNDIzLDcgKzE0MzIsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKKyAJLyogQ3JlYXRlIHBpZGZpbGUgKi8KK0BAIC0xMzg4LDcgKzEzOTcsOCBAQAogIAlzcmFuZChtb25vdG9uaWNfdXMoKSk7CiAgCiAgCXN0YXRlID0gSU5JVF9TRUxFQ1RJTkc7CkBAIC0xMDUsNyArMTA1LDcgQEAKICAJY2hhbmdlX2xpc3Rlbl9tb2RlKExJU1RFTl9SQVcpOwogIAlwYWNrZXRfbnVtID0gMDsKICAJdGltZW91dCA9IDA7Ci1AQCAtMTU3Nyw3ICsxNTg3LDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCitAQCAtMTU1NSw3ICsxNTY1LDggQEAKICAJCQkJfQogIAkJCQkvKiBUaW1lZCBvdXQsIGVudGVyIGluaXQgc3RhdGUgKi8KICAJCQkJYmJfZXJyb3JfbXNnKCJsZWFzZSBsb3N0LCBlbnRlcmluZyBpbml0IHN0YXRlIik7CkBAIC0xMTUsMjMgKzExNSwyOSBAQAogIAkJCQlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwogIAkJCQljbGllbnRfY29uZmlnLmZpcnN0X3NlY3MgPSAwOyAvKiBtYWtlIHNlY3MgZmllbGQgY291bnQgZnJvbSAwICovCiAgCQkJCS8qdGltZW91dCA9IDA7IC0gYWxyZWFkeSBpcyAqLwotQEAgLTE3NzAsNyArMTc4MSw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQorQEAgLTE3NDgsOCArMTc1OSwxMCBAQAorIAkJCQkJCQkiKGdvdCBBUlAgcmVwbHkpLCBkZWNsaW5pbmciKTsKICAJCQkJCQlzZW5kX2RlY2xpbmUoLyp4aWQsKi8gc2VydmVyX2FkZHIsIHBhY2tldC55aWFkZHIpOwogIAotIAkJCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKQorLQkJCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKQogLQkJCQkJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOworKwkJCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKSB7CiArCQkJCQkJCWlmIChhbGxvd19kZWNvbmZpZykKICsJCQkJCQkJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CisrCQkJCQkJfQogIAkJCQkJCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKICAJCQkJCQlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwogIAkJCQkJCWNsaWVudF9jb25maWcuZmlyc3Rfc2VjcyA9IDA7IC8qIG1ha2Ugc2VjcyBmaWVsZCBjb3VudCBmcm9tIDAgKi8KLUBAIC0xODQwLDcgKzE4NTIsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKK0BAIC0xODE4LDggKzE4MzEsMTAgQEAKKyAJCQkJLyogcmV0dXJuIHRvIGluaXQgc3RhdGUgKi8KICAJCQkJYmJfZXJyb3JfbXNnKCJyZWNlaXZlZCAlcyIsICJESENQIE5BSyIpOwogIAkJCQl1ZGhjcF9ydW5fc2NyaXB0KCZwYWNrZXQsICJuYWsiKTsKLSAJCQkJaWYgKHN0YXRlICE9IFJFUVVFU1RJTkcpCistCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKQogLQkJCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKKysJCQkJaWYgKHN0YXRlICE9IFJFUVVFU1RJTkcpIHsKICsJCQkJCWlmIChhbGxvd19kZWNvbmZpZykKICsJCQkJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOworKwkJCQl9CiAgCQkJCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKICAJCQkJc2xlZXAoMyk7IC8qIGF2b2lkIGV4Y2Vzc2l2ZSBuZXR3b3JrIHRyYWZmaWMgKi8KICAJCQkJc3RhdGUgPSBJTklUX1NFTEVDVElORzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwppbmRleCA1OWQ5M2M3Li4zMjIxM2MwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCkBAIC0xLDEyICsxLDEyIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIEJ1c3lib3ggdmVyc2lvbjogMS4yNy4yCi0jIFdlZCBTZXAgMjcgMDg6NTY6MTMgMjAxNworIyBCdXN5Ym94IHZlcnNpb246IDEuMjkuMQorIyBUaHUgSnVsIDE5IDExOjA5OjQ2IDIwMTgKICMKIENPTkZJR19IQVZFX0RPVF9DT05GSUc9eQogCiAjCi0jIEJ1c3lib3ggU2V0dGluZ3MKKyMgU2V0dGluZ3MKICMKICMgQ09ORklHX0RFU0tUT1AgaXMgbm90IHNldAogIyBDT05GSUdfRVhUUkFfQ09NUEFUIGlzIG5vdCBzZXQKQEAgLTc4LDcgKzc4LDcgQEAKICMgQ09ORklHX0VGRU5DRSBpcyBub3Qgc2V0CiAKICMKLSMgQnVzeWJveCBMaWJyYXJ5IFR1bmluZworIyBMaWJyYXJ5IFR1bmluZwogIwogIyBDT05GSUdfRkVBVFVSRV9VU0VfQlNTX1RBSUwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfUlRNSU5NQVg9eQpAQCAtOTAsNiArOTAsNyBAQAogQ09ORklHX1NIQTNfU01BTEw9MQogQ09ORklHX0ZFQVRVUkVfRkFTVF9UT1A9eQogIyBDT05GSUdfRkVBVFVSRV9FVENfTkVUV09SS1MgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9FVENfU0VSVklDRVMgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfRURJVElORz15CiBDT05GSUdfRkVBVFVSRV9FRElUSU5HX01BWF9MRU49MTAyNAogIyBDT05GSUdfRkVBVFVSRV9FRElUSU5HX1ZJIGlzIG5vdCBzZXQKQEAgLTMyMSw2ICszMjIsNyBAQAogQ09ORklHX1RUWT15CiBDT05GSUdfVU5BTUU9eQogQ09ORklHX1VOQU1FX09TTkFNRT0iR05VL0xpbnV4IgorIyBDT05GSUdfQkJfQVJDSCBpcyBub3Qgc2V0CiBDT05GSUdfVU5JUT15CiBDT05GSUdfVU5MSU5LPXkKIENPTkZJR19VU0xFRVA9eQpAQCAtMzkzLDYgKzM5NSwxNCBAQAogQ09ORklHX1dISUNIPXkKIAogIworIyBrbGliYy11dGlscworIworIyBDT05GSUdfTUlOSVBTIGlzIG5vdCBzZXQKKyMgQ09ORklHX05VS0UgaXMgbm90IHNldAorIyBDT05GSUdfUkVTVU1FIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JVTl9JTklUIGlzIG5vdCBzZXQKKworIwogIyBFZGl0b3JzCiAjCiBDT05GSUdfQVdLPXkKQEAgLTQ3MCw3ICs0ODAsNyBAQAogIyBDT05GSUdfRkVBVFVSRV9CT09UQ0hBUlREX0NPTkZJR19GSUxFIGlzIG5vdCBzZXQKICMgQ09ORklHX0hBTFQgaXMgbm90IHNldAogIyBDT05GSUdfUE9XRVJPRkYgaXMgbm90IHNldAotIyBDT05GSUdfUkVCT09UIGlzIG5vdCBzZXQKK0NPTkZJR19SRUJPT1Q9eQogIyBDT05GSUdfRkVBVFVSRV9DQUxMX1RFTElOSVQgaXMgbm90IHNldAogIyBDT05GSUdfVEVMSU5JVF9QQVRIIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOSVQgaXMgbm90IHNldApAQCAtNjc4LDYgKzY4OCwxMCBAQAogQ09ORklHX0ZFQVRVUkVfTU9VTlRfTE9PUF9DUkVBVEU9eQogIyBDT05GSUdfRkVBVFVSRV9NVEFCX1NVUFBPUlQgaXMgbm90IHNldAogIyBDT05GSUdfVk9MVU1FSUQgaXMgbm90IHNldAorCisjCisjIEZpbGVzeXN0ZW0vVm9sdW1lIGlkZW50aWZpY2F0aW9uCisjCiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX0JDQUNIRSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX0JUUkZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfQ1JBTUZTIGlzIG5vdCBzZXQKQEAgLTcyNSw2ICs3MzksNyBAQAogIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fSERJT19EUklWRV9SRVNFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX1RSSVNUQVRFX0hXSUYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fSERJT19HRVRTRVRfRE1BIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hFWEVESVQgaXMgbm90IHNldAogIyBDT05GSUdfSTJDR0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ1NFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNEVU1QIGlzIG5vdCBzZXQKQEAgLTgwNyw2ICs4MjIsNyBAQAogIyBDT05GSUdfUlVOTEVWRUwgaXMgbm90IHNldAogIyBDT05GSUdfUlggaXMgbm90IHNldAogIyBDT05GSUdfU0VUU0lEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFVEZBVFRSIGlzIG5vdCBzZXQKIENPTkZJR19TVFJJTkdTPXkKIENPTkZJR19USU1FPXkKICMgQ09ORklHX1RJTUVPVVQgaXMgbm90IHNldApAQCAtOTEyLDYgKzkyOCw4IEBACiBDT05GSUdfUk9VVEU9eQogIyBDT05GSUdfU0xBVFRBQ0ggaXMgbm90IHNldAogIyBDT05GSUdfU1NMX0NMSUVOVCBpcyBub3Qgc2V0CisjIENPTkZJR19UQyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1RDX0lOR1JFU1MgaXMgbm90IHNldAogIyBDT05GSUdfVENQU1ZEIGlzIG5vdCBzZXQKICMgQ09ORklHX1VEUFNWRCBpcyBub3Qgc2V0CiBDT05GSUdfVEVMTkVUPXkKQEAgLTk0OSwxMyArOTY3LDkgQEAKICMgQ09ORklHX0ZFQVRVUkVfV0dFVF9PUEVOU1NMIGlzIG5vdCBzZXQKICMgQ09ORklHX1dIT0lTIGlzIG5vdCBzZXQKICMgQ09ORklHX1pDSVAgaXMgbm90IHNldAotIyBDT05GSUdfVURIQ1BDNiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDMzY0NiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDNDcwNCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDNDgzMyBpcyBub3Qgc2V0CiBDT05GSUdfVURIQ1BEPXkKLSMgQ09ORklHX0ZFQVRVUkVfVURIQ1BEX1dSSVRFX0xFQVNFU19FQVJMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1VESENQRF9CQVNFX0lQX09OX01BQyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VESENQRF9XUklURV9MRUFTRVNfRUFSTFkgaXMgbm90IHNldAogQ09ORklHX0RIQ1BEX0xFQVNFU19GSUxFPSIvdmFyL2xpYi9taXNjL3VkaGNwZC5sZWFzZXMiCiBDT05GSUdfRFVNUExFQVNFUz15CiAjIENPTkZJR19ESENQUkVMQVkgaXMgbm90IHNldApAQCAtOTYzLDYgKzk3NywxNSBAQAogQ09ORklHX0ZFQVRVUkVfVURIQ1BDX0FSUElORz15CiBDT05GSUdfRkVBVFVSRV9VREhDUENfU0FOSVRJWkVPUFQ9eQogQ09ORklHX1VESENQQ19ERUZBVUxUX1NDUklQVD0iL3Vzci9zaGFyZS91ZGhjcGMvZGVmYXVsdC5zY3JpcHQiCisjIENPTkZJR19VREhDUEM2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkMzNjQ2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM0NzA0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM0ODMzIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM1OTcwIGlzIG5vdCBzZXQKKworIworIyBDb21tb24gb3B0aW9ucyBmb3IgREhDUCBhcHBsZXRzCisjCiAjIENPTkZJR19GRUFUVVJFX1VESENQX1BPUlQgaXMgbm90IHNldAogQ09ORklHX1VESENQX0RFQlVHPTAKICMgQ09ORklHX0ZFQVRVUkVfVURIQ1BfUkZDMzM5NyBpcyBub3Qgc2V0CkBAIC0xMDQ1LDYgKzEwNjgsNyBAQAogIyBDT05GSUdfU1YgaXMgbm90IHNldAogQ09ORklHX1NWX0RFRkFVTFRfU0VSVklDRV9ESVI9IiIKICMgQ09ORklHX1NWQyBpcyBub3Qgc2V0CisjIENPTkZJR19TVk9LIGlzIG5vdCBzZXQKICMgQ09ORklHX1NWTE9HRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DSENPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NIQ09OX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CkBAIC0xMTM0LDYgKzExNTgsMTAgQEAKICMgU3lzdGVtIExvZ2dpbmcgVXRpbGl0aWVzCiAjCiBDT05GSUdfS0xPR0Q9eQorCisjCisjIGtsb2dkIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIHN5c2xvZyB0byBrZXJuZWwgcHJpbnRrIGJ1ZmZlcgorIwogQ09ORklHX0ZFQVRVUkVfS0xPR0RfS0xPR0NUTD15CiBDT05GSUdfTE9HR0VSPXkKICMgQ09ORklHX0xPR1JFQUQgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvaW5pdC5jZmcgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pbml0LmNmZwppbmRleCAzYzFmZGQ0Li5lOTY3MDA2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pbml0LmNmZworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pbml0LmNmZwpAQCAtMSw4ICsxLDggQEAKIENPTkZJR19JTklUPXkKK0NPTkZJR19SVU5MRVZFTD15CiBDT05GSUdfRkVBVFVSRV9VU0VfSU5JVFRBQj15CiBDT05GSUdfSEFMVD15CiBDT05GSUdfUE9XRVJPRkY9eQotQ09ORklHX1JFQk9PVD15CiBDT05GSUdfRkVBVFVSRV9LSUxMX0RFTEFZPTAKIENPTkZJR19URUxJTklUX1BBVEg9IiIKIENPTkZJR19JTklUX1RFUk1JTkFMX1RZUEU9IiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3Vtb3VudC1pZ25vcmUtYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3Vtb3VudC1pZ25vcmUtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZlNzk5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC91bW91bnQtaWdub3JlLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTQyNjEzNDEyODExMjczOGM5N2E2NjUxNzBiMjExNTNlZjA3NjRiN2RdCi0KLUZyb20gOTVlYTEyNzkxYzg2MjNiZjgyNWJjNzExYWM3NzkwMzA2ZTdlMWFkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNoYXduIExhbmRkZW4gPHNsYW5kZGVuQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgOCBKYW4gMjAxOCAxMzozMTo1OCArMDEwMAotU3ViamVjdDogW1BBVENIXSB1bW91bnQ6IGlnbm9yZSAtYwotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotIi1jLCAtLW5vLWNhbm9uaWNhbGl6ZTogRG8gbm90IGNhbm9uaWNhbGl6ZSBwYXRocy4iCi0KLUFzIGJ1c3lib3ggZG9lc24ndCBjYW5vbmljYWxpemUgcGF0aHMgaW4gdGhlIGZpcnN0IHBsYWNlIGl0IGlzIHNhZmUgdG8gaWdub3JlCi10aGlzIG9wdGlvbi4KLQotU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvaXNzdWVzLzc3ODYKLQotU2lnbmVkLW9mZi1ieTogU2hhd24gTGFuZGRlbiA8c2xhbmRkZW5AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHV0aWwtbGludXgvdW1vdW50LmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdXRpbC1saW51eC91bW91bnQuYyBiL3V0aWwtbGludXgvdW1vdW50LmMKLWluZGV4IDBjNTBkYzllZS4uMDQyNWM1Yjc2IDEwMDY0NAotLS0tIGEvdXRpbC1saW51eC91bW91bnQuYwotKysrIGIvdXRpbC1saW51eC91bW91bnQuYwotQEAgLTY4LDggKzY4LDggQEAgc3RhdGljIHN0cnVjdCBtbnRlbnQgKmdldG1udGVudF9yKEZJTEUqIHN0cmVhbSwgc3RydWN0IG1udGVudCogcmVzdWx0LAotIH0KLSAjZW5kaWYKLSAKLS0vKiBpZ25vcmVkOiAtdiAtdCAtaSAqLwotLSNkZWZpbmUgT1BUSU9OX1NUUklORyAgICAgICAgICAgImZsZG5yYSIgInZ0OmkiCi0rLyogaWdub3JlZDogLWMgLXYgLXQgLWkgKi8KLSsjZGVmaW5lIE9QVElPTl9TVFJJTkcgICAgICAgICAgICJmbGRucmEiICJjdnQ6aSIKLSAjZGVmaW5lIE9QVF9GT1JDRSAgICAgICAgICAgICAgICgxIDw8IDApIC8vIFNhbWUgYXMgTU5UX0ZPUkNFCi0gI2RlZmluZSBPUFRfTEFaWSAgICAgICAgICAgICAgICAoMSA8PCAxKSAvLyBTYW1lIGFzIE1OVF9ERVRBQ0gKLSAjZGVmaW5lIE9QVF9GUkVFTE9PUCAgICAgICAgICAgICgxIDw8IDIpCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI3LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI3LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYjI5NzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotcmVxdWlyZSBidXN5Ym94LmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmluZC10b3VjaHNjcmVlbi5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb24gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1odHRwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LnNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW1wbGUuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL2h3Y2xvY2suc2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQuYnVzeWJveCBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAotICAgICAgICAgICBmaWxlOi8vdW1vdW50LmJ1c3lib3ggXAotICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAotICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAotICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0dGFiIFwKLSAgICAgICAgICAgZmlsZTovL3JjUyBcCi0gICAgICAgICAgIGZpbGU6Ly9yY0sgXAotICAgICAgICAgICBmaWxlOi8vcnVubGV2ZWwgXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtbGliYmItcmFjZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxMS01MzI1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE1ODczLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtQ1ZFLTIwMTctMTY1NDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1maXgtbHptYS1zZWdmYXVsdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdW1vdW50LWlnbm9yZS1jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE1ODc0LnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wuY2ZnICIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNDc2MTg2ZjRiYWI4MTc4MWRhYjIzNjliZmQ0MjczNGUiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI5ZDRiZTUxNmI2MWU2NDgwZjE1NmIxMWViNDI1NzdhMTM1MjlmNzVkMzM4Mzg1MGJiNzVjNTBjMjg1ZGU2M2RmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmM2VhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI5LjIuYmIKQEAgLTAsMCArMSw0OCBAQAorcmVxdWlyZSBidXN5Ym94LmluYworCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGwgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmluZC10b3VjaHNjcmVlbi5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb24gXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1odHRwZCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwZCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LnNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9zaW1wbGUuc2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL2h3Y2xvY2suc2ggXAorICAgICAgICAgICBmaWxlOi8vbW91bnQuYnVzeWJveCBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL21kZXYgXAorICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAorICAgICAgICAgICBmaWxlOi8vdW1vdW50LmJ1c3lib3ggXAorICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKKyAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAorICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCisgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCisgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0dGFiIFwKKyAgICAgICAgICAgZmlsZTovL3JjUyBcCisgICAgICAgICAgIGZpbGU6Ly9yY0sgXAorICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtbGliYmItcmFjZS5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjQ2NjE3YWYzN2EzOTU3OTcxMWQ4YjM2ZjE4OWNkZjFlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiNjdkMmZhNmUxNDdhNDU4NzVmZTk3MmRlNjJkOTA3ZWY4NjZmZTc4NGM0OTVjMzYzYmYzNDc1NmM0NDRhNWQ2MSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW5sZXZlbCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW5sZXZlbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY2ZjNiNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVubGV2ZWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIS9iaW4vc2gKLSMgYnVzeWJveCBpbml0IGRvZXMgbm90IGhhdmUgTFNCICggc3lzdmluaXQgKSBsaWtlIGluaXRsZXZlbHMKLSMgc28gbGV0cyBmYWtlIGl0IHRvIDUgd2hpY2ggaXMgd2hhdCB3ZSBkZWZhdWx0IGFueXdheQotIyB0aGlzIGhlbHBzIHdpdGggb3BrZyBwb3N0IGluc3RhbGxzIHdoZXJlIGl0IHRyaWVzIHRvIGludm9rZQotIyB1cGRhdGUtcmMuZCBhZCBwb3N0IGluc3RhbGwgc3RlcC4KLSMgZm9yIHBhY2thZ2UgdXBncmFkZXMKLSMgU2VlIGNvZGUgaW4gdXBkYXRlLXJjLmQgYXJvdW5kIGxpbmUgMTkwIHdoZXJlIGl0IGNhbGxzIHJ1bmxldmVsCi0jIHByb2dyYW0KLSMKLWVjaG8gIjUiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzXzAuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIKaW5kZXggMjg2YzJhNC4uYmE0NGZiZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIKQEAgLTEsOCArMSw5IEBACitTVU1NQVJZID0gIkFsbG93cyB5b3UgdG8gc2V0LXVwIGFuZCBtYW5pcHVsYXRlIHRoZSBMaW51eCBjb25zb2xlIgorREVTQ1JJUFRJT04gPSAiUHJvdmlkZXMgdG9vbHMgdGhhdCBlbmFibGUgdGhlIHNldC11cCBhbmQgbWFuaXB1bGF0aW9uIG9mIHRoZSBsaW51eCBjb25zb2xlIGFuZCBjb25zb2xlLWZvbnQgZmlsZXMuIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcua2JkO21kNT05YjJkOTE1MTFkM2Q4MGQ0ZDIwYWM2ZTZiMDEzN2ZlOSIKLVNVTU1BUlkgPSAiQWxsb3dzIHlvdSB0byBzZXQtdXAgYW5kIG1hbmlwdWxhdGUgdGhlIExpbnV4IGNvbnNvbGUiCi1ERVNDUklQVElPTiA9ICJQcm92aWRlcyB0b29scyB0aGF0IGVuYWJsZSB0aGUgc2V0LXVwIGFuZCBtYW5pcHVsYXRpb24gb2YgdGhlIGxpbnV4IGNvbnNvbGUgYW5kIGNvbnNvbGUtZm9udCBmaWxlcy4iCitERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKIFBSID0gInI4IgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sY3QvY29uc29sZS10b29scy0ke1BWfS50YXIuZ3ogXApAQCAtMjYsOCArMjcsMTIgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xjdC9maWxlcy9jb25zb2xlLXRvb2xzLWRldmVsLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9jb25zb2xlLXRvb2xzLWRldmVsLyg/UDxwdmVyPihcZFxkP1wuKStcZFxkPykvIgogCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKwogQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtRF9VU0VfVEVSTUlPUyAiCiAKK0FTTkVFREVEID0gIiIKKwogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogCW1rZGlyIC1wICR7U30vbTQKIAljcCAke1dPUktESVJ9L2xjbWVzc2FnZS5tNCAke1N9L200LwpAQCAtMzUsOCArNDAsNiBAQAogCWNwICR7V09SS0RJUn0vTWFrZXZhcnMgJHtTfS9wby8KIH0KIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjMwIgogCiBiaW5kaXJfcHJvZ3MgPSAiY2h2dCBkZWFsbG9jdnQgZmdjb25zb2xlIG9wZW52dCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMWE0YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAotCi1sb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Ci13aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCi1wcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KLWNvcmV1dGlscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZ251bGliLm1rIGIvbGliL2dudWxpYi5tawotaW5kZXggZTFkNzRkYi4uYzBlOTJkZCAxMDA2NDQKLS0tLSBhL2xpYi9nbnVsaWIubWsKLSsrKyBiL2xpYi9nbnVsaWIubWsKLUBAIC0xODgyLDcgKzE4ODIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKLSAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCi0gCSAgICBkYXJ3aW5bNTZdKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCi0rCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKLSAJICAgICopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvQ1ZFLTIwMTctMTgwMTgtMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9DVkUtMjAxNy0xODAxOC0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjMxZWJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9DVkUtMjAxNy0xODAxOC0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA3NTk3Y2ZhNDgyZTQyYTAwYTY5ZmI5NTc3ZWU1MjM3NjI5ODBhOWEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBPcmxpdHpreSA8bWljaGFlbEBvcmxpdHpreS5jb20+Ci1EYXRlOiBUaHUsIDI4IERlYyAyMDE3IDE1OjUyOjQyIC0wNTAwCi1TdWJqZWN0OiBkb2M6IGNsYXJpZnkgY2hvd24vY2hncnAgLS1kZXJlZmVyZW5jZSBkZWZhdWx0cwotCi0qIGRvYy9jb3JldXRpbHMudGV4aTogdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAtLWRlcmVmZXJlbmNlCi0gIGZsYWcgb2YgY2hvd24vY2hncnAgc3RhdGVzIHRoYXQgaXQgaXMgdGhlIGRlZmF1bHQgbW9kZSBvZgotICBvcGVyYXRpb24uIERvY3VtZW50IHRoYXQgdGhpcyBpcyBvbmx5IHRoZSBjYXNlIHdoZW4gb3BlcmF0aW5nCi0gIG5vbi1yZWN1cnNpdmVseS4KLQotQ1ZFOiBDVkUtMjAxNy0xODAxOAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBmcm9tIHY4LjMwCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT3JsaXR6a3kgPG1pY2hhZWxAb3JsaXR6a3kuY29tPgotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gZG9jL2NvcmV1dGlscy50ZXhpIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtTmF1cnAgY29yZXV0aWxzLTguMjdfb3JnL2RvYy9jb3JldXRpbHMudGV4aSBjb3JldXRpbHMtOC4yNy9kb2MvY29yZXV0aWxzLnRleGkKLS0tLSBjb3JldXRpbHMtOC4yN19vcmcvZG9jL2NvcmV1dGlscy50ZXhpCTIwMTgtMDctMjIgMjE6MDk6NTAuMTI4NzM2NjkyIC0wNzAwCi0rKysgY29yZXV0aWxzLTguMjcvZG9jL2NvcmV1dGlscy50ZXhpCTIwMTgtMDctMjIgMjE6MTI6NTkuOTcyMjE5NzcwIC0wNzAwCi1AQCAtMTA5NTIsNyArMTA5NTIsNyBAQCBjaG93biAtaCAtUiAtLWZyb209T0xEVVNFUiBORVdVU0VSIC8KLSBAY2luZGV4IHN5bWJvbGljIGxpbmtzLCBjaGFuZ2luZyBvd25lcgotIEBmaW5kZXggbGNob3duCi0gRG8gbm90IGFjdCBvbiBzeW1ib2xpYyBsaW5rcyB0aGVtc2VsdmVzIGJ1dCByYXRoZXIgb24gd2hhdCB0aGV5IHBvaW50IHRvLgotLVRoaXMgaXMgdGhlIGRlZmF1bHQuCi0rVGhpcyBpcyB0aGUgZGVmYXVsdCB3aGVuIG5vdCBvcGVyYXRpbmcgcmVjdXJzaXZlbHkuCi0gCi0gQGl0ZW0gLWgKLSBAaXRlbXggLS1uby1kZXJlZmVyZW5jZQotQEAgLTExMDgyLDcgKzExMDgyLDcgQEAgY2hhbmdlZC4KLSBAY2luZGV4IHN5bWJvbGljIGxpbmtzLCBjaGFuZ2luZyBvd25lcgotIEBmaW5kZXggbGNob3duCi0gRG8gbm90IGFjdCBvbiBzeW1ib2xpYyBsaW5rcyB0aGVtc2VsdmVzIGJ1dCByYXRoZXIgb24gd2hhdCB0aGV5IHBvaW50IHRvLgotLVRoaXMgaXMgdGhlIGRlZmF1bHQuCi0rVGhpcyBpcyB0aGUgZGVmYXVsdCB3aGVuIG5vdCBvcGVyYXRpbmcgcmVjdXJzaXZlbHkuCi0gCi0gQGl0ZW0gLWgKLSBAaXRlbXggLS1uby1kZXJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL0NWRS0yMDE3LTE4MDE4LTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvQ1ZFLTIwMTctMTgwMTgtMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhmNWY1NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvQ1ZFLTIwMTctMTgwMTgtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gYmMyZmQ5Nzk2NDAzZTAzYmI3NTdiMDY0ZDQ0YzIyZmFiOTJlNjg0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgT3JsaXR6a3kgPG1pY2hhZWxAb3JsaXR6a3kuY29tPgotRGF0ZTogVGh1LCA0IEphbiAyMDE4IDExOjM4OjIxIC0wNTAwCi1TdWJqZWN0OiBkb2M6IHdhcm4gYWJvdXQgZm9sbG93aW5nIHN5bWxpbmtzIHJlY3Vyc2l2ZWx5IGluIGNob3duL2NoZ3JwCi0KLUluIGJvdGggY2hvd24gYW5kIGNoZ3JwICh3aGljaCBzaGFyZXMgaXRzIGNvZGUgd2l0aCBjaG93biksIG9wZXJhdGluZwotb24gc3ltbGlua3MgcmVjdXJzaXZlbHkgaGFzIGEgd2luZG93IG9mIHZ1bG5lcmFiaWxpdHkgd2hlcmUgdGhlCi1kZXN0aW5hdGlvbiB1c2VyIG9yIGdyb3VwIGNhbiBjaGFuZ2UgdGhlIHRhcmdldCBvZiB0aGUgb3BlcmF0aW9uLgotV2FybiBhYm91dCBjb21iaW5pbmcgdGhlIC0tZGVyZWZlcmVuY2UsIC0tcmVjdXJzaXZlLCBhbmQgLUwgZmxhZ3MuCi0KLSogZG9jL2NvcmV1dGlscy50ZXhpICh3YXJuT3B0RGVyZWZXaXRoUmVjKTogQWRkIG1hY3JvLgotKG5vZGUgY2hvd24gaW52b2NhdGlvbik6IEFkZCBpdCB0byAtLWRlcmVmZXJlbmNlIGFuZCAtTC4KLShub2RlIGNoZ3JwIGludm9jYXRpb24pOiBMaWtld2lzZS4KLQotU2VlIGFsc286IENWRS0yMDE3LTE4MDE4Ci1DVkU6IENWRS0yMDE3LTE4MDE4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGZyb20gdjguMzAKLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPcmxpdHpreSA8bWljaGFlbEBvcmxpdHpreS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBkb2MvY29yZXV0aWxzLnRleGkgfCAxNyArKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kb2MvY29yZXV0aWxzLnRleGkgYi9kb2MvY29yZXV0aWxzLnRleGkKLWluZGV4IDZiYjlmMDkuLjlmNWY5NWIgMTAwNjQ0Ci0tLS0gYS9kb2MvY29yZXV0aWxzLnRleGkKLSsrKyBiL2RvYy9jb3JldXRpbHMudGV4aQotQEAgLTE0MjgsNiArMTQyOCwxOSBAQCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBpcyBhIHN5bWJvbGljIGxpbmsgdG8gYSBkaXJlY3RvcnksIHRyYXZlcnNlIGl0LgotIEluIGEgcmVjdXJzaXZlIHRyYXZlcnNhbCwgdHJhdmVyc2UgZXZlcnkgc3ltYm9saWMgbGluayB0byBhIGRpcmVjdG9yeQotIHRoYXQgaXMgZW5jb3VudGVyZWQuCi0gQGVuZCBtYWNybwotKwotK0BjIEFwcGVuZCB0aGUgZm9sbG93aW5nIHdhcm5pbmcgdG8gLUwgd2hlcmUgYXBwcm9wcmlhdGUgKGUuZy4gY2hvd24pLgotK0BtYWNybyB3YXJuT3B0RGVyZWZXaXRoUmVjCi0rCi0rQ29tYmluaW5nIHRoaXMgZGVyZWZlcmVuY2luZyBvcHRpb24gd2l0aCB0aGUgQG9wdGlvbnstLXJlY3Vyc2l2ZX0gb3B0aW9uCi0rbWF5IGNyZWF0ZSBhIHNlY3VyaXR5IHJpc2s6Ci0rRHVyaW5nIHRoZSB0cmF2ZXJzYWwgb2YgdGhlIGRpcmVjdG9yeSB0cmVlLCBhbiBhdHRhY2tlciBtYXkgYmUgYWJsZSB0bwotK2ludHJvZHVjZSBhIHN5bWxpbmsgdG8gYW4gYXJiaXRyYXJ5IHRhcmdldDsgd2hlbiB0aGUgdG9vbCByZWFjaGVzIHRoYXQsCi0rdGhlIG9wZXJhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBvbiB0aGUgdGFyZ2V0IG9mIHRoYXQgc3ltbGluaywKLStwb3NzaWJseSBhbGxvd2luZyB0aGUgYXR0YWNrZXIgdG8gZXNjYWxhdGUgcHJpdmlsZWdlcy4KLSsKLStAZW5kIG1hY3JvCi0rCi0gQGNob3B0TAotIAotIEBtYWNybyBjaG9wdFAKLUBAIC0xMDk5NSw2ICsxMTAwOCw3IEBAIGNob3duIC1oIC1SIC0tZnJvbT1PTERVU0VSIE5FV1VTRVIgLwotIEBmaW5kZXggbGNob3duCi0gRG8gbm90IGFjdCBvbiBzeW1ib2xpYyBsaW5rcyB0aGVtc2VsdmVzIGJ1dCByYXRoZXIgb24gd2hhdCB0aGV5IHBvaW50IHRvLgotIFRoaXMgaXMgdGhlIGRlZmF1bHQgd2hlbiBub3Qgb3BlcmF0aW5nIHJlY3Vyc2l2ZWx5LgotK0B3YXJuT3B0RGVyZWZXaXRoUmVjCi0gCi0gQGl0ZW0gLWgKLSBAaXRlbXggLS1uby1kZXJlZmVyZW5jZQotQEAgLTExMDUxLDYgKzExMDY1LDcgQEAgUmVjdXJzaXZlbHkgY2hhbmdlIG93bmVyc2hpcCBvZiBkaXJlY3RvcmllcyBhbmQgdGhlaXIgY29udGVudHMuCi0gQHhyZWZ7VHJhdmVyc2luZyBzeW1saW5rc30uCi0gCi0gQGNob3B0TAotK0B3YXJuT3B0RGVyZWZXaXRoUmVjCi0gQHhyZWZ7VHJhdmVyc2luZyBzeW1saW5rc30uCi0gCi0gQGNob3B0UAotQEAgLTExMTI1LDYgKzExMTQwLDcgQEAgY2hhbmdlZC4KLSBAZmluZGV4IGxjaG93bgotIERvIG5vdCBhY3Qgb24gc3ltYm9saWMgbGlua3MgdGhlbXNlbHZlcyBidXQgcmF0aGVyIG9uIHdoYXQgdGhleSBwb2ludCB0by4KLSBUaGlzIGlzIHRoZSBkZWZhdWx0IHdoZW4gbm90IG9wZXJhdGluZyByZWN1cnNpdmVseS4KLStAd2Fybk9wdERlcmVmV2l0aFJlYwotIAotIEBpdGVtIC1oCi0gQGl0ZW14IC0tbm8tZGVyZWZlcmVuY2UKLUBAIC0xMTE4MCw2ICsxMTE5Niw3IEBAIFJlY3Vyc2l2ZWx5IGNoYW5nZSB0aGUgZ3JvdXAgb3duZXJzaGlwIG9mIGRpcmVjdG9yaWVzIGFuZCB0aGVpciBjb250ZW50cy4KLSBAeHJlZntUcmF2ZXJzaW5nIHN5bWxpbmtzfS4KLSAKLSBAY2hvcHRMCi0rQHdhcm5PcHREZXJlZldpdGhSZWMKLSBAeHJlZntUcmF2ZXJzaW5nIHN5bWxpbmtzfS4KLSAKLSBAY2hvcHRQCi0tLSAKLWNnaXQgdjEuMC00MS1nYzMzMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDU3MmFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IG1hbmlwdWxhdGlvbiB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgR05VIENvcmUgVXRpbGl0aWVzIHByb3ZpZGUgdGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IFwKLW1hbmlwdWxhdGlvbiB1dGlsaXRpZXMuIFRoZXNlIGFyZSB0aGUgY29yZSB1dGlsaXRpZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGV4aXN0IG9uIFwKLWV2ZXJ5IHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jb3JldXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNTttZDU9MWMzZjk0MTFlMTg0MmEwNjJjZTVjZTkyMTBiZWVlMGUiCi1ERVBFTkRTID0gImdtcCBsaWJjYXAiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vY29yZXV0aWxzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdXNyLWxvY2FsLWxpYi1mcm9tLW00LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xODAxOC0xLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE4MDE4LTIucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk2MGNmZTc1YTQyYzk5MDdjNzE0MzlmOGViNDM2MzAzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyZDBmYTFjMzExY2FjZWZhODk4NTNiZGI1M2M2MmY0MTEwY2RmZGEzODIwMzQ2YjU5Y2JkMDk4ZjQwZjk1NWUiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWdtcCIKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2gsaG9zdG5hbWUgLS1saWJleGVjZGlyPSR7bGliZGlyfSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2gsaG9zdG5hbWUiCi0KLSMgYWNsIGFuZCB4YXR0ciBhcmUgbm90IGRlZmF1bHQgZmVhdHVyZXMKLSMKLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCi0iCi0KLSMgVGhlIGxpYi9vZS9wYXRoLnB5IHJlcXVpcmVzIHhhdHRyCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInhhdHRyIgotCi0jIHdpdGgsIHdpdGhvdXQsIGRlcGVuZHMsIHJkZXBlbmRzCi0jCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLVBBQ0tBR0VDT05GSUdbc2luZ2xlLWJpbmFyeV0gPSAiLS1lbmFibGUtc2luZ2xlLWJpbmFyeSwtLWRpc2FibGUtc2luZ2xlLWJpbmFyeSwsIgotCi0jIFsgZGYgbWt0ZW1wIGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCi1iaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKLSAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKLSAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5pY2Ugbmwgbm9odXAgbnByb2Mgb2QgcGFzdGUgcGF0aGNoayBcCi0gICAgICAgICAgICAgICAgcGlua3kgcHIgcHJpbnRlbnYgcHJpbnRmIHB0eCByZWFkbGluayByZWFscGF0aCBydW5jb24gc2VxIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBcCi0gICAgICAgICAgICAgICAgc2hhMzg0c3VtIHNoYTUxMnN1bSBzaHJlZCBzaHVmIHNvcnQgc3BsaXQgc3RkYnVmIHN1bSB0YWMgdGFpbCB0ZWUgdGVzdCB0aW1lb3V0XAotICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKLQotIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCi1iYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGhvc3RuYW1lIGtpbGwgbG4gbHMgbWtkaXIgXAotICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCi0KLXNiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCi0KLSMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKLSMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0Ci0jIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCi0jIGRpcmVjdG9yeS4KLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke0J9L3NyYwotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCi0Jcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKLQkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCi0JIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KLQlyZXR1cm4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JZm9yIGkgaW4gZGYgbWt0ZW1wIGJhc2U2NDsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQlbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JWyAiJHtzYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke3NiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JIyBbIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgYmVjYXVzZSBbLmNvcmV1dGlscyB3aWxsIGNhdXNlIHRoZSBzZWQgc3R1ZmYKLQkjIGluIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdG8gZmFpbCwgdGhlcmVmb3JlIHVzZSBsYnJhY2tldCAtIHRoZSBuYW1lIHVzZWQKLQkjIGZvciB0aGUgYWN0dWFsIHNvdXJjZSBmaWxlLgotCW12ICR7RH0ke2JpbmRpcn0vWyAke0R9JHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotIyBNYWtlIGhvc3RuYW1lJ3MgcHJpb3JpdHkgaGlnaGVyIHRoYW4gYnVzeWJveCBidXQgbG93ZXIgdGhhbiBuZXQtdG9vbHMKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hvc3RuYW1lXSA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImxicmFja2V0ICR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke3NiaW5kaXJfcHJvZ3N9IGJhc2U2NCBta3RlbXAgZGYiCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgotQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCi1BTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCi1BTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLQlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQotCi0JZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA1YmE0YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMwLmJiCkBAIC0wLDAgKzEsMTM5IEBACitTVU1NQVJZID0gIlRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBtYW5pcHVsYXRpb24gdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiVGhlIEdOVSBDb3JlIFV0aWxpdGllcyBwcm92aWRlIHRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBcCittYW5pcHVsYXRpb24gdXRpbGl0aWVzLiBUaGVzZSBhcmUgdGhlIGNvcmUgdXRpbGl0aWVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBleGlzdCBvbiBcCitldmVyeSBzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY29yZXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PWRiZTM1NmE4OGIwOWMyOTIzMmIwODNkMWZmOGFjODJhIgorREVQRU5EUyA9ICJnbXAgbGliY2FwIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NvcmV1dGlscy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2VsaW51eC1mbGFzay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYjA2ZDY4OTQ5NzU4OTcxZmU3NDRkYjY2YjU3MjgxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODMxYjNhODYwOTE0OTZjZGJhNzIwNDExZjk3NDhkZTgxNTA3Nzk4ZjYxMzBhZGVhZWY4NzJkMjA2ZTFiMDU3IgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1nbXAiCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoLGhvc3RuYW1lIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoLGhvc3RuYW1lIgorCisjIGFjbCBhbmQgeGF0dHIgYXJlIG5vdCBkZWZhdWx0IGZlYXR1cmVzCisjCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAorIgorCisjIFRoZSBsaWIvb2UvcGF0aC5weSByZXF1aXJlcyB4YXR0cgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJ4YXR0ciIKKworIyB3aXRoLCB3aXRob3V0LCBkZXBlbmRzLCByZGVwZW5kcworIworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCitQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCitQQUNLQUdFQ09ORklHW3NpbmdsZS1iaW5hcnldID0gIi0tZW5hYmxlLXNpbmdsZS1iaW5hcnksLS1kaXNhYmxlLXNpbmdsZS1iaW5hcnksLCIKKworIyBbIGRmIG1rdGVtcCBuaWNlIHByaW50ZW52IGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKKyAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKKyAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5sIG5vaHVwIG5wcm9jIG9kIHBhc3RlIHBhdGhjaGsgXAorICAgICAgICAgICAgICAgIHBpbmt5IHByIHByaW50ZiBwdHggcmVhZGxpbmsgcmVhbHBhdGggcnVuY29uIHNlcSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gXAorICAgICAgICAgICAgICAgIHNoYTM4NHN1bSBzaGE1MTJzdW0gc2hyZWQgc2h1ZiBzb3J0IHNwbGl0IHN0ZGJ1ZiBzdW0gdGFjIHRhaWwgdGVlIHRlc3QgdGltZW91dCBcCisgICAgICAgICAgICAgICAgdHIgdHJ1bmNhdGUgdHNvcnQgdHR5IHVuZXhwYW5kIHVuaXEgdW5saW5rIHVwdGltZSB1c2VycyB2ZGlyIHdjIHdobyB3aG9hbWkgeWVzIgorCisjIGhvc3RuYW1lIGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2Jhc2VfYmluZGlyX3Byb2dzID0gImNhdCBjaGdycCBjaG1vZCBjaG93biBjcCBkYXRlIGRkIGVjaG8gZmFsc2UgaG9zdG5hbWUga2lsbCBsbiBscyBta2RpciBcCisgICAgICAgICAgICAgICAgICAgICBta25vZCBtdiBwd2Qgcm0gcm1kaXIgc2xlZXAgc3R0eSBzeW5jIHRvdWNoIHRydWUgdW5hbWUgc3RhdCIKKworc2JpbmRpcl9wcm9ncz0gImNocm9vdCIKKworIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQorIyBhYnNvbHV0ZSBzaW5jZSBjb3JldXRpbHMgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKKyMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKKyMgZGlyZWN0b3J5LgorYWNwYXRocyA9ICItSSAuL200IgorCisjIERlYWwgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkZGlyIGZhaWx1cmUgaWYgc3JjIGRvZXNuJ3QgZXhpc3Qgd2hlbiBjcmVhdGluZyB2ZXJzaW9uLmMvdmVyc2lvbi5oCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworCW1rZGlyIC1wICR7Qn0vc3JjCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJIyByZW1vdmUgZ3JvdXBzIHRvIGZpeCBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKKwlybSAtZiAke0R9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dyb3VwcworCSMgVGhlIHJldHVybiBpcyBhIG11c3Qgc2luY2UgbmF0aXZlIGRvZXNuJ3QgbmVlZCB0aGUKKwkjIGRvX2luc3RhbGxfYXBwZW5kKCkgaW4gdGhlIGJlbG93LgorCXJldHVybgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlmb3IgaSBpbiBkZiBta3RlbXAgbmljZSBwcmludGVudiBiYXNlNjQ7IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmluZGlyfS8kaS4ke0JQTn07IGRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorCVsgIiR7c2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtzYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtzYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKKworCSMgWyByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGJlY2F1c2UgWy5jb3JldXRpbHMgd2lsbCBjYXVzZSB0aGUgc2VkIHN0dWZmCisJIyBpbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIHRvIGZhaWwsIHRoZXJlZm9yZSB1c2UgbGJyYWNrZXQgLSB0aGUgbmFtZSB1c2VkCisJIyBmb3IgdGhlIGFjdHVhbCBzb3VyY2UgZmlsZS4KKwltdiAke0R9JHtiaW5kaXJ9L1sgJHtEfSR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0KK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKyMgTWFrZSBob3N0bmFtZSdzIHByaW9yaXR5IGhpZ2hlciB0aGFuIGJ1c3lib3ggYnV0IGxvd2VyIHRoYW4gbmV0LXRvb2xzCitBTFRFUk5BVElWRV9QUklPUklUWVtob3N0bmFtZV0gPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsYnJhY2tldCAke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtzYmluZGlyX3Byb2dzfSBiYXNlNjQgbmljZSBwcmludGVudiBta3RlbXAgZGYiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbmljZS4xIG1rdGVtcC4xIGRmLjEgZ3JvdXBzLjEga2lsbC4xIHVwdGltZS4xIHN0YXQuMSBob3N0bmFtZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgorQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCitBTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCitBTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW25pY2VdID0gIiR7YmFzZV9iaW5kaXJ9L25pY2UiCitBTFRFUk5BVElWRV9UQVJHRVRbbmljZV0gPSAiJHtiaW5kaXJ9L25pY2UuJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW25pY2UuMV0gPSAiJHttYW5kaXJ9L21hbjEvbmljZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHJpbnRlbnZdID0gIiR7YmFzZV9iaW5kaXJ9L3ByaW50ZW52IgorQUxURVJOQVRJVkVfVEFSR0VUW3ByaW50ZW52XSA9ICIke2JpbmRpcn0vcHJpbnRlbnYuJHtCUE59IgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9bIgorQUxURVJOQVRJVkVfVEFSR0VUW2xicmFja2V0XSA9ICIke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59IgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JvdXBzLjFdID0gIiR7bWFuZGlyfS9tYW4xL2dyb3Vwcy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCisKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignc2JpbmRpcicpLCBwcm9nKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVmNzEwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiSGlnaCBsZXZlbCBsYW5ndWFnZSAoR0xpYikgYmluZGluZyBmb3IgRC1CdXMiCi1ERVNDUklQVElPTiA9ICJHTGliIGJpbmRpbmdzIGZvciB0aGUgRC1CdXMgbWVzc2FnZSBidXMgdGhhdCBpbnRlZ3JhdGUgXAotdGhlIEQtQnVzIGxpYnJhcnkgd2l0aCB0aGUgR0xpYiB0aHJlYWQgYWJzdHJhY3Rpb24gYW5kIG1haW4gbG9vcC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNmNWIzYTJmNzA4Mzc1MGQ1MDQzMzMxMTRlNzM4NjU2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy1nbGliLmg7YmVnaW5saW5lPTc7ZW5kbGluZT0yMTttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi1TRUNUSU9OID0gImJhc2UiCi0KLURFUEVORFMgPSAiZXhwYXQgZ2xpYi0yLjAgdmlydHVhbC9saWJpbnRsIGRidXMtZ2xpYi1uYXRpdmUgZGJ1cyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSBkYnVzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1nbGliL2RidXMtZ2xpYi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbm8tZXhhbXBsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1pbnN0YWxsLW1ha2VmaWxlLnBhdGNoIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIGd0ay1kb2MKLQotI2RlZmF1bHQgZGlzYWJsZSByZWdyZXNzaW9uIHRlc3RzLCBzb21lIHVuaXQgdGVzdCBjb2RlIGluIG5vbiB0ZXN0aW5nIGNvZGUKLSNQQUNLQUdFQ09ORklHX3BuLSR7UE59ID0gInRlc3RzIiBlbmFibGUgcmVncmVzc2lvbiB0ZXN0cyBsb2NhbC5jb25mCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLCwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtaW50cm9zcGVjdC14bWw9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1iaW5kaW5nLXRvb2w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2RidXMtYmluZGluZy10b29sIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGgtaW50cm9zcGVjdC14bWw9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tdGVzdHMiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICIke2xpYmV4ZWNkaXJ9L2RidXMtYmFzaC1jb21wbGV0aW9uLWhlbHBlciIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtiaW5kaXJ9L2RidXMtZ2xpYi10b29sIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZGJ1cy1iaW5kaW5nLXRvb2wiCi0KLVJERVBFTkRTXyR7UE59LXRlc3RzICs9ICJkYnVzLXgxMSIKLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7ZGF0YWRpcn0vJHtCUE59L3Rlc3RzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTlhNjllLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgZGJ1cy1nbGliLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTY2YTYxMzcwNTg3MDc1MmNhOTc4NmUwMzU5YWVhOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWYzNDBjN2UyMzUyZTljZGYxMTM4OTNjYTc3Y2E5MDc1ZDlmOGQ1ZTgxNDc2YmYyYmYzNjEwOTkzODNjNjAyYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MzgzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiSGlnaCBsZXZlbCBsYW5ndWFnZSAoR0xpYikgYmluZGluZyBmb3IgRC1CdXMiCitERVNDUklQVElPTiA9ICJHTGliIGJpbmRpbmdzIGZvciB0aGUgRC1CdXMgbWVzc2FnZSBidXMgdGhhdCBpbnRlZ3JhdGUgXAordGhlIEQtQnVzIGxpYnJhcnkgd2l0aCB0aGUgR0xpYiB0aHJlYWQgYWJzdHJhY3Rpb24gYW5kIG1haW4gbG9vcC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgorTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNmNWIzYTJmNzA4Mzc1MGQ1MDQzMzMxMTRlNzM4NjU2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy1nbGliLmg7YmVnaW5saW5lPTc7ZW5kbGluZT0yMTttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCitTRUNUSU9OID0gImJhc2UiCisKK0RFUEVORFMgPSAiZXhwYXQgZ2xpYi0yLjAgdmlydHVhbC9saWJpbnRsIGRidXMtZ2xpYi1uYXRpdmUgZGJ1cyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSBkYnVzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1nbGliL2RidXMtZ2xpYi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbm8tZXhhbXBsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVzdC1pbnN0YWxsLW1ha2VmaWxlLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkN2NlYmYxZDY5NDQ1Y2JkMjhiNDk4MzM5MjE0NTE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2U0NzYwY2Y2NmM2OTE0OGY2YmQ2YzkyZmVhYWJiODgxMmRlZTMwODQ2YjI0Y2QwZjczOTVjNDM2ZDdlODI1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gZ3RrLWRvYworCisjZGVmYXVsdCBkaXNhYmxlIHJlZ3Jlc3Npb24gdGVzdHMsIHNvbWUgdW5pdCB0ZXN0IGNvZGUgaW4gbm9uIHRlc3RpbmcgY29kZQorI1BBQ0tBR0VDT05GSUdfcG4tJHtQTn0gPSAidGVzdHMiIGVuYWJsZSByZWdyZXNzaW9uIHRlc3RzIGxvY2FsLmNvbmYKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywsLCIKKworRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICItLXdpdGgtZGJ1cy1iaW5kaW5nLXRvb2w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2RidXMtYmluZGluZy10b29sIgorCitQQUNLQUdFUyArPSAiJHtQTn0tdGVzdHMiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICIke2xpYmV4ZWNkaXJ9L2RidXMtYmFzaC1jb21wbGV0aW9uLWhlbHBlciIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtiaW5kaXJ9L2RidXMtZ2xpYi10b29sIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZGJ1cy1iaW5kaW5nLXRvb2wiCisKK1JERVBFTkRTXyR7UE59LXRlc3RzICs9ICJkYnVzLXgxMSIKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7ZGF0YWRpcn0vJHtCUE59L3Rlc3RzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWI5Mzk1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEyLjEwLmJiCkBAIC0wLDAgKzEsODMgQEAKK1NVTU1BUlkgPSAiRC1CdXMgdGVzdCBwYWNrYWdlIChmb3IgRC1idXMgZnVuY3Rpb25hbGl0eSB0ZXN0aW5nIG9ubHkpIgorSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJtYWtlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjM2UxMmI0MjA2ZTJhN2RhMzlkN2NjNDI1Njc3OTBlZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YjY5M2QyNDk3NjI1OGMzZjJmYTljYzMzYWQ5Mjg4YzVmYmZhN2ExNjQ4MWRiZDlhOGE0MjlmN2FhOGNkY2Y3IgorCitTPSIke1dPUktESVJ9L2RidXMtJHtQVn0iCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9kYnVzOiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHRlc3QgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0VYVFJBX09FQ09ORl9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy0td2l0aC14JywgJy0td2l0aG91dC14JywgZCl9IgorRVhUUkFfT0VDT05GX1hfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vZHVsYXItdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGxlZC10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2hlY2tzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hc3NlcnRzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS12ZXJib3NlLW1vZGUgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAorICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNQ1RMPSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS1lbmFibGUteDExLWF1dG9sYXVuY2gsLS13aXRob3V0LXggLS1kaXNhYmxlLXgxMS1hdXRvbGF1bmNoLCB2aXJ0dWFsL2xpYngxMSBsaWJzbSIKK1BBQ0tBR0VDT05GSUdbdXNlci1zZXNzaW9uXSA9ICItLWVuYWJsZS11c2VyLXNlc3Npb24gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLWRpc2FibGUtdXNlci1zZXNzaW9uIgorCitkb19pbnN0YWxsKCkgeworICAgIDoKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkgXAorCSAgIHZhcmlhbnQgdWlkLXBlcm1pc3Npb25zIHN5bnRheCBzcGF3biBzZC1hY3RpdmF0aW9uIG5hbWVzIG1vbml0b3IgbWVzc2FnZSBmZHBhc3MgIgorCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vdGVzdC8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKworCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgorCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQorCisJY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKKwljcCAtYSAke0J9L2RidXMvLmxpYnMvKi5zbyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8ubGlicworCisJIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzLi4uCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kYXRhIiBcKCAtbmFtZSAqLnNlcnZpY2UgLW8gLW5hbWUgKi5jb25mIC1vIC1uYW1lICIqLmFhcHJvZmlsZSIgXCkgLXR5cGUgZiAtZXhlYyBcCisJCXNlZCAtaSBcCisJCSAtZSAnczoke0J9OiR7UFRFU1RfUEFUSH06ZycgXAorCQkge30gKworICAgICAgICBzZWQgLWkgLWUgJ3M7QFBURVNUX1BBVEhAOyR7UFRFU1RfUEFUSH07ZycgICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKKworUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmRidXMtMS5zby4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNlMDQ3YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgdGVzdCBwYWNrYWdlIChmb3IgRC1idXMgZnVuY3Rpb25hbGl0eSB0ZXN0aW5nIG9ubHkpIgotSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJtYWtlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMzYxNDU2Y2FkYjk5YWE2NjAxYmVkNWI0ODk2NDI1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNzJiYjUwOTE3NzBiMDQ3YzgxODhiOTI2ZDVlNjAzOGZhNGZlNjc0NTQ4OGIyYWRkOTZiMjNlMmQ5YTgzZDg4IgotCi1TPSIke1dPUktESVJ9L2RidXMtJHtQVn0iCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9kYnVzOiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHRlc3QgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUVYVFJBX09FQ09ORl9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy0td2l0aC14JywgJy0td2l0aG91dC14JywgZCl9IgotRVhUUkFfT0VDT05GX1hfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vZHVsYXItdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGxlZC10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2hlY2tzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1hc3NlcnRzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS12ZXJib3NlLW1vZGUgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNQ1RMPSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS1lbmFibGUteDExLWF1dG9sYXVuY2gsLS13aXRob3V0LXggLS1kaXNhYmxlLXgxMS1hdXRvbGF1bmNoLCB2aXJ0dWFsL2xpYngxMSBsaWJzbSIKLVBBQ0tBR0VDT05GSUdbdXNlci1zZXNzaW9uXSA9ICItLWVuYWJsZS11c2VyLXNlc3Npb24gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLWRpc2FibGUtdXNlci1zZXNzaW9uIgotCi1kb19pbnN0YWxsKCkgewotICAgIDoKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkgXAotCSAgIHZhcmlhbnQgdWlkLXBlcm1pc3Npb25zIHN5bnRheCBzcGF3biBzZC1hY3RpdmF0aW9uIG5hbWVzIG1vbml0b3IgbWVzc2FnZSBmZHBhc3MgIgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vdGVzdC8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKLQotCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCi0JY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0KLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKLQljcCAtYSAke0J9L2RidXMvLmxpYnMvKi5zbyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8ubGlicwotCi0JIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzLi4uCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kYXRhIiBcKCAtbmFtZSAqLnNlcnZpY2UgLW8gLW5hbWUgKi5jb25mIC1vIC1uYW1lICIqLmFhcHJvZmlsZSIgXCkgLXR5cGUgZiAtZXhlYyBcCi0JCXNlZCAtaSBcCi0JCSAtZSAnczoke0J9OiR7UFRFU1RfUEFUSH06ZycgXAotCQkge30gKwotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKLQotUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmRidXMtMS5zby4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CmluZGV4IDhhODk3MGUuLjM1M2JhMWUgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKQEAgLTEyLDcgKzEyLDcgQEAKIAogZXhwb3J0IERCVVNfVEVTVF9IT01FRElSPS4vdGVzdAogZXhwb3J0IFhER19SVU5USU1FX0RJUj0uL3Rlc3QKLWV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9L3Vzci9saWIvZGJ1cy10ZXN0L3B0ZXN0L3Rlc3QvLmxpYnMKK2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9QFBURVNUX1BBVEhAL3Rlc3QvLmxpYnMKIAogZmlsZXM9YGxzIHRlc3QvdGVzdC0qYAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzFmN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xMC5iYgpAQCAtMCwwICsxLDE3NiBAQAorU1VNTUFSWSA9ICJELUJ1cyBtZXNzYWdlIGJ1cyIKK0RFU0NSSVBUSU9OID0gIkQtQnVzIGlzIGEgbWVzc2FnZSBidXMgc3lzdGVtLCBhIHNpbXBsZSB3YXkgZm9yIGFwcGxpY2F0aW9ucyB0byB0YWxrIHRvIG9uZSBhbm90aGVyLiBJbiBhZGRpdGlvbiB0byBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbiwgRC1CdXMgaGVscHMgY29vcmRpbmF0ZSBwcm9jZXNzIGxpZmVjeWNsZTsgaXQgbWFrZXMgaXQgc2ltcGxlIGFuZCByZWxpYWJsZSB0byBjb2RlIGEgXCJzaW5nbGUgaW5zdGFuY2VcIiBhcHBsaWNhdGlvbiBvciBkYWVtb24sIGFuZCB0byBsYXVuY2ggYXBwbGljYXRpb25zIGFuZCBkYWVtb25zIG9uIGRlbWFuZCB3aGVuIHRoZWlyIHNlcnZpY2VzIGFyZSBuZWVkZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgorREVQRU5EUyA9ICJleHBhdCB2aXJ0dWFsL2xpYmludGwgYXV0b2NvbmYtYXJjaGl2ZSIKK1JERVBFTkRTX2RidXNfY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTX2RidXNfY2xhc3MtbmF0aXZlc2RrID0gIiIKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJyR7UE59LXB0ZXN0JywgJycsIGQpfSIKK0FMTE9XX0VNUFRZX2RidXMtcHRlc3QgPSAiMSIKK1JERVBFTkRTX2RidXMtcHRlc3RfY2xhc3MtdGFyZ2V0ID0gImRidXMtdGVzdC1wdGVzdCIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy9kYnVzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90bXBkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGJ1cy0xLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzNlMTJiNDIwNmUyYTdkYTM5ZDdjYzQyNTY3NzkwZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI2OTNkMjQ5NzYyNThjM2YyZmE5Y2MzM2FkOTI4OGM1ZmJmYTdhMTY0ODFkYmQ5YThhNDI5ZjdhYThjZGNmNyIKKworaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB1cGRhdGUtcmMuZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworSU5JVFNDUklQVF9OQU1FID0gImRidXMtMSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAyIDUgMyAyIC4gc3RvcCAyMCAwIDEgNiAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbmV0ZGV2IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cyBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1lc3NhZ2VidXMiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiAke3N5c2NvbmZkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYiCisKK0RFQklBTk5BTUVfJHtQTn0gPSAiZGJ1cy0xIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tbGliIgorCitPTERQS0dOQU1FID0gImRidXMteDExIgorT0xEUEtHTkFNRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCisjIGZvciBjb21wYXRpYmlsaXR5CitSUFJPVklERVNfJHtQTn0gPSAiJHtPTERQS0dOQU1FfSIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtPTERQS0dOQU1FfSIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2RidXMtZGFlbW9uKiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11dWlkZ2VuIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWNsZWFudXAtc29ja2V0cyBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1zZW5kIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLW1vbml0b3IgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbGF1bmNoIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXJ1bi1zZXNzaW9uIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXVwZGF0ZS1hY3RpdmF0aW9uLWVudmlyb25tZW50IFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vZGJ1cyogXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmQgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0veG1sL2RidXMtMSBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3VzZXJzLmQvZGJ1cy5jb25mIFwKKyAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQvZGJ1cy5jb25mIFwKKyIKK0ZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorUlJFQ09NTUVORFNfJHtQTn0tbGliID0gIiR7UE59IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZGJ1cy0xLjAvaW5jbHVkZSAke2xpYmRpcn0vY21ha2UvREJ1czEgJHtiaW5kaXJ9L2RidXMtdGVzdC10b29sIgorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0Jywnc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlJywnJyxkKX0iCitwa2dfcG9zdGluc3RfZGJ1cygpIHsKKwkjIElmIGJvdGggc3lzdGVtZCBhbmQgc3lzdmluaXQgYXJlIGVuYWJsZWQsIG1hc2sgdGhlIGRidXMtMSBpbml0IHNjcmlwdAorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWlmIFsgLW4gIiREIiBdOyB0aGVuCisJCQlPUFRTPSItLXJvb3Q9JEQiCisJCWZpCisJCXN5c3RlbWN0bCAkT1BUUyBtYXNrIGRidXMtMS5zZXJ2aWNlCisJZmkKKworCWlmIFsgLXogIiREIiBdICYmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KKwkJL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisJZmkKK30KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0cyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNQ1RMPSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWRpc2FibGUtc2VsaW51eCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICB1c2VyLXNlc3Npb24gXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgorUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQorCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKKwkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cworCisKKwlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCisJIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0CisJcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKworCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKKworCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKKwkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCisJcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAorCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCisKKwkjIFJlbW92ZSAvdmFyL3J1biB0byBhdm9pZCBRQSBlcnJvcgorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImJ1aWxkLWRlcHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNWI2OWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCi1ERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKLURFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIGF1dG9jb25mLWFyY2hpdmUiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCi1BTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCi1SREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMzNjE0NTZjYWRiOTlhYTY2MDFiZWQ1YjQ4OTY0MjU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3MmJiNTA5MTc3MGIwNDdjODE4OGI5MjZkNWU2MDM4ZmE0ZmU2NzQ1NDg4YjJhZGQ5NmIyM2UyZDlhODNkODgiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKLX0KLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgotCi1ERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKLQotT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKLU9MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotIyBmb3IgY29tcGF0aWJpbGl0eQotUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L3htbC9kYnVzLTEgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN1c2Vycy5kL2RidXMuY29uZiBcCi0gICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kL2RidXMuY29uZiBcCi0iCi1GSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTXyR7UE59LWxpYiA9ICIke1BOfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtsaWJkaXJ9L2NtYWtlL0RCdXMxICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgotcGtnX3Bvc3RpbnN0X2RidXMoKSB7Ci0JIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQkJT1BUUz0iLS1yb290PSREIgotCQlmaQotCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQotCWZpCi0KLQlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCi0JCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotCWZpCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1kaXNhYmxlLXNlbGludXgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCi1QQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCXNlZCAnczpAYmluZGlyQDoke2JpbmRpcn06JyA8ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQgPiR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2gKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RidXMtMQotCWZpCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlmb3IgaSBpbiBkYnVzLnRhcmdldC53YW50cyBzb2NrZXRzLnRhcmdldC53YW50cyBtdWx0aS11c2VyLnRhcmdldC53YW50czsgZG8gXAotCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8kaTsgZG9uZQotCQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9idXMvZGJ1cy5zZXJ2aWNlICR7Qn0vYnVzL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LwotCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbXVsdGktdXNlci50YXJnZXQud2FudHMvZGJ1cy5zZXJ2aWNlCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQllY2hvICJkIG1lc3NhZ2VidXMgbWVzc2FnZWJ1cyAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2RidXMgbm9uZSIgXAotCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9kYnVzCi0KLQotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biBtZXNzYWdlYnVzOm1lc3NhZ2VidXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKLQotCWNob3duIHJvb3Q6bWVzc2FnZWJ1cyAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0JY2htb2QgNDc1NSAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0KLQkjIFJlbW92ZSBSZWQgSGF0IGluaXRzY3JpcHQKLQlybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAotCi0JIyBSZW1vdmUgZW1wdHkgdGVzdGV4ZWMgZGlyZWN0b3J5IGFzIHdlIGRvbid0IGJ1aWxkIHRlc3RzCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vZGJ1cy0xLjAvdGVzdAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBmb3IgZGJ1cy1nbGliLW5hdGl2ZSBpbnRyb3NwZWN0aW9uIGdlbmVyYXRpb24KLQlpbnN0YWxsIC1kICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvCi0JIyBOLkIuIGlzIGJlbG93IGluc3RhbGwgYWN0dWFsbHkgcmVxdWlyZWQ/Ci0JaW5zdGFsbCAtbSAwNjQ0IGJ1cy9zZXNzaW9uLmNvbmYgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9zZXNzaW9uLmNvbmYKLQotCSMgZGJ1cy1nbGliLW5hdGl2ZSBhbmQgZGJ1cy1nbGliIG5lZWQgdGhpcyB4bWwgZmlsZQotCS4vYnVzL2RidXMtZGFlbW9uIC0taW50cm9zcGVjdCA+ICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvZGJ1cy1idXMtaW50cm9zcGVjdC54bWwKLQkKLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKLQkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYwppbmRleCBiNmI0MzZjLi5kOTJhMmYzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYwpAQCAtNywyMSArNywxOSBAQAogTElDRU5TRSA9ICJNSVQgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBQRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE1ZWM0MGNhZmJhMjZmYzQzOTZkMGI1NTBmODI0ZTAxIgogCi1ERVBFTkRTID0gInpsaWIiCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9jcnlwdCIKIFJQUk9WSURFU18ke1BOfSA9ICJzc2ggc3NoZCIKIAogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKIAogU1JDX1VSSSA9ICJodHRwOi8vbWF0dC51Y2MuYXNuLmF1L2Ryb3BiZWFyL3JlbGVhc2VzL2Ryb3BiZWFyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTU1OTkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11cmFuZG9tLXhhdXRoLWNoYW5nZXMtdG8tb3B0aW9ucy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctZHJvcGJlYXItZml4LWZvci14MzItYWJpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAogICAgICAgICAgICBmaWxlOi8vZHJvcGJlYXJrZXkuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kcm9wYmVhckAuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kcm9wYmVhci5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vZHJvcGJlYXIuZGVmYXVsdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSAiCiAKIFBBTV9TUkNfVVJJID0gImZpbGU6Ly8wMDA1LWRyb3BiZWFyLWVuYWJsZS1wYW0ucGF0Y2ggXApAQCAtNTIsNiArNTAsMTAgQEAKIEVYVFJBX09FQ09ORiArPSAiXAogICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IgogCisjIFRoaXMgb3B0aW9uIGFwcGVuZHMgdG8gQ0ZMQUdTIGFuZCBMREZMQUdTIGZyb20gT0UKKyMgVGhpcyBpcyBjYXVzaW5nIFt0ZXh0cmVsXSBRQSB3YXJuaW5nCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1oYXJkZW4iCisKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSBcCiAJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCBcCkBAIC02MSw2ICs2Myw4IEBACiAJCSR7RH0ke3NiaW5kaXJ9IFwKIAkJJHtEfSR7bG9jYWxzdGF0ZWRpcn0KIAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Ryb3BiZWFyLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9kcm9wYmVhcgorCiAJaW5zdGFsbCAtbSAwNzU1IGRyb3BiZWFybXVsdGkgJHtEfSR7c2JpbmRpcn0vCiAJbG4gLXMgJHtzYmluZGlyfS9kcm9wYmVhcm11bHRpICR7RH0ke2JpbmRpcn0vZGJjbGllbnQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAxLXVyYW5kb20teGF1dGgtY2hhbmdlcy10by1vcHRpb25zLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDEtdXJhbmRvbS14YXV0aC1jaGFuZ2VzLXRvLW9wdGlvbnMuaC5wYXRjaAppbmRleCBkYzlkNTc4Li42ODQ2NDFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDEtdXJhbmRvbS14YXV0aC1jaGFuZ2VzLXRvLW9wdGlvbnMuaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDEtdXJhbmRvbS14YXV0aC1jaGFuZ2VzLXRvLW9wdGlvbnMuaC5wYXRjaApAQCAtMiwyMCArMiwyMCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAtLS0KLSBvcHRpb25zLmggfCAyICstCisgZGVmYXVsdF9vcHRpb25zLmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9vcHRpb25zLmggYi9vcHRpb25zLmgKLWluZGV4IDdkMDYzMjIuLjcxYTIxYzIgMTAwNjQ0Ci0tLS0gYS9vcHRpb25zLmgKLSsrKyBiL29wdGlvbnMuaAotQEAgLTI0Nyw3ICsyNDcsNyBAQCBtdWNoIHRyYWZmaWMuICovCitkaWZmIC0tZ2l0IGEvZGVmYXVsdF9vcHRpb25zLmggYi9kZWZhdWx0X29wdGlvbnMuaAoraW5kZXggM2I3NWViOC4uMWZkODA4MiAxMDA2NDQKKy0tLSBhL2RlZmF1bHRfb3B0aW9ucy5oCisrKysgYi9kZWZhdWx0X29wdGlvbnMuaAorQEAgLTI0Myw3ICsyNDMsNyBAQCBIb21lZGlyIGlzIHByZXBlbmRlZCB1bmxlc3MgcGF0aCBiZWdpbnMgd2l0aCAvICovCisgCiAgLyogVGhlIGNvbW1hbmQgdG8gaW52b2tlIGZvciB4YXV0aCB3aGVuIHVzaW5nIFgxMSBmb3J3YXJkaW5nLgogICAqICItcSIgZm9yIHF1aWV0ICovCi0gI2lmbmRlZiBYQVVUSF9DT01NQU5ECiAtI2RlZmluZSBYQVVUSF9DT01NQU5EICIvdXNyL2Jpbi94YXV0aCAtcSIKICsjZGVmaW5lIFhBVVRIX0NPTU1BTkQgInhhdXRoIC1xIgotICNlbmRpZgorIAogIAogIC8qIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBydW5uaW5nIGFuIHNmdHAgc2VydmVyIChzdWNoIGFzIHRoZSBvbmUgaW5jbHVkZWQgd2l0aAogLS0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDMtY29uZmlndXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ2OWE1MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDMtY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA1OGRkMjRhODBjYTBmNDAwZDA3NjFhZmQ5Y2UyYjdmNjg0ZmM5MTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0VyaWM9MjBCPUMzPUE5bmFyZD89IDxlcmljQGV1a3JlYS5jb20+Ci1EYXRlOiBUaHUsIDI1IEFwciAyMDEzIDAwOjI3OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogYWRkIGEgdmFyaWFibGUgdG8gYWxsb3cgb3BlbnB0eSBjaGVjayB0byBiZSBjYWNoZWQKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vbWtqL2Ryb3BiZWFyL3B1bGwvNDggXQotCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTEgKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4OTNiOTA0Li4yNDU0MDhkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNzcsMTUgKzE3NywyMCBAQCBBQ19BUkdfRU5BQkxFKG9wZW5wdHksCi0gCQkJQUNfTVNHX05PVElDRShOb3QgdXNpbmcgb3BlbnB0eSkKLSAJCWVsc2UKLSAJCQlBQ19NU0dfTk9USUNFKFVzaW5nIG9wZW5wdHkgaWYgYXZhaWxhYmxlKQotLQkJCUFDX1NFQVJDSF9MSUJTKG9wZW5wdHksIHV0aWwsIFtBQ19ERUZJTkUoSEFWRV9PUEVOUFRZLCxIYXZlIG9wZW5wdHkoKSBmdW5jdGlvbildKQotKwkJCUFDX1NFQVJDSF9MSUJTKG9wZW5wdHksIHV0aWwsIFtkcm9wYmVhcl9jdl9mdW5jX2hhdmVfb3BlbnB0eT15ZXNdKQotIAkJZmkKLSAJXSwKLSAJWwotIAkJQUNfTVNHX05PVElDRShVc2luZyBvcGVucHR5IGlmIGF2YWlsYWJsZSkKLS0JCUFDX1NFQVJDSF9MSUJTKG9wZW5wdHksIHV0aWwsIFtBQ19ERUZJTkUoSEFWRV9PUEVOUFRZKV0pCi0rCQlBQ19TRUFSQ0hfTElCUyhvcGVucHR5LCB1dGlsLCBbZHJvcGJlYXJfY3ZfZnVuY19oYXZlX29wZW5wdHk9eWVzXSkKLSAJXQotICkKLS0JCQotKwotK2lmIHRlc3QgIngkZHJvcGJlYXJfY3ZfZnVuY19oYXZlX29wZW5wdHkiID0gInh5ZXMiOyB0aGVuCi0rCUFDX0RFRklORShIQVZFX09QRU5QVFksLEhhdmUgb3BlbnB0eSgpIGZ1bmN0aW9uKQotKwlub19wdGNfY2hlY2s9eWVzCi0rCW5vX3B0bXhfY2hlY2s9eWVzCi0rZmkKLSAKLSBBQ19BUkdfRU5BQkxFKHN5c2xvZywKLSAJWyAgLS1kaXNhYmxlLXN5c2xvZyAgICAgICAgRG9uJ3QgaW5jbHVkZSBzeXNsb2cgc3VwcG9ydF0sCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNC1maXgtMmtiLWtleXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGM2YTI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNC1maXgtMmtiLWtleXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0ggNC82XSBmaXggMmtiIGtleXMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0ga2V4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBkcm9wYmVhci0yMDE3Ljc1L2tleC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZHJvcGJlYXItMjAxNy43NS5vcmlnL2tleC5oCi0rKysgZHJvcGJlYXItMjAxNy43NS9rZXguaAotQEAgLTEwNiw2ICsxMDYsNiBAQCBpbnQgY3VydmUyNTUxOV9kb25uYSh1bnNpZ25lZCBjaGFyICpvdXQsCi0gI2VuZGlmCi0gCi0gCi0tI2RlZmluZSBNQVhfS0VYSEFTSEJVRiAyMDAwCi0rI2RlZmluZSBNQVhfS0VYSEFTSEJVRiAzMDAwCi0gCi0gI2VuZGlmIC8qIERST1BCRUFSX0tFWF9IXyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA1LWRyb3BiZWFyLWVuYWJsZS1wYW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDUtZHJvcGJlYXItZW5hYmxlLXBhbS5wYXRjaAppbmRleCA1MzljYjEyLi44NTc2ODE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDUtZHJvcGJlYXItZW5hYmxlLXBhbS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDUtZHJvcGJlYXItZW5hYmxlLXBhbS5wYXRjaApAQCAtMyw3ICszLDcgQEAKIERhdGU6IFdlZCwgMiBEZWMgMjAxNSAxMTozNjowMiArMDIwMAogU3ViamVjdDogRW5hYmxlIHBhbQogCi1XZSBuZWVkIG1vZGlmeSBmaWxlIG9wdGlvbi5oIGJlc2lkZXMgZW5hYmxpbmcgcGFtIGluCitXZSBuZWVkIG1vZGlmeSBmaWxlIGRlZmF1bHRfb3B0aW9ucy5oIGJlc2lkZXMgZW5hYmxpbmcgcGFtIGluCiBjb25maWd1cmUgaWYgd2Ugd2FudCBkcm9wYmVhciB0byBzdXBwb3J0IHBhbS4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC0xMSwyNiArMTEsMzIgQEAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogLS0tCi0gb3B0aW9ucy5oIHwgNCArKy0tCisgZGVmYXVsdF9vcHRpb25zLmggfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvb3B0aW9ucy5oIGIvb3B0aW9ucy5oCi1pbmRleCA5NDI2MWY2Li45MGJmZTJmIDEwMDY0NAotLS0tIGEvb3B0aW9ucy5oCi0rKysgYi9vcHRpb25zLmgKLUBAIC0yMDgsMTAgKzIwOCwxMCBAQCBJZiB5b3UgdGVzdCBpdCBwbGVhc2UgY29udGFjdCB0aGUgRHJvcGJlYXIgYXV0aG9yICovCitkaWZmIC0tZ2l0IGEvZGVmYXVsdF9vcHRpb25zLmggYi9kZWZhdWx0X29wdGlvbnMuaAoraW5kZXggM2I3NWViOC4uODYxN2NkMCAxMDA2NDQKKy0tLSBhL2RlZmF1bHRfb3B0aW9ucy5oCisrKysgYi9kZWZhdWx0X29wdGlvbnMuaAorQEAgLTE3OSw3ICsxNzksNyBAQCBncm91cDEgaW4gRHJvcGJlYXIgc2VydmVyIHRvbyAqLwogIAotIC8qIFRoaXMgcmVxdWlyZXMgY3J5cHQoKSAqLwotICNpZmRlZiBIQVZFX0NSWVBUCi0tI2RlZmluZSBFTkFCTEVfU1ZSX1BBU1NXT1JEX0FVVEgKLSsvKiNkZWZpbmUgRU5BQkxFX1NWUl9QQVNTV09SRF9BVVRIKi8KLSAjZW5kaWYKLSAvKiBQQU0gcmVxdWlyZXMgLi9jb25maWd1cmUgLS1lbmFibGUtcGFtICovCi0tLyojZGVmaW5lIEVOQUJMRV9TVlJfUEFNX0FVVEggKi8KLSsjZGVmaW5lIEVOQUJMRV9TVlJfUEFNX0FVVEgKLSAjZGVmaW5lIEVOQUJMRV9TVlJfUFVCS0VZX0FVVEgKKyAvKiBBdXRoZW50aWNhdGlvbiBUeXBlcyAtIGF0IGxlYXN0IG9uZSByZXF1aXJlZC4KKyAgICBSRkMgRHJhZnQgcmVxdWlyZXMgcHVia2V5IGF1dGgsIGFuZCByZWNvbW1lbmRzIHBhc3N3b3JkICovCistI2RlZmluZSBEUk9QQkVBUl9TVlJfUEFTU1dPUkRfQVVUSCAxCisrI2RlZmluZSBEUk9QQkVBUl9TVlJfUEFTU1dPUkRfQVVUSCAwCiAgCi0gLyogV2hldGhlciB0byB0YWtlIHB1YmxpYyBrZXkgb3B0aW9ucyBpbiAKKyAvKiBOb3RlOiBQQU0gYXV0aCBpcyBxdWl0ZSBzaW1wbGUgYW5kIG9ubHkgd29ya3MgZm9yIFBBTSBtb2R1bGVzIHdoaWNoIGp1c3QgZG8KKyAgKiBhIHNpbXBsZSAiTG9naW46ICIgIlBhc3N3b3JkOiAiICh5b3UgY2FuIGVkaXQgdGhlIHN0cmluZ3MgaW4gc3ZyLWF1dGhwYW0uYykuCitAQCAtMTg3LDcgKzE4Nyw3IEBAIGdyb3VwMSBpbiBEcm9wYmVhciBzZXJ2ZXIgdG9vICovCisgICogYnV0IHRoZXJlJ3MgYW4gaW50ZXJmYWNlIHZpYSBhIFBBTSBtb2R1bGUuIEl0IHdvbid0IHdvcmsgZm9yIG1vcmUgY29tcGxleAorICAqIFBBTSBjaGFsbGVuZ2UvcmVzcG9uc2UuCisgICogWW91IGNhbid0IGVuYWJsZSBib3RoIFBBU1NXT1JEIGFuZCBQQU0uICovCistI2RlZmluZSBEUk9QQkVBUl9TVlJfUEFNX0FVVEggMAorKyNkZWZpbmUgRFJPUEJFQVJfU1ZSX1BBTV9BVVRIIDEKKyAKKyAvKiB+Ly5zc2gvYXV0aG9yaXplZF9rZXlzIGF1dGhlbnRpY2F0aW9uICovCisgI2RlZmluZSBEUk9QQkVBUl9TVlJfUFVCS0VZX0FVVEggMQorIAogLS0gCiAyLjEuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDYtZHJvcGJlYXItY29uZmlndXJhdGlvbi1maWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA2LWRyb3BiZWFyLWNvbmZpZ3VyYXRpb24tZmlsZS5wYXRjaAppbmRleCBmYTRjOGQwLi5kZWVkNzhmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDYtZHJvcGJlYXItY29uZmlndXJhdGlvbi1maWxlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNi1kcm9wYmVhci1jb25maWd1cmF0aW9uLWZpbGUucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1TdWJqZWN0OiBbUEFUQ0ggNi82XSBkcm9wYmVhciBjb25maWd1cmF0aW9uIGZpbGUKK0Zyb20gZTNhNWRiMWI2ZDNmNjM4MmExNWIyMjY2NDU4YzI2YzY0NWExMGYxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDYgU2VwIDIwMTggMTU6NTQ6MDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZHJvcGJlYXIgY29uZmlndXJhdGlvbiBmaWxlCiAKIGRyb3BiZWFyOiBDaGFuZ2UgdGhlIHBhdGggKCIvZXRjL3BhbS5kL3NzaGQiIGFzIGRlZmF1bHQpIHRvIGZpbmQgYSBwYW0gY29uZmlndXJhdGlvbiBmaWxlIFwKIHRvICIvZXRjL3BhbS5kL2Ryb3BiZWFyIGZvciBkcm9wYmVhciB3aGVuIGVuYWJsaW5nIHBhbSBzdXBwb3J0aW5nIgpAQCAtNywxMiArMTAsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBlbmVhLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgogLS0tCi1kaWZmIC1OYXVyIGRyb3BiZWFyLTIwMTMuNjAtb3JpZy9zdnItYXV0aHBhbS5jIGRyb3BiZWFyLTIwMTMuNjAvc3ZyLWF1dGhwYW0uYwotLS0tIGRyb3BiZWFyLTIwMTMuNjAtb3JpZy9zdnItYXV0aHBhbS5jCTIwMTMtMTAtMTYgMTY6MzQ6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZHJvcGJlYXItMjAxMy42MC9zdnItYXV0aHBhbS5jCTIwMTMtMTAtMjEgMTc6MDQ6MDQuOTY5NDE2MDU1ICswMjAwCi1AQCAtMjExLDcgKzIxMSw3IEBACi0gCXVzZXJEYXRhLnBhc3N3ZCA9IHBhc3N3b3JkOworIHN2ci1hdXRocGFtLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zdnItYXV0aHBhbS5jIGIvc3ZyLWF1dGhwYW0uYworaW5kZXggZDIwMWJjOS4uMTY1ZWM1YyAxMDA2NDQKKy0tLSBhL3N2ci1hdXRocGFtLmMKKysrKyBiL3N2ci1hdXRocGFtLmMKK0BAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBzdnJfYXV0aF9wYW0oaW50IHZhbGlkX3VzZXIpIHsKKyAJfQogIAogIAkvKiBJbml0IHBhbSAqLwogLQlpZiAoKHJjID0gcGFtX3N0YXJ0KCJzc2hkIiwgTlVMTCwgJnBhbUNvbnYsICZwYW1IYW5kbGVwKSkgIT0gUEFNX1NVQ0NFU1MpIHsKQEAgLTIwLDMgKzI4LDYgQEAKICAJCWRyb3BiZWFyX2xvZyhMT0dfV0FSTklORywgInBhbV9zdGFydCgpIGZhaWxlZCwgcmM9JWQsICVzIiwgCiAgCQkJCXJjLCBwYW1fc3RyZXJyb3IocGFtSGFuZGxlcCwgcmMpKTsKICAJCWdvdG8gY2xlYW51cDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA3LWRyb3BiZWFyLWZpeC1mb3IteDMyLWFiaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNy1kcm9wYmVhci1maXgtZm9yLXgzMi1hYmkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwYjMwMmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA3LWRyb3BiZWFyLWZpeC1mb3IteDMyLWFiaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlIGRyb3BiZWFya2V5IHV0aWxpdHkgYnVpbHQgaW4geDMyIGFiaSBmb3JtYXQsIHdoZW4gZ2VuZXJhdGluZyBzc2gKLWtleXMsIHdhcyBnZXR0aW5nIGxvc3QgaW4gdGhlIGluZmluaXRlIGxvb3AuCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhlIGlzc3VlIGJ5IGZpeGluZyB0eXBlcyBvZiB2YXJpYWJsZXMgYW5kCi1wYXJhbWV0ZXJzIG9mIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSBjb2RlLCB3aGljaCB3ZXJlIGdldHRpbmcKLXVuZGVzaXJlZCBzaXplLCB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHgzMiBhYmkgdG9vbGNoYWluLgotCi0yMDEzLzA1LzIzCi1SZWNlaXZlZCB0aGlzIGZpeCBmcm9tIEggSiBMdS4KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotIyBEYXRlIDEzNjkzNDQwNzkgMjUyMDAKLSMgTm9kZSBJRCBhMTBhMWM0NmI4NTdjYzhhMzkyM2MzYmI2ZDE1MDRhYTI1YjYwNTJmCi0jIFBhcmVudCAgZTc2NjE0MTQ1YWVhNjdmNjZlNGE0MjU3Njg1Yzc3MWVmYmEyMWFhMQotVHlwZGVmIG1wX2RpZ2l0IHRvIHVuc2lnbmVkIGxvbmcgbG9uZyBmb3IgTVBfNjRCSVQKLQotV2hlbiBHQ0MgaXMgdXNlZCB3aXRoIE1QXzY0QklULCB3ZSBzaG91bGQgdHlwZWRlZiBtcF9kaWdpdCB0byB1bnNpZ25lZAotbG9uZyBsb25nIGluc3RlYWQgb2YgdW5zaWduZWQgbG9uZyBzaW5jZSBmb3IgeDMyLCB1bnNpZ25lZCBsb25nIGlzCi0zMi1iaXQgYW5kIHVuc2lnbmVkIGxvbmcgbG9uZyBpcyA2NC1iaXQgYW5kIGl0IGlzIHNhZmUgdG8gdXNlIHVuc2lnbmVkCi1sb25nIGxvbmcgZm9yIDY0LWJpdCBpbnRlZ2VyIHdpdGggR0NDLgotCi1kaWZmIC1yIGU3NjYxNDE0NWFlYSAtciBhMTBhMWM0NmI4NTcgbGlidG9tbWF0aC90b21tYXRoLmgKLS0tLSBhL2xpYnRvbW1hdGgvdG9tbWF0aC5oCVRodSBBcHIgMTggMjI6NTc6NDcgMjAxMyArMDgwMAotKysrIGIvbGlidG9tbWF0aC90b21tYXRoLmgJVGh1IE1heSAyMyAxNDoyMToxOSAyMDEzIC0wNzAwCi1AQCAtNzMsNyArNzMsNyBAQAotICAgIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyAgIGxvbmc2NDsKLSAjZW5kaWYKLQotLSAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgIG1wX2RpZ2l0OwotKyAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIG1wX2RpZ2l0OwotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgIG1wX3dvcmQgX19hdHRyaWJ1dGVfXyAoKG1vZGUoVEkpKSk7Ci0KLSAgICAjZGVmaW5lIERJR0lUX0JJVCAgICAgICAgICA2MAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotIyBEYXRlIDEzNjkzNDQyNDEgMjUyMDAKLSMgTm9kZSBJRCBjNzU1NWE0Y2I3ZGVkM2E4ODQwOWJhODVmNDAyN2JhYTdhZjVmNTM2Ci0jIFBhcmVudCAgYTEwYTFjNDZiODU3Y2M4YTM5MjNjM2JiNmQxNTA0YWEyNWI2MDUyZgotQ2FzdCB0byBtcF9kaWdpdCB3aGVuIHVwZGF0aW5nICpyaG8KLQotVGhlcmUgaXMKLQotaW50Ci1tcF9tb250Z29tZXJ5X3NldHVwIChtcF9pbnQgKiBuLCBtcF9kaWdpdCAqIHJobykKLQotV2Ugc2hvdWxkIGNhc3QgdG8gbXBfZGlnaXQgaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nIHdoZW4gdXBkYXRpbmcKLSpyaG8gc2luY2UgbXBfZGlnaXQgbWF5IGJlIHVuc2lnbmVkIGxvbmcgbG9uZyBhbmQgdW5zaWduZWQgbG9uZyBsb25nCi1tYXkgYmUgZGlmZmVyZW50IGZyb20gdW5zaWduZWQgbG9uZywgbGlrZSBpbiB4MzIuCi0KLWRpZmYgLXIgYTEwYTFjNDZiODU3IC1yIGM3NTU1YTRjYjdkZSBsaWJ0b21tYXRoL2JuX21wX21vbnRnb21lcnlfc2V0dXAuYwotLS0tIGEvbGlidG9tbWF0aC9ibl9tcF9tb250Z29tZXJ5X3NldHVwLmMJVGh1IE1heSAyMyAxNDoyMToxOSAyMDEzIC0wNzAwCi0rKysgYi9saWJ0b21tYXRoL2JuX21wX21vbnRnb21lcnlfc2V0dXAuYwlUaHUgTWF5IDIzIDE0OjI0OjAxIDIwMTMgLTA3MDAKLUBAIC00OCw3ICs0OCw3IEBACi0gI2VuZGlmCi0KLSAgIC8qIHJobyA9IC0xL20gbW9kIGIgKi8KLS0gICpyaG8gPSAodW5zaWduZWQgbG9uZykoKChtcF93b3JkKTEgPDwgKChtcF93b3JkKSBESUdJVF9CSVQpKSAtIHgpICYgTVBfTUFTSzsKLSsgICpyaG8gPSAobXBfZGlnaXQpKCgobXBfd29yZCkxIDw8ICgobXBfd29yZCkgRElHSVRfQklUKSkgLSB4KSAmIE1QX01BU0s7Ci0KLSAgIHJldHVybiBNUF9PS0FZOwotIH0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLSMgRGF0ZSAxMzY5MzQ0NTQxIDI1MjAwCi0jIE5vZGUgSUQgN2M2NTZlNzA3MWE2NDEyNjg4YjJmMzBhNTI5YTlhZmFjNmM3YmY1YQotIyBQYXJlbnQgIGM3NTU1YTRjYjdkZWQzYTg4NDA5YmE4NWY0MDI3YmFhN2FmNWY1MzYKLURlZmluZSBMVENfRkFTVF9UWVBFIHRvIHVuc2lnbmVkIGxvbmcgbG9uZyBmb3IgX194ODZfNjRfXwotCi1XZSBzaG91bGQgZGVmaW5lIExUQ19GQVNUX1RZUEUgdG8gdW5zaWduZWQgbG9uZyBsb25nIGluc3RlYWQgb2YgdW5zaWduZWQKLWxvbmcgaWYgX194ODZfNjRfXyB0byBzdXBwb3J0IHgzMiB3aGVyZSB1bnNpZ25lZCBsb25nIGxvbmcgaXMgNjQtYml0Ci1hbmQgdW5zaWduZWQgbG9uZyBpcyAzMi1iaXQuCi0KLWRpZmYgLXIgYzc1NTVhNGNiN2RlIC1yIDdjNjU2ZTcwNzFhNiBsaWJ0b21jcnlwdC9zcmMvaGVhZGVycy90b21jcnlwdF9jZmcuaAotLS0tIGEvbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvdG9tY3J5cHRfY2ZnLmgJVGh1IE1heSAyMyAxNDoyNDowMSAyMDEzIC0wNzAwCi0rKysgYi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy90b21jcnlwdF9jZmcuaAlUaHUgTWF5IDIzIDE0OjI5OjAxIDIwMTMgLTA3MDAKLUBAIC03NCw3ICs3NCw3IEBACi0gICAgI2RlZmluZSBFTkRJQU5fTElUVExFCi0gICAgI2RlZmluZSBFTkRJQU5fNjRCSVRXT1JECi0gICAgI2RlZmluZSBMVENfRkFTVAotLSAgICNkZWZpbmUgTFRDX0ZBU1RfVFlQRSAgICB1bnNpZ25lZCBsb25nCi0rICAgI2RlZmluZSBMVENfRkFTVF9UWVBFICAgIHVuc2lnbmVkIGxvbmcgbG9uZwotICNlbmRpZgotCi0gLyogZGV0ZWN0IFBQQzMyICovCi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci0jIERhdGUgMTM2OTM0NDczMCAyNTIwMAotIyBOb2RlIElEIGE3ZDQ2OTAxNThmYWU0ZWRlMmM0ZTViNTYyMzNlODM3MzBiZjM4ZWUKLSMgUGFyZW50ICA3YzY1NmU3MDcxYTY0MTI2ODhiMmYzMGE1MjlhOWFmYWM2YzdiZjVhCi1Vc2UgdW5zaWduZWQgbG9uZyBsb25nIGFhcyB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBmb3IgeDg2LTY0IEdDQwotCi1XZSBzaG91bGQgdXNlIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnN0ZWFkIG9mIHVuc2lnbmVkIGxvbmcgYXMgdW5zaWduZWQKLTY0LWJpdCBpbnRlZ2VyIGZvciB4ODYtNjQgR0NDIHRvIHN1cHBvcnQgeDMyIHdoZXJlIHVuc2lnbmVkIGxvbmcgaXMKLTMyLWJpdC4KLQotZGlmZiAtciA3YzY1NmU3MDcxYTYgLXIgYTdkNDY5MDE1OGZhIGxpYnRvbWNyeXB0L3NyYy9oZWFkZXJzL3RvbWNyeXB0X21hY3Jvcy5oCi0tLS0gYS9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy90b21jcnlwdF9tYWNyb3MuaAlUaHUgTWF5IDIzIDE0OjI5OjAxIDIwMTMgLTA3MDAKLSsrKyBiL2xpYnRvbWNyeXB0L3NyYy9oZWFkZXJzL3RvbWNyeXB0X21hY3Jvcy5oCVRodSBNYXkgMjMgMTQ6MzI6MTAgMjAxMyAtMDcwMAotQEAgLTM0Myw3ICszNDMsNyBAQAotIC8qIDY0LWJpdCBSb3RhdGVzICovCi0gI2lmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiAhZGVmaW5lZChMVENfTk9fQVNNKQotCi0tc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIFJPTDY0KHVuc2lnbmVkIGxvbmcgd29yZCwgaW50IGkpCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgUk9MNjQodW5zaWduZWQgbG9uZyBsb25nIHdvcmQsIGludCBpKQotIHsKLSAgICBhc20oInJvbHEgJSVjbCwlMCIKLSAgICAgICA6Ij1yIiAod29yZCkKLUBAIC0zNTEsNyArMzUxLDcgQEAKLSAgICByZXR1cm4gd29yZDsKLSB9Ci0KLS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgUk9SNjQodW5zaWduZWQgbG9uZyB3b3JkLCBpbnQgaSkKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBST1I2NCh1bnNpZ25lZCBsb25nIGxvbmcgd29yZCwgaW50IGkpCi0gewotICAgIGFzbSgicm9ycSAlJWNsLCUwIgotICAgICAgIDoiPXIiICh3b3JkKQotQEAgLTM2MSw3ICszNjEsNyBAQAotCi0gI2lmbmRlZiBMVENfTk9fUk9MQwotCi0tc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIFJPTDY0Yyh1bnNpZ25lZCBsb25nIHdvcmQsIGNvbnN0IGludCBpKQotK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIFJPTDY0Yyh1bnNpZ25lZCBsb25nIGxvbmcgd29yZCwgY29uc3QgaW50IGkpCi0gewotICAgIGFzbSgicm9scSAlMiwlMCIKLSAgICAgICA6Ij1yIiAod29yZCkKLUBAIC0zNjksNyArMzY5LDcgQEAKLSAgICByZXR1cm4gd29yZDsKLSB9Ci0KLS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgUk9SNjRjKHVuc2lnbmVkIGxvbmcgd29yZCwgY29uc3QgaW50IGkpCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgUk9SNjRjKHVuc2lnbmVkIGxvbmcgbG9uZyB3b3JkLCBjb25zdCBpbnQgaSkKLSB7Ci0gICAgYXNtKCJyb3JxICUyLCUwIgotICAgICAgIDoiPXIiICh3b3JkKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL0NWRS0yMDE4LTE1NTk5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9DVkUtMjAxOC0xNTU5OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI1NDVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9DVkUtMjAxOC0xNTU5OS5wYXRjaApAQCAtMCwwICsxLDIzNiBAQAorRnJvbSAyNTZlMmFiYjgxNTBmOWZlYTMzY2QwMjY1OTdkYmU3MGYwMzc5Mjk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBKb2huc3RvbiA8bWF0dEB1Y2MuYXNuLmF1PgorRGF0ZTogVGh1LCAyMyBBdWcgMjAxOCAyMzo0MzoxMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBXYWl0IHRvIGZhaWwgaW52YWxpZCB1c2VybmFtZXMKKworV2FpdCB0byBmYWlsIGludmFsaWQgdXNlcm5hbWVzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc2VjdXJlLnVjYy5hc24uYXUvaGcvZHJvcGJlYXIvcmV2LzVkMmQxMDIxY2EwMF0KK0NWRTogQ1ZFLTIwMTgtMTU1OTkKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBhdXRoLmggICAgICAgICAgIHwgIDYgKysrLS0tCisgc3ZyLWF1dGguYyAgICAgICB8IDE5ICsrKysrLS0tLS0tLS0tLS0tLS0KKyBzdnItYXV0aHBhbS5jICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0KKyBzdnItYXV0aHBhc3N3ZC5jIHwgMjcgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgc3ZyLWF1dGhwdWJrZXkuYyB8IDExICsrKysrKysrKystCisgNSBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2F1dGguaCBiL2F1dGguaAoraW5kZXggZGE0OThmNS4uOThmNTQ2OCAxMDA2NDQKKy0tLSBhL2F1dGguaAorKysrIGIvYXV0aC5oCitAQCAtMzcsOSArMzcsOSBAQCB2b2lkIHJlY3ZfbXNnX3VzZXJhdXRoX3JlcXVlc3Qodm9pZCk7Cisgdm9pZCBzZW5kX21zZ191c2VyYXV0aF9mYWlsdXJlKGludCBwYXJ0aWFsLCBpbnQgaW5jcmZhaWwpOworIHZvaWQgc2VuZF9tc2dfdXNlcmF1dGhfc3VjY2Vzcyh2b2lkKTsKKyB2b2lkIHNlbmRfbXNnX3VzZXJhdXRoX2Jhbm5lcihjb25zdCBidWZmZXIgKm1zZyk7Cistdm9pZCBzdnJfYXV0aF9wYXNzd29yZCh2b2lkKTsKKy12b2lkIHN2cl9hdXRoX3B1YmtleSh2b2lkKTsKKy12b2lkIHN2cl9hdXRoX3BhbSh2b2lkKTsKKyt2b2lkIHN2cl9hdXRoX3Bhc3N3b3JkKGludCB2YWxpZF91c2VyKTsKKyt2b2lkIHN2cl9hdXRoX3B1YmtleShpbnQgdmFsaWRfdXNlcik7Cisrdm9pZCBzdnJfYXV0aF9wYW0oaW50IHZhbGlkX3VzZXIpOworIAorICNpZiBEUk9QQkVBUl9TVlJfUFVCS0VZX09QVElPTlNfQlVJTFQKKyBpbnQgc3ZyX3B1YmtleV9hbGxvd3NfYWdlbnRmd2Qodm9pZCk7CitkaWZmIC0tZ2l0IGEvc3ZyLWF1dGguYyBiL3N2ci1hdXRoLmMKK2luZGV4IDY0ZDk3YWEuLjFmMzY0Y2EgMTAwNjQ0CistLS0gYS9zdnItYXV0aC5jCisrKysgYi9zdnItYXV0aC5jCitAQCAtMTQ5LDEwICsxNDksOCBAQCB2b2lkIHJlY3ZfbXNnX3VzZXJhdXRoX3JlcXVlc3QoKSB7CisgCQlpZiAobWV0aG9kbGVuID09IEFVVEhfTUVUSE9EX1BBU1NXT1JEX0xFTiAmJgorIAkJCQlzdHJuY21wKG1ldGhvZG5hbWUsIEFVVEhfTUVUSE9EX1BBU1NXT1JELAorIAkJCQkJQVVUSF9NRVRIT0RfUEFTU1dPUkRfTEVOKSA9PSAwKSB7CistCQkJaWYgKHZhbGlkX3VzZXIpIHsKKy0JCQkJc3ZyX2F1dGhfcGFzc3dvcmQoKTsKKy0JCQkJZ290byBvdXQ7CistCQkJfQorKwkJCXN2cl9hdXRoX3Bhc3N3b3JkKHZhbGlkX3VzZXIpOworKwkJCWdvdG8gb3V0OworIAkJfQorIAl9CisgI2VuZGlmCitAQCAtMTY0LDEwICsxNjIsOCBAQCB2b2lkIHJlY3ZfbXNnX3VzZXJhdXRoX3JlcXVlc3QoKSB7CisgCQlpZiAobWV0aG9kbGVuID09IEFVVEhfTUVUSE9EX1BBU1NXT1JEX0xFTiAmJgorIAkJCQlzdHJuY21wKG1ldGhvZG5hbWUsIEFVVEhfTUVUSE9EX1BBU1NXT1JELAorIAkJCQkJQVVUSF9NRVRIT0RfUEFTU1dPUkRfTEVOKSA9PSAwKSB7CistCQkJaWYgKHZhbGlkX3VzZXIpIHsKKy0JCQkJc3ZyX2F1dGhfcGFtKCk7CistCQkJCWdvdG8gb3V0OworLQkJCX0KKysJCQlzdnJfYXV0aF9wYW0odmFsaWRfdXNlcik7CisrCQkJZ290byBvdXQ7CisgCQl9CisgCX0KKyAjZW5kaWYKK0BAIC0xNzcsMTIgKzE3Myw3IEBAIHZvaWQgcmVjdl9tc2dfdXNlcmF1dGhfcmVxdWVzdCgpIHsKKyAJaWYgKG1ldGhvZGxlbiA9PSBBVVRIX01FVEhPRF9QVUJLRVlfTEVOICYmCisgCQkJc3RybmNtcChtZXRob2RuYW1lLCBBVVRIX01FVEhPRF9QVUJLRVksCisgCQkJCUFVVEhfTUVUSE9EX1BVQktFWV9MRU4pID09IDApIHsKKy0JCWlmICh2YWxpZF91c2VyKSB7CistCQkJc3ZyX2F1dGhfcHVia2V5KCk7CistCQl9IGVsc2UgeworLQkJCS8qIHB1YmtleSBoYXMgbm8gZmFpbHVyZSBkZWxheSAqLworLQkJCXNlbmRfbXNnX3VzZXJhdXRoX2ZhaWx1cmUoMCwgMCk7CistCQl9CisrCQlzdnJfYXV0aF9wdWJrZXkodmFsaWRfdXNlcik7CisgCQlnb3RvIG91dDsKKyAJfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3N2ci1hdXRocGFtLmMgYi9zdnItYXV0aHBhbS5jCitpbmRleCAwNWU0ZjNlLi5kMjAxYmM5IDEwMDY0NAorLS0tIGEvc3ZyLWF1dGhwYW0uYworKysrIGIvc3ZyLWF1dGhwYW0uYworQEAgLTE3OCwxMyArMTc4LDE0IEBAIHBhbUNvbnZGdW5jKGludCBudW1fbXNnLAorICAqIEtleWJvYXJkIGludGVyYWN0aXZlIHdvdWxkIGJlIGEgbG90IG5pY2VyLCBidXQgc2luY2UgUEFNIGlzIHN5bmNocm9ub3VzLCBpdAorICAqIGdldHMgdmVyeSBtZXNzeSB0cnlpbmcgdG8gc2VuZCB0aGUgaW50ZXJhY3RpdmUgY2hhbGxlbmdlcywgYW5kIHJlYWQgdGhlCisgICogaW50ZXJhY3RpdmUgcmVzcG9uc2VzLCBvdmVyIHRoZSBuZXR3b3JrLiAqLworLXZvaWQgc3ZyX2F1dGhfcGFtKCkgeworK3ZvaWQgc3ZyX2F1dGhfcGFtKGludCB2YWxpZF91c2VyKSB7CisgCisgCXN0cnVjdCBVc2VyRGF0YVMgdXNlckRhdGEgPSB7TlVMTCwgTlVMTH07CisgCXN0cnVjdCBwYW1fY29udiBwYW1Db252ID0geworIAkJcGFtQ29udkZ1bmMsCisgCQkmdXNlckRhdGEgLyogc3VibWl0dGVkIHRvIHBhbXZDb252RnVuYyBhcyBhcHBkYXRhX3B0ciAqLyAKKyAJfTsKKysJY29uc3QgY2hhciogcHJpbnRhYmxlX3VzZXIgPSBOVUxMOworIAorIAlwYW1faGFuZGxlX3QqIHBhbUhhbmRsZXAgPSBOVUxMOworIAorQEAgLTIwNCwxMiArMjA1LDIzIEBAIHZvaWQgc3ZyX2F1dGhfcGFtKCkgeworIAorIAlwYXNzd29yZCA9IGJ1Zl9nZXRzdHJpbmcoc2VzLnBheWxvYWQsICZwYXNzd29yZGxlbik7CisgCisrCS8qIFdlIHJ1biB0aGUgUEFNIGNvbnZlcnNhdGlvbiByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHVzZXJuYW1lIGlzIHZhbGlkCisrCWluIGNhc2UgdGhlIGNvbnZlcnNhdGlvbiBmdW5jdGlvbiBoYXMgYW4gaW5oZXJlbnQgZGVsYXkuCisrCVVzZSBzZXMuYXV0aHN0YXRlLnVzZXJuYW1lIHJhdGhlciB0aGFuIHNlcy5hdXRoc3RhdGUucHdfbmFtZS4KKysJQWZ0ZXIgUEFNIHN1Y2NlZWRzIHdlIHRoZW4gY2hlY2sgdGhlIHZhbGlkX3VzZXIgZmxhZyB0b28gKi8KKysKKyAJLyogdXNlZCB0byBwYXNzIGRhdGEgdG8gdGhlIFBBTSBjb252ZXJzYXRpb24gZnVuY3Rpb24gLSBkb24ndCBib3RoZXIgd2l0aAorIAkgKiBzdHJkdXAoKSBldGMgc2luY2UgdGhlc2UgYXJlIHRvdWNoZWQgb25seSBieSBvdXIgb3duIGNvbnZlcnNhdGlvbgorIAkgKiBmdW5jdGlvbiAoYWJvdmUpIHdoaWNoIHRha2VzIGNhcmUgb2YgaXQgKi8KKy0JdXNlckRhdGEudXNlciA9IHNlcy5hdXRoc3RhdGUucHdfbmFtZTsKKysJdXNlckRhdGEudXNlciA9IHNlcy5hdXRoc3RhdGUudXNlcm5hbWU7CisgCXVzZXJEYXRhLnBhc3N3ZCA9IHBhc3N3b3JkOworIAorKwlpZiAoc2VzLmF1dGhzdGF0ZS5wd19uYW1lKSB7CisrCQlwcmludGFibGVfdXNlciA9IHNlcy5hdXRoc3RhdGUucHdfbmFtZTsKKysJfSBlbHNlIHsKKysJCXByaW50YWJsZV91c2VyID0gIjxpbnZhbGlkIHVzZXJuYW1lPiI7CisrCX0KKysKKyAJLyogSW5pdCBwYW0gKi8KKyAJaWYgKChyYyA9IHBhbV9zdGFydCgic3NoZCIsIE5VTEwsICZwYW1Db252LCAmcGFtSGFuZGxlcCkpICE9IFBBTV9TVUNDRVNTKSB7CisgCQlkcm9wYmVhcl9sb2coTE9HX1dBUk5JTkcsICJwYW1fc3RhcnQoKSBmYWlsZWQsIHJjPSVkLCAlcyIsIAorQEAgLTI0Miw3ICsyNTQsNyBAQCB2b2lkIHN2cl9hdXRoX3BhbSgpIHsKKyAJCQkJcmMsIHBhbV9zdHJlcnJvcihwYW1IYW5kbGVwLCByYykpOworIAkJZHJvcGJlYXJfbG9nKExPR19XQVJOSU5HLAorIAkJCQkiQmFkIFBBTSBwYXNzd29yZCBhdHRlbXB0IGZvciAnJXMnIGZyb20gJXMiLAorLQkJCQlzZXMuYXV0aHN0YXRlLnB3X25hbWUsCisrCQkJCXByaW50YWJsZV91c2VyLAorIAkJCQlzdnJfc2VzLmFkZHJzdHJpbmcpOworIAkJc2VuZF9tc2dfdXNlcmF1dGhfZmFpbHVyZSgwLCAxKTsKKyAJCWdvdG8gY2xlYW51cDsKK0BAIC0yNTMsMTIgKzI2NSwxOCBAQCB2b2lkIHN2cl9hdXRoX3BhbSgpIHsKKyAJCQkJcmMsIHBhbV9zdHJlcnJvcihwYW1IYW5kbGVwLCByYykpOworIAkJZHJvcGJlYXJfbG9nKExPR19XQVJOSU5HLAorIAkJCQkiQmFkIFBBTSBwYXNzd29yZCBhdHRlbXB0IGZvciAnJXMnIGZyb20gJXMiLAorLQkJCQlzZXMuYXV0aHN0YXRlLnB3X25hbWUsCisrCQkJCXByaW50YWJsZV91c2VyLAorIAkJCQlzdnJfc2VzLmFkZHJzdHJpbmcpOworIAkJc2VuZF9tc2dfdXNlcmF1dGhfZmFpbHVyZSgwLCAxKTsKKyAJCWdvdG8gY2xlYW51cDsKKyAJfQorIAorKwlpZiAoIXZhbGlkX3VzZXIpIHsKKysJCS8qIFBBTSBhdXRoIHN1Y2NlZWRlZCBidXQgdGhlIHVzZXJuYW1lIGlzbid0IGFsbG93ZWQgaW4gZm9yIGFub3RoZXIgcmVhc29uCisrCQkoY2hlY2t1c2VybmFtZSgpIGZhaWxlZCkgKi8KKysJCXNlbmRfbXNnX3VzZXJhdXRoX2ZhaWx1cmUoMCwgMSk7CisrCX0KKysKKyAJLyogc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbiAqLworIAlkcm9wYmVhcl9sb2coTE9HX05PVElDRSwgIlBBTSBwYXNzd29yZCBhdXRoIHN1Y2NlZWRlZCBmb3IgJyVzJyBmcm9tICVzIiwKKyAJCQlzZXMuYXV0aHN0YXRlLnB3X25hbWUsCitkaWZmIC0tZ2l0IGEvc3ZyLWF1dGhwYXNzd2QuYyBiL3N2ci1hdXRocGFzc3dkLmMKK2luZGV4IGJkZWUyYWEuLjY5YzdkOGEgMTAwNjQ0CistLS0gYS9zdnItYXV0aHBhc3N3ZC5jCisrKysgYi9zdnItYXV0aHBhc3N3ZC5jCitAQCAtNDgsMjIgKzQ4LDE0IEBAIHN0YXRpYyBpbnQgY29uc3RhbnRfdGltZV9zdHJjbXAoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciogYikgeworIAorIC8qIFByb2Nlc3MgYSBwYXNzd29yZCBhdXRoIHJlcXVlc3QsIHNlbmRpbmcgc3VjY2VzcyBvciBmYWlsdXJlIG1lc3NhZ2VzIGFzCisgICogYXBwcm9wcmlhdGUgKi8KKy12b2lkIHN2cl9hdXRoX3Bhc3N3b3JkKCkgeworK3ZvaWQgc3ZyX2F1dGhfcGFzc3dvcmQoaW50IHZhbGlkX3VzZXIpIHsKKyAJCisgCWNoYXIgKiBwYXNzd2RjcnlwdCA9IE5VTEw7IC8qIHRoZSBjcnlwdCBmcm9tIC9ldGMvcGFzc3dkIG9yIC9ldGMvc2hhZG93ICovCisgCWNoYXIgKiB0ZXN0Y3J5cHQgPSBOVUxMOyAvKiBjcnlwdCBnZW5lcmF0ZWQgZnJvbSB0aGUgdXNlcidzIHBhc3N3b3JkIHNlbnQgKi8KKy0JY2hhciAqIHBhc3N3b3JkOworKwljaGFyICogcGFzc3dvcmQgPSBOVUxMOworIAl1bnNpZ25lZCBpbnQgcGFzc3dvcmRsZW47CistCisgCXVuc2lnbmVkIGludCBjaGFuZ2VwdzsKKyAKKy0JcGFzc3dkY3J5cHQgPSBzZXMuYXV0aHN0YXRlLnB3X3Bhc3N3ZDsKKy0KKy0jaWZkZWYgREVCVUdfSEFDS0NSWVBUCistCS8qIGRlYnVnZ2luZyBjcnlwdCBmb3Igbm9uLXJvb3QgdGVzdGluZyB3aXRoIHNoYWRvd3MgKi8KKy0JcGFzc3dkY3J5cHQgPSBERUJVR19IQUNLQ1JZUFQ7CistI2VuZGlmCistCisgCS8qIGNoZWNrIGlmIGNsaWVudCB3YW50cyB0byBjaGFuZ2UgcGFzc3dvcmQgKi8KKyAJY2hhbmdlcHcgPSBidWZfZ2V0Ym9vbChzZXMucGF5bG9hZCk7CisgCWlmIChjaGFuZ2VwdykgeworQEAgLTczLDEyICs2NSwyMSBAQCB2b2lkIHN2cl9hdXRoX3Bhc3N3b3JkKCkgeworIAl9CisgCisgCXBhc3N3b3JkID0gYnVmX2dldHN0cmluZyhzZXMucGF5bG9hZCwgJnBhc3N3b3JkbGVuKTsKKy0KKy0JLyogdGhlIGZpcnN0IGJ5dGVzIG9mIHBhc3N3ZGNyeXB0IGFyZSB0aGUgc2FsdCAqLworLQl0ZXN0Y3J5cHQgPSBjcnlwdChwYXNzd29yZCwgcGFzc3dkY3J5cHQpOworKwlpZiAodmFsaWRfdXNlcikgeworKwkJLyogdGhlIGZpcnN0IGJ5dGVzIG9mIHBhc3N3ZGNyeXB0IGFyZSB0aGUgc2FsdCAqLworKwkJcGFzc3dkY3J5cHQgPSBzZXMuYXV0aHN0YXRlLnB3X3Bhc3N3ZDsKKysJCXRlc3RjcnlwdCA9IGNyeXB0KHBhc3N3b3JkLCBwYXNzd2RjcnlwdCk7CisrCX0KKyAJbV9idXJuKHBhc3N3b3JkLCBwYXNzd29yZGxlbik7CisgCW1fZnJlZShwYXNzd29yZCk7CisgCisrCS8qIEFmdGVyIHdlIGhhdmUgZ290IHRoZSBwYXlsb2FkIGNvbnRlbnRzIHdlIGNhbiBleGl0IGlmIHRoZSB1c2VybmFtZQorKwlpcyBpbnZhbGlkLiBJbnZhbGlkIHVzZXJzIGhhdmUgYWxyZWFkeSBiZWVuIGxvZ2dlZC4gKi8KKysJaWYgKCF2YWxpZF91c2VyKSB7CisrCQlzZW5kX21zZ191c2VyYXV0aF9mYWlsdXJlKDAsIDEpOworKwkJcmV0dXJuOworKwl9CisrCisgCWlmICh0ZXN0Y3J5cHQgPT0gTlVMTCkgeworIAkJLyogY3J5cHQoKSB3aXRoIGFuIGludmFsaWQgc2FsdCBsaWtlICIhISIgKi8KKyAJCWRyb3BiZWFyX2xvZyhMT0dfV0FSTklORywgIlVzZXIgYWNjb3VudCAnJXMnIGlzIGxvY2tlZCIsCitkaWZmIC0tZ2l0IGEvc3ZyLWF1dGhwdWJrZXkuYyBiL3N2ci1hdXRocHVia2V5LmMKK2luZGV4IGFhNjA4N2MuLmZmNDgxYzggMTAwNjQ0CistLS0gYS9zdnItYXV0aHB1YmtleS5jCisrKysgYi9zdnItYXV0aHB1YmtleS5jCitAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgaW50IGNoZWNrZmlsZXBlcm0oY2hhciAqIGZpbGVuYW1lKTsKKyAKKyAvKiBwcm9jZXNzIGEgcHVia2V5IGF1dGggcmVxdWVzdCwgc2VuZGluZyBzdWNjZXNzIG9yIGZhaWx1cmUgbWVzc2FnZSBhcworICAqIGFwcHJvcHJpYXRlICovCistdm9pZCBzdnJfYXV0aF9wdWJrZXkoKSB7Cisrdm9pZCBzdnJfYXV0aF9wdWJrZXkoaW50IHZhbGlkX3VzZXIpIHsKKyAKKyAJdW5zaWduZWQgY2hhciB0ZXN0a2V5OyAvKiB3aGV0aGVyIHdlJ3JlIGp1c3QgY2hlY2tpbmcgaWYgYSBrZXkgaXMgdXNhYmxlICovCisgCWNoYXIqIGFsZ28gPSBOVUxMOyAvKiBwdWJrZXkgYWxnbyAqLworQEAgLTEwMiw2ICsxMDIsMTUgQEAgdm9pZCBzdnJfYXV0aF9wdWJrZXkoKSB7CisgCWtleWJsb2JsZW4gPSBidWZfZ2V0aW50KHNlcy5wYXlsb2FkKTsKKyAJa2V5YmxvYiA9IGJ1Zl9nZXRwdHIoc2VzLnBheWxvYWQsIGtleWJsb2JsZW4pOworIAorKwlpZiAoIXZhbGlkX3VzZXIpIHsKKysJCS8qIFJldHVybiBmYWlsdXJlIG9uY2Ugd2UgaGF2ZSByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgcGFja2V0CisrCQlyZXF1aXJlZCB0byB2YWxpZGF0ZSBhIHB1YmxpYyBrZXkuIAorKwkJQXZvaWRzIGJsaW5kIHVzZXIgZW51bWVyYXRpb24gdGhvdWdoIGl0IGlzbid0IHBvc3NpYmxlIHRvIHByZXZlbnQKKysJCXRlc3RpbmcgZm9yIHVzZXIgZXhpc3RlbmNlIGlmIHRoZSBwdWJsaWMga2V5IGlzIGtub3duICovCisrCQlzZW5kX21zZ191c2VyYXV0aF9mYWlsdXJlKDAsIDApOworKwkJZ290byBvdXQ7CisrCX0KKysKKyAJLyogY2hlY2sgaWYgdGhlIGtleSBpcyB2YWxpZCAqLworIAlpZiAoY2hlY2twdWJrZXkoYWxnbywgYWxnb2xlbiwga2V5YmxvYiwga2V5YmxvYmxlbikgPT0gRFJPUEJFQVJfRkFJTFVSRSkgeworIAkJc2VuZF9tc2dfdXNlcmF1dGhfZmFpbHVyZSgwLCAwKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZHJvcGJlYXIuZGVmYXVsdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZHJvcGJlYXIuZGVmYXVsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjI0NTNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9kcm9wYmVhci5kZWZhdWx0CkBAIC0wLDAgKzEsMiBAQAorIyBEaXNhbGxvdyByb290IGxvZ2lucyBieSBkZWZhdWx0CitEUk9QQkVBUl9FWFRSQV9BUkdTPSItdyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjA1ZTE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGYzN2ZhOWE0MWYyNDhmYTQxZGQ3NGE0MWM2NmNiNDFhMjkxYzAzZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNiBTZXAgMjAxNiAxMjoxODoyMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBmaXggbGlidG9tY3J5cHQvbGlidG9tbWF0aCBvcmRlcmluZwotCi1UbyBwcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdoZW4gdXNpbmcgc3lzdGVtIGxpYnRvbSBsaWJyYXJpZXMgYW5kCi1saW5raW5nIHdpdGggLS1hcy1uZWVkZWQsIExJQlRPTV9MSUJTIHNob3VsZCBiZSBpbiB0aGUgb3JkZXIKLS1sdG9tY3J5cHQgLWx0b21tYXRoLCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQsIGllIGxpYnMgc2hvdWxkIGJlCi1wcmVwZW5kZWQgdG8gTElCVE9NX0xJQlMgYXMgdGhleSBhcmUgZm91bmQsIG5vdCBhcHBlbmRlZC4KLQotTm90ZSB0aGF0IExJQlRPTV9MSUJTIGlzIG5vdCB1c2VkIHdoZW4gbGlua2luZyB3aXRoIHRoZSBidW5kbGVkCi1saWJ0b20gbGlicy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9ta2ovZHJvcGJlYXIvY29tbWl0L2Y5ZTZiYzJhZWNhYjBmNGI1YjUyOWUwN2E5MmNjNjNjOGE2NmNkNGIgXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyNDU0MDhkLi5kNjI0ODUzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTMsMTYgKzM5MywxNiBAQCBBQ19BUkdfRU5BQkxFKGJ1bmRsZWQtbGlidG9tLAotIAkJCUFDX01TR19OT1RJQ0UoRm9yY2luZyBidW5kbGVkIGxpYnRvbSopCi0gCQllbHNlCi0gCQkJQlVORExFRF9MSUJUT009MAotLQkJCUFDX0NIRUNLX0xJQih0b21tYXRoLCBtcF9leHB0bW9kLCBMSUJUT01fTElCUz0iJExJQlRPTV9MSUJTIC1sdG9tbWF0aCIsIAotKwkJCUFDX0NIRUNLX0xJQih0b21tYXRoLCBtcF9leHB0bW9kLCBMSUJUT01fTElCUz0iLWx0b21tYXRoICRMSUJUT01fTElCUyIsCi0gCQkJCVtBQ19NU0dfRVJST1IoW01pc3Npbmcgc3lzdGVtIGxpYnRvbW1hdGggYW5kIC0tZGlzYWJsZS1idW5kbGVkLWxpYnRvbSB3YXMgc3BlY2lmaWVkXSldICkKLS0JCQlBQ19DSEVDS19MSUIodG9tY3J5cHQsIHJlZ2lzdGVyX2NpcGhlciwgTElCVE9NX0xJQlM9IiRMSUJUT01fTElCUyAtbHRvbWNyeXB0IiwgCi0rCQkJQUNfQ0hFQ0tfTElCKHRvbWNyeXB0LCByZWdpc3Rlcl9jaXBoZXIsIExJQlRPTV9MSUJTPSItbHRvbWNyeXB0ICRMSUJUT01fTElCUyIsCi0gCQkJCVtBQ19NU0dfRVJST1IoW01pc3Npbmcgc3lzdGVtIGxpYnRvbWNyeXB0IGFuZCAtLWRpc2FibGUtYnVuZGxlZC1saWJ0b20gd2FzIHNwZWNpZmllZF0pXSApCi0gCQlmaQotIAldLAotIAlbCi0gCQlCVU5ETEVEX0xJQlRPTT0wCi0tCQlBQ19DSEVDS19MSUIodG9tbWF0aCwgbXBfZXhwdG1vZCwgTElCVE9NX0xJQlM9IiRMSUJUT01fTElCUyAtbHRvbW1hdGgiLCBCVU5ETEVEX0xJQlRPTT0xKQotLQkJQUNfQ0hFQ0tfTElCKHRvbWNyeXB0LCByZWdpc3Rlcl9jaXBoZXIsIExJQlRPTV9MSUJTPSIkTElCVE9NX0xJQlMgLWx0b21jcnlwdCIsIEJVTkRMRURfTElCVE9NPTEpCi0rCQlBQ19DSEVDS19MSUIodG9tbWF0aCwgbXBfZXhwdG1vZCwgTElCVE9NX0xJQlM9Ii1sdG9tbWF0aCAkTElCVE9NX0xJQlMiLCBCVU5ETEVEX0xJQlRPTT0xKQotKwkJQUNfQ0hFQ0tfTElCKHRvbWNyeXB0LCByZWdpc3Rlcl9jaXBoZXIsIExJQlRPTV9MSUJTPSItbHRvbWNyeXB0ICRMSUJUT01fTElCUyIsIEJVTkRMRURfTElCVE9NPTEpCi0gCV0KLSApCi0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNy43NS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNy43NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZiMGQxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZHJvcGJlYXIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNTdlOWI5ZDI1NzA1ZGNiMDczYmExNWM0MTY0MjRmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2JjMWRjYjFjOTcwOWQyMjZkZmY2NjllNTYwNDE3MmExOGNmNWRiZjlhMjAxNDc0ZDU2MThhZTQ0NjUwOThjIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTguNzYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTguNzYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZhNThkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxOC43Ni5iYgpAQCAtMCwwICsxLDUgQEAKK3JlcXVpcmUgZHJvcGJlYXIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMzkxMmY3ZmNkY2M1N2M5OTkzN2U0YTc5NDgwZDJjMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMmZiOTE2N2VjYThjZjkzNDU2YTVmYzFkNGZhZjcwOTkwMmEzYWI3MGRkNDRlMzUyZjNhY2JjM2ZmZGFlYTY1IgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4YTJlZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN0cmVhbS1vcmllbnRlZCBYTUwgcGFyc2VyIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJFeHBhdCBpcyBhbiBYTUwgcGFyc2VyIGxpYnJhcnkgd3JpdHRlbiBpbiBDLiBJdCBpcyBhIHN0cmVhbS1vcmllbnRlZCBwYXJzZXIgaW4gd2hpY2ggYW4gYXBwbGljYXRpb24gcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciB0aGluZ3MgdGhlIHBhcnNlciBtaWdodCBmaW5kIGluIHRoZSBYTUwgZG9jdW1lbnQgKGxpa2Ugc3RhcnQgdGFncykiCi1IT01FUEFHRSA9ICJodHRwOi8vZXhwYXQuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01Yjg2MjBkOThlNDk3NzJkOTVmYzFkMjkxYzI2YWE3OSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXhwYXQvZXhwYXQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzg5ZTI5N2Y1NDc5ODBmYzllY2MwMzZmOWEwNzBkNDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDlkYzMyZWZiYTdlNzRmNzg4ZmNjNGYyMTJhNDMyMTZmYzM3Y2Y1ZjIzZjRjMjMzOTY2NGQ0NzMzNTNhZWRmNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vY29uZnRvb2xzL2xpYnRvb2wubTQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllNjA4MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjYuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBIHN0cmVhbS1vcmllbnRlZCBYTUwgcGFyc2VyIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJFeHBhdCBpcyBhbiBYTUwgcGFyc2VyIGxpYnJhcnkgd3JpdHRlbiBpbiBDLiBJdCBpcyBhIHN0cmVhbS1vcmllbnRlZCBwYXJzZXIgaW4gd2hpY2ggYW4gYXBwbGljYXRpb24gcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciB0aGluZ3MgdGhlIHBhcnNlciBtaWdodCBmaW5kIGluIHRoZSBYTUwgZG9jdW1lbnQgKGxpa2Ugc3RhcnQgdGFncykiCitIT01FUEFHRSA9ICJodHRwOi8vZXhwYXQuc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01Yjg2MjBkOThlNDk3NzJkOTVmYzFkMjkxYzI2YWE3OSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXhwYXQvZXhwYXQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2ggXAorCSAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2EwNDdhZTk1MWI0MDAyMGFjODMxYzI4ODU5MTYxYjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTdiNDNjMjcxNmQ1MjEzNjlmODJmYzJkYzcwZjM1OTg2MGU5MGZhNDQwYmVhNjViM2I4NWYwYjI0NmVhODFmMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vY29uZnRvb2xzL2xpYnRvb2wubTQKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoCmluZGV4IGFlZTk2YWEuLjBlYmYxMzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2gKQEAgLTEsMzAgKzEsMzAgQEAKLUZyb20gZDY1MDFiMTA3OTQwZTlmNTQ4Yzg5MjM2ZDc3M2M2ZDMzYzE1YTVjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDI1MDY1Mjc4MmI2NWIwNzFiN2NjOGYwMWYyZGI4MzNkZjEwNGUwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDE2IEFwciAyMDE2IDEzOjI4OjU5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBEbyBub3QgaWdub3JlIHJldHVybiB2YWx1ZSBvZiB3cml0ZSgpCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBpZ25vcmUgcmV0dXJuIHZhbHVlIG9mIHdyaXRlKCkKIAogZ2NjIHdhcm5zIGFib3V0IGlnbm9yaW5nIHJldHVybiB2YWx1ZSB3aGVuIGNvbXBpbGluZwogd2l0aCBmb3J0aWZ5IHR1cm5lZCBvbi4KIAogYXNzZXJ0IHdoZW4gd3JpdGUoKSBmYWlscwogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAorLS0tCiAgZ2xpYi90ZXN0cy91bml4LmMgfCA1ICsrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dsaWIvdGVzdHMvdW5peC5jIGIvZ2xpYi90ZXN0cy91bml4LmMKLWluZGV4IDM1NDM0NTguLjRlN2VkODUgMTAwNjQ0CitpbmRleCA5ZDU1YTZjLi5hMDdmOTQ1IDEwMDY0NAogLS0tIGEvZ2xpYi90ZXN0cy91bml4LmMKICsrKyBiL2dsaWIvdGVzdHMvdW5peC5jCiBAQCAtMzIsMTQgKzMyLDE1IEBAIHRlc3RfcGlwZSAodm9pZCkKICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogICAgaW50IHBpcGVmZFsyXTsKICAgIGNoYXIgYnVmWzEwMjRdOwotLSAgc3NpemVfdCBieXRlc19yZWFkOwotKyAgc3NpemVfdCBieXRlc19yZWFkLCBieXRlc193cml0dGVuOworLSAgZ3NzaXplIGJ5dGVzX3JlYWQ7CisrICBnc3NpemUgYnl0ZXNfcmVhZCwgYnl0ZXNfd3JpdHRlbjsKICAgIGdib29sZWFuIHJlczsKICAKICAgIHJlcyA9IGdfdW5peF9vcGVuX3BpcGUgKHBpcGVmZCwgRkRfQ0xPRVhFQywgJmVycm9yKTsKQEAgLTM3LDYgKzM3LDMgQEAKICAgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOwogICAgYnl0ZXNfcmVhZCA9IHJlYWQgKHBpcGVmZFswXSwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOwogICAgZ19hc3NlcnRfY21waW50IChieXRlc19yZWFkLCA+LCAwKTsKLS0tIAotMi44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaAppbmRleCA1NjFkMTAwLi45N2QwYWZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gODA2ODJjMTcxY2NiMjdkMDEzNDNkNGNmY2ZiNGRkNDliNzg2M2NjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODU2MDQ1OTI3YjlhYjM5MTE2NWMwZWJhYmY0MDE4MzVmODQzOWVhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDIyIE1hciAyMDE2IDE1OjE0OjU4ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIEluc3RhbGwgZ2lvLXF1ZXJ5bW9kdWxlcyBhcyBsaWJleGVjX1BST0dSQU0KQEAgLTgsMjQgKzgsMjIgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKIC0tLQogIGdpby9NYWtlZmlsZS5hbSB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL01ha2VmaWxlLmFtIGIvZ2lvL01ha2VmaWxlLmFtCi1pbmRleCBiN2Y5MWNjLi40ZDgxY2MwIDEwMDY0NAoraW5kZXggZTE0Y2FkMi4uYmYyYmNjNyAxMDA2NDQKIC0tLSBhL2dpby9NYWtlZmlsZS5hbQogKysrIGIvZ2lvL01ha2VmaWxlLmFtCi1AQCAtNzAyLDcgKzcwMiw4IEBAIGdpby5kZWY6IGxpYmdpby0yLjAubGEKK0BAIC04MzUsNyArODM1LDggQEAgZ2lvLmRlZjogbGliZ2lvLTIuMC5sYQogIGdpby0yLjAubGliOiBsaWJnaW8tMi4wLmxhIGdpby5kZWYKICAJJChBTV9WX0dFTikgbGliLmV4ZSAtbWFjaGluZTpATElCX0VYRV9NQUNISU5FX0ZMQUdAIC1uYW1lOmxpYmdpby0yLjAtJChMVF9DVVJSRU5UX01JTlVTX0FHRSkuZGxsIC1kZWY6JChidWlsZGRpcikvZ2lvLmRlZiAtb3V0OiRACiAgCi0tYmluX1BST0dSQU1TID0gZ2lvLXF1ZXJ5bW9kdWxlcyBnbGliLWNvbXBpbGUtc2NoZW1hcyBnbGliLWNvbXBpbGUtcmVzb3VyY2VzIGdzZXR0aW5ncwotK2Jpbl9QUk9HUkFNUyA9IGdsaWItY29tcGlsZS1zY2hlbWFzIGdsaWItY29tcGlsZS1yZXNvdXJjZXMgZ3NldHRpbmdzCistYmluX1BST0dSQU1TID0gZ2lvLXF1ZXJ5bW9kdWxlcyBnbGliLWNvbXBpbGUtc2NoZW1hcyBnbGliLWNvbXBpbGUtcmVzb3VyY2VzIGdzZXR0aW5ncyBnaW8tbGF1bmNoLWRlc2t0b3AKKytiaW5fUFJPR1JBTVMgPSBnbGliLWNvbXBpbGUtc2NoZW1hcyBnbGliLWNvbXBpbGUtcmVzb3VyY2VzIGdzZXR0aW5ncyBnaW8tbGF1bmNoLWRlc2t0b3AKICtsaWJleGVjX1BST0dSQU1TID0gZ2lvLXF1ZXJ5bW9kdWxlcwogIAogIGdsaWJfY29tcGlsZV9yZXNvdXJjZXNfTERBREQgPSBsaWJnaW8tMi4wLmxhIAkJXAogIAkkKHRvcF9idWlsZGRpcikvZ29iamVjdC9saWJnb2JqZWN0LTIuMC5sYQlcCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVRlc3QtZm9yLXB0aHJlYWRfZ2V0bmFtZV9ucC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTQ5NjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVRlc3QtZm9yLXB0aHJlYWRfZ2V0bmFtZV9ucC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGY2MjdmZTE2MDk5YTJiMDhkOGI0ZTkwMjNhZTZiNGYzNTI0NTE5NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA2IE5vdiAyMDE2IDA4OjU5OjA4IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRlc3QgZm9yIHB0aHJlYWRfZ2V0bmFtZV9ucCBiZWZvcmUgdXNpbmcgaXQKLQotSXRzIGEgR05VIGV4dGVudGlvbiBhbmQgbm90IGFsbCBsaWJjIGltcGxlbWVudCBpdAotbXVzbCBlLmcuIGltcGxlbWVudHMgdGhlIHNldG5hbWUgQVBJIGJ1dCBub3QgZ2V0bmFtZQotaW4gYW55IGNhc2UsIGl0IHNlZW1zIHRvIGJlIHNhZmVyIHRvIGNoZWNrIGZvciB0aGUKLWZ1bmN0aW9uIGJlZm9yZSB1c2luZyBpdC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIGNvbmZpZy5oLmluICAgICAgICAgfCAgMyArKysKLSBjb25maWd1cmUuYWMgICAgICAgIHwgMTAgKysrKysrKysrKwotIGdsaWIvdGVzdHMvdGhyZWFkLmMgfCAgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlnLmguaW4gYi9jb25maWcuaC5pbgotaW5kZXggMmMzNWZmMS4uZGE3YWMzMCAxMDA2NDQKLS0tLSBhL2NvbmZpZy5oLmluCi0rKysgYi9jb25maWcuaC5pbgotQEAgLTMyNiw2ICszMjYsOSBAQAotICN1bmRlZiBIQVZFX1BUSFJFQURfQ09ORF9USU1FRFdBSVRfUkVMQVRJVkVfTlAKLSAKLSAvKiBIYXZlIGZ1bmN0aW9uIHB0aHJlYWRfc2V0bmFtZV9ucChjb25zdCBjaGFyKikgKi8KLSsjdW5kZWYgSEFWRV9QVEhSRUFEX0dFVE5BTUVfTlAKLSsKLSsvKiBIYXZlIGZ1bmN0aW9uIHB0aHJlYWRfc2V0bmFtZV9ucChjb25zdCBjaGFyKikgKi8KLSAjdW5kZWYgSEFWRV9QVEhSRUFEX1NFVE5BTUVfTlBfV0lUSE9VVF9USUQKLSAKLSAvKiBIYXZlIGZ1bmN0aW9uIHB0aHJlYWRfc2V0bmFtZV9ucChwdGhyZWFkX3QsIGNvbnN0IGNoYXIqKSAqLwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNDMwOTY3MS4uMjA5NzcwYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjEyMSw2ICsyMTIxLDE2IEBAIEFTX0lGKFsgdGVzdCB4IiRoYXZlX3RocmVhZHMiID0geHBvc2l4XSwgWwotICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9QVEhSRUFEX0NPTkRfVElNRURXQUlUX1JFTEFUSVZFX05QLDEsCi0gICAgICAgICAgICAgICAgIFtIYXZlIGZ1bmN0aW9uIHB0aHJlYWRfY29uZF90aW1lZHdhaXRfcmVsYXRpdmVfbnBdKV0sCi0gICAgICAgICAgICAgW0FDX01TR19SRVNVTFQobm8pXSkKLSsgICAgICAgIGRubCBnZXRzIHRocmVhZCBuYW1lcwotKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciBwdGhyZWFkX2dldG5hbWVfbnAocHRocmVhZF90LCBjaGFyKiwgc2l6ZV90KSkKLSsgICAgICAgIEFDX0xJTktfSUZFTFNFKAotKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi0rICAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sCi0rICAgICAgICAgICAgICAgIFtwdGhyZWFkX2dldG5hbWVfbnAocHRocmVhZF9zZWxmKCksImV4YW1wbGUiLDApXSldLAotKyAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcykKLSsgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfUFRIUkVBRF9HRVROQU1FX05QLDEsCi0rICAgICAgICAgICAgICAgIFtIYXZlIGZ1bmN0aW9uIHB0aHJlYWRfc2V0bmFtZV9ucChjb25zdCBjaGFyKildKV0sCi0rICAgICAgICAgICAgW0FDX01TR19SRVNVTFQobm8pXSkKLSAgICAgICAgIGRubCBTZXRzIHRocmVhZCBuYW1lcyBvbiBPUyBYIDEwLjYsIGlPUyAzLjIgKGFuZCBoaWdoZXIpCi0gICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHB0aHJlYWRfc2V0bmFtZV9ucChjb25zdCBjaGFyKikpCi0gICAgICAgICBBQ19MSU5LX0lGRUxTRSgKLWRpZmYgLS1naXQgYS9nbGliL3Rlc3RzL3RocmVhZC5jIGIvZ2xpYi90ZXN0cy90aHJlYWQuYwotaW5kZXggNTQ0NzgzNi4uMmYyNDhhNiAxMDA2NDQKLS0tLSBhL2dsaWIvdGVzdHMvdGhyZWFkLmMKLSsrKyBiL2dsaWIvdGVzdHMvdGhyZWFkLmMKLUBAIC0xNzQsNyArMTc0LDcgQEAgdGVzdF90aHJlYWQ1ICh2b2lkKQotIHN0YXRpYyBncG9pbnRlcgotIHRocmVhZDZfZnVuYyAoZ3BvaW50ZXIgZGF0YSkKLSB7Ci0tI2lmZGVmIEhBVkVfUFRIUkVBRF9TRVROQU1FX05QX1dJVEhfVElECi0rI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NFVE5BTUVfTlBfV0lUSF9USUQpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0dFVE5BTUVfTlApCi0gICBjaGFyIG5hbWVbMTZdOwotIAotICAgcHRocmVhZF9nZXRuYW1lX25wIChwdGhyZWFkX3NlbGYoKSwgbmFtZSwgMTYpOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAppbmRleCBiOThmOTMzLi41MDc4MWU3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDc2MjkwN2QzM2I4MWNmNzQ2OWI1Njk2Yzg3ZjIxODhkMjA1MGFmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGIxYTZkMjQ3Yzc4MTI1MDk2YTZlYTVhYjNjYWI4YTFmMDAwZGMyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDkgTm92IDIwMTUgMTE6MDc6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRW5hYmxlIG1vcmUgdGVzdHMgd2hpbGUgY3Jvc3MtY29tcGlsaW5nCitTdWJqZWN0OiBbUEFUQ0hdIEVuYWJsZSBtb3JlIHRlc3RzIHdoaWxlIGNyb3NzLWNvbXBpbGluZwogCiBVcHN0cmVhbSBkaXNhYmxlcyBhIGZldyB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcgYmVjYXVzZSB0aGVpciBidWlsZCByZXF1aXJlcwogcnVubmluZyBvdGhlciBidWlsdCBiaW5hcmllcy4gVGhpcyB1c3VhbGx5IG1ha2VzIHNlbnNlIGJ1dCBpbiB0aGUgY3Jvc3MtY29tcGlsZQpAQCAtMTYsMTAgKzE2LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtIGIvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBhY2MxZGE0Li45MTc2NjQwIDEwMDY0NAoraW5kZXggMWYwYmVkNy4uODI5NWRlYiAxMDA2NDQKIC0tLSBhL2dpby90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNTE2LDEwICs1MTYsOSBAQCB0ZXN0X3Byb2dyYW1zICs9IFwKK0BAIC01NTAsMTAgKzU1MCw5IEBAIHRlc3RfcHJvZ3JhbXMgKz0gXAogIGVuZGlmCiAgCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzIsNyArMzIsNyBAQAogIHRlc3RfcHJvZ3JhbXMgKz0gcmVzb3VyY2VzCiAgcmVzb3VyY2VzX1NPVVJDRVMgPSByZXNvdXJjZXMuYwogIG5vZGlzdF9yZXNvdXJjZXNfU09VUkNFUyA9IHRlc3RfcmVzb3VyY2VzLmMgdGVzdF9yZXNvdXJjZXMyLmMgdGVzdF9yZXNvdXJjZXMyLmgKLUBAIC01NDMsNyArNTQyLDExIEBAIGlmICFFTkFCTEVfSU5TVEFMTEVEX1RFU1RTCitAQCAtNTc4LDcgKzU3NywxMSBAQCBpZiAhRU5BQkxFX0lOU1RBTExFRF9URVNUUwogIGxpYnJlc291cmNlcGx1Z2luX2xhX0xERkxBR1MgKz0gLXJwYXRoIC8KICBlbmRpZgogIApAQCAtNDQsNyArNDQsNyBAQAogIAogIHRlc3QtZ2VuZXJhdGVkLnR4dDogdGVzdDEudHh0CiAgCSQoQU1fVl9HRU4pIGVjaG8gIkdlbmVyYXRlZCIgPiAkQCAmJiBcCi1AQCAtNTY0LDcgKzU2Nyw2IEBAIHRlc3QuZ3Jlc291cmNlOiB0ZXN0LmdyZXNvdXJjZS54bWwgTWFrZWZpbGUgJChzaGVsbCAkKGdsaWJfY29tcGlsZV9yZXNvdXJjZXMpIC0tCitAQCAtNTk5LDcgKzYwMiw2IEBAIHRlc3QuZ3Jlc291cmNlOiB0ZXN0LmdyZXNvdXJjZS54bWwgTWFrZWZpbGUgJChzaGVsbCAkKGdsaWJfY29tcGlsZV9yZXNvdXJjZXMpIC0tCiAgCiAgRVhUUkFfRElTVCArPSB0ZXN0LmdyZXNvdXJjZS54bWwgdGVzdDEudHh0IHRlc3QyLmdyZXNvdXJjZS54bWwgdGVzdDIudHh0IHRlc3QzLmdyZXNvdXJjZS54bWwgdGVzdDMudHh0IHRlc3Q0LmdyZXNvdXJjZS54bWwKICBDTEVBTkZJTEVTICs9IHRlc3QtZ2VuZXJhdGVkLnR4dCB0ZXN0X3Jlc291cmNlcy5jIHRlc3RfcmVzb3VyY2VzMi5bY2hdIHBsdWdpbl9yZXNvdXJjZXMuYyB0ZXN0LmdyZXNvdXJjZQpAQCAtNTMsMTAgKzUzLDEwIEBACiAgQlVJTFRfU09VUkNFUyArPSBnaW90eXBlZnVuY3MuaW5jCiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbSBiL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KLWluZGV4IDY1Njk0MWQuLjY4NTU1ZmYgMTAwNjQ0CitpbmRleCAwZTYwOTg3Li45MjdkMTNhIDEwMDY0NAogLS0tIGEvdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbQotQEAgLTQ4LDEwICs0OCwxMyBAQCBpZiBFTkFCTEVfVElNRUxPT1AKK0BAIC01MSwxMCArNTEsMTMgQEAgaWYgRU5BQkxFX1RJTUVMT09QCiAgaW5zdGFsbGVkX3Rlc3RfcHJvZ3JhbXMgKz0gdGltZWxvb3AtY2xvc3VyZQogIGVuZGlmCiAgCkBAIC03MiwxNCArNzIsOSBAQAogIAogIHRlc3RtYXJzaGFsLmg6IHN0YW1wLXRlc3RtYXJzaGFsLmgKICAJQHRydWUKLUBAIC02OSw3ICs3Miw2IEBAIEJVSUxUX1NPVVJDRVMgKz0gdGVzdG1hcnNoYWwuaCB0ZXN0bWFyc2hhbC5jCi0gQ0xFQU5GSUxFUyArPSBzdGFtcC10ZXN0bWFyc2hhbC5oCitAQCAtNzEsNCArNzQsMyBAQCB0ZXN0bWFyc2hhbC5jOiB0ZXN0bWFyc2hhbC5oIHRlc3RtYXJzaGFsLmxpc3QgJChnbGliX2dlbm1hcnNoYWwpCisgQlVJTFRfU09VUkNFUyArPSB0ZXN0bWFyc2hhbC5oIHRlc3RtYXJzaGFsLmMKKyBDTEVBTkZJTEVTICs9IHN0YW1wLXRlc3RtYXJzaGFsLmggdGVzdG1hcnNoYWwuaCB0ZXN0bWFyc2hhbC5jCiAgRVhUUkFfRElTVCArPSB0ZXN0Y29tbW9uLmggdGVzdG1hcnNoYWwubGlzdAotIEJVSUxUX0VYVFJBX0RJU1QgKz0gdGVzdG1hcnNoYWwuaCB0ZXN0bWFyc2hhbC5jCiAtZW5kaWYgIyAhQ1JPU1NfQ09NUElMSU5HCi0gCi0gZGlzdC1ob29rOiAkKEJVSUxUX0VYVFJBX0RJU1QpCi0gCWZpbGVzPSckKEJVSUxUX0VYVFJBX0RJU1QpJzsJCQkJXAotLS0gCi0yLjE0LjEKLQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2FsbG93LXJ1bi1tZWRpYS1zZFgtZHJpdmUtbW91bnQtaWYtdXNlcm5hbWUtcm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDBjMDA4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBjNTNlOTRhNTIwYjU3M2FhMGRjZjEyOTAzZTk1NjNmZThiYWRjMzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyaXVzIEF2cmFtIDxtYXJpdXMuYXZyYW1AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAxMjoxMDo0MSArMDMwMAotU3ViamVjdDogW1BBVENIXSBBbGxvdyAvcnVuL21lZGlhL3NkWCBkcml2ZSBtb3VudCBpZiB1c2VybmFtZSByb290Ci0KLUluIGNhc2UgdGhhdCB0aGUgdXNlcm5hbWUgbG9nZ2VkIGluIHRoZSBzeXN0ZW0gaXMgcm9vdAotdGhlIGRyaXZlcyBhcmUgZGlyZWN0bHkgbW91bnRlZCBpbiAvcnVuL21lZGlhL3NkWCBhbmQKLW5vdCAvcnVuL21lZGlhLzx1c2VybmFtZT4vc2RYIGFzIHRoZSBmdW5jdGlvbgotZ191bml4X21vdW50X2d1ZXNzX3Nob3VsZF9kaXNwbGF5KCkgZXhwZWN0cy4KLQotV2l0aG91dCB0aGlzIGNoYW5nZSBVU0Igc3RpY2sgbW91bnRzIGFyZSBub3QgYWNjZXNpYmxlIGZyb20KLWdyYXBoaWNhbCBhcHBsaWNhdGlvbnMgc3VjaCBhcyB0aGUgRmlsZSBNYW5hZ2VyIChwY21hbmZtKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVNpZ25lZC1vZmYtYnk6IE1hcml1cyBBdnJhbSA8bWFyaXVzLmF2cmFtQGludGVsLmNvbT4KLS0tLQotIGdpby9ndW5peG1vdW50cy5jIHwgICAgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dpby9ndW5peG1vdW50cy5jIGIvZ2lvL2d1bml4bW91bnRzLmMKLWluZGV4IDQ5OTkzNTQuLmY2YzE0NzIgMTAwNjQ0Ci0tLS0gYS9naW8vZ3VuaXhtb3VudHMuYwotKysrIGIvZ2lvL2d1bml4bW91bnRzLmMKLUBAIC0yMTM2LDYgKzIxMzYsMTEgQEAgZ191bml4X21vdW50X2d1ZXNzX3Nob3VsZF9kaXNwbGF5IChHVW5peE1vdW50RW50cnkgKm1vdW50X2VudHJ5KQotICAgICAgICAgICBtb3VudF9wYXRoW3NpemVvZiAoIi9ydW4vbWVkaWEvIikgLSAxICsgdXNlcl9uYW1lX2xlbl0gPT0gJy8nKQotICAgICAgICAgaXNfaW5fcnVudGltZV9kaXIgPSBUUlVFOwotIAotKyAgICAgIC8qIEFsbG93IG5vIHVzZXJuYW1lIGluIHBhdGggaW4gL3J1bi9tZWRpYSBpZiBjdXJyZW50IHVzZXIgaXMgcm9vdCAqLwotKyAgICAgIGlmIChzdHJjbXAodXNlcl9uYW1lLCAicm9vdCIpID09IDAgJiYKLSsgICAgICAgICAgc3RybmNtcCAobW91bnRfcGF0aCwgIi9ydW4vbWVkaWEvIiwgc2l6ZW9mKCJydW4vbWVkaWEiKSkgPT0gMCkKLSsgICAgICAgIGlzX2luX3J1bnRpbWVfZGlyID0gVFJVRTsKLSsKLSAgICAgICBpZiAoaXNfaW5fcnVudGltZV9kaXIgfHwgZ19zdHJfaGFzX3ByZWZpeCAobW91bnRfcGF0aCwgIi9tZWRpYS8iKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgY2hhciAqcGF0aDsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2RhdGUtbHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2RhdGUtbHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQwYWZmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZGF0ZS1sdC5wYXRjaApAQCAtMCwwICsxLDIwIEBACitVcGRhdGUgTGl0aHVhbmlhbiBtb250aCBuYW1lcyBpbiB0aGUgdGVzdCBzdWl0ZSBhcyBnbGliYyBjaGFuZ2VkIHRoZSB0cmFuc2xhdGlvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi9tZXJnZV9yZXF1ZXN0cy8zNzNdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ2xpYi90ZXN0cy9kYXRlLmMgYi9nbGliL3Rlc3RzL2RhdGUuYworaW5kZXggYjgwMWNhNzA0Li42NjQ2YzIyN2MgMTAwNjQ0CistLS0gYS9nbGliL3Rlc3RzL2RhdGUuYworKysrIGIvZ2xpYi90ZXN0cy9kYXRlLmMKK0BAIC0zNjUsOCArMzY1LDggQEAgdGVzdF9tb250aF9uYW1lcyAodm9pZCkKKyAgICAgICBURVNUX0RBVEUgKCAxLCAgNCwgMjAxOCwgICAgICAiJVkgbS4gJU9CIiwgICAgICAiMjAxOCBtLiBiYWxhbmRpcyIpOworICAgICAgIFRFU1RfREFURSAoIDEsICA1LCAyMDE4LCAgICAgICIlWSBtLiAlT0IiLCAgICAgICAgIjIwMTggbS4gZ2VndcW+xJciKTsKKyAgICAgICBURVNUX0RBVEUgKCAxLCAgNiwgMjAxOCwgICAgICAiJVkgbS4gJU9CIiwgICAgICAiMjAxOCBtLiBiaXLFvmVsaXMiKTsKKy0gICAgICBURVNUX0RBVEUgKDE3LCAgNywgMjAxOCwgIiVZIG0uICViICVlIGQuIiwgICAgICIyMDE4IG0uIExpZSAxNyBkLiIpOworLSAgICAgIFRFU1RfREFURSAoIDEsICA4LCAyMDE4LCAgICAgICIlWSBtLiAlT2IiLCAgICAgICAgICAgIjIwMTggbS4gUmdwIik7CisrICAgICAgVEVTVF9EQVRFICgxNywgIDcsIDIwMTgsICIlWSBtLiAlYiAlZSBkLiIsICAgIjIwMTggbS4gTGllcC4gMTcgZC4iKTsKKysgICAgICBURVNUX0RBVEUgKCAxLCAgOCwgMjAxOCwgICAgICAiJVkgbS4gJU9iIiwgICAgICAgICAiMjAxOCBtLiBydWdwLiIpOworICAgICB9CisgICBlbHNlCisgICAgIGdfdGVzdF9za2lwICgibG9jYWxlIGx0X0xUIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIExpdGh1YW5pYW4gbW9udGggbmFtZXMgdGVzdCIpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9wdGVzdC1wYXRocy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcHRlc3QtcGF0aHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYmUwMjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9wdGVzdC1wYXRocy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUluc3RlYWQgb2Ygd3JpdGluZyB0aGUgdGVtcG9yYXJ5IG1hcHBpbmcgZmlsZXMgaW4gdGhlIG1hcHBlZGZpbGUgdGVzdCB0byB0aGUKLXVzZXIgcnVudGltZSBkaXJlY3RvcnksIHdyaXRlIHRoZW0gdG8gJFRNUC4gIFRoZSBydW50aW1lIGRpcmVjdG9yeSBtYXkgbm90Ci1jdXJyZW50bHkgZXhpc3QgaWYgdGhlIHRlc3QgaXMgZXhlY3V0ZWQgb24gYSBub24tZGVza3RvcCBzeXN0ZW0gYW5kIHRoZSB0ZXN0Ci1kb2Vzbid0IGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9nbGliL3Rlc3RzL21hcHBlZGZpbGUuYyBiL2dsaWIvdGVzdHMvbWFwcGVkZmlsZS5jCi1pbmRleCA0MGUwZTYwLi4yN2EyNGJlIDEwMDY0NAotLS0tIGEvZ2xpYi90ZXN0cy9tYXBwZWRmaWxlLmMKLSsrKyBiL2dsaWIvdGVzdHMvbWFwcGVkZmlsZS5jCi1AQCAtODEsNyArODEsNyBAQCB0ZXN0X3dyaXRhYmxlICh2b2lkKQotICAgY29uc3QgZ2NoYXIgKm5ldyA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHl6IjsKLSAgIGdjaGFyICp0bXBfY29weV9wYXRoOwotIAotLSAgdG1wX2NvcHlfcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKGdfZ2V0X3VzZXJfcnVudGltZV9kaXIgKCksICJnbGliLXRlc3QtNDA5Ni1yYW5kb20tYnl0ZXMiLCBOVUxMKTsKLSsgIHRtcF9jb3B5X3BhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChnX2dldF90bXBfZGlyICgpLCAiZ2xpYi10ZXN0LTQwOTYtcmFuZG9tLWJ5dGVzIiwgTlVMTCk7Ci0gCi0gICBnX2ZpbGVfZ2V0X2NvbnRlbnRzIChnX3Rlc3RfZ2V0X2ZpbGVuYW1lIChHX1RFU1RfRElTVCwgIjQwOTYtcmFuZG9tLWJ5dGVzIiwgTlVMTCksICZjb250ZW50cywgJmxlbiwgJmVycm9yKTsKLSAgIGdfYXNzZXJ0X25vX2Vycm9yIChlcnJvcik7Ci1AQCAtMTI1LDcgKzEyNSw3IEBAIHRlc3Rfd3JpdGFibGVfZmQgKHZvaWQpCi0gICBpbnQgZmQ7Ci0gICBnY2hhciAqdG1wX2NvcHlfcGF0aDsKLSAKLS0gIHRtcF9jb3B5X3BhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChnX2dldF91c2VyX3J1bnRpbWVfZGlyICgpLCAiZ2xpYi10ZXN0LTQwOTYtcmFuZG9tLWJ5dGVzIiwgTlVMTCk7Ci0rICB0bXBfY29weV9wYXRoID0gZ19idWlsZF9maWxlbmFtZSAoZ19nZXRfdG1wX2RpciAoKSwgImdsaWItdGVzdC00MDk2LXJhbmRvbS1ieXRlcyIsIE5VTEwpOwotIAotICAgZ19maWxlX2dldF9jb250ZW50cyAoZ190ZXN0X2dldF9maWxlbmFtZSAoR19URVNUX0RJU1QsICI0MDk2LXJhbmRvbS1ieXRlcyIsIE5VTEwpLCAmY29udGVudHMsICZsZW4sICZlcnJvcik7Ci0gICBnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoCmluZGV4IDY1ZDViNDMuLmY5Nzk0ZDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDgzMjY5NjE4NDFmNGQxNmM3MjM5ZTc0N2RlMTFlMzgxN2MzNWNmZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxMSBNYXIgMjAxNiAxNTozNTo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBnbGliLTIuMDogcmVsb2NhdGUgdGhlIEdJTyBtb2R1bGUgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCisKIEluc3RlYWQgb2YgaGFyZC1jb2RpbmcgR0lPX01PRFVMRV9QQVRIIHdoZW4gZ2xpYiBpcyBidWlsdCwgdXNlIGRsYWRkcigpIHRvCiBkZXRlcm1pbmUgd2hlcmUgbGliZ2xpYi5zbyBpcyBhbmQgdXNlIHRoYXQgcGF0aCB0byBjYWxjdWxhdGUgR0lPX01PRFVMRVNfRElSLgogCkBAIC04LDEyICsxMywxMyBAQAogCiBQb3J0IHBhdGNoIHRvIDIuNDgKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQogIGdpby9naW9tb2R1bGUuYyB8IDEyICsrKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9naW8vZ2lvbW9kdWxlLmMgYi9naW8vZ2lvbW9kdWxlLmMKLWluZGV4IGRhN2MxNjcuLmNjMGJjN2MgMTAwNjQ0CitpbmRleCAzNmMwY2VmLi45MTJlNDkwIDEwMDY0NAogLS0tIGEvZ2lvL2dpb21vZHVsZS5jCiArKysgYi9naW8vZ2lvbW9kdWxlLmMKIEBAIC00MCw2ICs0MCw4IEBACkBAIC0yNSw3ICszMSw3IEBACiAgI2VuZGlmCiAgI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAgCi1AQCAtMTAzNiw3ICsxMDM4LDE1IEBAIGdldF9naW9fbW9kdWxlX2RpciAodm9pZCkKK0BAIC0xMDk5LDcgKzExMDEsMTUgQEAgZ2V0X2dpb19tb2R1bGVfZGlyICh2b2lkKQogICNlbmRpZgogICAgICAgIGdfZnJlZSAoaW5zdGFsbF9kaXIpOwogICNlbHNlCkBAIC00Miw2ICs0OCwzIEBACiAgI2VuZGlmCiAgICAgIH0KICAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFmNTk0NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgZ2xpYi5pbmMKLQotUEUgPSAiMSIKLQotU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE2ZTg4NmFkNjc3YmYwN2I3ZDQ4ZWI4MTg4YmNmNzU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2M2ZkYzY2ODVkYzNkYThlNTM4MWRmYjlmMTVjYTRiNTcwOWIyOGJlODRkOWQwNWE5YmI4ZTQ0NmFiYWMwYTgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41OC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNzFhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTguMC5iYgpAQCAtMCwwICsxLDIyIEBACityZXF1aXJlIGdsaWIuaW5jCisKK1BFID0gIjEiCisKK1NIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3VjbGliY19tdXNsX3RyYW5zbGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RhdGUtbHQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YjVkMjFjODAyZjU1YmYzNzE3MWM0ZmJmZTdkMzJkMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGY0Y2UwNzMwYjRmOTVjNDdiNzExNjEzYjU0MDZhODg3YzJlZTEzZWE2ZDI1OTMwZDcyYTRmYTdmZGI3N2Y2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKaW5kZXggZjY0NWVkNi4uZTgyMTVkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCkBAIC05LDggKzksNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9nbGliLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9Yjg4YWJiN2YzYWQwOTYwN2U3MWNiOWQ1MzAxNTU5MDYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbW9kdWxlL2dtb2R1bGUuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1iODhhYmI3ZjNhZDA5NjA3ZTcxY2I5ZDUzMDE1NTkwNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbGliL3BjcmUvQ09QWUlORzttZDU9MjY2ZWJjM2ZmNzRlZTljZTZmYWQ2NTU3NzY2N2MwZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9wY3JlL3BjcmUuaDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0zNTttZDU9ZGUyN2YyYmY2MzNkMjBhMmI3YWYwYjE5ODM0MjMyODMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9wY3JlL3BjcmUuaDtiZWdpbmxpbmU9ODtlbmRsaW5lPTM2O21kNT0zZTI5NzdkYWU0YWQwNTIxN2Y1OGM0NDYyMzcyOThmYyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL3JlZmVyZW5jZS9DT1BZSU5HO21kNT1mNTFhNTEwMGMxN2FmNmJhZTAwNzM1Y2Q3OTFlMWZjYyIKIEJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKIFNFQ1RJT04gPSAibGlicyIKQEAgLTM5LDggKzM4LDkgQEAKIFBBQ0tBR0VDT05GSUdbc3lzdGVtLXBjcmVdID0gIi0td2l0aC1wY3JlPXN5c3RlbSwtLXdpdGgtcGNyZT1pbnRlcm5hbCxsaWJwY3JlIgogUEFDS0FHRUNPTkZJR1tsaWJtb3VudF0gPSAiLS1lbmFibGUtbGlibW91bnQsLS1kaXNhYmxlLWxpYm1vdW50LHV0aWwtbGludXgiCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4gLS13aXRoLXhtbC1jYXRhbG9nPSR7U1RBR0lOR19FVENESVJfTkFUSVZFfS94bWwvY2F0YWxvZy54bWwsIC0tZGlzYWJsZS1tYW4sIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbGliZWxmXSA9ICItLWVuYWJsZS1saWJlbGYsLS1kaXNhYmxlLWxpYmVsZixlbGZ1dGlscyIKIAotQ09SRUNPTkYgPSAiLS1kaXNhYmxlLWR0cmFjZSAtLWRpc2FibGUtZmFtIC0tZGlzYWJsZS1saWJlbGYgLS1kaXNhYmxlLXN5c3RlbXRhcCIKK0NPUkVDT05GID0gIi0tZGlzYWJsZS1kdHJhY2UgLS1kaXNhYmxlLWZhbSAtLWRpc2FibGUtc3lzdGVtdGFwIgogCiBQUklOVEYgPSAiLS1lbmFibGUtaW5jbHVkZWQtcHJpbnRmPW5vIgogUFJJTlRGX2RhcndpbiA9ICItLWVuYWJsZS1pbmNsdWRlZC1wcmludGY9eWVzIgpAQCAtODYsMTAgKzg2LDEwIEBACiBDUFBGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0X21pcHMxNmUgPSAiIC1ETlZBTEdSSU5EPTEiCiAKICMgR0xpYiBnZW5lcmFsbHkgcmVxdWlyZXMgZ2V0dGV4dCB0byBiZSBwcmVzZW50IHNvIGZvciBVU0VfTkxTIHRvIHllcy4gIEZvcgotIyBuYXRpdmUgYnVpbGRzIGFzIGkxOG4gaXMgZGlzYWJsZWQgZ2xvYmFsbHkgd2UgY2FuIHRlbGwgaXQgdG8gdXNlIGEgZmFrZSBtc2dmbXQuCisjIG5hdGl2ZSBidWlsZHMgYXMgaTE4biBpcyBkaXNhYmxlZCBnbG9iYWxseSB3ZSBoYXZlIHRvIGFkZCBhIGdldHRleHQtbmF0aXZlIGRlcGVuZGVuY3kuCiBVU0VfTkxTX2NsYXNzLXRhcmdldCA9ICJ5ZXMiCiBVU0VfTkxTX2NsYXNzLW5hdGl2ZXNkayA9ICJ5ZXMiCi1DQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBhY19jdl9wYXRoX01TR0ZNVD0vYmluL2ZhbHNlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnZXR0ZXh0LW5hdGl2ZSIKIAogRVhFRVhUID0gIiIKIEVYRUVYVF9taW5ndzMyID0gIi5leGUiCkBAIC0xMTYsNyArMTE2LDcgQEAKIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKIAkjIFRlc3RzIGFyZSBvbmx5IGluc3RhbGxlZCBvbiB0YXJnZXRzLCBub3QgbmF0aXZlIGJ1aWxkcy4gIFNlcGFyYXRpbmcgdGhpcyBvdXQKLQkjIGtlZXBzIGdsaWItMi4wLW5hdGl2ZSBmcm9tIGRlcGVuZGluZyBvbiAke0RJU1RST19GRUFUVVJFU30KKwkjIGtlZXBzIGdsaWItMi4wLW5hdGl2ZSBmcm9tIGRlcGVuZGluZyBvbiBESVNUUk9fRkVBVFVSRVMKIAlpZiBbIC1mICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL2dkYnVzLXNlcmlhbGl6YXRpb24udGVzdCBdOyB0aGVuCiAJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgImZhbHNlIiwgInRydWUiLCBkKX07IHRoZW4KIAkJCXJtICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL2dkYnVzLXNlcmlhbGl6YXRpb24udGVzdApAQCAtMTQwLDYgKzE0MCw4IEBACiAgICAgICAgICAgICBzaGFyZWQtbWltZS1pbmZvIFwKICAgICAgICAgICAgIgogCisjIFdoZW4gaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvaXNzdWVzLzEzNDMgaXMKKyMgZml4ZWQgYWRkIGxvY2FsZS1iYXNlLXBsLXBsCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCiAgICAgICAgICAgICBnbGliYy1nY29udi11dGYtMTYgXAogICAgICAgICAgICAgZ2xpYmMtY2hhcm1hcC11dGYtOCBcCkBAIC0xNTIsNiArMTU0LDE3IEBACiAgICAgICAgICAgICBnbGliYy1nY29udi1pc284ODU5LTE1IFwKICAgICAgICAgICAgIGdsaWJjLWNoYXJtYXAtaW52YXJpYW50IFwKICAgICAgICAgICAgIGdsaWJjLWxvY2FsZWRhdGEtdHJhbnNsaXQtY2prLXZhcmlhbnRzIFwKKyAgICAgICAgICAgIGxvY2FsZS1iYXNlLXRyLXRyIFwKKyAgICAgICAgICAgIGxvY2FsZS1iYXNlLWx0LWx0IFwKKyAgICAgICAgICAgIGxvY2FsZS1iYXNlLWphLWpwLmV1Yy1qcCBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1mYS1pciBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1ydS1ydSBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1kZS1kZSBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1oci1ociBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1lbC1nciBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1mci1mciBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1lcy1lcyBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1lbi1nYiBcCiAgICAgICAgICAgICIKIAogSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImxpYmRpciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlOTJlYjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKLSMKLUFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKLQotaW5oZXJpdCBuYXRpdmUKLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCi0KLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCi1HTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC4oPyE5MClcZCspKikiCi0KLVNSQ1JFVl9nbGliYyA/PSAiZGYzZmY0ZTQ5ZDRlZTNjYmJkYWViMGIxY2I1ZGMyMzQ0YzA4YmU5OCIKLVNSQ1JFVl9sb2NhbGVkZWYgPz0gImRlNWJkYmQ1ZTc2YjU0MDNhNDE1MWI5YjlmOTU4YjZjY2EzNmIzZTciCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJjaGl2ZS1wYXRoLnBhdGNoIFwKLSIKLSMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCi0jCi1TUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgotQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNWI5NGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yOC5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWNmYzBlZDc3YTlmNjJmYTYyZWRlZDA0MmViZTMxZDcyIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKKyMKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKKworaW5oZXJpdCBuYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCisKK1NSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC4oPyE5MClcZCspKikiCisKK1NSQ1JFVl9nbGliYyA/PSAiM2MwM2JhY2EzN2ZkY2I1MmMzODgxZTY1M2NhMzkyYmJhN2E5OWMyYiIKK1NSQ1JFVl9sb2NhbGVkZWYgPz0gImMzMjg3NzcyMTljY2M0ODBiZTMxMTJjZjgwNzIxN2NhNmI1NzBiNjQiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKKyIKKyMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCisjCitTUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgorQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYwppbmRleCBhYTg3MWFjLi41MzZlZGZiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKQEAgLTksNiArOSw3IEBACiAjIGh0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29yZS8yMDE1LUphbnVhcnkvMTAwNjc5Lmh0bWwKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKIAogZGVsdGFzayBkb19mZXRjaAogZGVsdGFzayBkb191bnBhY2sKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWwuaW5jCmluZGV4IGI4NmUyZmIuLmFjZDBkNmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsLmluYwpAQCAtMSw0ICsxLDQgQEAKLURFUEVORFMgPSAibGludXgtbGliYy1oZWFkZXJzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIGxpYmdjYy1pbml0aWFsIgorREVQRU5EUyA9ICJsaW51eC1saWJjLWhlYWRlcnMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwgbGliZ2NjLWluaXRpYWwgbWFrZS1uYXRpdmUgYmlzb24tbmF0aXZlIgogUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1pbml0aWFsIgogCiBQQUNLQUdFUyA9ICIiCkBAIC0xMyw5ICsxMyw5IEBACiAJY2Znc2NyaXB0PWBweXRob24zIC1jICJpbXBvcnQgb3M7IHByaW50KG9zLnBhdGgucmVscGF0aCgnJHtTfScsICcuJykpImAvY29uZmlndXJlCiAJJGNmZ3NjcmlwdCAtLWhvc3Q9JHtUQVJHRVRfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSBcCiAJCS0tcHJlZml4PS91c3IgXAotCQktLXdpdGhvdXQtY3ZzIC0tZGlzYWJsZS1zYW5pdHktY2hlY2tzIFwKKwkJLS1kaXNhYmxlLXNhbml0eS1jaGVja3MgXAogCQktLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IFwKLQkJLS1lbmFibGUtaGFja2VyLW1vZGUgLS1lbmFibGUtYWRkb25zCisJCS0tZW5hYmxlLWhhY2tlci1tb2RlCiB9CiAKIGRvX2NvbXBpbGUgKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjcuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI4LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxkLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbGQuaW5jCmluZGV4IGMxZDYzNWQuLmJiMTY3YjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbGQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbGQuaW5jCkBAIC0xLDQzICsxLDE1IEBACi1kZWYgbGRfYXBwZW5kX2lmX3R1bmVfZXhpc3RzKGQsIGluZm9zLCBkaWN0KToKLSAgICB0dW5lID0gZC5nZXRWYXIoIkRFRkFVTFRUVU5FIikgb3IgIiIKLSAgICBsaWJkaXIgPSBkLmdldFZhcigiYmFzZV9saWJkaXIiKSBvciAiIgotICAgIGlmIHR1bmUgaW4gZGljdDoKLSAgICAgICAgaW5mb3NbJ2xkY29uZmlnJ10uYWRkKCd7IicgKyBsaWJkaXIgKyAnLycgKyBkaWN0W3R1bmVdWzBdICsgJyIsJyArIGRpY3RbdHVuZV1bMV0gKyAnIH0nKQotICAgICAgICBpbmZvc1snbGRkcmV3cml0ZSddLmFkZChsaWJkaXIrJy8nK2RpY3RbdHVuZV1bMF0pCitpbmhlcml0IGxpbnV4bG9hZGVyCisKK0dMSUJDX0dFVExPQURFUiA9ICIke0BnZXRfbGludXhsb2FkZXIoZCl9IgogCiBkZWYgZ2xpYmNfZGxfaW5mbyhkKToKLSAgICBsZF9pbmZvX2FsbCA9IHsKLSAgICAgICAgIm1pcHNhcmNoIjogWyJsZC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJtaXBzYXJjaHI2IjogWyJsZC1saW51eC1taXBzbjguc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAicG93ZXJwYyI6IFsibGQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAicG93ZXJwYy1uZiI6IFsibGQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAicG93ZXJwYzY0IjogWyJsZDY0LnNvLjEiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgInBvd2VycGM2NC1uZiI6IFsibGQ2NC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJjb3JlMi0zMiI6IFsibGQtbGludXguc28uMiIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAiY29yZTItNjQiOiBbImxkLWxpbnV4LXg4Ni02NC5zby4yIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJ4ODYiOiBbImxkLWxpbnV4LnNvLjIiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgIng4Ni02NCI6IFsibGQtbGludXgteDg2LTY0LnNvLjIiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgImk1ODYiOiBbImxkLWxpbnV4LnNvLjIiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgImNvcmVpNy0zMiI6IFsibGQtbGludXguc28uMiIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAiY29yZWk3LTY0IjogWyJsZC1saW51eC14ODYtNjQuc28uMiIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgIH0KLQogICAgIGluZm9zID0geydsZGNvbmZpZyc6c2V0KCksICdsZGRyZXdyaXRlJzpzZXQoKX0KLSAgICBsZF9hcHBlbmRfaWZfdHVuZV9leGlzdHMoZCwgaW5mb3MsIGxkX2luZm9fYWxsKQogCi0gICAgI0RFRkFVTFRUVU5FX01VTFRJTElCX09SSUdJTkFMCi0gICAgb3JpZ2luYWxfdHVuZT1kLmdldFZhcigiREVGQVVMVFRVTkVfTVVMVElMSUJfT1JJR0lOQUwiKQotICAgIGlmIG9yaWdpbmFsX3R1bmU6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJERUZBVUxUVFVORSIsIG9yaWdpbmFsX3R1bmUpCi0gICAgICAgIGxkX2FwcGVuZF9pZl90dW5lX2V4aXN0cyhsb2NhbGRhdGEsIGluZm9zLCBsZF9pbmZvX2FsbCkKKyAgICBsb2FkZXJzID0gYWxsX211bHRpbGliX3R1bmVfdmFsdWVzKGQsICJHTElCQ19HRVRMT0FERVIiKS5zcGxpdCgpCisgICAgZm9yIGxvYWRlciBpbiBsb2FkZXJzOgorICAgICAgICBpbmZvc1snbGRjb25maWcnXS5hZGQoJ3siJyArIGxvYWRlciArICciLCcgKyAiRkxBR19FTEZfTElCQzYiICsgJyB9JykKKyAgICAgICAgaW5mb3NbJ2xkZHJld3JpdGUnXS5hZGQobG9hZGVyKQogCi0gICAgdmFyaWFudHMgPSBkLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiKSBvciAiIgotICAgIGZvciBpdGVtIGluIHZhcmlhbnRzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgaXRlbQotICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBvdmVycmlkZXMpCi0gICAgICAgIGxkX2FwcGVuZF9pZl90dW5lX2V4aXN0cyhsb2NhbGRhdGEsIGluZm9zLCBsZF9pbmZvX2FsbCkKICAgICBpbmZvc1snbGRjb25maWcnXSA9ICcsJy5qb2luKGluZm9zWydsZGNvbmZpZyddKQogICAgIGluZm9zWydsZGRyZXdyaXRlJ10gPSAnICcuam9pbihpbmZvc1snbGRkcmV3cml0ZSddKQogICAgIHJldHVybiBpbmZvcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jCmluZGV4IGU1MGU1Y2YuLjFiNjc2ZGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKQEAgLTIxLDEzICsyMSwxMyBAQAogIyB0byBkZWNyZWFzZSBpbml0aWFsIGJvb3QgdGltZSBhbmQgYXZvaWQgbG9jYWxlZGVmIGJlaW5nIGtpbGxlZCBieSB0aGUgT09NCiAjIGtpbGxlciB3aGljaCB1c2VkIHRvIGVmZmVjdGl2ZWx5IGJyZWFrIGkxOG4gb24gbWFjaGluZXMgd2l0aCA8IDEyOE1CIFJBTS4KIAotIyBkZWZhdWx0IHRvIGRpc2FibGVkIAorIyBkZWZhdWx0IHRvIGRpc2FibGVkCiBFTkFCTEVfQklOQVJZX0xPQ0FMRV9HRU5FUkFUSU9OID89ICIwIgogRU5BQkxFX0JJTkFSWV9MT0NBTEVfR0VORVJBVElPTl9wbi1uYXRpdmVzZGstZ2xpYmMtbG9jYWxlID0gIjEiCiAKICNlbmFibGUgbG9jYWxlIGdlbmVyYXRpb24gb24gdGhlc2UgYXJjaGVzCiAjIEJJTkFSWV9MT0NBTEVfQVJDSEVTIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgcmVndWxhciBleHByZXNzaW9ucwotQklOQVJZX0xPQ0FMRV9BUkNIRVMgPz0gImFybS4qIGFhcmNoNjQgaVszLTZdODYgeDg2XzY0IHBvd2VycGMgbWlwcyBtaXBzNjQiCitCSU5BUllfTE9DQUxFX0FSQ0hFUyA/PSAiYXJtLiogYWFyY2g2NCBpWzMtNl04NiB4ODZfNjQgcG93ZXJwYyBtaXBzIG1pcHM2NCByaXNjdjMyIHJpc2N2NjQiCiAKICMgc2V0ICIxIiB0byB1c2UgY3Jvc3MtbG9jYWxlZGVmIGZvciBsb2NhbGUgZ2VuZXJhdGlvbgogIyBzZXQgIjAiIGZvciBxZW11IGVtdWxhdGlvbiBvZiBuYXRpdmUgbG9jYWxlZGVmIGZvciBsb2NhbGUgZ2VuZXJhdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjcuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjguYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI3LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI4LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwppbmRleCBjMWQxODZhLi5hOThhZTFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKQEAgLTEsNiArMSw2IEBACiBJTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKIAotUEFDS0FHRVMgPSAiJHtQTn0tZGJnIGNhdGNoc2VndiBzbG4gbnNjZCBsZGQgdHpjb2RlIGdsaWJjLXRocmVhZC1kYiAke1BOfS1waWMgbGliY2lkbiBsaWJtZW11c2FnZSBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MiCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYm5zcy1kYiBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MiCiAKICMgVGhlIGxkLnNvIGluIHRoaXMgZ2xpYmMgc3VwcG9ydHMgdGhlIEdOVV9IQVNICiBSUFJPVklERVNfJHtQTn0gPSAiZWdsaWJjIHJ0bGQoR05VX0hBU0gpIgpAQCAtMTQsNyArMTQsNyBAQAogUlBST1ZJREVTX2dsaWJjLXRocmVhZC1kYiA9ICJlZ2xpYmMtdGhyZWFkLWRiIgogUlBST1ZJREVTXyR7UE59LXBjcHJvZmlsZSA9ICJlZ2xpYmMtcGNwcm9maWxlIgogUlBST1ZJREVTXyR7UE59LWRiZyA9ICJlZ2xpYmMtZGJnIgotbGliY19iYXNlbGlicyA9ICIke2Jhc2VfbGliZGlyfS9saWJjcnlwdCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJjcnlwdC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYmMuc28uKiAke2Jhc2VfbGliZGlyfS9saWJjLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibSouc28uKiAke2Jhc2VfbGliZGlyfS9saWJtLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibXZlYy0qLnNvICR7YmFzZV9saWJkaXJ9L2xkKi5zby4qICR7YmFzZV9saWJkaXJ9L2xkLSouc28gJHtiYXNlX2xpYmRpcn0vbGlicHRocmVhZCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJwdGhyZWFkLSouc28gJHtiYXNlX2xpYmRpcn0vbGlicmVzb2x2Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYnJlc29sdi0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnJ0Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYnJ0LSouc28gJHtiYXNlX2xpYmRpcn0vbGlidXRpbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJ1dGlsLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNsKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zbC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm5zc19maWxlcyouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfZmlsZXMtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJuc3NfY29tcGF0Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zc19jb21wYXQtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJuc3NfZG5zKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zc19kbnMtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJkbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJkbC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYmFubCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJhbmwtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJCcm9rZW5Mb2NhbGUqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliQnJva2VuTG9jYWxlLSouc28iCitsaWJjX2Jhc2VsaWJzID0gIiR7YmFzZV9saWJkaXJ9L2xpYmMuc28uKiAke2Jhc2VfbGliZGlyfS9saWJjLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibSouc28uKiAke2Jhc2VfbGliZGlyfS9saWJtLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibXZlYy0qLnNvICR7YmFzZV9saWJkaXJ9L2xkKi5zby4qICR7YmFzZV9saWJkaXJ9L2xkLSouc28gJHtiYXNlX2xpYmRpcn0vbGlicHRocmVhZCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJwdGhyZWFkLSouc28gJHtiYXNlX2xpYmRpcn0vbGlicmVzb2x2Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYnJlc29sdi0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnJ0Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYnJ0LSouc28gJHtiYXNlX2xpYmRpcn0vbGlidXRpbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJ1dGlsLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNsKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zbC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm5zc19maWxlcyouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfZmlsZXMtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJuc3NfY29tcGF0Ki5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zc19jb21wYXQtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJuc3NfZG5zKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zc19kbnMtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJkbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJkbC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYmFubCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJhbmwtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJCcm9rZW5Mb2NhbGUqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliQnJva2VuTG9jYWxlLSouc28iCiBsaWJjX2Jhc2VsaWJzX2FwcGVuZF9hYXJjaDY0ID0gIiAvbGliL2xkLWxpbnV4LWFhcmNoNjQqLnNvLjEiCiBJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfYWFyY2g2NCA9ICIgbGliZGlyIgogCkBAIC0yMywxMiArMjMsMTQgQEAKIEZJTEVTX2xpYnNlZ2ZhdWx0ID0gIiR7YmFzZV9saWJkaXJ9L2xpYlNlZ0ZhdWx0KiIKIEZJTEVTX2xpYmNpZG4gPSAiJHtiYXNlX2xpYmRpcn0vbGliY2lkbi0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYmNpZG4uc28uKiIKIEZJTEVTX2xpYm1lbXVzYWdlID0gIiR7YmFzZV9saWJkaXJ9L2xpYm1lbXVzYWdlLnNvIgorRklMRVNfbGlibnNzLWRiID0gIiR7YmFzZV9saWJkaXJ9L2xpYm5zc19kYi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYm5zc19kYi0qLnNvICR7bG9jYWxzdGF0ZWRpcn0vZGIvTWFrZWZpbGUgJHtsb2NhbHN0YXRlZGlyfS9kYi9tYWtlZGJzLnNoIgorUkRFUEVORFNfbGlibnNzLWRiID0gIiR7UE59LXV0aWxzIgogRklMRVNfZ2xpYmMtZXh0cmEtbnNzID0gIiR7YmFzZV9saWJkaXJ9L2xpYm5zc18qLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNzXyouc28uKiIKIEZJTEVTX3NsbiA9ICIke2Jhc2Vfc2JpbmRpcn0vc2xuIgogRklMRVNfJHtQTn0tcGljID0gIiR7bGliZGlyfS8qX3BpYy5hICR7bGliZGlyfS8qX3BpYy5tYXAgJHtsaWJkaXJ9L2xpYmNfcGljLyoubyIKIEZJTEVTX2xpYnNvdHJ1c3MgPSAiJHtsaWJkaXJ9L2F1ZGl0L3NvdHJ1c3MtbGliLnNvIgogRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vcnBjZ2VuICR7bGliZGlyfS8qX25vbnNoYXJlZC5hICR7YmFzZV9saWJkaXJ9Lypfbm9uc2hhcmVkLmEgJHtiYXNlX2xpYmRpcn0vKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9Lypfbm9uc2hhcmVkLmEgJHtiYXNlX2xpYmRpcn0vKl9ub25zaGFyZWQuYSAke2Jhc2VfbGliZGlyfS8qLm8gJHtkYXRhZGlyfS9hY2xvY2FsIgogRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vKi5hICR7YmFzZV9saWJkaXJ9LyouYSIKIEZJTEVTX25zY2QgPSAiJHtzYmluZGlyfS9uc2NkKiAke3N5c2NvbmZkaXJ9L2luaXQuZC9uc2NkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbnNjZCogJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL25zY2QuY29uZiBcCiAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbnNjZC5jb25mICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOThfbnNjZCAke2xvY2Fsc3RhdGVkaXJ9L2RiL25zY2QiCkBAIC01MSw3ICs1Myw3IEBACiBTVU1NQVJZX2xkZCA9ICJwcmludCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMiCiBERVNDUklQVElPTl9sZGQgPSAiJHtiaW5kaXJ9L2xkZCBwcmludHMgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZvciBlYWNoIHByb2dyYW0gb3Igc2hhcmVkIGxpYnJhcnkgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuIgogU1VNTUFSWV8ke1BOfS11dGlscyA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBwcm92aWRlZCBieSBnbGliYyIKLURFU0NSSVBUSU9OXyR7UE59LXV0aWxzID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIGluY2x1ZGluZyBnZXRjb25mLCBpY29udiwgbG9jYWxlLCBnZW5jYXQsIHJwY2dlbiwgLi4uIgorREVTQ1JJUFRJT05fJHtQTn0tdXRpbHMgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgaW5jbHVkaW5nIGdldGNvbmYsIGljb252LCBsb2NhbGUsIGdlbmNhdCwgLi4uIgogREVTQ1JJUFRJT05fbGlic290cnVzcyA9ICJMaWJyYXJ5IHRvIHN1cHBvcnQgc290cnVzcyB3aGljaCB0cmFjZXMgY2FsbHMgdGhyb3VnaCBQTFRzIgogREVTQ1JJUFRJT05fdHpjb2RlID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCiAKQEAgLTU5LDcgKzYxLDYgQEAKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2xvY2FsdGltZQotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfQogCiAJIyByZW1vdmUgZW1wdHkgZ2xpYmMgZGlyCiAJaWYgWyAtZCAke0R9JHtsaWJleGVjZGlyfSBdOyB0aGVuCkBAIC03MSw3ICs3Miw2IEBACiAJaWYgWyAtZiAke0R9JHtiaW5kaXJ9L210cmFjZSBdOyB0aGVuCiAJCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnIC1lICcycyxleGVjLipwZXJsLGV4ZWMgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vbXRyYWNlCiAJZmkKLQlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vcnBjc3ZjL3JxdW90YSoKIAkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgogCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgogCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKQEAgLTk2LDYgKzk2LDcgQEAKIAlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2RiL25zY2QKIAlpbnN0YWxsIC1tIDA3NTUgJHtTfS9uc2NkL25zY2QuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnNjZAogCWluc3RhbGwgLW0gMDc1NSAke1N9L25zY2QvbnNjZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L25zY2QuY29uZgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21ha2VkYnMuc2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vZGIKIAlzZWQgLWkgInMlZGFlbW9uJXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1leGVjJWciICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uc2NkCiAJc2VkIC1pICJzfFwoZW5hYmxlLWNhY2hlXHRcK25ldGdyb3VwXHRcK1wpeWVzfFwxbm98IiAke0R9JHtzeXNjb25mZGlyfS9uc2NkLmNvbmYKIApAQCAtMjA2LDEwICsyMDcsMTEgQEAKIAlybSAtcmYgJHtEfS8ke2xvY2FsZWRpcn0KIAlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vbG9jYWxlCiAJaWYgWyAiJHtsaWJkaXJ9IiAhPSAiJHtleGVjX3ByZWZpeH0vbGliIiBdOyB0aGVuCi0JCWlmIFsgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9sb2NhbGUgXSA7IHRoZW4KLQkJCXJtIC1yZiAke0R9JHtleGVjX3ByZWZpeH0vbGliL2xvY2FsZQorCQlpZiBbIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIgXTsgdGhlbgogCQkJIyBlcnJvciBvdXQgaWYgZGlyZWN0b3J5IGlzbid0IGVtcHR5Ci0JCQlybSAtZiAke0R9JHtleGVjX3ByZWZpeH0vbGliCisJCQkjIHRoaXMgZGlyIHNob3VsZCBvbmx5IGNvbnRhaW4gbG9jYWxlIGRpcgorCQkJIyB3aGljaCBoYXMgYmVlbiBkZWxldGVkIGluIHRoZSBwcmV2aW91cyBzdGVwCisJCQlybWRpciAke0R9JHtleGVjX3ByZWZpeH0vbGliCiAJCWZpCiAJZmkKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI3LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yOC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwppbmRleCBjZTEyMjJiLi45OWM5MmNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwpAQCAtMTMsOSArMTMsNiBAQAogICAgICAgICAgICAgb3B0X2VmZmVjdGl2ZSA9IG9wdAogICAgIGlmIG9wdF9lZmZlY3RpdmUgPT0gIi1PMCI6CiAgICAgICAgIGJiLmZhdGFsKCIlcyBjYW4ndCBiZSBidWlsdCB3aXRoICVzLCB0cnkgLU8xIGluc3RlYWQiICUgKGQuZ2V0VmFyKCdQTicpLCBvcHRfZWZmZWN0aXZlKSkKLSAgICBpZiBvcHRfZWZmZWN0aXZlIGluICgiLU8iLCAiLU8xIiwgIi1PcyIpOgotICAgICAgICBiYi5ub3RlKCIlcyBkb2Vzbid0IGJ1aWxkIGNsZWFubHkgd2l0aCAlcywgYWRkaW5nIC1Xbm8tZXJyb3IgdG8gU0VMRUNURURfT1BUSU1JWkFUSU9OIiAlIChkLmdldFZhcignUE4nKSwgb3B0X2VmZmVjdGl2ZSkpCi0gICAgICAgIGQuYXBwZW5kVmFyKCJTRUxFQ1RFRF9PUFRJTUlaQVRJT04iLCAiIC1Xbm8tZXJyb3IiKQogfQogCiAjIHNpdGVjb25maWcuYmJjbGFzcyBydW5zIGNvbmZpZ3VyZSB3aGljaCBuZWVkcyBhIHdvcmtpbmcgY29tcGlsZXIKQEAgLTMzLDEyICszMCw4IEBACiAKICMgbnB0bCBuZWVkcyB1bndpbmQgc3VwcG9ydCBpbiBnY2MsIHdoaWNoIGNhbid0IGJlIGJ1aWx0IHdpdGhvdXQgZ2xpYmMuCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIGxpYmdjYy1pbml0aWFsIGxpbnV4LWxpYmMtaGVhZGVycyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWluaXRpYWwiCi0jIG5wdGwgbmVlZHMgbGliZ2NjIGJ1dCBkbG9wZW5zIGl0LCBzbyBvdXIgc2hsaWJzIGNvZGUgZG9lc24ndCBkZXRlY3QgdGhpcwotI1JERVBFTkRTXyR7UE59ICs9ICIke0BbJycsJ2xpYmdjYyddWyducHRsJyBpbiAnJHtHTElCQ19BRERPTlN9J119IgogCi1DUllQVFBST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCi1DUllQVFBST1ZJREVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjICR7Q1JZUFRQUk9WSURFU30iCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIgogUFJPVklERVMgKz0gInZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2xpYmljb252IgogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAogCkBAIC02Myw2ICs1Niw3IEBACiAjIGh0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29yZS8yMDE1LUphbnVhcnkvMTAwNjc5Lmh0bWwKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKIAogIyBnbGliYyB1c2VzIFBBUkFMTEVMTUZMQUdTIHZhcmlhYmxlIHRvIHBhc3MgcGFyYWxsZWwgYnVpbGQgaW5mbyBzbyB0cmFuc2ZlcgogIyBQQVJBTExFTF9NQUtFIGludG8gUEFSQUxMRUxNRkxBR1MgYW5kIGVtcHR5IG91dCBQQVJBTExFTF9NQUtFCkBAIC04MCw4ICs3NCw2IEBACiAJc2VkIC1lICJzI0BCQVNIQCMvYmluL3NoIyIgLWkgJHtTfS9lbGYvbGRkLmJhc2guaW4KIH0KIAotR0xJQkNfQURET05TID89ICJucHRsLGxpYmlkbiIKLQogIyBFbmFibGUgYmFja3RyYWNlIGZyb20gYWJvcnQoKQogZG9fY29uZmlndXJlX2FwcGVuZF9hcm0gKCkgewogCWVjaG8gIkNGTEFHUy1hYm9ydC5jID0gLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyIgPj4gJHtCfS9jb25maWdwYXJtcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAppbmRleCA4NjIzNGM5Li41ZGYyNmE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gYmQ5MWI2MGNlNmZmMDFmNDliMTczYjZiNDVlMjNjZTk0OTExYjJhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmQ1MWIzYWRkODlhNWNiMmQ4ZjQ0MDI5YTEwMjdjNzgwYjJhZmZmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjddIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMKLSB3ZWxsCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMgd2VsbAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCkBAIC0zMSwxMCArMzAsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDc1NTRhOTliNWEuLmE3M2QxMWE2MmYgMTAwNjQ0CitpbmRleCBjNTFlNGIzNzE4Li40NGJiYjY5ZGM0IDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTIwMDcsNiArMjAwNywxNCBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMjA4NSw2ICsyMDg1LDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgCkBAIC00OSw3ICs0OCw3IEBACiAgI2lmZGVmIFVTRV9MRENPTkZJRwogICAgICAgIGlmIChmZCA9PSAtMQogIAkgICYmIChfX2dsaWJjX2xpa2VseSAoKG1vZGUgJiBfX1JUTERfU0VDVVJFKSA9PSAwKQotQEAgLTIwNjUsMTQgKzIwNzMsNiBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMjE0MywxNCArMjE1MSw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKICAJfQogICNlbmRpZgogIApAQCAtNjQsNiArNjMsMyBAQAogICAgICAgIC8qIEFkZCBhbm90aGVyIG5ld2xpbmUgd2hlbiB3ZSBhcmUgdHJhY2luZyB0aGUgbGlicmFyeSBsb2FkaW5nLiAgKi8KICAgICAgICBpZiAoX19nbGliY191bmxpa2VseSAoR0xSTyhkbF9kZWJ1Z19tYXNrKSAmIERMX0RFQlVHX0xJQlMpKQogIAlfZGxfZGVidWdfcHJpbnRmICgiXG4iKTsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKaW5kZXggODk5NDgxZi4uZGFhZGVjNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIDUwNzM2ZjdmYzFmZGM5ZTFmN2MwNWYxZmVjNzVjOTc3ZDliZTkyMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZkYzhhMzNhYzJjODFhMDIzN2I4YTZkOGIxYWFjN2YxY2RiYjQ2YWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MDowMCArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzI3XSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkCi0gU0RLCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQgU0RLCiAKIFdoZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKIG9yaWdpbmFsIGZpeGVkIGxvY2F0aW9uLCB0aGUgZHluYW1pYyBsb2FkZXIgd2lsbCBjcmFzaCBpbiBvcGVuX3BhdGgKQEAgLTIyLDEwICsyMSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggYTczZDExYTYyZi4uNjJlM2VlZTQ3OCAxMDA2NDQKK2luZGV4IDQ0YmJiNjlkYzQuLjc0ZTJlNWU5NjIgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMTcwNyw3ICsxNzA3LDE5IEBAIG9wZW5fcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGludCBtb2RlLAorQEAgLTE3ODUsNyArMTc4NSwxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKICAgICAgICAgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHJ0bGQgaXMgcnVuIGRpcmVjdGx5LiAgKi8KICAgICAgcmV0dXJuIC0xOwogIApAQCAtNDUsNiArNDQsMyBAQAogICAgZG8KICAgICAgewogICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmluZGV4IDAzZjk5OTEuLmUwODI1NDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSA2OTVlMWNiZmY2ZWU2ZGIzNDM1YzMzZTU1MzExYzY3YWRmNDQ0NzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNTVkZDQ2Yjc5MzE2OGZiMDhlNDQ5MTMxNTMwMTBiMDg4MDExYmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTE6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8yN10gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAotIHBhdGhzCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwgcGF0aHMKIAogVGhpcyBwYXRjaCBwdXRzIHRoZSBkeW5hbWljIGxvYWRlciBwYXRoIGluIHRoZSBiaW5hcmllcywgU1lTVEVNX0RJUlMgc3RyaW5ncwogYW5kIGxlbmd0aHMgYXMgd2VsbCBhcyBsZC5zby5jYWNoZSBwYXRoIGluIHRoZSBkeW5hbWljIGxvYWRlciB0byBzcGVjaWZpYwpAQCAtNDEsMTAgKzQwLDEwIEBACiAgX2RsX2NhY2hlX2xpYmNtcCAoY29uc3QgY2hhciAqcDEsIGNvbnN0IGNoYXIgKnAyKQogIHsKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggNjJlM2VlZTQ3OC4uNmRkYmE3MzY1MCAxMDA2NDQKK2luZGV4IDc0ZTJlNWU5NjIuLjhmMTkxODZlMWMgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMTA5LDggKzEwOSw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CitAQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CiAgICAgZ2VuLXRydXN0ZWQtZGlycy5hd2suICAqLwogICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKICAKQEAgLTgxLDEwICs4MCwxMCBAQAogICAgIGEgcGxhdGZvcm0uICAqLwogIHN0YXRpYyBpbnQKIGRpZmYgLS1naXQgYS9lbGYvcnRsZC5jIGIvZWxmL3J0bGQuYwotaW5kZXggNDUzZjU2ZWIxNS4uMDhlMGM0Yzk0YiAxMDA2NDQKK2luZGV4IDFiMGM3NDczOWYuLmE3MGE2MmQzMWUgMTAwNjQ0CiAtLS0gYS9lbGYvcnRsZC5jCiArKysgYi9lbGYvcnRsZC5jCi1AQCAtMTI4LDYgKzEyOCw3IEBAIGRzb19uYW1lX3ZhbGlkX2Zvcl9zdWlkIChjb25zdCBjaGFyICpwKQorQEAgLTEzMCw2ICsxMzAsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKICAgICAgfQogICAgcmV0dXJuICpwICE9ICdcMCc7CiAgfQpAQCAtOTIsNyArOTEsNyBAQAogIAogIC8qIExEX0FVRElUIHZhcmlhYmxlIGNvbnRlbnRzLiAgTXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZQogICAgIGF1ZGl0X2xpc3QgYmVsb3cuICAqLwotQEAgLTEwMDAsMTIgKzEwMDEsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCitAQCAtMTAwMSwxMiArMTAwMiwxMiBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKICAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAogICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKICAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXApAQCAtMTA4LDcgKzEwNyw3IEBACiAgICAgICAgKytfZGxfc2tpcF9hcmdzOwogICAgICAgIC0tX2RsX2FyZ2M7CiBkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY29uZi5jIGIvaWNvbnYvZ2NvbnZfY29uZi5jCi1pbmRleCBkNmNmOWQyYTNlLi45ZmNmOTcwMTQ0IDEwMDY0NAoraW5kZXggZjE3M2NkZTcxYi4uNWMzMjA1MDI2ZiAxMDA2NDQKIC0tLSBhL2ljb252L2djb252X2NvbmYuYwogKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCiBAQCAtMzYsNyArMzYsNyBAQApAQCAtMTM1LDYgKzEzNCwzIEBACiAgI2lmbmRlZiBhZGRfc3lzdGVtX2RpcgogICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQogICNlbmRpZgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCmluZGV4IGY5ZDcwYzIuLjFhZTJlMzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDJiYWZkYmQ3MDY3Nzk0YzZhMjRlNWU4NTYwOGMwZWM0NjM4YzU2NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEyMzc1NTNjY2QxNTI3NjQ2MmJlMjAyMzA1N2EwMTdmYThlZTVkN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozNTozNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzI3XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CiAKIFRoZSBmaXggY29uc2lzdCBvZiBhbGxvd2luZyA2NGJpdCBhdG9taWMgb3BzIGZvciB4ODYuCiBUaGlzIHNob3VsZCBiZSBzYWZlIGZvciBpNTg2IGFuZCBuZXdlciBDUFVzLgpAQCAtMjksNiArMjksMyBAQAogICNkZWZpbmUgVVNFX0FUT01JQ19DT01QSUxFUl9CVUlMVElOUyAwCiAgI2RlZmluZSBBVE9NSUNfRVhDSEFOR0VfVVNFU19DQVMgMAogIAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5MTA2ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ODQgKzAsMCBAQAotRnJvbSA2NjFhZGZlOWMyMjBkMTA2MTdiZjZiYjI4MzgyNzQ3MWMzOTU2YjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yN10gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICAgICAgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgICAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgICAgIHwgMTAxICsrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgICAgICB8IDEzNCArKysrKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgICAgICB8IDEwMSArKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICAgICAgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgICAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgICAgIHwgMTAxICsrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgICAgICB8IDEzNCArKysrKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgICAgICB8IDEwMSArKysrKysrKysrKysrKysrCi0gLi4uL3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyAgfCAgIDEgKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgICAgIHwgICAyICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzICAgICB8ICAgMSArCi0gLi4uL3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIC4uLi9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAuLi4vc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gLi4uL3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIDE5IGZpbGVzIGNoYW5nZWQsIDE0MTggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYjEwM2I0ZGVhNQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNjRkYjE3ZmFkYQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxLDIgQEAKLSsjIGUzMDBjMyBpcyBhIHZhcmlhbnQgb2YgNjAzZSBzbyB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9ucyBmb3Igc3FydAotK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uN2VhYzVmY2YwMgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNjRiMmE3NzAwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hMjU5MzQ0NjdiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hN2JjODU0YmU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4wNGZmOGNjMTgxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdQotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTNmMmVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSBlMWRjODVhZjE4MDBhZmE0ZmJmNGViNWE1OWNjNDEwMjU0OTVhZjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo1NToxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IE1ha2UgcmVsb2NhdGFibGUgaW5zdGFsbCBmb3IgbG9jYWxlcworCitUaGUgZ2xpYmMgbG9jYWxlIHBhdGggaXMgaGFyZC1jb2RlZCB0byB0aGUgaW5zdGFsbCBwcmVmaXgsIGJ1dCBpbiBTREtzIHdlIG5lZWQKK3RvIGJlIGFibGUgdG8gcmVsb2NhdGUgdGhlIGJpbmFyaWVzLiAgRXhwYW5kIHRoZSBzdHJpbmdzIHRvIDRLIGFuZCBwdXQgdGhlbSBpbiBhCittYWdpYyBzZWdtZW50IHRoYXQgd2UgY2FuIHJlbG9jYXRlIGF0IGluc3RhbGwgdGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvZmluZGxvY2FsZS5jICB8IDQgKystLQorIGxvY2FsZS9sb2FkYXJjaGl2ZS5jIHwgMiArLQorIGxvY2FsZS9sb2NhbGVpbmZvLmggIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2ZpbmRsb2NhbGUuYyBiL2xvY2FsZS9maW5kbG9jYWxlLmMKK2luZGV4IDg3MmNhZGI1YjkuLmRkNjUxZTA3ZjUgMTAwNjQ0CistLS0gYS9sb2NhbGUvZmluZGxvY2FsZS5jCisrKysgYi9sb2NhbGUvZmluZGxvY2FsZS5jCitAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqY29uc3QgX25sX0NbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKyAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLworIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07CisgCistY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOworK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSOworIAorIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90CisgICAgZW1wdHkuICAqLworQEAgLTE2Nyw3ICsxNjcsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoLCBzaXplX3QgbG9jYWxlX3BhdGhfbGVuLAorIAorICAgICAgIC8qIE5vdGhpbmcgaW4gdGhlIGFyY2hpdmUuICBTZXQgdGhlIGRlZmF1bHQgcGF0aCB0byBzZWFyY2ggYmVsb3cuICAqLworICAgICAgIGxvY2FsZV9wYXRoID0gX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7CistICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc2l6ZW9mIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOworKyAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHN0cmxlbihsb2NhbGVfcGF0aCkgKyAxOworICAgICB9CisgICBlbHNlCisgICAgIC8qIFdlIHJlYWxseSBoYXZlIHRvIGxvYWQgc29tZSBkYXRhLiAgRmlyc3Qgc2VlIHdoZXRoZXIgdGhlIG5hbWUgaXMKK2RpZmYgLS1naXQgYS9sb2NhbGUvbG9hZGFyY2hpdmUuYyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCitpbmRleCA1MTZkMzBkOGQxLi45YmZiZTFhNWRkIDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMKKysrKyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCitAQCAtNDIsNyArNDIsNyBAQAorIAorIAorIC8qIE5hbWUgb2YgdGhlIGxvY2FsZSBhcmNoaXZlIGZpbGUuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVtdID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKKytzdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKKyAKKyAvKiBTaXplIG9mIGluaXRpYWwgbWFwcGluZyB3aW5kb3csIG9wdGltYWwgaWYgbGFyZ2UgZW5vdWdoIHRvCisgICAgY292ZXIgdGhlIGhlYWRlciBwbHVzIHRoZSBpbml0aWFsIGxvY2FsZS4gICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2xvY2FsZWluZm8uaCBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKK2luZGV4IDY4ODIyYTYzMTkuLjUzN2JjMzUxNDkgMTAwNjQ0CistLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCisrKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCitAQCAtMzI1LDcgKzMyNSw3IEBAIF9ubF9sb29rdXBfd29yZCAobG9jYWxlX3QgbCwgaW50IGNhdGVnb3J5LCBpbnQgaXRlbSkKKyB9CisgCisgLyogRGVmYXVsdCBzZWFyY2ggcGF0aCBpZiBubyBMT0NQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW47CisrZXh0ZXJuIGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbjsKKyAKKyAvKiBMb2FkIHRoZSBsb2NhbGUgZGF0YSBmb3IgQ0FURUdPUlkgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKk5BTUUuCisgICAgSWYgKk5BTUUgaXMgIiIsIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXMgc3BlY2lmaWVkIGJ5IFBPU0lYLCBhbmQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcxNzAwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMTU4MSBAQAorRnJvbSBkMjNjNTc3YjBiNzBiMzQzMzU5NzFhYmFmM2Y1MGU2MTdkZGE2MTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyAgICB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgIHwgICAxICsKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzICAgICAgfCAgIDIgKworIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgICAgICB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAxOSBmaWxlcyBjaGFuZ2VkLCAxNDE4IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmIxMDNiNGRlYTUKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjY0ZGIxN2ZhZGEKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcworQEAgLTAsMCArMSwyIEBACisrIyBlMzAwYzMgaXMgYSB2YXJpYW50IG9mIDYwM2Ugc28gdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbnMgZm9yIHNxcnQKKytwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZDUwZmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDYxNTU5OGZjY2E2NDQ2MWE3MWQ4NGY3NTZkNzUzNzRmMDJkOTE0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzI3XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCi0gbmFtZXMKLQotVGhpcyBib2x0cyBpbiBhIGhvb2sgZm9yIE9FIHRvIHBhc3MgaXRzIG93biB2ZXJzaW9uIG9mIGludGVycHJldGVyCi1uYW1lcyBpbnRvIGdsaWJjIGVzcGVjaWFsbHkgZm9yIG11bHRpbGliIGNhc2UsIHdoZXJlIGl0IGRpZmZlcnMgZnJvbSBhbnkKLW90aGVyIGRpc3Ryb3MKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTGlhbmhhbyBMdSA8bGlhbmhhby5sdUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZWxmL3JlYWRsaWIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZWxmL3JlYWRsaWIuYyBiL2VsZi9yZWFkbGliLmMKLWluZGV4IDU3M2MwMTQ3NmMuLmQ4Yzc0MTIyODcgMTAwNjQ0Ci0tLS0gYS9lbGYvcmVhZGxpYi5jCi0rKysgYi9lbGYvcmVhZGxpYi5jCi1AQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGludGVycHJldGVyc1tdID0KLSAjaWZkZWYgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCi0gICBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKLSAjZW5kaWYKLSsgIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUwotIH07Ci0gCi0gc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBrbm93bl9saWJzW10gPQotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIzNGRmMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi1Gcm9tIDgwNGI3M2FlMjk1YmRmZGEyOTM0MWU4OWYyZDBjMWI5OTQ5MmRjOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNTowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA3LzI3XSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCi0KLW9uIHBwYyBmaXhlcyB0aGUgZXJyb3JzIGxpa2UgYmVsb3cKLXwgLi8ubGlicy9saWJwdWxzZWNvcmUtMS4xLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwotfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQ2hhbmdlTG9nCi0KLTIwMTItMDEtMDYgIEtoZW0gUmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jOiBBZGQgX18qX2Zpbml0ZSBhbGlhcy4KLSAgICAgICAgUmVtb3ZlIGNydWZ0LgotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jOiBEaXR0by4KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jOiBEaXR0by4KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYzogRGl0dG8uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKLSAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBkb3VibGUKLSBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0tI2Vsc2UKLS1kb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLS0gICAgIGRvdWJsZSBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBmbG9hdAotIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLS0jZWxzZQotLWZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotLSAgICAgZmxvYXQgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBkb3VibGUKLSBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0tI2Vsc2UKLS1kb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLS0gICAgIGRvdWJsZSBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLSBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0tI2Vsc2UKLS1mbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLS0gICAgIGZsb2F0IGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg3MTM0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gZDY1ZjZlZTIxNGQ3ZDkxNDQ1ZmNlYWJjNmE1ZDZiZjU1YjBlOGQ0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjExOjIyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24gbmFtZXMKKworVGhpcyBib2x0cyBpbiBhIGhvb2sgZm9yIE9FIHRvIHBhc3MgaXRzIG93biB2ZXJzaW9uIG9mIGludGVycHJldGVyCituYW1lcyBpbnRvIGdsaWJjIGVzcGVjaWFsbHkgZm9yIG11bHRpbGliIGNhc2UsIHdoZXJlIGl0IGRpZmZlcnMgZnJvbSBhbnkKK290aGVyIGRpc3Ryb3MKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTGlhbmhhbyBMdSA8bGlhbmhhby5sdUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL3JlYWRsaWIuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZWxmL3JlYWRsaWIuYyBiL2VsZi9yZWFkbGliLmMKK2luZGV4IDU3M2MwMTQ3NmMuLmQ4Yzc0MTIyODcgMTAwNjQ0CistLS0gYS9lbGYvcmVhZGxpYi5jCisrKysgYi9lbGYvcmVhZGxpYi5jCitAQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGludGVycHJldGVyc1tdID0KKyAjaWZkZWYgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCisgICBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKKyAjZW5kaWYKKysgIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUworIH07CisgCisgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBrbm93bl9saWJzW10gPQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0MzY0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi1Gcm9tIDFhNTMwODQyNDlkOWRhZTFlZjQyODEyNDZlZmM4OTljOGY5ZDYzZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzI3XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCi0gb3V0IF9fc2xvdyB2ZXJzaW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgIDggKysrKysrKy0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMTQgKysrKysrKysrKystLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAgOCArKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOCArKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDkgKysrKysrKystCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQotIDEyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEzYWIuLmI4MTJjZjE3MDUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05Myw0ICs5MywxMCBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjFjMzQyNDRiZDggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li44MTI2NTM1NThmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2YzNlLi4xM2E4MTk3M2UzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTkzLDQgKzkzLDExIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGQ5NmViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKQEAgLTAsMCArMSwyMDUgQEAKK0Zyb20gZWUzYWExNDY0ZjQwYzkxNmM2MmNmMzI2YmY0YzE4ZjhiNzFhMjI5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKKworb24gcHBjIGZpeGVzIHRoZSBlcnJvcnMgbGlrZSBiZWxvdworfCAuLy5saWJzL2xpYnB1bHNlY29yZS0xLjEuc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCit8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitDaGFuZ2VMb2cKKworMjAxMi0wMS0wNiAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmM6IEFkZCBfXypfZmluaXRlIGFsaWFzLgorICAgICAgICBSZW1vdmUgY3J1ZnQuCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmM6IERpdHRvLgorICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmM6IERpdHRvLgorICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jOiBEaXR0by4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKworIDEyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGRvdWJsZQorIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKy0jZWxzZQorLWRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorLSAgICAgZG91YmxlIGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisgICAgc3F1YXJlIHJvb3QuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGZsb2F0CisgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorLSNlbHNlCistZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCistICAgICBmbG9hdCBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGRvdWJsZQorIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKy0jZWxzZQorLWRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorLSAgICAgZG91YmxlIGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorICAgIHNxdWFyZSByb290LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBmbG9hdAorIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKy0jZWxzZQorLWZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorLSAgICAgZmxvYXQgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE0OTg1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gNDgyNjJiNmRkYTkzNTI3OGE0MDM3NGRkZjAwODBhYjZjYzk5OTU4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjIwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMjddIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcwotIDoKLQotICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKLSAgaXQgZGllcyB3aXRoIGEgU0lHU0VHViBiZWZvcmUgcmVhY2hpbmcgbWFpbigpLgotCi0gIExpYnVzdC5zbyBkZXBlbmRzIG9uIGxpYnVyY3UtYnAuc28gZnJvbSB0aGUgdXNlcm1vZGUtcmN1IHBhY2thZ2UuCi0gIEFsdGhvdWdoIGxpYnVzdC5zbyBpcyBub3QgcHJlbGlua2VkLCBsaWJ1cmN1LWJwLnNvIElTIHByZWxpbmtlZDsgdGhpcwotICBpcyBjcml0aWNhbC4KLQotICBMaWJ1c3Quc28gdXNlcyBhIFRMUyAvIF9fdGhyZWFkIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCBpbiBsaWJ1cmN1LQotICBicC5zby4gIFRoZXJlIGFyZSBzcGVjaWFsIEFSTS1zcGVjaWZpYyByZWxvY2F0aW9uIHR5cGVzIHRoYXQgYWxsb3cgdHdvCi0gIHNoYXJlZCBsaWJyYXJpZXMgdG8gc2hhcmUgdGhyZWFkLXNwZWNpZmljIGRhdGEuICBUaGlzIGlzIGNyaXRpY2FsIHRvby4KLQotICBPbmUgbW9yZSBjcml0aWNhbCBpc3N1ZTogYWx0aG91Z2ggbGlidXJjdS1icC5zbyBpcyBwcmVsaW5rZWQsIHdlIGNhbid0Ci0gIGxvYWQgaXQgYXQgaXRzIHByZWxpbmtlZCBhZGRyZXNzLCBiZWNhdXNlIHdlIGFsc28gbGluayBhZ2FpbnN0Ci0gIGxpYnJ0LnNvLCBhbmQgbGlicnQuc28gdXNlcyB0aGF0IGFkZHJlc3MuCi0KLSAgVGhlIGR5bmFtaWMgbGlua2VyIGlzIGZvcmNlZCB0byByZWxpbmsgbGlidXJjdS1icC5zbyBhdCBhIGRpZmZlcmVudAotICBhZGRyZXNzLiAgSW4gdGhlIGNvdXJzZSBvZiByZWxpbmtpbmcsIGl0IHByb2Nlc3NlcyB0aGUgc3BlY2lhbCBBUk0KLSAgcmVsb2NhdGlvbiByZWNvcmQgbWVudGlvbmVkIGFib3ZlLiAgVGhlIHByZWxpbmtlciBoYXMgYWxyZWFkeSBmaWxsZWQKLSAgaW4gdGhlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhIHNob3J0IG9mZnNldCBpbnRvIGEgdGFibGUgb2YgdGhyZWFkLQotICBzcGVjaWZpYyBkYXRhIHRoYXQgaXMgYWxsb2NhdGVkIHBlci10aHJlYWQgZm9yIGVhY2ggbGlicmFyeSB0aGF0IHVzZXMKLSAgVExTLiAgQmVjYXVzZSB0aGUgbm9ybWFsIGJlaGF2aW9yIG9mIGEgcmVsb2NhdGlvbiBpcyB0byBhZGQgdGhlIHN5bWJvbAotICB2YWx1ZSB0byBhbiBhZGRlbmQgc3RvcmVkIGF0IHRoZSBhZGRyZXNzIGJlaW5nIHJlbG9jYXRlZCwgd2UgZW5kIHVwCi0gIGFkZGluZyB0aGUgc2hvcnQgb2Zmc2V0IHRvIGl0c2VsZiwgZG91YmxpbmcgaXQuCi0KLSAgTm93IHdlIGhhdmUgYW4gYXdrd2FyZCBzaXR1YXRpb24uICBUaGUgbGlidXN0LnNvIGxpYnJhcnkgZG9lc24ndCBrbm93Ci0gIGFib3V0IHRoZSBhZGRlbmQsIHNvIGl0cyBUTFMgZGF0YSBmb3IgdGhpcyBlbGVtZW50IGlzIGNvcnJlY3QuICBUaGUKLSAgbGlidXJjdS1icC5zbyBsaWJyYXJ5IGhhcyBhIGRpZmZlcmVudCBvZmZzZXQgZm9yIHRoZSBlbGVtZW50LiAgV2hlbiB3ZQotICBnbyB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50IGZvciB0aGUgZmlyc3QgdGltZSBpbiBsaWJ1cmN1LWJwLnNvLCB3ZQotICB3cml0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgcmVzdWx0IGF0IHRoZSBkb3VibGVkIChicm9rZW4pIG9mZnNldC4KLSAgTGF0ZXIsIHdoZW4gd2UgcmVmZXIgdG8gdGhlIGFkZHJlc3MgZnJvbSBsaWJ1c3Quc28sIHdlIGNoZWNrIHRoZSB2YWx1ZQotICBhdCB0aGUgY29ycmVjdCBvZmZzZXQsIGJ1dCBpdCdzIE5VTEwsIHNvIHdlIGVhdCBob3QgU0lHU0VHVi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBEaW51IDxhbmRyZWkuYWRyaWFueC5kaW51QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLWluZGV4IDhhMDBlYWI1ZTMuLjYyM2VkY2IxYmQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLSsrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotQEAgLTUxMCw3ICs1MTAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAotIAotIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKLSAJICBpZiAoc3ltICE9IE5VTEwpCi0tCSAgICAqcmVsb2NfYWRkciArPSBzeW0tPnN0X3ZhbHVlOwotKwkgICAgKnJlbG9jX2FkZHIgPSBzeW0tPnN0X3ZhbHVlOwotIAkgIGJyZWFrOwotIAotIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGI0N2NkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTAsMCArMSwzODQgQEAKK0Zyb20gMTdlODJkNTk0YjJkOGQzYTY5OThmYWNlOTUzMzgyZjlkMTRmYjA0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE2OjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwgb3V0CisgX19zbG93IHZlcnNpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCAgOCArKysrKysrLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxNCArKysrKysrKysrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTQgKysrKysrKysrKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8ICA4ICsrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA4ICsrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOSArKysrKysrKy0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTQgKysrKysrKysrKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMTIgKysrKysrKysrKy0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK2luZGV4IDE3OTVmZDZjM2UuLmRhYTgzZjNmZTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworaW5kZXggYTkxN2YzMTNhYi4uYjgxMmNmMTcwNSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTkzLDQgKzkzLDEwIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9Cisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uMWMzNDI0NGJkOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjgxMjY1MzU1OGYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDE3OTVmZDZjM2UuLjEzYTgxOTczZTMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggYTkxN2YzMTNhYi4uZmFlMmQ4MTIxMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIHNxdWFyZSByb290LiAgKi8KKyAKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTMsNCArOTMsMTEgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZWYzYTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIGZlOGQ5Yjc2ZTdjODgxY2MwYTBiNzI4ZWEyYmQ2MzdmYWZjYTA5NzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyMDowOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMgOgorCisgIFdlIGJ1aWxkIHNvbWUgcmFuZG9tIHByb2dyYW0gYW5kIGxpbmsgaXQgd2l0aCAtbHVzdC4gIFdoZW4gd2UgcnVuIGl0LAorICBpdCBkaWVzIHdpdGggYSBTSUdTRUdWIGJlZm9yZSByZWFjaGluZyBtYWluKCkuCisKKyAgTGlidXN0LnNvIGRlcGVuZHMgb24gbGlidXJjdS1icC5zbyBmcm9tIHRoZSB1c2VybW9kZS1yY3UgcGFja2FnZS4KKyAgQWx0aG91Z2ggbGlidXN0LnNvIGlzIG5vdCBwcmVsaW5rZWQsIGxpYnVyY3UtYnAuc28gSVMgcHJlbGlua2VkOyB0aGlzCisgIGlzIGNyaXRpY2FsLgorCisgIExpYnVzdC5zbyB1c2VzIGEgVExTIC8gX190aHJlYWQgdmFyaWFibGUgdGhhdCBpcyBkZWZpbmVkIGluIGxpYnVyY3UtCisgIGJwLnNvLiAgVGhlcmUgYXJlIHNwZWNpYWwgQVJNLXNwZWNpZmljIHJlbG9jYXRpb24gdHlwZXMgdGhhdCBhbGxvdyB0d28KKyAgc2hhcmVkIGxpYnJhcmllcyB0byBzaGFyZSB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRoaXMgaXMgY3JpdGljYWwgdG9vLgorCisgIE9uZSBtb3JlIGNyaXRpY2FsIGlzc3VlOiBhbHRob3VnaCBsaWJ1cmN1LWJwLnNvIGlzIHByZWxpbmtlZCwgd2UgY2FuJ3QKKyAgbG9hZCBpdCBhdCBpdHMgcHJlbGlua2VkIGFkZHJlc3MsIGJlY2F1c2Ugd2UgYWxzbyBsaW5rIGFnYWluc3QKKyAgbGlicnQuc28sIGFuZCBsaWJydC5zbyB1c2VzIHRoYXQgYWRkcmVzcy4KKworICBUaGUgZHluYW1pYyBsaW5rZXIgaXMgZm9yY2VkIHRvIHJlbGluayBsaWJ1cmN1LWJwLnNvIGF0IGEgZGlmZmVyZW50CisgIGFkZHJlc3MuICBJbiB0aGUgY291cnNlIG9mIHJlbGlua2luZywgaXQgcHJvY2Vzc2VzIHRoZSBzcGVjaWFsIEFSTQorICByZWxvY2F0aW9uIHJlY29yZCBtZW50aW9uZWQgYWJvdmUuICBUaGUgcHJlbGlua2VyIGhhcyBhbHJlYWR5IGZpbGxlZAorICBpbiB0aGUgaW5mb3JtYXRpb24sIHdoaWNoIGlzIGEgc2hvcnQgb2Zmc2V0IGludG8gYSB0YWJsZSBvZiB0aHJlYWQtCisgIHNwZWNpZmljIGRhdGEgdGhhdCBpcyBhbGxvY2F0ZWQgcGVyLXRocmVhZCBmb3IgZWFjaCBsaWJyYXJ5IHRoYXQgdXNlcworICBUTFMuICBCZWNhdXNlIHRoZSBub3JtYWwgYmVoYXZpb3Igb2YgYSByZWxvY2F0aW9uIGlzIHRvIGFkZCB0aGUgc3ltYm9sCisgIHZhbHVlIHRvIGFuIGFkZGVuZCBzdG9yZWQgYXQgdGhlIGFkZHJlc3MgYmVpbmcgcmVsb2NhdGVkLCB3ZSBlbmQgdXAKKyAgYWRkaW5nIHRoZSBzaG9ydCBvZmZzZXQgdG8gaXRzZWxmLCBkb3VibGluZyBpdC4KKworICBOb3cgd2UgaGF2ZSBhbiBhd2t3YXJkIHNpdHVhdGlvbi4gIFRoZSBsaWJ1c3Quc28gbGlicmFyeSBkb2Vzbid0IGtub3cKKyAgYWJvdXQgdGhlIGFkZGVuZCwgc28gaXRzIFRMUyBkYXRhIGZvciB0aGlzIGVsZW1lbnQgaXMgY29ycmVjdC4gIFRoZQorICBsaWJ1cmN1LWJwLnNvIGxpYnJhcnkgaGFzIGEgZGlmZmVyZW50IG9mZnNldCBmb3IgdGhlIGVsZW1lbnQuICBXaGVuIHdlCisgIGdvIHRvIGluaXRpYWxpemUgdGhlIGVsZW1lbnQgZm9yIHRoZSBmaXJzdCB0aW1lIGluIGxpYnVyY3UtYnAuc28sIHdlCisgIHdyaXRlIHRoZSBhZGRyZXNzIG9mIHRoZSByZXN1bHQgYXQgdGhlIGRvdWJsZWQgKGJyb2tlbikgb2Zmc2V0LgorICBMYXRlciwgd2hlbiB3ZSByZWZlciB0byB0aGUgYWRkcmVzcyBmcm9tIGxpYnVzdC5zbywgd2UgY2hlY2sgdGhlIHZhbHVlCisgIGF0IHRoZSBjb3JyZWN0IG9mZnNldCwgYnV0IGl0J3MgTlVMTCwgc28gd2UgZWF0IGhvdCBTSUdTRUdWLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmVpIERpbnUgPGFuZHJlaS5hZHJpYW54LmRpbnVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAoraW5kZXggMWE0ZmQzZjE3Yi4uYTAyYzQ3NTcxYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAorKysrIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCitAQCAtNTEwLDcgKzUxMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCisgCisgCWNhc2UgUl9BUk1fVExTX0RUUE9GRjMyOgorIAkgIGlmIChzeW0gIT0gTlVMTCkKKy0JICAgICpyZWxvY19hZGRyICs9IHN5bS0+c3RfdmFsdWU7CisrCSAgICAqcmVsb2NfYWRkciA9IHN5bS0+c3RfdmFsdWU7CisgCSAgYnJlYWs7CisgCisgCWNhc2UgUl9BUk1fVExTX1RQT0ZGMzI6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NTEzMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA3MmVhNTQxMDkwOWFlZjZiNmFlZTcwZTdmOWE4OGQ1MzQ1ODNhYTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgotRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAotU3ViamVjdDogW1BBVENIIDEwLzI3XSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KLQotbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCi1pbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KLSR7U30vLnBjLyAoaXQgZG9lcyBleGlzdCBhZnRlciBlZ2xpYmMgYWRkcyBhYXJjaDY0IHN1cHBvcnQsCi0ke1N9Ly5wYy9hYXJjaDY0LTAwMDEtZ2xpYmMtZnNmLXYxLWVhZjZmMjA1LnBhdGNoL3BvcnRzL3N5c2RlcHMvCi1hYXJjaDY0L2xpYm0tdGVzdC11bHBzKSwgcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMKLWluICR7U30uCi0KLVVwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KLS0tLQotIG1hbnVhbC9NYWtlZmlsZSB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCi1pbmRleCBjMjc1NjY0MGE3Li4xYjViYjE2YTk2IDEwMDY0NAotLS0tIGEvbWFudWFsL01ha2VmaWxlCi0rKysgYi9tYW51YWwvTWFrZWZpbGUKLUBAIC0xMDIsNyArMTAyLDggQEAgJChvYmpwZngpbGlibS1lcnIudGV4aTogJChvYmpwZngpc3RhbXAtbGlibS1lcnIKLSAkKG9ianBmeClzdGFtcC1saWJtLWVycjogbGlibS1lcnItdGFiLnBsICQod2lsZGNhcmQgJChmb3JlYWNoIGRpciwkKHN5c2RpcnMpLFwKLSAJCQkJCQkgICAgICQoZGlyKS9saWJtLXRlc3QtdWxwcykpCi0gCXB3ZD1gcHdkYDsgXAotLQkkKFBFUkwpICQ8ICQkcHdkLy4uID4gJChvYmpwZngpbGlibS1lcnItdG1wCi0rCSQoUEVSTCkgJDwgJCRwd2QvLi4vcG9ydHMgPiAkKG9ianBmeClsaWJtLWVyci10bXAKLSsJJChQRVJMKSAkPCAkJHB3ZC8uLi9zeXNkZXBzID4+ICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotIAkkKG1vdmUtaWYtY2hhbmdlKSAkKG9ianBmeClsaWJtLWVyci10bXAgJChvYmpwZngpbGlibS1lcnIudGV4aQotIAl0b3VjaCAkQAotIAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU3MGIyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gOGFlOTk4YTEwYjI0NTQ1ZTBjMTJmMWYzZDhiZTk3YjE5MTE3ODIwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI0OjQ2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjddIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKLSBvdXQgX19zbG93IHZlcnNpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBjaHVucm9uZyBndW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDYgKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYWFlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAzMDEyY2I4MzlhNjRlN2Q1YzYyMWVmYTc5YjY0M2QxNjkyOTBlNmU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgorRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KKworbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCitpbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KKyR7U30vLnBjLyAoaXQgZG9lcyBleGlzdCBhZnRlciBlZ2xpYmMgYWRkcyBhYXJjaDY0IHN1cHBvcnQsCiske1N9Ly5wYy9hYXJjaDY0LTAwMDEtZ2xpYmMtZnNmLXYxLWVhZjZmMjA1LnBhdGNoL3BvcnRzL3N5c2RlcHMvCithYXJjaDY0L2xpYm0tdGVzdC11bHBzKSwgcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMKK2luICR7U30uCisKK1Vwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KKy0tLQorIG1hbnVhbC9NYWtlZmlsZSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCitpbmRleCBjMjc1NjY0MGE3Li4xYjViYjE2YTk2IDEwMDY0NAorLS0tIGEvbWFudWFsL01ha2VmaWxlCisrKysgYi9tYW51YWwvTWFrZWZpbGUKK0BAIC0xMDIsNyArMTAyLDggQEAgJChvYmpwZngpbGlibS1lcnIudGV4aTogJChvYmpwZngpc3RhbXAtbGlibS1lcnIKKyAkKG9ianBmeClzdGFtcC1saWJtLWVycjogbGlibS1lcnItdGFiLnBsICQod2lsZGNhcmQgJChmb3JlYWNoIGRpciwkKHN5c2RpcnMpLFwKKyAJCQkJCQkgICAgICQoZGlyKS9saWJtLXRlc3QtdWxwcykpCisgCXB3ZD1gcHdkYDsgXAorLQkkKFBFUkwpICQ8ICQkcHdkLy4uID4gJChvYmpwZngpbGlibS1lcnItdG1wCisrCSQoUEVSTCkgJDwgJCRwd2QvLi4vcG9ydHMgPiAkKG9ianBmeClsaWJtLWVyci10bXAKKysJJChQRVJMKSAkPCAkJHB3ZC8uLi9zeXNkZXBzID4+ICQob2JqcGZ4KWxpYm0tZXJyLXRtcAorIAkkKG1vdmUtaWYtY2hhbmdlKSAkKG9ianBmeClsaWJtLWVyci10bXAgJChvYmpwZngpbGlibS1lcnIudGV4aQorIAl0b3VjaCAkQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzM5NWMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA5M2FiNjlhZTRjOTgzMDM5MjliYTk0OTIxMzBhMDIxZmE0YTIxNWJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbCBvdXQKKyBfX3Nsb3cgdmVyc2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IGNodW5yb25nIGd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgNiArKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDFjMzQyNDRiZDguLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA4MTI2NTM1NThmLi4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzViNzU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA0ZjlmMzk3NjE5MDllNjdiZDZkMjliOTcwYjcxNjU4NjNlMzNlNTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjc6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yN10gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjOiBoYW5kbGUgY29ycmVjdGx5Ci0gJGxpYmNfY3Zfcm9vdHNiaW5kaXIKLQotVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF0dGhpZXUgQ3JhcGV0IDxNYXR0aGlldS5DcmFwZXRAaW5nZW5pY28uY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKLWluZGV4IGMxNWQxMDg3ZTguLjM3Y2M5ODNmMmEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotQEAgLTMyLDYgKzMyLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KLSAgIGVsc2UKLSAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCi0gICAgZmkKLS0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSsgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0gICA7OwotIGVzYWMKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLWluZGV4IDYzNGZlNGRlMmEuLjNkYjE2OTdmNGYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotQEAgLTIxLDYgKzIxLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KLSAgIGVsc2UKLSAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCi0gICAgZmkKLS0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSsgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0gICA7OwotIGVzYWMKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJjNjUyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGJiYTdhNjQ3YjYzNjYxOGQ1ZmQwODNlOTA0Zjk5NWY3NzM2YjkxNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI3XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQotCi1IZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgotYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKLQotICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgotICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKLWluZGV4IDEyM2UyYTYyY2UuLjYzY2M4M2VjODQgMTAwNjQ0Ci0tLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKLSsrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCi0gewotICAgaW50IHNsYXNoX2NvdW50ID0gMDsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk5ODY5MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYTdiZDhhYTY1ZjNmMjc1NWQ2ZGJkMGQ1YWRiZmQyNjljMWZiMDA5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQorICRsaWJjX2N2X3Jvb3RzYmluZGlyCisKK1Vwc3RyZWFtLVN0YXR1czpQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2dudS9jb25maWd1cmUgICAgfCAyICstCisgc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitpbmRleCBjMTVkMTA4N2U4Li4zN2NjOTgzZjJhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKK0BAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitpbmRleCA2MzRmZTRkZTJhLi4zZGIxNjk3ZjRmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKK0BAIC0yMSw2ICsyMSw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ2YWIzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDJjZTViYzZkYTIzZGNiNDAyYWZkZWI5NjdmYTQ0YzM5ZWVjZjZkMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorCitIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgorYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKKworICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgorICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKK2luZGV4IDEyM2UyYTYyY2UuLjYzY2M4M2VjODQgMTAwNjQ0CistLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKKysrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgCistc3RhdGljIHZvaWQKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCisgeworICAgaW50IHNsYXNoX2NvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY5MTEyOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotRnJvbSA2MmY0NGNlM2RkMDFhMjU3Y2Y2NzExNmUzNTU0OTJjYjE2NTlhOTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8yN10gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcwotCi1JdCBzZWVtcyB0aGF0IHRoZSAnQUNfRUdSRVBfQ1BQKHllcy4uLicgZXhhbXBsZSBpcyBxdWl0ZSBwb3B1bGFyCi1idXQgYmVpbmcgc3VjaCBhIHNob3J0IHdvcmQgdG8gZ3JlcCBpdCBpcyBsaWtlbHkgdG8gcHJvZHVjZQotZmFsc2UtcG9zaXRpdmUgbWF0Y2hlcyB3aXRoIHRoZSBwYXRoIGl0IGlzIGNvbmZpZ3VyZWQgaW50by4KLQotVGhlIGNoYW5nZSBpcyB0byB1c2UgYSBtb3JlIGVsYWJvcmF0ZWQgc3RyaW5nIHRvIGdyZXAgZm9yLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KLQotU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gRXNxdWl2ZWwgPGJlbmphbWluLmVzcXVpdmVsQGxpbnV4LmludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL2FybS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL2FybS9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgICAgfCA4ICsrKystLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQotIDEyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLWluZGV4IDViZDM1NWE2OTEuLjNiYzU1MzdiYzAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi1AQCAtMTQ4LDEyICsxNDgsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19BQVJDSDY0RUJfXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19hYXJjaDY0X2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9hYXJjaDY0X2JlPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi1pbmRleCA3ODUxZGQ0ZGFjLi42ZTkyMzgxNzFmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotQEAgLTEwLDggKzEwLDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KLSAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCi0gICBbbGliY19jdl9hYXJjaDY0X2JlXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BQVJDSDY0RUJfXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAoaXNfYWFyY2g2NF9iZSxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KLSsgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9hYXJjaDY0X2JlPXllcywgbGliY19jdl9hYXJjaDY0X2JlPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9hYXJjaDY0X2JlID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCi1pbmRleCA0MzFlODQzYjJiLi5lMTUyNDYxMTM4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKLUBAIC0xNTEsMTIgKzE1MSwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0tCQkgICAgICB5ZXMKLSsJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAotIAkJICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX2FybV9wY3NfdmZwIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X2FybV9wY3NfdmZwPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi1pbmRleCA5MGNkZDY5Yzc1Li4wNWEyNjJiYTAwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLUBAIC0xNSw4ICsxNSw4IEBAIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKLSAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgQVJNIGhhcmQtZmxvYXQgQUJJXSwKLSAgIFtsaWJjX2N2X2FybV9wY3NfdmZwXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BUk1fUENTX1ZGUAotLQkJICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKHVzZV9hcm1fcGNzX3ZmcCxbI2lmZGVmIF9fQVJNX1BDU19WRlAKLSsJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAotIAkJICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzLCBsaWJjX2N2X2FybV9wY3NfdmZwPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9hcm1fcGNzX3ZmcCA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCi1pbmRleCA0ZTEzMjQ4YzAzLi5mMTRhZjk1MmQwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotQEAgLTE0MywxMSArMTQzLDExIEBAIGVsc2UKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZgotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCi0gZWxzZQotICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotaW5kZXggYmNiZGFmZmQ5Zi4uYWQzMDU3ZjRjYyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLUBAIC02LDkgKzYsOSBAQCBkbmwgcG9zaXRpb24gaW5kZXBlbmRlbnQgd2F5LgotIGRubCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCi0gCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCi0tICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKLSsgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQotIGlmIHRlc3QgeCRsaWJjX2N2X21pcHNfbmFuMjAwOCA9IHh5ZXM7IHRoZW4KLSAgIEFDX0RFRklORShIQVZFX01JUFNfTkFOMjAwOCkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi1pbmRleCAxNGM4YTNhMDE0Li5kZGUzODE0ZWYyIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi1AQCAtMTQyLDEyICsxNDIsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX25pb3MyX2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9uaW9zMl9iZT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X25pb3MyX2JlPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotaW5kZXggZjA1ZjQzODAyYi4uZGM4NjM5OTAyZCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotQEAgLTQsOCArNCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCi0gIyBOaW9zIElJIGJpZyBlbmRpYW4gaXMgbm90IHlldCBzdXBwb3J0ZWQuCi0gQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKLSAgIFtsaWJjX2N2X25pb3MyX2JlXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKGlzX25pb3MyX2JlLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KLSsgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLWluZGV4IDFlZTdmNDFhMzYuLjc3ZTM4YmViZGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLUBAIC00MTQsMTEgKzQxNCwxMSBAQCBlbHNlCi0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIGRubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWYKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotaW5kZXggOTE0N2FhNDU4Mi4uNzg5OGUyNDczOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotQEAgLTEwNSw5ICsxMDUsOSBAQCBBQ19DT01QSUxFX0lGRUxTRSgKLSBMSUJDX0NPTkZJR19WQVIoW21pcHMtbW9kZS1zd2l0Y2hdLFske2xpYmNfbWlwc19tb2RlX3N3aXRjaH1dKQotIAotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAotLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCi0rICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKLSAKLSBsaWJjX21pcHNfbmFuPQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotaW5kZXggYWU3ZjI1NGRhNC4uODc0NTE5MDAwYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi1AQCAtMTU1LDEyICsxNTUsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWYgX0NBTExfRUxGID09IDIKLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9wcGNfZWxmdjJfYWJpIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzCi0gZWxzZQotICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8KLUBAIC0xODgsMTIgKzE4OCwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfQ0FMTF9FTEYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX2RlZl9jYWxsX2VsZiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi1pbmRleCBmOWNiYTZlMTVkLi5iMjFmNzJmMWU0IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLUBAIC02LDggKzYsOCBAQCBMSUJDX1NMSUJESVJfUlRMRERJUihbbGliNjRdLCBbbGliNjRdKQotICMgRGVmaW5lIGRlZmF1bHQtYWJpIGFjY29yZGluZyB0byBjb21waWxlciBmbGFncy4KLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIFBvd2VyUEM2NCBFTEZ2MiBBQkldLAotICAgW2xpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWYgX0NBTExfRUxGID09IDIKLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKHVzZV9wcGNfZWxmdjJfYWJpLFsjaWYgX0NBTExfRUxGID09IDIKLSsgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcywgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaSA9IHllczsgdGhlbgotQEAgLTE5LDggKzE5LDggQEAgZWxzZQotICAgIyBDb21waWxlciB0aGF0IGRvIG5vdCBzdXBwb3J0IEVMRnYyIEFCSSBkb2VzIG5vdCBkZWZpbmUgX0NBTExfRUxGCi0gICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgZGVmaW5lcyBfQ0FMTF9FTEZdLAotICAgICBbbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGZdLAotLSAgICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9DQUxMX0VMRgotLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgW0FDX0VHUkVQX0NQUChpc19kZWZfY2FsbF9lbGYsWyNpZmRlZiBfQ0FMTF9FTEYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQotICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiZjRmZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gYWMyNDBmYjAxZjY0NzBhYzIwNzk2OGFkZmJlMjBjY2M5M2IxNmY4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjddIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCi0KLVRvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gdGltZXpvbmUvTWFrZWZpbGUgICAgIHwgMiArLQotIHRpbWV6b25lL3R6c2VsZWN0LmtzaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKLWluZGV4IDAxOTRhYmE0YTEuLjU4ZTU0MDVhMDUgMTAwNjQ0Ci0tLS0gYS90aW1lem9uZS9NYWtlZmlsZQotKysrIGIvdGltZXpvbmUvTWFrZWZpbGUKLUBAIC0xMjIsNyArMTIyLDcgQEAgJCh0ZXN0ZGF0YSkvWFQlOiB0ZXN0ZGF0YS9YVCUKLSAJY3AgJDwgJEAKLSAKLSAkKG9ianBmeCl0enNlbGVjdDogdHpzZWxlY3Qua3NoICQoY29tbW9uLW9ianBmeCljb25maWcubWFrZQotLQlzZWQgLWUgJ3N8L2Jpbi9iYXNofCQoQkFTSCl8JyBcCi0rCXNlZCAtZSAnc3wvYmluL2Jhc2h8L2Jpbi9zaHwnIFwKLSAJICAgIC1lICdzfFRaRElSPVtefV0qfFRaRElSPSQoem9uZWRpcil8JyBcCi0gCSAgICAtZSAnL1RaVkVSU0lPTj0vc3xzZWVfTWFrZWZpbGV8IiQodmVyc2lvbikifCcgXAotIAkgICAgLWUgJy9QS0dWRVJTSU9OPS9zfD0uKnw9IiQoUEtHVkVSU0lPTikifCcgXAotZGlmZiAtLWdpdCBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaCBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotaW5kZXggZDJjM2E2ZDFkZC4uMDg5Njc5ZjMwNiAxMDA3NTUKLS0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1AQCAtMzUsNyArMzUsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZwotIAotICMgU3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuc2V0LgotIDogJHtBV0s9YXdrfQotLTogJHtUWkRJUj1gcHdkYH0KLSs6ICR7VFpESVI9JChwd2QpfQotIAotICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCi0gIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2N2U3YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDI2MCBAQAorRnJvbSBiMzgyMTM4YzQxY2NmNjA3OWI0NDU5MmYxZTc0ZjE4M2NhODI4MWJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcworCitJdCBzZWVtcyB0aGF0IHRoZSAnQUNfRUdSRVBfQ1BQKHllcy4uLicgZXhhbXBsZSBpcyBxdWl0ZSBwb3B1bGFyCitidXQgYmVpbmcgc3VjaCBhIHNob3J0IHdvcmQgdG8gZ3JlcCBpdCBpcyBsaWtlbHkgdG8gcHJvZHVjZQorZmFsc2UtcG9zaXRpdmUgbWF0Y2hlcyB3aXRoIHRoZSBwYXRoIGl0IGlzIGNvbmZpZ3VyZWQgaW50by4KKworVGhlIGNoYW5nZSBpcyB0byB1c2UgYSBtb3JlIGVsYWJvcmF0ZWQgc3RyaW5nIHRvIGdyZXAgZm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gRXNxdWl2ZWwgPGJlbmphbWluLmVzcXVpdmVsQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FybS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FybS9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgICAgfCA4ICsrKystLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQorIDEyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKK2luZGV4IDViZDM1NWE2OTEuLjNiYzU1MzdiYzAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitAQCAtMTQ4LDEyICsxNDgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BQVJDSDY0RUJfXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19hYXJjaDY0X2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9hYXJjaDY0X2JlPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCitpbmRleCA3ODUxZGQ0ZGFjLi42ZTkyMzgxNzFmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworQEAgLTEwLDggKzEwLDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KKyAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9hYXJjaDY0X2JlXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BQVJDSDY0RUJfXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAoaXNfYWFyY2g2NF9iZSxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKysgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9hYXJjaDY0X2JlPXllcywgbGliY19jdl9hYXJjaDY0X2JlPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9hYXJjaDY0X2JlID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitpbmRleCA0MzFlODQzYjJiLi5lMTUyNDYxMTM4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKK0BAIC0xNTEsMTIgKzE1MSwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX0FSTV9QQ1NfVkZQCistCQkgICAgICB5ZXMKKysJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAorIAkJICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX2FybV9wY3NfdmZwIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FybV9wY3NfdmZwPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitpbmRleCA5MGNkZDY5Yzc1Li4wNWEyNjJiYTAwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKK0BAIC0xNSw4ICsxNSw4IEBAIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKKyAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgQVJNIGhhcmQtZmxvYXQgQUJJXSwKKyAgIFtsaWJjX2N2X2FybV9wY3NfdmZwXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKHVzZV9hcm1fcGNzX3ZmcCxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKysJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAorIAkJICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzLCBsaWJjX2N2X2FybV9wY3NfdmZwPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9hcm1fcGNzX3ZmcCA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCitpbmRleCA0ZTEzMjQ4YzAzLi5mMTRhZjk1MmQwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQorQEAgLTE0MywxMSArMTQzLDExIEBAIGVsc2UKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZgorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCisgZWxzZQorICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworaW5kZXggYmNiZGFmZmQ5Zi4uYWQzMDU3ZjRjYyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK0BAIC02LDkgKzYsOSBAQCBkbmwgcG9zaXRpb24gaW5kZXBlbmRlbnQgd2F5LgorIGRubCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCistICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKKysgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQorIGlmIHRlc3QgeCRsaWJjX2N2X21pcHNfbmFuMjAwOCA9IHh5ZXM7IHRoZW4KKyAgIEFDX0RFRklORShIQVZFX01JUFNfTkFOMjAwOCkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCitpbmRleCAxNGM4YTNhMDE0Li5kZGUzODE0ZWYyIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCitAQCAtMTQyLDEyICsxNDIsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX25pb3MyX2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9uaW9zMl9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X25pb3MyX2JlPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworaW5kZXggZjA1ZjQzODAyYi4uZGM4NjM5OTAyZCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworQEAgLTQsOCArNCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyBOaW9zIElJIGJpZyBlbmRpYW4gaXMgbm90IHlldCBzdXBwb3J0ZWQuCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKKyAgIFtsaWJjX2N2X25pb3MyX2JlXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX25pb3MyX2JlLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKysgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKK2luZGV4IDFlZTdmNDFhMzYuLjc3ZTM4YmViZGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKK0BAIC00MTQsMTEgKzQxNCwxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworaW5kZXggOTE0N2FhNDU4Mi4uNzg5OGUyNDczOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworQEAgLTEwNSw5ICsxMDUsOSBAQCBBQ19DT01QSUxFX0lGRUxTRSgKKyBMSUJDX0NPTkZJR19WQVIoW21pcHMtbW9kZS1zd2l0Y2hdLFske2xpYmNfbWlwc19tb2RlX3N3aXRjaH1dKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyAKKyBsaWJjX21pcHNfbmFuPQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQoraW5kZXggYWU3ZjI1NGRhNC4uODc0NTE5MDAwYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCitAQCAtMTU1LDEyICsxNTUsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWYgX0NBTExfRUxGID09IDIKKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9wcGNfZWxmdjJfYWJpIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzCisgZWxzZQorICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8KK0BAIC0xODgsMTIgKzE4OCwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX2RlZl9jYWxsX2VsZiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitpbmRleCBmOWNiYTZlMTVkLi5iMjFmNzJmMWU0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKK0BAIC02LDggKzYsOCBAQCBMSUJDX1NMSUJESVJfUlRMRERJUihbbGliNjRdLCBbbGliNjRdKQorICMgRGVmaW5lIGRlZmF1bHQtYWJpIGFjY29yZGluZyB0byBjb21waWxlciBmbGFncy4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIFBvd2VyUEM2NCBFTEZ2MiBBQkldLAorICAgW2xpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWYgX0NBTExfRUxGID09IDIKKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKHVzZV9wcGNfZWxmdjJfYWJpLFsjaWYgX0NBTExfRUxGID09IDIKKysgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcywgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaSA9IHllczsgdGhlbgorQEAgLTE5LDggKzE5LDggQEAgZWxzZQorICAgIyBDb21waWxlciB0aGF0IGRvIG5vdCBzdXBwb3J0IEVMRnYyIEFCSSBkb2VzIG5vdCBkZWZpbmUgX0NBTExfRUxGCisgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgZGVmaW5lcyBfQ0FMTF9FTEZdLAorICAgICBbbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGZdLAorLSAgICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9DQUxMX0VMRgorLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgW0FDX0VHUkVQX0NQUChpc19kZWZfY2FsbF9lbGYsWyNpZmRlZiBfQ0FMTF9FTEYKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCisgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQorICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIxZWU5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gNzkwYjEzM2ZmMmJjNWI3N2VkODUzM2I4OTk5YWJjNjVlZDBkYTAyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMjddIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKLQotVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KLSh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAotaW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKLS0tLSBhL25zY2QvbnNjZC5pbml0Ci0rKysgYi9uc2NkL25zY2QuaW5pdAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KLSAjCi1AQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKLSBzdGFydCAoKSB7Ci0gICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKLSAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKLS0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCi0gICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAotICAgICBSRVRWQUw9JD8KLSAgICAgZWNobwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgewotIH0KLSAKLSBzdG9wICgpIHsKLS0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCi0gICAgIC91c3Ivc2Jpbi9uc2NkIC1LCi0gICAgIFJFVFZBTD0kPwotICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgotQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7Ci0gCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCi0gCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKLSAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKLS0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKLSsJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCi0gICAgIGVsc2UKLS0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKLSsJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCi0gICAgIGZpCi0gICAgIGVjaG8KLSAgICAgcmV0dXJuICRSRVRWQUwKLUBAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KLSAJUkVUVkFMPSQ/Ci0gCTs7Ci0gICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKLS0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKLSsJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCi0gCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKLSAJUkVUVkFMPSQ/Ci0gCWVjaG8KLSAJOzsKLSAgICAgKikKLS0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgotKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSAJUkVUVkFMPTEKLSAJOzsKLSBlc2FjCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NDUzZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDA0ZmI3YjkzZGM0MGMxZjk2ZWJjMDVkMjlhMmYwMmY5ZTRmMGQ1NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAorU3ViamVjdDogW1BBVENIXSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAorCitUbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRpbWV6b25lL01ha2VmaWxlICAgICB8IDIgKy0KKyB0aW1lem9uZS90enNlbGVjdC5rc2ggfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCitpbmRleCAwMTk0YWJhNGExLi41OGU1NDA1YTA1IDEwMDY0NAorLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKKysrKyBiL3RpbWV6b25lL01ha2VmaWxlCitAQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCisgCWNwICQ8ICRACisgCisgJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKKy0Jc2VkIC1lICdzfC9iaW4vYmFzaHwkKEJBU0gpfCcgXAorKwlzZWQgLWUgJ3N8L2Jpbi9iYXNofC9iaW4vc2h8JyBcCisgCSAgICAtZSAnc3xUWkRJUj1bXn1dKnxUWkRJUj0kKHpvbmVkaXIpfCcgXAorIAkgICAgLWUgJy9UWlZFUlNJT049L3N8c2VlX01ha2VmaWxlfCIkKHZlcnNpb24pInwnIFwKKyAJICAgIC1lICcvUEtHVkVSU0lPTj0vc3w9Lip8PSIkKFBLR1ZFUlNJT04pInwnIFwKK2RpZmYgLS1naXQgYS90aW1lem9uZS90enNlbGVjdC5rc2ggYi90aW1lem9uZS90enNlbGVjdC5rc2gKK2luZGV4IGQyYzNhNmQxZGQuLjA4OTY3OWYzMDYgMTAwNzU1CistLS0gYS90aW1lem9uZS90enNlbGVjdC5rc2gKKysrKyBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAorQEAgLTM1LDcgKzM1LDcgQEAgUkVQT1JUX0JVR1NfVE89dHpAaWFuYS5vcmcKKyAKKyAjIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bnNldC4KKyA6ICR7QVdLPWF3a30KKy06ICR7VFpESVI9YHB3ZGB9CisrOiAke1RaRElSPSQocHdkKX0KKyAKKyAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgorICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmQyY2QxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSA3YTJmMjQ0YzA5ODBhNTRlZDc0Zjk1NDRhYjQ0YTcyNjllZjEyYmNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzM6MDIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAorCitUaGUgbnNjZCBpbml0IHNjcmlwdCB1c2VzICMhIC9iaW4vYmFzaCBidXQgb25seSByZWFsbHkgdXNlcyBvbmUgYmFzaGlzbQorKHRyYW5zbGF0ZWQgc3RyaW5ncyksIHNvIHJlbW92ZSB0aGVtIGFuZCBzd2l0Y2ggdGhlIHNoZWxsIHRvICMhL2Jpbi9zaC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbnNjZC9uc2NkLmluaXQgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9uc2NkL25zY2QuaW5pdCBiL25zY2QvbnNjZC5pbml0CitpbmRleCBhODgyZGE3ZDhiLi5iMDI5ODZlYzE1IDEwMDY0NAorLS0tIGEvbnNjZC9uc2NkLmluaXQKKysrKyBiL25zY2QvbnNjZC5pbml0CitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorICMKKyAjIG5zY2Q6CQlTdGFydHMgdGhlIE5hbWUgU3dpdGNoIENhY2hlIERhZW1vbgorICMKK0BAIC00OSw3ICs0OSw3IEBAIHByb2c9bnNjZAorIHN0YXJ0ICgpIHsKKyAgICAgWyAtZCAvdmFyL3J1bi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9ydW4vbnNjZAorICAgICBbIC1kIC92YXIvZGIvbnNjZCBdIHx8IG1rZGlyIC92YXIvZGIvbnNjZAorLSAgICBlY2hvIC1uICQiU3RhcnRpbmcgJHByb2c6ICIKKysgICAgZWNobyAtbiAiU3RhcnRpbmcgJHByb2c6ICIKKyAgICAgZGFlbW9uIC91c3Ivc2Jpbi9uc2NkCisgICAgIFJFVFZBTD0kPworICAgICBlY2hvCitAQCAtNTgsNyArNTgsNyBAQCBzdGFydCAoKSB7CisgfQorIAorIHN0b3AgKCkgeworLSAgICBlY2hvIC1uICQiU3RvcHBpbmcgJHByb2c6ICIKKysgICAgZWNobyAtbiAiU3RvcHBpbmcgJHByb2c6ICIKKyAgICAgL3Vzci9zYmluL25zY2QgLUsKKyAgICAgUkVUVkFMPSQ/CisgICAgIGlmIFsgJFJFVFZBTCAtZXEgMCBdOyB0aGVuCitAQCAtNjcsOSArNjcsOSBAQCBzdG9wICgpIHsKKyAJIyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9uc2NkLnBpZAorIAlybSAtZiAvdmFyL3J1bi9uc2NkL3NvY2tldAorLSAgICAgICAJc3VjY2VzcyAkIiRwcm9nIHNodXRkb3duIgorKwlzdWNjZXNzICIkcHJvZyBzaHV0ZG93biIKKyAgICAgZWxzZQorLSAgICAgICAJZmFpbHVyZSAkIiRwcm9nIHNodXRkb3duIgorKwlmYWlsdXJlICIkcHJvZyBzaHV0ZG93biIKKyAgICAgZmkKKyAgICAgZWNobworICAgICByZXR1cm4gJFJFVFZBTAorQEAgLTEwMywxMyArMTAzLDEzIEBAIGNhc2UgIiQxIiBpbgorIAlSRVRWQUw9JD8KKyAJOzsKKyAgICAgZm9yY2UtcmVsb2FkIHwgcmVsb2FkKQorLSAgICAJZWNobyAtbiAkIlJlbG9hZGluZyAkcHJvZzogIgorKwllY2hvIC1uICJSZWxvYWRpbmcgJHByb2c6ICIKKyAJa2lsbHByb2MgL3Vzci9zYmluL25zY2QgLUhVUAorIAlSRVRWQUw9JD8KKyAJZWNobworIAk7OworICAgICAqKQorLQllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCisrCWVjaG8gIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorIAlSRVRWQUw9MQorIAk7OworIGVzYWMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkODIxMzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBAQAotRnJvbSA4OTc0MzBiYmI2NWEwZjIyMjg0ZDc5NTcyMDZiNWZkNGVmZDY2MDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yN10gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKLQotUG9ydGVkIGZyb20gZWdsaWJjCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZwotCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmU2ZTBkYTFhYWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCi1AQCAtMCwwICsxLDM4MyBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCi0rJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQotK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKLStpbnZvbHZlZDoKLSsKLSsxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KLSsKLSsyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCi0rICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQotKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKLSsgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgotKwotKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKLSsgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KLSsKLSs0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCi0rICAgYnVpbHQgaW4gc3RlcCAzLgotKwotKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgotKwotK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQwotK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAotK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKLStmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KLStHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jawotK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKLStpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgotKwotK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKLStmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQotK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAotK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCi0rYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCi0rdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KLSsKLSsKLStQcmVwYXJhdGlvbgotKwotK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKLStMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgotK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKLStjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAotK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAotK2FuZCBMaW51eCAzLjEuCi0rCi0rRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAotK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKLSthcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgotKwotKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKLSsgICAgJCBob3N0PSRidWlsZAotKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCi0rICAgICQgbGludXhfYXJjaD1hcm0KLSsKLStXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgotKwotKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCi0rICAgICQgZ2Njdj1nY2MtNC42LjIKLSsgICAgJCBsaW51eHY9bGludXgtMy4xCi0rCi0rV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCi0rY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAotK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAotKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKLSsKLSsgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAotKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKLSsgICAgJCBscyAkc3JjCi0rICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQotKwotK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKLSt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCi0rcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKLStzeXN0ZW0pIGluICdzeXNyb290JzoKLSsKLSsgICAgJCBvYmo9JHRvcC9vYmoKLSsgICAgJCB0b29scz0kdG9wL3Rvb2xzCi0rICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKLSsKLSsKLStCaW51dGlscwotKwotK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscwotKyAgICAkIGNkICRvYmovYmludXRpbHMKLSsgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290Ci0rICAgICQgbWFrZQotKyAgICAkIG1ha2UgaW5zdGFsbAotKwotKwotK1RoZSBGaXJzdCBHQ0MKLSsKLStGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Ci0rc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQotKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCi0raGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0Ci0rYnVpbHQgeWV0KS4KLSsKLStGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90Ci0rdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bwotK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0Ci0rYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJwotK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQotK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKLSsKLStXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQotK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQwotK2xhbmd1YWdlIGlzIG5lZWRlZC4KLSsKLStTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQotKyAgICAkIGNkICRvYmovZ2NjMQotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAotKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLSsKLStMaW51eCBLZXJuZWwgSGVhZGVycwotKwotK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgotK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgotK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKLStjb3B5IGZpcnN0OgotKwotKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4Ci0rICAgICQgY2QgJG9iai9saW51eAotKwotK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6Ci0rCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKLSsgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKLSsKLSsKLStHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCi0rCi0rVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCi0rd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQotK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKLStjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCi0rR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCi0rc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCi0rcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAotK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAotK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKLStpbnN0YWxsYXRpb25zLgotKwotK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCi0rYmVlbiBpbnN0YWxsZWQuCi0rCi0rVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vawotK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCi0ranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KLStzdXBwb3J0IEFSTSB0YXJnZXRzLgotKwotK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKLStoZWFkZXJzOgotKwotKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKLSsKLStUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKLStiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKLStkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCi0rJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKLStyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCi0rCi0rTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAotK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgotKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKLSsgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCi0rCi0rRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAotK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAotK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQotK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KLSsKLSsKLStUaGUgU2Vjb25kIEdDQwotKwotK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgotK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAotK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKLSthbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzIKLSsgICAgJCBjZCAkb2JqL2djYzIKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rR0xJQkMsIENvbXBsZXRlCi0rCi0rV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCi0rZnVsbCBHTElCQyBidWlsZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCi0rICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKLSsgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCi0rICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKLSsKLStOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCi0rZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCi0rbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQotKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KLStCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKLStkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKLSsKLSsgICAgJCBjZCAkb2JqL2xpbnV4Ci0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKwotK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKLSsKLSsgICAgJCBjZCAkb2JqL2dsaWJjCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKLSsKLStBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCi0rd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAotK2ZpbGVzIGluIHBsYWNlLgotKwotKwotK1RoZSBUaGlyZCBHQ0MKLSsKLStGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKLSt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzMKLSsgICAgJCBjZCAkb2JqL2djYzMKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLStUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCi0rZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAotK0dMSUJDLgotKwotK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAotK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCi0rdGhlIHN5c3Jvb3QuCi0rCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKLSsgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCi0rCi0rCi0rVHJ5aW5nIFRoaW5ncyBPdXQKLSsKLStBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKLSt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6Ci0rCi0rICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgotKyAgICA+IGludAotKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgPiB7Ci0rICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbwotKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbwotKwotKwotK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCi0rb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbwotKyAgICBFTEYgSGVhZGVyOgotKyAgICAuLi4KLSsgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKLSsgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQotKwotKyAgICAuLi4KLSsgICAgUHJvZ3JhbSBIZWFkZXJzOgotKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCi0rICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0Ci0rICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCi0rICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KLSsgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKLSsgICAgLi4uCi0rCi0rTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCi0rdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCi0rc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCi0rbm90IG91ciBkdW1teSAnbGliYy5zbyc6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKLSsgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6Ci0rICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKLSsgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KLSsgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCi0rICAgIC4uLgotKwotKwotK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgotKwotKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKLSsgICAgPiAuL2hlbGxvCi0rICAgIEhlbGxvLCB3b3JsZCEKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9jKystaGVsbG8KLSsgICAgSGVsbG8sIEMrKyB3b3JsZCEKLWRpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmI2N2I0Njg0NjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLUBAIC0wLDAgKzEsMjA1IEBACi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCi0rb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KLSt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgotK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKLStkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKLSt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKLStmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKLStzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCi0rc2ltdWxhdG9yLgotKwotKwotK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCi0rCi0rVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncwotK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgotKwotKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAotKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgotKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAotKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgotKwotKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQotKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKLSsgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKLSsgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0rCi0rCi0rVXNhZ2UKLSsKLStUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKLStmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKLSsKLSstIGNyb3NzLXRlc3Qtd3JhcHBlcgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZwotKyAgd2l0aCBhbnkgYXJndW1lbnRzLgotKwotKy0gY3Jvc3MtbG9jYWxlZGVmCi0rCi0rICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKLSsgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKLSsgIGFyZ3VtZW50cyBuZWVkZWQuCi0rCi0rVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KLSsKLSsKLStUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCi0rCi0rVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KLStlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCi0rc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbwotK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYwotK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCi0rZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgotK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KLSsKLStGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6Ci0rCi0rICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKLSt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCi0rd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAotK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0Ci0rcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCi0rZGlyZWN0b3JpZXMuCi0rCi0rVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Ci0rc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAotK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKLSthcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKLSsnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCi0rZm9sbG93czoKLSsKLSsgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLStUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAotK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KLSsKLStTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKLStiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCi0rYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCi0rCi0rVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQotKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0Ci0rICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQotKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKLSsgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKLSsgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0Ci0rICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKLSsKLSsgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKLSsgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKLSsgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCi0rICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKLSsgIGV4Y2VwdGlvbnMuKQotKwotKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQotKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKLSsgIG1ldGFjaGFyYWN0ZXJzLgotKwotKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cwotKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKLSsgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKLSsgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCi0rICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQotKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgotKwotKwotK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAotKwotK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KLSt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAotKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCi0rY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAotK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKLStjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KLStzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgotKwotK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgotKwotKwotK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAotKwotK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAotK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQotKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAotKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KLSthIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKLStob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAotK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgotK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCi0rdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCi0rbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCi0rc3VpdGFibGUuCi0rCi0rVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cwotK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAotK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KLSsKLSsKLStFeGFtcGxlCi0rCi0rSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKLSt0aGUgZm9sbG93aW5nIHNjcmlwdDoKLSsKLSsgICAgIyEvYmluL3NoCi0rCi0rICAgIHNyY2Rpcj0uLi4KLSsgICAgdGVzdF9ob3N0bmFtZT0uLi4KLSsgICAgbG9jYWxlZGVmZGlyPS4uLgotKyAgICBjcm9zc19neHg9Li4uLWcrKwotKwotKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCi0rICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCi0rCi0rICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAotKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAotKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAotKyAgICAgICAgICIkQCIKLSsKLSsKLStPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCi0rCi0rSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZwotK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCi0rICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgotKwotKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKLSsgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKLSsgIGRpcmVjdG9yeS4KLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxMDlhMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCkBAIC0wLDAgKzEsNjE2IEBACitGcm9tIDQ0YTVjNzllZmVhMDlmNWI5OTBlNTI0ZWM0MmFiZGVlZjQ0NDA1NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0Mjo1OCArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IENyb3NzIGJ1aWxkaW5nIGFuZCB0ZXN0aW5nIGluc3RydWN0aW9ucworCitQb3J0ZWQgZnJvbSBlZ2xpYmMKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgR0xJQkMuY3Jvc3MtYnVpbGRpbmcgfCAzODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1ODggaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy1idWlsZGluZworIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy10ZXN0aW5nCisKK2RpZmYgLS1naXQgYS9HTElCQy5jcm9zcy1idWlsZGluZyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uZTZlMGRhMWFhZgorLS0tIC9kZXYvbnVsbAorKysrIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKK0BAIC0wLDAgKzEsMzgzIEBACisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KKysKKysgICAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1Db21waWxpbmcgR0xJQkMKKysgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisrCisrCisrSW50cm9kdWN0aW9uCisrCisrTW9zdCBHTlUgdG9vbHMgaGF2ZSBhIHNpbXBsZSBidWlsZCBwcm9jZWR1cmU6IHlvdSBydW4gdGhlaXIKKysnY29uZmlndXJlJyBzY3JpcHQsIGFuZCB0aGVuIHlvdSBydW4gJ21ha2UnLiAgVW5mb3J0dW5hdGVseSwgdGhlCisrcHJvY2VzcyBvZiBjcm9zcy1jb21waWxpbmcgdGhlIEdOVSBDIGxpYnJhcnkgaXMgcXVpdGUgYSBiaXQgbW9yZQorK2ludm9sdmVkOgorKworKzEpIEJ1aWxkIGEgY3Jvc3MtY29tcGlsZXIsIHdpdGggY2VydGFpbiBmYWNpbGl0aWVzIGRpc2FibGVkLgorKworKzIpIENvbmZpZ3VyZSB0aGUgQyBsaWJyYXJ5IHVzaW5nIHRoZSBjb21waWxlciB5b3UgYnVpbHQgaW4gc3RlcCAxKS4KKysgICBCdWlsZCBhIGZldyBvZiB0aGUgQyBydW4tdGltZSBvYmplY3QgZmlsZXMsIGJ1dCBub3QgdGhlIHJlc3Qgb2YgdGhlCisrICAgbGlicmFyeS4gIEluc3RhbGwgdGhlIGxpYnJhcnkncyBoZWFkZXIgZmlsZXMgYW5kIHRoZSBydW4tdGltZQorKyAgIG9iamVjdCBmaWxlcywgYW5kIGNyZWF0ZSBhIGR1bW15IGxpYmMuc28uCisrCisrMykgQnVpbGQgYSBzZWNvbmQgY3Jvc3MtY29tcGlsZXIsIHVzaW5nIHRoZSBoZWFkZXIgZmlsZXMgYW5kIG9iamVjdAorKyAgIGZpbGVzIHlvdSBpbnN0YWxsZWQgaW4gc3RlcCAyLgorKworKzQpIENvbmZpZ3VyZSwgYnVpbGQsIGFuZCBpbnN0YWxsIGEgZnJlc2ggQyBsaWJyYXJ5LCB1c2luZyB0aGUgY29tcGlsZXIKKysgICBidWlsdCBpbiBzdGVwIDMuCisrCisrNSkgQnVpbGQgYSB0aGlyZCBjcm9zcy1jb21waWxlciwgYmFzZWQgb24gdGhlIEMgbGlicmFyeSBidWlsdCBpbiBzdGVwIDQuCisrCisrVGhlIHJlYXNvbiBmb3IgdGhpcyBjb21wbGV4aXR5IGlzIHRoYXQsIGFsdGhvdWdoIEdDQyBhbmQgdGhlIEdOVSBDCisrbGlicmFyeSBhcmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseSwgdGhleSBhcmUgbm90IGFjdHVhbGx5IGluZGVwZW5kZW50Cisrb2YgZWFjaCBvdGhlcjogR0NDIHJlcXVpcmVzIHRoZSBDIGxpYnJhcnkncyBoZWFkZXJzIGFuZCBzb21lIG9iamVjdAorK2ZpbGVzIHRvIGNvbXBpbGUgaXRzIG93biBsaWJyYXJpZXMsIHdoaWxlIHRoZSBDIGxpYnJhcnkgZGVwZW5kcyBvbgorK0dDQydzIGxpYnJhcmllcy4gIEdMSUJDIGluY2x1ZGVzIGZlYXR1cmVzIGFuZCBidWcgZml4ZXMgdG8gdGhlIHN0b2NrCisrR05VIEMgbGlicmFyeSB0aGF0IHNpbXBsaWZ5IHRoaXMgcHJvY2VzcywgYnV0IHRoZSBmdW5kYW1lbnRhbAorK2ludGVyZGVwZW5kZW5jeSBzdGFuZHMuCisrCisrSW4gdGhpcyBkb2N1bWVudCwgd2UgZXhwbGFpbiBob3cgdG8gY3Jvc3MtY29tcGlsZSBhbiBHTElCQy9HQ0MgcGFpcgorK2Zyb20gc291cmNlLiAgT3VyIGludGVuZGVkIGF1ZGllbmNlIGlzIGRldmVsb3BlcnMgd2hvIGFyZSBhbHJlYWR5CisrZmFtaWxpYXIgd2l0aCB0aGUgR05VIHRvb2xjaGFpbiBhbmQgY29tZm9ydGFibGUgd29ya2luZyB3aXRoCisrY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMuICBXaGlsZSB3ZSBkbyBwcmVzZW50IGEgd29ya2VkIGV4YW1wbGUgdG8KKythY2NvbXBhbnkgdGhlIGV4cGxhbmF0aW9uLCBmb3IgY2xhcml0eSdzIHNha2Ugd2UgZG8gbm90IGNvdmVyIG1hbnkgb2YKKyt0aGUgb3B0aW9ucyBhdmFpbGFibGUgdG8gY3Jvc3MtdG9vbGNoYWluIHVzZXJzLgorKworKworK1ByZXBhcmF0aW9uCisrCisrR0xJQkMgcmVxdWlyZXMgcmVjZW50IHZlcnNpb25zIG9mIHRoZSBHTlUgYmludXRpbHMsIEdDQywgYW5kIHRoZQorK0xpbnV4IGtlcm5lbC4gIFRoZSB3ZWIgcGFnZSA8aHR0cDovL3d3dy5lZ2xpYmMub3JnL3ByZXJlcXVpc2l0ZXM+CisrZG9jdW1lbnRzIHRoZSBjdXJyZW50IHJlcXVpcmVtZW50cywgYW5kIGxpc3RzIHBhdGNoZXMgbmVlZGVkIGZvcgorK2NlcnRhaW4gdGFyZ2V0IGFyY2hpdGVjdHVyZXMuICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXNlIGJ1aWxkCisraW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiB0ZXN0ZWQgd2l0aCBiaW51dGlscyAyLjIyLjUxLCBHQ0MgNC42LjIsCisrYW5kIExpbnV4IDMuMS4KKysKKytGaXJzdCwgbGV0J3Mgc2V0IHNvbWUgdmFyaWFibGVzLCB0byBzaW1wbGlmeSBsYXRlciBjb21tYW5kcy4gIFdlJ2xsCisrYnVpbGQgR0xJQkMgYW5kIEdDQyBmb3IgYW4gQVJNIHRhcmdldCwga25vd24gdG8gdGhlIExpbnV4IGtlcm5lbAorK2FzICdhcm0nLCBhbmQgd2UnbGwgZG8gdGhlIGJ1aWxkIG9uIGFuIEludGVsIHg4Nl82NCBMaW51eCBib3g6CisrCisrICAgICQgYnVpbGQ9eDg2XzY0LXBjLWxpbnV4LWdudQorKyAgICAkIGhvc3Q9JGJ1aWxkCisrICAgICQgdGFyZ2V0PWFybS1ub25lLWxpbnV4LWdudWVhYmkKKysgICAgJCBsaW51eF9hcmNoPWFybQorKworK1dlJ3JlIHVzaW5nIHRoZSBhZm9yZW1lbnRpb25lZCB2ZXJzaW9ucyBvZiBCaW51dGlscywgR0NDLCBhbmQgTGludXg6CisrCisrICAgICQgYmludXRpbHN2PWJpbnV0aWxzLTIuMjIuNTEKKysgICAgJCBnY2N2PWdjYy00LjYuMgorKyAgICAkIGxpbnV4dj1saW51eC0zLjEKKysKKytXZSdyZSBjYXJyeWluZyBvdXQgdGhlIGVudGlyZSBwcm9jZXNzIHVuZGVyICd+L2Nyb3NzLWJ1aWxkJywgd2hpY2gKKytjb250YWlucyB1bnBhY2tlZCBzb3VyY2UgdHJlZXMgZm9yIGJpbnV0aWxzLCBnY2MsIGFuZCBsaW51eCBrZXJuZWwsCisrYWxvbmcgd2l0aCBHTElCQyBzdm4gdHJ1bmsgKHdoaWNoIGNhbiBiZSBjaGVja2VkLW91dCB3aXRoCisrJ3N2biBjbyBodHRwOi8vd3d3LmVnbGliYy5vcmcvc3ZuL3RydW5rIGVnbGliYycpOgorKworKyAgICAkIHRvcD0kSE9NRS9jcm9zcy1idWlsZC8kdGFyZ2V0CisrICAgICQgc3JjPSRIT01FL2Nyb3NzLWJ1aWxkL3NyYworKyAgICAkIGxzICRzcmMKKysgICAgYmludXRpbHMtMi4yMi41MSAgZ2xpYmMgIGdjYy00LjYuMiAgbGludXgtMy4xCisrCisrV2UncmUgZ29pbmcgdG8gcGxhY2Ugb3VyIGJ1aWxkIGRpcmVjdG9yaWVzIGluIGEgc3ViZGlyZWN0b3J5ICdvYmonLAorK3dlJ2xsIGluc3RhbGwgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpbiAndG9vbHMnLCBhbmQgd2UnbGwKKytwbGFjZSBvdXIgc3lzcm9vdCAoY29udGFpbmluZyBmaWxlcyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIHRhcmdldAorK3N5c3RlbSkgaW4gJ3N5c3Jvb3QnOgorKworKyAgICAkIG9iaj0kdG9wL29iagorKyAgICAkIHRvb2xzPSR0b3AvdG9vbHMKKysgICAgJCBzeXNyb290PSR0b3Avc3lzcm9vdAorKworKworK0JpbnV0aWxzCisrCisrQ29uZmlndXJpbmcgYW5kIGJ1aWxkaW5nIGJpbnV0aWxzIGZvciB0aGUgdGFyZ2V0IGlzIHN0cmFpZ2h0Zm9yd2FyZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2JpbnV0aWxzCisrICAgICQgY2QgJG9iai9iaW51dGlscworKyAgICAkICRzcmMvJGJpbnV0aWxzdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QKKysgICAgJCBtYWtlCisrICAgICQgbWFrZSBpbnN0YWxsCisrCisrCisrVGhlIEZpcnN0IEdDQworKworK0ZvciBvdXIgd29yaywgd2UgbmVlZCBhIGNyb3NzLWNvbXBpbGVyIHRhcmdldGluZyBhbiBBUk0gTGludXgKKytzeXN0ZW0uICBIb3dldmVyLCB0aGF0IGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgdGhlIHNoYXJlZCBsaWJyYXJ5CisrJ2xpYmdjY19zLnNvJywgd2hpY2ggaXMgY29tcGlsZWQgYWdhaW5zdCB0aGUgR0xJQkMgaGVhZGVycyAod2hpY2ggd2UKKytoYXZlbid0IGluc3RhbGxlZCB5ZXQpIGFuZCBsaW5rZWQgYWdhaW5zdCAnbGliYy5zbycgKHdoaWNoIHdlIGhhdmVuJ3QKKytidWlsdCB5ZXQpLgorKworK0ZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBHQ0Mgd2hpY2ggdGVsbCBpdCBub3QKKyt0byBidWlsZCAnbGliZ2NjX3Muc28nLiAgVGhlICctLXdpdGhvdXQtaGVhZGVycycgb3B0aW9uIGlzIHN1cHBvc2VkIHRvCisrdGFrZSBjYXJlIG9mIHRoaXMsIGJ1dCBpdHMgaW1wbGVtZW50YXRpb24gaXMgaW5jb21wbGV0ZSwgc28geW91IG11c3QKKythbHNvIGNvbmZpZ3VyZSB3aXRoIHRoZSAnLS13aXRoLW5ld2xpYicgb3B0aW9uLiAgV2hpbGUgJy0td2l0aC1uZXdsaWInCisrYXBwZWFycyB0byBtZWFuICJVc2UgdGhlIE5ld2xpYiBDIGxpYnJhcnkiLCBpdHMgZWZmZWN0IGlzIHRvIHRlbGwgdGhlCisrR0NDIGJ1aWxkIG1hY2hpbmVyeSwgIkRvbid0IGFzc3VtZSB0aGVyZSBpcyBhIEMgbGlicmFyeSBhdmFpbGFibGUuIgorKworK1dlIGFsc28gbmVlZCB0byBkaXNhYmxlIHNvbWUgb2YgdGhlIGxpYnJhcmllcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlCisrYnVpbHQgYWxvbmcgd2l0aCBHQ0MsIGFuZCBzcGVjaWZ5IHRoYXQgb25seSB0aGUgY29tcGlsZXIgZm9yIHRoZSBDCisrbGFuZ3VhZ2UgaXMgbmVlZGVkLgorKworK1NvLCB3ZSBjcmVhdGUgYSBidWlsZCBkaXJlY3RvcnksIGNvbmZpZ3VyZSwgbWFrZSwgYW5kIGluc3RhbGwuCisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MxCisrICAgICQgY2QgJG9iai9nY2MxCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiBcCisrICAgID4gICAgIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXRocmVhZHMgLS1kaXNhYmxlLWxpYnNzcCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1kZWNpbWFsLWZsb2F0IC0tZGlzYWJsZS1saWJmZmkgXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworKworK0xpbnV4IEtlcm5lbCBIZWFkZXJzCisrCisrVG8gY29uZmlndXJlIEdMSUJDLCB3ZSBhbHNvIG5lZWQgTGludXgga2VybmVsIGhlYWRlcnMgaW4gcGxhY2UuCisrRm9ydHVuYXRlbHksIHRoZSBMaW51eCBtYWtlZmlsZXMgaGF2ZSBhIHRhcmdldCB0aGF0IGluc3RhbGxzIHRoZW0gZm9yCisrdXMuICBTaW5jZSB0aGUgcHJvY2VzcyBkb2VzIG1vZGlmeSB0aGUgc291cmNlIHRyZWUgYSBiaXQsIHdlIG1ha2UgYQorK2NvcHkgZmlyc3Q6CisrCisrICAgICQgY3AgLXIgJHNyYy8kbGludXh2ICRvYmovbGludXgKKysgICAgJCBjZCAkb2JqL2xpbnV4CisrCisrTm93IHdlJ3JlIHJlYWR5IHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgaW50byB0aGUgc3lzcm9vdDoKKysKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggXAorKyAgICA+IG1ha2UgaGVhZGVyc19pbnN0YWxsIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrICAgID4gICAgICBJTlNUQUxMX0hEUl9QQVRIPSRzeXNyb290L3VzcgorKworKworK0dMSUJDIEhlYWRlcnMgYW5kIFByZWxpbWluYXJ5IE9iamVjdHMKKysKKytVc2luZyB0aGUgY3Jvc3MtY29tcGlsZXIgd2UndmUganVzdCBidWlsdCwgd2UgY2FuIG5vdyBjb25maWd1cmUgR0xJQkMKKyt3ZWxsIGVub3VnaCB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGFuZCBidWlsZCB0aGUgb2JqZWN0IGZpbGVzIHRoYXQgdGhlCisrZnVsbCBjcm9zcy1jb21waWxlciB3aWxsIG5lZWQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nbGliYy1oZWFkZXJzCisrICAgICQgY2QgJG9iai9nbGliYy1oZWFkZXJzCisrICAgICQgQlVJTERfQ0M9Z2NjIFwKKysgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKKysgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCisrICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKKysgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCisrICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tcHJlZml4PS91c3IgXAorKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCisrICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKKysgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCisrICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKKysKKytUaGUgb3B0aW9uICctLXByZWZpeD0vdXNyJyBtYXkgbG9vayBzdHJhbmdlLCBidXQgeW91IHNob3VsZCBuZXZlcgorK2NvbmZpZ3VyZSBHTElCQyB3aXRoIGEgcHJlZml4IG90aGVyIHRoYW4gJy91c3InOiBpbiB2YXJpb3VzIHBsYWNlcywKKytHTElCQydzIGJ1aWxkIHN5c3RlbSBjaGVja3Mgd2hldGhlciB0aGUgcHJlZml4IGlzICcvdXNyJywgYW5kIGRvZXMKKytzcGVjaWFsIGhhbmRsaW5nIG9ubHkgaWYgdGhhdCBpcyB0aGUgY2FzZS4gIFVubGVzcyB5b3UgdXNlIHRoaXMKKytwcmVmaXgsIHlvdSB3aWxsIGdldCBhIHN5c3Jvb3QgdGhhdCBkb2VzIG5vdCB1c2UgdGhlIHN0YW5kYXJkIExpbnV4CisrZGlyZWN0b3J5IGxheW91dHMgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmFzaXMgZm9yIHRoZSByb290CisrZmlsZXN5c3RlbSBvbiB5b3VyIHRhcmdldCBzeXN0ZW0gY29tcGF0aWJseSB3aXRoIG5vcm1hbCBHTElCQworK2luc3RhbGxhdGlvbnMuCisrCisrVGhlICctLXdpdGgtaGVhZGVycycgb3B0aW9uIHRlbGxzIEdMSUJDIHdoZXJlIHRoZSBMaW51eCBoZWFkZXJzIGhhdmUKKytiZWVuIGluc3RhbGxlZC4KKysKKytUaGUgJy0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMnIG9wdGlvbiB0ZWxscyBHTElCQyB0byBsb29rCisrZm9yIHRoZSBsaXN0ZWQgZ2xpYmMgYWRkLW9ucy4gTW9zdCBub3RhYmx5IHRoZSBwb3J0cyBhZGQtb24gKGxvY2F0ZWQKKytqdXN0IGFib3ZlIHRoZSBsaWJjIHNvdXJjZXMgaW4gdGhlIEdMSUJDIHN2biB0cmVlKSBpcyByZXF1aXJlZCB0bworK3N1cHBvcnQgQVJNIHRhcmdldHMuCisrCisrV2UgY2FuIG5vdyB1c2UgdGhlICdpbnN0YWxsLWhlYWRlcnMnIG1ha2VmaWxlIHRhcmdldCB0byBpbnN0YWxsIHRoZQorK2hlYWRlcnM6CisrCisrICAgICQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbF9yb290PSRzeXNyb290IFwKKysgICAgPiAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcworKworK1RoZSAnaW5zdGFsbF9yb290JyB2YXJpYWJsZSBpbmRpY2F0ZXMgd2hlcmUgdGhlIGZpbGVzIHNob3VsZCBhY3R1YWxseQorK2JlIGluc3RhbGxlZDsgaXRzIHZhbHVlIGlzIHRyZWF0ZWQgYXMgdGhlIHBhcmVudCBvZiB0aGUgJy0tcHJlZml4JworK2RpcmVjdG9yeSB3ZSBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIHNvIHRoZSBoZWFkZXJzIHdpbGwgZ28gaW4KKysnJHN5c3Jvb3QvdXNyL2luY2x1ZGUnLiAgVGhlICdpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzJyB2YXJpYWJsZQorK3JlcXVlc3RzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGNlcnRhaW4gdHJpY2t5IGhlYWRlciBmaWxlcy4KKysKKytOZXh0LCB0aGVyZSBhcmUgYSBmZXcgb2JqZWN0IGZpbGVzIG5lZWRlZCB0byBsaW5rIHNoYXJlZCBsaWJyYXJpZXMsCisrd2hpY2ggd2UgYnVpbGQgYW5kIGluc3RhbGwgYnkgaGFuZDoKKysKKysgICAgJCBta2RpciAtcCAkc3lzcm9vdC91c3IvbGliCisrICAgICQgbWFrZSBjc3Uvc3ViZGlyX2xpYgorKyAgICAkIGNwIGNzdS9jcnQxLm8gY3N1L2NydGkubyBjc3UvY3J0bi5vICRzeXNyb290L3Vzci9saWIKKysKKytGaW5hbGx5LCAnbGliZ2NjX3Muc28nIHJlcXVpcmVzIGEgJ2xpYmMuc28nIHRvIGxpbmsgYWdhaW5zdC4gIEhvd2V2ZXIsCisrc2luY2Ugd2Ugd2lsbCBuZXZlciBhY3R1YWxseSBleGVjdXRlIGl0cyBjb2RlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGF0CisraXQgY29udGFpbnMuICBTbywgdHJlYXRpbmcgJy9kZXYvbnVsbCcgYXMgYSBDIHNvdXJjZSBmaWxlLCB3ZSBwcm9kdWNlCisrYSBkdW1teSAnbGliYy5zbycgaW4gb25lIHN0ZXA6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtc2hhcmVkIC14IGMgL2Rldi9udWxsIFwKKysgICAgPiAgICAgICAgICAgICAgICAgICAgICAgIC1vICRzeXNyb290L3Vzci9saWIvbGliYy5zbworKworKworK1RoZSBTZWNvbmQgR0NDCisrCisrV2l0aCB0aGUgR0xJQkMgaGVhZGVycyBhbmQgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIGluc3RhbGxlZCwgd2UgY2FuCisrbm93IGJ1aWxkIGEgR0NDIHRoYXQgaXMgY2FwYWJsZSBvZiBjb21waWxpbmcgR0xJQkMuICBXZSBjb25maWd1cmUsCisrYnVpbGQsIGFuZCBpbnN0YWxsIHRoZSBzZWNvbmQgR0NDLCBhZ2FpbiBidWlsZGluZyBvbmx5IHRoZSBDIGNvbXBpbGVyLAorK2FuZCBhdm9pZGluZyBsaWJyYXJpZXMgd2Ugd29uJ3QgdXNlOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMgorKyAgICAkIGNkICRvYmovZ2NjMgorKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJmZmkgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKysKKytHTElCQywgQ29tcGxldGUKKysKKytXaXRoIHRoZSBzZWNvbmQgY29tcGlsZXIgYnVpbHQgYW5kIGluc3RhbGxlZCwgd2UncmUgbm93IHJlYWR5IGZvciB0aGUKKytmdWxsIEdMSUJDIGJ1aWxkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMKKysgICAgJCBjZCAkb2JqL2dsaWJjCisrICAgICQgQlVJTERfQ0M9Z2NjIFwKKysgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKKysgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCisrICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKKysgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCisrICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tcHJlZml4PS91c3IgXAorKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCisrICAgID4gICAgIC0td2l0aC1rY29uZmlnPSRvYmovbGludXgvc2NyaXB0cy9rY29uZmlnIFwKKysgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAorKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKKysgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cworKworK05vdGUgdGhlIGFkZGl0aW9uYWwgJy0td2l0aC1rY29uZmlnJyBvcHRpb24uIFRoaXMgdGVsbHMgR0xJQkMgd2hlcmUgdG8KKytmaW5kIHRoZSBob3N0IGNvbmZpZyB0b29scyB1c2VkIGJ5IHRoZSBrZXJuZWwgJ21ha2UgY29uZmlnJyBhbmQgJ21ha2UKKyttZW51Y29uZmlnJy4gIFRoZXNlIHRvb2xzIGNhbiBiZSByZS11c2VkIGJ5IEdMSUJDIGZvciBpdHMgb3duICdtYWtlCisrKmNvbmZpZycgc3VwcG9ydCwgd2hpY2ggd2lsbCBjcmVhdGUgJ29wdGlvbi1ncm91cHMuY29uZmlnJyBmb3IgeW91LgorK0J1dCBmaXJzdCBtYWtlIHN1cmUgdGhvc2UgdG9vbHMgaGF2ZSBiZWVuIGJ1aWx0IGJ5IHJ1bm5pbmcgc29tZQorK2R1bW15ICdtYWtlICpjb25maWcnIGNhbGxzIGluIHRoZSBrZXJuZWwgZGlyZWN0b3J5OgorKworKyAgICAkIGNkICRvYmovbGludXgKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBjb25maWcgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrCisrTm93IHdlIGNhbiBjb25maWd1cmUgYW5kIGJ1aWxkIHRoZSBmdWxsIEdMSUJDOgorKworKyAgICAkIGNkICRvYmovZ2xpYmMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBkZWZjb25maWcKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsIGluc3RhbGxfcm9vdD0kc3lzcm9vdAorKworK0F0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBjb21wbGV0ZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JywKKyt3aXRoIGhlYWRlciBmaWxlcywgbGlicmFyeSBmaWxlcywgYW5kIG1vc3Qgb2YgdGhlIEMgcnVudGltZSBzdGFydHVwCisrZmlsZXMgaW4gcGxhY2UuCisrCisrCisrVGhlIFRoaXJkIEdDQworKworK0ZpbmFsbHksIHdlIHJlY29tcGlsZSBHQ0MgYWdhaW5zdCB0aGlzIGZ1bGwgaW5zdGFsbGF0aW9uLCBlbmFibGluZworK3doYXRldmVyIGxhbmd1YWdlcyBhbmQgbGlicmFyaWVzIHdlIHdvdWxkIGxpa2UgdG8gdXNlOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMworKyAgICAkIGNkICRvYmovZ2NjMworKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKKysgICAgPiAgICAgLS1lbmFibGUtX19jeGFfYXRleGl0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworK1RoZSAnLS1lbmFibGUtX19jeGFfYXRleGl0JyBvcHRpb24gdGVsbHMgR0NDIHdoYXQgc29ydCBvZiBDKysKKytkZXN0cnVjdG9yIHN1cHBvcnQgdG8gZXhwZWN0IGZyb20gdGhlIEMgbGlicmFyeTsgaXQncyByZXF1aXJlZCB3aXRoCisrR0xJQkMuCisrCisrQW5kIHNpbmNlIEdDQydzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzbid0IGRlc2lnbmVkIHRvIGhlbHAgY29uc3RydWN0Cisrc3lzcm9vdCB0cmVlcywgd2UgbXVzdCBtYW51YWxseSBjb3B5IGNlcnRhaW4gbGlicmFyaWVzIGludG8gcGxhY2UgaW4KKyt0aGUgc3lzcm9vdC4KKysKKysgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGliZ2NjX3Muc28qICRzeXNyb290L2xpYgorKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJzdGRjKysuc28qICRzeXNyb290L3Vzci9saWIKKysKKysKKytUcnlpbmcgVGhpbmdzIE91dAorKworK0F0IHRoaXMgcG9pbnQsICckdG9vbHMnIGNvbnRhaW5zIGEgY3Jvc3MgdG9vbGNoYWluIHJlYWR5IHRvIHVzZQorK3RoZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JzoKKysKKysgICAgJCBjYXQgPiBoZWxsby5jIDw8RU9GCisrICAgID4gI2luY2x1ZGUgPHN0ZGlvLmg+CisrICAgID4gaW50CisrICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyAgICA+IHsKKysgICAgPiAgIHB1dHMgKCJIZWxsbywgd29ybGQhIik7CisrICAgID4gICByZXR1cm4gMDsKKysgICAgPiB9CisrICAgID4gRU9GCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtV2FsbCBoZWxsby5jIC1vIGhlbGxvCisrICAgICQgY2F0ID4gYysrLWhlbGxvLmNjIDw8RU9GCisrICAgID4gI2luY2x1ZGUgPGlvc3RyZWFtPgorKyAgICA+IGludAorKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysgICAgPiB7CisrICAgID4gICBzdGQ6OmNvdXQgPDwgIkhlbGxvLCBDKysgd29ybGQhIiA8PCBzdGQ6OmVuZGw7CisrICAgID4gICByZXR1cm4gMDsKKysgICAgPiB9CisrICAgID4gRU9GCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyAtV2FsbCBjKystaGVsbG8uY2MgLW8gYysrLWhlbGxvCisrCisrCisrV2UgY2FuIHVzZSAncmVhZGVsZicgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgYXJlIGluZGVlZCBleGVjdXRhYmxlcyBmb3IKKytvdXIgdGFyZ2V0LCB1c2luZyBvdXIgZHluYW1pYyBsaW5rZXI6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWhsIGhlbGxvCisrICAgIEVMRiBIZWFkZXI6CisrICAgIC4uLgorKyAgICAgIFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhFQyAoRXhlY3V0YWJsZSBmaWxlKQorKyAgICAgIE1hY2hpbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJNCisrCisrICAgIC4uLgorKyAgICBQcm9ncmFtIEhlYWRlcnM6CisrICAgICAgVHlwZSAgICAgICAgICAgT2Zmc2V0ICAgVmlydEFkZHIgICBQaHlzQWRkciAgIEZpbGVTaXogTWVtU2l6ICBGbGcgQWxpZ24KKysgICAgICBQSERSICAgICAgICAgICAweDAwMDAzNCAweDEwMDAwMDM0IDB4MTAwMDAwMzQgMHgwMDEwMCAweDAwMTAwIFIgRSAweDQKKysgICAgICBJTlRFUlAgICAgICAgICAweDAwMDEzNCAweDAwMDA4MTM0IDB4MDAwMDgxMzQgMHgwMDAxMyAweDAwMDEzIFIgICAweDEKKysgICAgICAgICAgW1JlcXVlc3RpbmcgcHJvZ3JhbSBpbnRlcnByZXRlcjogL2xpYi9sZC1saW51eC5zby4zXQorKyAgICAgIExPQUQgICAgICAgICAgIDB4MDAwMDAwIDB4MDAwMDgwMDAgMHgwMDAwODAwMCAweDAwNDJjIDB4MDA0MmMgUiBFIDB4ODAwMAorKyAgICAuLi4KKysKKytMb29raW5nIGF0IHRoZSBkeW5hbWljIHNlY3Rpb24gb2YgdGhlIGluc3RhbGxlZCAnbGliZ2NjX3Muc28nLCB3ZSBzZWUKKyt0aGF0IHRoZSAnTkVFREVEJyBlbnRyeSBmb3IgdGhlIEMgbGlicmFyeSBkb2VzIGluY2x1ZGUgdGhlICcuNicKKytzdWZmaXgsIGluZGljYXRpbmcgdGhhdCB3YXMgbGlua2VkIGFnYWluc3Qgb3VyIGZ1bGx5IGJ1aWxkIEdMSUJDLCBhbmQKKytub3Qgb3VyIGR1bW15ICdsaWJjLnNvJzoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtZCAkc3lzcm9vdC9saWIvbGliZ2NjX3Muc28uMQorKyAgICBEeW5hbWljIHNlY3Rpb24gYXQgb2Zmc2V0IDB4MTA4M2MgY29udGFpbnMgMjQgZW50cmllczoKKysgICAgICBUYWcgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZS9WYWx1ZQorKyAgICAgMHgwMDAwMDAwMSAoTkVFREVEKSAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBsaWJyYXJ5OiBbbGliYy5zby42XQorKyAgICAgMHgwMDAwMDAwZSAoU09OQU1FKSAgICAgICAgICAgICAgICAgICAgIExpYnJhcnkgc29uYW1lOiBbbGliZ2NjX3Muc28uMV0KKysgICAgLi4uCisrCisrCisrQW5kIG9uIHRoZSB0YXJnZXQgbWFjaGluZSwgd2UgY2FuIHJ1biBvdXIgcHJvZ3JhbXM6CisrCisrICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAorKyAgICA+IC4vaGVsbG8KKysgICAgSGVsbG8sIHdvcmxkIQorKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKKysgICAgPiAuL2MrKy1oZWxsbworKyAgICBIZWxsbywgQysrIHdvcmxkIQorZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLXRlc3RpbmcgYi9HTElCQy5jcm9zcy10ZXN0aW5nCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYjY3YjQ2ODQ2NgorLS0tIC9kZXYvbnVsbAorKysrIGIvR0xJQkMuY3Jvc3MtdGVzdGluZworQEAgLTAsMCArMSwyMDUgQEAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQorKworKyAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1UZXN0aW5nIFdpdGggR0xJQkMKKysgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisrCisrCisrSW50cm9kdWN0aW9uCisrCisrRGV2ZWxvcGVycyB3cml0aW5nIHNvZnR3YXJlIGZvciBlbWJlZGRlZCBzeXN0ZW1zIG9mdGVuIHVzZSBhIGRlc2t0b3AKKytvciBvdGhlciBzaW1pbGFybHkgY2FwYWJsZSBjb21wdXRlciBmb3IgZGV2ZWxvcG1lbnQsIGJ1dCBuZWVkIHRvIHJ1bgorK3Rlc3RzIG9uIHRoZSBlbWJlZGRlZCBzeXN0ZW0sIG9yIHBlcmhhcHMgb24gYSBzaW11bGF0b3IuICBXaGVuCisrY29uZmlndXJlZCBmb3IgY3Jvc3MtY29tcGlsYXRpb24sIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHNpbXBseQorK2Rpc2FibGVzIHJ1bm5pbmcgdGVzdHMgYWx0b2dldGhlcjogdGhlIGNvbW1hbmQgJ21ha2UgdGVzdHMnIGJ1aWxkcworK3Rlc3QgcHJvZ3JhbXMsIGJ1dCBkb2VzIG5vdCBydW4gdGhlbS4gIEdMSUJDLCBob3dldmVyLCBwcm92aWRlcworK2ZhY2lsaXRpZXMgZm9yIGNvbXBpbGluZyB0ZXN0cyBhbmQgZ2VuZXJhdGluZyBkYXRhIGZpbGVzIG9uIHRoZSBidWlsZAorK3N5c3RlbSwgYnV0IHJ1bm5pbmcgdGhlIHRlc3QgcHJvZ3JhbXMgdGhlbXNlbHZlcyBvbiBhIHJlbW90ZSBzeXN0ZW0gb3IKKytzaW11bGF0b3IuCisrCisrCisrVGVzdCBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMKKysKKytUaGUgdGVzdCBlbnZpcm9ubWVudCBtdXN0IG1lZXQgY2VydGFpbiBjb25kaXRpb25zIGZvciBHTElCQydzCisrY3Jvc3MtdGVzdGluZyBmYWNpbGl0aWVzIHRvIHdvcms6CisrCisrLSBTaGFyZWQgZmlsZXN5c3RlbXMuICBUaGUgJ2J1aWxkJyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBjb25maWd1cmUgYW5kCisrICBjb21waWxlIEdMSUJDLCBhbmQgdGhlICdob3N0JyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBpbnRlbmQgdG8gcnVuCisrICBHTElCQywgbXVzdCBzaGFyZSBhIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgR0xJQkMgYnVpbGQgYW5kCisrICBzb3VyY2UgdHJlZXMuICBGaWxlcyBtdXN0IGFwcGVhciBhdCB0aGUgc2FtZSBwYXRocyBvbiBib3RoIHN5c3RlbXMuCisrCisrLSBSZW1vdGUtc2hlbGwgbGlrZSBpbnZvY2F0aW9uLiAgVGhlcmUgbXVzdCBiZSBhIHdheSB0byBydW4gYSBwcm9ncmFtCisrICBvbiB0aGUgaG9zdCBzeXN0ZW0gZnJvbSB0aGUgYnVpbGQgc3lzdGVtLCBwYXNzaW5nIGl0IHByb3Blcmx5IHF1b3RlZAorKyAgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZAorKyAgaW5oZXJpdGluZyB0aGUgY2FsbGVyJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KKysKKysKKytVc2FnZQorKworK1RvIHVzZSBHTElCQydzIGNyb3NzLXRlc3Rpbmcgc3VwcG9ydCwgcHJvdmlkZSB2YWx1ZXMgZm9yIHRoZQorK2ZvbGxvd2luZyBNYWtlIHZhcmlhYmxlcyB3aGVuIHlvdSBpbnZva2UgJ21ha2UnOgorKworKy0gY3Jvc3MtdGVzdC13cmFwcGVyCisrCisrICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyIGNvbW1hbmQsIGFsb25nCisrICB3aXRoIGFueSBhcmd1bWVudHMuCisrCisrLSBjcm9zcy1sb2NhbGVkZWYKKysKKysgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgY3Jvc3MtY2FwYWJsZSBsb2NhbGVkZWYgcHJvZ3JhbSwgbGlrZQorKyAgdGhhdCBpbmNsdWRlZCBpbiB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlLCBhbG9uZyB3aXRoIGFueQorKyAgYXJndW1lbnRzIG5lZWRlZC4KKysKKytUaGVzZSBhcmUgZWFjaCBleHBsYWluZWQgaW4gZGV0YWlsIGJlbG93LgorKworKworK1RoZSBDcm9zcy1UZXN0aW5nIFdyYXBwZXIKKysKKytUbyBydW4gdGVzdCBwcm9ncmFtcyByZWxpYWJseSwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgdGFrZXMgY2FyZSB0bworK2Vuc3VyZSB0aGF0IHRlc3QgcHJvZ3JhbXMgdXNlIHRoZSBuZXdseSBjb21waWxlZCBkeW5hbWljIGxpbmtlciBhbmQKKytzaGFyZWQgbGlicmFyaWVzLCBhbmQgbmV2ZXIgdGhlIGhvc3Qgc3lzdGVtJ3MgaW5zdGFsbGVkIGxpYnJhcmllcy4gIFRvCisrYWNjb21wbGlzaCB0aGlzLCBpdCBydW5zIHRoZSB0ZXN0cyBieSBleHBsaWNpdGx5IGludm9raW5nIHRoZSBkeW5hbWljCisrbGlua2VyIGZyb20gdGhlIGJ1aWxkIHRyZWUsIHBhc3NpbmcgaXQgYSBsaXN0IG9mIGJ1aWxkIHRyZWUKKytkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIHNoYXJlZCBsaWJyYXJpZXMsIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mCisrdGhlIGV4ZWN1dGFibGUgdG8gcnVuIGFuZCBpdHMgYXJndW1lbnRzLgorKworK0ZvciBleGFtcGxlLCB3aGVyZSBvbmUgbWlnaHQgbm9ybWFsbHkgcnVuIGEgdGVzdCBwcm9ncmFtIGxpa2UgdGhpczoKKysKKysgICAgJCAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrdGhlIEdOVSBDIGxpYnJhcnkgbWlnaHQgcnVuIHRoYXQgcHJvZ3JhbSBsaWtlIHRoaXM6CisrCisrICAgICQgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrKHdoZXJlICRvYmpkaXIgaXMgdGhlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgYnVpbGQgdHJlZSwgYW5kIHRoZQorK3RyYWlsaW5nIGJhY2tzbGFzaCBpbmRpY2F0ZXMgYSBjb250aW51YXRpb24gb2YgdGhlIGNvbW1hbmQpLiAgSW4gb3RoZXIKKyt3b3JkcywgZWFjaCB0ZXN0IHByb2dyYW0gaW52b2NhdGlvbiBpcyAnd3JhcHBlZCB1cCcgaW5zaWRlIGFuIGV4cGxpY2l0CisraW52b2NhdGlvbiBvZiB0aGUgZHluYW1pYyBsaW5rZXIsIHdoaWNoIG11c3QgaXRzZWxmIGV4ZWN1dGUgdGhlIHRlc3QKKytwcm9ncmFtLCBoYXZpbmcgbG9hZGVkIHNoYXJlZCBsaWJyYXJpZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUKKytkaXJlY3Rvcmllcy4KKysKKytUbyBzdXBwb3J0IGNyb3NzLXRlc3RpbmcsIEdMSUJDIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIG9wdGlvbmFsbHkKKytzZXQgdGhlICdjcm9zcy10ZXN0LXdyYXBwZXInIE1ha2UgdmFyaWFibGUgdG8gYW5vdGhlciB3cmFwcGVyIGNvbW1hbmQsCisrdG8gd2hpY2ggaXQgcGFzc2VzIHRoZSBlbnRpcmUgZHluYW1pYyBsaW5rZXIgaW52b2NhdGlvbiBzaG93biBhYm92ZSBhcworK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBpZiB0aGUgZGV2ZWxvcGVyIHN1cHBsaWVzIGEgd3JhcHBlciBvZgorKydteS13cmFwcGVyIGhvc3RuYW1lJywgdGhlbiBHTElCQyB3b3VsZCBydW4gdGhlIHRlc3QgYWJvdmUgYXMKKytmb2xsb3dzOgorKworKyAgICAkIG15LXdyYXBwZXIgaG9zdG5hbWUgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworK1RoZSAnbXktd3JhcHBlcicgY29tbWFuZCBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIHRoZSBjb21tYW5kCisrZ2l2ZW4gb24gdGhlIGhvc3Qgc3lzdGVtLgorKworK1NpbmNlIHRlc3RzIGFyZSBydW4gaW4gdmFyeWluZyBkaXJlY3RvcmllcywgdGhlIHdyYXBwZXIgc2hvdWxkIGVpdGhlcgorK2JlIGluIHlvdXIgY29tbWFuZCBzZWFyY2ggcGF0aCwgb3IgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgc2hvdWxkIGdpdmUgYW4KKythYnNvbHV0ZSBwYXRoIGZvciB0aGUgd3JhcHBlci4KKysKKytUaGUgd3JhcHBlciBtdXN0IG1lZXQgc2V2ZXJhbCByZXF1aXJlbWVudHM6CisrCisrLSBJdCBtdXN0IHByZXNlcnZlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlCisrICBidWlsZCBkaXJlY3RvcnkgdHJlZSBtdXN0IGJlIHZpc2libGUgb24gYm90aCB0aGUgYnVpbGQgYW5kIGhvc3QKKysgIHN5c3RlbXMsIGF0IHRoZSBzYW1lIHBhdGguICBUaGUgdGVzdCB3cmFwcGVyIG11c3QgZW5zdXJlIHRoYXQgdGhlCisrICBjdXJyZW50IGRpcmVjdG9yeSBpdCBpbmhlcml0cyBpcyBhbHNvIGluaGVyaXRlZCBieSB0aGUgZHluYW1pYworKyAgbGlua2VyIChhbmQgdGh1cyB0aGUgdGVzdCBwcm9ncmFtIGl0c2VsZikuCisrCisrLSBJdCBtdXN0IHByZXNlcnZlIGVudmlyb25tZW50IHZhcmlhYmxlcycgdmFsdWVzLiAgTWFueSBHTElCQyB0ZXN0cworKyAgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBydW5zOyBpbiBuYXRpdmUgdGVzdGluZywgaXQKKysgIGludm9rZXMgcHJvZ3JhbXMgbGlrZSB0aGlzOgorKworKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyAgV2l0aCB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyLCB0aGF0IGludm9jYXRpb24gYmVjb21lczoKKysKKysgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKKysgICAgICBteS13cmFwcGVyIGhvc3RuYW1lIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysgIEhlcmUsICdteS13cmFwcGVyJyBtdXN0IGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpdCBzZWVzIGZvcgorKyAgJ0dDT05WX1BBVEgnIHdpbGwgYmUgc2VlbiBieSB0aGUgZHluYW1pYyBsaW5rZXIsIGFuZCB0aHVzICd0c3QtZm9vJworKyAgaXRzZWxmLiAgKFRoZSB3cmFwcGVyIHN1cHBsaWVkIHdpdGggR0xJQkMgc2ltcGx5IHByZXNlcnZlcyB0aGUKKysgIHZhbHVlcyBvZiAqYWxsKiBlbnZpcm9tZW50IHZhcmlhYmxlcywgd2l0aCBhIGZpeGVkIHNldCBvZgorKyAgZXhjZXB0aW9ucy4pCisrCisrICBJZiB5b3VyIHdyYXBwZXIgaXMgYSBzaGVsbCBzY3JpcHQsIHRha2UgY2FyZSB0byBjb3JyZWN0bHkgcHJvcGFnYXRlCisrICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hvc2UgdmFsdWVzIGNvbnRhaW4gc3BhY2VzIGFuZCBzaGVsbAorKyAgbWV0YWNoYXJhY3RlcnMuCisrCisrLSBJdCBtdXN0IHBhc3MgdGhlIGNvbW1hbmQncyBhcmd1bWVudHMsIHVubW9kaWZpZWQuICBUaGUgYXJndW1lbnRzCisrICBzZWVuIGJ5IHRoZSB0ZXN0IHByb2dyYW0gc2hvdWxkIGJlIGV4YWN0bHkgdGhvc2Ugc2VlbiBieSB0aGUgd3JhcHBlcgorKyAgKGFmdGVyIHdoYXRldmVyIGFyZ3VtZW50cyBhcmUgZ2l2ZW4gdG8gdGhlIHdyYXBwZXIgaXRzZWxmKS4gIFRoZQorKyAgR0xJQkMgdGVzdCBmcmFtZXdvcmsgcGVyZm9ybXMgYWxsIG5lZWRlZCBzaGVsbCB3b3JkIHNwbGl0dGluZyBhbmQKKysgIGV4cGFuc2lvbiAod2lsZGNhcmQgZXhwYW5zaW9uLCBwYXJhbWV0ZXIgc3Vic3RpdHV0aW9uLCBhbmQgc28gb24pCisrICBiZWZvcmUgaW52b2tpbmcgdGhlIHdyYXBwZXI7IGZ1cnRoZXIgZXhwYW5zaW9uIG1heSBicmVhayB0aGUgdGVzdHMuCisrCisrCisrVGhlICdjcm9zcy10ZXN0LXNzaC5zaCcgc2NyaXB0CisrCisrSWYgeW91IHdhbnQgdG8gdXNlICdzc2gnIChvciBzb21ldGhpbmcgc3VmZmljaWVudGx5IHNpbWlsYXIpIHRvIHJ1bgorK3Rlc3QgcHJvZ3JhbXMgb24geW91ciBob3N0IHN5c3RlbSwgR0xJQkMgaW5jbHVkZXMgYSBzaGVsbCBzY3JpcHQsCisrJ3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2gnLCB3aGljaCB5b3UgY2FuIHVzZSBhcyB5b3VyIHdyYXBwZXIKKytjb21tYW5kLiAgVGhpcyBzY3JpcHQgdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRoZSB0ZXN0IGNvbW1hbmQncyBjdXJyZW50CisrZGlyZWN0b3J5LCBwcm9wYWdhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMsIGFuZCBjYXJyeWluZworK2NvbW1hbmQtbGluZSBhcmd1bWVudHMsIGFsbCBhY3Jvc3MgYW4gJ3NzaCcgY29ubmVjdGlvbi4gIFlvdSBtYXkgZXZlbgorK3N1cHBseSBhbiBhbHRlcm5hdGl2ZSB0byAnc3NoJyBvbiB0aGUgY29tbWFuZCBsaW5lLCBpZiBuZWVkZWQuCisrCisrRm9yIG1vcmUgZGV0YWlscywgcGFzcyAnY3Jvc3MtdGVzdC1zc2guc2gnIHRoZSAnLS1oZWxwJyBvcHRpb24uCisrCisrCisrVGhlIENyb3NzLUNvbXBpbGluZyBMb2NhbGUgRGVmaW5pdGlvbiBDb21tYW5kCisrCisrU29tZSBHTElCQyB0ZXN0cyByZWx5IG9uIGxvY2FsZXMgZ2VuZXJhdGVkIGVzcGVjaWFsbHkgZm9yIHRoZSB0ZXN0CisrcHJvY2Vzcy4gIEluIGEgbmF0aXZlIGNvbmZpZ3VyYXRpb24sIHRoZXNlIHRlc3RzIHNpbXBseSBydW4gdGhlCisrJ2xvY2FsZWRlZicgY29tbWFuZCBidWlsdCBieSB0aGUgbm9ybWFsIEdMSUJDIGJ1aWxkIHByb2Nlc3MsCisrJ2xvY2FsZS9sb2NhbGVkZWYnLCB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIHRoZWlyIGxvY2FsZXMuICBIb3dldmVyLCBpbgorK2EgY3Jvc3MtY29tcGlsaW5nIGNvbmZpZ3VyYXRpb24sIHRoaXMgJ2xvY2FsZWRlZicgaXMgYnVpbHQgZm9yIHRoZQorK2hvc3Qgc3lzdGVtLCBub3QgdGhlIGJ1aWxkIHN5c3RlbSwgYW5kIHNpbmNlIGl0IHJlcXVpcmVzIHF1aXRlIGEgYml0Cisrb2YgbWVtb3J5IHRvIHJ1biAod2UgaGF2ZSBzZWVuIGl0IGZhaWwgb24gc3lzdGVtcyB3aXRoIDY0TWlCIG9mCisrbWVtb3J5KSwgaXQgbWF5IG5vdCBiZSBwcmFjdGljYWwgdG8gcnVuIGl0IG9uIHRoZSBob3N0IHN5c3RlbS4KKysKKytJZiBzZXQsIEdMSUJDIHVzZXMgdGhlICdjcm9zcy1sb2NhbGVkZWYnIE1ha2UgdmFyaWFibGUgYXMgdGhlIGNvbW1hbmQKKyt0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbSB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIGxvY2FsZXMuICBUaGUKKytsb2NhbGVkZWYgcHJvZ3JhbSBidWlsdCBmcm9tIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUgaXMKKytzdWl0YWJsZS4KKysKKytUaGUgdmFsdWUgb2YgJ2Nyb3NzLWxvY2FsZWRlZicgbWF5IGFsc28gaW5jbHVkZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzCisrdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9ncmFtOyBpZiB5b3UgYXJlIHVzaW5nIEdMSUJDJ3MgJ2xvY2FsZWRlZicsCisreW91IG1heSBpbmNsdWRlIGVuZGlhbm5lc3MgYW5kICd1aW50MzJfdCcgYWxpZ25tZW50IGFyZ3VtZW50cyBoZXJlLgorKworKworK0V4YW1wbGUKKysKKytJbiBkZXZlbG9waW5nIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBmYWNpbGl0eSwgd2UgaW52b2tlZCAnbWFrZScgd2l0aAorK3RoZSBmb2xsb3dpbmcgc2NyaXB0OgorKworKyAgICAjIS9iaW4vc2gKKysKKysgICAgc3JjZGlyPS4uLgorKyAgICB0ZXN0X2hvc3RuYW1lPS4uLgorKyAgICBsb2NhbGVkZWZkaXI9Li4uCisrICAgIGNyb3NzX2d4eD0uLi4tZysrCisrCisrICAgIHdyYXBwZXI9IiRzcmNkaXIvc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCAkdGVzdF9ob3N0bmFtZSIKKysgICAgbG9jYWxlZGVmPSIkbG9jYWxlZGVmZGlyL2xvY2FsZWRlZiAtLWxpdHRsZS1lbmRpYW4gLS11aW50MzItYWxpZ249NCIKKysKKysgICAgbWFrZSBjcm9zcy10ZXN0LXdyYXBwZXI9IiR3cmFwcGVyIiBcCisrICAgICAgICAgY3Jvc3MtbG9jYWxlZGVmPSIkbG9jYWxlZGVmIiBcCisrICAgICAgICAgQ1hYPSIkY3Jvc3NfZ3h4IiBcCisrICAgICAgICAgIiRAIgorKworKworK090aGVyIENyb3NzLVRlc3RpbmcgQ29uY2VybnMKKysKKytIZXJlIGFyZSBub3RlcyBvbiBzb21lIG90aGVyIGlzc3VlcyB3aGljaCB5b3UgbWF5IGVuY291bnRlciBpbiBydW5uaW5nCisrdGhlIEdMSUJDIHRlc3RzIGluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50OgorKworKy0gU29tZSB0ZXN0cyByZXF1aXJlIGEgQysrIGNyb3NzLWNvbXBpbGVyOyB5b3Ugc2hvdWxkIHNldCB0aGUgJ0NYWCcKKysgIE1ha2UgdmFyaWFibGUgdG8gdGhlIG5hbWUgb2YgYW4gYXBwcm9wcmlhdGUgY3Jvc3MtY29tcGlsZXIuCisrCisrLSBTb21lIHRlc3RzIHJlcXVpcmUgYWNjZXNzIHRvIGxpYnN0ZGMrKy5zby42IGFuZCBsaWJnY2Nfcy5zby4xOyB3ZQorKyAgc2ltcGx5IHBsYWNlIGNvcGllcyBvZiB0aGVzZSBsaWJyYXJpZXMgaW4gdGhlIHRvcCBHTElCQyBidWlsZAorKyAgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkNTQ3Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIGZjZmExOWI2OWU4NzQ5NDc3MDIyMTYxYTgwOGEyMDE4MDdlZjcyZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzI3XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgotCi1UYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQotCi0gICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgotICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKLSAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KLQotICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCi0gICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcwotICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgotICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCi0gICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgotICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCi0gaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBiZWE0ZTI3ZjhkLi44YzgzY2ZhZGM2IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCi0gdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCi0gCi0gIyBXaGF0IHRvIGluc3RhbGwuCi0taW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLSBpbnN0YWxsLWJpbi1zY3JpcHQgPQotIAotKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCi0rIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCi0rIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKLSsjIGJ1aWxkIGlzIGRvbmUuCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0raW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbHNlCi0raW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbmRpZgotKwotIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCi0gaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKLSBlbmRpZgotQEAgLTE1Miw2ICsxNjEsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAotIAotIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKLSAKLSsjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubwotKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5Ci0rIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KLStpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKLSskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCi0rCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQotKwkkKElOU1RBTExfREFUQSkgJDwgJEAKLSsKLStpbnN0YWxsZWQtc3R1YnMgPQotK2Vsc2UKLSBpZm5kZWYgYWJpLXZhcmlhbnRzCi0gaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gZWxzZQotQEAgLTE3OCw2ICsxOTcsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQotIAotIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKLSBlbmRpZgotK2VuZGlmCi0gCi0gCi0gIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCi0rCi0rICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCi0rICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0Ci0rICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgotKwotKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCi0rICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQotKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKLSsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2JmZTRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotRnJvbSBjNmYyZGIwZDdjNWM2NWJmYTE5NzY2YTBlMWNlODIxMDExMWY5YzdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTU6MTU6MDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yN10gZWdsaWJjOiBDbGVhciBjYWNoZSBsaW5lcyBvbiBwcGM4eHgKLQotMjAwNy0wNi0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAgICAgICAgICAgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLSAgICAgICAgKF9fbGliY19zdGFydF9tYWluKTogRGV0ZWN0IDh4eCBwYXJ0cyBhbmQgY2xlYXIKLSAgICAgICAgX19jYWNoZV9saW5lX3NpemUgaWYgZGV0ZWN0ZWQuCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotICAgICAgICAoRExfUExBVEZPUk1fQVVYVik6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgIHwgMTQgKysrKysrKysrKysrKy0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyB8IDE2ICsrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotaW5kZXggNzgwNTFiYzdiYy4uZTI0ZjQ0MjMyMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLUBAIC0yNCw5ICsyNCwyMSBAQCBpbnQgX19jYWNoZV9saW5lX3NpemUgYXR0cmlidXRlX2hpZGRlbjsKLSAvKiBTY2FuIHRoZSBBdXggVmVjdG9yIGZvciB0aGUgIkRhdGEgQ2FjaGUgQmxvY2sgU2l6ZSIgZW50cnkuICBJZiBmb3VuZAotICAgIHZlcmlmeSB0aGF0IHRoZSBzdGF0aWMgZXh0ZXJuIF9fY2FjaGVfbGluZV9zaXplIGlzIGRlZmluZWQgYnkgY2hlY2tpbmcKLSAgICBmb3Igbm90IE5VTEwuICBJZiBpdCBpcyBkZWZpbmVkIHRoZW4gYXNzaWduIHRoZSBjYWNoZSBibG9jayBzaXplCi0tICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICAqLwotKyAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0bwotKyAgIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8gZGV0ZWN0IDh4eCBwcm9jZXNzb3JzLCB3aGljaAotKyAgIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzCi0rICAgY29ycmVjdGx5LiAgVGhhdCByZXF1aXJlcyByZWFkaW5nIFNQUiwgd2hpY2ggaXMgYSBwcml2aWxlZ2VkCi0rICAgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlciBlbXVsYXRlcyBQb3dlclBDIG1mc3ByCi0rICAgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgICovCi0gI2RlZmluZSBETF9QTEFURk9STV9BVVhWCQkJCQkJICAgICAgXAotICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6CQkJCQkJICAgICAgXAotKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkJCQkJICAgICAgXAotKwkgIHsJCQkJCQkJCSAgICAgIFwKLSsJICAgIHVuc2lnbmVkIHB2ciA9IDA7CQkJCQkJICAgICAgXAotKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpKTsJCQkJICAgICAgXAotKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQkJCSAgICAgIFwKLSsJICAgICAgYnJlYWs7CQkJCQkJCSAgICAgIFwKLSsJICB9CQkJCQkJCQkgICAgICBcCi0gCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7CQkJCSAgICAgIFwKLSAJYnJlYWs7Ci0gCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotaW5kZXggZjJhZDBjMzU1ZC4uM2U2NzczNzk1ZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotQEAgLTczLDExICs3MywyNSBAQCBfX2xpYmNfc3RhcnRfbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2LAotIAotICAgLyogSW5pdGlhbGl6ZSB0aGUgX19jYWNoZV9saW5lX3NpemUgdmFyaWFibGUgZnJvbSB0aGUgYXV4IHZlY3Rvci4gIEZvciB0aGUKLSAgICAgIHN0YXRpYyBjYXNlLCB3ZSBhbHNvIG5lZWQgX2RsX2h3Y2FwLCBfZGxfaHdjYXAyIGFuZCBfZGxfcGxhdGZvcm0sIHNvIHdlCi0tICAgICBjYW4gY2FsbCBfX3RjYl9wYXJzZV9od2NhcF9hbmRfY29udmVydF9hdF9wbGF0Zm9ybSAoKS4gICovCi0rICAgICBjYW4gY2FsbCBfX3RjYl9wYXJzZV9od2NhcF9hbmRfY29udmVydF9hdF9wbGF0Zm9ybSAoKS4KLSsKLSsgICAgIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8gb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0bwotKyAgICAgZGV0ZWN0IDh4eCBwcm9jZXNzb3JzLCB3aGljaCBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQKLSsgICAgIGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMgY29ycmVjdGx5LiAgVGhhdCByZXF1aXJlcyByZWFkaW5nIFNQUiwKLSsgICAgIHdoaWNoIGlzIGEgcHJpdmlsZWdlZCBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyCi0rICAgICBlbXVsYXRlcyBQb3dlclBDIG1mc3ByIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICovCi0gICBmb3IgKEVsZlcgKGF1eHZfdCkgKiBhdiA9IGF1eHZlYzsgYXYtPmFfdHlwZSAhPSBBVF9OVUxMOyArK2F2KQotICAgICBzd2l0Y2ggKGF2LT5hX3R5cGUpCi0gICAgICAgewotICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6Ci0rCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQotKwkgIHsKLSsJICAgIHVuc2lnbmVkIHB2ciA9IDA7Ci0rCi0rCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikgOik7Ci0rCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCi0rCSAgICAgIGJyZWFrOwotKwkgIH0KLSAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsKLSAJYnJlYWs7Ci0gI2lmbmRlZiBTSEFSRUQKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFjMmFiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0wLDAgKzEsOTcgQEAKK0Zyb20gZjRlYzU1MjdkNTYyZDM4NTIzYWJiODU4N2E2Yzc1MzJlOWQyMWY4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQ5OjI4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogSGVscCBib290c3RyYXAgY3Jvc3MgdG9vbGNoYWluCisKK1Rha2VuIGZyb20gRUdMSUJDLCByMTQ4NCArIHIxNTI1CisKKyAgICAgICAgMjAwNy0wMi0yMCAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgICAgICAgICAgICAgICogTWFrZWZpbGUgKGluc3RhbGwtaGVhZGVycyk6IFByZXNlcnZlIG9sZCBiZWhhdmlvcjogZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oIG9ubHkgaWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycworICAgICAgICAgICAgICAgIGlzIHNldDsgb3RoZXJ3aXNlLCBwbGFjZSBnbnUvc3R1YnMuaCBvbiB0aGUgJ2luc3RhbGwtb3RoZXJzJyBsaXN0LgorCisgICAgICAgIDIwMDctMDItMTYgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlOiBBbWVuZCBtYWtlIGluc3RhbGwtaGVhZGVycyB0byBpbnN0YWxsIGV2ZXJ5dGhpbmcKKyAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEgY3Jvc3MtY29tcGlsZXIuICBJbnN0YWxsIGdudS9zdHVicy5oIGFzCisgICAgICAgICAgICAgICAgcGFydCBvZiAnaW5zdGFsbC1oZWFkZXJzJywgbm90ICdpbnN0YWxsLW90aGVycycuCisgICAgICAgICAgICAgICAgSWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycyBpcyAneWVzJywgaW5zdGFsbCBhIGR1bW15IGNvcHkgb2YKKyAgICAgICAgICAgICAgICBnbnUvc3R1YnMuaCwgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIHJlYWwgdGhpbmcuCisgICAgICAgICAgICAgICAgKiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oOiBOZXcgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KKyBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIHwgMTIgKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGQzZjI1YTUyNWEuLmFiMzgzODY3ZTIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC03MCw5ICs3MCwxOCBAQCBzdWJkaXItZGlycyA9IGluY2x1ZGUKKyB2cGF0aCAlLmggJChzdWJkaXItZGlycykKKyAKKyAjIFdoYXQgdG8gaW5zdGFsbC4KKy1pbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorIGluc3RhbGwtYmluLXNjcmlwdCA9CisgCisrIyBJZiB3ZSdyZSBib290c3RyYXBwaW5nLCBpbnN0YWxsIGEgZHVtbXkgZ251L3N0dWJzLmggYWxvbmcgd2l0aCB0aGUKKysjIG90aGVyIGhlYWRlcnMsIHNvICdtYWtlIGluc3RhbGwtaGVhZGVycycgcHJvZHVjZXMgYSB1c2VhYmxlIGluY2x1ZGUKKysjIHRyZWUuICBPdGhlcndpc2UsIGluc3RhbGwgZ251L3N0dWJzLmggbGF0ZXIsIGFmdGVyIHRoZSByZXN0IG9mIHRoZQorKyMgYnVpbGQgaXMgZG9uZS4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKytpbnN0YWxsLWhlYWRlcnM6ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorK2Vsc2UKKytpbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorK2VuZGlmCisrCisgaWZlcSAoeWVzLCQoYnVpbGQtc2hhcmVkKSkKKyBoZWFkZXJzICs9IGdudS9saWItbmFtZXMuaAorIGVuZGlmCitAQCAtMTk1LDYgKzIwNCwxNiBAQCBvdGhlcnM6ICQoY29tbW9uLW9ianBmeCl0ZXN0cnVuLnNoCisgCisgc3ViZGlyLXN0dWJzIDo9ICQoZm9yZWFjaCBkaXIsJChzdWJkaXJzKSwkKGNvbW1vbi1vYmpwZngpJChkaXIpL3N0dWJzKQorIAorKyMgZ251L3N0dWJzLmggZGVwZW5kcyAodmlhIHRoZSBzdWJkaXIgJ3N0dWJzJyB0YXJnZXRzKSBvbiBhbGwgdGhlIC5vCisrIyBmaWxlcyBpbiBFR0xJQkMuICBGb3IgYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgYW4gZW1wdHkKKysjIGdudS9zdHVicy5oIGlzIGdvb2QgZW5vdWdoLgorK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQorKyQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCAkKCtmb3JjZSkKKysJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCisrCSQoSU5TVEFMTF9EQVRBKSAkPCAkQAorKworK2luc3RhbGxlZC1zdHVicyA9CisrZWxzZQorIGlmbmRlZiBhYmktdmFyaWFudHMKKyBpbnN0YWxsZWQtc3R1YnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBlbHNlCitAQCAtMjIxLDYgKzI0MCw3IEBAICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogJCgrZm9yY2UpCisgCisgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbGVkLXN0dWJzKQorIGVuZGlmCisrZW5kaWYKKyAKKyAKKyAjIFNpbmNlIHN0dWJzLmggaXMgbmV2ZXIgbmVlZGVkIHdoZW4gYnVpbGRpbmcgdGhlIGxpYnJhcnksIHdlIHNpbXBsaWZ5IHRoZQorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMWQyYjY2OWFmZgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorQEAgLTAsMCArMSwxMiBAQAorKy8qIFBsYWNlaG9sZGVyIHN0dWJzLmggZmlsZSBmb3IgYm9vdHN0cmFwcGluZy4KKysKKysgICBXaGVuIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIEdDQyByZXF1aXJlcyB0aGF0IHRoZSBFR0xJQkMKKysgICBoZWFkZXJzIGJlIGluc3RhbGxlZCwgYnV0IHdlIGNhbid0IGZ1bGx5IGJ1aWxkIEVHTElCQyB3aXRob3V0IHRoYXQKKysgICBHQ0MuICBTbyB3ZSBydW4gdGhlIGNvbW1hbmQ6CisrCisrICAgICAgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKKysKKysgICB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIEdDQyBuZWVkcywgYnV0IGF2b2lkIGJ1aWxkaW5nIGNlcnRhaW4KKysgICBkaWZmaWN1bHQgaGVhZGVycy4gIFRoZSA8Z251L3N0dWJzLmg+IGhlYWRlciBkZXBlbmRzLCB2aWEgdGhlCisrICAgRUdMSUJDIHN1YmRpciAnc3R1YnMnIG1ha2UgdGFyZ2V0cywgb24gZXZlcnkgLm8gZmlsZSBpbiBFR0xJQkMsIGJ1dAorKyAgIGFuIGVtcHR5IHN0dWJzLmggbGlrZSB0aGlzIHdpbGwgZG8gZmluZSBmb3IgR0NDLiAgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU0NzVhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCkBAIC0wLDAgKzEsODAgQEAKK0Zyb20gNmMyMzY2MGQwMzVlNzFkZTBlMjBiNDA0NjBhZDMwNTBiZDA1NzY2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CisKKzIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CisgICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCisgICAgICAgIChfX2xpYmNfc3RhcnRfbWFpbik6IERldGVjdCA4eHggcGFydHMgYW5kIGNsZWFyCisgICAgICAgIF9fY2FjaGVfbGluZV9zaXplIGlmIGRldGVjdGVkLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKKyAgICAgICAgKERMX1BMQVRGT1JNX0FVWFYpOiBMaWtld2lzZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jICB8IDE0ICsrKysrKysrKysrKystCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgfCAxNiArKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKK2luZGV4IDc4MDUxYmM3YmMuLmUyNGY0NDIzMjAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCitAQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47CisgLyogU2NhbiB0aGUgQXV4IFZlY3RvciBmb3IgdGhlICJEYXRhIENhY2hlIEJsb2NrIFNpemUiIGVudHJ5LiAgSWYgZm91bmQKKyAgICB2ZXJpZnkgdGhhdCB0aGUgc3RhdGljIGV4dGVybiBfX2NhY2hlX2xpbmVfc2l6ZSBpcyBkZWZpbmVkIGJ5IGNoZWNraW5nCisgICAgZm9yIG5vdCBOVUxMLiAgSWYgaXQgaXMgZGVmaW5lZCB0aGVuIGFzc2lnbiB0aGUgY2FjaGUgYmxvY2sgc2l6ZQorLSAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgKi8KKysgICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8KKysgICBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2gKKysgICBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cworKyAgIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsIHdoaWNoIGlzIGEgcHJpdmlsZWdlZAorKyAgIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIgZW11bGF0ZXMgUG93ZXJQQyBtZnNwcgorKyAgIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICAqLworICNkZWZpbmUgRExfUExBVEZPUk1fQVVYVgkJCQkJCSAgICAgIFwKKyAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgkJCQkJCSAgICAgIFwKKysJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCQkJCSAgICAgIFwKKysJICB7CQkJCQkJCQkgICAgICBcCisrCSAgICB1bnNpZ25lZCBwdnIgPSAwOwkJCQkJCSAgICAgIFwKKysJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSk7CQkJCSAgICAgIFwKKysJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkJCQkgICAgICBcCisrCSAgICAgIGJyZWFrOwkJCQkJCQkgICAgICBcCisrCSAgfQkJCQkJCQkJICAgICAgXAorIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwkJCQkgICAgICBcCisgCWJyZWFrOworIAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKK2luZGV4IGYyYWQwYzM1NWQuLjNlNjc3Mzc5NWUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKK0BAIC03MywxMSArNzMsMjUgQEAgX19saWJjX3N0YXJ0X21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwKKyAKKyAgIC8qIEluaXRpYWxpemUgdGhlIF9fY2FjaGVfbGluZV9zaXplIHZhcmlhYmxlIGZyb20gdGhlIGF1eCB2ZWN0b3IuICBGb3IgdGhlCisgICAgICBzdGF0aWMgY2FzZSwgd2UgYWxzbyBuZWVkIF9kbF9od2NhcCwgX2RsX2h3Y2FwMiBhbmQgX2RsX3BsYXRmb3JtLCBzbyB3ZQorLSAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuICAqLworKyAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuCisrCisrICAgICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8KKysgICAgIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2ggaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0CisrICAgICBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsCisrICAgICB3aGljaCBpcyBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlcgorKyAgICAgZW11bGF0ZXMgUG93ZXJQQyBtZnNwciByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAqLworICAgZm9yIChFbGZXIChhdXh2X3QpICogYXYgPSBhdXh2ZWM7IGF2LT5hX3R5cGUgIT0gQVRfTlVMTDsgKythdikKKyAgICAgc3dpdGNoIChhdi0+YV90eXBlKQorICAgICAgIHsKKyAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgorKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkKKysJICB7CisrCSAgICB1bnNpZ25lZCBwdnIgPSAwOworKworKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpIDopOworKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQorKwkgICAgICBicmVhazsKKysJICB9CisgCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7CisgCWJyZWFrOworICNpZm5kZWYgU0hBUkVECmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlmNzY3MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA1NzcwODUwMTZiYjkyNmE2ODdhYmVjMTQ1NTU3ZmU4Y2I4ZjVhZjBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yN10gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAotCi0yMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KLQotICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotQEAgLTIsNiArMiw3IEBAIGxpYmMgewotICAgR0xJQkNfMi4yIHsKLSAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKLSAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OwotKyAgICBfX2Zwc2NyX3ZhbHVlczsKLSAKLSAgICAgIyBhKgotICAgICBhbHBoYXNvcnQ2NDsKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1pbmRleCBjNGUyOGZmYjk4Li42NDhiYWUwM2Q1IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1AQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKLSAKLSAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQotICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+Ci0rCi0rICAgICAgIC5kYXRhCi0rICAgICAgIC5hbGlnbiAzCi0rICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKLSsgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0Ci0rICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAotK19fX2Zwc2NyX3ZhbHVlczoKLSsgICAgICAgLmxvbmcgMAotKyAgICAgICAubG9uZyAweDgwMDAwCi0rd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKLSsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzBmNGUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotRnJvbSBjMWJlYWI4YTExOTg1Zjk2ZjVlYjY0NGU3MTAzZDM0M2I3MDVhZmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTc6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yN10gZWdsaWJjOiBJbnN0YWxsIFBJQyBhcmNoaXZlcwotCi1Gb3J3YXJkIHBvcnQgZnJvbSBlZ2xpYmMKLQotMjAwOC0wMi0wNyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtZXh0cmFzLCBpbnN0YWxsLW1hcCk6IE5ldyB2YXJpYWJsZXMuCi0gICAgICAgIChpbnN0YWxsZWQtbGliY3MpOiBBZGQgbGliY19waWMuYS4KLSAgICAgICAgKGluc3RhbGwtbGliKTogSW5jbHVkZSBfcGljLmEgZmlsZXMgZm9yIHZlcnNpb25lZCBzaGFyZWQKLSAgICAgICAgbGlicmFyaWVzLgotICAgICAgICAoaW5zdGFsbC1tYXAtbm9zdWJkaXIsIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyKTogQWRkIHJ1bGVzIGZvcgotICAgICAgICBpbnN0YWxsaW5nIGV4dHJhIGZpbGVzLgotICAgICAgICAoaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIpOiBEZXBlbmQgb24gaW5zdGFsbC1tYXAtbm9zdWJkaXIgYW5kCi0gICAgICAgIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyLgotCi0yMDA4LTA0LTAxICBNYXhpbSBLdXZ5cmtvdiAgPG1heGltQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtbGliKTogRG9uJ3QgaW5zdGFsbCBsaWJwdGhyZWFkX3BpYy5hLgotICAgICAgICAoaW5zdGFsbC1tYXApOiBEb24ndCBpbnN0YWxsIGxpYnB0aHJlYWRfcGljLm1hcC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlcnVsZXMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcwotaW5kZXggZWY2YWJlYWM2ZC4uZWVhYTY2N2Y0OSAxMDA2NDQKLS0tLSBhL01ha2VydWxlcwotKysrIGIvTWFrZXJ1bGVzCi1AQCAtNzc4LDYgKzc3OCw5IEBAIGlmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCi0gJChjb21tb24tb2JqcGZ4KWxpYmMuc286ICQoY29tbW9uLW9ianBmeClsaWJjLm1hcAotIGVuZGlmCi0gY29tbW9uLWdlbmVyYXRlZCArPSBsaWJjLnNvIGxpYmNfcGljLm9zCi0raWZuZGVmIHN1YmRpcgotK2luc3RhbGwtZXh0cmFzIDo9IHNvaW5pdC5vIHNvZmluaS5vCi0rZW5kaWYKLSBpZmRlZiBsaWJjLnNvLXZlcnNpb24KLSAkKGNvbW1vbi1vYmpwZngpbGliYy5zbyQobGliYy5zby12ZXJzaW9uKTogJChjb21tb24tb2JqcGZ4KWxpYmMuc28KLSAJJChtYWtlLWxpbmspCi1AQCAtMTAyOSw2ICsxMDMyLDcgQEAgZW5kaWYKLSAKLSBpbnN0YWxsOiBjaGVjay1pbnN0YWxsLXN1cHBvcnRlZAotIAotK2luc3RhbGxlZC1saWJjcyA6PSAkKGluc3RhbGxlZC1saWJjcykgJChpbnN0X2xpYmRpcikvbGliY19waWMuYQotIGluc3RhbGw6ICQoaW5zdGFsbGVkLWxpYmNzKQotICQoaW5zdGFsbGVkLWxpYmNzKTogJChpbnN0X2xpYmRpcikvbGliJChsaWJwcmVmaXgpJTogbGliICQoK2ZvcmNlKQotIAkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKLUBAIC0xMDU3LDYgKzEwNjEsMjIgQEAgdmVyc2lvbmVkIDo9ICQoc3RyaXAgJChmb3JlYWNoIHNvLCQoaW5zdGFsbC1saWIuc28pLFwKLSBpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQgOj0gJChmaWx0ZXIgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKLSBpbnN0YWxsLWxpYi5zby11bnZlcnNpb25lZCA6PSAkKGZpbHRlci1vdXQgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKLSAKLSsjIEluc3RhbGwgdGhlIF9waWMuYSBmaWxlcyBmb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgYW5kIGNvcnJlc3BvbmRpbmcKLSsjIC5tYXAgZmlsZXMuCi0rIyBsaWJwdGhyZWFkX3BpYy5hIGJyZWFrcyBta2xpYnMsIHNvIGRvbid0IGluc3RhbGwgaXQgYW5kIGl0cyBtYXAuCi0raW5zdGFsbC1saWIgOj0gJChpbnN0YWxsLWxpYikgJChpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQ6JS5zbz0lX3BpYy5hKQotK2luc3RhbGwtbGliIDo9ICQoZmlsdGVyLW91dCBsaWJwdGhyZWFkX3BpYy5hLCQoaW5zdGFsbC1saWIpKQotKyMgRGVzcGl0ZSBoYXZpbmcgYSBzb25hbWUgbGliaHVyZHVzZXIgYW5kIGxpYm1hY2h1c2VyIGRvIG5vdCB1c2Ugc3ltYm9sCi0rIyB2ZXJzaW9uaW5nLCBzbyBkb24ndCBpbnN0YWxsIHRoZSBjb3JyZXNwb25kaW5nIC5tYXAgZmlsZXMuCi0raWZlcSAoJChidWlsZC1zaGFyZWQpLHllcykKLStpbnN0YWxsLW1hcCA6PSAkKHBhdHN1YnN0ICUuc28sJS5tYXAsXAotKwkJCSQoZm9yZWFjaCBMLCQoaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkKSwkKG5vdGRpciAkTCkpKQotK2luc3RhbGwtbWFwIDo9ICQoZmlsdGVyLW91dCBsaWJodXJkdXNlci5tYXAgbGlibWFjaHVzZXIubWFwIGxpYnB0aHJlYWQubWFwLCQoaW5zdGFsbC1tYXApKQotK2lmbmRlZiBzdWJkaXIKLStpbnN0YWxsLW1hcCA6PSAkKGluc3RhbGwtbWFwKSBsaWJjLm1hcAotK2VuZGlmCi0rZW5kaWYKLSsKLSAjIEZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCB3ZSBpbnN0YWxsIHRocmVlIGZpbGVzOgotICMJJChpbnN0X2xpYmRpcikvbGliZm9vLnNvCS0tIGZvciBsaW5raW5nLCBzeW1saW5rIG9yIGxkIHNjcmlwdAotICMJJChpbnN0X3NsaWJkaXIpL2xpYmZvby5zby5OTgktLSBmb3IgbG9hZGluZyBieSBTT05BTUUsIHN5bWxpbmsKLUBAIC0xMzExLDkgKzEzMzEsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAotIGVuZGlmCSMgaGVhZGVycy1ub25oCi0gZW5kaWYJIyBoZWFkZXJzCi0gCi0raWZkZWYgaW5zdGFsbC1tYXAKLSskKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sJChwYXRzdWJzdCBsaWIlLm1hcCxsaWIlX3BpYy5tYXAsJChpbnN0YWxsLW1hcCkpKTogXAotKyAgJChpbnN0X2xpYmRpcikvbGliJV9waWMubWFwOiAkKGNvbW1vbi1vYmpwZngpbGliJS5tYXAgJCgrZm9yY2UpCi0rCSQoZG8taW5zdGFsbCkKLStlbmRpZgotKwotK2lmZGVmIGluc3RhbGwtZXh0cmFzCi0rJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLCQoaW5zdGFsbC1leHRyYXMpKTogXAotKyAgJChpbnN0X2xpYmRpcikvbGliY19waWMvJS5vOiAkKGVsZi1vYmpwZngpJS5vcyAkKCtmb3JjZSkKLSsJJChkby1pbnN0YWxsKQotK2VuZGlmCi0rCi0gLlBIT05ZOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAotIAlpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBpbnN0YWxsLWxpYi1ub3N1YmRpciBcCi0tCWluc3RhbGwtZGF0YS1ub3N1YmRpciBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIKLSsJaW5zdGFsbC1kYXRhLW5vc3ViZGlyIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLW1hcC1ub3N1YmRpciBcCi0rCWluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCi0gaW5zdGFsbC1iaW4tbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluKSkKLSBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluLXNjcmlwdCkpCi0gaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpcjogXAotQEAgLTEzMjYsNiArMTM1OSwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQotIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMpKQotIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzKQotIGluc3RhbGwtb3RoZXJzLXByb2dyYW1zLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzLXByb2dyYW1zKQotK2luc3RhbGwtbWFwLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sXAotKwkJICAgICAgICQocGF0c3Vic3QgbGliJS5tYXAsbGliJV9waWMubWFwLCQoaW5zdGFsbC1tYXApKSkKLStpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLFwKLSsJCSAgICAgICAkKGluc3RhbGwtZXh0cmFzKSkKLSAKLSAjIFdlIG5lZWQgYWxsIHRoZSBgLW5vc3ViZGlyJyB0YXJnZXRzIHNvIHRoYXQgYGluc3RhbGwnIGluIHRoZSBwYXJlbnQKLSAjIGRvZXNuJ3QgZGVwZW5kIG9uIHNldmVyYWwgdGhpbmdzIHdoaWNoIGVhY2ggaXRlcmF0ZSBvdmVyIHRoZSBzdWJkaXJzLgotQEAgLTEzMzUsNyArMTM3Miw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7Ci0gCi0gLlBIT05ZOiBpbnN0YWxsIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyCi0gaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLWRhdGEtbm9zdWJkaXIgXAotLQkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpcgotKwkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpciBcCi0rCQkJICAgIGluc3RhbGwtbWFwLW5vc3ViZGlyIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCi0gaWZlcSAoJChidWlsZC1wcm9ncmFtcykseWVzKQotIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAotIAkJCSAgICBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBcCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWVjZjI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDU1NTMxZWY1N2QwNDAwNmM1YTFlM2IzMmE4ZTA0MTAzNzJmODYwMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo1NTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CisKKzIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisgICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgUmVzb2x2ZSBTSCdzIF9fZnBzY3JfdmFsdWVzIHRvIHN5bWJvbCBpbiBsaWJjLnNvLgorCisgICAgICAgICogc3lzZGVwcy9zaC9zaDQvZnB1L2ZwdV9jb250cm9sLmg6IEFkZCBDKysgX19zZXRfZnBzY3IgcHJvdG90eXBlLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIChHTElCQ18yLjIpOiBBZGQgX19mcHNjcl92YWx1ZXMuCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgKF9fX2Zwc2NyX3ZhbHVlcyk6IE5ldyBjb25zdGFudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyB8ICAxICsKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyB8IDExICsrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitpbmRleCBlMDkzOGM0MTY1Li5jYTFkN2RhMzM5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitAQCAtMiw2ICsyLDcgQEAgbGliYyB7CisgICBHTElCQ18yLjIgeworICAgICAjIGZ1bmN0aW9ucyB1c2VkIGluIG90aGVyIGxpYnJhcmllcworICAgICBfX3hzdGF0NjQ7IF9fZnhzdGF0NjQ7IF9fbHhzdGF0NjQ7CisrICAgIF9fZnBzY3JfdmFsdWVzOworIAorICAgICAjIGEqCisgICAgIGFscGhhc29ydDY0OworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK2luZGV4IGM0ZTI4ZmZiOTguLjY0OGJhZTAzZDUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK0BAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQorIAorICNkZWZpbmUgX19zeXNjYWxsX2Vycm9yIF9fc3lzY2FsbF9lcnJvcl8xCisgI2luY2x1ZGUgPHN5c2RlcHMvdW5peC9zaC9zeXNkZXAuUz4KKysKKysgICAgICAgLmRhdGEKKysgICAgICAgLmFsaWduIDMKKysgICAgICAgLmdsb2JsIF9fX2Zwc2NyX3ZhbHVlcworKyAgICAgICAudHlwZSBfX19mcHNjcl92YWx1ZXMsIEBvYmplY3QKKysgICAgICAgLnNpemUgX19fZnBzY3JfdmFsdWVzLCA4CisrX19fZnBzY3JfdmFsdWVzOgorKyAgICAgICAubG9uZyAwCisrICAgICAgIC5sb25nIDB4ODAwMDAKKyt3ZWFrX2FsaWFzIChfX19mcHNjcl92YWx1ZXMsIF9fZnBzY3JfdmFsdWVzKQorKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKaW5kZXggYTYyOWNlMS4uYWE2MmM2MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCkBAIC0xLDI0ICsxLDI0IEBACi1Gcm9tIGUwMTlmZTZhMmI0MTBkYjYwNDNlMjE4MDNmNDk3YjVjYmRkOTBhODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRiYjIzZmJiMDc5ODRiOTNmZDE0ZjM1M2ZkOTMyNWQ5MjdiMGNkOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAotU3ViamVjdDogW1BBVENIIDIyLzI3XSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLSBsb2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAzICsrLQotIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsb2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAzICstCisgbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgbG9jYWxlL2xvY2FsZWluZm8uaCAgICAgICAgICAgfCAgMiArLQotIGxvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIHwgIDYgKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jICB8IDE3ICsrKysrKy0tLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyAgICB8IDI3ICsrKysrKysrKystLS0tLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyAgICAgfCAzMSArKysrKysrKysrKysrKystLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIHwgIDYgKysrKworIGxvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgIHwgMTcgKysrKystLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jICAgIHwgMjcgKysrKysrKystLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrLS0tLS0tCiAgbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyAgfCAgMiArLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyAgICAgfCAgNSArKystCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gbG9jYWxlL3NldGxvY2FsZS5jICAgICAgICAgICAgfCAzMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKworIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgICAgIHwgIDUgKystCisgbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGxvY2FsZS9zZXRsb2NhbGUuYyAgICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgMTIgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYwogCkBAIC05MSw3ICs5MSw3IEBACiArICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCiArICB9OwogZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1pbmRleCA2ODgyMmE2MzE5Li5mYTM2MTIzNzc2IDEwMDY0NAoraW5kZXggNTM3YmMzNTE0OS4uNzNiYTIwZDY5NSAxMDA2NDQKIC0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKICsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKIEBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgbG9jYWxlX3QsIExPQ0FMRSkKQEAgLTU2MSw2ICs1NjEsMyBAQAogICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCiAgIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQogICNlbHNlCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAppbmRleCBhZTcwOGVmLi42OGZhZDk2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDlkNzE1MjZiZTIxYWJlNjhkZDhjYTNhNWEyMTk0NDU4NTFiYmMyZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFiMmNlYjZjMjQxNGUzYzk4YzdiY2QwMjk1ODMyODdjZWQ5ZjMxNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIzLzI3XSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKK1N1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCiAKIFRoaXMgaXMgYSBoYWNrIHRvIGZpeCBidWlsZGluZyB0aGUgbG9jYWxlIGJpdHMgb24gYW4gb2xkZXIKIENlbnRPcyA1LlggbWFjaGluZQpAQCAtMjcsNiArMjcsMyBAQAogIC8qIFVzZSB0aGUgaW50ZXJuYWwgdGV4dGRvbWFpbiB1c2VkIGZvciBsaWJjIG1lc3NhZ2VzLiAgKi8KICAjZGVmaW5lIFBBQ0tBR0UgX2xpYmNfaW50bF9kb21haW5uYW1lCiAgI2lmbmRlZiBWRVJTSU9OCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCmluZGV4IDQyZmY2NjcuLjI4Y2ZmMmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAwMzg3M2FmMjg2ZjFkYWIxMDYyZjU5OGQ2ZGViNzc0Y2U1MTM0MjFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNjE1OWM5NDg2NzQ1NjY0YTVmMTE2ZWU5Y2M0NTgzNzAyMWI3NjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNDowNzo1OCAtMDUwMAotU3ViamVjdDogW1BBVENIIDI0LzI3XSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0CitTdWJqZWN0OiBbUEFUQ0hdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKIAogQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKIApAQCAtMjQsMTAgKzI0LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYwotaW5kZXggYzk3NWZjZmZkNy4uNmVlNThjNzRlMCAxMDA2NDQKK2luZGV4IDlkOWIxYmE3ZjIuLjg0MTQwMjhjNTggMTAwNjQ0CiAtLS0gYS9lbGYvZGwtZGVwcy5jCiArKysgYi9lbGYvZGwtZGVwcy5jCi1AQCAtNzIsMTMgKzcyLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCitAQCAtNzMsMTMgKzczLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCiAgewogICAgc3RydWN0IGxpbmtfbWFwICoqcCA9IGxpc3Q7CiAgICBzdHJ1Y3QgbGlua19tYXAgKipxOwpAQCAtNTEsNiArNTEsMyBAQAogICAgcmV0dXJuIHAgLSBsaXN0OwogIH0KICAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKaW5kZXggN2Y1ZDE0Mi4uNGE3OTE5ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDU2ZGFiMDI0NzUxOTQxYzA3ZWI0NzlmNDdlZjY2ODJlMjE2OGM4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZjNmFlY2JhMTliM2U3OTQ3MTAwNjIzNTMyYTQxYjZmMTY3MzRhY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXI9QzM9QTlteT0yMFJvc2VuPz0gPGplcmVteS5yb3NlbkBzbWlsZS5mcj4KIERhdGU6IE1vbiwgMjIgQXVnIDIwMTYgMTY6MDk6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8yN10gbG9jYWxlOiBmaXggaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gZ2NjIC1FCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZTogZml4IGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIGdjYyAtRQogCiBXaGVuIG5ldyB2ZXJzaW9uIG9mIGNvbXBpbGVycyBhcmUgcHVibGlzaGVkLCB0aGV5IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoCiBvbGRlciB2ZXJzaW9ucyBvZiBzb2Z0d2FyZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgY29tbW9uIHdoZW4gc29mdHdhcmUgaXMgYnVpbHQKQEAgLTMzLDYgKzMzLDMgQEAKICAKICAKICBzdWIgY3N0cmxlbiB7Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtcmVzZXQtZGxfbG9hZF93cml0ZV9sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtcmVzZXQtZGxfbG9hZF93cml0ZV9sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKaW5kZXggZWNhMTE5My4uNzFkZGMxMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODQ3ZDM3ZDVhMzRlNGJmMjk0ZGU0YmE5OGRlMzY2ODk1MGUyOGJjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWZiMGZjYTdkYjc0MmY0MTk1ZTE3NzFkOGJhNGM3ZmJhNDkzODgxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDI3IEphbiAyMDE4IDEwOjA1OjA3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjddIHJlc2V0IGRsX2xvYWRfd3JpdGVfbG9jayBhZnRlciBmb3JraW5nCitTdWJqZWN0OiBbUEFUQ0hdIHJlc2V0IGRsX2xvYWRfd3JpdGVfbG9jayBhZnRlciBmb3JraW5nCiAKIFRoZSBwYXRjaCBpbiB0aGlzIEJ1Z3ppbGxhIGVudHJ5IHdhcyByZXF1ZXN0ZWQgYnkgYSBjdXN0b21lcjoKIApAQCAtMjAsMTAgKzIwLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCi1pbmRleCA4NDZmYTQ5ZWYyLi5mODc1MDZmMzk4IDEwMDY0NAoraW5kZXggZWM1NmE4MjdlYi4uMGY0ODkzM2ZmMSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvbnB0bC9mb3JrLmMKICsrKyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKLUBAIC0xOTQsOSArMTk0LDkgQEAgX19saWJjX2ZvcmsgKHZvaWQpCitAQCAtMTMwLDkgKzEzMCw5IEBAIF9fbGliY19mb3JrICh2b2lkKQogIAkgIF9JT19saXN0X3Jlc2V0bG9jayAoKTsKICAJfQogIApAQCAtMzMsOCArMzMsNSBAQAogLQogKyAgICAgIF9fcnRsZF9sb2NrX2luaXRpYWxpemUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOwogICAgICAgIC8qIFJ1biB0aGUgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGNoaWxkLiAgKi8KLSAgICAgICB3aGlsZSAoYWxscCAhPSBOVUxMKQotIAl7Ci0tLSAKLTIuMTYuMQotCisgICAgICAgX19ydW5fZm9ya19oYW5kbGVycyAoYXRmb3JrX3J1bl9jaGlsZCk7CisgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2gKaW5kZXggOWVjMjM0Yi4uZGQzN2YyYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDk0MjI1YWI0YmNjMTYxMzUzMTU1OGE2MzIyNzBiNWVkY2U3NzliYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZlYTk2MmUwOTQ2ZGE3NTY0YTc3NGIwOGRkM2VkYTI4ZDY0ZTllNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMDowODowNCAtMDgwMAotU3ViamVjdDogW1BBVENIIDI3LzI3XSBBY3F1aXJlIGxkLnNvIGxvY2sgYmVmb3JlIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrCitTdWJqZWN0OiBbUEFUQ0hdIEFjcXVpcmUgbGQuc28gbG9jayBiZWZvcmUgc3dpdGNoaW5nIHRvIG1hbGxvY19hdGZvcmsKIAogVGhlIHBhdGNoIGlzIGZyb20KICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDU3OApAQCAtMjgsMTEgKzI4LDExIEBACiBTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIHN5c2RlcHMvbnB0bC9mb3JrLmMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKyBzeXNkZXBzL25wdGwvZm9yay5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9ucHRsL2ZvcmsuYyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKLWluZGV4IGY4NzUwNmYzOTguLjIyNWU3YjUxZjggMTAwNjQ0CitpbmRleCAwZjQ4OTMzZmYxLi5lZWYzZjk2NjliIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYwogKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYwogQEAgLTI1LDYgKzI1LDcgQEAKQEAgLTQzLDI4ICs0MywyMyBAQAogICNpbmNsdWRlIDxzdGRpby1sb2NrLmg+CiAgI2luY2x1ZGUgPGF0b21pYy5oPgogICNpbmNsdWRlIDxucHRsL3B0aHJlYWRQLmg+Ci1AQCAtNjAsNiArNjEsMTAgQEAgX19saWJjX2ZvcmsgKHZvaWQpCi0gICAgICBidXQgb3VyIGN1cnJlbnQgZm9yayBpbXBsZW1lbnRhdGlvbiBpcyBub3QuICAqLworQEAgLTU2LDYgKzU3LDkgQEAgX19saWJjX2ZvcmsgKHZvaWQpCiAgICBib29sIG11bHRpcGxlX3RocmVhZHMgPSBUSFJFQURfR0VUTUVNIChUSFJFQURfU0VMRiwgaGVhZGVyLm11bHRpcGxlX3RocmVhZHMpOwogIAorICAgX19ydW5fZm9ya19oYW5kbGVycyAoYXRmb3JrX3J1bl9wcmVwYXJlKTsKICsgIC8qIGdyYWIgbGQuc28gbG9jayBCRUZPUkUgc3dpdGNoaW5nIHRvIG1hbGxvY19hdGZvcmsgKi8KICsgIF9fcnRsZF9sb2NrX2xvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKICsgIF9fcnRsZF9sb2NrX2xvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKLSsKLSAgIC8qIFJ1biBhbGwgdGhlIHJlZ2lzdGVyZWQgcHJlcGFyYXRpb24gaGFuZGxlcnMuICBJbiByZXZlcnNlIG9yZGVyLgotICAgICAgV2hpbGUgZG9pbmcgdGhpcyB3ZSBidWlsZCB1cCBhIGxpc3Qgb2YgYWxsIHRoZSBlbnRyaWVzLiAgKi8KLSAgIHN0cnVjdCBmb3JrX2hhbmRsZXIgKnJ1bnA7Ci1AQCAtMjQ2LDYgKzI1MSwxMCBAQCBfX2xpYmNfZm9yayAodm9pZCkKICAKLSAJICBhbGxwID0gYWxscC0+bmV4dDsKLSAJfQotKworICAgLyogSWYgd2UgYXJlIG5vdCBydW5uaW5nIG11bHRpcGxlIHRocmVhZHMsIHdlIGRvIG5vdCBoYXZlIHRvCisgICAgICBwcmVzZXJ2ZSBsb2NrIHN0YXRlLiAgSWYgZm9yayBydW5zIGZyb20gYSBzaWduYWwgaGFuZGxlciwgb25seQorQEAgLTE1MCw2ICsxNTQsOSBAQCBfX2xpYmNfZm9yayAodm9pZCkKKyAKKyAgICAgICAvKiBSdW4gdGhlIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIHRoZSBwYXJlbnQuICAqLworICAgICAgIF9fcnVuX2ZvcmtfaGFuZGxlcnMgKGF0Zm9ya19ydW5fcGFyZW50KTsKICsgICAgICAvKiB1bmxvY2sgbGQuc28gbGFzdCwgYmVjYXVzZSB3ZSBsb2NrZWQgaXQgZmlyc3QgKi8KICsgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKICsgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKICAgICAgfQogIAogICAgcmV0dXJuIHBpZDsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKaW5kZXggNDM2Yzg0Ny4uZmFlOGQwMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1Gcm9tIGFmMzA1NGIzODU2Mzc5ZDM1M2E3Nzk4MDE2NzhmMzMwZTFiNThjOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1NZXNzYWdlLUlkOiA8YWYzMDU0YjM4NTYzNzlkMzUzYTc3OTgwMTY3OGYzMzBlMWI1OGM5YS4xNDkwMTgzNjExLmdpdC5wYW5hbmRAcmVkaGF0LmNvbT4KK0Zyb20gMzhmYWQzZTVhYjNiNDVjNTY4MTBhYmQzNWZhMTFhNzJmYTEwYjhmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KIERhdGU6IFdlZCwgMjIgTWFyIDIwMTcgMTc6MDI6MzggKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gYml0cy9zaWdpbmZvLWNvbnN0cy5oOiBlbnVtIGRlZmluaXRpb24gZm9yIFRSQVBfSFdCS1BUIGlzIG1pc3NpbmcKK1N1YmplY3Q6IFtQQVRDSF0gYml0cy9zaWdpbmZvLWNvbnN0cy5oOiBlbnVtIGRlZmluaXRpb24gZm9yIFRSQVBfSFdCS1BUIGlzCisgbWlzc2luZwogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtMjksNyArMjksNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JpdHMvc2lnaW5mby1jb25zdHMuaCBiL2JpdHMvc2lnaW5mby1jb25zdHMuaAotaW5kZXggYTU4YWM0Yi4uODQ0OGZhYyAxMDA2NDQKK2luZGV4IDc0NjRjMTg4MmIuLjI5ODMxNDUyN2EgMTAwNjQ0CiAtLS0gYS9iaXRzL3NpZ2luZm8tY29uc3RzLmgKICsrKyBiL2JpdHMvc2lnaW5mby1jb25zdHMuaAogQEAgLTEwNiw4ICsxMDYsMTIgQEAgZW51bQpAQCAtNDcsMTAgKzQ3LDEwIEBACiAgIyBlbmRpZgogIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnaW5mby1jb25zdHMuaCBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnaW5mby1jb25zdHMuaAotaW5kZXggNTI1ODQwYy4uNTdhOWVkYiAxMDA2NDQKK2luZGV4IDE5M2JkOWM0NzEuLjNmZTg1MmJjNWYgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ2luZm8tY29uc3RzLmgKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnaW5mby1jb25zdHMuaAotQEAgLTEzNyw4ICsxMzcsMTIgQEAgZW51bQorQEAgLTE0MSw4ICsxNDEsMTIgQEAgZW51bQogIHsKICAgIFRSQVBfQlJLUFQgPSAxLAkJLyogUHJvY2VzcyBicmVha3BvaW50LiAgKi8KICAjICBkZWZpbmUgVFJBUF9CUktQVAlUUkFQX0JSS1BUCkBAIC02NCw2ICs2NCwzIEBACiAgfTsKICAjIGVuZGlmCiAgCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjlmNDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDExM2UwNTE2ZmJkM2NlMTgyNTNmMDQyMzc2MjQxNmQ0YzRiMzhmYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxNzo1NzozNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDI5LzI5XSBSZXBsYWNlIHN0cm5jcHkgd2l0aCBtZW1jY3B5IHRvIGZpeAotIC1Xc3RyaW5nb3AtdHJ1bmNhdGlvbi4KLQotCSogbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmM6IFJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbWNweSB0bwotCWF2b2lkIC1Xc3RyaW5nb3AtdHJ1bmNhdGlvbi4KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxOC0wMy9tc2cwMDUzMS5odG1sXQotCi0gbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMgYi9uaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYwotaW5kZXggOGRjMDIxZTczZC4uYjUzMjg0Zjg4OSAxMDA2NDQKLS0tLSBhL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jCi0rKysgYi9uaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYwotQEAgLTg3LDcgKzg3LDcgQEAgX25zc19uaXNwbHVzX3BhcnNlX3B3ZW50IChuaXNfcmVzdWx0ICpyZXN1bHQsIHN0cnVjdCBwYXNzd2QgKnB3LAotICAgICAgIGlmIChsZW4gPj0gcm9vbV9sZWZ0KQotIAlnb3RvIG5vX21vcmVfcm9vbTsKLSAKLS0gICAgICBzdHJuY3B5IChmaXJzdF91bnVzZWQsIG51bXN0ciwgbGVuKTsKLSsgICAgICBtZW1jcHkgKGZpcnN0X3VudXNlZCwgbnVtc3RyLCBsZW4pOwotICAgICAgIGZpcnN0X3VudXNlZFtsZW5dID0gJ1wwJzsKLSAgICAgICBudW1zdHIgPSBmaXJzdF91bnVzZWQ7Ci0gICAgIH0KLUBAIC0xMDMsNyArMTAzLDcgQEAgX25zc19uaXNwbHVzX3BhcnNlX3B3ZW50IChuaXNfcmVzdWx0ICpyZXN1bHQsIHN0cnVjdCBwYXNzd2QgKnB3LAotICAgICAgIGlmIChsZW4gPj0gcm9vbV9sZWZ0KQotIAlnb3RvIG5vX21vcmVfcm9vbTsKLSAKLS0gICAgICBzdHJuY3B5IChmaXJzdF91bnVzZWQsIG51bXN0ciwgbGVuKTsKLSsgICAgICBtZW1jcHkgKGZpcnN0X3VudXNlZCwgbnVtc3RyLCBsZW4pOwotICAgICAgIGZpcnN0X3VudXNlZFtsZW5dID0gJ1wwJzsKLSAgICAgICBudW1zdHIgPSBmaXJzdF91bnVzZWQ7Ci0gICAgIH0KLS0tIAotMi4xNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3ZjZhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoCkBAIC0wLDAgKzEsODkgQEAKK0Zyb20gODY1NjUxZDI0OTZhOTBmN2FlOGU3Y2MxOWEyZTU0YjZmMTdhOGFkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDI6MDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlZGVmIC0tYWRkLXRvLWFyY2hpdmUgdXNlcyBhIGhhcmQtY29kZWQgbG9jYWxlIHBhdGgKKworaXQgZG9lc24ndCBleGlzdCBpbiBub3JtYWwgdXNlLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gcGFzcyBhbgorYWx0ZXJuYXRpdmUgZmlsZW5hbWUuCisKK0FkZCBhIGZhbGxiYWNrIG9mICRMT0NBTEVBUkNISVZFIGZyb20gdGhlIGVudmlyb25tZW50LCBhbmQgYWxsb3cKK2NyZWF0aW9uIG9mIG5ldyBsb2NhbGUgYXJjaGl2ZXMgdGhhdCBhcmUgbm90IHRoZSBzeXN0ZW0gYXJjaGl2ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKK2luZGV4IGNhMzMyYTM0NWYuLjkxZjYyZGE2NjIgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCitAQCAtMzQwLDEyICszNDAsMjQgQEAgZW5sYXJnZV9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBjb25zdCBzdHJ1Y3QgbG9jYXJoZWFkICpoZWFkKQorICAgc3RydWN0IG5hbWVoYXNoZW50ICpvbGRuYW1laGFzaHRhYjsKKyAgIHN0cnVjdCBsb2NhcmhhbmRsZSBuZXdfYWg7CisgICBzaXplX3QgcHJlZml4X2xlbiA9IG91dHB1dF9wcmVmaXggPyBzdHJsZW4gKG91dHB1dF9wcmVmaXgpIDogMDsKKy0gIGNoYXIgYXJjaGl2ZWZuYW1lW3ByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSldOworLSAgY2hhciBmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMV07CisrICBjaGFyICphcmNoaXZlZm5hbWU7CisrICBjaGFyICpmbmFtZTsKKysgIGNoYXIgKmVudmFyY2hpdmUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKKyAKKy0gIGlmIChvdXRwdXRfcHJlZml4KQorLSAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CistICBzdHJjcHkgKGFyY2hpdmVmbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICBpZiAoZW52YXJjaGl2ZSAhPSBOVUxMKSAKKysgICAgeworKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgMSk7CisrICAgICAgZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIHNpemVvZiAoIi5YWFhYWFgiKSk7CisrICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUsIGVudmFyY2hpdmUpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkpOworKyAgICAgIGZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMSk7CisrICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCisrICAgICAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CisrICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgICB9CisgICBzdHJjcHkgKHN0cGNweSAoZm5hbWUsIGFyY2hpdmVmbmFtZSksICIuWFhYWFhYIik7CisgCisgICAvKiBOb3QgYWxsIG9mIHRoZSBvbGQgZmlsZSBoYXMgdG8gYmUgbWFwcGVkLiAgQ2hhbmdlIHRoaXMgbm93IHRoaXMKK0BAIC01NTEsNiArNTYzLDggQEAgZW5sYXJnZV9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBjb25zdCBzdHJ1Y3QgbG9jYXJoZWFkICpoZWFkKQorIAorICAgLyogQWRkIHRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG5ldyBvbmUuICAqLworICAgKmFoID0gbmV3X2FoOworKyAgZnJlZShhcmNoaXZlZm5hbWUpOworKyAgZnJlZShmbmFtZSk7CisgfQorIAorIAorQEAgLTU2OSwxMCArNTgzLDEzIEBAIG9wZW5fYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgYm9vbCByZWFkb25seSkKKyAgIC8qIElmIGFoIGhhcyBhIG5vbi1OVUxMIGZuYW1lIG9wZW4gdGhhdCBvdGhlcndpc2Ugb3BlbiB0aGUgZGVmYXVsdC4gICovCisgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpCisgICAgIHsKKy0gICAgICBhcmNoaXZlZm5hbWUgPSBkZWZhdWx0X2ZuYW1lOworLSAgICAgIGlmIChvdXRwdXRfcHJlZml4KQorLSAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKy0gICAgICBzdHJjcHkgKGRlZmF1bHRfZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgICAgIGFyY2hpdmVmbmFtZSA9IGdldGVudigiTE9DQUxFQVJDSElWRSIpOworKyAgICAgIGlmIChhcmNoaXZlZm5hbWUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKKysgICAgICAgICAgICAgIGlmIChvdXRwdXRfcHJlZml4KQorKyAgICAgICAgICAgICAgICBtZW1jcHkgKGRlZmF1bHRfZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworKyAgICAgICAgICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgICB9CisgICAgIH0KKyAKKyAgIHdoaWxlICgxKQorQEAgLTU4NSw3ICs2MDIsNyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCisgCSAgICAgdGhlIGRlZmF1bHQgbG9jYWxlIGFyY2hpdmUgd2UgaWdub3JlIHRoZSBmYWlsdXJlIGFuZAorIAkgICAgIGxpc3QgYW4gZW1wdHkgYXJjaGl2ZSwgb3RoZXJ3aXNlIHdlIHByaW50IGFuIGVycm9yCisgCSAgICAgYW5kIGV4aXQuICAqLworLQkgIGlmIChlcnJubyA9PSBFTk9FTlQgJiYgYXJjaGl2ZWZuYW1lID09IGRlZmF1bHRfZm5hbWUpCisrCSAgaWYgKGVycm5vID09IEVOT0VOVCkKKyAJICAgIHsKKyAJICAgICAgaWYgKHJlYWRvbmx5KQorIAkJewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjk3ZDkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBhNTRjMTVkMDU2N2Q1NDcxMzcwNjZmNDFiMWIyMmViYTQ4NzVjMjdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0NDowMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbnRsOiBFbWl0IG5vIGxpbmVzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcworCitJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKK0RvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCitUaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KK3RoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGwvTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlIGIvaW50bC9NYWtlZmlsZQoraW5kZXggNjcyZWRmMWIzOC4uZDMxODg4ZDAxMyAxMDA2NDQKKy0tLSBhL2ludGwvTWFrZWZpbGUKKysrKyBiL2ludGwvTWFrZWZpbGUKK0BAIC0xNTUsNyArMTU1LDcgQEAgJChvYmpwZngpdHN0LWdldHRleHQ2Lm91dDogJChvYmpwZngpdHN0LWdldHRleHQub3V0CisgCisgQ1BQRkxBR1MgKz0gLUQnTE9DQUxFRElSPSIkKGxvY2FsZWRpcikiJyBcCisgCSAgICAtRCdMT0NBTEVfQUxJQVNfUEFUSD0iJChsb2NhbGVkaXIpIicKKy1CSVNPTkZMQUdTID0gLS15YWNjIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0CisrQklTT05GTEFHUyA9IC0teWFjYyAtLW5vLWxpbmVzIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0CisgCisgJChpbnN0X2xvY2FsZWRpcikvbG9jYWxlLmFsaWFzOiBsb2NhbGUuYWxpYXMgJCgrZm9yY2UpCisgCSQoZG8taW5zdGFsbCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjAzZTFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1JbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKLURvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCi1UaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KLXRoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUgYi9pbnRsL01ha2VmaWxlCi1pbmRleCAyMjE5NzE3Li5hMjAzNzgwIDEwMDY0NAotLS0tIGEvaW50bC9NYWtlZmlsZQotKysrIGIvaW50bC9NYWtlZmlsZQotQEAgLTE1MSw3ICsxNTEsNyBAQCAkKG9ianBmeCl0c3QtZ2V0dGV4dDYub3V0OiAkKG9ianBmeCl0c3QtZ2V0dGV4dC5vdXQKLSAKLSBDUFBGTEFHUyArPSAtRCdMT0NBTEVESVI9IiQobG9jYWxlZGlyKSInIFwKLSAJICAgIC1EJ0xPQ0FMRV9BTElBU19QQVRIPSIkKGxvY2FsZWRpcikiJwotLUJJU09ORkxBR1MgPSAtLXlhY2MgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKLStCSVNPTkZMQUdTID0gLS15YWNjIC0tbm8tbGluZXMgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKLSAKLSAkKGluc3RfbG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM6IGxvY2FsZS5hbGlhcyAkKCtmb3JjZSkKLSAJJChkby1pbnN0YWxsKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtbmF0aXZlc2RrLWRlcHJlY2F0ZS1saWJjcnlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkxMzJlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtbmF0aXZlc2RrLWRlcHJlY2F0ZS1saWJjcnlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxOSArMCwwIEBACi1CYWNrZ3JvdW5kIGluZm9ybWF0aW9uOgotCi1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOC9tc2cwMTI1Ny5odG1sCi1odHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQ2hhbmdlcy9SZXBsYWNlX2dsaWJjX2xpYmNyeXB0X3dpdGhfbGlieGNyeXB0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhQHNvdXJjZXdhcmUub3JnXQotU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0KLUZyb206IFphY2sgV2VpbmJlcmcgPHphY2t3QHBhbml4LmNvbT4KLVN1YmplY3Q6IFtQQVRDSF0gRGVwcmVjYXRlIGxpYmNyeXB0IGFuZCBkb24ndCBidWlsZCBpdCBieSBkZWZhdWx0Ci0KLUJhY2sgaW4gSnVuZSwgQmrDtnJuIEVzc2VyIHByb3Bvc2VkIHRvIGFkZCBPcGVuQlNELWNvbXBhdGlibGUgYmNyeXB0Ci1zdXBwb3J0IHRvIG91ciBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdCgzKSwgYW5kIFphY2sgV2VpbmJlcmcgcmVwbGllZAotdGhhdCBpdCBtaWdodCBhY3R1YWxseSBtYWtlIG1vcmUgc2Vuc2UgdG8gX3JlbW92ZV8gbGliY3J5cHQgZnJvbQotZ2xpYmMsIGZyZWVpbmcgdXAgbGliY3J5cHQuc28uMSBhbmQgY3J5cHQuaCB0byBiZSBwcm92aWRlZCBieSBhCi1zZXBhcmF0ZSBwcm9qZWN0IHRoYXQgY291bGQgbW92ZSBmYXN0ZXIuICAoRm9yIGluc3RhbmNlLCBsaWJ4Y3J5cHQ6Ci1odHRwczovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0KQotCi1UaGlzIHBhdGNoIGRpc2FibGVzIGJ1aWxkIGFuZCBpbnN0YWxsYXRpb24gb2YgbGliY3J5cHQgYnkgZGVmYXVsdC4gIEl0Ci1jYW4gYmUgcmUtZW5hYmxlZCB3aXRoIC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0IHRvIGNvbmZpZ3VyZS4gIFVubGlrZQotbGlibnNsLCB3ZSBkbyAqbm90KiBpbnN0YWxsIGEgcnVudGltZSBzaGFyZWQgbGlicmFyeTsgdGhhdCdzIGxlZnQgdG8KLXRoZSByZXBsYWNlbWVudC4gIChVbmxpa2UgdGhlIFN1blJQQyBzaXR1YXRpb24sIEkgdGhpbmsgd2UgY2FuCi1wcm9iYWJseSBkcm9wIHRoaXMgY29kZSBhbHRvZ2V0aGVyIGluIGEgcmVsZWFzZSBvciB0d28uKQotCi1UaGUgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgY3J5cHQgYW5kIGVuY3J5cHQgYXJlIHJlbW92ZWQgZnJvbQotdW5pc3RkLmgsIGFuZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIGZvciBzZXRrZXkgaXMgcmVtb3ZlZCBmcm9tCi1zdGRsaWIuaDsgdGhleSBkbyAqbm90KiBjb21lIGJhY2sgd2l0aCAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdC4gIFRoaXMKLW1lYW5zIGdsaWJjIG5vIGxvbmdlciBwcm92aWRlcyB0aGUgUE9TSVggQ1JZUFQgb3B0aW9uLCBhbmQgdGhlIG1hY3JvCi1fWE9QRU5fQ1JZUFQgaXMgYWxzbyByZW1vdmVkIGZyb20gdW5pc3RkLmggdG8gaW5kaWNhdGUgdGhhdC4KLShfU0NfWE9QRU5fQ1JZUFQgaXMgc3RpbGwgZGVmaW5lZCwgYnV0IHN5c2NvbmYoX1NDX1hPUEVOX0NSWVBUKSB3aWxsCi1yZXR1cm4gLTEgYXQgcnVudGltZS4pICBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsc28gdW5jb25kaXRpb25hbGx5Ci1yZW1vdmVkIGZyb20gY29uZm9ybS9kYXRhL3tzdGRsaWIsdW5pc3RkfS5oLWRhdGEuCi0KLQkqIHBvc2l4L3VuaXN0ZC5oIChfWE9QRU5fQ1JZUFQsIGNyeXB0LCBlbmNyeXB0KTogRG9uJ3QgZGVjbGFyZS4KLQkqIHN0ZGxpYi9zdGRsaWIuaCAoc2V0a2V5KTogRG9uJ3QgZGVjbGFyZS4KLQotCSogY29uZmlndXJlLmFjICgtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCk6IE5ldyBjb25maWd1cmUgb3B0aW9uLgotCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotCSogY29uZmlnLm1ha2UuaW4gKGJ1aWxkLW9ic29sZXRlLWNyeXB0KTogTmV3IG1ha2VmaWxlIHZhcmlhYmxlLgotCSogY3J5cHQvQmFubmVyOiBEZWxldGUgZmlsZS4KLQkqIGNyeXB0L01ha2VmaWxlOiBEb24ndCBidWlsZCBhbnl0aGluZyB1bmxlc3MKLQkkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KLQkqIHN5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZTogT25seSBhZGQgdGhpbmdzCi0JdG8gbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzIHdoZW4gJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkgaXMgJ3llcycuCi0JKiBzeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlOiBMaWtld2lzZS4KLQkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZTogTGlrZXdpc2UuCi0KLQkqIGNvbmZvcm0vTWFrZWZpbGU6IE9ubHkgaW5jbHVkZSBsaWJjcnlwdC5hIGluIGxpbmtuYW1lc3BhY2UgdGVzdHMKLQl3aGVuICQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgotCSogY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEgKHNldGtleSk6IERvbid0IGV4cGVjdC4KLQkqIGNvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhIChjcnlwdCwgZW5jcnlwdCk6IERvbid0IGV4cGVjdC4KLQkqIGVsZi9NYWtlZmlsZTogT25seSBwZXJmb3JtIHZhcmlvdXMgdGVzdHMgb2YgbGliY3J5cHQuc28vbGliY3J5cHQuYQotCXdoZW4gJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkgaXMgJ3llcycuCi0JKiBlbGYvdHN0LWxpbmthbGwtc3RhdGljLmM6IERvbid0IGluY2x1ZGUgY3J5cHQuaCB3aGVuIFVTRV9DUllQVAotCWlzIGZhbHNlLgotLS0tCi0gTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCi0gY29uZmlnLm1ha2UuaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrKysKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysrKwotIGNvbmZvcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKystLS0tCi0gY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgLS0tCi0gY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgLS0tLS0tCi0gY3J5cHQvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrKysKLSBlbGYvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysrKysrKystLS0tCi0gZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKLSBwb3NpeC91bmlzdGQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiAtLS0tLS0tLS0tLS0tLS0tCi0gc3RkbGliL3N0ZGxpYi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgLS0tLS0tCi0gc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlIHwgIDIgKysKLSBzeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlICAgICAgICAgfCAgMiArKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAyICsrCi0gMTUgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWcubWFrZS5pbiBiL2NvbmZpZy5tYWtlLmluCi1pbmRleCA5ZTVlMjRiMmM2Li44ZmU2MTBkMDRkIDEwMDY0NAotLS0tIGEvY29uZmlnLm1ha2UuaW4KLSsrKyBiL2NvbmZpZy5tYWtlLmluCi1AQCAtODIsNiArODIsNyBAQCBtYWNoLWludGVyZmFjZS1saXN0ID0gQG1hY2hfaW50ZXJmYWNlX2xpc3RACi0gCi0gZXhwZXJpbWVudGFsLW1hbGxvYyA9IEBleHBlcmltZW50YWxfbWFsbG9jQAotIAotK2J1aWxkLW9ic29sZXRlLWNyeXB0ID0gQGJ1aWxkX29ic29sZXRlX2NyeXB0QAotIG5zcy1jcnlwdCA9IEBsaWJjX2N2X25zc19jcnlwdEAKLSBzdGF0aWMtbnNzLWNyeXB0ID0gQGxpYmNfY3Zfc3RhdGljX25zc19jcnlwdEAKLSAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDdhOGJkM2Y4MTcuLjQ2ZjZiZDdmODYgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTY3Miw2ICs2NzIsNyBAQCBiYXNlX21hY2hpbmUKLSBoYXZlX3R1bmFibGVzCi0gYnVpbGRfcHRfY2hvd24KLSBidWlsZF9uc2NkCi0rYnVpbGRfb2Jzb2xldGVfY3J5cHQKLSBidWlsZF9vYnNvbGV0ZV9uc2wKLSBsaW5rX29ic29sZXRlX3JwYwotIGxpYmNfY3Zfc3RhdGljX25zc19jcnlwdAotQEAgLTc4Miw2ICs3ODMsNyBAQCBlbmFibGVfZXhwZXJpbWVudGFsX21hbGxvYwotIGVuYWJsZV9uc3NfY3J5cHQKLSBlbmFibGVfb2Jzb2xldGVfcnBjCi0gZW5hYmxlX29ic29sZXRlX25zbAotK2VuYWJsZV9vYnNvbGV0ZV9jcnlwdAotIGVuYWJsZV9zeXN0ZW10YXAKLSBlbmFibGVfYnVpbGRfbnNjZAotIGVuYWJsZV9uc2NkCi1AQCAtMTQ1Myw2ICsxNDU1LDcgQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLXRpbWUgdXNhZ2UKLSAgIC0tZW5hYmxlLW9ic29sZXRlLW5zbCAgIGJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBvYnNvbGV0ZSBsaWJuc2wgbGlicmFyeSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBOU1MgbW9kdWxlcwotKyAgLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQgYnVpbGQgYW5kIGluc3RhbGwgdGhlIG9ic29sZXRlIGxpYmNyeXB0IGxpYnJhcnkKLSAgIC0tZW5hYmxlLXN5c3RlbXRhcCAgICAgIGVuYWJsZSBzeXN0ZW10YXAgc3RhdGljIHByb2JlIHBvaW50cyBbZGVmYXVsdD1ub10KLSAgIC0tZGlzYWJsZS1idWlsZC1uc2NkICAgIGRpc2FibGUgYnVpbGRpbmcgYW5kIGluc3RhbGxpbmcgdGhlIG5zY2QgZGFlbW9uCi0gICAtLWRpc2FibGUtbnNjZCAgICAgICAgICBsaWJyYXJ5IGZ1bmN0aW9ucyB3aWxsIG5vdCBjb250YWN0IHRoZSBuc2NkIGRhZW1vbgotQEAgLTM2MzIsNiArMzYzNSwxNiBAQCBpZiB0ZXN0ICIkYnVpbGRfb2Jzb2xldGVfbnNsIiA9IHllczsgdGhlbgotIAotIGZpCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9vYnNvbGV0ZV9jcnlwdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9vYnNvbGV0ZV9jcnlwdDsgYnVpbGRfb2Jzb2xldGVfY3J5cHQ9JGVuYWJsZXZhbAotK2Vsc2UKLSsgIGJ1aWxkX29ic29sZXRlX2NyeXB0PW5vCi0rZmkKLSsKLSsKLSsKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3lzdGVtdGFwIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9zeXN0ZW10YXArc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgZW5hYmxldmFsPSRlbmFibGVfc3lzdGVtdGFwOyBzeXN0ZW10YXA9JGVuYWJsZXZhbAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2ExMjgyYTZiMy4uMDE0MjM1Mzc0MCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzc4LDYgKzM3OCwxNCBAQCBpZiB0ZXN0ICIkYnVpbGRfb2Jzb2xldGVfbnNsIiA9IHllczsgdGhlbgotICAgQUNfREVGSU5FKExJTktfT0JTT0xFVEVfTlNMKQotIGZpCi0gCi0rQUNfQVJHX0VOQUJMRShbb2Jzb2xldGUtY3J5cHRdLAotKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW9ic29sZXRlLWNyeXB0XSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWlsZCBhbmQgaW5zdGFsbCB0aGUgb2Jzb2xldGUgbGliY3J5cHQgbGlicmFyeV0pLAotKyAgICAgICAgICAgICAgW2J1aWxkX29ic29sZXRlX2NyeXB0PSRlbmFibGV2YWxdLAotKyAgICAgICAgICAgICAgW2J1aWxkX29ic29sZXRlX2NyeXB0PW5vXSkKLStBQ19TVUJTVChidWlsZF9vYnNvbGV0ZV9jcnlwdCkKLSsKLSsKLSBBQ19BUkdfRU5BQkxFKFtzeXN0ZW10YXBdLAotICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zeXN0ZW10YXBdLAotIAkgICAgICAgW2VuYWJsZSBzeXN0ZW10YXAgc3RhdGljIHByb2JlIHBvaW50cyBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sCi1kaWZmIC0tZ2l0IGEvY29uZm9ybS9NYWtlZmlsZSBiL2NvbmZvcm0vTWFrZWZpbGUKLWluZGV4IDg2NGZkZWNhMjEuLjVlZjQ3NGZiMjQgMTAwNjQ0Ci0tLS0gYS9jb25mb3JtL01ha2VmaWxlCi0rKysgYi9jb25mb3JtL01ha2VmaWxlCi1AQCAtMTkzLDIyICsxOTMsMjggQEAgbGlua25hbWVzcGFjZS1saWJzLXRociA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpIFwKLSAJCQkgJChjb21tb24tb2JqcGZ4KXJ0L2xpYnJ0LmEgJChzdGF0aWMtdGhyZWFkLWxpYnJhcnkpCi0gbGlua25hbWVzcGFjZS1saWJzLXBvc2l4ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtdGhyKSBcCi0gCQkJICAgJChjb21tb24tb2JqcGZ4KWRsZmNuL2xpYmRsLmEKLS1saW5rbmFtZXNwYWNlLWxpYnMteHNpID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtcG9zaXgpIFwKLS0JCQkgJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKLStsaW5rbmFtZXNwYWNlLWxpYnMteHNpID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtcG9zaXgpCi0gbGlua25hbWVzcGFjZS1saWJzLUlTTyA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpCi0gbGlua25hbWVzcGFjZS1saWJzLUlTTzk5ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKLSBsaW5rbmFtZXNwYWNlLWxpYnMtSVNPMTEgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQotLWxpbmtuYW1lc3BhY2UtbGlicy1YUEc0ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykgXAotLQkJCSAgJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKLStsaW5rbmFtZXNwYWNlLWxpYnMtWFBHNCA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpCi0gbGlua25hbWVzcGFjZS1saWJzLVhQRzQyID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtWFBHNCkKLSBsaW5rbmFtZXNwYWNlLWxpYnMtUE9TSVggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy10aHIpCi0gbGlua25hbWVzcGFjZS1saWJzLVVOSVg5OCA9ICQobGlua25hbWVzcGFjZS1saWJzLXhzaSkKLSBsaW5rbmFtZXNwYWNlLWxpYnMtWE9QRU4ySyA9ICQobGlua25hbWVzcGFjZS1saWJzLXhzaSkKLSBsaW5rbmFtZXNwYWNlLWxpYnMtUE9TSVgyMDA4ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtcG9zaXgpCi0gbGlua25hbWVzcGFjZS1saWJzLVhPUEVOMks4ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMteHNpKQotKwotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLStsaW5rbmFtZXNwYWNlLWxpYnMteHNpICs9ICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCi0rbGlua25hbWVzcGFjZS1saWJzLVhQRzQgKz0gJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKLStlbmRpZgotKwotIGxpbmtuYW1lc3BhY2UtbGlicyA9ICQoZm9yZWFjaCBzdGQsJChjb25mb3JtdGVzdC1zdGFuZGFyZHMpLFwKLSAJCQkJICAgJChsaW5rbmFtZXNwYWNlLWxpYnMtJChzdGQpKSkKLSAKLSsKLSsKLSAkKGxpbmtuYW1lc3BhY2Utc3ltbGlzdC1zdGRsaWJzLXRlc3RzKTogJChvYmpwZngpc3ltbGlzdC1zdGRsaWJzLSU6IFwKLSAJCQkJCSQobGlua25hbWVzcGFjZS1saWJzKQotIAlMQ19BTEw9QyAkKFJFQURFTEYpIC1XIC1zICQobGlua25hbWVzcGFjZS1saWJzLSQqKSA+ICRAOyBcCi1kaWZmIC0tZ2l0IGEvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEgYi9jb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YQotaW5kZXggZDhmY2NjYzJmYi4uNjkxMzgyODE5NiAxMDA2NDQKLS0tLSBhL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhCi0rKysgYi9jb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YQotQEAgLTE0OSw5ICsxNDksNiBAQCBmdW5jdGlvbiB7dW5zaWduZWQgc2hvcnQgaW50Kn0gc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnRbM10pCi0gI2lmICFkZWZpbmVkIElTTyAmJiAhZGVmaW5lZCBJU085OSAmJiAhZGVmaW5lZCBJU08xMSAmJiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBYUEc0ICYmICFkZWZpbmVkIFhQRzQyICYmICFkZWZpbmVkIFVOSVg5OAotIGZ1bmN0aW9uIGludCBzZXRlbnYgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgaW50KQotICNlbmRpZgotLSNpZiAhZGVmaW5lZCBJU08gJiYgIWRlZmluZWQgSVNPOTkgJiYgIWRlZmluZWQgSVNPMTEgJiYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgUE9TSVgyMDA4Ci0tZnVuY3Rpb24gdm9pZCBzZXRrZXkgKGNvbnN0IGNoYXIqKQotLSNlbmRpZgotICNpZiAhZGVmaW5lZCBJU08gJiYgIWRlZmluZWQgSVNPOTkgJiYgIWRlZmluZWQgSVNPMTEgJiYgIWRlZmluZWQgWFBHNCAmJiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBQT1NJWDIwMDgKLSBmdW5jdGlvbiB7Y2hhcip9IHNldHN0YXRlIChjaGFyKikKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YSBiL2NvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhCi1pbmRleCBkZGY0ZjI1MTMyLi5hYTA3MDUyOGU4IDEwMDY0NAotLS0tIGEvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEKLSsrKyBiL2NvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhCi1AQCAtNDM3LDkgKzQzNyw2IEBAIGZ1bmN0aW9uIGludCBjaHJvb3QgKGNvbnN0IGNoYXIqKQotIGZ1bmN0aW9uIGludCBjaG93biAoY29uc3QgY2hhciosIHVpZF90LCBnaWRfdCkKLSBmdW5jdGlvbiBpbnQgY2xvc2UgKGludCkKLSBmdW5jdGlvbiBzaXplX3QgY29uZnN0ciAoaW50LCBjaGFyKiwgc2l6ZV90KQotLSNpZiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBQT1NJWDIwMDgKLS1mdW5jdGlvbiB7Y2hhcip9IGNyeXB0IChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCi0tI2VuZGlmCi0gI2lmIGRlZmluZWQgWFBHNCB8fCBkZWZpbmVkIFhQRzQyIHx8IGRlZmluZWQgVU5JWDk4Ci0gZnVuY3Rpb24ge2NoYXIqfSBjdGVybWlkIChjaGFyKikKLSBmdW5jdGlvbiB7Y2hhcip9IGN1c2VyaWQgKGNoYXIqKQotQEAgLTQ0OSw5ICs0NDYsNiBAQCBhbGxvdyBjdXNlcmlkCi0gI2VuZGlmCi0gZnVuY3Rpb24gaW50IGR1cCAoaW50KQotIGZ1bmN0aW9uIGludCBkdXAyIChpbnQsIGludCkKLS0jaWYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgUE9TSVgyMDA4Ci0tZnVuY3Rpb24gdm9pZCBlbmNyeXB0IChjaGFyWzY0XSwgaW50KQotLSNlbmRpZgotIGZ1bmN0aW9uIGludCBleGVjbCAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCAuLi4pCi0gZnVuY3Rpb24gaW50IGV4ZWNsZSAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCAuLi4pCi0gZnVuY3Rpb24gaW50IGV4ZWNscCAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCAuLi4pCi1kaWZmIC0tZ2l0IGEvY3J5cHQvTWFrZWZpbGUgYi9jcnlwdC9NYWtlZmlsZQotaW5kZXggMzAzODAwZGY3My4uMDI0ZWMyYzZhYiAxMDA2NDQKLS0tLSBhL2NyeXB0L01ha2VmaWxlCi0rKysgYi9jcnlwdC9NYWtlZmlsZQotQEAgLTIyLDYgKzIyLDggQEAgc3ViZGlyCTo9IGNyeXB0Ci0gCi0gaW5jbHVkZSAuLi9NYWtlY29uZmlnCi0gCi0raWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQotKwotIGhlYWRlcnMgOj0gY3J5cHQuaAotIAotIGV4dHJhLWxpYnMgOj0gbGliY3J5cHQKLUBAIC01Miw5ICs1NCwxMSBAQCB0ZXN0cyArPSBtZDV0ZXN0IHNoYTI1NnRlc3Qgc2hhNTEydGVzdAotICMgbWFjaGluZSBvdmVyIGEgbWludXRlLgotIHh0ZXN0cyA9IG1kNXRlc3QtZ2lhbnQKLSBlbmRpZgotK2VuZGlmCi0gCi0gaW5jbHVkZSAuLi9SdWxlcwotIAotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSBpZm5lcSAoJChuc3MtY3J5cHQpLHllcykKLSBtZDUtcm91dGluZXMgOj0gbWQ1ICQoZmlsdGVyIG1kNSUsJChsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMpKQotIHNoYTI1Ni1yb3V0aW5lcyA6PSBzaGEyNTYgJChmaWx0ZXIgc2hhMjU2JSwkKGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcykpCi1AQCAtNzEsMyArNzUsNCBAQCAkKGFkZHByZWZpeCAkKG9ianBmeCksJCh0ZXN0cykpOiAkKG9ianBmeClsaWJjcnlwdC5zbwotIGVsc2UKLSAkKGFkZHByZWZpeCAkKG9ianBmeCksJCh0ZXN0cykpOiAkKG9ianBmeClsaWJjcnlwdC5hCi0gZW5kaWYKLStlbmRpZgotZGlmZiAtLWdpdCBhL2VsZi9NYWtlZmlsZSBiL2VsZi9NYWtlZmlsZQotaW5kZXggMmE0MzJkOGJlZS4uMzY2ZjdiODBlYyAxMDA2NDQKLS0tLSBhL2VsZi9NYWtlZmlsZQotKysrIGIvZWxmL01ha2VmaWxlCi1AQCAtMzg1LDE1ICszODUsMTkgQEAgJChvYmpwZngpdHN0LV9kbF9hZGRyX2luc2lkZV9vYmplY3Q6ICQob2JqcGZ4KWRsLWFkZHItb2JqLm9zCi0gQ0ZMQUdTLXRzdC1fZGxfYWRkcl9pbnNpZGVfb2JqZWN0LmMgKz0gJChQSUUtY2NmbGFnKQotIGVuZGlmCi0gCi0tIyBCeSBkZWZhdWx0IHRzdC1saW5rYWxsLXN0YXRpYyBzaG91bGQgdHJ5IHRvIHVzZSBjcnlwdCByb3V0aW5lcyB0byB0ZXN0Ci0tIyBzdGF0aWMgbGliY3J5cHQgdXNlLgotLUNGTEFHUy10c3QtbGlua2FsbC1zdGF0aWMuYyArPSAtRFVTRV9DUllQVD0xCi0raWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQotKyMgSWYgdGhlIGxpYmNyeXB0IGxpYnJhcnkgaXMgYmVpbmcgYnVpbHQsIHRzdC1saW5rYWxsLXN0YXRpYyBzaG91bGQKLSsjIHRyeSB0byB1c2UgY3J5cHQgcm91dGluZXMgdG8gdGVzdCBzdGF0aWMgbGliY3J5cHQgdXNlLgotK0NGTEFHUy10c3QtbGlua2FsbC1zdGF0aWMuYyA9IC1EVVNFX0NSWVBUPTEKLSAjIEhvd2V2ZXIsIGlmIHdlIGFyZSB1c2luZyBOU1MgY3J5cHRvIGFuZCB3ZSBkb24ndCBoYXZlIGEgc3RhdGljCi0gIyBsaWJyYXJ5LCB0aGVuIHdlIGV4Y2x1ZGUgdGhlIHVzZSBvZiBjcnlwdCBmdW5jdGlvbnMgaW4gdGhlIHRlc3QuCi0gIyBXZSBzaW1pbGFybHkgZXhjbHVkZSBsaWJjcnlwdC5hIGZyb20gdGhlIHN0YXRpYyBsaW5rIChzZWUgYmVsb3cpLgotIGlmZXEgKHllc25vLCQobnNzLWNyeXB0KSQoc3RhdGljLW5zcy1jcnlwdCkpCi0gQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jICs9IC1VVVNFX0NSWVBUIC1EVVNFX0NSWVBUPTAKLSBlbmRpZgotK2Vsc2UKLStDRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgPSAtRFVTRV9DUllQVD0wCi0rZW5kaWYKLSAKLSBpbmNsdWRlIC4uL1J1bGVzCi0gCi1AQCAtMTExMyw4ICsxMTE3LDEwIEBAIGxvY2FscGx0LWJ1aWx0LWRzbyA6PSAkKGFkZHByZWZpeCAkKGNvbW1vbi1vYmpwZngpLFwKLSAJCQkJICBydC9saWJydC5zbyBcCi0gCQkJCSAgZGxmY24vbGliZGwuc28gXAotIAkJCQkgIHJlc29sdi9saWJyZXNvbHYuc28gXAotLQkJCQkgIGNyeXB0L2xpYmNyeXB0LnNvIFwKLSAJCSAgICAgICApCi0raWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQotK2xvY2FscGx0LWJ1aWx0LWRzbyArPSAkKGFkZHByZWZpeCAkKGNvbW1vbi1vYmpwZngpLCBjcnlwdC9saWJjcnlwdC5zbykKLStlbmRpZgotIGlmZXEgKCQoYnVpbGQtbWF0aHZlYykseWVzKQotIGxvY2FscGx0LWJ1aWx0LWRzbyArPSAkKGFkZHByZWZpeCAkKGNvbW1vbi1vYmpwZngpLCBtYXRodmVjL2xpYm12ZWMuc28pCi0gZW5kaWYKLUBAIC0xMzk1LDYgKzE0MDEsNyBAQCAkKG9ianBmeCl0c3QtbGlua2FsbC1zdGF0aWM6IFwKLSAgICQoY29tbW9uLW9ianBmeClyZXNvbHYvbGliYW5sLmEgXAotICAgJChzdGF0aWMtdGhyZWFkLWxpYnJhcnkpCi0gCi0raWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQotICMgSWYgd2UgYXJlIHVzaW5nIE5TUyBjcnlwdG8gYW5kIHdlIGhhdmUgdGhlIGFiaWxpdHkgdG8gbGluayBzdGF0aWNhbGx5Ci0gIyB0aGVuIHdlIGluY2x1ZGUgbGliY3J5cHQuYSwgb3RoZXJ3aXNlIHdlIGxlYXZlIG91dCBsaWJjcnlwdC5hIGFuZAotICMgbGluayBhcyBtdWNoIGFzIHdlIGNhbiBpbnRvIHRoZSB0c3QtbGlua2FsbC1zdGF0aWMgdGVzdC4gIFRoaXMgYXNzdW1lcwotQEAgLTE0MTAsNiArMTQxNyw3IEBAIGlmZXEgKG5vLCQobnNzLWNyeXB0KSkKLSAkKG9ianBmeCl0c3QtbGlua2FsbC1zdGF0aWM6IFwKLSAgICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCi0gZW5kaWYKLStlbmRpZgotIAotICMgVGhlIGFwcGxpY2F0aW9uIGRlcGVuZHMgb24gdGhlIERTTywgYW5kIHRoZSBEU08gbG9hZHMgdGhlIHBsdWdpbi4KLSAjIFRoZSBwbHVnaW4gYWxzbyBkZXBlbmRzIG9uIHRoZSBEU08uIFRoaXMgY3JlYXRlcyB0aGUgY2lyY3VsYXIKLWRpZmYgLS1naXQgYS9lbGYvdHN0LWxpbmthbGwtc3RhdGljLmMgYi9lbGYvdHN0LWxpbmthbGwtc3RhdGljLmMKLWluZGV4IGU4ZGYzOGY3NGUuLjBmZmFlN2M3MjMgMTAwNjQ0Ci0tLS0gYS9lbGYvdHN0LWxpbmthbGwtc3RhdGljLmMKLSsrKyBiL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYwotQEAgLTE4LDcgKzE4LDkgQEAKLSAKLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2lmIFVTRV9DUllQVAotICNpbmNsdWRlIDxjcnlwdC5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxyZXNvbHYuaD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4KLSAjaW5jbHVkZSA8dXRtcC5oPgotZGlmZiAtLWdpdCBhL3Bvc2l4L3VuaXN0ZC5oIGIvcG9zaXgvdW5pc3RkLmgKLWluZGV4IDRkMTQ5Zjk5NDUuLmU3NWNlNGQ0ZWMgMTAwNjQ0Ci0tLS0gYS9wb3NpeC91bmlzdGQuaAotKysrIGIvcG9zaXgvdW5pc3RkLmgKLUBAIC0xMDcsOSArMTA3LDYgQEAgX19CRUdJTl9ERUNMUwotIC8qIFRoZSBYL09wZW4gVW5peCBleHRlbnNpb25zIGFyZSBhdmFpbGFibGUuICAqLwotICNkZWZpbmUgX1hPUEVOX1VOSVgJMQotIAotLS8qIEVuY3J5cHRpb24gaXMgcHJlc2VudC4gICovCi0tI2RlZmluZQlfWE9QRU5fQ1JZUFQJMQotLQotIC8qIFRoZSBlbmhhbmNlZCBpbnRlcm5hdGlvbmFsaXphdGlvbiBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRvIFhQRzQuMgotICAgIGFyZSBwcmVzZW50LiAgKi8KLSAjZGVmaW5lCV9YT1BFTl9FTkhfSTE4TgkxCi1AQCAtMTExOCwyMCArMTExNSw3IEBAIHNzaXplX3QgY29weV9maWxlX3JhbmdlIChpbnQgX19pbmZkLCBfX29mZjY0X3QgKl9fcGlub2ZmLAotIGV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpOwotICNlbmRpZiAvKiBVc2UgUE9TSVgxOTkzMDkgKi8KLSAKLS0KLS0vKiBYUEc0LjIgc3BlY2lmaWVzIHRoYXQgcHJvdG90eXBlcyBmb3IgdGhlIGVuY3J5cHRpb24gZnVuY3Rpb25zIG11c3QKLS0gICBiZSBkZWZpbmVkIGhlcmUuICAqLwotICNpZmRlZglfX1VTRV9YT1BFTgotLS8qIEVuY3J5cHQgYXQgbW9zdCA4IGNoYXJhY3RlcnMgZnJvbSBLRVkgdXNpbmcgc2FsdCB0byBwZXJ0dXJiIERFUy4gICovCi0tZXh0ZXJuIGNoYXIgKmNyeXB0IChjb25zdCBjaGFyICpfX2tleSwgY29uc3QgY2hhciAqX19zYWx0KQotLSAgICAgX19USFJPVyBfX25vbm51bGwgKCgxLCAyKSk7Ci0tCi0tLyogRW5jcnlwdCBkYXRhIGluIEJMT0NLIGluIHBsYWNlIGlmIEVERkxBRyBpcyB6ZXJvOyBvdGhlcndpc2UgZGVjcnlwdAotLSAgIGJsb2NrIGluIHBsYWNlLiAgKi8KLS1leHRlcm4gdm9pZCBlbmNyeXB0IChjaGFyICpfX2dsaWJjX2Jsb2NrLCBpbnQgX19lZGZsYWcpCi0tICAgICBfX1RIUk9XIF9fbm9ubnVsbCAoKDEpKTsKLS0KLS0KLSAvKiBTd2FiIHBhaXJzIGJ5dGVzIGluIHRoZSBmaXJzdCBOIGJ5dGVzIG9mIHRoZSBhcmVhIHBvaW50ZWQgdG8gYnkKLSAgICBGUk9NIGFuZCBjb3B5IHRoZSByZXN1bHQgdG8gVE8uICBUaGUgdmFsdWUgb2YgVE8gbXVzdCBub3QgYmUgaW4gdGhlCi0gICAgcmFuZ2UgW0ZST00gLSBOICsgMSwgRlJPTSAtIDFdLiAgSWYgTiBpcyBvZGQgdGhlIGZpcnN0IGJ5dGUgaW4gRlJPTQotZGlmZiAtLWdpdCBhL3N0ZGxpYi9zdGRsaWIuaCBiL3N0ZGxpYi9zdGRsaWIuaAotaW5kZXggNmIxZWFkMzFlMC4uOGUyM2U5MzU1NyAxMDA2NDQKLS0tLSBhL3N0ZGxpYi9zdGRsaWIuaAotKysrIGIvc3RkbGliL3N0ZGxpYi5oCi1AQCAtOTU4LDEyICs5NTgsNiBAQCBleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAotICNlbmRpZgotIAotIAotLSNpZmRlZiBfX1VTRV9YT1BFTgotLS8qIFNldHVwIERFUyB0YWJsZXMgYWNjb3JkaW5nIEtFWS4gICovCi0tZXh0ZXJuIHZvaWQgc2V0a2V5IChjb25zdCBjaGFyICpfX2tleSkgX19USFJPVyBfX25vbm51bGwgKCgxKSk7Ci0tI2VuZGlmCi0tCi0tCi0gLyogWC9PcGVuIHBzZXVkbyB0ZXJtaW5hbCBoYW5kbGluZy4gICovCi0gCi0gI2lmZGVmIF9fVVNFX1hPUEVOMktYU0kKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUgYi9zeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUKLWluZGV4IGE2ZDA4ZjNhMDAuLmQ4YjgyOTdmYjAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUKLSsrKyBiL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZQotQEAgLTEsNiArMSw4IEBACi0gaWZlcSAoJChzdWJkaXIpLGNyeXB0KQotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgKz0gbWQ1LWNyb3Agc2hhMjU2LWNyb3Agc2hhNTEyLWNyb3AKLSBlbmRpZgotK2VuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLGxvY2FsZSkKLSBsb2NhbGVkZWYtYXV4ICs9IG1kNS1jcm9wCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZSBiL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUKLWluZGV4IGVhZjc1OGU3YWEuLjAxOThmOTg4NmYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlCi0rKysgYi9zeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlCi1AQCAtMSw2ICsxLDggQEAKLSBpZmVxICgkKHN1YmRpciksY3J5cHQpCi0raWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQotIGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcyArPSBtZDUtY3JvcCBzaGEyNTYtY3JvcCBzaGE1MTItY3JvcAotIGVuZGlmCi0rZW5kaWYKLSAKLSBpZmVxICgkKHN1YmRpciksbG9jYWxlKQotIGxvY2FsZWRlZi1hdXggKz0gbWQ1LWNyb3AKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUKLWluZGV4IDRhZGMzNWRlMDQuLjZjYWI0ZjNhMzEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZQotQEAgLTE5LDggKzE5LDEwIEBAIGVuZGlmCi0gIyBBZGQgYSBzeXNjYWxsIGZ1bmN0aW9uIHRvIGVhY2ggbGlicmFyeSB0aGF0IG5lZWRzIG9uZS4KLSAKLSBpZmVxICgkKHN1YmRpciksY3J5cHQpCi0raWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQotIGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcyArPSBsaWJjLWRvLXN5c2NhbGwKLSBlbmRpZgotK2VuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLHJ0KQotIGxpYnJ0LXN5c2RlcF9yb3V0aW5lcyArPSBsaWJjLWRvLXN5c2NhbGwKLS0tIAotMi4xNi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1zeXNkZXBzLWllZWU3NTQtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLXN5c2RlcHMtaWVlZTc1NC1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmNTVkNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1zeXNkZXBzLWllZWU3NTQtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13LnBhdGNoCkBAIC0wLDAgKzEsMjU4IEBACitGcm9tIDU0NmI0NmMzMDlhNTJlZDc0ZGM5MDYxMTRiMWU5ODRiYjk3MDNkNzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IFNlcCAyMDE4IDIzOjIzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2RlcHMvaWVlZTc1NDogcHJldmVudCBtYXliZS11bmluaXRpYWxpemVkIGVycm9ycyB3aXRoIC1PCisgW0JaICMxOTQ0NF0KKworV2l0aCAtTyBpbmNsdWRlZCBpbiBDRkxBR1MgaXQgZmFpbHMgdG8gYnVpbGQgd2l0aDoKKworLi4vc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYzogSW4gZnVuY3Rpb24gJ19faWVlZTc1NF9qbmwnOgorLi4vc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYzoxNDY6MjA6IGVycm9yOiAndGVtcCcgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCisgICAgICBiID0gaW52c3FydHBpICogdGVtcCAvIHNxcnRsICh4KTsKKyAgICAgICAgICB+fn5+fn5+fn5+Xn5+fn5+CisuLi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jOiBJbiBmdW5jdGlvbiAnX19pZWVlNzU0X3lubCc6CisuLi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jOjM3NToxNjogZXJyb3I6ICd0ZW1wJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KKyAgYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0bCAoeCk7CisgICAgICB+fn5+fn5+fn5+Xn5+fn5+CisuLi9zeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYzogSW4gZnVuY3Rpb24gJ19faWVlZTc1NF9qbic6CisuLi9zeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYzoxMTM6MjA6IGVycm9yOiAndGVtcCcgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCisgICAgICBiID0gaW52c3FydHBpICogdGVtcCAvIHNxcnQgKHgpOworICAgICAgICAgIH5+fn5+fn5+fn5efn5+fn4KKy4uL3N5c2RlcHMvaWVlZTc1NC9kYmwtNjQvZV9qbi5jOiBJbiBmdW5jdGlvbiAnX19pZWVlNzU0X3luJzoKKy4uL3N5c2RlcHMvaWVlZTc1NC9kYmwtNjQvZV9qbi5jOjMyMDoxNjogZXJyb3I6ICd0ZW1wJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KKyAgYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0ICh4KTsKKyAgICAgIH5+fn5+fn5+fn5efn5+fn4KKworQnVpbGQgdGVzdGVkIHdpdGggWW9jdG8gZm9yIEFSTSwgQUFSQ0g2NCwgWDg2LCBYODZfNjQsIFBQQywgTUlQUywgTUlQUzY0Cit3aXRoIC1PLCAtTzEsIC1Pcy4KK0ZvciBzb2Z0LWZwIEFSTSBpdCBuZWVkcyBvbmUgbW9yZSBmaXggZm9yIC1PMToKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE4LTA5L21zZzAwMzAwLmh0bWwKK0ZvciBBQVJDSDY0IGl0IG5lZWRzIG9uZSBtb3JlIGZpeCBpbiBsb2NhbGUgZm9yIC1Pcy4KKworICAgICAgICBbQlogIzIzNzE2XQorICAgICAgICAqIHN5c2RlcHMvaWVlZTc1NC9kYmwtOTYvZV9qbmwuYzogRml4IGJ1aWxkIHdpdGggLU8KKyAgICAgICAgKiBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jOiBMaWtld2lzZS4KKyAgICAgICAgKiBzeXNkZXBzL2llZWU3NTQvbGRibC0xMjgvZV9qbmwuYzogTGlrZXdpc2UuCisgICAgICAgICogc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4aWJtL2Vfam5sLmM6IExpa2V3aXNlLgorCitXb3JrIGFyb3VuZCB0aGUgaXNzdWUgaW5zdGVhZCBvZiByZW1vdmluZyAtTyBsaWtlIHdlIGRvIHdpdGgKK1NFTEVDVEVEX09QVElNSVpBVElPTgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE4LTA5L21zZzAwMjk5Lmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKy0tLQorIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKysrKworIHN5c2RlcHMvaWVlZTc1NC9kYmwtNjQvZV9qbi5jICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4L2Vfam5sLmMgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL2llZWU3NTQvbGRibC0xMjhpYm0vZV9qbmwuYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2Vfam5sLmMgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDExYTliOGQ5OGUuLjkyMmU5MTZmMmMgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSwxMCBAQAorKzIwMTgtMDktMjkgIE1hcnRpbiBKYW5zYSAgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisrCVBhcnRpYWwgZml4IGZvciBbQlogIzIzNzE2XQorKwkqIHN5c2RlcHMvaWVlZTc1NC9kYmwtOTYvZV9qbmwuYzogRml4IGJ1aWxkIHdpdGggLU8KKysJKiBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jOiBMaWtld2lzZS4KKysJKiBzeXNkZXBzL2llZWU3NTQvbGRibC0xMjgvZV9qbmwuYzogTGlrZXdpc2UuCisrCSogc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4aWJtL2Vfam5sLmM6IExpa2V3aXNlLgorKworIDIwMTgtMDktMjggIEFkaGVtZXJ2YWwgWmFuZWxsYSAgPGFkaGVtZXJ2YWwuemFuZWxsYUBsaW5hcm8ub3JnPgorIAorIAlbQlogIzIzNTc5XQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9kYmwtNjQvZV9qbi5jIGIvc3lzZGVwcy9pZWVlNzU0L2RibC02NC9lX2puLmMKK2luZGV4IDkxODFiMjJiYjguLjlmZjUyYzczN2YgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYworKysrIGIvc3lzZGVwcy9pZWVlNzU0L2RibC02NC9lX2puLmMKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgPG1hdGgtbmFycm93LWV2YWwuaD4KKyAjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisgI2luY2x1ZGUgPG1hdGgtdW5kZXJmbG93Lmg+CisrI2luY2x1ZGUgPGxpYmMtZGlhZy5oPgorIAorIHN0YXRpYyBjb25zdCBkb3VibGUKKyAgIGludnNxcnRwaSA9IDUuNjQxODk1ODM1NDc3NTYyNzkyODBlLTAxLCAvKiAweDNGRTIwREQ3LCAweDUwNDI5QjZEICovCitAQCAtMTA5LDcgKzExMCwxNyBAQCBfX2llZWU3NTRfam4gKGludCBuLCBkb3VibGUgeCkKKyAJICAgICAgY2FzZSAyOiB0ZW1wID0gLWMgLSBzOyBicmVhazsKKyAJICAgICAgY2FzZSAzOiB0ZW1wID0gYyAtIHM7IGJyZWFrOworIAkgICAgICB9CisrCSAgICAvKiBXaXRoIEdDQyA4IChhbmQgb2xkZXIpIHdoZW4gY29tcGlsaW5nIHdpdGggLU8gdGhlIGNvbXBpbGVyCisrCSAgICAgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgICAgICBUaGUgc3dpdGNoIGFib3ZlIGNvdmVycyBhbGwgcG9zc2libGUgdmFsdWVzIG9mIG4gJiAzCisrCSAgICAgICBidXQgR0NDIHdpdGhvdXQgVlJQIGVuYWJsZWQgaXNuJ3QgYWJsZSB0byBmaWd1cmUgb3V0IHRoZQorKwkgICAgICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY5MjMwCisrCSAgICAgICBzbyBpdCdzIGZhbHNlIHBvc3NpdGl2ZSB3aXRoIC1PMSBhbmQgbG93ZXIuICovCisrCSAgICBESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJICAgIERJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAJICAgIGIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydCAoeCk7CisrCSAgICBESUFHX1BPUF9ORUVEU19DT01NRU5UOworIAkgIH0KKyAJZWxzZQorIAkgIHsKK0BAIC0zMTYsNyArMzI3LDE3IEBAIF9faWVlZTc1NF95biAoaW50IG4sIGRvdWJsZSB4KQorIAkgIGNhc2UgMjogdGVtcCA9IC1zICsgYzsgYnJlYWs7CisgCSAgY2FzZSAzOiB0ZW1wID0gcyArIGM7IGJyZWFrOworIAkgIH0KKysJLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgIFRoZSBzd2l0Y2ggYWJvdmUgY292ZXJzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgbiAmIDMKKysJICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKysJICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwlESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworIAliID0gaW52c3FydHBpICogdGVtcCAvIHNxcnQgKHgpOworKwlESUFHX1BPUF9ORUVEU19DT01NRU5UOworICAgICAgIH0KKyAgICAgZWxzZQorICAgICAgIHsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvbGRibC0xMjgvZV9qbmwuYyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOC9lX2pubC5jCitpbmRleCA3NzM5ZWVjMjkxLi44NzA2YTExNTc1IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4L2Vfam5sLmMKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOC9lX2pubC5jCitAQCAtNjEsNiArNjEsNyBAQAorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorICNpbmNsdWRlIDxtYXRoLXVuZGVyZmxvdy5oPgorKyNpbmNsdWRlIDxsaWJjLWRpYWcuaD4KKyAKKyBzdGF0aWMgY29uc3QgX0Zsb2F0MTI4CisgICBpbnZzcXJ0cGkgPSBMKDUuNjQxODk1ODM1NDc3NTYyODY5NDgwNzk0NTE1NjA3NzI1ODU4NDQwNUUtMSksCitAQCAtMTUwLDcgKzE1MSwxNyBAQCBfX2llZWU3NTRfam5sIChpbnQgbiwgX0Zsb2F0MTI4IHgpCisgCQl0ZW1wID0gYyAtIHM7CisgCQlicmVhazsKKyAJICAgICAgfQorKwkgICAgLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICAgICAgd2FybnMgdGhhdCB0aGUgdmFyaWFibGUgJ3RlbXAnLCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKwkgICAgICAgVGhlIHN3aXRjaCBhYm92ZSBjb3ZlcnMgYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBuICYgMworKwkgICAgICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgICAgIHJhbmdlIG9mIHBvc3NpYmxlIHZhbHVlcyBpcyBbMCwzXSBhcyBleHBsYWluZWQgaW46CisrCSAgICAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02OTIzMAorKwkgICAgICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwkgICAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrCSAgICBESUFHX0lHTk9SRV9ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgCSAgICBiID0gaW52c3FydHBpICogdGVtcCAvIHNxcnRsICh4KTsKKysJICAgIERJQUdfUE9QX05FRURTX0NPTU1FTlQ7CisgCSAgfQorIAllbHNlCisgCSAgeworQEAgLTM4Niw3ICszOTcsMTcgQEAgX19pZWVlNzU0X3lubCAoaW50IG4sIF9GbG9hdDEyOCB4KQorIAkgICAgdGVtcCA9IHMgKyBjOworIAkgICAgYnJlYWs7CisgCSAgfQorKwkvKiBXaXRoIEdDQyA4IChhbmQgb2xkZXIpIHdoZW4gY29tcGlsaW5nIHdpdGggLU8gdGhlIGNvbXBpbGVyCisrCSAgIHdhcm5zIHRoYXQgdGhlIHZhcmlhYmxlICd0ZW1wJywgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KKysJICAgVGhlIHN3aXRjaCBhYm92ZSBjb3ZlcnMgYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBuICYgMworKwkgICBidXQgR0NDIHdpdGhvdXQgVlJQIGVuYWJsZWQgaXNuJ3QgYWJsZSB0byBmaWd1cmUgb3V0IHRoZQorKwkgICByYW5nZSBvZiBwb3NzaWJsZSB2YWx1ZXMgaXMgWzAsM10gYXMgZXhwbGFpbmVkIGluOgorKwkgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02OTIzMAorKwkgICBzbyBpdCdzIGZhbHNlIHBvc3NpdGl2ZSB3aXRoIC1PMSBhbmQgbG93ZXIuICovCisrCURJQUdfUFVTSF9ORUVEU19DT01NRU5UOworKwlESUFHX0lHTk9SRV9ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgCWIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydGwgKHgpOworKwlESUFHX1BPUF9ORUVEU19DT01NRU5UOworICAgICAgIH0KKyAgICAgZWxzZQorICAgICAgIHsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvbGRibC0xMjhpYm0vZV9qbmwuYyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOGlibS9lX2pubC5jCitpbmRleCA3MWIzYWRkZmJhLi4zMjI2ZDAyMzA5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4aWJtL2Vfam5sLmMKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOGlibS9lX2pubC5jCitAQCAtNjEsNiArNjEsNyBAQAorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorICNpbmNsdWRlIDxtYXRoLXVuZGVyZmxvdy5oPgorKyNpbmNsdWRlIDxsaWJjLWRpYWcuaD4KKyAKKyBzdGF0aWMgY29uc3QgbG9uZyBkb3VibGUKKyAgIGludnNxcnRwaSA9IDUuNjQxODk1ODM1NDc3NTYyODY5NDgwNzk0NTE1NjA3NzI1ODU4NDQwNUUtMUwsCitAQCAtMTUwLDcgKzE1MSwxNyBAQCBfX2llZWU3NTRfam5sIChpbnQgbiwgbG9uZyBkb3VibGUgeCkKKyAJCXRlbXAgPSBjIC0gczsKKyAJCWJyZWFrOworIAkgICAgICB9CisrCSAgICAvKiBXaXRoIEdDQyA4IChhbmQgb2xkZXIpIHdoZW4gY29tcGlsaW5nIHdpdGggLU8gdGhlIGNvbXBpbGVyCisrCSAgICAgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgICAgICBUaGUgc3dpdGNoIGFib3ZlIGNvdmVycyBhbGwgcG9zc2libGUgdmFsdWVzIG9mIG4gJiAzCisrCSAgICAgICBidXQgR0NDIHdpdGhvdXQgVlJQIGVuYWJsZWQgaXNuJ3QgYWJsZSB0byBmaWd1cmUgb3V0IHRoZQorKwkgICAgICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY5MjMwCisrCSAgICAgICBzbyBpdCdzIGZhbHNlIHBvc3NpdGl2ZSB3aXRoIC1PMSBhbmQgbG93ZXIuICovCisrCSAgICBESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJICAgIERJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAJICAgIGIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydGwgKHgpOworKwkgICAgRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAJICB9CisgCWVsc2UKKyAJICB7CitAQCAtMzg2LDcgKzM5NywxNyBAQCBfX2llZWU3NTRfeW5sIChpbnQgbiwgbG9uZyBkb3VibGUgeCkKKyAJICAgIHRlbXAgPSBzICsgYzsKKyAJICAgIGJyZWFrOworIAkgIH0KKysJLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgIFRoZSBzd2l0Y2ggYWJvdmUgY292ZXJzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgbiAmIDMKKysJICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKysJICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwlESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworIAliID0gaW52c3FydHBpICogdGVtcCAvIHNxcnRsICh4KTsKKysJRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAgICAgICB9CisgICAgIGVsc2UKKyAgICAgICB7CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2Vfam5sLmMKK2luZGV4IDM5NDkyMWY1NjQuLmRhNWMyY2M5M2UgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jCisrKysgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jCitAQCAtNjEsNiArNjEsNyBAQAorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorICNpbmNsdWRlIDxtYXRoLXVuZGVyZmxvdy5oPgorKyNpbmNsdWRlIDxsaWJjLWRpYWcuaD4KKyAKKyBzdGF0aWMgY29uc3QgbG9uZyBkb3VibGUKKyAgIGludnNxcnRwaSA9IDUuNjQxODk1ODM1NDc3NTYyODY5NDgwNzllLTFMLCB0d28gPSAyLjBlMEwsIG9uZSA9IDEuMGUwTDsKK0BAIC0xNDMsNyArMTQ0LDE3IEBAIF9faWVlZTc1NF9qbmwgKGludCBuLCBsb25nIGRvdWJsZSB4KQorIAkJdGVtcCA9IGMgLSBzOworIAkJYnJlYWs7CisgCSAgICAgIH0KKysJICAgIC8qIFdpdGggR0NDIDggKGFuZCBvbGRlcikgd2hlbiBjb21waWxpbmcgd2l0aCAtTyB0aGUgY29tcGlsZXIKKysJICAgICAgIHdhcm5zIHRoYXQgdGhlIHZhcmlhYmxlICd0ZW1wJywgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KKysJICAgICAgIFRoZSBzd2l0Y2ggYWJvdmUgY292ZXJzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgbiAmIDMKKysJICAgICAgIGJ1dCBHQ0Mgd2l0aG91dCBWUlAgZW5hYmxlZCBpc24ndCBhYmxlIHRvIGZpZ3VyZSBvdXQgdGhlCisrCSAgICAgICByYW5nZSBvZiBwb3NzaWJsZSB2YWx1ZXMgaXMgWzAsM10gYXMgZXhwbGFpbmVkIGluOgorKwkgICAgICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKysJICAgICAgIHNvIGl0J3MgZmFsc2UgcG9zc2l0aXZlIHdpdGggLU8xIGFuZCBsb3dlci4gKi8KKysJICAgIERJQUdfUFVTSF9ORUVEU19DT01NRU5UOworKwkgICAgRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworIAkgICAgYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0bCAoeCk7CisrCSAgICBESUFHX1BPUF9ORUVEU19DT01NRU5UOworIAkgIH0KKyAJZWxzZQorIAkgIHsKK0BAIC0zNzIsNyArMzgzLDE3IEBAIF9faWVlZTc1NF95bmwgKGludCBuLCBsb25nIGRvdWJsZSB4KQorIAkgICAgdGVtcCA9IHMgKyBjOworIAkgICAgYnJlYWs7CisgCSAgfQorKwkvKiBXaXRoIEdDQyA4IChhbmQgb2xkZXIpIHdoZW4gY29tcGlsaW5nIHdpdGggLU8gdGhlIGNvbXBpbGVyCisrCSAgIHdhcm5zIHRoYXQgdGhlIHZhcmlhYmxlICd0ZW1wJywgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KKysJICAgVGhlIHN3aXRjaCBhYm92ZSBjb3ZlcnMgYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBuICYgMworKwkgICBidXQgR0NDIHdpdGhvdXQgVlJQIGVuYWJsZWQgaXNuJ3QgYWJsZSB0byBmaWd1cmUgb3V0IHRoZQorKwkgICByYW5nZSBvZiBwb3NzaWJsZSB2YWx1ZXMgaXMgWzAsM10gYXMgZXhwbGFpbmVkIGluOgorKwkgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02OTIzMAorKwkgICBzbyBpdCdzIGZhbHNlIHBvc3NpdGl2ZSB3aXRoIC1PMSBhbmQgbG93ZXIuICovCisrCURJQUdfUFVTSF9ORUVEU19DT01NRU5UOworKwlESUFHX0lHTk9SRV9ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgCWIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydGwgKHgpOworKwlESUFHX1BPUF9ORUVEU19DT01NRU5UOworICAgICAgIH0KKyAgICAgZWxzZQorICAgICAgIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMi1zeXNkZXBzLWllZWU3NTQtc29mdC1mcC1pZ25vcmUtbWF5YmUtdW5pbml0aWFsaXplZC13LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMyLXN5c2RlcHMtaWVlZTc1NC1zb2Z0LWZwLWlnbm9yZS1tYXliZS11bmluaXRpYWxpemVkLXcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljZDI1MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMi1zeXNkZXBzLWllZWU3NTQtc29mdC1mcC1pZ25vcmUtbWF5YmUtdW5pbml0aWFsaXplZC13LnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIDYxODY2ODU0MGUyNjNjMDliMGViMjgxMzFkZGU3YjQ1MDAxNThmZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IFNlcCAyMDE4IDEyOjM5OjIyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwOiBpZ25vcmUgbWF5YmUtdW5pbml0aWFsaXplZCB3aXRoIC1PCisgW0JaICMxOTQ0NF0KKworKiB3aXRoIC1PLCAtTzEsIC1PcyBpdCBmYWlscyB3aXRoOgorCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc29mdC1mcC9zb2Z0LWZwLmg6MzE4LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOjI4OgorLi4vc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmM6IEluIGZ1bmN0aW9uICdfX2ZkaXYnOgorLi4vc29mdC1mcC9vcC0yLmg6OTg6MjU6IGVycm9yOiAnUl9mMScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCisgICAgICAgIFgjI19mMCA9IChYIyNfZjEgPDwgKF9GUF9XX1RZUEVfU0laRSAtIChOKSkgfCBYIyNfZjAgPj4gKE4pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBefgorLi4vc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmM6Mzg6MTQ6IG5vdGU6ICdSX2YxJyB3YXMgZGVjbGFyZWQgaGVyZQorICAgRlBfREVDTF9EIChSKTsKKyAgICAgICAgICAgICAgXgorLi4vc29mdC1mcC9vcC0yLmg6Mzc6MzY6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8gJ19GUF9GUkFDX0RFQ0xfMicKKyAgIF9GUF9XX1RZUEUgWCMjX2YwIF9GUF9aRVJPX0lOSVQsIFgjI19mMSBfRlBfWkVST19JTklUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisuLi9zb2Z0LWZwL2RvdWJsZS5oOjk1OjI0OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ19GUF9ERUNMJworICMgZGVmaW5lIEZQX0RFQ0xfRChYKSAgX0ZQX0RFQ0wgKDIsIFgpCisgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorLi4vc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmM6Mzg6Mzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdGUF9ERUNMX0QnCisgICBGUF9ERUNMX0QgKFIpOworICAgXn5+fn5+fn5+CisuLi9zb2Z0LWZwL29wLTIuaDoxMDE6MTc6IGVycm9yOiAnUl9mMCcgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCisgICAgICAgOiAoWCMjX2YwIDw8IChfRlBfV19UWVBFX1NJWkUgLSAoTikpKSAhPSAwKSk7IFwKKyAgICAgICAgICAgICAgICAgXn4KKy4uL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOjM4OjE0OiBub3RlOiAnUl9mMCcgd2FzIGRlY2xhcmVkIGhlcmUKKyAgIEZQX0RFQ0xfRCAoUik7CisgICAgICAgICAgICAgIF4KKy4uL3NvZnQtZnAvb3AtMi5oOjM3OjE0OiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICdfRlBfRlJBQ19ERUNMXzInCisgICBfRlBfV19UWVBFIFgjI19mMCBfRlBfWkVST19JTklULCBYIyNfZjEgX0ZQX1pFUk9fSU5JVAorICAgICAgICAgICAgICBeCisuLi9zb2Z0LWZwL2RvdWJsZS5oOjk1OjI0OiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ19GUF9ERUNMJworICMgZGVmaW5lIEZQX0RFQ0xfRChYKSAgX0ZQX0RFQ0wgKDIsIFgpCisgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorLi4vc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmM6Mzg6Mzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdGUF9ERUNMX0QnCisgICBGUF9ERUNMX0QgKFIpOworICAgXn5+fn5+fn5+CisKK0J1aWxkIHRlc3RlZCB3aXRoIFlvY3RvIGZvciBBUk0sIEFBUkNINjQsIFg4NiwgWDg2XzY0LCBQUEMsIE1JUFMsIE1JUFM2NAord2l0aCAtTywgLU8xLCAtT3MuCitGb3IgQUFSQ0g2NCBpdCBuZWVkcyBvbmUgbW9yZSBmaXggaW4gbG9jYWxlIGZvciAtT3MuCisKKwlQYXJ0aWFsIGZpeCBmb3IgW0JaICMyMzcxNl0KKwkqIHN5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOiBGaXggYnVpbGQgd2l0aCAtTworCitXb3JrIGFyb3VuZCB0aGUgaXNzdWUgaW5zdGVhZCBvZiByZW1vdmluZyAtTyBsaWtlIHdlIGRvIHdpdGgKK1NFTEVDVEVEX09QVElNSVpBVElPTgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE4LTA5L21zZzAwMzAwLmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKy0tLQorIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrKworIHN5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jIHwgMTIgKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDkyMmU5MTZmMmMuLjIxNjMzNmVkYzkgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSw3IEBACisrMjAxOC0wOS0zMCAgTWFydGluIEphbnNhICA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKysJUGFydGlhbCBmaXggZm9yIFtCWiAjMjM3MTZdCisrCSogc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmM6IEZpeCBidWlsZCB3aXRoIC1PLgorKworIDIwMTgtMDktMjkgIE1hcnRpbiBKYW5zYSAgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisgCVBhcnRpYWwgZml4IGZvciBbQlogIzIzNzE2XQorIAkqIHN5c2RlcHMvaWVlZTc1NC9kYmwtOTYvZV9qbmwuYzogRml4IGJ1aWxkIHdpdGggLU8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYyBiL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jCitpbmRleCAzNDEzMzlmNWVkLi4xNDY1NWI3N2RhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmMKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jCitAQCAtMjUsNiArMjUsMTYgQEAKKyAjdW5kZWYgZmRpdmwKKyAKKyAjaW5jbHVkZSA8bWF0aC1uYXJyb3cuaD4KKysKKysjaW5jbHVkZSA8bGliYy1kaWFnLmg+CisrLyogUl9mWzAxXSBhcmUgbm90IHNldCBpbiBjYXNlcyB3aGVyZSBpdCBpcyBub3QgdXNlZCBpbiBwYWNraW5nLCBidXQgdGhlCisrICAgY29tcGlsZXIgZG9lcyBub3Qgc2VlIHRoYXQgaXQgaXMgc2V0IGluIGFsbCBjYXNlcyB3aGVyZSBpdCBpcworKyAgIHVzZWQsIHJlc3VsdGluZyBpbiB3YXJuaW5ncyB0aGF0IGl0IG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrICAgVGhlIGxvY2F0aW9uIG9mIHRoZSB3YXJuaW5nIGRpZmZlcnMgaW4gZGlmZmVyZW50IHZlcnNpb25zIG9mIEdDQywKKysgICBpdCBtYXkgYmUgd2hlcmUgUiBpcyBkZWZpbmVkIHVzaW5nIGEgbWFjcm8gb3IgaXQgbWF5IGJlIHdoZXJlIHRoZQorKyAgIG1hY3JvIGlzIGRlZmluZWQuICAqLworK0RJQUdfUFVTSF9ORUVEU19DT01NRU5UOworK0RJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAjaW5jbHVkZSA8c29mdC1mcC5oPgorICNpbmNsdWRlIDxzaW5nbGUuaD4KKyAjaW5jbHVkZSA8ZG91YmxlLmg+CitAQCAtNTMsNCArNjMsNiBAQCBfX2ZkaXYgKGRvdWJsZSB4LCBkb3VibGUgeSkKKyAgIENIRUNLX05BUlJPV19ESVYgKHJldCwgeCwgeSk7CisgICByZXR1cm4gcmV0OworIH0KKytESUFHX1BPUF9ORUVEU19DT01NRU5UOworKworIGxpYm1fYWxpYXNfZmxvYXRfZG91YmxlIChkaXYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzMtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMy1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMDU4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzMtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGNiYWRhMWExYjIxOGMxZWY2MWQwZWI0MzYzZmFkNzU5OGU2NTA5ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDMwIFNlcCAyMDE4IDA5OjE2OjQ4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZTogcHJldmVudCBtYXliZS11bmluaXRpYWxpemVkIGVycm9ycyB3aXRoIC1PcyBbQloKKyAjMTk0NDRdCisKK0ZpeGVzIGZvbGxvd2luZyBlcnJvciB3aGVuIGJ1aWxkaW5nIGZvciBhYXJjaDY0IHdpdGggLU9zOgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3RyY29sbF9sLmM6NDM6Cit8IHN0cmNvbGxfbC5jOiBJbiBmdW5jdGlvbiAnX19zdHJjb2xsX2wnOgorfCAuLi9sb2NhbGUvd2VpZ2h0Lmg6MzE6MjY6IGVycm9yOiAnc2VxMi5iYWNrX3VzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KK3wgICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgorfCBzdHJjb2xsX2wuYzozMDQ6MTg6IG5vdGU6ICdzZXEyLmJhY2tfdXMnIHdhcyBkZWNsYXJlZCBoZXJlCit8ICAgIGNvbGxfc2VxIHNlcTEsIHNlcTI7Cit8ICAgICAgICAgICAgICAgICAgIF5+fn4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgorfCAuLi9sb2NhbGUvd2VpZ2h0Lmg6MzE6MjY6IGVycm9yOiAnc2VxMS5iYWNrX3VzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KK3wgICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgorfCBzdHJjb2xsX2wuYzozMDQ6MTI6IG5vdGU6ICdzZXExLmJhY2tfdXMnIHdhcyBkZWNsYXJlZCBoZXJlCit8ICAgIGNvbGxfc2VxIHNlcTEsIHNlcTI7Cit8ICAgICAgICAgICAgIF5+fn4KKworICAgICAgICBQYXJ0aWFsIGZpeCBmb3IgW0JaICMyMzcxNl0KKyAgICAgICAgKiBsb2NhbGUvd2VpZ2h0Lmg6IEZpeCBidWlsZCB3aXRoIC1Pcy4KKworV29yayBhcm91bmQgdGhlIGlzc3VlIGluc3RlYWQgb2YgcmVtb3ZpbmcgLU8gbGlrZSB3ZSBkbyB3aXRoCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxOC0wOS9tc2cwMDUzOS5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CistLS0KKyBDaGFuZ2VMb2cgICAgICAgfCA0ICsrKysKKyBsb2NhbGUvd2VpZ2h0LmggfCA3ICsrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZworaW5kZXggMjE2MzM2ZWRjOS4uODRmYmJmNDdlZCAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDcgQEAKKysyMDE4LTA5LTMwICBNYXJ0aW4gSmFuc2EgIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorKwlQYXJ0aWFsIGZpeCBmb3IgW0JaICMyMzcxNl0KKysJKiBsb2NhbGUvd2VpZ2h0Lmg6IEZpeCBidWlsZCB3aXRoIC1Pcy4KKysKKyAyMDE4LTA5LTMwICBNYXJ0aW4gSmFuc2EgIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorIAlQYXJ0aWFsIGZpeCBmb3IgW0JaICMyMzcxNl0KKyAJKiBzeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYzogRml4IGJ1aWxkIHdpdGggLU8uCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3dlaWdodC5oIGIvbG9jYWxlL3dlaWdodC5oCitpbmRleCA2MDI4ZDM1OTVlLi4xMGJjZWEyNWU1IDEwMDY0NAorLS0tIGEvbG9jYWxlL3dlaWdodC5oCisrKysgYi9sb2NhbGUvd2VpZ2h0LmgKK0BAIC0yOCw3ICsyOCwxNCBAQCBmaW5kaWR4IChjb25zdCBpbnQzMl90ICp0YWJsZSwKKyAJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV4dHJhLAorIAkgY29uc3QgdW5zaWduZWQgY2hhciAqKmNwcCwgc2l6ZV90IGxlbikKKyB7CisrICAvKiBXaXRoIEdDQyA4IHdoZW4gY29tcGlsaW5nIHdpdGggLU9zIHRoZSBjb21waWxlciB3YXJucyB0aGF0CisrICAgICBzZXExLmJhY2tfdXMgYW5kIHNlcTIuYmFja191cyBtaWdodCBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrICAgICBUaGlzIHVuaW5pdGlhbGl6ZWQgdXNlIGlzIGltcG9zc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbgorKyAgICAgYXMgZGVzY3JpYmVkIGluIGNvbW1lbnRzIGluIGxvY2FsZS93ZWlnaHR3Yy5oLiAgKi8KKysgIERJQUdfUFVTSF9ORUVEU19DT01NRU5UOworKyAgRElBR19JR05PUkVfT3NfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOworKyAgRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwOworICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXNyYzsKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzNC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDM0LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVlYmEyZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzNC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCkBAIC0wLDAgKzEsMjcyIEBACitDdXJyZW50bHksIG5vbi1JQSBidWlsZHMgYXJlIG5vdCByZXByb2R1Y2liaWxlIHNpbmNlIGJ1aWxkIHBhdGhzIGFyZSAKK2JlaW5nIGluamVjdGVkIGludG8gdGhlIGRlYnVnIHN5bWJvbHMuIFRoZXNlIGFyZSBjb21pbmcgZnJvbSB0aGUgdXNlIG9mCisuUyBhc3NlbWJsZXIgZmlsZXMgZHVyaW5nIHRoZSBnbGliYyBidWlsZC4gTm8gU1RUX0ZJTEUgc2VjdGlvbiBpcyBhZGRlZAorZHVyaW5nIHRoZSBhc3NlbWJseSBidXQgd2hlbiBsaW5raW5nLCBsZCBkZWNpZGVzIHRvIGFkZCBvbmUgdG8gYWlkIAorZGVidWdnaW5nIGFuZCBlbnN1cmUgcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb2JqZWN0IGZpbGVzIGl0cworbGlua2luZyByZW1haW4gY2xlYXIuCisKK1dlIGNhbiBhdm9pZCB0aGlzIGJ5IGluamVjdGluZyBhIGZpbGUgaGVhZGVyIGludG8gdGhlIGFzc2VtYmxlciBmaWxlcworYWhlYWQgb2YgdGltZSwgY2hvb3NpbmcgYSBmaWxlbmFtZSB3aGljaCBkb2VzIG5vdCBjb250YWluIGJ1aWxkIHN5c3RlbQorcGF0aHMuCisKK1RoaXMgaXMgYSBiaXQgb2YgYSB3b3JrYXJvdW5kL2hhY2sgYnV0IGRvZXMgc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlCitidWlsZCBzeXN0ZW0gcmVmZXJlbmNlcyBpbiB0YXJnZXQgYmluYXJpZXMgZm9yIHRoZSBub24tSUEgYXJjaGl0ZWN0dXJlcword2hpY2ggdXNlIC5TIGZpbGVzLgorCitSUAorMjAxOC8xMC8zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitkaWZmIC0tZ2l0IGEvY3N1L2FiaS1ub3RlLlMgYi9jc3UvYWJpLW5vdGUuUworaW5kZXggNWQwY2E3ODAzZC4uOGNlNDE1ODFiMSAxMDA2NDQKKy0tLSBhL2NzdS9hYmktbm90ZS5TCisrKysgYi9jc3UvYWJpLW5vdGUuUworQEAgLTU2LDYgKzU2LDggQEAgb2Zmc2V0CWxlbmd0aAljb250ZW50cworICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8YWJpLXRhZy5oPgkJLyogT1Mtc3BlY2lmaWMgQUJJIHRhZyB2YWx1ZSAqLworIAorKwkuZmlsZSAiYWJpLW5vdGUuUyIKKysKKyAvKiBUaGUgbGlua2VyIChHTlUgbGQgMi44IGFuZCBsYXRlcikgcmVjb2duaXplcyBhbiBhbGxvY2F0ZWQgc2VjdGlvbiB3aG9zZQorICAgIG5hbWUgYmVnaW5zIHdpdGggYC5ub3RlJyBhbmQgY3JlYXRlcyBhIFBUX05PVEUgcHJvZ3JhbSBoZWFkZXIgZW50cnkKKyAgICBwb2ludGluZyBhdCBpdC4gKi8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUworaW5kZXggMmIyMTM3NThiMi4uNzM2ZjMzZTMxNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKK0BAIC01MCw2ICs1MCw4IEBACisgIyBkZWZpbmUgUFJFSU5JVF9GVU5DVElPTl9XRUFLIDEKKyAjZW5kaWYKKyAKKysgICAgLmZpbGUgImNydGkuUyIKKysKKyAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCisgCXdlYWtfZXh0ZXJuIChQUkVJTklUX0ZVTkNUSU9OKQorICNlbHNlCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKK2luZGV4IGQ3MjMwMGFmODAuLmNiMjQ5YmYzY2EgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCitAQCAtMzcsNiArMzcsOCBAQAorIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCisgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KKyAKKysJLmZpbGUgImNydG4uUyIKKysKKyAJLnNlY3Rpb24gLmluaXQsImF4IiwlcHJvZ2JpdHMKKyAJbGRwCXgyOSwgeDMwLCBbc3BdLCAxNgorIAlSRVQKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCitpbmRleCBiYWQwMDBmNTU1Li41OTU3YzAyOGNkIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogVGhpcyBpcyB0aGUgY2Fub25pY2FsIGVudHJ5IHBvaW50LCB1c3VhbGx5IHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgdGV4dAorICAgIHNlZ21lbnQuCisgCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKK2luZGV4IDkyZmMwMTkxYTUuLjcxNWJmY2I5ZTQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgIl9fcmVhZF90cC5TIgorKworIAkuaGlkZGVuIF9fcmVhZF90cAorIEVOVFJZIChfX3JlYWRfdHApCisgCW1ycwl4MCwgdHBpZHJfZWwwCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKK2luZGV4IDQzYTYyZWYzMDcuLjQyZjg1Y2RkZTkgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCitAQCAtMjIsNiArMjIsOCBAQAorICNpbmNsdWRlIDx0bHMuaD4KKyAjaW5jbHVkZSAidGxzZGVzYy5oIgorIAorKwkuZmlsZSAiZGwtdGxzZGVzYy5TIgorKworICNkZWZpbmUgTlNBVkVEUVJFR1BBSVJTCTE2CisgI2RlZmluZSBTQVZFX1FfUkVHSVNURVJTCQkJCVwKKyAJc3RwCXEwLCBxMSwJW3NwLCAjLTMyKk5TQVZFRFFSRUdQQUlSU10hOwlcCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKK2luZGV4IGE4NmQwNzIyZDQuLjkyZWRhYjFkMDEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCitAQCAtMjEsNiArMjEsOCBAQAorIAorICNpbmNsdWRlICJkbC1saW5rLmgiCisgCisrCS5maWxlICJkbC10cmFtcG9saW5lLlMiCisrCisgI2RlZmluZSBpcDAgeDE2CisgI2RlZmluZSBpcDBsIFBUUl9SRUcgKDE2KQorICNkZWZpbmUgaXAxIHgxNworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCitpbmRleCAwN2JkNGM0NjE5Li43MjEzYjE2ZjI3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUworKysrIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUworQEAgLTEsMyArMSw1IEBACisrCS5maWxlICJhYmktbm90ZS5TIgorKworIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKKyAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCisgCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydGkuUyBiL3N5c2RlcHMvYXJtL2NydGkuUworaW5kZXggYTE0MjRkMDMzMy4uYmNhMWRhYjI1NiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NydGkuUworKysrIGIvc3lzZGVwcy9hcm0vY3J0aS5TCitAQCAtNTcsNiArNTcsOCBAQAorIAkuaGlkZGVuIFBSRUlOSVRfRlVOQ1RJT04KKyAjZW5kaWYKKyAKKysgICAgLmZpbGUgImNydGkuUyIKKysKKyAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCisgCS5wMmFsaWduIDIKKyAJLnR5cGUgY2FsbF93ZWFrX2ZuLCAlZnVuY3Rpb24KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRuLlMgYi9zeXNkZXBzL2FybS9jcnRuLlMKK2luZGV4IDI2MDI3NjkzY2UuLjY1YTA1MDI4MjYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jcnRuLlMKKysrKyBiL3N5c2RlcHMvYXJtL2NydG4uUworQEAgLTM3LDYgKzM3LDggQEAKKyAjZGVmaW5lIE5PX1RIVU1CCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKyAgICAuZmlsZSAiY3J0bi5TIgorKworIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCisgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KKyAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKK2luZGV4IDA1NmUxN2Q1MmQuLmE5OGM2OGRmYjkgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKKysrKyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUworQEAgLTIxLDYgKzIxLDggQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgInRsc2Rlc2MuaCIKKyAKKysJLmZpbGUgImRsLXRsc2Rlc2MuUyIKKysKKyAJLnRleHQKKyAJQCBlbWl0IGRlYnVnIGluZm9ybWF0aW9uIHdpdGggY2ZpCisgCUAgdXNlIGFybS1zcGVjaWZpYyBwc2V1ZG9zIGZvciB1bndpbmRpbmcgaXRzZWxmCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCitpbmRleCBjNzMxYjAxMjg2Li40YjM3YjI1MzQ0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCisrKysgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKK0BAIC0yMSw2ICsyMSw4IEBACisgI2luY2x1ZGUgPHN5c2RlcC5oPgorICNpbmNsdWRlIDxsaWJjLXN5bWJvbHMuaD4KKyAKKysJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKKysKKyAJLnRleHQKKyAJLmdsb2JsIF9kbF9ydW50aW1lX3Jlc29sdmUKKyAJLnR5cGUgX2RsX3J1bnRpbWVfcmVzb2x2ZSwgI2Z1bmN0aW9uCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vc3RhcnQuUyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKK2luZGV4IGFkZWYwOTA3MTcuLmQyMmU0MTI4ZTAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9zdGFydC5TCisrKysgYi9zeXNkZXBzL2FybS9zdGFydC5TCitAQCAtNTcsNiArNTcsOCBAQAorIAkJCQkJTlVMTAorICovCisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKKyAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCisgCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCitpbmRleCA4NzE3MDIzMTdhLi4yMGE5NDJkYmFjIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUworQEAgLTM5LDYgKzM5LDggQEAKKyAgICBhIG5vcm1hbCBmdW5jdGlvbiBjYWxsKSBpbiBhIGhpZ2ggcGFnZSBvZiBtZW1vcnk7IHRhaWwgY2FsbCB0byB0aGUKKyAgICBoZWxwZXIuICAqLworIAorKwkuZmlsZSAiYWVhYmlfcmVhZF90cC5TIgorKworIAkuaGlkZGVuIF9fYWVhYmlfcmVhZF90cAorIEVOVFJZIChfX2FlYWJpX3JlYWRfdHApCisgI2lmZGVmIEFSQ0hfSEFTX0hBUkRfVFAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvc3RhcnQuUyBiL3N5c2RlcHMvbWlwcy9zdGFydC5TCitpbmRleCBhNGM0ZWYwZmFlLi5kMDBmZmYzMWE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvbWlwcy9zdGFydC5TCitAQCAtMzgsNiArMzgsOCBAQAorICNpbmNsdWRlIDxzZ2lkZWZzLmg+CisgI2luY2x1ZGUgPHN5cy9hc20uaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgI2lmbmRlZiBFTlRSWV9QT0lOVAorICNlcnJvciBFTlRSWV9QT0lOVCBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBzdGFydC5TIG9uIE1JUFMvRUxGLgorICNlbmRpZgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCitpbmRleCBlZWI5NjU0NGUzLi5kYTE4MmIyOGY4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUworQEAgLTEgKzEsMyBAQAorKwkuZmlsZSAiZGwtYnJrLlMiCisrCisgI2luY2x1ZGUgPGJyay5TPgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworaW5kZXggNWMxMGEyMmY4YS4uMmI1MjYyN2YyNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCitAQCAtMzUsNiArMzUsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogV2UgZG8gbm90IHdhbnQgLmVoX2ZyYW1lIGluZm8gZm9yIGNydDEubyBzaW5jZSBjcnQxLm8gaXMgbGlua2VkCisgICAgYmVmb3JlIGNydGJlZ2luLm8sIHRoZSBmaWxlIGRlZmluaW5nIF9fRUhfRlJBTUVfQkVHSU5fXy4gICovCisgI3VuZGVmIGNmaV9zdGFydHByb2MKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKK2luZGV4IGJkNzE4OTMxMGMuLjJlMjJiODQ3MmQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUworQEAgLTM1LDYgKzM1LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAorICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLworICN1bmRlZiBjZmlfc3RhcnRwcm9jCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCitpbmRleCAyNDRkODdmYjZkLi4xNGQzZTJjZTE0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKK0BAIC0xOCw2ICsxOCw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAiZGwtc3RhcnQuUyIKKysKKyAvKiBJbml0aWFsIGVudHJ5IHBvaW50IGNvZGUgZm9yIHRoZSBkeW5hbWljIGxpbmtlci4KKyAgICBUaGUgQyBmdW5jdGlvbiBgX2RsX3N0YXJ0JyBpcyB0aGUgcmVhbCBlbnRyeSBwb2ludDsKKyAgICBpdHMgcmV0dXJuIHZhbHVlIGlzIHRoZSB1c2VyIHByb2dyYW0ncyBlbnRyeSBwb2ludC4JKi8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKK2luZGV4IGQyNmFkMWY4ZDMuLmEwZGUxMGJmODEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUworQEAgLTI3LDYgKzI3LDggQEAKKyAgICBBUk0gdW53aW5kIHRhYmxlcyBmb3IgcmVnaXN0ZXIgdG8gcmVnaXN0ZXIgbW92ZXMsIHRoZSBhY3R1YWwgb3Bjb2RlcworICAgIGFyZSBub3QgZGVmaW5lZC4gICovCisgCisrICAgICAgLmZpbGUgImxpYmMtZG8tc3lzY2FsbC5TIgorKworICNpZiBkZWZpbmVkKF9fdGh1bWJfXykKKyAJLnRodW1iCisgCS5zeW50YXggdW5pZmllZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xODI2OS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTgyNjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NzNjNTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xODI2OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi1Gcm9tIGNkNjZjMGU1ODRjNmQ2OTJiYzgzNDdiNWU3MjcyM2QwMmI4YThhZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZXcgU2Vua2V2aWNoIDxhbmRyZXcubi5zZW5rZXZpY2hAZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMyBNYXIgMjAxOCAxNjoxOTo0NSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggaTM4NiBtZW1tb3ZlIGlzc3VlIChidWcgMjI2NDQpLgotCi0JW0JaICMyMjY0NF0KLQkqIHN5c2RlcHMvaTM4Ni9pNjg2L211bHRpYXJjaC9tZW1jcHktc3NlMi11bmFsaWduZWQuUzogRml4ZWQKLQlicmFuY2ggY29uZGl0aW9ucy4KLQkqIHN0cmluZy90ZXN0LW1lbW1vdmUuYyAoZG9fdGVzdDIpOiBOZXcgdGVzdGNhc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTgyNjkKLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKwotIHN0cmluZy90ZXN0LW1lbW1vdmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTggKysrKysrKysrKysrKysrKysrKysrKwotIC4uLi9pMzg2L2k2ODYvbXVsdGlhcmNoL21lbWNweS1zc2UyLXVuYWxpZ25lZC5TICAgIHwgMTIgKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDE4ZWQwOWUuLmFmZGI3NjYgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTgtMDMtMjMgIEFuZHJldyBTZW5rZXZpY2ggIDxhbmRyZXcuc2Vua2V2aWNoQGludGVsLmNvbT4KLSsJICAgIE1heCBIb3JuICA8bWF4QHF1ZW5kaS5kZT4KLSsKLSsJW0JaICMyMjY0NF0KLSsJKiBzeXNkZXBzL2kzODYvaTY4Ni9tdWx0aWFyY2gvbWVtY3B5LXNzZTItdW5hbGlnbmVkLlM6IEZpeGVkCi0rCWJyYW5jaCBjb25kaXRpb25zLgotKwkqIHN0cmluZy90ZXN0LW1lbW1vdmUuYyAoZG9fdGVzdDIpOiBOZXcgdGVzdGNhc2UuCi0rCi0gMjAxOC0wMi0yMiAgQW5kcmV3IFdhdGVybWFuIDxhbmRyZXdAc2lmaXZlLmNvbT4KLSAKLSAJW0JaICMgMjI4ODRdCi1kaWZmIC0tZ2l0IGEvc3RyaW5nL3Rlc3QtbWVtbW92ZS5jIGIvc3RyaW5nL3Rlc3QtbWVtbW92ZS5jCi1pbmRleCBlZGM3YTRjLi42NGUzNjUxIDEwMDY0NAotLS0tIGEvc3RyaW5nL3Rlc3QtbWVtbW92ZS5jCi0rKysgYi9zdHJpbmcvdGVzdC1tZW1tb3ZlLmMKLUBAIC0yNCw2ICsyNCw3IEBACi0gIyBkZWZpbmUgVEVTVF9OQU1FICJtZW1tb3ZlIgotICNlbmRpZgotICNpbmNsdWRlICJ0ZXN0LXN0cmluZy5oIgotKyNpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmg+Ci0gCi0gY2hhciAqc2ltcGxlX21lbW1vdmUgKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwotIAotQEAgLTI0NSw2ICsyNDYsNjAgQEAgZG9fcmFuZG9tX3Rlc3RzICh2b2lkKQotICAgICB9Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rZG9fdGVzdDIgKHZvaWQpCi0rewotKyAgc2l6ZV90IHNpemUgPSAweDIwMDAwMDAwOwotKyAgdWludDMyX3QgKiBsYXJnZV9idWY7Ci0rCi0rICBsYXJnZV9idWYgPSBtbWFwICgodm9pZCopIDB4NzAwMDAwMDAsIHNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0rCQkgICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwotKwotKyAgaWYgKGxhcmdlX2J1ZiA9PSBNQVBfRkFJTEVEKQotKyAgICBlcnJvciAoRVhJVF9VTlNVUFBPUlRFRCwgZXJybm8sICJMYXJnZSBtbWFwIGZhaWxlZCIpOwotKwotKyAgaWYgKCh1aW50cHRyX3QpIGxhcmdlX2J1ZiA+IDB4ODAwMDAwMDAgLSAxMjgKLSsgICAgICB8fCAweDgwMDAwMDAwIC0gKHVpbnRwdHJfdCkgbGFyZ2VfYnVmID4gMHgyMDAwMDAwMCkKLSsgICAgewotKyAgICAgIGVycm9yICgwLCAwLCAiTGFyZ2UgbW1hcCBhbGxvY2F0ZWQgaW1wcm9wZXJseSIpOwotKyAgICAgIHJldCA9IEVYSVRfVU5TVVBQT1JURUQ7Ci0rICAgICAgbXVubWFwICgodm9pZCAqKSBsYXJnZV9idWYsIHNpemUpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgc2l6ZV90IGJ5dGVzX21vdmUgPSAweDgwMDAwMDAwIC0gKHVpbnRwdHJfdCkgbGFyZ2VfYnVmOwotKyAgc2l6ZV90IGFycl9zaXplID0gYnl0ZXNfbW92ZSAvIHNpemVvZiAodWludDMyX3QpOwotKyAgc2l6ZV90IGk7Ci0rCi0rICBGT1JfRUFDSF9JTVBMIChpbXBsLCAwKQotKyAgICB7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IGFycl9zaXplOyBpKyspCi0rICAgICAgICBsYXJnZV9idWZbaV0gPSAodWludDMyX3QpIGk7Ci0rCi0rICAgICAgdWludDMyX3QgKiBkc3QgPSAmbGFyZ2VfYnVmWzMzXTsKLSsKLSsjaWZkZWYgVEVTVF9CQ09QWQotKyAgICAgIENBTEwgKGltcGwsIChjaGFyICopIGxhcmdlX2J1ZiwgKGNoYXIgKikgZHN0LCBieXRlc19tb3ZlKTsKLSsjZWxzZQotKyAgICAgIENBTEwgKGltcGwsIChjaGFyICopIGRzdCwgKGNoYXIgKikgbGFyZ2VfYnVmLCBieXRlc19tb3ZlKTsKLSsjZW5kaWYKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyX3NpemU7IGkrKykKLSsJewotKwkgIGlmIChkc3RbaV0gIT0gKHVpbnQzMl90KSBpKQotKwkgICAgewotKwkgICAgICBlcnJvciAoMCwgMCwKLSsJCSAgICAgIldyb25nIHJlc3VsdCBpbiBmdW5jdGlvbiAlcyBkc3QgXCIlcFwiIHNyYyBcIiVwXCIgb2Zmc2V0IFwiJXpkXCIiLAotKwkJICAgICBpbXBsLT5uYW1lLCBkc3QsIGxhcmdlX2J1ZiwgaSk7Ci0rCSAgICAgIHJldCA9IDE7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgIG11bm1hcCAoKHZvaWQgKikgbGFyZ2VfYnVmLCBzaXplKTsKLSt9Ci0rCi0gaW50Ci0gdGVzdF9tYWluICh2b2lkKQotIHsKLUBAIC0yODQsNiArMzM5LDkgQEAgdGVzdF9tYWluICh2b2lkKQotICAgICB9Ci0gCi0gICBkb19yYW5kb21fdGVzdHMgKCk7Ci0rCi0rICBkb190ZXN0MiAoKTsKLSsKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvaTM4Ni9pNjg2L211bHRpYXJjaC9tZW1jcHktc3NlMi11bmFsaWduZWQuUyBiL3N5c2RlcHMvaTM4Ni9pNjg2L211bHRpYXJjaC9tZW1jcHktc3NlMi11bmFsaWduZWQuUwotaW5kZXggOWMzYmJlNy4uOWFhMTdkZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvaTM4Ni9pNjg2L211bHRpYXJjaC9tZW1jcHktc3NlMi11bmFsaWduZWQuUwotKysrIGIvc3lzZGVwcy9pMzg2L2k2ODYvbXVsdGlhcmNoL21lbWNweS1zc2UyLXVuYWxpZ25lZC5TCi1AQCAtNzIsNyArNzIsNyBAQCBFTlRSWSAoTUVNQ1BZKQotIAljbXAJJWVkeCwgJWVheAotIAotICMgaWZkZWYgVVNFX0FTX01FTU1PVkUKLS0JamcJTChjaGVja19mb3J3YXJkKQotKwlqYQlMKGNoZWNrX2ZvcndhcmQpCi0gCi0gTChtbV9sZW5fMF9vcl9tb3JlX2JhY2t3YXJkKToKLSAvKiBOb3cgZG8gY2hlY2tzIGZvciBsZW5ndGhzLiBXZSBkbyBbMC4uMTZdLCBbMTYuLjMyXSwgWzMyLi42NF0sIFs2NC4uMTI4XQotQEAgLTgxLDcgKzgxLDcgQEAgTChtbV9sZW5fMF9vcl9tb3JlX2JhY2t3YXJkKToKLSAJamJlCUwobW1fbGVuXzBfMTZfYnl0ZXNfYmFja3dhcmQpCi0gCi0gCWNtcGwJJDMyLCAlZWN4Ci0tCWpnCUwobW1fbGVuXzMyX29yX21vcmVfYmFja3dhcmQpCi0rCWphCUwobW1fbGVuXzMyX29yX21vcmVfYmFja3dhcmQpCi0gCi0gLyogQ29weSBbMC4uMzJdIGFuZCByZXR1cm4uICAqLwotIAltb3ZkcXUJKCVlYXgpLCAleG1tMAotQEAgLTkyLDcgKzkyLDcgQEAgTChtbV9sZW5fMF9vcl9tb3JlX2JhY2t3YXJkKToKLSAKLSBMKG1tX2xlbl8zMl9vcl9tb3JlX2JhY2t3YXJkKToKLSAJY21wbAkkNjQsICVlY3gKLS0JamcJTChtbV9sZW5fNjRfb3JfbW9yZV9iYWNrd2FyZCkKLSsJamEJTChtbV9sZW5fNjRfb3JfbW9yZV9iYWNrd2FyZCkKLSAKLSAvKiBDb3B5IFswLi42NF0gYW5kIHJldHVybi4gICovCi0gCW1vdmRxdQkoJWVheCksICV4bW0wCi1AQCAtMTA3LDcgKzEwNyw3IEBAIEwobW1fbGVuXzMyX29yX21vcmVfYmFja3dhcmQpOgotIAotIEwobW1fbGVuXzY0X29yX21vcmVfYmFja3dhcmQpOgotIAljbXBsCSQxMjgsICVlY3gKLS0JamcJTChtbV9sZW5fMTI4X29yX21vcmVfYmFja3dhcmQpCi0rCWphCUwobW1fbGVuXzEyOF9vcl9tb3JlX2JhY2t3YXJkKQotIAotIC8qIENvcHkgWzAuLjEyOF0gYW5kIHJldHVybi4gICovCi0gCW1vdmRxdQkoJWVheCksICV4bW0wCi1AQCAtMTMyLDcgKzEzMiw3IEBAIEwobW1fbGVuXzEyOF9vcl9tb3JlX2JhY2t3YXJkKToKLSAJYWRkCSVlY3gsICVlYXgKLSAJY21wCSVlZHgsICVlYXgKLSAJbW92bAlTUkMoJWVzcCksICVlYXgKLS0JamxlCUwoZm9yd2FyZCkKLSsJamJlCUwoZm9yd2FyZCkKLSAJUFVTSCAoJWVzaSkKLSAJUFVTSCAoJWVkaSkKLSAJUFVTSCAoJWVieCkKLUBAIC0yNjksNyArMjY5LDcgQEAgTChjaGVja19mb3J3YXJkKToKLSAJYWRkCSVlZHgsICVlY3gKLSAJY21wCSVlYXgsICVlY3gKLSAJbW92bAlMRU4oJWVzcCksICVlY3gKLS0JamxlCUwoZm9yd2FyZCkKLSsJamJlCUwoZm9yd2FyZCkKLSAKLSAvKiBOb3cgZG8gY2hlY2tzIGZvciBsZW5ndGhzLiBXZSBkbyBbMC4uMTZdLCBbMC4uMzJdLCBbMC4uNjRdLCBbMC4uMTI4XQotIAlzZXBhcmF0ZWx5LiAgKi8KLS0tIAotMi45LjMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTgtMTEyMzYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE4LTExMjM2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmJiNDBiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTgtMTEyMzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotRnJvbSA1NDYwNjE3ZDE1Njc2NTc2MjExMDdkODk1ZWUyZGQ4M2JjMWY4OGYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBQbHV6aG5pa292IDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotRGF0ZTogVHVlLCA4IE1heSAyMDE4IDE4OjEyOjQxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBCWiAyMjc4NjogaW50ZWdlciBhZGRpdGlvbiBvdmVyZmxvdyBtYXkgY2F1c2Ugc3RhY2sKLSBidWZmZXIgb3ZlcmZsb3cgd2hlbiByZWFscGF0aCgpIGlucHV0IGxlbmd0aCBpcyBjbG9zZSB0byBTU0laRV9NQVguCi0KLTIwMTgtMDUtMDkgIFBhdWwgUGx1emhuaWtvdiAgPHBwbHV6aG5pa292QGdvb2dsZS5jb20+Ci0KLQlbQlogIzIyNzg2XQotCSogc3RkbGliL2Nhbm9uaWNhbGl6ZS5jIChfX3JlYWxwYXRoKTogRml4IG92ZXJmbG93IGluIHBhdGggbGVuZ3RoCi0JY29tcHV0YXRpb24uCi0JKiBzdGRsaWIvTWFrZWZpbGUgKHRlc3QtYnoyMjc4Nik6IE5ldyB0ZXN0LgotCSogc3RkbGliL3Rlc3QtYnoyMjc4Ni5jOiBOZXcgdGVzdC4KLQotQ1ZFOiBDVkUtMjAxOC0xMTIzNgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICB8ICA4ICsrKysrCi0gc3RkbGliL01ha2VmaWxlICAgICAgIHwgIDIgKy0KLSBzdGRsaWIvY2Fub25pY2FsaXplLmMgfCAgMiArLQotIHN0ZGxpYi90ZXN0LWJ6MjI3ODYuYyB8IDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN0ZGxpYi90ZXN0LWJ6MjI3ODYuYwotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTgtMDUtMDkgIFBhdWwgUGx1emhuaWtvdiAgPHBwbHV6aG5pa292QGdvb2dsZS5jb20+Ci0rCi0rCVtCWiAjMjI3ODZdCi0rCSogc3RkbGliL2Nhbm9uaWNhbGl6ZS5jIChfX3JlYWxwYXRoKTogRml4IG92ZXJmbG93IGluIHBhdGggbGVuZ3RoCi0rCWNvbXB1dGF0aW9uLgotKwkqIHN0ZGxpYi9NYWtlZmlsZSAodGVzdC1iejIyNzg2KTogTmV3IHRlc3QuCi0rCSogc3RkbGliL3Rlc3QtYnoyMjc4Ni5jOiBOZXcgdGVzdC4KLSsKLSAyMDE4LTAzLTIzICBBbmRyZXcgU2Vua2V2aWNoICA8YW5kcmV3LnNlbmtldmljaEBpbnRlbC5jb20+Ci0gCSAgICBNYXggSG9ybiAgPG1heEBxdWVuZGkuZGU+Ci0gCi1kaWZmIC0tZ2l0IGEvc3RkbGliL01ha2VmaWxlIGIvc3RkbGliL01ha2VmaWxlCi1pbmRleCBhZjE2NDNjLi4xZGRiMWY5IDEwMDY0NAotLS0tIGEvc3RkbGliL01ha2VmaWxlCi0rKysgYi9zdGRsaWIvTWFrZWZpbGUKLUBAIC04NCw3ICs4NCw3IEBAIHRlc3RzCQk6PSB0c3Qtc3RydG9sIHRzdC1zdHJ0b2QgdGVzdG1iIHRlc3RyYW5kIHRlc3Rzb3J0IHRlc3RkaXYgICBcCi0gCQkgICB0c3QtY3hhX2F0ZXhpdCB0c3Qtb25fZXhpdCB0ZXN0LWF0ZXhpdC1yYWNlIAkJICAgIFwKLSAJCSAgIHRlc3QtYXRfcXVpY2tfZXhpdC1yYWNlIHRlc3QtY3hhX2F0ZXhpdC1yYWNlICAgICAgICAgICAgIFwKLSAJCSAgIHRlc3Qtb25fZXhpdC1yYWNlIHRlc3QtZGxjbG9zZS1leGl0LXJhY2UgCQkgICAgXAotLQkJICAgdHN0LW1ha2Vjb250ZXh0LWFsaWduCi0rCQkgICB0c3QtbWFrZWNvbnRleHQtYWxpZ24gdGVzdC1iejIyNzg2Ci0gCi0gdGVzdHMtaW50ZXJuYWwJOj0gdHN0LXN0cnRvZDFpIHRzdC1zdHJ0b2QzIHRzdC1zdHJ0b2Q0IHRzdC1zdHJ0b2Q1aSBcCi0gCQkgICB0c3QtdGxzLWF0ZXhpdCB0c3QtdGxzLWF0ZXhpdC1ub2RlbGV0ZQotZGlmZiAtLWdpdCBhL3N0ZGxpYi9jYW5vbmljYWxpemUuYyBiL3N0ZGxpYi9jYW5vbmljYWxpemUuYwotaW5kZXggNDEzNWYzZi4uMzkwZmI0MyAxMDA2NDQKLS0tLSBhL3N0ZGxpYi9jYW5vbmljYWxpemUuYwotKysrIGIvc3RkbGliL2Nhbm9uaWNhbGl6ZS5jCi1AQCAtMTgxLDcgKzE4MSw3IEBAIF9fcmVhbHBhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKnJlc29sdmVkKQotIAkJZXh0cmFfYnVmID0gX19hbGxvY2EgKHBhdGhfbWF4KTsKLSAKLSAJICAgICAgbGVuID0gc3RybGVuIChlbmQpOwotLQkgICAgICBpZiAoKGxvbmcgaW50KSAobiArIGxlbikgPj0gcGF0aF9tYXgpCi0rCSAgICAgIGlmIChwYXRoX21heCAtIG4gPD0gbGVuKQotIAkJewotIAkJICBfX3NldF9lcnJubyAoRU5BTUVUT09MT05HKTsKLSAJCSAgZ290byBlcnJvcjsKLWRpZmYgLS1naXQgYS9zdGRsaWIvdGVzdC1iejIyNzg2LmMgYi9zdGRsaWIvdGVzdC1iejIyNzg2LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNzgzN2Y5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zdGRsaWIvdGVzdC1iejIyNzg2LmMKLUBAIC0wLDAgKzEsOTAgQEAKLSsvKiBCdWcgMjI3ODY6IHRlc3QgZm9yIGJ1ZmZlciBvdmVyZmxvdyBpbiByZWFscGF0aC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKLSsgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFRoaXMgZmlsZSBtdXN0IGJlIHJ1biBmcm9tIHdpdGhpbiBhIGRpcmVjdG9yeSBjYWxsZWQgInN0ZGxpYiIuICAqLwotKwotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuaD4KLSsjaW5jbHVkZSA8bGliYy1kaWFnLmg+Ci0rCi0rc3RhdGljIGludAotK2RvX3Rlc3QgKHZvaWQpCi0rewotKyAgY29uc3QgY2hhciBkaXJbXSA9ICJiejIyNzg2IjsKLSsgIGNvbnN0IGNoYXIgbG5rW10gPSAiYnoyMjc4Ni9zeW1saW5rIjsKLSsKLSsgIHJtZGlyIChkaXIpOwotKyAgaWYgKG1rZGlyIChkaXIsIDA3NTUpICE9IDAgJiYgZXJybm8gIT0gRUVYSVNUKQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgibWtkaXIgJXM6ICVtXG4iLCBkaXIpOwotKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgIH0KLSsgIGlmIChzeW1saW5rICgiLiIsIGxuaykgIT0gMCAmJiBlcnJubyAhPSBFRVhJU1QpCi0rICAgIHsKLSsgICAgICBwcmludGYgKCJzeW1saW5rICglcywgJXMpOiAlbVxuIiwgZGlyLCBsbmspOwotKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgIH0KLSsKLSsgIGNvbnN0IHNpemVfdCBwYXRoX2xlbiA9IChzaXplX3QpIElOVF9NQVggKyAxOwotKwotKyAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7Ci0rI2lmIF9fR05VQ19QUkVSRVEgKDcsIDApCi0rICAvKiBHQ0MgNyB3YXJucyBhYm91dCB0b28tbGFyZ2UgYWxsb2NhdGlvbnM7IGhlcmUgd2UgbmVlZCBzdWNoCi0rICAgICBhbGxvY2F0aW9uIHRvIHN1Y2NlZWQgZm9yIHRoZSB0ZXN0IHRvIHdvcmsuICAqLwotKyAgRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoNywgIi1XYWxsb2Mtc2l6ZS1sYXJnZXItdGhhbj0iKTsKLSsjZW5kaWYKLSsgIGNoYXIgKnBhdGggPSBtYWxsb2MgKHBhdGhfbGVuKTsKLSsgIERJQUdfUE9QX05FRURTX0NPTU1FTlQ7Ci0rCi0rICBpZiAocGF0aCA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgibWFsbG9jICglenUpOiAlbVxuIiwgcGF0aF9sZW4pOwotKyAgICAgIHJldHVybiBFWElUX1VOU1VQUE9SVEVEOwotKyAgICB9Ci0rCi0rICAvKiBDb25zdHJ1Y3QgdmVyeSBsb25nIHBhdGggPSAiYnoyMjc4Ni9zeW1saW5rL2FhYWEuLi4uLiIgICovCi0rICBjaGFyICpwID0gbWVtcGNweSAocGF0aCwgbG5rLCBzaXplb2YgKGxuaykgLSAxKTsKLSsgICoocCsrKSA9ICcvJzsKLSsgIG1lbXNldCAocCwgJ2EnLCBwYXRoX2xlbiAtIChwYXRoIC0gcCkgLSAyKTsKLSsgIHBbcGF0aF9sZW4gLSAocGF0aCAtIHApIC0gMV0gPSAnXDAnOwotKwotKyAgLyogVGhpcyBjYWxsIGNyYXNoZXMgYmVmb3JlIHRoZSBmaXggZm9yIGJ6MjI3ODYgb24gMzItYml0IHBsYXRmb3Jtcy4gICovCi0rICBwID0gcmVhbHBhdGggKHBhdGgsIE5VTEwpOwotKwotKyAgaWYgKHAgIT0gTlVMTCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCi0rICAgIHsKLSsgICAgICBwcmludGYgKCJyZWFscGF0aDogJXMgKCVtKSIsIHApOwotKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0rICAgIH0KLSsKLSsgIC8qIENsZWFudXAuICAqLwotKyAgdW5saW5rIChsbmspOwotKyAgcm1kaXIgKGRpcik7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rI2RlZmluZSBURVNUX0ZVTkNUSU9OIGRvX3Rlc3QKLSsjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5jPgotLS0gCi0yLjkuMwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxOC0xMTIzNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTgtMTEyMzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMmFhNTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxOC0xMTIzNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLUZyb20gOWFhYWFiN2M2ZTQxNzZlNjFjNTliMGE2M2M2YmE5MDZkODc1ZGMwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYXMgU2Nod2FiIDxzY2h3YWJAc3VzZS5kZT4KLURhdGU6IFR1ZSwgMjIgTWF5IDIwMTggMTA6Mzc6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG9uJ3Qgd3JpdGUgYmV5b25kIGRlc3RpbmF0aW9uIGluCi0gX19tZW1wY3B5X2F2eDUxMl9ub192emVyb3VwcGVyIChidWcgMjMxOTYpCi0KLVdoZW4gY29tcGlsZWQgYXMgbWVtcGNweSwgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgZW5kIG9mIHRoZSBkZXN0aW5hdGlvbgotYnVmZmVyLCB0aHVzIGl0IGNhbm5vdCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBzdGFydCBvZiBpdC4KLQotMjAxOC0wNS0yMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KLQotICAgICAgIFtCWiAjMjMxOTZdCi0gICAgICAgQ1ZFLTIwMTgtMTEyMzcKLSAgICAgICAqIHN5c2RlcHMveDg2XzY0L211bHRpYXJjaC9tZW1tb3ZlLWF2eDUxMi1uby12emVyb3VwcGVyLlMKLSAgICAgICAoTChwcmVsb29wX2xhcmdlKSk6IFNhdmUgaW5pdGlhbCBkZXN0aW5hdGlvbiBwb2ludGVyIGluICVyMTEgYW5kCi0gICAgICAgdXNlIGl0IGluc3RlYWQgb2YgJXJheCBhZnRlciB0aGUgbG9vcC4KLSAgICAgICAqIHN0cmluZy90ZXN0LW1lbXBjcHkuYyAoTUlOX1BBR0VfU0laRSk6IERlZmluZS4KLQotQ1ZFOiBDVkUtMjAxOC0xMTIzNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOSArKysrKysrKysKLSBzdHJpbmcvdGVzdC1tZW1wY3B5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArCi0gc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL21lbW1vdmUtYXZ4NTEyLW5vLXZ6ZXJvdXBwZXIuUyB8IDUgKysrLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IGZhMGEwN2MuLmJjMDlkZWMgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMiBAQAotKzIwMTgtMDUtMjMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+Ci0rCi0rCVtCWiAjMjMxOTZdCi0rCUNWRS0yMDE4LTExMjM3Ci0rCSogc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL21lbW1vdmUtYXZ4NTEyLW5vLXZ6ZXJvdXBwZXIuUwotKwkoTChwcmVsb29wX2xhcmdlKSk6IFNhdmUgaW5pdGlhbCBkZXN0aW5hdGlvbiBwb2ludGVyIGluICVyMTEgYW5kCi0rCXVzZSBpdCBpbnN0ZWFkIG9mICVyYXggYWZ0ZXIgdGhlIGxvb3AuCi0rCSogc3RyaW5nL3Rlc3QtbWVtcGNweS5jIChNSU5fUEFHRV9TSVpFKTogRGVmaW5lLgotKwotIDIwMTgtMDUtMDkgIFBhdWwgUGx1emhuaWtvdiAgPHBwbHV6aG5pa292QGdvb2dsZS5jb20+Ci0gCi0gCVtCWiAjMjI3ODZdCi1kaWZmIC0tZ2l0IGEvc3RyaW5nL3Rlc3QtbWVtcGNweS5jIGIvc3RyaW5nL3Rlc3QtbWVtcGNweS5jCi1pbmRleCBjMDhmYmE4Li5kOThlY2RkIDEwMDY0NAotLS0tIGEvc3RyaW5nL3Rlc3QtbWVtcGNweS5jCi0rKysgYi9zdHJpbmcvdGVzdC1tZW1wY3B5LmMKLUBAIC0xOCw2ICsxOCw3IEBACi0gICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIE1FTUNQWV9SRVNVTFQoZHN0LCBsZW4pIChkc3QpICsgKGxlbikKLSsjZGVmaW5lIE1JTl9QQUdFX1NJWkUgMTMxMDcyCi0gI2RlZmluZSBURVNUX01BSU4KLSAjZGVmaW5lIFRFU1RfTkFNRSAibWVtcGNweSIKLSAjaW5jbHVkZSAidGVzdC1zdHJpbmcuaCIKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Nl82NC9tdWx0aWFyY2gvbWVtbW92ZS1hdng1MTItbm8tdnplcm91cHBlci5TIGIvc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL21lbW1vdmUtYXZ4NTEyLW5vLXZ6ZXJvdXBwZXIuUwotaW5kZXggMjNjMGY3YS4uYTU1Y2Y2ZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMveDg2XzY0L211bHRpYXJjaC9tZW1tb3ZlLWF2eDUxMi1uby12emVyb3VwcGVyLlMKLSsrKyBiL3N5c2RlcHMveDg2XzY0L211bHRpYXJjaC9tZW1tb3ZlLWF2eDUxMi1uby12emVyb3VwcGVyLlMKLUBAIC0zMzUsNiArMzM1LDcgQEAgTChwcmVsb29wX2xhcmdlKToKLSAJamEJTChwcmVsb29wX2xhcmdlX2JrdykKLSAJdm1vdnVwcwkoJXJzaSksICV6bW00Ci0gCXZtb3Z1cHMJMHg0MCglcnNpKSwgJXptbTUKLSsJbW92ICAgICAlcmRpLCAlcjExCi0gCi0gLyogQWxpZ24gZGVzdGluYXRpb24gZm9yIGFjY2VzcyB3aXRoIG5vbi10ZW1wb3JhbCBzdG9yZXMgaW4gdGhlIGxvb3AuICAqLwotIAltb3YJJXJkaSwgJXI4Ci1AQCAtMzY2LDggKzM2Nyw4IEBAIEwoZ29iYmxlXzI1NmJ5dGVzX250X2xvb3ApOgotIAljbXAJJDI1NiwgJXJkeAotIAlqYQlMKGdvYmJsZV8yNTZieXRlc19udF9sb29wKQotIAlzZmVuY2UKLS0Jdm1vdnVwcwklem1tNCwgKCVyYXgpCi0tCXZtb3Z1cHMJJXptbTUsIDB4NDAoJXJheCkKLSsJdm1vdnVwcyAlem1tNCwgKCVyMTEpCi0rCXZtb3Z1cHMgJXptbTUsIDB4NDAoJXIxMSkKLSAJam1wCUwoY2hlY2spCi0gCi0gTChwcmVsb29wX2xhcmdlX2Jrdyk6Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYXJjaGl2ZS1wYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hcmNoaXZlLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZDMxNTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hcmNoaXZlLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1sb2NhbGVkZWYgLS1hZGQtdG8tYXJjaGl2ZSB1c2VzIGEgaGFyZC1jb2RlZCBsb2NhbGUgcGF0aCB3aGljaCBkb2Vzbid0IGV4aXN0IGluCi1ub3JtYWwgdXNlLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gcGFzcyBhbiBhbHRlcm5hdGl2ZSBmaWxlbmFtZS4KLQotQWRkIGEgZmFsbGJhY2sgb2YgJExPQ0FMRUFSQ0hJVkUgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZCBhbGxvdyBjcmVhdGlvbiBvZiBuZXcgbG9jYWxlIGFyY2hpdmVzIHRoYXQgYXJlIG5vdCB0aGUgc3lzdGVtIGFyY2hpdmUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKLWluZGV4IGNhMzMyYTM0Li42YjdiYTliMiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKLUBAIC01NjksMTAgKzU2OSwxMyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCi0gICAvKiBJZiBhaCBoYXMgYSBub24tTlVMTCBmbmFtZSBvcGVuIHRoYXQgb3RoZXJ3aXNlIG9wZW4gdGhlIGRlZmF1bHQuICAqLwotICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKLS0gICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLS0gICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0tICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKLSsgICAgICBhcmNoaXZlZm5hbWUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKLSsgICAgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7Ci0rICAgICAgICAgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLSsgICAgICAgICAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKLSsgICAgICAgICAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICAgICAgfQotICAgICB9Ci0gCi0gICB3aGlsZSAoMSkKLUBAIC01ODUsNyArNTg4LDcgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQotIAkgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBhcmNoaXZlIHdlIGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKLSAJICAgICBsaXN0IGFuIGVtcHR5IGFyY2hpdmUsIG90aGVyd2lzZSB3ZSBwcmludCBhbiBlcnJvcgotIAkgICAgIGFuZCBleGl0LiAgKi8KLS0JICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIGFyY2hpdmVmbmFtZSA9PSBkZWZhdWx0X2ZuYW1lKQotKwkgIGlmIChlcnJubyA9PSBFTk9FTlQpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChyZWFkb25seSkKLSAJCXsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvZXRjL2xkLnNvLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2V0Yy9sZC5zby5jb25mCmluZGV4IGU2OWRlMjkuLjgzMzI3YzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvZXRjL2xkLnNvLmNvbmYKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9ldGMvbGQuc28uY29uZgpAQCAtMCwwICsxIEBACitpbmNsdWRlIC9ldGMvbGQuc28uY29uZi5kLyouY29uZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9tYWtlZGJzLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9tYWtlZGJzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdkNTFhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL21ha2VkYnMuc2gKQEAgLTAsMCArMSwxNzcgQEAKKyMhL2Jpbi9zaAorCisjCisjIE1ha2UgcGFzc3dkLmRiLCBncm91cC5kYiwgZXRjLgorIworCitWQVJfREI9L3Zhci9kYgorCisjIFVzZSBtYWtlIGlmIGF2YWlsYWJsZQoraWYgWyAteCAvdXNyL2Jpbi9tYWtlIC1vIC14IC9iaW4vbWFrZSBdOyB0aGVuCisJbWFrZSAtQyAkVkFSX0RCCisJZXhpdCAwCitmaQorCisjIE5vIG1ha2UgYXZhaWxhYmxlLCBkbyBpdCBpbiBoYXJkIHdheQorCisjIHBhc3N3ZC5kYgoraWYgWyAtZSAvZXRjL3Bhc3N3ZCBdOyB0aGVuCit0YXJnZXQ9JFZBUl9EQi9wYXNzd2QuZGIKK2VjaG8gLW4gInBhc3N3ZC4uLiAiCithd2sgJ0JFR0lOIHsgRlM9IjoiOyBPRlM9IjoiIH0gXAorIC9eWyBcdF0qJCQvIHsgbmV4dCB9IFwKKyAvXlsgXHRdKiMvIHsgbmV4dCB9IFwKKyAvXlteI10vIHsgcHJpbnRmICIuJXMgIiwgJCQxOyBwcmludDsgXAorCSAgIHByaW50ZiAiPSVzICIsICQkMzsgcHJpbnQgfScgL2V0Yy9wYXNzd2QgfCBcCittYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0KK2VjaG8gImRvbmUuIgorZmkKKworIyBncm91cC5kYgoraWYgWyAtZSAvZXRjL2dyb3VwIF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL2dyb3VwLmRiCitlY2hvIC1uICJncm91cC4uLiAiCithd2sgJ0JFR0lOIHsgRlM9IjoiOyBPRlM9IjoiIH0gXAorIC9eWyBcdF0qJCQvIHsgbmV4dCB9IFwKKyAvXlsgXHRdKiMvIHsgbmV4dCB9IFwKKyAvXlteI10vIHsgcHJpbnRmICIuJXMgIiwgJCQxOyBwcmludDsgXAorCSAgIHByaW50ZiAiPSVzICIsICQkMzsgcHJpbnQ7IFwKKwkgICBpZiAoJCQ0ICE9ICIiKSB7IFwKKwkgICAgIHNwbGl0KCQkNCwgZ3JtZW1zLCAiLCIpOyBcCisJICAgICBmb3IgKG1lbWlkeCBpbiBncm1lbXMpIHsgXAorCSAgICAgICBtZW09Z3JtZW1zW21lbWlkeF07IFwKKwkgICAgICAgaWYgKG1lbWJlcnNbbWVtXSA9PSAiIikgXAorCQkgbWVtYmVyc1ttZW1dPSQkMzsgXAorCSAgICAgICBlbHNlIFwKKwkJIG1lbWJlcnNbbWVtXT1tZW1iZXJzW21lbV0gIiwiICQkMzsgXAorCSAgICAgfSBcCisJICAgICBkZWxldGUgZ3JtZW1zOyB9IH0gXAorIEVORCB7IGZvciAobWVtIGluIG1lbWJlcnMpIFwKKwkgcHJpbnRmICI6JXMgJXMgJXNcbiIsIG1lbSwgbWVtLCBtZW1iZXJzW21lbV07IH0nIC9ldGMvZ3JvdXAgfCBcCittYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0KK2VjaG8gImRvbmUuIgorZmkKKworIyBldGhlcnMuZGIKK2lmIFsgLWUgL2V0Yy9ldGhlcnMgXTsgdGhlbgordGFyZ2V0PSRWQVJfREIvZXRoZXJzLmRiCitlY2hvIC1uICJldGhlcnMuLi4gIgorYXdrICcvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHByaW50ZiAiLiVzICIsICQkMTsgcHJpbnQ7IFwKKwkgICBwcmludGYgIj0lcyAiLCAkJDI7IHByaW50IH0nIC9ldGMvZXRoZXJzIHwgXAorbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldCAtCitlY2hvICJkb25lLiIKK2ZpCisKKyMgcHJvdG9jb2xzLmRiCitpZiBbIC1lIC9ldGMvcHJvdG9jb2xzIF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL3Byb3RvY29scy5kYgorZWNobyAtbiAicHJvdG9jb2xzLi4uICIKK2F3ayAnL15bIFx0XSokJC8geyBuZXh0IH0gXAorIC9eWyBcdF0qIy8geyBuZXh0IH0gXAorIC9eW14jXS8geyBwcmludGYgIi4lcyAiLCAkJDE7IHByaW50OyBcCisJICAgcHJpbnRmICI9JXMgIiwgJCQyOyBwcmludDsgXAorCSAgIGZvciAoaSA9IDM7IGkgPD0gTkYgJiYgISgkJGkgfiAvXiMvKTsgKytpKSBcCisJICAgICB7IHByaW50ZiAiLiVzICIsICQkaTsgcHJpbnQgfSB9JyAvZXRjL3Byb3RvY29scyB8IFwKK21ha2VkYiAtLXF1aWV0IC1vICR0YXJnZXQgLQorZWNobyAiZG9uZS4iCitmaQorCisjIHJwYy5kYgoraWYgWyAtZSAvZXRjL3JwYyBdOyB0aGVuCit0YXJnZXQ9JFZBUl9EQi9ycGMuZGIKK2VjaG8gLW4gInJwYy4uLiAiCithd2sgJy9eWyBcdF0qJCQvIHsgbmV4dCB9IFwKKyAvXlsgXHRdKiMvIHsgbmV4dCB9IFwKKyAvXlteI10vIHsgcHJpbnRmICIuJXMgIiwgJCQxOyBwcmludDsgXAorCSAgIHByaW50ZiAiPSVzICIsICQkMjsgcHJpbnQ7IFwKKwkgICBmb3IgKGkgPSAzOyBpIDw9IE5GICYmICEoJCRpIH4gL14jLyk7ICsraSkgXAorCSAgICAgeyBwcmludGYgIi4lcyAiLCAkJGk7IHByaW50IH0gfScgL2V0Yy9ycGMgfCBcCittYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0KK2VjaG8gImRvbmUuIgorZmkKKworIyBzZXJ2aWNlcy5kYgoraWYgWyAtZSAvZXRjL3NlcnZpY2VzIF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL3NlcnZpY2VzLmRiCitlY2hvIC1uICJzZXJ2aWNlcy4uLiAiCithd2sgJ0JFR0lOIHsgRlM9IlsgXHQvXSsiIH0gXAorIC9eWyBcdF0qJCQvIHsgbmV4dCB9IFwKKyAvXlsgXHRdKiMvIHsgbmV4dCB9IFwKKyAvXlteI10vIHsgc3ViKC9bIFx0XSojLiokJC8sICIiKTtcCisJICAgcHJpbnRmICI6JXMvJXMgIiwgJCQxLCAkJDM7IHByaW50OyBcCisJICAgcHJpbnRmICI6JXMvICIsICQkMTsgcHJpbnQ7IFwKKwkgICBwcmludGYgIj0lcy8lcyAiLCAkJDIsICQkMzsgcHJpbnQ7IFwKKwkgICBwcmludGYgIj0lcy8gIiwgJCQyOyBwcmludDsgXAorCSAgIGZvciAoaSA9IDQ7IGkgPD0gTkYgJiYgISgkJGkgfiAvXiMvKTsgKytpKSBcCisJICAgICB7IHByaW50ZiAiOiVzLyVzICIsICQkaSwgJCQzOyBwcmludDsgXAorCSAgICAgICBwcmludGYgIjolcy8gIiwgJCRpOyBwcmludCB9IH0nIC9ldGMvc2VydmljZXMgfCBcCittYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0KK2VjaG8gImRvbmUuIgorZmkKKworIyBzaGFkb3cuZGIKK2lmIFsgLWUgL2V0Yy9zaGFkb3cgXTsgdGhlbgordGFyZ2V0PSRWQVJfREIvc2hhZG93LmRiCitlY2hvIC1uICJzaGFkb3cuLi4gIgorYXdrICdCRUdJTiB7IEZTPSI6IjsgT0ZTPSI6IiB9IFwKKyAvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHByaW50ZiAiLiVzICIsICQkMTsgcHJpbnQgfScgL2V0Yy9zaGFkb3cgfCBcCisodW1hc2sgMDc3ICYmIG1ha2VkYiAtLXF1aWV0IC1vICR0YXJnZXQgLSkKK2VjaG8gImRvbmUuIgoraWYgY2hncnAgc2hhZG93ICR0YXJnZXQgMj4vZGV2L251bGw7IHRoZW4KKwljaG1vZCBnK3IgJHRhcmdldAorZWxzZQorCWNob3duIDAgJHRhcmdldDsgY2hncnAgMCAkdGFyZ2V0OyBjaG1vZCA2MDAgJHRhcmdldDsKKwllY2hvCisJZWNobyAiV2FybmluZzogVGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSAkdGFyZ2V0IgorCWVjaG8gImhhcyBiZWVuIHNldCB0byBiZSByZWFkYWJsZSBvbmx5IGJ5IHJvb3QuICBZb3UgbWF5IHdhbnQiCisJZWNobyAidG8gbWFrZSBpdCByZWFkYWJsZSBieSB0aGUgXGBzaGFkb3cnIGdyb3VwIGRlcGVuZGluZyIKKwllY2hvICJvbiB5b3VyIGNvbmZpZ3VyYXRpb24uIgorCWVjaG8KK2ZpCitmaQorCisjIGdzaGFkb3cuZGIKK2lmIFsgLWUgL2V0Yy9nc2hhZG93IF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL2dzaGFkb3cuZGIKK2VjaG8gLW4gImdzaGFkb3cuLi4gIgorYXdrICdCRUdJTiB7IEZTPSI6IjsgT0ZTPSI6IiB9IFwKKyAvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHByaW50ZiAiLiVzICIsICQkMTsgcHJpbnQgfScgL2V0Yy9nc2hhZG93IHwgXAorKHVtYXNrIDA3NyAmJiBtYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0pCitlY2hvICJkb25lLiIKK2lmIGNoZ3JwIHNoYWRvdyAkdGFyZ2V0IDI+L2Rldi9udWxsOyB0aGVuCisJY2htb2QgZytyICR0YXJnZXQKK2Vsc2UKKwljaG93biAwICR0YXJnZXQ7IGNoZ3JwIDAgJHRhcmdldDsgY2htb2QgNjAwICR0YXJnZXQKKwllY2hvCisJZWNobyAiV2FybmluZzogVGhlIHNoYWRvdyBncm91cCBkYXRhYmFzZSAkdGFyZ2V0IgorCWVjaG8gImhhcyBiZWVuIHNldCB0byBiZSByZWFkYWJsZSBvbmx5IGJ5IHJvb3QuICBZb3UgbWF5IHdhbnQiCisJZWNobyAidG8gbWFrZSBpdCByZWFkYWJsZSBieSB0aGUgXGBzaGFkb3cnIGdyb3VwIGRlcGVuZGluZyIKKwllY2hvICJvbiB5b3VyIGNvbmZpZ3VyYXRpb24uIgorCWVjaG8KK2ZpCitmaQorCisjIG5ldGdyb3VwLmRiCitpZiBbIC1lIC9ldGMvbmV0Z3JvdXAgXTsgdGhlbgordGFyZ2V0PSRWQVJfREIvbmV0Z3JvdXAuZGIKK2VjaG8gLW4gIm5ldGdyb3VwLi4uICIKK2F3ayAnQkVHSU4geyBpbmk9MSB9IFwKKyAvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IGlmIChzdWIoL1sgXHRdKlxcJCQvLCAiICIpID09IDApIGVuZD0iXG4iOyBcCisJICAgZWxzZSBlbmQ9IiI7IFwKKwkgICBnc3ViKC9bIFx0XSsvLCAiICIpOyBcCisJICAgc3ViKC9eWyBcdF0qLywgIiIpOyBcCisJICAgaWYgKGluaSA9PSAwKSBwcmludGYgIiVzJXMiLCAkJDAsIGVuZDsgXAorCSAgIGVsc2UgcHJpbnRmICIuJXMgJXMlcyIsICQkMSwgJCQwLCBlbmQ7IFwKKwkgICBpbmk9ZW5kID09ICIiID8gMCA6IDE7IH0gXAorIEVORCB7IGlmIChpbmk9PTApIHByaW50ZiAiXG4iIH0nIC9ldGMvbmV0Z3JvdXAgfCBcCittYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0CitlY2hvICJkb25lLiIKK2ZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL3JlbG9jYXRlLWxvY2FsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL3JlbG9jYXRlLWxvY2FsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZWEzN2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9yZWxvY2F0ZS1sb2NhbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotVGhlIGdsaWJjIGxvY2FsZSBwYXRoIGlzIGhhcmQtY29kZWQgdG8gdGhlIGluc3RhbGwgcHJlZml4LCBidXQgaW4gU0RLcyB3ZSBuZWVkCi10byBiZSBhYmxlIHRvIHJlbG9jYXRlIHRoZSBiaW5hcmllcy4gIEV4cGFuZCB0aGUgc3RyaW5ncyB0byA0SyBhbmQgcHV0IHRoZW0gaW4gYQotbWFnaWMgc2VnbWVudCB0aGF0IHdlIGNhbiByZWxvY2F0ZSBhdCBpbnN0YWxsIHRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2ZpbmRsb2NhbGUuYyBiL2xvY2FsZS9maW5kbG9jYWxlLmMKLWluZGV4IDg3MmNhZGI1Li5kYTE0ZmEzOSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9maW5kbG9jYWxlLmMKLSsrKyBiL2xvY2FsZS9maW5kbG9jYWxlLmMKLUBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpjb25zdCBfbmxfQ1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQotICAgIHdoaWNoIGFyZSBzb21laG93IGFkZHJlc3NlZC4gICovCi0gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2xvY2FsZV9maWxlX2xpc3RbX19MQ19MQVNUXTsKLSAKLS1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoW10gYXR0cmlidXRlX2hpZGRlbiA9IENPTVBMT0NBTEVESVI7Ci0rY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENPTVBMT0NBTEVESVI7Ci0gCi0gLyogQ2hlY2tzIGlmIHRoZSBuYW1lIGlzIGFjdHVhbGx5IHByZXNlbnQsIHRoYXQgaXMsIG5vdCBOVUxMIGFuZCBub3QKLSAgICBlbXB0eS4gICovCi1AQCAtMTY3LDcgKzE2Nyw3IEBAIF9ubF9maW5kX2xvY2FsZSAoY29uc3QgY2hhciAqbG9jYWxlX3BhdGgsIHNpemVfdCBsb2NhbGVfcGF0aF9sZW4sCi0gCi0gICAgICAgLyogTm90aGluZyBpbiB0aGUgYXJjaGl2ZS4gIFNldCB0aGUgZGVmYXVsdCBwYXRoIHRvIHNlYXJjaCBiZWxvdy4gICovCi0gICAgICAgbG9jYWxlX3BhdGggPSBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKLS0gICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzaXplb2YgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7Ci0rICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc3RybGVuKGxvY2FsZV9wYXRoKSArIDE7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgLyogV2UgcmVhbGx5IGhhdmUgdG8gbG9hZCBzb21lIGRhdGEuICBGaXJzdCBzZWUgd2hldGhlciB0aGUgbmFtZSBpcwotZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1pbmRleCA2ODgyMmE2My4uNTM3YmMzNTEgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCi0rKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1AQCAtMzI1LDcgKzMyNSw3IEBAIF9ubF9sb29rdXBfd29yZCAobG9jYWxlX3QgbCwgaW50IGNhdGVnb3J5LCBpbnQgaXRlbSkKLSB9Ci0gCi0gLyogRGVmYXVsdCBzZWFyY2ggcGF0aCBpZiBubyBMT0NQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KLS1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW47Ci0rZXh0ZXJuIGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbjsKLSAKLSAvKiBMb2FkIHRoZSBsb2NhbGUgZGF0YSBmb3IgQ0FURUdPUlkgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKk5BTUUuCi0gICAgSWYgKk5BTUUgaXMgIiIsIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXMgc3BlY2lmaWVkIGJ5IFBPU0lYLCBhbmQKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9hZGFyY2hpdmUuYyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi1pbmRleCA1MTZkMzBkOC4uNzkyYjM3ZmIgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9hZGFyY2hpdmUuYwotKysrIGIvbG9jYWxlL2xvYWRhcmNoaXZlLmMKLUBAIC00Miw3ICs0Myw3IEBACi0gCi0gCi0gLyogTmFtZSBvZiB0aGUgbG9jYWxlIGFyY2hpdmUgZmlsZS4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgYXJjaGZuYW1lW10gPSBDT01QTE9DQUxFRElSICIvbG9jYWxlLWFyY2hpdmUiOwotK3N0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSICIvbG9jYWxlLWFyY2hpdmUiOwotIAotIC8qIFNpemUgb2YgaW5pdGlhbCBtYXBwaW5nIHdpbmRvdywgb3B0aW1hbCBpZiBsYXJnZSBlbm91Z2ggdG8KLSAgICBjb3ZlciB0aGUgaGVhZGVyIHBsdXMgdGhlIGluaXRpYWwgbG9jYWxlLiAgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRlZTQ5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotcmVxdWlyZSBnbGliYy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDUkVWID89ICJkZjNmZjRlNDlkNGVlM2NiYmRhZWIwYjFjYjVkYzIzNDRjMDhiZTk4IgotCi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgotCi1HTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC4oPyE5MClcZCspKikiCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKLSAgICAgICAgICAgXAotICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtcmVzZXQtZGxfbG9hZF93cml0ZV9sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTgyNjkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTEyMzYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTEyMzcucGF0Y2ggXAotIgotCi1OQVRJVkVTREtGSVhFUyA/PSAiIgotTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUtbG9jYWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiIgotCi0jIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCi0KLUdMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKLSMKLSMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgZ2xpYmMgd2hlbiB0YXJnZXQgc3lzdGVtIEMgbGlicmFyeSBzZWxlY3Rpb24gaXMgbm90IGdsaWJjCi0jIHRoaXMgaGVscHMgaW4gZWFzaW5nIG91dCBwYXJzaW5nIGZvciBub24tZ2xpYmMgc3lzdGVtIGxpYnJhcmllcwotIwotQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLQotR0xJQkNQSUUgPz89ICIiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnM9bGliaWRuIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ1BJRX0gXAotICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKLQotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtaW5ldC1hbmwnLCAnLS1lbmFibGUtbnNjZCcsICctLWRpc2FibGUtbnNjZCcsIGQpfSIKLQotCi1kb19wYXRjaF9hcHBlbmQoKSB7Ci0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKLX0KLQotZG9fZml4X3JlYWRsaWJfYyAoKSB7Ci0Jc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKLX0KLQotZG9fY29uZmlndXJlICgpIHsKLSMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCi0jIGNhbGxzIGZvciBub3cKLSMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycwotIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKLSAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKLSAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKLSAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgotfQotCi1ycGNzdmMgPSAiYm9vdHBhcmFtX3Byb3QueCBubG1fcHJvdC54IHJzdGF0LnggXAotCSAgeXBwYXNzd2QueCBrbG1fcHJvdC54IHJleC54IHNtX2ludGVyLnggbW91bnQueCBcCi0JICBydXNlcnMueCBzcHJheS54IG5mc19wcm90LnggcnF1b3RhLngga2V5X3Byb3QueCIKLQotZG9fY29tcGlsZSAoKSB7Ci0JIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKLQl1bnNldCBMREZMQUdTCi0JYmFzZV9kb19jb21waWxlCi0JKAotCQljZCAke1N9L3N1bnJwYy9ycGNzdmMKLQkJZm9yIHIgaW4gJHtycGNzdmN9OyBkbwotCQkJaD1gZWNobyAkcnxzZWQgLWUncyxcLngkLC5oLCdgCi0JCQlybSAtZiAkaAotCQkJJHtCfS9zdW5ycGMvY3Jvc3MtcnBjZ2VuIC1oICRyIC1vICRoIHx8IGJid2FybiAiJHtQTn06IHVuYWJsZSB0byBnZW5lcmF0ZSBoZWFkZXIgZm9yICRyIgotCQlkb25lCi0JKQotCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgotCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCi0JdGhlbgotCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCi0JCWlmIFsgIiR7cHJldnJ0bGR9IiAhPSAiJHtSVExETElTVH0iIF0KLQkJdGhlbgotCQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIjIgotCQlmaQotCWZpCi0KLX0KLQotcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDcyOTM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI4LmJiCkBAIC0wLDAgKzEsMTM1IEBACityZXF1aXJlIGdsaWJjLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9Y2ZjMGVkNzdhOWY2MmZhNjJlZGVkMDQyZWJlMzFkNzIgXAorICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitERVBFTkRTICs9ICJncGVyZi1uYXRpdmUgYmlzb24tbmF0aXZlIG1ha2UtbmF0aXZlIgorCitTUkNSRVYgPz0gIjA0NGM5NmYwZDU1OTVhZWIwYmI0ZTc5MzU1MDgxYzVhN2Y0ZmFjYTUiCisKK1NSQ0JSQU5DSCA/PSAicmVsZWFzZS8ke1BWfS9tYXN0ZXIiCisKK0dMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLig/ITkwKVxkKykqKSIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGZpbGU6Ly9ldGMvbGQuc28uY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgXAorICAgICAgICAgICBmaWxlOi8vbWFrZWRicy5zaCBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctQWNxdWlyZS1sZC5zby1sb2NrLWJlZm9yZS1zd2l0Y2hpbmctdG8tbWFsbG9jX2F0Zm9yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMxLXN5c2RlcHMtaWVlZTc1NC1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMi1zeXNkZXBzLWllZWU3NTQtc29mdC1mcC1pZ25vcmUtbWF5YmUtdW5pbml0aWFsaXplZC13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2ggXAorIgorCitOQVRJVkVTREtGSVhFUyA/PSAiIgorTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIiIKKworIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQorQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgorCitHTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCisjCisjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYworIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKKyMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCisKK0dMSUJDUElFID8/PSAiIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wcm9maWxlIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGVidWcgLS13aXRob3V0LWdkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbG9jYWxlPWdudSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNyeXB0IFwKKyAgICAgICAgICAgICAgICAke0dMSUJDUElFfSBcCisgICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgorCisKK2RvX3BhdGNoX2FwcGVuZCgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQorfQorCitkb19maXhfcmVhZGxpYl9jICgpIHsKKwlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYworfQorCitkb19jb25maWd1cmUgKCkgeworIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKKyMgY2FsbHMgZm9yIG5vdworIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCisjIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZworICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgorICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAorICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCit9CisKK2RvX2NvbXBpbGUgKCkgeworCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCisJdW5zZXQgTERGTEFHUworCWJhc2VfZG9fY29tcGlsZQorCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgorCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCisJdGhlbgorCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCisJCWlmIFsgIiR7cHJldnJ0bGR9IiAhPSAiJHtSVExETElTVH0iIF0KKwkJdGhlbgorCQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIjIgorCQlmaQorCWZpCisKK30KKworcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKaW5kZXggMjAxMzkzMy4uMzdhNjFjOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ4OGFmNWFhMDMxMmVhMThhYWM3OTFkNjY2NjFkYTc5YjdiY2QwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdlZmU0Njc2NzQ3ZTRlNGEwNTZiOWJmYjRlOTQyNGM4MzU0ZTk5OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgogRGF0ZTogV2VkLCAyMSBEZWMgMjAxNiAxNTozMjowNyArMDIwMAogU3ViamVjdDogW1BBVENIXSBpbmV0WzZdLmRlZm46IGZpeCBpbnZlcnRlZCBjaGVja3MgZm9yIGxvb3BiYWNrCkBAIC0zNSwxMiArMzUsMTMgQEAKIAogU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQotIGluZXQuZGVmbiB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKKyBpbmV0LmRlZm4gfCAxNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9pbmV0LmRlZm4gYi9pbmV0LmRlZm4KLWluZGV4IDc1ZTY3NDQuLmI1ZjVkYTIgMTAwNjQ0CitpbmRleCA3NWU2NzQ0Li4yM2M3NzU2IDEwMDY0NAogLS0tIGEvaW5ldC5kZWZuCiArKysgYi9pbmV0LmRlZm4KIEBAIC02LDEwICs2LDEwIEBAIG1ldGhvZCBsb29wYmFjawpAQCAtNDgsMTEgKzQ5LDExIEBACiAgCiAgICB1cAogLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIGlmICghaWZhY2VfaXNfbG8oKSkKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgdXAgaWYgKGlmYWNlX2lzX2xvKCkpCisrICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIGlmICghaWZhY2VfaXNfbG8oKSkKICAKICAgIGRvd24KIC0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIGlmICghaWZhY2VfaXNfbG8oKSkKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBpZiAoaWZhY2VfaXNfbG8oKSkKKysgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBpZiAoIWlmYWNlX2lzX2xvKCkpCiAgCiAgbWV0aG9kIHN0YXRpYwogICAgZGVzY3JpcHRpb24KQEAgLTIxMSwyMyArMjEyLDIwIEBACiAgCiAgYXJjaGl0ZWN0dXJlIGtmcmVlYnNkCiAgCi1AQCAtMjExLDEyICsyMTEsMTIgQEAgbWV0aG9kIGxvb3BiYWNrCitAQCAtMjExLDExICsyMTEsMTEgQEAgbWV0aG9kIGxvb3BiYWNrCiAgICAgIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGRlZmluZSB0aGUgSVB2NCBsb29wYmFjayBpbnRlcmZhY2UuCiAgCiAgICB1cAogLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIDEyNy4wLjAuMSB1cCBcCi0tCWlmICghaWZhY2VfaXNfbG8oKSkKICsgICAgaWZjb25maWcgJWlmYWNlJSAxMjcuMC4wLjEgdXAgXAotKwlpZiAoaWZhY2VfaXNfbG8oKSkKKyAJaWYgKCFpZmFjZV9pc19sbygpKQogIAogICAgZG93bgogLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGRvd24gXAotLQlpZiAoIWlmYWNlX2lzX2xvKCkpCiArICAgIGlmY29uZmlnICVpZmFjZSUgZG93biBcCi0rCWlmIChpZmFjZV9pc19sbygpKQorIAlpZiAoIWlmYWNlX2lzX2xvKCkpCiAgCiAgbWV0aG9kIHN0YXRpYwotICAgZGVzY3JpcHRpb24KIEBAIC0yMzgsMTUgKzIzOCwxNSBAQCBtZXRob2Qgc3RhdGljCiAgICAgIGh3YWRkcmVzcyBjbGVhbnVwX2h3YWRkcmVzcwogIApAQCAtMzM5LDIwICszMzcsNiBAQAogIGFyY2hpdGVjdHVyZSBodXJkCiAgCiAgbWV0aG9kIGxvb3BiYWNrCi1AQCAtMzY3LDExICszNjcsMTEgQEAgbWV0aG9kIGxvb3BiYWNrCi0gCi0gICB1cAotICAgICBpbmV0dXRpbHMtaWZjb25maWcgLS1pbnRlcmZhY2UgJWlmYWNlJSAtLWFkZHJlc3MgMTI3LjAuMC4xIC0tdXAgXAotLQlpZiAoIWlmYWNlX2lzX2xvKCkpCi0rCWlmIChpZmFjZV9pc19sbygpKQotIAotICAgZG93bgotICAgICBpbmV0dXRpbHMtaWZjb25maWcgLS1pbnRlcmZhY2UgJWlmYWNlJSAtLWRvd24gXAotLQlpZiAoIWlmYWNlX2lzX2xvKCkpCi0rCWlmIChpZmFjZV9pc19sbygpKQotIAotIG1ldGhvZCBzdGF0aWMKLSAgIGRlc2NyaXB0aW9uCiBAQCAtNDMyLDIzICs0MzIsMjMgQEAgbWV0aG9kIGRoY3AKICAKICAgIHVwCkBAIC00MTgsNSArNDAyLDUgQEAKIC0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKICsgICAgYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQogLS0gCi0yLjQuMAorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKaW5kZXggOGFiNTlhOS4uZjAzZWY5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCkBAIC0yMiw4ICsyMiw4IEBACiAKIGluaGVyaXQgY29yZS1pbWFnZSBtb2R1bGUtYmFzZSBzZXR1cHRvb2xzMwogCi1TUkNSRVYgPz0gIjE1NjZlY2RiMDEyMTZlY2U3Mzg2NGMxNWM3ODFmZGVmZTlhZjVlMzciCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k7YnJhbmNoPXN1bW8gXAorU1JDUkVWID89ICI1MzMzMmM5ZjFiZDI3MGYzNGEyOTBmZWE2OGZkZTFkM2ZmNDFmODZlIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD10aHVkIFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXggXAogICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteGYgXAogICAgICAgICAgICBmaWxlOi8vUkVBRE1FX1ZpcnR1YWxCb3hfR3Vlc3RfQWRkaXRpb25zLnR4dCBcCkBAIC01OSw4ICs1OSwxMCBAQAogCWNwICR7V09SS0RJUn0vUkVBRE1FX1ZpcnR1YWxCb3hfVG9hc3Rlci50eHQgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8KIAogCSMgQ3JlYXRlIGEgc3ltbGluaywgbmVlZGVkIGZvciBvdXQtb2YtdHJlZSBrZXJuZWwgbW9kdWxlcyBidWlsZAotCXJtIC1mICAke0lNQUdFX1JPT1RGU30vbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQKLQlsbnIgJHtJTUFHRV9ST09URlN9JHtLRVJORUxfU1JDX1BBVEh9ICR7SU1BR0VfUk9PVEZTfS9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorCWlmIFsgISAtZSAke0lNQUdFX1JPT1RGU30vbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQgXTsgdGhlbgorCQlybSAtZiAgJHtJTUFHRV9ST09URlN9L2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkCisJCWxuciAke0lNQUdFX1JPT1RGU30ke0tFUk5FTF9TUkNfUEFUSH0gJHtJTUFHRV9ST09URlN9L2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkCisJZmkKIAogCWVjaG8gIklOSEVSSVQgKz0gXCJybV93b3JrXCIiID4+ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvcG9reS9idWlsZC9jb25mL2F1dG8uY29uZgogCWVjaG8gImV4cG9ydCBMQ19BTEw9ZW5fVVMudXRmOCIgPj4gJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uYmFzaHJjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgppbmRleCA2ZGU4NjBlLi43ZGY4YWIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKQEAgLTI3LDcgKzI3LDUgQEAKIElNQUdFX1JPT1RGU19TSVpFID0gIjgxOTIiCiBJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiMCIKIAotQkFEX1JFQ09NTUVOREFUSU9OUyArPSAiYnVzeWJveC1zeXNsb2ciCi0KICMgVXNlIHRoZSBzYW1lIHJlc3RyaWN0aW9uIGFzIGluaXRyYW1mcy1saXZlLWluc3RhbGwKIENPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjQpLiotbGludXgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgppbmRleCA1MWQwOGEwLi4wZWNhNmQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKQEAgLTUsNiArNSw4IEBACiBhY3R1YWxseSBnZW5lcmF0ZSBhbiBpbWFnZSBidXQgcmF0aGVyIGdlbmVyYXRlcyBib290IGFuZCByb290ZnMgYXJ0aWZhY3RzIFwKIHRoYXQgY2FuIHN1YnNlcXVlbnRseSBiZSBwaWNrZWQgdXAgYnkgZXh0ZXJuYWwgaW1hZ2UgZ2VuZXJhdGlvbiB0b29scyBzdWNoIGFzIHdpYy4iCiAKK1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlciA/PSAiYnVzeWJveC1tZGV2IgorCiBQQUNLQUdFX0lOU1RBTEwgPSAiaW5pdHJhbWZzLWxpdmUtYm9vdC10aW55IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgZHJvcGJlYXIgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gJHtWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXJ9IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKIAogIyBEbyBub3QgcG9sbHV0ZSB0aGUgaW5pdHJkIGltYWdlIHdpdGggcm9vdGZzIGZlYXR1cmVzCkBAIC0yMyw4ICsyNSw2IEBACiBJTUFHRV9ST09URlNfU0laRSA9ICI4MTkyIgogSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjAiCiAKLUJBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgotCiAjIFVzZSB0aGUgc2FtZSByZXN0cmljdGlvbiBhcyBpbml0cmFtZnMtbGl2ZS1pbnN0YWxsCiBDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0KS4qLWxpbnV4IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCmluZGV4IDgyYjBhYTguLmI2ODU1YjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCkBAIC0yOTEsNyArMjkxLDcgQEAKIAogc3luYwogCi1lY2hvICJSZW1vdmUgeW91ciBpbnN0YWxsYXRpb24gbWVkaWEsIGFuZCBwcmVzcyBFTlRFUiIKK2VjaG8gIkluc3RhbGxhdGlvbiBzdWNjZXNzZnVsLiBSZW1vdmUgeW91ciBpbnN0YWxsYXRpb24gbWVkaWEgYW5kIHByZXNzIEVOVEVSIHRvIHJlYm9vdC4iCiAKIHJlYWQgZW50ZXIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2gKaW5kZXggNDZjYWI2Yy4uNjUxODNkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1saXZlLnNoCkBAIC05NSw4ICs5NSwxMSBAQAogICAgICMgTW92ZSB0aGUgbW91bnQgcG9pbnRzIG9mIHNvbWUgZmlsZXN5c3RlbXMgb3ZlciB0bwogICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgZGlyZWN0b3JpZXMgdW5kZXIgdGhlIHJlYWwgcm9vdCBmaWxlc3lzdGVtLgogICAgIGZvciBkaXIgaW4gYGF3ayAnL1wvZGV2LiogXC9ydW5cL21lZGlhL3twcmludCAkMn0nIC9wcm9jL21vdW50c2A7IGRvCi0gICAgICAgIG1rZGlyIC1wICAke1JPT1RfTU9VTlR9L21lZGlhLyR7ZGlyIyMqL30KLSAgICAgICAgbW91bnQgLW4gLS1tb3ZlICRkaXIgJHtST09UX01PVU5UfS9tZWRpYS8ke2RpciMjKi99CisgICAgICAgICMgUGFyc2UgYW55IE9DVCBvciBIRVggZW5jb2RlZCBjaGFycyBzdWNoIGFzIHNwYWNlcworICAgICAgICAjIGluIHRoZSBtb3VudCBwb2ludHMgdG8gYWN0dWFsIEFTQ0lJIGNoYXJzCisgICAgICAgIGRpcj1gcHJpbnRmICRkaXJgCisgICAgICAgIG1rZGlyIC1wICIke1JPT1RfTU9VTlR9L21lZGlhLyR7ZGlyIyMqL30iCisgICAgICAgIG1vdW50IC1uIC0tbW92ZSAiJGRpciIgIiR7Uk9PVF9NT1VOVH0vbWVkaWEvJHtkaXIjIyovfSIKICAgICBkb25lCiAgICAgbW91bnQgLW4gLS1tb3ZlIC9wcm9jICR7Uk9PVF9NT1VOVH0vcHJvYwogICAgIG1vdW50IC1uIC0tbW92ZSAvc3lzICR7Uk9PVF9NT1VOVH0vc3lzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9pbml0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvaW5pdAppbmRleCAzNzUyN2E4Li4zYzdlMDk0IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9pbml0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL2luaXQKQEAgLTg0LDcgKzg0LDcgQEAKICMgcG9wdWxhdGUgYm9vdHBhcmFtIGVudmlyb25tZW50CiBmb3IgcCBpbiBgY2F0IC9wcm9jL2NtZGxpbmVgOyBkbwogCW9wdD1gZWNobyAkcCB8IGN1dCAtZCc9JyAtZjFgCi0Jb3B0PWBlY2hvICRvcHQgfCB0ciAnLi0nICdfXydgCisJb3B0PWBlY2hvICRvcHQgfCBzZWQgLWUgJ3kvLi0vX18vJ2AKIAlpZiBbICJgZWNobyAkcCB8IGN1dCAtZCc9JyAtZjFgIiA9ICIkcCIgXTsgdGhlbgogCQlldmFsICJib290cGFyYW1fJHtvcHR9PXRydWUiCiAJZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbmZzcm9vdGZzIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbmZzcm9vdGZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2N2VlNGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9uZnNyb290ZnMKQEAgLTAsMCArMSw0OCBAQAorIyEvYmluL3NoCisKK25mc3Jvb3Rmc19lbmFibGVkKCkgeworCWlmIFsgJHtib290cGFyYW1fcm9vdH0gIT0gIi9kZXYvbmZzIiBdIHx8IFsgLXogJHtib290cGFyYW1fbmZzcm9vdH0gXTsgdGhlbgorCQlyZXR1cm4gMQorCWZpCisJcmV0dXJuIDAKK30KKworbmZzcm9vdGZzX3J1bigpIHsKKwlsb2NhbCBuZnNfb3B0cworCWxvY2FsIGxvY2F0aW9uCisJbG9jYWwgZmxhZ3MKKwlsb2NhbCBzZXJ2ZXJfaXAKKworCW5mc19vcHRzPSIiCisJaWYgWyAiJHtib290cGFyYW1fbmZzcm9vdCMqLH0iICE9ICIke2Jvb3RwYXJhbV9uZnNyb290fSIgXTsgdGhlbgorCQluZnNfb3B0cz0iLW8gJHtib290cGFyYW1fbmZzcm9vdCMqLH0iCisJZmkKKworCWxvY2F0aW9uPSIke2Jvb3RwYXJhbV9uZnNyb290JSUsKn0iCisJaWYgWyAiJHtsb2NhdGlvbiMqOn0iID0gIiR7bG9jYXRpb259IiBdOyB0aGVuCisJCSMgc2VydmVyLWlwIG5vdCBnaXZlbi4gR2V0IHNlcnZlciBpcCBmcm9tIGlwIG9wdGlvbgorCQlzZXJ2ZXJfaXA9IiIKKwkJaWYgWyAiJHtib290cGFyYW1faXAjKjp9IiAhPSAiJHtib290cGFyYW1faXB9IiBdOyB0aGVuCisJCQlzZXJ2ZXJfaXA9JChlY2hvICIkYm9vdHBhcmFtX2lwIiB8IGN1dCAtZDogLWYyKQorCQlmaQorCisJCWlmIFsgLXogIiRzZXJ2ZXJfaXAiIF07IHRoZW4KKwkJCWZhdGFsICJTZXJ2ZXIgSVAgaXMgbm90IHNldC4gVXBkYXRlIGlwIG9yIG5mc3Jvb3Qgb3B0aW9ucy4iCisJCWZpCisJCWxvY2F0aW9uPSR7c2VydmVyX2lwfToke2xvY2F0aW9ufQorCWZpCisKKwlmbGFncz0iLW8gbm9sb2NrIgorCWlmIFsgLW4gIiRib290cGFyYW1fcm8iIF0gJiYgISBlY2hvICIkYm9vdHBhcmFtX3Jvb3RmbGFncyIgfCBncmVwIC13IC1xICJybyI7IHRoZW4KKwkJaWYgWyAgLW4gIiRib290cGFyYW1fcm9vdGZsYWdzIiBdOyB0aGVuCisJCQlib290cGFyYW1fcm9vdGZsYWdzPSIkYm9vdHBhcmFtX3Jvb3RmbGFncywiCisJCWZpCisJCWJvb3RwYXJhbV9yb290ZmxhZ3M9IiR7Ym9vdHBhcmFtX3Jvb3RmbGFnc31ybyIKKwlmaQorCWlmIFsgLW4gIiRib290cGFyYW1fcm9vdGZsYWdzIiBdOyB0aGVuCisJCWZsYWdzPSIkZmxhZ3MgLW8gJGJvb3RwYXJhbV9yb290ZmxhZ3MiCisJZmkKKworCW1vdW50IC10IG5mcyAke2ZsYWdzfSAke25mc19vcHRzfSAke2xvY2F0aW9ufSAke1JPT1RGU19ESVJ9Cit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgppbmRleCA3NWQ5NjVmLi42NjAzNDNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCkBAIC0yLDYgKzIsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKIFJERVBFTkRTXyR7UE59ICs9ICIke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtc3lzbG9nfSIKIAogUFIgPSAicjQiCiAKQEAgLTksNiArMTAsNyBAQAogCiBTUkNfVVJJID0gImZpbGU6Ly9pbml0IFwKICAgICAgICAgICAgZmlsZTovL2V4ZWMgXAorICAgICAgICAgICBmaWxlOi8vbmZzcm9vdGZzIFwKICAgICAgICAgICAgZmlsZTovL3Jvb3RmcyBcCiAgICAgICAgICAgIGZpbGU6Ly9maW5pc2ggXAogICAgICAgICAgICBmaWxlOi8vbWRldiBcCkBAIC0yNCw2ICsyNiw3IEBACiAKICAgICAjIGJhc2UKICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0vaW5pdAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc3Jvb3RmcyAke0R9L2luaXQuZC84NS1uZnNyb290ZnMKICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9yb290ZnMgJHtEfS9pbml0LmQvOTAtcm9vdGZzCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZmluaXNoICR7RH0vaW5pdC5kLzk5LWZpbmlzaAogCkBAIC01Myw2ICs1Niw3IEBACiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLW1kZXYgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS11ZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZTJmcyBcCisgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLW5mc3Jvb3RmcyBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWRlYnVnIFwKICAgICAgICAgICAgIgpAQCAtODMsNiArODcsMTAgQEAKIFJERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtZTJmcyA9ICIke1BOfS1iYXNlIgogRklMRVNfaW5pdHJhbWZzLW1vZHVsZS1lMmZzID0gIi9pbml0LmQvMTAtZTJmcyIKIAorU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLW5mc3Jvb3RmcyA9ICJpbml0cmFtZnMgc3VwcG9ydCBmb3IgbG9jYXRpbmcgYW5kIG1vdW50aW5nIHRoZSByb290IHBhcnRpdGlvbiB2aWEgbmZzIgorUkRFUEVORFNfaW5pdHJhbWZzLW1vZHVsZS1uZnNyb290ZnMgPSAiJHtQTn0tYmFzZSIKK0ZJTEVTX2luaXRyYW1mcy1tb2R1bGUtbmZzcm9vdGZzID0gIi9pbml0LmQvODUtbmZzcm9vdGZzIgorCiBTVU1NQVJZX2luaXRyYW1mcy1tb2R1bGUtcm9vdGZzID0gImluaXRyYW1mcyBzdXBwb3J0IGZvciBsb2NhdGluZyBhbmQgbW91bnRpbmcgdGhlIHJvb3QgcGFydGl0aW9uIgogUkRFUEVORFNfaW5pdHJhbWZzLW1vZHVsZS1yb290ZnMgPSAiJHtQTn0tYmFzZSIKIEZJTEVTX2luaXRyYW1mcy1tb2R1bGUtcm9vdGZzID0gIi9pbml0LmQvOTAtcm9vdGZzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKaW5kZXggZjU4OGExMC4uY2M4NDJhZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCkBAIC02LDYgKzYsNyBAQAogUFIgPSAicjEiCiAKIFJERVBFTkRTXyR7UE59ID0gInBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtc3lzbG9nfSIKIAogUyA9ICIke1dPUktESVJ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIKaW5kZXggOTIyMmQ1Ny4uNDhmYzBjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYgpAQCAtOCw2ICs4LDcgQEAKIFMgPSAiJHtXT1JLRElSfSIKIAogUkRFUEVORFNfJHtQTn0gPSAiZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgorUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscy1zeXNsb2d9IgogCiBkb19pbnN0YWxsKCkgewogICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWluc3RhbGwuc2ggJHtEfS9pbnN0YWxsLnNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIKaW5kZXggNzhhNjFjZC4uNTIzMTM4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtMiw2ICsyLDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiBSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgZG9zZnN0b29scyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgorUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscy1zeXNsb2d9IgogCiBQUiA9ICJyNCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYgppbmRleCAwNGU5MGNkLi41Njg5OGU4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYgpAQCAtMiw2ICsyLDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiBSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgorUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscy1zeXNsb2d9IgogCiAjIFRoZSBzYW1lIHJlc3RyaWN0aW9uIGFzIGdydWIKIENPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKiktKGxpbnV4Lip8ZnJlZWJzZC4qKScKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2gKaW5kZXggM2NmMzI0My4uNmY5NjVhNiAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2gKQEAgLTExMiw3ICsxMTIsNiBAQAogCX0KIAogCUNGR0ZJTEU9IiQxIgotCVsgYGJhc2VuYW1lICIke0NGR0ZJTEV9ImAgPSAiJHtDT1JFREVGfSIgXSAmJiByZXR1cm4gMAogCiAJVE1QX0lOVEVSTUVEPSIke1RNUFJPT1R9L3RtcC4kJCIKIAlUTVBfREVGSU5FRD0iJHtUTVBST09UfS90bXBkZWZpbmVkLiQkIgpAQCAtMTU0LDggKzE1MywxMSBAQAogCiBhcHBseV9jZmdmaWxlKCkgewogCUNGR0ZJTEU9IiQxIgorCVNLSVBfUkVRVUlSRU1FTlRTPSIkMiIKIAotCWNoZWNrX3JlcXVpcmVtZW50cyAiJHtDRkdGSUxFfSIgfHwgeworCVsgIiR7VkVSQk9TRX0iICE9ICJubyIgXSAmJiBlY2hvICJBcHBseWluZyAke0NGR0ZJTEV9IgorCisJWyAiJHtTS0lQX1JFUVVJUkVNRU5UU30iID09ICJ5ZXMiIF0gfHwgY2hlY2tfcmVxdWlyZW1lbnRzICIke0NGR0ZJTEV9IiB8fCB7CiAJCWVjaG8gIlNraXBwaW5nICR7Q0ZHRklMRX0iCiAJCXJldHVybiAxCiAJfQpAQCAtMjMxLDEwICsyMzMsMzcgQEAKIAlzaCAke1JPT1RfRElSfS9ldGMvdm9sYXRpbGUuY2FjaGUKIGVsc2UKIAlybSAtZiAke1JPT1RfRElSfS9ldGMvdm9sYXRpbGUuY2FjaGUgJHtST09UX0RJUn0vZXRjL3ZvbGF0aWxlLmNhY2hlLmJ1aWxkCi0JZm9yIGZpbGUgaW4gYGxzIC0xICIke0NGR0RJUn0iIHwgc29ydGA7IGRvCi0JCWFwcGx5X2NmZ2ZpbGUgIiR7Q0ZHRElSfS8ke2ZpbGV9IgorCisJIyBBcHBseSB0aGUgY29yZSBmaWxlIHdpdGggb3V0IGNoZWNraW5nIHJlcXVpcmVtZW50cy4gJHtUTVBST09UfSBpcworCSMgbmVlZGVkIGJ5IGNoZWNrX3JlcXVpcmVtZW50cyBidXQgaXMgc2V0dXAgYnkgdGhpcyBmaWxlLCBzbyBpdCBtdXN0IGJlCisJIyBwcm9jZXNzZWQgZmlyc3QgYW5kIHdpdGhvdXQgYmVpbmcgY2hlY2tlZC4KKwlbIC1lICIke0NGR0RJUn0vJHtDT1JFREVGfSIgXSAmJiBhcHBseV9jZmdmaWxlICIke0NGR0RJUn0vJHtDT1JFREVGfSIgInllcyIKKworCSMgRmFzdCBwYXRoOiBjaGVja19yZXF1aXJlbWVudHMgaXMgc2xvdyBhbmQgbW9zdCBvZiB0aGUgdGltZSBkb2Vzbid0CisJIyBmaW5kIGFueSBwcm9ibGVtcy4gSWYgdGhlcmUgYXJlIGEgbG90IG9mIGNvbmZpZyBmaWxlcywgaXQgaXMgbXVjaAorCSMgZmFzdGVyIHRvIHRvIGNvbmNhdGVuYXRlIHRoZW0gYWxsIHRvZ2V0aGVyIGFuZCBwcm9jZXNzIHRoZW0gb25jZSB0bworCSMgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGNhbGxpbmcgY2hlY2tfcmVxdWlyZW1lbnRzIHJlcGVhdGVkbHkKKwlUTVBfRklMRT0iJHtUTVBST09UfS90bXBfdm9sYXRpbGUuJCQiCisJcm0gLWYgIiRUTVBfRklMRSIKKworCUNGR0ZJTEVTPSJgbHMgLTEgIiR7Q0ZHRElSfSIgfCBncmVwIC12ICJeJHtDT1JFREVGfVwkIiB8IHNvcnRgIgorCWZvciBmaWxlIGluICR7Q0ZHRklMRVN9OyBkbworCQljYXQgIiR7Q0ZHRElSfS8ke2ZpbGV9IiA+PiAiJFRNUF9GSUxFIgogCWRvbmUKIAorCWlmIGNoZWNrX3JlcXVpcmVtZW50cyAiJFRNUF9GSUxFIgorCXRoZW4KKwkJYXBwbHlfY2ZnZmlsZSAiJFRNUF9GSUxFIiAieWVzIgorCWVsc2UKKwkJIyBTbG93IHBhdGg6IE9uZSBvciBtb3JlIGNvbmZpZyBmaWxlcyBmYWlsZWQgcmVxdWlyZW1lbnRzLgorCQkjIFByb2Nlc3MgZWFjaCBvbmUgaW5kaXZpZHVhbGx5IHNvIHRoZSBvZmZlbmRpbmcgb25lIGNhbiBiZQorCQkjIHNraXBwZWQKKwkJZm9yIGZpbGUgaW4gJHtDRkdGSUxFU307IGRvCisJCQlhcHBseV9jZmdmaWxlICIke0NGR0RJUn0vJHtmaWxlfSIKKwkJZG9uZQorCWZpCisJcm0gIiRUTVBfRklMRSIKKwogCVsgLWUgJHtST09UX0RJUn0vZXRjL3ZvbGF0aWxlLmNhY2hlLmJ1aWxkIF0gJiYgc3luYyAmJiBtdiAke1JPT1RfRElSfS9ldGMvdm9sYXRpbGUuY2FjaGUuYnVpbGQgJHtST09UX0RJUn0vZXRjL3ZvbGF0aWxlLmNhY2hlCiBmaQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9yZWFkLW9ubHktcm9vdGZzLWhvb2suc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9yZWFkLW9ubHktcm9vdGZzLWhvb2suc2gKaW5kZXggMWEwMzI4ZC4uYmQ0NDVkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcmVhZC1vbmx5LXJvb3Rmcy1ob29rLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3JlYWQtb25seS1yb290ZnMtaG9vay5zaApAQCAtMzEsOCArMzEsMTMgQEAKIAlpZiBbIGBpc19vbl9yZWFkX29ubHlfcGFydGl0aW9uIC92YXIvbGliYCA9ICJ5ZXMiIF07IHRoZW4KIAkJZ3JlcCAtcSAidG1wZnMgL3Zhci92b2xhdGlsZSIgL3Byb2MvbW91bnRzIHx8IG1vdW50IC92YXIvdm9sYXRpbGUKIAkJbWtkaXIgLXAgL3Zhci92b2xhdGlsZS9saWIKLQkJY3AgLWEgL3Zhci9saWIvKiAvdmFyL3ZvbGF0aWxlL2xpYgotCQltb3VudCAtLWJpbmQgL3Zhci92b2xhdGlsZS9saWIgL3Zhci9saWIKKwkJbWtkaXIgLXAgL3Zhci92b2xhdGlsZS8ubGliLXdvcmsKKwkJIyBUcnkgdG8gbW91bnQgdXNpbmcgb3ZlcmxheSwgd2hpY2ggaXMgbXVjaCBmYXN0ZXIgdGhhbiBjb3B5aW5nCisJCSMgZmlsZXMuIElmIHRoYXQgZmFpbHMsIGZhbGxiYWNrIHRvIHRoZSBzbG93ZXIgY29weQorCQlpZiAhIG1vdW50IC10IG92ZXJsYXkgb3ZlcmxheSAtb2xvd2VyZGlyPS92YXIvbGliLHVwcGVyZGlyPS92YXIvdm9sYXRpbGUvbGliLHdvcmtkaXI9L3Zhci92b2xhdGlsZS8ubGliLXdvcmsgL3Zhci9saWIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorCQkJY3AgLWEgL3Zhci9saWIvKiAvdmFyL3ZvbGF0aWxlL2xpYgorCQkJbW91bnQgLS1iaW5kIC92YXIvdm9sYXRpbGUvbGliIC92YXIvbGliCisJCWZpCiAJZmkKIGZpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVkNjdhNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkV4dGVuZGVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSAoZnJvbSBnbGliYykiCi1ERVNDUklQVElPTiA9ICJGb3JrZWQgY29kZSBmcm9tIGdsaWJjIGxpYmFyeSB0byBleHRyYWN0IG9ubHkgY3J5cHRvIHBhcnQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT1kMWNjMThmNTEyZGVkM2JkNjAwMGYzNzI5ZjMxYmUwOCBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotU1JDUkVWID89ICIwODk0NzliYjI0YWNkMTY4NjEzNzU3YTZmMTJkNjNjYWE5NTQxNmI0IgotU1JDQlJBTkNIID89ICJtYXN0ZXIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAotICAgICAgICAgICAiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJjcnlwdCouc28uKiAke2xpYmRpcn0vbGliY3J5cHQtKi5zbyAke2xpYmRpcn0vbGlib3djcnlwdCouc28uKiAke2xpYmRpcn0vbGlib3djcnlwdC0qLnNvIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSAtc3RkPWdudTk5IgotVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKLQotcHl0aG9uICgpIHsKLSAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlJlY2lwZSBvbmx5IGFwcGxpZXMgaW4gbmF0aXZlc2RrIGNhc2UgZm9yIG5vdyIpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NWFhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4xLjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJFeHRlbmRlZCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgKGZyb20gZ2xpYmMpIgorREVTQ1JJUFRJT04gPSAiRm9ya2VkIGNvZGUgZnJvbSBnbGliYyBsaWJhcnkgdG8gZXh0cmFjdCBvbmx5IGNyeXB0byBwYXJ0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0lORzttZDU9Y2IzY2E0Y2FiZDI0NDdhMzdiZjE4NmZhZDZmNzk4NTIgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNSRVYgPz0gIjIxYjQ1NWI2OGJhYWQyNzllNmEzOTM2ZmFjZWQxNmM1ZTU2MzQzNzYiCitTUkNCUkFOQ0ggPz0gImRldmVsb3AiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAorICAgICAgICAgICAiCisKK1BST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJjcnlwdCouc28uKiAke2xpYmRpcn0vbGliY3J5cHQtKi5zbyAke2xpYmRpcn0vbGlib3djcnlwdCouc28uKiAke2xpYmRpcn0vbGlib3djcnlwdC0qLnNvIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSAtc3RkPWdudTk5IgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtRml4LWluZmluaXRlLWxvb3AtaW4tTFpNQS1kZWNvbXByZXNzaW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLUZpeC1pbmZpbml0ZS1sb29wLWluLUxaTUEtZGVjb21wcmVzc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmMyMjk1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLUZpeC1pbmZpbml0ZS1sb29wLWluLUxaTUEtZGVjb21wcmVzc2lvbi5wYXRjaApAQCAtMCwwICsxLDU1IEBACitGcm9tIDI4YTlkYzY0MmZmZDc1OWRmMWU0OGJlMjQ3YTExNGY0NDBhNmMxNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWNrIFdlbGxuaG9mZXIgPHdlbGxuaG9mZXJAYWV2dW0uZGU+CitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDEzOjE0OjExICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbmZpbml0ZSBsb29wIGluIExaTUEgZGVjb21wcmVzc2lvbgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitDaGVjayB0aGUgbGlibHptYSBlcnJvciBjb2RlIG1vcmUgdGhvcm91Z2hseSB0byBhdm9pZCBpbmZpbml0ZSBsb29wcy4KKworQ2xvc2VzOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9pc3N1ZXMvMTMKK0Nsb3NlczogaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDkxNAorCitUaGlzIGlzIENWRS0yMDE4LTkyNTEgYW5kIENWRS0yMDE4LTE0NTY3LgorCitUaGFua3MgdG8gRG9uZ2xpYW5nIE11IGFuZCBTaW1vbiBXw7ZybmVyIGZvciB0aGUgcmVwb3J0cy4KKworQ1ZFOiBDVkUtMjAxOC05MjUxCitDVkU6IENWRS0yMDE4LTE0NTY3CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9jb21taXQvMjI0MGZiZjU5MTIwNTRhZjAyNWZiNmUwMWUyNjM3NTEwMDI3NWU3NF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHh6bGliLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3h6bGliLmMgYi94emxpYi5jCitpbmRleCBhODM5MTY5Li4wYmE4OGNmIDEwMDY0NAorLS0tIGEveHpsaWIuYworKysrIGIveHpsaWIuYworQEAgLTU2Miw2ICs1NjIsMTAgQEAgeHpfZGVjb21wKHh6X3N0YXRlcCBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yOiBpbmZsYXRlIHN0cmVhbSBjb3JydXB0Iik7CisgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICB9CisrICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgKiBGSVhNRTogUmVtYXBwaW5nIGEgY291cGxlIG9mIGVycm9yIGNvZGVzIGFuZCBmYWxsaW5nIHRocm91Z2gKKysgICAgICAgICAgICAgKiB0byB0aGUgTFpNQSBlcnJvciBoYW5kbGluZyBsb29rcyBmcmFnaWxlLgorKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgIGlmIChyZXQgPT0gWl9NRU1fRVJST1IpCisgICAgICAgICAgICAgICAgIHJldCA9IExaTUFfTUVNX0VSUk9SOworICAgICAgICAgICAgIGlmIChyZXQgPT0gWl9EQVRBX0VSUk9SKQorQEAgLTU4Nyw2ICs1OTEsMTEgQEAgeHpfZGVjb21wKHh6X3N0YXRlcCBzdGF0ZSkKKyAgICAgICAgICAgICB4el9lcnJvcihzdGF0ZSwgTFpNQV9QUk9HX0VSUk9SLCAiY29tcHJlc3Npb24gZXJyb3IiKTsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisrICAgICAgICBpZiAoKHN0YXRlLT5ob3cgIT0gR1pJUCkgJiYKKysgICAgICAgICAgICAocmV0ICE9IExaTUFfT0spICYmIChyZXQgIT0gTFpNQV9TVFJFQU1fRU5EKSkgeworKyAgICAgICAgICAgIHh6X2Vycm9yKHN0YXRlLCByZXQsICJsem1hIGVycm9yIik7CisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorICAgICB9IHdoaWxlIChzdHJtLT5hdmFpbF9vdXQgJiYgcmV0ICE9IExaTUFfU1RSRUFNX0VORCk7CisgCisgICAgIC8qIHVwZGF0ZSBhdmFpbGFibGUgb3V0cHV0IGFuZCBjcmMgY2hlY2sgdmFsdWUgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOC0xNDQwNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMTgtMTQ0MDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmM2U3YjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOC0xNDQwNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLUZyb20gMjkxMTU4NjhjOTJjODFhNDExOWIwNWVhOTViM2M5MTYwOGEwYjZlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgV2VsbG5ob2ZlciA8d2VsbG5ob2ZlckBhZXZ1bS5kZT4KLURhdGU6IE1vbiwgMzAgSnVsIDIwMTggMTI6NTQ6MzggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IG51bGxwdHIgZGVyZWYgd2l0aCBYUGF0aCBsb2dpYyBvcHMKLQotSWYgdGhlIFhQYXRoIHN0YWNrIGlzIGNvcnJ1cHRlZCwgZm9yIGV4YW1wbGUgYnkgYSBtaXNiZWhhdmluZyBleHRlbnNpb24KLWZ1bmN0aW9uLCB0aGUgImFuZCIgYW5kICJvciIgWFBhdGggb3BlcmF0b3JzIGNvdWxkIGRlcmVmZXJlbmNlIE5VTEwKLXBvaW50ZXJzLiBDaGVjayB0aGF0IHRoZSBYUGF0aCBzdGFjayBpc24ndCBlbXB0eSBhbmQgb3B0aW1pemUgdGhlCi1sb2dpYyBvcGVyYXRvcnMgc2xpZ2h0bHkuCi0KLUNsb3NlczogaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvaXNzdWVzLzUKLQotQWxzbyBzZWUKLWh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTAxODE3Ci1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1OTU5ODUKLQotVGhpcyBpcyBDVkUtMjAxOC0xNDQwNC4KLQotVGhhbmtzIHRvIEd1eSBJbmJhciBmb3IgdGhlIHJlcG9ydC4KLQotQ1ZFOiBDVkUtMjAxOC0xNDQwNAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvY29tbWl0L2E0MzYzNzQ5OTRjNDdiMTJkNWRlMWI4YjFkMTkxYTA5OGZhMjM1OTRdCi1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0geHBhdGguYyB8IDEwICsrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEveHBhdGguYyBiL3hwYXRoLmMKLWluZGV4IDM1Mjc0NzMxLi4zZmNkYzllMSAxMDA2NDQKLS0tLSBhL3hwYXRoLmMKLSsrKyBiL3hwYXRoLmMKLUBAIC0xMzMzNyw5ICsxMzMzNyw4IEBAIHhtbFhQYXRoQ29tcE9wRXZhbCh4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgeG1sWFBhdGhTdGVwT3BQdHIgb3ApCi0gCQlyZXR1cm4oMCk7Ci0gCSAgICB9Ci0gICAgICAgICAgICAgeG1sWFBhdGhCb29sZWFuRnVuY3Rpb24oY3R4dCwgMSk7Ci0tICAgICAgICAgICAgYXJnMSA9IHZhbHVlUG9wKGN0eHQpOwotLSAgICAgICAgICAgIGFyZzEtPmJvb2x2YWwgJj0gYXJnMi0+Ym9vbHZhbDsKLS0gICAgICAgICAgICB2YWx1ZVB1c2goY3R4dCwgYXJnMSk7Ci0rICAgICAgICAgICAgaWYgKGN0eHQtPnZhbHVlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgIGN0eHQtPnZhbHVlLT5ib29sdmFsICY9IGFyZzItPmJvb2x2YWw7Ci0gCSAgICB4bWxYUGF0aFJlbGVhc2VPYmplY3QoY3R4dC0+Y29udGV4dCwgYXJnMik7Ci0gICAgICAgICAgICAgcmV0dXJuICh0b3RhbCk7Ci0gICAgICAgICBjYXNlIFhQQVRIX09QX09SOgotQEAgLTEzMzYzLDkgKzEzMzYyLDggQEAgeG1sWFBhdGhDb21wT3BFdmFsKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCB4bWxYUGF0aFN0ZXBPcFB0ciBvcCkKLSAJCXJldHVybigwKTsKLSAJICAgIH0KLSAgICAgICAgICAgICB4bWxYUGF0aEJvb2xlYW5GdW5jdGlvbihjdHh0LCAxKTsKLS0gICAgICAgICAgICBhcmcxID0gdmFsdWVQb3AoY3R4dCk7Ci0tICAgICAgICAgICAgYXJnMS0+Ym9vbHZhbCB8PSBhcmcyLT5ib29sdmFsOwotLSAgICAgICAgICAgIHZhbHVlUHVzaChjdHh0LCBhcmcxKTsKLSsgICAgICAgICAgICBpZiAoY3R4dC0+dmFsdWUgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgY3R4dC0+dmFsdWUtPmJvb2x2YWwgfD0gYXJnMi0+Ym9vbHZhbDsKLSAJICAgIHhtbFhQYXRoUmVsZWFzZU9iamVjdChjdHh0LT5jb250ZXh0LCBhcmcyKTsKLSAgICAgICAgICAgICByZXR1cm4gKHRvdGFsKTsKLSAgICAgICAgIGNhc2UgWFBBVEhfT1BfRVFVQUw6Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2Fuc2lkZWNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9hbnNpZGVjbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA4NWM2OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2Fuc2lkZWNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU2FkbHkgY21ha2UgaXMgYnJva2VuLiBJZiBpdCBzZWVzIHRoaXMgcmVmZXJlbmNlIGFuZCBhbnNpZGVjbCBpcyBwcmVzZW50LCBpdCB3aWxsIGFkZCBhIAotZGVwZW5kZW5jeSB1cG9uIGl0LCBldmVuIGlmIEhBVkVfQU5TSURFQ19IIGlzIG5ldmVyIHNldC4KLQotVGhlIGVhc2llc3Qgc29sdXRpb24gaXMgdG8gcmVtb3ZlIHRoZXNlIGxpbmVzLCBvdGhlcndpc2UgcmVjaXBlcyBsaWtlIGxpYnp5cHAgY2FuIGhhdmUgYSAKLWRlcGVuZGVuY3kgb24gdGhlIGFuc2lkZWNsLmggaGVhZGVyIHZpYSBjbWFrZS4gVGhpcyBjYW4gbGVhZCB0byBvZGQgcmVzdWx0cyBpZiB0aGUgCi1oZWFkZXIgaXMgcmVtb3ZlZCAoY2xlYW4gYmludXRpbHMpIGFuZCB0aGVuIHRoZSBjb2RlIGlzIHJlY29tcGlsZWQuCi0KLVJQIDIwMTIvNy8xMAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2l0cyByZWFsbHkgYSBjbWFrZSBidWddCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDAyNjAyODEuLmZkYjU4ZTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQ4NCArNDgzLDAgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbdGltZS5oXSkKLS1BQ19DSEVDS19IRUFERVJTKFthbnNpZGVjbC5oXSkKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4gYi9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4KLWluZGV4IGIxNzNiZTkuLmQxMGY5NzUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4KLSsrKyBiL2luY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbgotQEAgLTQxMywzICs0MTIsMCBAQCBYTUxQVUJGVU4gdm9pZCBYTUxDQUxMIHhtbENoZWNrVmVyc2lvbihpbnQgdmVyc2lvbik7Ci0tI2lmZGVmIEhBVkVfQU5TSURFQ0xfSAotLSNpbmNsdWRlIDxhbnNpZGVjbC5oPgotLSNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9maXgtQ1ZFLTIwMTctODg3Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LUNWRS0yMDE3LTg4NzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJhNGIwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LUNWRS0yMDE3LTg4NzIucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy04ODcyCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDEyMzIzNGYyY2ZjZDllOWI5ZjgzMDQ3ZWVlMWRjMTdiNGMzZjQ0MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWNrIFdlbGxuaG9mZXIgPHdlbGxuaG9mZXJAYWV2dW0uZGU+CitEYXRlOiBUdWUsIDExIFNlcCAyMDE4IDE0OjUyOjA3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZyZWUgaW5wdXQgYnVmZmVyIGluIHhtbEhhbHRQYXJzZXIKKworVGhpcyBhdm9pZHMgbWlzY2FsY3VsYXRpb24gb2YgYXZhaWxhYmxlIGJ5dGVzLgorCitUaGFua3MgdG8gWXVuaG8gS2ltIGZvciB0aGUgcmVwb3J0LgorCitDbG9zZXM6ICMyNgorLS0tCisgcGFyc2VyLmMgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCisgcmVzdWx0L2Vycm9ycy83NTk1NzMueG1sLmVyciB8IDE3ICsrKysrKystLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BhcnNlci5jIGIvcGFyc2VyLmMKK2luZGV4IGNhOWZkZTJjLi41ODEzYTY2NCAxMDA2NDQKKy0tLSBhL3BhcnNlci5jCisrKysgYi9wYXJzZXIuYworQEAgLTEyNDYyLDcgKzEyNDYyLDEyIEBAIHhtbEhhbHRQYXJzZXIoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7CisgCSAgICBjdHh0LT5pbnB1dC0+ZnJlZSgoeG1sQ2hhciAqKSBjdHh0LT5pbnB1dC0+YmFzZSk7CisgCSAgICBjdHh0LT5pbnB1dC0+ZnJlZSA9IE5VTEw7CisgCX0KKysgICAgICAgIGlmIChjdHh0LT5pbnB1dC0+YnVmICE9IE5VTEwpIHsKKysgICAgICAgICAgICB4bWxGcmVlUGFyc2VySW5wdXRCdWZmZXIoY3R4dC0+aW5wdXQtPmJ1Zik7CisrICAgICAgICAgICAgY3R4dC0+aW5wdXQtPmJ1ZiA9IE5VTEw7CisrICAgICAgICB9CisgCWN0eHQtPmlucHV0LT5jdXIgPSBCQURfQ0FTVCIiOworKyAgICAgICAgY3R4dC0+aW5wdXQtPmxlbmd0aCA9IDA7CisgCWN0eHQtPmlucHV0LT5iYXNlID0gY3R4dC0+aW5wdXQtPmN1cjsKKyAgICAgICAgIGN0eHQtPmlucHV0LT5lbmQgPSBjdHh0LT5pbnB1dC0+Y3VyOworICAgICB9CitkaWZmIC0tZ2l0IGEvcmVzdWx0L2Vycm9ycy83NTk1NzMueG1sLmVyciBiL3Jlc3VsdC9lcnJvcnMvNzU5NTczLnhtbC5lcnIKK2luZGV4IDU1NDAzOWY2Li4zOGVmNWM0MCAxMDA2NDQKKy0tLSBhL3Jlc3VsdC9lcnJvcnMvNzU5NTczLnhtbC5lcnIKKysrKyBiL3Jlc3VsdC9lcnJvcnMvNzU5NTczLnhtbC5lcnIKK0BAIC0yMSwxNCArMjEsMTEgQEAgRW50aXR5OiBsaW5lIDE6CisgICAgICAgICAgICAgXgorIC4vdGVzdC9lcnJvcnMvNzU5NTczLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBpbnRlcm5hbCBlcnJvcjogeG1sUGFyc2VJbnRlcm5hbFN1YnNldDogZXJyb3IgZGV0ZWN0ZWQgaW4gTWFya3VwIGRlY2xhcmF0aW9uCisgCistPD9oPz48IURPQ1RZUEV0WzwhRUxFTUVOVCB0IChBKT48IUVOVElUWSAlIHh4ICcmIzM3OzwhW0lOQ0xVREVbMDAwJiMzNzsmIzMwMDA7MDAKKy0gICAgIF4KKysKKyteCisgLi90ZXN0L2Vycm9ycy83NTk1NzMueG1sOjE6IHBhcnNlciBlcnJvciA6IERPQ1RZUEUgaW1wcm9wZXJseSB0ZXJtaW5hdGVkCistPD9oPz48IURPQ1RZUEV0WzwhRUxFTUVOVCB0IChBKT48IUVOVElUWSAlIHh4ICcmIzM3OzwhW0lOQ0xVREVbMDAwJiMzNzsmIzMwMDA7MDAKKy0gICAgIF4KKy0uL3Rlc3QvZXJyb3JzLzc1OTU3My54bWw6MTogcGFyc2VyIGVycm9yIDogU3RhcnRUYWc6IGludmFsaWQgZWxlbWVudCBuYW1lCistPD9oPz48IURPQ1RZUEV0WzwhRUxFTUVOVCB0IChBKT48IUVOVElUWSAlIHh4ICcmIzM3OzwhW0lOQ0xVREVbMDAwJiMzNzsmIzMwMDA7MDAKKy0gICAgICBeCistLi90ZXN0L2Vycm9ycy83NTk1NzMueG1sOjE6IHBhcnNlciBlcnJvciA6IEV4dHJhIGNvbnRlbnQgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQKKy08P2g/PjwhRE9DVFlQRXRbPCFFTEVNRU5UIHQgKEEpPjwhRU5USVRZICUgeHggJyYjMzc7PCFbSU5DTFVERVswMDAmIzM3OyYjMzAwMDswMAorLSAgICAgIF4KKysKKyteCisrLi90ZXN0L2Vycm9ycy83NTk1NzMueG1sOjE6IHBhcnNlciBlcnJvciA6IFN0YXJ0IHRhZyBleHBlY3RlZCwgJzwnIG5vdCBmb3VuZAorKworK14KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LUNWRS0yMDE4LTE0NDA0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9maXgtQ1ZFLTIwMTgtMTQ0MDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2NjhlMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LUNWRS0yMDE4LTE0NDA0LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK2xpYnhtbDItMi45Ljg6IEZpeCBDVkUtMjAxOC0xNDQwNAorCitbTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJ4bWwyL2lzc3Vlcy81CisgLS0gaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MDE4MTcKKyAtLSBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1OTU5ODUKKworeHBhdGg6IEZpeCBudWxscHRyIGRlcmVmIHdpdGggWFBhdGggbG9naWMgb3BzCisKK0lmIHRoZSBYUGF0aCBzdGFjayBpcyBjb3JydXB0ZWQsIGZvciBleGFtcGxlIGJ5IGEgbWlzYmVoYXZpbmcgZXh0ZW5zaW9uCitmdW5jdGlvbiwgdGhlICJhbmQiIGFuZCAib3IiIFhQYXRoIG9wZXJhdG9ycyBjb3VsZCBkZXJlZmVyZW5jZSBOVUxMCitwb2ludGVycy4gQ2hlY2sgdGhhdCB0aGUgWFBhdGggc3RhY2sgaXNuJ3QgZW1wdHkgYW5kIG9wdGltaXplIHRoZQorbG9naWMgb3BlcmF0b3JzIHNsaWdodGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9jb21taXQvYTQzNjM3NDk5NGM0N2IxMmQ1ZGUxYjhiMWQxOTFhMDk4ZmEyMzU5NF0KK0NWRTogQ1ZFLTIwMTgtMTQ0MDQKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEveHBhdGguYyBiL3hwYXRoLmMKK2luZGV4IGY0NDA2OTYuLjc1Y2FjNWMgMTAwNjQ0CistLS0gYS94cGF0aC5jCisrKysgYi94cGF0aC5jCitAQCAtMTMyOTcsOSArMTMyOTcsOCBAQCB4bWxYUGF0aENvbXBPcEV2YWwoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIHhtbFhQYXRoU3RlcE9wUHRyIG9wKQorIAkJcmV0dXJuKDApOworIAkgICAgfQorICAgICAgICAgICAgIHhtbFhQYXRoQm9vbGVhbkZ1bmN0aW9uKGN0eHQsIDEpOworLSAgICAgICAgICAgIGFyZzEgPSB2YWx1ZVBvcChjdHh0KTsKKy0gICAgICAgICAgICBhcmcxLT5ib29sdmFsICY9IGFyZzItPmJvb2x2YWw7CistICAgICAgICAgICAgdmFsdWVQdXNoKGN0eHQsIGFyZzEpOworKwkgICAgaWYgKGN0eHQtPnZhbHVlICE9IE5VTEwpCisrCQljdHh0LT52YWx1ZS0+Ym9vbHZhbCAmPSBhcmcyLT5ib29sdmFsOworIAkgICAgeG1sWFBhdGhSZWxlYXNlT2JqZWN0KGN0eHQtPmNvbnRleHQsIGFyZzIpOworICAgICAgICAgICAgIHJldHVybiAodG90YWwpOworICAgICAgICAgY2FzZSBYUEFUSF9PUF9PUjoKK0BAIC0xMzMyMyw5ICsxMzMyMiw4IEBAIHhtbFhQYXRoQ29tcE9wRXZhbCh4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgeG1sWFBhdGhTdGVwT3BQdHIgb3ApCisgCQlyZXR1cm4oMCk7CisgCSAgICB9CisgICAgICAgICAgICAgeG1sWFBhdGhCb29sZWFuRnVuY3Rpb24oY3R4dCwgMSk7CistICAgICAgICAgICAgYXJnMSA9IHZhbHVlUG9wKGN0eHQpOworLSAgICAgICAgICAgIGFyZzEtPmJvb2x2YWwgfD0gYXJnMi0+Ym9vbHZhbDsKKy0gICAgICAgICAgICB2YWx1ZVB1c2goY3R4dCwgYXJnMSk7CisrCSAgICBpZiAoY3R4dC0+dmFsdWUgIT0gTlVMTCkKKysJCWN0eHQtPnZhbHVlLT5ib29sdmFsIHw9IGFyZzItPmJvb2x2YWw7CisgCSAgICB4bWxYUGF0aFJlbGVhc2VPYmplY3QoY3R4dC0+Y29udGV4dCwgYXJnMik7CisgICAgICAgICAgICAgcmV0dXJuICh0b3RhbCk7CisgICAgICAgICBjYXNlIFhQQVRIX09QX0VRVUFMOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCmluZGV4IGNiMTcxZDUuLjU0NGRjMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVudGVzdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bnRlc3QucGF0Y2gKQEAgLTYsOCArNiw4IEBACiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAKIGRpZmYgLXVOciBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLS0tLSBhL01ha2VmaWxlLmFtCTIwMTctMDgtMjggMTU6MDE6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgYi9NYWtlZmlsZS5hbQkyMDE3LTA5LTA1IDA4OjA2OjA1Ljc1MjI4NzMyMyArMDIwMAorLS0tIGEvTWFrZWZpbGUuYW0JMjAxNy0xMi0wMiAwOTo1ODoxMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL01ha2VmaWxlLmFtCTIwMTgtMDMtMjAgMDg6Mjc6MzQuMzYwNTA1ODY0ICswMTAwCiBAQCAtMjAyLDYgKzIwMiwxNSBAQAogICN0ZXN0T09NX0RFUEVOREVOQ0lFUyA9ICQoREVQUykKICAjdGVzdE9PTV9MREFERD0gJChMREFERFMpCkBAIC0yNCwxMCArMjQsOSBAQAogIHJ1bnRlc3RzOiBydW50ZXN0JChFWEVFWFQpIHRlc3RyZWN1cnNlJChFWEVFWFQpIHRlc3RhcGkkKEVYRUVYVCkgXAogICAgICAgICAgICB0ZXN0Y2hhciQoRVhFRVhUKSB0ZXN0ZGljdCQoRVhFRVhUKSBydW54bWxjb25mJChFWEVFWFQpCiAgCVsgLWQgdGVzdCAgIF0gfHwgJChMTl9TKSAkKHNyY2RpcikvdGVzdCAgIC4KLQogZGlmZiAtdU5yIGEvcnVuc3VpdGUuYyBiL3J1bnN1aXRlLmMKLS0tLSBhL3J1bnN1aXRlLmMJMjAxMy0wNC0xMiAxNjoxNzoxMS40NjI4MjMyMzggKzAyMDAKLSsrKyBiL3J1bnN1aXRlLmMJMjAxMy0wNC0xNyAxNDowNzoyNC4zNTI2OTMyMTEgKzAyMDAKKy0tLSBhL3J1bnN1aXRlLmMJMjAxNi0wNi0wNyAxMjowNDoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL3J1bnN1aXRlLmMJMjAxOC0wMy0yMCAwODoyNzo1Ny40Nzg4MTcyNDcgKzAxMDAKIEBAIC0xMTYyLDYgKzExNjIsNyBAQAogIAogICAgICBpZiAobG9nZmlsZSAhPSBOVUxMKQpAQCAtMzcsMTcgKzM2LDE5IEBACiAgfQogICNlbHNlIC8qICFTQ0hFTUFTICovCiBkaWZmIC11TnIgYS9ydW50ZXN0LmMgYi9ydW50ZXN0LmMKLS0tLSBhL3J1bnRlc3QuYwkyMDEzLTA0LTE2IDEzOjE5OjE1LjA4Nzk5NzI5MCArMDIwMAotKysrIGIvcnVudGVzdC5jCTIwMTMtMDQtMTcgMTQ6MDg6MjkuNTI5OTQ5NjU1ICswMjAwCi1AQCAtNDM4Niw2ICs0Mzg2LDcgQEAKLSAJICAgIGVycisrOwotIAl9CistLS0gYS9ydW50ZXN0LmMJMjAxNy0xMS0xMyAyMjowMDoxNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL3J1bnRlc3QuYwkyMDE4LTAzLTIwIDA4OjI4OjUwLjg1OTA0NzU1MSArMDEwMAorQEAgLTQ0OTYsNyArNDQ5Niw4IEBACiAgICAgIH0KKyAKKyAgICAgeG1sQ2hhckVuY0Nsb3NlRnVuYyhlYmNkaWNIYW5kbGVyKTsKKy0KKysgICAgCiArICAgIHByaW50ZigiJXM6ICVzXG4iLCAoZXJyID09IDApID8gIlBBU1MiIDogIkZBSUwiLCB0c3QtPmRlc2MpOwogICAgICByZXR1cm4oZXJyKTsKICB9CiAgCi1AQCAtNDQ1NSw2ICs0NDU2LDcgQEAKK0BAIC00NTczLDYgKzQ1NzQsNyBAQAogICAgICB4bWxDbGVhbnVwUGFyc2VyKCk7CiAgICAgIHhtbE1lbW9yeUR1bXAoKTsKICAKQEAgLTU2LDggKzU3LDggQEAKICB9CiAgCiBkaWZmIC11TnIgYS9ydW54bWxjb25mLmMgYi9ydW54bWxjb25mLmMKLS0tLSBhL3J1bnhtbGNvbmYuYwkyMDEzLTA0LTE2IDEyOjUzOjQ5LjkwMDk4Mjk5MCArMDIwMAotKysrIGIvcnVueG1sY29uZi5jCTIwMTMtMDQtMTcgMTQ6MDk6MjEuMTExNzc4MTA0ICswMjAwCistLS0gYS9ydW54bWxjb25mLmMJMjAxNi0wNi0wNyAxMjowNDoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL3J1bnhtbGNvbmYuYwkyMDE4LTAzLTIwIDA4OjI5OjE3Ljk0NDg2Mjg5MyArMDEwMAogQEAgLTU5NSw2ICs1OTUsNyBAQAogIAogICAgICBpZiAobG9nZmlsZSAhPSBOVUxMKQpAQCAtNjcsOSArNjgsOSBAQAogIH0KICAKIGRpZmYgLXVOciBhL3Rlc3RhcGkuYyBiL3Rlc3RhcGkuYwotLS0tIGEvdGVzdGFwaS5jCTIwMTMtMDQtMTIgMTY6MTY6NTcuNzYzNDE3NjU5ICswMjAwCi0rKysgYi90ZXN0YXBpLmMJMjAxMy0wNC0xNyAxNDoxMDoyOC44NzY5MjQ4ODEgKzAyMDAKLUBAIC0xMjQ1LDQ5ICsxMjQ1LDkxIEBACistLS0gYS90ZXN0YXBpLmMJMjAxOC0wMS0yNSAwNzozOToxNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL3Rlc3RhcGkuYwkyMDE4LTAzLTIwIDA5OjA4OjM1LjMyMzk4MDE0NSArMDEwMAorQEAgLTEyNDYsNDkgKzEyNDYsOTEgQEAKICB0ZXN0bGlieG1sMih2b2lkKQogIHsKICAgICAgaW50IHRlc3RfcmV0ID0gMDsKQEAgLTIwMCw5ICsyMDEsMTkgQEAKICAgICAgcmV0dXJuKHRlc3RfcmV0KTsKICB9CiAgCitkaWZmIC11TnIgYS90ZXN0ZGljdC5jIGIvdGVzdGRpY3QuYworLS0tIGEvdGVzdGRpY3QuYwkyMDE2LTA2LTA3IDEyOjA0OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGVzdGRpY3QuYwkyMDE4LTAzLTIwIDA4OjU5OjE2Ljg2NDI3NTgxMiArMDEwMAorQEAgLTQ0MCw1ICs0NDAsNiBAQAorICAgICBjbGVhbl9zdHJpbmdzKCk7CisgICAgIHhtbENsZWFudXBQYXJzZXIoKTsKKyAgICAgeG1sTWVtb3J5RHVtcCgpOworKyAgICBwcmludGYoIiVzOiB0ZXN0ZGljdFxuXG4iLCAocmV0ID09IDApID8gIlBBU1MiIDogIkZBSUwiKTsKKyAgICAgcmV0dXJuKHJldCk7CisgfQogZGlmZiAtdU5yIGEvdGVzdGNoYXIuYyBiL3Rlc3RjaGFyLmMKLS0tLSBhL3Rlc3RjaGFyLmMJMjAxMy0wNC0xNyAxMDo1MDozMC4yNTAxNDc0MTggKzAyMDAKLSsrKyBiL3Rlc3RjaGFyLmMJMjAxMy0wNC0xOCAxNjoxMToyOC40NTU3MzM4MDAgKzAyMDAKKy0tLSBhL3Rlc3RjaGFyLmMJMjAxNi0wNi0wNyAxMjowNDoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL3Rlc3RjaGFyLmMJMjAxOC0wMy0yMCAwOToxMToyMC4zODM1NzM5MTIgKzAxMDAKIEBAIC0yMyw3ICsyMyw3IEBACiAgY2hhciBkb2N1bWVudDFbMTAwXSA9ICI8ZG9jPlhYWFg8L2RvYz4iOwogIGNoYXIgZG9jdW1lbnQyWzEwMF0gPSAiPGRvYyBmb289J1hYWFgnLz4iOwpAQCAtMjIyLDcgKzIzMyw3IEBACiAgCQkgICAgIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlIDB4JTAyWDogJWNcbiIsCiAgCQkgICAgICAgIGksIGkpOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCWVsc2UgaWYgKChpID09ICc8JykgfHwgKGkgPT0gJyYnKSkgewpAQCAtMjMwLDggKzI0MSw4IEBACiArCSAgICBpZiAoKGxhc3RFcnJvciA9PSAwKSB8fCAocmVzICE9IE5VTEwpKSB7CiAgCSAgICAgICAgZnByaW50ZihzdGRlcnIsCiAgCQkgICAgIkZhaWxlZCB0byBkZXRlY3QgaWxsZWdhbCBjaGFyICVjIGZvciBCeXRlIDB4JTAyWFxuIiwgaSwgaSk7Ci0rCQkJcmV0dXJuKDEpOwotKwkJfQorKwkJcmV0dXJuKDEpOworKwkgICAgfQogIAl9CiAgCWVsc2UgaWYgKCgoaSA8IDB4MjApIHx8IChpID49IDB4ODApKSAmJgogIAkgICAgKGkgIT0gMHg5KSAmJiAoaSAhPSAweEEpICYmIChpICE9IDB4RCkpIHsKQEAgLTIzOSw4ICsyNTAsOCBAQAogKwkgICAgaWYgKChsYXN0RXJyb3IgIT0gWE1MX0VSUl9JTlZBTElEX0NIQVIpICYmIChyZXMgIT0gTlVMTCkpIHsKICAJICAgICAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSAgICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGUgMHglMDJYXG4iLCBpKTsKLSsJCQlyZXR1cm4oMSk7Ci0rCQl9CisrCQlyZXR1cm4oMSk7CisrCSAgICB9CiAgCX0KICAJZWxzZSBpZiAocmVzID09IE5VTEwpIHsKICAJICAgIGZwcmludGYoc3RkZXJyLApAQCAtMjUwLDcgKzI2MSw3IEBACiAgCWlmIChyZXMgIT0gTlVMTCkKICAJICAgIHhtbEZyZWVEb2MocmVzKTsKICAgICAgfQotKwlyZXR1cm4oMCk7CisrICAgIHJldHVybigwKTsKICB9CiAgCiAtc3RhdGljIHZvaWQgdGVzdERvY3VtZW50UmFuZ2VCeXRlMih4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNoYXIgKmRvY3VtZW50LApAQCAtMjY4LDcgKzI3OSw3IEBACiAgCQkiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJaSwgaik7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0KICAKICAJLyoKQEAgLTI4Miw3ICsyOTMsNyBAQAogIAkgICAgIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGopOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCS8qCkBAIC0yOTYsNyArMzA3LDcgQEAKICAJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWFxuIiwKICAJCQlpLCBqKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtMzEwLDcgKzMyMSw3IEBACiAgCSAgICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHgwMFxuIiwKICAJCQlpLCBqKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtMzE4LDEzICszMjksMTMgQEAKICAJZWxzZSBpZiAoKGxhc3RFcnJvciAhPSAwKSB8fCAocmVzID09IE5VTEwpKSB7CiAgCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSJGYWlsZWQgdG8gcGFyc2UgZG9jdW1lbnQgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlhcbiIsIGksIGopOwotKwkJcmV0dXJuKDEpOworKwkgICAgcmV0dXJuKDEpOwogIAl9CiAgCWlmIChyZXMgIT0gTlVMTCkKICAJICAgIHhtbEZyZWVEb2MocmVzKTsKICAgICAgfQogICAgICB9Ci0rCXJldHVybigwKTsKKysgICAgcmV0dXJuKDApOwogIH0KICAKICAvKioKQEAgLTQzOCwyMCArNDQ5LDIwIEBACiArCSAgICBpZiAobGFzdEVycm9yICE9IFhNTF9FUlJfSU5WQUxJRF9DSEFSKSB7CiAgCSAgICAgICAgZnByaW50ZihzdGRlcnIsCiAgCQkgICAgIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlIDB4JTAyWFxuIiwgaSk7Ci0rCQkJcmV0dXJuKDEpOwotKwkJfQorKwkJcmV0dXJuKDEpOworKwkgICAgfQogIAl9IGVsc2UgaWYgKGkgPT0gMHhEKSB7CiAtCSAgICBpZiAoKGMgIT0gMHhBKSB8fCAobGVuICE9IDEpKQogKwkgICAgaWYgKChjICE9IDB4QSkgfHwgKGxlbiAhPSAxKSkgewogIAkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY29udmVydCBjaGFyIGZvciBCeXRlIDB4JTAyWFxuIiwgaSk7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0gZWxzZSBpZiAoKGMgIT0gaSkgfHwgKGxlbiAhPSAxKSkgewogIAkgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcGFyc2UgY2hhciBmb3IgQnl0ZSAweCUwMlhcbiIsIGkpOwotKwkJcmV0dXJuKDEpOworKwkgICAgcmV0dXJuKDEpOwogIAl9CiAgICAgIH0KLSsJcmV0dXJuKDApOworKyAgICByZXR1cm4oMCk7CiAgfQogIAogLXN0YXRpYyB2b2lkIHRlc3RDaGFyUmFuZ2VCeXRlMih4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNoYXIgKmRhdGEpIHsKQEAgLTQ2OCw4ICs0NzksOCBAQAogIAkJICAgIGZwcmludGYoc3RkZXJyLAogIAkJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWFxuIiwKICAJCSAgICAgICAgICAgIGksIGopOwotKwkJCXJldHVybigxKTsKLSsJCQl9CisrCQkgICAgcmV0dXJuKDEpOworKwkJfQogIAkgICAgfQogIAogIAkgICAgLyoKQEAgLTQ4Miw4ICs0OTMsOCBAQAogIAkJICAgIGZwcmludGYoc3RkZXJyLAogIAkJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYOiAlZFxuIiwKICAJCSAgICAgICAgICAgIGksIGosIGMpOwotKwkJCXJldHVybigxKTsKLSsJCQl9CisrCQkgICAgcmV0dXJuKDEpOworKwkJfQogIAkgICAgfQogIAogIAkgICAgLyoKQEAgLTQ5Niw4ICs1MDcsOCBAQAogIAkJICAgIGZwcmludGYoc3RkZXJyLAogIAkJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYOiAlZFxuIiwKICAJCSAgICAgICAgICAgIGksIGosIGMpOwotKwkJCXJldHVybigxKTsKLSsJCQl9CisrCQkgICAgcmV0dXJuKDEpOworKwkJfQogIAkgICAgfQogIAogIAkgICAgLyoKQEAgLTUxMCw4ICs1MjEsOCBAQAogIAkJICAgIGZwcmludGYoc3RkZXJyLAogIAkJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4MDBcbiIsCiAgCQkgICAgICAgICAgICBpLCBqKTsKLSsJCQlyZXR1cm4oMSk7Ci0rCQkJfQorKwkJICAgIHJldHVybigxKTsKKysJCX0KICAJICAgIH0KICAKICAgICAgICAgICAgICAvKgpAQCAtNTMxLDcgKzU0Miw3IEBACiAgCSAgICB9CiAgICAgICAgICB9CiAgICAgIH0KLSsJcmV0dXJuKDApOworKyAgICByZXR1cm4oMCk7CiAgfQogIAogLXN0YXRpYyB2b2lkIHRlc3RDaGFyUmFuZ2VCeXRlMyh4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNoYXIgKmRhdGEpIHsKQEAgLTU0OSw3ICs1NjAsNyBAQAogIAkiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYIDB4JTAyWFxuIiwKICAJCQlpLCBqLCBLLCBkYXRhWzNdKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogICAgICAgICAgLyoKQEAgLTU2Miw3ICs1NzMsNyBAQAogIAkiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGosIEspOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCS8qCkBAIC01NzYsNyArNTg3LDcgQEAKICAJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJaSwgaiwgSyk7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0KICAKICAgICAgICAgIC8qCkBAIC01OTAsNyArNjAxLDcgQEAKICAJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIDB4JTA0WCBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJdmFsdWUsIGksIGosIEspOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCS8qCkBAIC01OTgsNyArNjA5LDcgQEAKICAJICAgIGZwcmludGYoc3RkZXJyLAogIAkJIkZhaWxlZCB0byBwYXJzZSBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWFxuIiwKICAJCSAgICBpLCBqLCBLKTsKLSsJCXJldHVybigxKTsKKysJICAgIHJldHVybigxKTsKICAJfQogIAogIAkvKgpAQCAtNjA2LDEyICs2MTcsMTIgQEAKICAJICAgIGZwcmludGYoc3RkZXJyLAogICAgICAiRmFpbGVkIHRvIHBhcnNlIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYOiBleHBlY3QgJWQgZ290ICVkXG4iLAogIAkJaSwgaiwgZGF0YVsyXSwgdmFsdWUsIGMpOwotKwkJcmV0dXJuKDEpOworKwkgICAgcmV0dXJuKDEpOwogIAl9CiAgICAgIH0KICAgICAgfQogICAgICB9Ci0rCXJldHVybigwKTsKKysgICAgcmV0dXJuKDApOwogIH0KICAKIC1zdGF0aWMgdm9pZCB0ZXN0Q2hhclJhbmdlQnl0ZTQoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0LCBjaGFyICpkYXRhKSB7CkBAIC02MjksNyArNjQwLDcgQEAKICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGosIEssIGRhdGFbM10pOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgICAgICAgICAvKgpAQCAtNjQzLDcgKzY1NCw3IEBACiAgCSJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGosIEssIEwpOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCS8qCkBAIC02NTcsNyArNjY4LDcgQEAKICAJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJaSwgaiwgSywgTCk7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0KICAKICAgICAgICAgIC8qCkBAIC02NzEsNyArNjgyLDcgQEAKICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgMHglMDRYIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJdmFsdWUsIGksIGosIEssIEwpOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCS8qCkBAIC02NzksNyArNjkwLDcgQEAKICAJICAgIGZwcmludGYoc3RkZXJyLAogIAkJIkZhaWxlZCB0byBwYXJzZSBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWFxuIiwKICAJCSAgICBpLCBqLCBLKTsKLSsJCXJldHVybigxKTsKKysJICAgIHJldHVybigxKTsKICAJfQogIAogIAkvKgpAQCAtNjg3LDEzICs2OTgsMTMgQEAKICAJICAgIGZwcmludGYoc3RkZXJyLAogICAgICAiRmFpbGVkIHRvIHBhcnNlIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYOiBleHBlY3QgJWQgZ290ICVkXG4iLAogIAkJaSwgaiwgZGF0YVsyXSwgdmFsdWUsIGMpOwotKwkJcmV0dXJuKDEpOworKwkgICAgcmV0dXJuKDEpOwogIAl9CiAgICAgIH0KICAgICAgfQogICAgICB9CiAgICAgIH0KLSsJcmV0dXJuKDApOworKyAgICByZXR1cm4oMCk7CiAgfQogIAogIC8qKgpAQCAtNzIyLDEzICs3MzMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0NIQVJfRU5DT0RJTkdfTk9ORSk7CiAgICAgIGlmIChidWYgPT0gTlVMTCkgewogICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gYWxsb2NhdGUgaW5wdXQgYnVmZmVyXG4iKTsKLSsgICAgICAgIHRlc3RfcmV0ID0gMTsKKysJdGVzdF9yZXQgPSAxOwogIAlnb3RvIGVycm9yOwogICAgICB9CiAgICAgIGlucHV0ID0geG1sTmV3SW5wdXRTdHJlYW0oY3R4dCk7CiAgICAgIGlmIChpbnB1dCA9PSBOVUxMKSB7CiAgICAgICAgICB4bWxGcmVlUGFyc2VySW5wdXRCdWZmZXIoYnVmKTsKLSsgICAgICAgIHRlc3RfcmV0ID0gMTsKKysJdGVzdF9yZXQgPSAxOwogIAlnb3RvIGVycm9yOwogICAgICB9CiAgICAgIGlucHV0LT5maWxlbmFtZSA9IE5VTEw7CkBAIC03NzcsMjAgKzc4OCwxMCBAQAogIAogICAgICAvKgogICAgICAgKiBDbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgWE1MIGxpYnJhcnkuCi1kaWZmIC11TnIgYS90ZXN0ZGljdC5jIGIvdGVzdGRpY3QuYwotLS0tIGEvdGVzdGRpY3QuYwkyMDEzLTA0LTE2IDE1OjA4OjQyLjk3MTE3NzE5MyArMDIwMAotKysrIGIvdGVzdGRpY3QuYwkyMDEzLTA0LTE4IDE1OjU5OjAwLjY5OTQ4MjQzOSArMDIwMAotQEAgLTQ0MCw1ICs0NDAsNiBAQAotICAgICBjbGVhbl9zdHJpbmdzKCk7Ci0gICAgIHhtbENsZWFudXBQYXJzZXIoKTsKLSAgICAgeG1sTWVtb3J5RHVtcCgpOwotKyAgICBwcmludGYoIiVzOiB0ZXN0ZGljdFxuXG4iLCAocmV0ID09IDApID8gIlBBU1MiIDogIkZBSUwiKTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQogZGlmZiAtdU5yIGEvdGVzdGxpbWl0cy5jIGIvdGVzdGxpbWl0cy5jCi0tLS0gYS90ZXN0bGltaXRzLmMJMjAxMy0wNC0xMiAxNjoxNjozNi4xODAzNTQxNzcgKzAyMDAKLSsrKyBiL3Rlc3RsaW1pdHMuYwkyMDEzLTA0LTE3IDE0OjAzOjE3LjIwMzA5Mjk4NyArMDIwMAotQEAgLTE2MzAsNSArMTYzMCw2IEBACistLS0gYS90ZXN0bGltaXRzLmMJMjAxNi0xMS0wNyAwOTo0MTo0MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL3Rlc3RsaW1pdHMuYwkyMDE4LTAzLTIwIDA4OjU5OjM4Ljk2NTU4MTI4MCArMDEwMAorQEAgLTE2MzQsNSArMTYzNCw2IEBACiAgICAgIHhtbENsZWFudXBQYXJzZXIoKTsKICAgICAgeG1sTWVtb3J5RHVtcCgpOwogIApAQCAtNzk4LDggKzc5OSw4IEBACiAgICAgIHJldHVybihyZXQpOwogIH0KIGRpZmYgLXVOciBhL3Rlc3RyZWN1cnNlLmMgYi90ZXN0cmVjdXJzZS5jCi0tLS0gYS90ZXN0cmVjdXJzZS5jCTIwMTMtMDQtMTYgMTM6MTk6NDkuMzY2NTM2Mjk1ICswMjAwCi0rKysgYi90ZXN0cmVjdXJzZS5jCTIwMTMtMDQtMTcgMTQ6MDY6MjcuMzY3MDkxNjIyICswMjAwCistLS0gYS90ZXN0cmVjdXJzZS5jCTIwMTctMTAtMjYgMDk6NTQ6NDAuMDAwMDAwMDAwICswMjAwCisrKysgYi90ZXN0cmVjdXJzZS5jCTIwMTgtMDMtMjAgMDk6MDA6NDYuNzgxNjI4NzQ5ICswMTAwCiBAQCAtODkyLDYgKzg5Miw3IEBACiAgCSAgICBlcnIrKzsKICAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NDlhODEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi1TVU1NQVJZID0gIlhNTCBDIFBhcnNlciBMaWJyYXJ5IGFuZCBUb29sa2l0IgotREVTQ1JJUFRJT04gPSAiVGhlIFhNTCBQYXJzZXIgTGlicmFyeSBhbGxvd3MgZm9yIG1hbmlwdWxhdGlvbiBvZiBYTUwgZmlsZXMuICBMaWJ4bWwyIGV4cG9ydHMgUHVzaCBhbmQgUHVsbCB0eXBlIHBhcnNlciBpbnRlcmZhY2VzIGZvciBib3RoIFhNTCBhbmQgSFRNTC4gIEl0IGNhbiBkbyBEVEQgdmFsaWRhdGlvbiBhdCBwYXJzZSB0aW1lLCBvbiBhIHBhcnNlZCBkb2N1bWVudCBpbnN0YW5jZSBvciB3aXRoIGFuIGFyYml0cmFyeSBEVEQuICBMaWJ4bWwyIGluY2x1ZGVzIGNvbXBsZXRlIFhQYXRoLCBYUG9pbnRlciBhbmQgWGluY2x1ZGUgaW1wbGVtZW50YXRpb25zLiAgSXQgYWxzbyBoYXMgYSBTQVggbGlrZSBpbnRlcmZhY2UsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBFeHBhdC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PWxpYnhtbDIiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MjA0NDQxN2UyZTUwMDZiNjVhOGI5MDY3YjY4M2ZjZjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaGFzaC5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTU7bWQ1PTk2ZjcyOTY2MDVlYWU4MDc2NzBmYjA4OTQ3ODI5OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpc3QuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEzO21kNT1jZGJmYTNkZWU1MWMwOTllZGIwNGUzOWY3NjJlZTkwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmlvLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNDttZDU9NmMwMjU3NTNjODZkOTU4NzIyZWM3NmU5NGNhZTkzMmUiCi0KLURFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvc291cmNlcy9saWJ4bWwyLSR7UFZ9LnRhci5nejtuYW1lPWxpYnRhciBcCi0gICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1hNTC9UZXN0L3htbHRzMjAwODA4MjcudGFyLmd6O25hbWU9dGVzdHRhciBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtNjRiaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYW5zaWRlY2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVudGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLXNpdGVwYWNrYWdlcy1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE0NDA0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW2xpYnRhci5tZDVzdW1dID0gIjg5NjYwODY0MWEwOGI0NjUwOThhNDBkZGY1MWNlZmJhIgotU1JDX1VSSVtsaWJ0YXIuc2hhMjU2c3VtXSA9ICJmNjNjNWU3ZDMwMzYyZWQyOGIzOGJmYTFhYzYzMTNmOWE4MDIzMDcyMGI3ZmI2YzgwNTc1ZWVhYjNmZjU5MDBjIgotU1JDX1VSSVt0ZXN0dGFyLm1kNXN1bV0gPSAiYWUzZDFlYmUwMDBhMzk3MmFmYTEwNGNhN2YwZTFiNGEiCi1TUkNfVVJJW3Rlc3R0YXIuc2hhMjU2c3VtXSA9ICI5NjE1MTY4NWNlYzk5N2UxZjlmMzM4N2UzNjI2ZDYxZTYyODRkNGQ2ZTY2ZTBlNDQwYzIwOTI4NmMwM2U5Y2M3IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3htbDItY29uZmlnIgotCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0Ci0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXNoZWxsICBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlibTExNDEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlzbzg4NTktNSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtZXVjLWpwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtYmFzZS1lbi11cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotZXhwb3J0IFBZVEhPTl9TSVRFX1BBQ0tBR0VTPSIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotRVhUUkFfT0VDT05GX2xpbnV4c3RkYmFzZSA9ICItLXdpdGgtZGVidWcgLS13aXRoLWxlZ2FjeSAtLXdpdGgtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgICMgYXV0b25hbWVyIHdvdWxkIGNhbGwgdGhpcyBsaWJ4bWwyLTIsIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQKLSAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6Ci0gICAgICAgIGQuc2V0VmFyKCdQS0dfbGlieG1sMicsICcke01MUFJFRklYfWxpYnhtbDInKQotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tdXRpbHMgJHtQTn0tcHl0aG9uIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3htbDJDb25mLnNoICR7bGliZGlyfS9jbWFrZS8qIgotRklMRVNfJHtQTn0tdXRpbHMgKz0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgZXhlY3V0YWJsZXMgdGFrZSBsb25nZXIgdG8gcGFja2FnZTogdGhlc2Ugc2hvdWxkIG5vdCBiZSBleGVjdXRhYmxlCi0JZmluZCAke1dPUktESVJ9L3htbGNvbmYvIC10eXBlIGYgLWV4ZWMgY2htb2QgLXgge30gXCsKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIGNoZWNrLWFtCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yICR7V09SS0RJUn0veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzfF5cKFBZVEhPTiA9IFwpLip8XDEke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnIFwKLQkJICAgICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbi90ZXN0cy9NYWtlZmlsZQotCQlncmVwIC1sclogJyMhL3Vzci9iaW4vcHl0aG9uJyAke0R9JHtQVEVTVF9QQVRIfS9weXRob24gfAotCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnCi0JZmkKLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgTWFrZWZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAotCSAgICBzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15SRUxEQVRFL2QnIFwKLQkgICAge30gKwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCSMgRG9jcyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgbmF0aXZlIGNhc2UKLQlybSAke0R9JHtkYXRhZGlyfS9ndGstZG9jIC1yZgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDBiZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuOC5iYgpAQCAtMCwwICsxLDExMyBAQAorU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgorCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT10ZXN0dGFyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWV4ZWN1dGlvbi1vZi1wdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LUNWRS0yMDE3LTg4NzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LUNWRS0yMDE4LTE0NDA0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWluZmluaXRlLWxvb3AtaW4tTFpNQS1kZWNvbXByZXNzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW2xpYnRhci5tZDVzdW1dID0gImI3ODZlMzUzZTJhYTFiODcyZDcwZDVkMWNhMGM3NDBkIgorU1JDX1VSSVtsaWJ0YXIuc2hhMjU2c3VtXSA9ICIwYjc0ZTUxNTk1NjU0Zjk1ODE0ODc1OWNmZWYwOTkzMTE0ZGRjY2NjYmI2ZjMxYWVlMDE4ZjM1NThlOGUyNzMyIgorU1JDX1VSSVt0ZXN0dGFyLm1kNXN1bV0gPSAiYWUzZDFlYmUwMDBhMzk3MmFmYTEwNGNhN2YwZTFiNGEiCitTUkNfVVJJW3Rlc3R0YXIuc2hhMjU2c3VtXSA9ICI5NjE1MTY4NWNlYzk5N2UxZjlmMzM4N2UzNjI2ZDYxZTYyODRkNGQ2ZTY2ZTBlNDQwYzIwOTI4NmMwM2U5Y2M3IgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3htbDItY29uZmlnIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXNoZWxsICBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlibTExNDEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlzbzg4NTktNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtZXVjLWpwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtYmFzZS1lbi11cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworZXhwb3J0IFBZVEhPTl9TSVRFX1BBQ0tBR0VTPSIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorRVhUUkFfT0VDT05GX2xpbnV4c3RkYmFzZSA9ICItLXdpdGgtZGVidWcgLS13aXRoLWxlZ2FjeSAtLXdpdGgtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgICMgYXV0b25hbWVyIHdvdWxkIGNhbGwgdGhpcyBsaWJ4bWwyLTIsIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQKKyAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6CisgICAgICAgIGQuc2V0VmFyKCdQS0dfbGlieG1sMicsICcke01MUFJFRklYfWxpYnhtbDInKQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3htbDJDb25mLnNoICR7bGliZGlyfS9jbWFrZS8qIgorRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQorCWZpbmQgJHtTfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSBjaGVjay1hbQorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwljcCAtciAke1N9L3htbGNvbmYgJHtEfSR7UFRFU1RfUEFUSH0KKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnc3xeXChQWVRIT04gPSBcKS4qfFwxJHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JyBcCisJCSAgICAke0R9JHtQVEVTVF9QQVRIfS9weXRob24vdGVzdHMvTWFrZWZpbGUKKwkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKKwkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JworCWZpCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgICAgc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eUkVMREFURS9kJyBcCisJICAgIHt9ICsKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwkjIERvY3MgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIG5hdGl2ZSBjYXNlCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ3RrLWRvYyAtcmYKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKaW5kZXggZDk4YTljOS4uOTFkZjZmMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCkBAIC0xMCw2ICsxMCw4IEBACiAgICAgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyBcCiAgICAgbmF0aXZlc2RrLXB5dGhvbjMtbWlzYyBcCiAgICAgbmF0aXZlc2RrLXB5dGhvbjMtZ2l0IFwKKyAgICBuYXRpdmVzZGstcHl0aG9uMy10ZXN0dG9vbHMgXAorICAgIG5hdGl2ZXNkay1weXRob24zLXN1YnVuaXQgXAogICAgIG5hdGl2ZXNkay1uY3Vyc2VzLXRlcm1pbmZvLWJhc2UgXAogICAgIG5hdGl2ZXNkay1jaHJwYXRoIFwKICAgICBuYXRpdmVzZGstdGFyIFwKQEAgLTIxLDYgKzIzLDggQEAKICAgICBuYXRpdmVzZGstd2dldCBcCiAgICAgbmF0aXZlc2RrLWNhLWNlcnRpZmljYXRlcyBcCiAgICAgbmF0aXZlc2RrLXRleGluZm8gXAorICAgIG5hdGl2ZXNkay1saWJuc3MtbmlzIFwKKyAgICBuYXRpdmVzZGstcnBjc3ZjLXByb3RvIFwKICAgICAiCiAKIE1VTFRJTUFDSF9UQVJHRVRfU1lTID0gIiR7U0RLX0FSQ0h9LW5hdGl2ZXNkayR7U0RLX1ZFTkRPUn0tJHtTREtfT1N9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKaW5kZXggZWQ4M2RkNy4uZWFmY2I4MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCkBAIC0xLDYgKzEsOCBAQAogU1VNTUFSWSA9ICJEdW1teSBwYWNrYWdlcyB3aGljaCBoYW5kbGUgZXhjbHVkaW5nIHBhY2thZ2VzIGZyb20gdGhlIHNkaywgZS5nLiBlbnN1cmluZyBwZXJsIGlzIGV4Y2x1ZGVkIGZyb20gYnVpbGR0b29scyIKIExJQ0VOU0UgPSAiTUlUIgogCitQQUNLQUdFX0FSQ0ggPSAiYWxsIgorCiBpbmhlcml0IGFsbGFyY2gKIAogcHl0aG9uKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgppbmRleCAwOWY3NTdhLi5kYTEyMzBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgpAQCAtNTYsNyArNTYsNyBAQAogCSMgQWRkIHZlcnNpb24gaW5mb3JtYXRpb24KIAl0b29sY2hhaW5fY3JlYXRlX3Nka192ZXJzaW9uICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS92ZXJzaW9uLSR7UkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZU30KIAotCXRvb2xjaGFpbl9jcmVhdGVfcG9zdF9yZWxvY2F0ZV9zY3JpcHQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuc2gKKwl0b29sY2hhaW5fY3JlYXRlX3Bvc3RfcmVsb2NhdGVfc2NyaXB0ICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9wb3N0LXJlbG9jYXRlLXNldHVwLnNoICR7U0RLUEFUSH0KIH0KIAogZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWlkZS1zdXBwb3J0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtaWRlLXN1cHBvcnQuYmIKaW5kZXggMDY5MmVjOC4uNzY4ZjZmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtaWRlLXN1cHBvcnQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtaWRlLXN1cHBvcnQuYmIKQEAgLTIsNyArMiw3IEBACiBERVNDUklQVElPTiA9ICJNZXRhIHBhY2thZ2UgZm9yIGVuc3VyaW5nIHRoZSBidWlsZCBkaXJlY3RvcnkgY29udGFpbnMgYWxsIGFwcHJvcHJpYXRlIHRvb2xjaGFpbiBwYWNrYWdlcyBmb3IgdXNpbmcgYW4gSURFIgogTElDRU5TRSA9ICJNSVQiCiAKLURFUEVORFMgPSAidmlydHVhbC9saWJjIGdkYi1jcm9zcy0ke1RBUkdFVF9BUkNIfSBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUgdW5mczMtbmF0aXZlIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmMgZ2RiLWNyb3NzLSR7VEFSR0VUX0FSQ0h9IHFlbXUtbmF0aXZlIHFlbXUtaGVscGVyLW5hdGl2ZSB1bmZzMy1uYXRpdmUgY21ha2UtbmF0aXZlIgogUFIgPSAicjMiCiBSTV9XT1JLX0VYQ0xVREUgKz0gIiR7UE59IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKaW5kZXggMzhjM2EzMS4uZTBjYjlmZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgpAQCAtMTIsOCArMTIsMTEgQEAKICAgICBuYXRpdmVzZGstZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIFwKICAgICBuYXRpdmVzZGstZ2xpYmMtZ2NvbnYtdXRmLTE2IFwKICAgICBuYXRpdmVzZGstZ2xpYmMtZ2NvbnYtY3AxMjUyIFwKKyAgICBuYXRpdmVzZGstZ2xpYmMtZ2NvbnYtZXVjLWpwIFwKKyAgICBuYXRpdmVzZGstZ2xpYmMtZ2NvbnYtbGliamlzIFwKICAgICBuYXRpdmVzZGstcGF0Y2hlbGYgXAogICAgIG5hdGl2ZXNkay1saWJ4Y3J5cHQgXAorICAgIG5hdGl2ZXNkay1saWJuc3MtbmlzIFwKICAgICAiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlic3NwLW5vbnNoYXJlZC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9saWJzc3Atbm9uc2hhcmVkLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OGVhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlic3NwLW5vbnNoYXJlZC5iYgpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIk1pbmltYWwgbGlic3NwX25vbnNoYXJlZC5hIG11c3QgbmVlZGVkIGZvciBzc3AgdG8gd29yayB3aXRoIGdjYyBvbiBtdXNsIgorTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NzcC1sb2NhbC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PWMwNmQzOTEyMDhjMGNmY2JjNTQxYTY3MjhlZDY1Y2M0IgorU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gImZpbGU6Ly9zc3AtbG9jYWwuYyIKKworUEFUSF9wcmVwZW5kID0gIiR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS4ke1NUQUdJTkdDQ306IgorCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCitTVEFHSU5HQ0MgPSAiZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0iCitTVEFHSU5HQ0NfY2xhc3MtbmF0aXZlc2RrID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30iCisKK0RFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMgXAorICAgICAgICAgICB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtaW5pdGlhbCBcCisiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9fY29tcGlsZSgpIHsKKwkke0NDfSAke0NQUEZMQUdTfSAke0NGTEFHU30gLWZQSUUgLWMgc3NwLWxvY2FsLmMgLW8gc3NwLWxvY2FsLm8KKwkke0FSfSByIGxpYnNzcF9ub25zaGFyZWQuYSBzc3AtbG9jYWwubworfQorZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vbGlic3NwX25vbnNoYXJlZC5hICR7RH0ke2Jhc2VfbGliZGlyfS9saWJzc3Bfbm9uc2hhcmVkLmEKK30KKyMKKyMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgZm9yIG5vbi1tdXNsIHN5c3RlbXMKKyMKK0NPTVBBVElCTEVfSE9TVCA9ICIuKi1tdXNsLioiCitSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1zdGF0aWNkZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlic3NwLW5vbnNoYXJlZC9zc3AtbG9jYWwuYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9saWJzc3Atbm9uc2hhcmVkL3NzcC1sb2NhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTFhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlic3NwLW5vbnNoYXJlZC9zc3AtbG9jYWwuYwpAQCAtMCwwICsxLDQ1IEBACisvKiBTdGFjayBwcm90ZWN0b3Igc3VwcG9ydC4KKyAgIENvcHlyaWdodCAoQykgMjAwNS0yMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKK0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCit0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKK3ZlcnNpb24uCisKK0luIGFkZGl0aW9uIHRvIHRoZSBwZXJtaXNzaW9ucyBpbiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHRoZQorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzIHlvdSB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBsaW5rIHRoZQorY29tcGlsZWQgdmVyc2lvbiBvZiB0aGlzIGZpbGUgaW50byBjb21iaW5hdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcywKK2FuZCB0byBkaXN0cmlidXRlIHRob3NlIGNvbWJpbmF0aW9ucyB3aXRob3V0IGFueSByZXN0cmljdGlvbiBjb21pbmcKK2Zyb20gdGhlIHVzZSBvZiB0aGlzIGZpbGUuICAoVGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVzdHJpY3Rpb25zCitkbyBhcHBseSBpbiBvdGhlciByZXNwZWN0czsgZm9yIGV4YW1wbGUsIHRoZXkgY292ZXIgbW9kaWZpY2F0aW9uIG9mCit0aGUgZmlsZSwgYW5kIGRpc3RyaWJ1dGlvbiB3aGVuIG5vdCBsaW5rZWQgaW50byBhIGNvbWJpbmUKK2V4ZWN1dGFibGUuKQorCitHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCitXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCitmb3IgbW9yZSBkZXRhaWxzLgorCitVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKK3Blcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKzMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKK3NlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworZXh0ZXJuIHZvaWQgX19zdGFja19jaGtfZmFpbCAodm9pZCk7CisKKy8qIFNvbWUgdGFyZ2V0cyBjYW4gYXZvaWQgbG9hZGluZyBhIEdQIGZvciBjYWxscyB0byBoaWRkZW4gZnVuY3Rpb25zLgorICAgVXNpbmcgdGhpcyBlbnRyeSBwb2ludCBtYXkgYXZvaWQgdGhlIGxvYWQgb2YgYSBHUCBlbnRpcmVseSBmb3IgdGhlCisgICBmdW5jdGlvbiwgbWFraW5nIHRoZSBvdmVyYWxsIGNvZGUgc21hbGxlci4gICovCisKK3ZvaWQKK19fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpCitfX3N0YWNrX2Noa19mYWlsX2xvY2FsICh2b2lkKQoreworICBfX3N0YWNrX2Noa19mYWlsICgpOworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYgppbmRleCA3NGI4NDZkLi5kZDBjZTMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYgpAQCAtMTMsNiArMTMsOCBAQAogU1JDUkVWID0gImZiNTYzMDEzOGNjYWJiYmMxNGExOWQzNzIwOTZhMDRlNDI1NzNjN2QiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYm9sdGxpbnV4L211c2wtdXRpbHMiCiAKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKKwogaW5oZXJpdCBhdXRvdG9vbHMKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwppbmRleCBiYTliMWEwLi4zMTk3MDliIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCkBAIC05LDcgKzksNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tdXNsLWxpYmMub3JnLyIKIExJQ0VOU0UgPSAiTUlUIgogU0VDVElPTiA9ICJsaWJzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0yYjkwMzIwOTNjNDc2NWU0OWFlODVkZGViYTI5YWZmZiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9OGE0YmIyOGY3NzFjODE3ZmU1N2QzYTdjNDI0MGUzYWEiCiAKIFBBVEhfcHJlcGVuZCA9ICIke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0uJHtTVEFHSU5HQ0N9OiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCmluZGV4IDlmOGM1MTIuLjBkOGY4ZWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKQEAgLTIsMTAgKzIsMTEgQEAKICMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKIAogcmVxdWlyZSBtdXNsLmluYworaW5oZXJpdCBsaW51eGxvYWRlcgogCi1TUkNSRVYgPSAiNTVkZjA5YmZjY2JmZTIxZmM5ZGQ3ZDhmOTQ1NTBjMGZmMjVhY2UwNCIKK1NSQ1JFViA9ICJjNTA5ODVkNWM4ZTMxNmM1YzQ2NGYzNTJlNzllZWViZmVkMTEyMWE5IgogCi1QViA9ICIxLjEuMTkrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjEuMjArZ2l0JHtTUkNQVn0iCiAKICMgbWlycm9yIGlzIGF0IGdpdDovL2dpdGh1Yi5jb20va3Jhai9tdXNsLmdpdAogCkBAIC0yMiw3ICsyMyw5IEBACiAgICAgICAgICAgIGxpYmdjYy1pbml0aWFsIFwKICAgICAgICAgICAgbGludXgtbGliYy1oZWFkZXJzIFwKICAgICAgICAgICAgYnNkLWhlYWRlcnMgXAorICAgICAgICAgICBsaWJzc3Atbm9uc2hhcmVkIFwKICAgICAgICAgICAiCitHTElCQ19MRFNPID0gIiR7QGdldF9nbGliY19sb2FkZXIoZCl9IgogCiBleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKIApAQCAtNTksMTMgKzYyLDI3IEBACiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJcm0gLWYgJHtEfSR7YmluZGlyfS9sZGQKIAlsbnIgJHtEfSR7bGliZGlyfS9saWJjLnNvICR7RH0ke2JpbmRpcn0vbGRkCisJbG5yICR7RH0ke2xpYmRpcn0vbGliYy5zbyAke0R9JHtHTElCQ19MRFNPfQogCWZvciBsIGluIGNyeXB0IGRsIG0gcHRocmVhZCByZXNvbHYgcnQgdXRpbCB4bmV0CiAJZG8KIAkJbG4gLXNmIGxpYmMuc28gJHtEfSR7bGliZGlyfS9saWIkbC5zbwogCWRvbmUKKwlmb3IgaSBpbiBsaWJjLnNvLjYgbGliY3J5cHQuc28uMSBsaWJkbC5zby4yIGxpYm0uc28uNiBsaWJwdGhyZWFkLnNvLjAgbGlicmVzb2x2LnNvLjIgbGlicnQuc28uMSBsaWJ1dGlsLnNvLjE7IGRvCisJCWxuIC1zZiBsaWJjLnNvICR7RH0ke2xpYmRpcn0vJGkKKwlkb25lCiB9CiAKLVJERVBFTkRTXyR7UE59LWRldiArPSAibGludXgtbGliYy1oZWFkZXJzLWRldiBic2QtaGVhZGVycy1kZXYiCitQQUNLQUdFUyA9KyAiJHtQTn0tZ2xpYmMtY29tcGF0IgorCitGSUxFU18ke1BOfS1nbGliYy1jb21wYXQgKz0gIlwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYy5zby42ICR7bGliZGlyfS9saWJjcnlwdC5zby4xIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZGwuc28uMiAke2xpYmRpcn0vbGlibS5zby42IFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHRocmVhZC5zby4wICR7bGliZGlyfS9saWJyZXNvbHYuc28uMiBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnJ0LnNvLjEgJHtsaWJkaXJ9L2xpYnV0aWwuc28uMSBcCisgICAgICAgICAgICAgICAgJHtHTElCQ19MRFNPfSBcCisgICAgICAgICAgICAgICAgIgorCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImxpbnV4LWxpYmMtaGVhZGVycy1kZXYgYnNkLWhlYWRlcnMtZGV2IGxpYnNzcC1ub25zaGFyZWQtc3RhdGljZGV2IgogUlBST1ZJREVTXyR7UE59LWRldiArPSAibGliYy1kZXYgdmlydHVhbC1saWJjLWRldiIKIFJQUk9WSURFU18ke1BOfSArPSAibGRkIGxpYnNlZ2ZhdWx0IHJ0bGQoR05VX0hBU0gpIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLXRpYy1oYW5nLnBhdGNoCmluZGV4IDRhOTcwNTYuLmY5OGE5NDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLXRpYy1oYW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLXRpYy1oYW5nLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSBhOTU1OTBmNjc2MjA5ODMyZmUwYjI3MjI2ZTZkZTNjYjUwZTJiOTdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxNjhiYTdhNjgxYmU3M2FjMDI0NDM4ZTMzZTE0ZmRlMWQ1YWVhOTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxNDozMTo1MSArMDgwMAorRGF0ZTogRnJpLCAzMCBNYXIgMjAxOCAxMDowMjoyNCArMDgwMAogU3ViamVjdDogW1BBVENIIDEvMl0gdGljIGhhbmcKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQpAQCAtMTAsMzQgKzEwLDM0IEBACiAKIFNpZ25lZC1vZmYtYnk6IGFub255bW91cwogCi1SZWJhc2UgdG8gNi4wKzIwMTcwNzE1CitSZWJhc2UgdG8gNi4xCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBtaXNjL3Rlcm1pbmZvLnNyYyB8IDExICsrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21pc2MvdGVybWluZm8uc3JjIGIvbWlzYy90ZXJtaW5mby5zcmMKLWluZGV4IGVlM2ZhYjMuLjE3NmQ1OTMgMTAwNjQ0CitpbmRleCA4NGY0ODEwLi42YjM4NWVjIDEwMDY0NAogLS0tIGEvbWlzYy90ZXJtaW5mby5zcmMKICsrKyBiL21pc2MvdGVybWluZm8uc3JjCi1AQCAtNTE3NywxMiArNTE3NywxMSBAQCBrb25zb2xlLXhmM3h8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ym9hcmQgZm9yIFhGcmVlODYgMy54IHh0ZXJtLAotICMgVGhlIHZhbHVlIGZvciBrYnMgcmVmbGVjdHMgbG9jYWwgY3VzdG9taXphdGlvbiByYXRoZXIgdGhhbiB0aGUgc2V0dGluZ3MgdXNlZAotICMgZm9yIFhGcmVlODYgeHRlcm0uCitAQCAtNTU2MiwxMiArNTU2MiwxMSBAQCBrb25zb2xlLXhmM3h8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ym9hcmQgZm9yIFhGcmVlODYgMy54IHh0ZXJtLAorICMgVGhlIHZhbHVlIGZvciBrYnMgKHNlZSBrb25zb2xlLXZ0MTAwKSByZWZsZWN0cyBsb2NhbCBjdXN0b21pemF0aW9uIHJhdGhlcgorICMgdGhhbiB0aGUgc2V0dGluZ3MgdXNlZCBmb3IgWEZyZWU4NiB4dGVybS4KICBrb25zb2xlLXhmNHh8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ym9hcmQgZm9yIFhGcmVlODYgNC54IHh0ZXJtLAogLQlrZW5kPVxFT0YsIGtob21lPVxFT0gsIHVzZT1rb25zb2xlK3BjZmtleXMsCiAtCXVzZT1rb25zb2xlLXZ0MTAwLAotLSMgS29uc29sZSBkb2VzIG5vdCBpbXBsZW1lbnQgc2hpZnRlZCBjdXJzb3Ita2V5cy4KKy0KIC1rb25zb2xlK3BjZmtleXN8a29uc29sZSBzdWJzZXQgb2YgeHRlcm0rcGNma2V5cywKLS0Ja0xGVEAsIGtSSVRALCBrY2J0PVxFW1osIGtpbmRALCBrcmlALCBrRE5ALCBrVVBALCB1c2U9eHRlcm0rcGNjMiwKLS0JdXNlPXh0ZXJtK3BjZjAsCistCWtjYnQ9XEVbWiwgdXNlPXh0ZXJtK3BjYzIsIHVzZT14dGVybStwY2YwLAorLQl1c2U9eHRlcm0rcGNlMiwKICsJa2VuZD1cRU9GLCBrZjE9XEVPUCwga2YxMz1cRU8yUCwga2YxND1cRU8yUSwga2YxNT1cRU8yUiwKICsJa2YxNj1cRU8yUywga2YxNz1cRVsxNTsyfiwga2YxOD1cRVsxNzsyfiwga2YxOT1cRVsxODsyfiwKICsJa2YyPVxFT1EsIGtmMjA9XEVbMTk7Mn4sIGtmMjE9XEVbMjA7Mn4sIGtmMjI9XEVbMjE7Mn4sCiArCWtmMjM9XEVbMjM7Mn4sIGtmMjQ9XEVbMjQ7Mn4sIGtmMz1cRU9SLCBrZjQ9XEVPUywKICsJa2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUtdnQxMDAsCisgCisgIyBPYnNvbGV0ZTogdnQxMDAua2V5bWFwCiAgIyBLREUncyAidnQxMDAiIGtleWJvYXJkIGhhcyBubyByZWxhdGlvbnNoaXAgdG8gYW55IHRlcm1pbmFsIHRoYXQgREVDIG1hZGUsIGJ1dAotICMgaXQgaXMgc3RpbGwgdXNlZnVsIGZvciBkZXJpdmluZyB0aGUgb3RoZXIgZW50cmllcy4KLSBrb25zb2xlLXZ0MTAwfEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIHZ0MTAwIChzaWMpIGtleWJvYXJkLAogLS0gCiAxLjguMy4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCmluZGV4IGM0N2NlNmEuLjU3MjE5NTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTM5Yzk5NGYzNzU2YzJkNmQzY2FiMmU2YTA0ZDA1ZmE3YzJiMWQ1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmE1M2MwM2ZmYTkwZjAwNTBhOTQ5ZmM1OTIwZjBkZjNlNjY4ZmY0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTQ6NDU6MjcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAyLzJdIGNvbmZpZ3VyZTogcmVwcm9kdWNpYmxlCkBAIC0xMCw3ICsxMCw3IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CiAKLVJlYmFzZSB0byBSZWJhc2UgdG8gNi4wKzIwMTcwNzE1CitSZWJhc2UgdG8gNi4xCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDdkN2QyYzEuLmY0NDQzNTQgMTAwNzU1CitpbmRleCBhZGVhZDkyLi5mYTRmZGI3IDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC00NDU4LDcgKzQ0NTgsNyBAQCBpZiB0ZXN0ICIke2NmX2N2X2FyX2ZsYWdzK3NldH0iID0gc2V0OyB0aGVuCitAQCAtNDUwMyw3ICs0NTAzLDcgQEAgaWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgogIGVsc2UKICAKICAJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jCmluZGV4IDAxZTQxZDUuLjk5ZmM0NzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKQEAgLTg3LDYgKzg3LDcgQEAKIAkgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1oYWNrIFwKIAkJJHtFWENPTkZJR19BUkdTfSBcCiAJICAgICAgICAtLXdpdGgtbWFucGFnZS1mb3JtYXQ9bm9ybWFsIFwKKwkgICAgICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAogCSAgICAgICAgIiRAIiB8fCByZXR1cm4gMQogCWNkIC4uCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzExMjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzExMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNGI5NmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcxMTI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBuY3Vyc2VzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAotIgotIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgotU1JDUkVWID0gIjVkODQ5ZTgzNjA1MjQ1OTkwMWNmZTBiODVhMGIyOTM5ZmY4ZDJiMmEiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTgwNjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTgwNjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZmFmN2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjErMjAxODA2MzAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBuY3Vyc2VzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAorIgorIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgorU1JDUkVWID0gImQzYjI5MTgwYWU0MzYwZDdhYjdhNDFhMTVlOTYzMjk5ZmRiNzJlMzMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3MvZml4LXJzNjAwMC1jcnQwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3MvZml4LXJzNjAwMC1jcnQwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMjBmYjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zcy9maXgtcnM2MDAwLWNydDAucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlICBbT0UtU3BlY2lmaWNdCisKK01ha2UgaW5zdGFsbCB0cmllcyB0byBwZXJmb3JtIGluc3RhbGwgZm9yIGFsbCB2YXJpYW50cywgYnV0IHNvbWUgb2YgdGhlbSB1c2UgdGhlIHNhbWUKK25hbWUgZm9yIGNydDAgaW4gc3BlY2lmaWMsIHNvIHBlcmZvcm1pbmcgYWxsIG9mIHRoZW0gcmVzdWx0cyBpbiBhbiBlcnJvciBkdXJpbmcKK2RvX2luc3RhbGwsIHdlIHNpbXBseSBtb2RpZnkgdGhlIG5hbWUgb2YgdGhlIG9iamVjdHMgc28gdGhlIGluc3RhbGxhdGlvbiBjYW4gcHJvY2VlZAorYW5kIGxlYXZlIGl0IHRvIHRoZSB1c2VyIHRvIHNlbGVjdCB3aGljaCBvYmplY3QgZmlsZXMgdG8gdXNlLgorCitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvIDxhbGVqYW5kckB4aWxpbnguY29tPgorCitJbmRleDogbmV3bGliLTMuMC4wL2xpYmdsb3NzL3JzNjAwMC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ld2xpYi0zLjAuMC5vcmlnL2xpYmdsb3NzL3JzNjAwMC9NYWtlZmlsZS5pbgorKysrIG5ld2xpYi0zLjAuMC9saWJnbG9zcy9yczYwMDAvTWFrZWZpbGUuaW4KK0BAIC0zNTgsNyArMzU4LDcgQEAgaW5zdGFsbC1zaW06CisgCXNldCAtZTsgZm9yIHggaW4gJHtTSU1fQ1JUMH0gJHtTSU1fQlNQfSAke1NJTV9TQ1JJUFRTfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS8kJHg7IGRvbmUKKyAKKyBpbnN0YWxsLW12bWU6CistCXNldCAtZTsgZm9yIHggaW4gJHtNVk1FX0NSVDB9ICR7TVZNRV9CU1B9ICR7TVZNRV9TQ1JJUFRTfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS8kJHg7IGRvbmUKKysJc2V0IC1lOyBmb3IgeCBpbiAke01WTUVfQ1JUMH0gJHtNVk1FX0JTUH0gJHtNVk1FX1NDUklQVFN9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9L212bWUtJCR4OyBkb25lCisgCisgaW5zdGFsbC1zb2xhcmlzOgorIAlzZXQgLWU7IGZvciB4IGluICR7U09MQVJJU19DUlQwfSAke1NPTEFSSVNfQlNQfSAke1NPTEFSSVNfU0NSSVBUU307IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCitAQCAtMzY3LDE1ICszNjcsMTUgQEAgaW5zdGFsbC1saW51eDoKKyAJc2V0IC1lOyBmb3IgeCBpbiAke0xJTlVYX0NSVDB9ICR7TElOVVhfQlNQfSAke0xJTlVYX1NDUklQVFN9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9LyQkeDsgZG9uZQorIAorIGluc3RhbGwteWVsbG93a25pZmU6CistCXNldCAtZTsgZm9yIHggaW4gJHtZRUxMT1dLTklGRV9DUlQwfSAke1lFTExPV0tOSUZFX0JTUH07IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisrCXNldCAtZTsgZm9yIHggaW4gJHtZRUxMT1dLTklGRV9DUlQwfSAke1lFTExPV0tOSUZFX0JTUH07IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0veWVsbG93a25pZmUtJCR4OyBkb25lCisgCXNldCAtZTsgZm9yIHggaW4gJHtZRUxMT1dLTklGRV9TQ1JJUFRTfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQoc3JjZGlyKS8kJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisgCisgaW5zdGFsbC1hZHM6CistCXNldCAtZTsgZm9yIHggaW4gJHtBRFNfQ1JUMH0gJHtBRFNfQlNQfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS8kJHg7IGRvbmUKKysJc2V0IC1lOyBmb3IgeCBpbiAke0FEU19DUlQwfSAke0FEU19CU1B9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9L2Fkcy0kJHg7IGRvbmUKKyAJc2V0IC1lOyBmb3IgeCBpbiAke0FEU19TQ1JJUFRTfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQoc3JjZGlyKS8kJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisgCisgaW5zdGFsbC1tYng6CistCXNldCAtZTsgZm9yIHggaW4gJHtNQlhfQ1JUMH0gJHtNQlhfQlNQfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS8kJHg7IGRvbmUKKysJc2V0IC1lOyBmb3IgeCBpbiAke01CWF9DUlQwfSAke01CWF9CU1B9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9L21ieC0kJHg7IGRvbmUKKyAJc2V0IC1lOyBmb3IgeCBpbiAke01CWF9TQ1JJUFRTfSAke01CWF9TUEVDU307IGRvICR7SU5TVEFMTF9EQVRBfSAkKHNyY2RpcikvJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9LyQkeDsgZG9uZQorIAorIGluc3RhbGwteGlsOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3MvZml4X21ha2VmaWxlX2luY2x1ZGVfYXJtX2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zcy9maXhfbWFrZWZpbGVfaW5jbHVkZV9hcm1faC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjQ1YmU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3MvZml4X21ha2VmaWxlX2luY2x1ZGVfYXJtX2gucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlICBbT0UtU3BlY2lmaWNdCisKK1doZW4gdHJ5aW5nIHRvIGJ1aWxkIGxpYmdsb3NzIGZvciBhbiBhcm0gdGFyZ2V0LCB0aGUgYnVpbGQgc3lzdGVtCitjb21wbGFpbnMgYWJvdXQgbWlzc2luZyBzb21lIGluY2x1ZGUgZmlsZXM6CisKK3wgZmF0YWwgZXJyb3I6IGFjbGUtY29tcGlhdC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8ICAjaW5jbHVkZSAiYWNsZS1jb21wYXQuaCIKK3wgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fgorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorCitUaGVzZSBpbmNsdWRlIGZpbGVzIGNvbWUgZnJvbSB0aGUgbmV3bGliIHNvdXJjZSwgYnV0IHNpbmNlIHdlCithcmUgYnVpbGRpbmcgbGliZ2xvc3Mgc2VwYXJhdGVseSBmcm9tIG5ld2xpYiwgbGliZ2xvc3MgaXMgdW5hd2FyZQorb2Ygd2hlcmUgdGhleSBhcmUsIHRoaXMgcGF0Y2ggZml4ZXMgdGhlIElOQ0xVREVTIHNvIHRoZSBidWlsZCBzeXN0ZW0KK2NhbiBmaW5kIHN1Y2ggZmlsZXMuCisKK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gPGFsZWphbmRyQHhpbGlueC5jb20+CisKK0luZGV4OiBuZXdsaWItMy4wLjAvbGliZ2xvc3MvY29uZmlnL2RlZmF1bHQubWgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXdsaWItMy4wLjAub3JpZy9saWJnbG9zcy9jb25maWcvZGVmYXVsdC5taAorKysrIG5ld2xpYi0zLjAuMC9saWJnbG9zcy9jb25maWcvZGVmYXVsdC5taAorQEAgLTEsNyArMSw3IEBACisgTkVXTElCX0NGTEFHUyA9IGBpZiBbIC1kICR7b2Jqcm9vdH0vbmV3bGliIF07IHRoZW4gZWNobyAtSSR7b2Jqcm9vdH0vbmV3bGliL3RhcmctaW5jbHVkZSAtSSR7c3Jjcm9vdH0vbmV3bGliL2xpYmMvaW5jbHVkZTsgZmlgCisgTkVXTElCX0xERkxBR1MgPSBgaWYgWyAtZCAke29ianJvb3R9L25ld2xpYiBdOyB0aGVuIGVjaG8gLUIke29ianJvb3R9L25ld2xpYi8gLUwke29ianJvb3R9L25ld2xpYi87IGZpYAorIAorLUlOQ0xVREVTID0gLUkuIC1JJChzcmNkaXIpLy4uCisrSU5DTFVERVMgPSAtSS4gLUkkKHNyY2RpcikvLi4gLUkkKHNyY2RpcikvLi4vbmV3bGliL2xpYmMvbWFjaGluZS9hcm0KKyAjIE5vdGUgdGhhdCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCAke01VTFRJTElCfSBpcyBub3QgdGhlIHdheSBtdWx0aWxpYgorICMgb3B0aW9ucyBhcmUgcGFzc2VkOyB0aGV5J3JlIHBhc3NlZCBpbiAkKENGTEFHUykuCisgQ0ZMQUdTX0ZPUl9UQVJHRVQgPSAtTzIgLWcgJHtNVUxUSUxJQn0gJHtJTkNMVURFU30gJHtORVdMSUJfQ0ZMQUdTfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWVkMzBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4wLjAuYmIKQEAgLTAsMCArMSwzMyBAQAorcmVxdWlyZSBuZXdsaWIuaW5jCisKK0RFUEVORFMgKz0gIm5ld2xpYiIKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vbGliZ2xvc3M6IgorCitTUkNfVVJJX2FwcGVuZF9wb3dlcnBjID0gIiBmaWxlOi8vZml4LXJzNjAwMC1jcnQwLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfYXJtID0gIiBmaWxlOi8vZml4X21ha2VmaWxlX2luY2x1ZGVfYXJtX2gucGF0Y2giCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkke1N9L2xpYmdsb3NzL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgaW5zdGFsbCBkb2Vzbid0IGNyZWF0ZSB0aGlzIGl0c2VsZiwgYXZvaWQgaW5zdGFsbCBlcnJvcgorCWluc3RhbGwgLWQgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgbGlicyB0byBkZWZhdWx0IGRpcmVjdG9yaWVzIHNvIHRoZXkgY2FuIGJlIHBpY2tlZCB1cCBsYXRlcgorCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorCW12IC12ICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9saWIvKiAke0R9JHtsaWJkaXJ9CisKKwkjIFJlbW92ZSBvcmlnaW5hbCBkaXJlY3RvcnkKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vbGliCit9CisKKyMgU3BsaXQgcGFja2FnZXMgY29ycmVjdGx5CitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoubGQgJHtsaWJkaXJ9Lyouc3BlY3MiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jcHUtaW5pdC8qIgorCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKK0lOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk3YzdjMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJOZXdsaWIgaXMgYSBDIGxpYnJhcnkgaW50ZW5kZWQgZm9yIHVzZSBvbiBlbWJlZGRlZCBzeXN0ZW1zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9uZXdsaWIvIgorREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGludGVuZGVkIGZvciB1c2Ugb24gZW1iZWRkZWQgc3lzdGVtcy4gSXQgaXMgYSBjb25nbG9tZXJhdGlvbiBvZiBzZXZlcmFsIGxpYnJhcnkgcGFydHMsIGFsbCB1bmRlciBmcmVlIHNvZnR3YXJlIGxpY2Vuc2VzIHRoYXQgbWFrZSB0aGVtIGVhc2lseSB1c2FibGUgb24gZW1iZWRkZWQgcHJvZHVjdHMuIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzICYgR1BMdjMgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisJCWZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisJCWZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKwkJZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisJCWZpbGU6Ly9DT1BZSU5HLkxJQkdMT1NTO21kNT03M2Y1Yzk4Nzc5YWVhN2RiYTRhNmM5NGE3NGFiMGFlMiBcCisJCWZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorCQlmaWxlOi8vQ09QWUlORy5ORVdMSUI7bWQ1PTk1NmE0YjE0ODdmNzY3N2NkY2NlZWVlOGYwNWEyMWYwIFwKKwkJZmlsZTovL25ld2xpYi9saWJjL3Bvc2l4L0NPUFlSSUdIVDttZDU9MTAzNDY4ZmYxOTgyYmU4NDBmZGY0ZWU5ZjhiNTFiYmYgXAorCQlmaWxlOi8vbmV3bGliL2xpYmMvc3lzL2xpbnV4L2xpbnV4dGhyZWFkcy9MSUNFTlNFO21kNT03MzY0MDIwN2ZiYzc5YjE5OGM3ZmZkNGFkNGQ5N2FhMCBcCisJCSIKKworU1JDX1VSSSA9ICJmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvbmV3bGliL25ld2xpYi0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiODFlYzg3MzEwOGI4NTkzYzU4NmY5MWNhNjU5NjM5NTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzg1NjYzMzVlZTc0ZTVmY2FlYjg1OTViNGViZDA0MDBjNGIwNDNkNmFjYjMyNjNlY2IxMzE0ZjhmNTUwMTMzMiIKKworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK0RFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwiCisKK1BBVEhfcHJlcGVuZCA9ICIke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0uJHtTVEFHSU5HQ0N9OiIKK1NUQUdJTkdDQyA9ICJnY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKK1NUQUdJTkdDQ19jbGFzcy1uYXRpdmVzZGsgPSAiZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfU1lTfSIKKworUyA9ICIke1dPUktESVJ9L25ld2xpYi0ke1BWfSIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworIyMgZGlzYWJsZSBzdGRsaWIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZCA9ICIgLW5vc3RkbGliIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLWJ1aWxkPSR7QlVJTERfU1lTfSAgXAorICAgICAgICAgICAgICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAorCQktLWhvc3Q9JHtIT1NUX1NZU30gXAorICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAgXAorICAgICAgICAgICAgICAgIC0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0gXAorICAgICAgICAgICAgICAgIC0tYmluZGlyPSR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSBcCisJCS0tZW5hYmxlLWxhbmd1YWdlcz1jIFwKKwkJLS13aXRoLW5ld2xpYiBcCisJCS0td2l0aC1nbnUtYXMgXAorCQktLXdpdGgtZ251LWxkIFwKKwkJLS1kaXNhYmxlLW11bHRpbGliIFwKKwkJIgorCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPScke0R9JworfQorCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX2xpYmMtZ2xpYmNfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyMzhmZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjAuMC5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIG5ld2xpYi5pbmMKKworUFJPVklERVMgKz0gInZpcnR1YWwvbGliYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWZvci1nY2MgdmlydHVhbC9saWJpY29udiB2aXJ0dWFsL2xpYmludGwiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBNb3ZlIGluY2x1ZGUgZmlsZXMgYW5kIGxpYnMgdG8gZGVmYXVsdCBkaXJlY3RvcmllcyBzbyB0aGV5IGNhbiBiZSBwaWNrZWQgdXAgbGF0ZXIKKwltdiAtdiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vbGliICR7RH0ke2xpYmRpcn0KKwltdiAtdiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vaW5jbHVkZSAke0R9JHtpbmNsdWRlZGlyfQorCisJIyBSZW1vdmUgb3JpZ2luYWwgZGlyZWN0b3J5CisJcm1kaXIgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9Cit9CisKKyMgTm8gcnBtIHBhY2thZ2UgaXMgYWN0dWFsbHkgY3JlYXRlZCBidXQgLWRldiBkZXBlbmRzIG9uIGl0LCBhdm9pZCBkbmYgZXJyb3IKK1JERVBFTkRTXyR7UE59LWRldl9saWJjLW5ld2xpYiA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKaW5kZXggZTU3ZmEwOS4uZDJlY2I2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgpAQCAtNDMsNyArNDMsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZT0idXRpbC1saW51eC1uYXRpdmUgaWFzbC1uYXRpdmUgb3NzcC11dWlkLW5hdGl2ZSBxZW11LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlPSJ1dGlsLWxpbnV4LW5hdGl2ZSBpYXNsLW5hdGl2ZSBxZW11LW5hdGl2ZSIKIAogREVQRU5EU19jbGFzcy10YXJnZXQ9Im92bWYtbmF0aXZlIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCmluZGV4IGUyZjYxNjkuLjRiZjBhYzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCkBAIC0yMSwxMCArMjEsMTEgQEAKICAgICBuYXRpdmVzZGstYXV0b21ha2UgXAogICAgIG5hdGl2ZXNkay1zaGFkb3cgXAogICAgIG5hdGl2ZXNkay1tYWtlZGV2cyBcCi0gICAgbmF0aXZlc2RrLWRuZiBcCiAgICAgbmF0aXZlc2RrLWNtYWtlIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnbmF0aXZlc2RrLXdheWxhbmQnLCAnJywgZCl9IFwKICAgICBuYXRpdmVzZGstc2RrLXByb3ZpZGVzLWR1bW15IFwKKyAgICBuYXRpdmVzZGstYmlzb24gXAorICAgIG5hdGl2ZXNkay1mbGV4IFwKICAgICAiCiAKIFJERVBFTkRTXyR7UE59X2RhcndpbiA9ICJcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKaW5kZXggYmIxOTJhZS4uNDQyMjAxYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzZS5iYgpAQCAtMjg5LDcgKzI4OSw3IEBACiAjCiBTVU1NQVJZX3BhY2thZ2Vncm91cC1iYXNlLXdpZmkgPSAiV2lGaSBzdXBwb3J0IgogUkRFUEVORFNfcGFja2FnZWdyb3VwLWJhc2Utd2lmaSA9ICJcCi0gICAgJHtWSVJUVUFMLVJVTlRJTUVfd2lyZWxlc3MtdG9vbHN9IFwKKyAgICBpdyBcCiAgICAgd3BhLXN1cHBsaWNhbnQiCiAKIFJSRUNPTU1FTkRTX3BhY2thZ2Vncm91cC1iYXNlLXdpZmkgPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgppbmRleCA3NmNkN2ZjLi44ZGM0NDVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgpAQCAtNDYsNCArNDYsNSBAQAogICAgICR7TUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFN9IgogCiBSUkVDT01NRU5EU18ke1BOfSA9ICJcCisgICAgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscy1zeXNsb2d9IFwKICAgICAke01BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zdGFuZGFsb25lLXNkay10YXJnZXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0LmJiCmluZGV4IDQzZmM1OTkuLmY1YjJkNjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zdGFuZGFsb25lLXNkay10YXJnZXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYgpAQCAtMTMsNyArMTMsNyBAQAogICAgICR7TElCQ19ERVBFTkRFTkNJRVN9IFwKICAgICAiCiAKLVJSRUNPTU1FTkRTXyR7UE59ID0gIlwKK1JSRUNPTU1FTkRTXyR7UE59X21pbmd3MzIgPSAiXAogICAgIGxpYnNzcCBcCiAgICAgbGlic3NwLWRldiBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgppbmRleCBmYTBlMzYzLi4zM2Q5YzA5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMTgsNyArMTgsNiBAQAogCiBSUkVDT01NRU5EU18ke1BOfSA9ICJcCiAgICAgJHtQRVJGfSBcCi0gICAgdHJhY2UtY21kIFwKICAgICBibGt0cmFjZSBcCiAgICAgJHtQUk9GSUxFX1RPT0xTX1h9IFwKICAgICAke1BST0ZJTEVfVE9PTFNfU1lTVEVNRH0gXApAQCAtMzQsNiArMzMsNyBAQAogU1lTVEVNVEFQID0gInN5c3RlbXRhcCIKIFNZU1RFTVRBUF9saWJjLW11c2wgPSAiIgogU1lTVEVNVEFQX25pb3MyID0gIiIKK1NZU1RFTVRBUF9yaXNjdjY0ID0gIiIKIAogIyBsdHRuZy11c3QgdXNlcyBzY2hlZF9nZXRjcHUoKSB3aGljaCBpcyBub3QgdGhlcmUgb24gZm9yIHNvbWUgcGxhdGZvcm1zLgogTFRUTkdVU1QgPSAibHR0bmctdXN0IgpAQCAtNDUsNiArNDUsNyBAQAogTFRUTkdUT09MU19yaXNjdjY0ID0gIiIKIAogTFRUTkdNT0RVTEVTID0gImx0dG5nLW1vZHVsZXMiCitMVFROR01PRFVMRVNfcmlzY3Y2NCA9ICIiCiAKIEJBQkVMVFJBQ0UgPSAiYmFiZWx0cmFjZSIKIApAQCAtNTQsMTIgKzU1LDE1IEBACiBWQUxHUklORF9saWJjLW11c2wgPSAiIgogVkFMR1JJTkRfbWlwc2FyY2ggPSAiIgogVkFMR1JJTkRfbmlvczIgPSAiIgorVkFMR1JJTkRfYXJjID0gIiIKIFZBTEdSSU5EX2FybXY0ID0gIiIKIFZBTEdSSU5EX2FybXY1ID0gIiIKIFZBTEdSSU5EX2FybXY2ID0gIiIKIFZBTEdSSU5EX2FybWViID0gIiIKIFZBTEdSSU5EX2FhcmNoNjQgPSAiIgorVkFMR1JJTkRfcmlzY3Y2NCA9ICIiCiBWQUxHUklORF9saW51eC1nbnV4MzIgPSAiIgorVkFMR1JJTkRfbGludXgtZ251bjMyID0gIiIKIAogUkRFUEVORFNfJHtQTn0gPSAiXAogICAgICR7UFJPRklMRVRPT0xTfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIKaW5kZXggYjhlNTA3MC4uNjQzMjE5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgpAQCAtMTUsNiArMTUsMTAgQEAKIEtFWEVDVE9PTFNfZTU1MDAtNjRiID89ICIiCiBLRVhFQ1RPT0xTX21pY3JvYmxhemUgPz0gIiIKIEtFWEVDVE9PTFNfbmlvczIgPz0gIiIKK0tFWEVDVE9PTFNfcmlzY3Y2NCA/PSAiIgorCitHU1RFWEFNUExFUyA/PSAiZ3N0LWV4YW1wbGVzIgorR1NURVhBTVBMRVNfcmlzY3Y2NCA9ICIiCiAKIFgxMUdMVE9PTFMgPSAiXAogICAgIG1lc2EtZGVtb3MgXApAQCAtMjUsOCArMjksNyBAQAogICAgICIKIAogWDExVE9PTFMgPSAiXAotICAgIGZzdGVzdHMgXAotICAgIGdzdC1leGFtcGxlcyBcCisgICAgJHtHU1RFWEFNUExFU30gXAogICAgIHgxMXBlcmYgXAogICAgIHhyZXN0b3AgXAogICAgIHh3aW5pbmZvIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgppbmRleCA3ZDJjY2JkLi41YWZiNDkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCkBAIC03LDMgKzcsNSBAQAogICAgIGdvLXJ1bnRpbWUtZGV2IFwKICAgICBnby1ydW50aW1lLXN0YXRpY2RldiBcCiAiCisKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hcmlzY3Y2NCkuKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IGFkYjBjNTYuLjlhNjcyMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgpAQCAtNzYsMjQgKzc2LDI2IEBACiAgICAgaW50bHRvb2wgXAogICAgIGxkZCBcCiAgICAgbGVzcyBcCi0gICAgbGlic3NwIFwKLSAgICBsaWJzc3AtZGV2IFwKLSAgICBsaWJzc3Atc3RhdGljZGV2IFwKICAgICBsaWJzdGRjKysgXAogICAgIGxpYnN0ZGMrKy1kZXYgXAogICAgIGxpYnRvb2wgXAogICAgIG1ha2UgXAotICAgIG1rdGVtcCBcCiAgICAgcGVybC1tb2R1bGUtcmUgXAogICAgIHBlcmwtbW9kdWxlLXRleHQtd3JhcCBcCiAgICAgcGtnY29uZmlnIFwKICAgICBxdWlsdCBcCiAgICAgc2VkIFwKICAgICAiCi0jIGdsaWJjLXV0aWxzOiBmb3IgcnBjZ2VuCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQtc2RrX2FwcGVuZF9taW5ndzMyID0gIlwKKyAgICBsaWJzc3AgXAorICAgIGxpYnNzcC1kZXYgXAorICAgIGxpYnNzcC1zdGF0aWNkZXYgXAorICAgICIKKyMgcnBjc3ZjLXByb3RvOiBmb3IgcnBjZ2VuCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQtc2RrX2FwcGVuZF9saWJjLWdsaWJjID0gIlwKICAgICBnbGliYy1nY29udi1pYm04NTAgXAogICAgIGdsaWJjLXV0aWxzIFwKKyAgICBycGNzdmMtcHJvdG8gXAogICAgICIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC1kZWJ1ZyA9ICIgXAogICAgIGdkYiBcCkBAIC0xODUsOCArMTg3LDYgQEAKICAgICBsaWJnbC1kZXYgXAogICAgIGxpYmdsdSBcCiAgICAgbGliZ2x1LWRldiBcCi0gICAgbGlic2RsIFwKLSAgICBsaWJzZGwtZGV2IFwKICAgICBsaWJ4MTEtZGV2IFwKICAgICBhZHdhaXRhLWljb24tdGhlbWUgXAogICAgIHhkZy11dGlscyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKaW5kZXggYWFiMmMwMy4uM2FkMWVmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYgpAQCAtNzMsNiArNzMsOCBAQAogCiBweXRob24gZG9fY29tcGlsZSAoKSB7CiAgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IHNobGV4CiAKICAgICAjIEJ1aWxkIGEgc2VwYXJhdGUgZXhlY3V0YWJsZSBmb3IgZWFjaCBzcGxhc2ggaW1hZ2UKICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQpAQCAtODIsOCArODQsNyBAQAogICAgIG91dHB1dGZpbGVzID0gZC5nZXRWYXIoJ1NQTEFTSF9JTlNUQUxMJykuc3BsaXQoKQogICAgIGZvciBsb2NhbGZpbGUsIG91dHB1dGZpbGUgaW4gemlwKGxvY2FsZmlsZXMsIG91dHB1dGZpbGVzKToKICAgICAgICAgaWYgbG9jYWxmaWxlLmVuZHN3aXRoKCIucG5nIik6Ci0gICAgICAgICAgICBvdXRwID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCclcyAlcyBQT0tZJyAlIChjb252ZXJ0c2NyaXB0LCBvcy5wYXRoLmpvaW4od29ya2RpciwgbG9jYWxmaWxlKSkpCi0gICAgICAgICAgICBwcmludChvdXRwWzFdKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHNobGV4LnNwbGl0KCclcyAlcyBQT0tZJyAlIChjb252ZXJ0c2NyaXB0LCBvcy5wYXRoLmpvaW4od29ya2RpciwgbG9jYWxmaWxlKSkpKQogICAgICAgICAgICAgZmJhc2UgPSBvcy5wYXRoLnNwbGl0ZXh0KGxvY2FsZmlsZSlbMF0KICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZSgiJXMtaW1nLmgiICUgZmJhc2UsIGRlc3RmaWxlKQogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkMzg0OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQKLWluaGVyaXQgZGVwbG95Ci0KLUVGSV9DQyA/PSAiJHtDQ30iCi1FWFRSQV9PRU1FU09OICs9ICItRGVmaT10cnVlIFwKLSAgICAgICAgICAgICAgICAgIC1EZ251LWVmaT10cnVlIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgLURtYW49ZmFsc2UgXAotICAgICAgICAgICAgICAgICAgLURlZmktY2M9JyR7RUZJX0NDfScgXAotICAgICAgICAgICAgICAgICAgLURlZmktbGQ9JyR7TER9JyBcCi0gICAgICAgICAgICAgICAgICAiCi0KLSMgaW5zdGFsbCB0byB0aGUgaW1hZ2UgYXMgYm9vdCouZWZpIGlmIGl0cyB0aGUgRUZJX1BST1ZJREVSLAotIyBvdGhlcndpc2UgaW5zdGFsbCBhcyB0aGUgZnVsbCBuYW1lLgotIyBUaGlzIGFsbG93cyBtdWx0aXBsZSBib290bG9hZGVycyB0byBjb2V4aXN0IGluIGEgc2luZ2xlIGltYWdlLgotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpbXBvcnQgcmUKLSAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQotICAgIHByZWZpeCA9ICIiIGlmIGQuZ2V0VmFyKCdFRklfUFJPVklERVInLCBUcnVlKSA9PSAic3lzdGVtZC1ib290IiBlbHNlICJzeXN0ZW1kLSIKLSAgICBpZiB0YXJnZXQgPT0gIng4Nl82NCI6Ci0gICAgICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArICJib290eDY0LmVmaSIKLSAgICBlbHNlOgotICAgICAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyAiYm9vdGlhMzIuZWZpIgotICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0UiLCBzeXN0ZW1kaW1hZ2UpCi0gICAgcHJlZml4ID0gInN5c3RlbWQtIiBpZiBwcmVmaXggPT0gIiIgZWxzZSAiIgotICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYIiwgcHJlZml4KQotfQotCi1GSUxFU18ke1BOfSA9ICIvYm9vdC9FRkkvQk9PVC8ke1NZU1RFTURfQk9PVF9JTUFHRX0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ2aXJ0dWFsL3N5c3RlbWQtYm9vdGNvbmYiCi0KLSMgSW1wb3J0ZWQgZnJvbSB0aGUgb2xkIGd1bW1pYm9vdCByZWNpcGUKLVRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKiktbGludXgiCi1DT01QQVRJQkxFX0hPU1RfeDg2LXgzMiA9ICJudWxsIgotCi1kb19jb21waWxlKCkgewotCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgotCWZpCi0KLQluaW5qYSBzcmMvYm9vdC9lZmkvJHtTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYfSR7U1lTVEVNRF9CT09UX0lNQUdFfQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfS9ib290Ci0JaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJCi0JaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJL0JPT1QKLQlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7RH0vYm9vdC9FRkkvQk9PVC8ke1NZU1RFTURfQk9PVF9JTUFHRX0KLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7REVQTE9ZRElSfQotfQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZlNDIwYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM5LmJiCkBAIC0wLDAgKzEsNjkgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgorCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNi1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBcCisgICAgICAgICAgICAiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGVwbG95CisKK0VGSV9DQyA/PSAiJHtDQ30iCitFWFRSQV9PRU1FU09OICs9ICItRGVmaT10cnVlIFwKKyAgICAgICAgICAgICAgICAgIC1EZ251LWVmaT10cnVlIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgLURtYW49ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLURlZmktY2M9JyR7RUZJX0NDfScgXAorICAgICAgICAgICAgICAgICAgLURlZmktbGQ9JyR7TER9JyBcCisgICAgICAgICAgICAgICAgICAiCisKKyMgaW5zdGFsbCB0byB0aGUgaW1hZ2UgYXMgYm9vdCouZWZpIGlmIGl0cyB0aGUgRUZJX1BST1ZJREVSLAorIyBvdGhlcndpc2UgaW5zdGFsbCBhcyB0aGUgZnVsbCBuYW1lLgorIyBUaGlzIGFsbG93cyBtdWx0aXBsZSBib290bG9hZGVycyB0byBjb2V4aXN0IGluIGEgc2luZ2xlIGltYWdlLgorcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBpbXBvcnQgcmUKKyAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIHByZWZpeCA9ICIiIGlmIGQuZ2V0VmFyKCdFRklfUFJPVklERVInLCBUcnVlKSA9PSAic3lzdGVtZC1ib290IiBlbHNlICJzeXN0ZW1kLSIKKyAgICBpZiB0YXJnZXQgPT0gIng4Nl82NCI6CisgICAgICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArICJib290eDY0LmVmaSIKKyAgICBlbHNlOgorICAgICAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyAiYm9vdGlhMzIuZWZpIgorICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0UiLCBzeXN0ZW1kaW1hZ2UpCisgICAgcHJlZml4ID0gInN5c3RlbWQtIiBpZiBwcmVmaXggPT0gIiIgZWxzZSAiIgorICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYIiwgcHJlZml4KQorfQorCitGSUxFU18ke1BOfSA9ICIvYm9vdC9FRkkvQk9PVC8ke1NZU1RFTURfQk9PVF9JTUFHRX0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJ2aXJ0dWFsL3N5c3RlbWQtYm9vdGNvbmYiCisKKyMgSW1wb3J0ZWQgZnJvbSB0aGUgb2xkIGd1bW1pYm9vdCByZWNpcGUKK1RVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKiktbGludXgiCitDT01QQVRJQkxFX0hPU1RfeDg2LXgzMiA9ICJudWxsIgorCitkb19jb21waWxlKCkgeworCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgorCWZpCisKKwluaW5qYSBzcmMvYm9vdC9lZmkvJHtTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYfSR7U1lTVEVNRF9CT09UX0lNQUdFfQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfS9ib290CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJCisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJL0JPT1QKKwlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7RH0vYm9vdC9FRkkvQk9PVC8ke1NZU1RFTURfQk9PVF9JTUFHRX0KK30KKworZG9fZGVwbG95ICgpIHsKKwlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7REVQTE9ZRElSfQorfQorYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYjI3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mLmJiCkBAIC0wLDAgKzEsNTMgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworU1VNTUFSWSA9ICJTeXN0ZW1kIHN5c3RlbSBjb25maWd1cmF0aW9uIgorREVTQ1JJUFRJT04gPSAiU3lzdGVtZCBtYXkgcmVxdWlyZSBzbGlnaHRseSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBmb3IgXAorZGlmZmVyZW50IG1hY2hpbmVzLiAgRm9yIGV4YW1wbGUsIHFlbXUgbWFjaGluZXMgcmVxdWlyZSBhIGxvbmdlciBcCitEZWZhdWx0VGltZW91dFN0YXJ0U2VjIHNldHRpbmcuIgorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKKyR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKKyR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKKyR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZiBcCiske3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAorJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKKworRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkICR7c3lzY29uZmRpcn0vc3lzdGVtZCIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAnMScKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICcxJworCitkb19pbnN0YWxsKCkgeworCXJtIC1yZiAke0R9LyR7c3lzY29uZmRpcn0vc3lzdGVtZAorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3N5c3RlbWQKKworCSMgQ3JlYXRlIG1hY2hpbmUtaWQKKwkjIDIwOjEyIDwgbWV6Y2FsZXJvPiBrb2VuOiB5b3UgaGF2ZSB0aHJlZSBvcHRpb25zOiBhKSBydW4gc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIGF0IGluc3RhbGwgdGltZSwgYikgaGF2ZSAvIHJlYWQtb25seSBhbmQgYW4gZW1wdHkgZmlsZSB0aGVyZSAoZm9yIHN0YXRlbGVzcykgYW5kIGMpIGJvb3Qgd2l0aCAvIHdyaXRhYmxlCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbWFjaGluZS1pZAorCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2NvcmVkdW1wL2NvcmVkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvam91cm5hbC9qb3VybmFsZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KKwlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisJIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0CisJc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvbG9naW4vbG9naW5kLmNvbmYuaW4gJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZgorCSMgU2V0IEtJTExfVVNFUl9QUk9DRVNTRVMgdG8geWVzCisJc2VkIC1pIC1lICdzL0BLSUxMX1VTRVJfUFJPQ0VTU0VTQC95ZXMvJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvY29yZS9zeXN0ZW0uY29uZi5pbiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mCisJIyBTZXQgTUVNT1JZX0FDQ09VTlRJTkdfREVGQVVMVCB0byB5ZXMKKwlzZWQgLWkgLWUgJ3MvQE1FTU9SWV9BQ0NPVU5USU5HX0RFRkFVTFRAL3llcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYKKworCWluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9jb3JlL3VzZXIuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZgorfQorCisjIEJhc2VkIG9uIGNoYW5nZSBmcm9tIFlQIGJ1ZyA4MTQxLCBPRSBjb21taXQgNTE5NmQ3YmFjYWVmMTA3NmMzNjFhZGFhMjg2N2JlMzE3NTljMWI1MgorZG9faW5zdGFsbF9hcHBlbmRfcWVtdWFsbCgpIHsKKwkjIENoYW5nZSBEZWZhdWx0VGltZW91dFN0YXJ0U2VjIGZyb20gOTBzIHRvIDI0MHMKKwllY2hvICJEZWZhdWx0VGltZW91dFN0YXJ0U2VjID0gMjQwcyIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgppbmRleCBkNjdhM2M5Li42NWE5MzFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgpAQCAtNSw3ICs1LDcgQEAKIAogUFIgPSAicjUiCiAKLVNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5UzAiCitTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCIKIAogU1JDX1VSSSA9ICJmaWxlOi8vc2VyaWFsLWdldHR5QC5zZXJ2aWNlIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKaW5kZXggNWZhNDhlNy4uNzM2ZTBhMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwpAQCAtMTQsNyArMTQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgogCi1TUkNSRVYgPSAiNDY2NTlmN2RlYjk2MmY1NWM3MjhlNzA1OTdlMzdjMmEzYWI2MzI2ZCIKK1NSQ1JFViA9ICJkZTc0MzZiMDJiYWRjODIyMDBkYzEyN2ZmMTkwYjgxNTU3NjliOGU3IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLmdpdDtwcm90b2NvbD1naXQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzdiYjFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDNlOGMxOWJiMWJiYzQ0OTNjNTkxZjc1YzAwYzFmZWZlM2IxYzhhNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDIwOjQyOjQxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFsc28gY2hlY2sgaTM4NiwgaTU4NiBhbmQgaTY4NiBmb3IgaWEzMgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAyOGNiOGI2MGUuLjQ4OTUzMWE0MyAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTEyMTcsNyArMTIxNyw3IEBAIGNvbmYuc2V0MTAoJ1NZU1RFTURfU0xPV19URVNUU19ERUZBVUxUJywgc2xvd190ZXN0cykKLSBpZiBnZXRfb3B0aW9uKCdlZmknKQotICAgICAgICAgZWZpX2FyY2ggPSBob3N0X21hY2hpbmUuY3B1X2ZhbWlseSgpCi0gCi0tICAgICAgICBpZiBlZmlfYXJjaCA9PSAneDg2JwotKyAgICAgICAgaWYgZWZpX2FyY2ggPT0gJ3g4Nicgb3IgZWZpX2FyY2ggPT0gJ2kzODYnIG9yIGVmaV9hcmNoID09ICdpNTg2JyBvciBlZmlfYXJjaCA9PSAnaTY4NicKLSAgICAgICAgICAgICAgICAgRUZJX01BQ0hJTkVfVFlQRV9OQU1FID0gJ2lhMzInCi0gICAgICAgICAgICAgICAgIGdudV9lZmlfYXJjaCA9ICdpYTMyJwotICAgICAgICAgZWxpZiBlZmlfYXJjaCA9PSAneDg2XzY0JwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNmZmM0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNjg3YTVhZjhkYzVkMzhmOTE4YTZjZTA4ZmVkNTI5NzIzNGJmODM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIgTWFyIDIwMTggMTg6MDA6MTcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gSGlkZSBfX3N0YXJ0X0JVU19FUlJPUl9NQVAgYW5kIF9fc3RvcF9CVVNfRVJST1JfTUFQCi0KLWZvciBjdXJyZW50bHkgdW5rbm93biByZWFzb25zIHRoZXkgZ2V0IGV4cG9ydGVkIHRvIHRoZSBzaGFyZWQgbGlicmllcwotZXZlbiB3aXRob3V0IGJlaW5nIGxpc3RlZCBpbiB0aGUgc3ltIGZpbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBDb25kaXRpb25hbCBvbiBtYXN0ZXIgbmVlZGluZyB0aGlzLCAyMzQgZG9lcyBuZWVkIGl0IF0KLQotIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKLWluZGV4IDM3OGY3YTM3Ny4uNDlkNzk3YWJkIDEwMDY0NAotLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCi0rKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKLUBAIC03MSw4ICs3MSw4IEBAIEJVU19FUlJPUl9NQVBfRUxGX1JFR0lTVEVSIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgYnVzX3N0YW5kYXJkX2Vycm9yc1tdID0gewotIH07Ci0gCi0gLyogR0NDIG1hcHMgdGhpcyBtYWdpY2FsbHkgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBCVVNfRVJST1JfTUFQIHNlY3Rpb24gKi8KLS1leHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0YXJ0X0JVU19FUlJPUl9NQVBbXTsKLS1leHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0b3BfQlVTX0VSUk9SX01BUFtdOwotK2V4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RhcnRfQlVTX0VSUk9SX01BUFtdIF9oaWRkZW5fOwotK2V4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RvcF9CVVNfRVJST1JfTUFQW10gX2hpZGRlbl87Ci0gCi0gLyogQWRkaXRpb25hbCBtYXBzIHJlZ2lzdGVyZWQgd2l0aCBzZF9idXNfZXJyb3JfYWRkX21hcCgpIGFyZSBpbiB0aGlzCi0gICogTlVMTCB0ZXJtaW5hdGVkIGFycmF5ICovCi0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2gKaW5kZXggZTkxM2UzZi4uZDc0NTgwMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZTM2MWY2YjRhZWZhZTU3ZWZmZjdlNDU3ZGY4ZGI0ZDEwNjdiZWMyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWUzODE2YmNhYTM2ZTFhMTE2NDdjYTBjZjRmODA0NDQ0OWM3N2ZlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6NTA6MjMgLTA4MDAKK0RhdGU6IE1vbiwgMiBKdWwgMjAxOCAxNToyODoyMiArMDgwMAogU3ViamVjdDogW1BBVENIXSBSZW1vdmUgZnN0YWNrLXByb3RlY3RvciBmbGFncyB0byB3b3JrYXJvdW5kIG11c2wgYnVpbGQKIAogUmVtb3ZlIGZzdGFjay1wcm90ZWN0b3IgYW5kIGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIGZsYWdzIHRvIGZpeApAQCAtOCw3ICs4LDcgQEAKIAogICB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3N0YWNrX2Noa19mYWlsX2xvY2FsJwogCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIFNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiAtLS0KQEAgLTE2LDE4ICsxNiwxOCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNzYxMGFiMTJiLi41OTFiOWNiYWIgMTAwNjQ0CitpbmRleCBmNDMyZWEwNzIuLmE3MzRhMjk1YyAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTMyOSw4ICszMjksNiBAQCBmb3JlYWNoIGFyZyA6IFsnLVdleHRyYScsCi0gICAgICAgICAgICAgICAgJy1mZGlhZ25vc3RpY3Mtc2hvdy1vcHRpb24nLAotICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZycsCi0gICAgICAgICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4nLAotLSAgICAgICAgICAgICAgICctZnN0YWNrLXByb3RlY3RvcicsCi0tICAgICAgICAgICAgICAgJy1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZycsCi0gICAgICAgICAgICAgICAgJy0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQnLAotICAgICAgICAgICAgICAgXQotICAgICAgICAgaWYgY2MuaGFzX2FyZ3VtZW50KGFyZykKK0BAIC0zMzMsOCArMzMzLDYgQEAgcG9zc2libGVfY2NfZmxhZ3MgPSBbCisgICAgICAgICAnLWZkaWFnbm9zdGljcy1zaG93LW9wdGlvbicsCisgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcnLAorICAgICAgICAgJy1mdmlzaWJpbGl0eT1oaWRkZW4nLAorLSAgICAgICAgJy1mc3RhY2stcHJvdGVjdG9yJywKKy0gICAgICAgICctZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcnLAorICAgICAgICAgJy0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQnLAorIF0KKyAKIC0tIAotMi4xMy4wCisyLjExLjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoCmluZGV4IGY0YzE1ZTEuLjAzZjZlYWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGIxMTkyYTZlMTcxNDEzMjkxZDlkNjRmYWZjMDQ3NzNjNmJiYzljYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkZDEzNjUxMjg5Njk3OWZlYjY4ODNhMTYyMjZkNjQwYTdlNWNhNzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDIzIEZlYiAyMDE4IDEwOjA0OjQ4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMzFdIFVzZSBnZXRlbnYgd2hlbiBzZWN1cmUgdmVyc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUKK1N1YmplY3Q6IFtQQVRDSCAwMS8xOV0gVXNlIGdldGVudiB3aGVuIHNlY3VyZSB2ZXJzaW9ucyBhcmUgbm90IGF2YWlsYWJsZQogCiBtdXNsIGRvZXNudCBpbXBsZW1lbnQgc2VjdXJlIHZlcnNpb24sIHNvIHdlIGRlZmF1bHQKIHRvIGl0IGlmIGNvbmZpZ3VyZSBkb2VzIG5vdCBkZXRlY3QgYSBzZWN1cmUgaW1wbGVtZW50YXRpb24KQEAgLTE2LDEwICsxNiwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDEyODBlNmM0MS4uMzljMWZiNzAwIDEwMDY0NAoraW5kZXggNzFhMDdkMDU3Li4wZTMzYWJiOWYgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtNjA1LDcgKzYwNSw3IEBAIHN0cnVjdCBidHJmc19pb2N0bF9xdW90YV9jdGxfYXJncyB7CitAQCAtNTkyLDcgKzU5Miw3IEBAIHN0cnVjdCBidHJmc19pb2N0bF9xdW90YV9jdGxfYXJncyB7CiAgIyAgaWYgSEFWRV9fX1NFQ1VSRV9HRVRFTlYKICAjICAgIGRlZmluZSBzZWN1cmVfZ2V0ZW52IF9fc2VjdXJlX2dldGVudgogICMgIGVsc2UKQEAgLTI5LDUgKzI5LDUgQEAKICAjZW5kaWYKICAKIC0tIAotMi4xMy4wCisyLjExLjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNGU3ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSA4N2RkNjFiZTJlMjhlNzhjZTRmOWYxNzM3OTQ4MTJlNmMyZDkwNGQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNyBKdW4gMjAxOCAxNjowMToyMiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvOV0gYmluZm10OiBEb24ndCBpbnN0YWxsIGRlcGVuZGVuY3kgbGlua3MgYXQgaW5zdGFsbCB0aW1lIAorIGZvciB0aGUgYmluZm10IHNlcnZpY2VzCisKK3VzZSBbSW5zdGFsbF0gYmxvY2tzIHNvIHRoYXQgdGhleSBnZXQgY3JlYXRlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQKK2xpa2UgYSB0cmFkaXRpb25hbCBzZXJ2aWNlLgorCitUaGUgW0luc3RhbGxdIGJsb2NrcyB3ZXJlIHJlamVjdGVkIHVwc3RyZWFtIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0bworImVuYWJsZSIgaXQgb24gaW5zdGFsbCB3aXRob3V0IHN0YXRpYyBzeW1saW5rcyB3aGljaCBjYW4ndCBiZSBkaXNhYmxlZCwKK29ubHkgbWFza2VkLiBXZSBob3dldmVyIGNhbiBkbyB0aGF0IGluIGEgcG9zdGluc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgdW5pdHMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKy0tLS0KKyB1bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgfCAzICsrKworIHVuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gICAgICAgICB8IDQgKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24uYnVpbGQgYi91bml0cy9tZXNvbi5idWlsZAoraW5kZXggZTRhYzZjZWQ2Li42OTg3MzRlNDQgMTAwNjQ0CistLS0gYS91bml0cy9tZXNvbi5idWlsZAorKysrIGIvdW5pdHMvbWVzb24uYnVpbGQKK0BAIC00Niw4ICs0Niw3IEBAIHVuaXRzID0gWworICAgICAgICAgWydwb3dlcm9mZi50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICdydW5sZXZlbDAudGFyZ2V0J10sCisgICAgICAgICBbJ3ByaW50ZXIudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgJyddLAorLSAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQnLCAgICdFTkFCTEVfQklORk1UJywKKy0gICAgICAgICAnc3lzaW5pdC50YXJnZXQud2FudHMvJ10sCisrICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCcsICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MubW91bnQnLCAgICAgICAnRU5BQkxFX0JJTkZNVCddLAorICAgICAgICAgWydyZWJvb3QudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICdydW5sZXZlbDYudGFyZ2V0IGN0cmwtYWx0LWRlbC50YXJnZXQnXSwKK0BAIC0xMzAsOCArMTI5LDcgQEAgaW5fdW5pdHMgPSBbCisgICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZScsICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlJywgICAgJyddLAorICAgICAgICAgWydzeXN0ZW1kLWJhY2tsaWdodEAuc2VydmljZScsICAgICAgICAgICAnRU5BQkxFX0JBQ0tMSUdIVCddLAorLSAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCcsCistICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAorKyAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCddLAorICAgICAgICAgWydzeXN0ZW1kLWNvcmVkdW1wQC5zZXJ2aWNlJywgICAgICAgICAgICAnRU5BQkxFX0NPUkVEVU1QJ10sCisgICAgICAgICBbJ3N5c3RlbWQtZXhpdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAgICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1maXJzdGJvb3Quc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9GSVJTVEJPT1QnLAorZGlmZiAtLWdpdCBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAoraW5kZXggMzBhNmJjOTkxLi40MjMxZjNiNzAgMTAwNjQ0CistLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKysrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAorQEAgLTE4LDMgKzE4LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KKyAKKyBbQXV0b21vdW50XQorIFdoZXJlPS9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYworKworK1tJbnN0YWxsXQorK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CitkaWZmIC0tZ2l0IGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KK2luZGV4IGU5NDBjN2M5YS4uNmJlN2Y1Y2M5IDEwMDY0NAorLS0tIGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgorKysrIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgorQEAgLTE0LDYgKzE0LDcgQEAgRG9jdW1lbnRhdGlvbj1odHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9hZG1pbi1ndWlkZS9iaW5mbXQtbWlzYy5odG0KKyBEb2N1bWVudGF0aW9uPWh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvQVBJRmlsZVN5c3RlbXMKKyBEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCisgQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAorK1dhbnRzPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAorIEFmdGVyPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAorIEJlZm9yZT1zeXNpbml0LnRhcmdldCBzaHV0ZG93bi50YXJnZXQKKyBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLworQEAgLTI4LDMgKzI5LDYgQEAgVHlwZT1vbmVzaG90CisgUmVtYWluQWZ0ZXJFeGl0PXllcworIEV4ZWNTdGFydD1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtYmluZm10CisgVGltZW91dFNlYz05MHMKKysKKytbSW5zdGFsbF0KKytXYW50ZWRCeT1zeXNpbml0LnRhcmdldAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jaG93bi1yZWN1cnNpdmUtbGV0LXMtcmV3b3JrLXRoZS1yZWN1cnNpdmUtbG9naWMtdG8tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jaG93bi1yZWN1cnNpdmUtbGV0LXMtcmV3b3JrLXRoZS1yZWN1cnNpdmUtbG9naWMtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMzUwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNob3duLXJlY3Vyc2l2ZS1sZXQtcy1yZXdvcmstdGhlLXJlY3Vyc2l2ZS1sb2dpYy10by0ucGF0Y2gKQEAgLTAsMCArMSwyMTkgQEAKK0Zyb20gMmRhOGJhM2Y1MDczNDVkMDQwMWVhOWQ3MTkxZmExNmZmYTU2MGViYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExlbm5hcnQgUG9ldHRlcmluZyA8bGVubmFydEBwb2V0dGVyaW5nLm5ldD4KK0RhdGU6IEZyaSwgMTkgT2N0IDIwMTggMTE6MjY6NTkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hvd24tcmVjdXJzaXZlOiBsZXQncyByZXdvcmsgdGhlIHJlY3Vyc2l2ZSBsb2dpYyB0byB1c2UKKyBPX1BBVEgKKworVGhhdCB3YXkgd2UgY2FuIHBpbiBhIHNwZWNpZmljIGlub2RlIGFuZCBhbmFseXplIGl0IGFuZCBtYW5pcHVsYXRlIGl0Cit3aXRob3V0IGl0IGJlaW5nIHN3YXBwZWQgb3V0IGJlbmVhdGggb3VyIGhhbmRzLgorCitGaXhlcyBhIHZ1bG5lcmFiaWxpdHkgb3JpZ2luYWxseSBmb3VuZCBieSBKYW5uIEhvcm4gZnJvbSBHb29nbGUuCisKK0NWRS0yMDE4LTE1Njg3CitMUDogIzE3OTY2OTIKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTA3NgorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1ZGU2Y2NlNThiM2U4Yjc5MjM5YjZlODM2NTM0NTlkOTFhZjZlNTdjKQorCitDVkU6IENWRS0yMDE4LTE1Njg3CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9jb3JlL2Nob3duLXJlY3Vyc2l2ZS5jIHwgMTQ2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2Nob3duLXJlY3Vyc2l2ZS5jIGIvc3JjL2NvcmUvY2hvd24tcmVjdXJzaXZlLmMKK2luZGV4IGM0Nzk0NTAuLjI3YzY0NDggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9jaG93bi1yZWN1cnNpdmUuYworKysrIGIvc3JjL2NvcmUvY2hvd24tcmVjdXJzaXZlLmMKK0BAIC0xLDE3ICsxLDE5IEBACisgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xKyAqLworIAorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCistI2luY2x1ZGUgInVzZXItdXRpbC5oIgorLSNpbmNsdWRlICJtYWNyby5oIgorLSNpbmNsdWRlICJmZC11dGlsLmgiCistI2luY2x1ZGUgImRpcmVudC11dGlsLmgiCisgI2luY2x1ZGUgImNob3duLXJlY3Vyc2l2ZS5oIgorKyNpbmNsdWRlICJkaXJlbnQtdXRpbC5oIgorKyNpbmNsdWRlICJmZC11dGlsLmgiCisrI2luY2x1ZGUgIm1hY3JvLmgiCisrI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKysjaW5jbHVkZSAic3Rydi5oIgorKyNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAKKy1zdGF0aWMgaW50IGNob3duX29uZShpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBzdGF0ICpzdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKy0gICAgICAgIGludCByOworK3N0YXRpYyBpbnQgY2hvd25fb25lKGludCBmZCwgY29uc3Qgc3RydWN0IHN0YXQgKnN0LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworKyAgICAgICAgY2hhciBwcm9jZnNfcGF0aFtTVFJMRU4oIi9wcm9jL3NlbGYvZmQvIikgKyBERUNJTUFMX1NUUl9NQVgoaW50KSArIDFdOworIAorICAgICAgICAgYXNzZXJ0KGZkID49IDApOworICAgICAgICAgYXNzZXJ0KHN0KTsKK0BAIC0yMCw5MCArMjIsODIgQEAgc3RhdGljIGludCBjaG93bl9vbmUoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3Qgc3RhdCAqc3QsIHVpZF90IHVpZCwKKyAgICAgICAgICAgICAoIWdpZF9pc192YWxpZChnaWQpIHx8IHN0LT5zdF9naWQgPT0gZ2lkKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgCistICAgICAgICBpZiAobmFtZSkKKy0gICAgICAgICAgICAgICAgciA9IGZjaG93bmF0KGZkLCBuYW1lLCB1aWQsIGdpZCwgQVRfU1lNTElOS19OT0ZPTExPVyk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHIgPSBmY2hvd24oZmQsIHVpZCwgZ2lkKTsKKy0gICAgICAgIGlmIChyIDwgMCkKKy0gICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKysgICAgICAgIC8qIFdlIGNoYW5nZSBvd25lcnNoaXAgdGhyb3VnaCB0aGUgL3Byb2Mvc2VsZi9mZC8laSBwYXRoLCBzbyB0aGF0IHdlIGhhdmUgYSBzdGFibGUgcmVmZXJlbmNlIHRoYXQgd29ya3Mgd2l0aAorKyAgICAgICAgICogT19QQVRILiAoTm90ZTogZmNob3duKCkgYW5kIGZjaG1vZCgpIGRvIG5vdCB3b3JrIHdpdGggT19QQVRILCB0aGUga2VybmVsIHJlZnVzZXMgdGhhdC4gKi8KKysgICAgICAgIHhzcHJpbnRmKHByb2Nmc19wYXRoLCAiL3Byb2Mvc2VsZi9mZC8laSIsIGZkKTsKKyAKKy0gICAgICAgIC8qIFRoZSBsaW51eCBrZXJuZWwgYWx0ZXJzIHRoZSBtb2RlIGluIHNvbWUgY2FzZXMgb2YgY2hvd24oKS4gTGV0J3MgdW5kbyB0aGlzLiAqLworLSAgICAgICAgaWYgKG5hbWUpIHsKKy0gICAgICAgICAgICAgICAgaWYgKCFTX0lTTE5LKHN0LT5zdF9tb2RlKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICByID0gZmNobW9kYXQoZmQsIG5hbWUsIHN0LT5zdF9tb2RlLCAwKTsKKy0gICAgICAgICAgICAgICAgZWxzZSAvKiBUaGVyZSdzIGN1cnJlbnRseSBubyBBVF9TWU1MSU5LX05PRk9MTE9XIGZvciBmY2htb2RhdCgpICovCistICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CistICAgICAgICB9IGVsc2UKKy0gICAgICAgICAgICAgICAgciA9IGZjaG1vZChmZCwgc3QtPnN0X21vZGUpOworLSAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgaWYgKGNob3duKHByb2Nmc19wYXRoLCB1aWQsIGdpZCkgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gLWVycm5vOworIAorKyAgICAgICAgLyogVGhlIGxpbnV4IGtlcm5lbCBhbHRlcnMgdGhlIG1vZGUgaW4gc29tZSBjYXNlcyBvZiBjaG93bigpLiBMZXQncyB1bmRvIHRoaXMuIFdlIGRvIHRoaXMgb25seSBmb3Igbm9uLXN5bWxpbmtzCisrICAgICAgICAgKiBob3dldmVyLiBUaGF0J3MgYmVjYXVzZSBmb3Igc3ltbGlua3MgdGhlIGFjY2VzcyBtb2RlIGlzIGlnbm9yZWQgYW55d2F5IGFuZCBiZWNhdXNlIG9uIHNvbWUga2VybmVscy9maWxlCisrICAgICAgICAgKiBzeXN0ZW1zIHRyeWluZyB0byBjaGFuZ2UgdGhlIGFjY2VzcyBtb2RlIHdpbGwgc3VjY2VlZCBidXQgaGFzIG5vIGVmZmVjdCB3aGlsZSBvbiBvdGhlcnMgaXQgYWN0aXZlbHkKKysgICAgICAgICAqIGZhaWxzLiAqLworKyAgICAgICAgaWYgKCFTX0lTTE5LKHN0LT5zdF9tb2RlKSkKKysgICAgICAgICAgICAgICAgaWYgKGNobW9kKHByb2Nmc19wYXRoLCBzdC0+c3RfbW9kZSAmIDA3Nzc3KSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKysKKyAgICAgICAgIHJldHVybiAxOworIH0KKyAKKyBzdGF0aWMgaW50IGNob3duX3JlY3Vyc2l2ZV9pbnRlcm5hbChpbnQgZmQsIGNvbnN0IHN0cnVjdCBzdGF0ICpzdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKysgICAgICAgIF9jbGVhbnVwX2Nsb3NlZGlyXyBESVIgKmQgPSBOVUxMOworICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisrICAgICAgICBzdHJ1Y3QgZGlyZW50ICpkZTsKKyAgICAgICAgIGludCByOworIAorICAgICAgICAgYXNzZXJ0KGZkID49IDApOworICAgICAgICAgYXNzZXJ0KHN0KTsKKyAKKy0gICAgICAgIGlmIChTX0lTRElSKHN0LT5zdF9tb2RlKSkgeworLSAgICAgICAgICAgICAgICBfY2xlYW51cF9jbG9zZWRpcl8gRElSICpkID0gTlVMTDsKKy0gICAgICAgICAgICAgICAgc3RydWN0IGRpcmVudCAqZGU7CistCistICAgICAgICAgICAgICAgIGQgPSBmZG9wZW5kaXIoZmQpOworLSAgICAgICAgICAgICAgICBpZiAoIWQpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICByID0gLWVycm5vOworLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGZkID0gLTE7CistCistICAgICAgICAgICAgICAgIEZPUkVBQ0hfRElSRU5UX0FMTChkZSwgZCwgciA9IC1lcnJubzsgZ290byBmaW5pc2gpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBmc3Q7CistCistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvdF9vcl9kb3RfZG90KGRlLT5kX25hbWUpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CistCistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZzdGF0YXQoZGlyZmQoZCksIGRlLT5kX25hbWUsICZmc3QsIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC1lcnJubzsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoU19JU0RJUihmc3Quc3RfbW9kZSkpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdWJkaXJfZmQ7CistCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJfZmQgPSBvcGVuYXQoZGlyZmQoZCksIGRlLT5kX25hbWUsIE9fUkRPTkxZfE9fTk9OQkxPQ0t8T19ESVJFQ1RPUll8T19DTE9FWEVDfE9fTk9GT0xMT1d8T19OT0FUSU1FKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJkaXJfZmQgPCAwKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAtZXJybm87CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNob3duX3JlY3Vyc2l2ZV9pbnRlcm5hbChzdWJkaXJfZmQsICZmc3QsIHVpZCwgZ2lkKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+IDApCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gY2hvd25fb25lKGRpcmZkKGQpLCBkZS0+ZF9uYW1lLCAmZnN0LCB1aWQsIGdpZCk7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPiAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICBkID0gZmRvcGVuZGlyKGZkKTsKKysgICAgICAgIGlmICghZCkgeworKyAgICAgICAgICAgICAgICBzYWZlX2Nsb3NlKGZkKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKysgICAgICAgIH0KKysKKysgICAgICAgIEZPUkVBQ0hfRElSRU5UX0FMTChkZSwgZCwgcmV0dXJuIC1lcnJubykgeworKyAgICAgICAgICAgICAgICBfY2xlYW51cF9jbG9zZV8gaW50IHBhdGhfZmQgPSAtMTsKKysgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgZnN0OworKworKyAgICAgICAgICAgICAgICBpZiAoZG90X29yX2RvdF9kb3QoZGUtPmRfbmFtZSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAgICAgIC8qIExldCdzIHBpbiB0aGUgY2hpbGQgaW5vZGUgd2Ugd2FudCB0byBmaXggbm93IHdpdGggYW4gT19QQVRIIGZkLCBzbyB0aGF0IGl0IGNhbm5vdCBiZSBzd2FwcGVkIG91dAorKyAgICAgICAgICAgICAgICAgKiB3aGlsZSB3ZSBtYW5pcHVsYXRlIGl0LiAqLworKyAgICAgICAgICAgICAgICBwYXRoX2ZkID0gb3BlbmF0KGRpcmZkKGQpLCBkZS0+ZF9uYW1lLCBPX1BBVEh8T19DTE9FWEVDfE9fTk9GT0xMT1cpOworKyAgICAgICAgICAgICAgICBpZiAocGF0aF9mZCA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKysKKysgICAgICAgICAgICAgICAgaWYgKGZzdGF0KHBhdGhfZmQsICZmc3QpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLWVycm5vOworKworKyAgICAgICAgICAgICAgICBpZiAoU19JU0RJUihmc3Quc3RfbW9kZSkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3ViZGlyX2ZkOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbnZlcnQgaXQgdG8gYSAicmVhbCIgKGkuZS4gbm9uLU9fUEFUSCkgZmQgbm93ICovCisrICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyX2ZkID0gZmRfcmVvcGVuKHBhdGhfZmQsIE9fUkRPTkxZfE9fQ0xPRVhFQ3xPX05PQVRJTUUpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJkaXJfZmQgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YmRpcl9mZDsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICByID0gY2hvd25fcmVjdXJzaXZlX2ludGVybmFsKHN1YmRpcl9mZCwgJmZzdCwgdWlkLCBnaWQpOyAvKiB0YWtlcyBwb3NzZXNzaW9uIG9mIHN1YmRpcl9mZCBldmVuIG9uIGZhaWx1cmUgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICByID0gY2hvd25fb25lKHBhdGhfZmQsICZmc3QsIHVpZCwgZ2lkKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA+IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgfQorIAorLSAgICAgICAgICAgICAgICByID0gY2hvd25fb25lKGRpcmZkKGQpLCBOVUxMLCBzdCwgdWlkLCBnaWQpOworLSAgICAgICAgfSBlbHNlCistICAgICAgICAgICAgICAgIHIgPSBjaG93bl9vbmUoZmQsIE5VTEwsIHN0LCB1aWQsIGdpZCk7CisrICAgICAgICByID0gY2hvd25fb25lKGRpcmZkKGQpLCBzdCwgdWlkLCBnaWQpOworICAgICAgICAgaWYgKHIgPCAwKQorLSAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCistICAgICAgICByID0gciA+IDAgfHwgY2hhbmdlZDsKKy0KKy1maW5pc2g6CistICAgICAgICBzYWZlX2Nsb3NlKGZkKTsKKy0gICAgICAgIHJldHVybiByOworKyAgICAgICAgcmV0dXJuIHIgPiAwIHx8IGNoYW5nZWQ7CisgfQorIAorIGludCBwYXRoX2Nob3duX3JlY3Vyc2l2ZShjb25zdCBjaGFyICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworQEAgLTExMSw3ICsxMDUsNyBAQCBpbnQgcGF0aF9jaG93bl9yZWN1cnNpdmUoY29uc3QgY2hhciAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgIHN0cnVjdCBzdGF0IHN0OworICAgICAgICAgaW50IHI7CisgCistICAgICAgICBmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFl8T19OT05CTE9DS3xPX0RJUkVDVE9SWXxPX0NMT0VYRUN8T19OT0ZPTExPV3xPX05PQVRJTUUpOworKyAgICAgICAgZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZfE9fRElSRUNUT1JZfE9fQ0xPRVhFQ3xPX05PRk9MTE9XfE9fTk9BVElNRSk7CisgICAgICAgICBpZiAoZmQgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gLWVycm5vOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YzgzNjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA3ODQ0ZTA3MDc0NTYxMWE1MmUzNTViNzNlNzg5MGYzNjBkZDU0MGQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTQgRGVjIDIwMTUgMDQ6MDk6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29yZS9kZXZpY2UuYzogQ2hhbmdlIHRoZSBkZWZhdWx0IGRldmljZSB0aW1lb3V0IHRvIDI0MCBzZWMuCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU3BlY2lmaWMgY2FzZSBRRU1VL0FCXQotCi1TaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIHNyYy9jb3JlL2RldmljZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGV2aWNlLmMgYi9zcmMvY29yZS9kZXZpY2UuYwotaW5kZXggYTQzNjY0ZDNiLi40YjE2YThhZWMgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9kZXZpY2UuYwotKysrIGIvc3JjL2NvcmUvZGV2aWNlLmMKLUBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2luaXQoVW5pdCAqdSkgewotICAgICAgICAgICogaW5kZWZpbml0ZWx5IGZvciBwbHVnZ2VkIGluIGRldmljZXMsIHNvbWV0aGluZyB3aGljaCBjYW5ub3QKLSAgICAgICAgICAqIGhhcHBlbiBmb3IgdGhlIG90aGVyIHVuaXRzIHNpbmNlIHRoZWlyIG9wZXJhdGlvbnMgdGltZSBvdXQKLSAgICAgICAgICAqIGFueXdheS4gKi8KLS0gICAgICAgIHUtPmpvYl9ydW5uaW5nX3RpbWVvdXQgPSB1LT5tYW5hZ2VyLT5kZWZhdWx0X3RpbWVvdXRfc3RhcnRfdXNlYzsKLSsgICAgICAgIHUtPmpvYl9ydW5uaW5nX3RpbWVvdXQgPSAoMjQwICogVVNFQ19QRVJfU0VDKTsKLSAKLSAgICAgICAgIHUtPmlnbm9yZV9vbl9pc29sYXRlID0gdHJ1ZTsKLSB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtd2hlbi1kZXNlcmlhbGl6aW5nLXN0YXRlLWFsd2F5cy11c2UtcmVhZF9saW5lLUwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtd2hlbi1kZXNlcmlhbGl6aW5nLXN0YXRlLWFsd2F5cy11c2UtcmVhZF9saW5lLUwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1ZDY4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS13aGVuLWRlc2VyaWFsaXppbmctc3RhdGUtYWx3YXlzLXVzZS1yZWFkX2xpbmUtTC5wYXRjaApAQCAtMCwwICsxLDI1MCBAQAorRnJvbSAxYTA1ZmY0OTQ4ZDc3ODI4MGVjMTU1YTlhYmU2OWQzMzYwYmZkZGQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVubmFydCBQb2V0dGVyaW5nIDxsZW5uYXJ0QHBvZXR0ZXJpbmcubmV0PgorRGF0ZTogV2VkLCAxNyBPY3QgMjAxOCAxODozNjoyNCArMDIwMAorU3ViamVjdDogW1BBVENIXSA9P1VURi04P3E/Y29yZTo9MjB3aGVuPTIwZGVzZXJpYWxpemluZz0yMHN0YXRlPTIwYWx3YXlzPz0KKyA9P1VURi04P3E/PTIwdXNlPTIwcmVhZD01RmxpbmUoPUUyPTgwPUE2LD0yMExPTkc9NUZMSU5FPTVGTUFYLD0yMD89CisgPT9VVEYtOD9xPz1FMj04MD1BNik/PQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGlzIHNob3VsZCBiZSBtdWNoIGJldHRlciB0aGFuIGZnZXRzKCksIGFzIHdlIGNhbiByZWFkIHN1YnN0YW50aWFsbHkKK2xvbmdlciBsaW5lcyBhbmQgb3Zlcmx5IGxvbmcgbGluZXMgcmVzdWx0IGluIHByb3BlciBlcnJvcnMuCisKK0ZpeGVzIGEgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcmVkIGJ5IEphbm4gSG9ybiBhdCBHb29nbGUuCisKK0NWRS0yMDE4LTE1Njg2CitMUDogIzE3OTY0MDIKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTA3MQorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA4OTQ4YjM0MTVkNzYyMjQ1ZWJmNWUxOWQ4MGI5N2Q0ZDhjYzIwOGMxKQorCitDVkU6IENWRS0yMDE4LTE1Njg2CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9jb3JlL2pvYi5jICAgICB8IDE5ICsrKysrKysrKysrLS0tLS0tLS0KKyBzcmMvY29yZS9tYW5hZ2VyLmMgfCA0NCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb3JlL3VuaXQuYyAgICB8IDM0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvY29yZS91bml0LmggICAgfCAgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9qb2IuYyBiL3NyYy9jb3JlL2pvYi5jCitpbmRleCA3MzQ3NTZiLi44NTUyZmZiIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvam9iLmMKKysrKyBiL3NyYy9jb3JlL2pvYi5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJkYnVzLWpvYi5oIgorICNpbmNsdWRlICJkYnVzLmgiCisgI2luY2x1ZGUgImVzY2FwZS5oIgorKyNpbmNsdWRlICJmaWxlaW8uaCIKKyAjaW5jbHVkZSAiam9iLmgiCisgI2luY2x1ZGUgImxvZy5oIgorICNpbmNsdWRlICJtYWNyby5oIgorQEAgLTEwOTEsMjQgKzEwOTIsMjYgQEAgaW50IGpvYl9zZXJpYWxpemUoSm9iICpqLCBGSUxFICpmKSB7CisgfQorIAorIGludCBqb2JfZGVzZXJpYWxpemUoSm9iICpqLCBGSUxFICpmKSB7CisrICAgICAgICBpbnQgcjsKKysKKyAgICAgICAgIGFzc2VydChqKTsKKyAgICAgICAgIGFzc2VydChmKTsKKyAKKyAgICAgICAgIGZvciAoOzspIHsKKy0gICAgICAgICAgICAgICAgY2hhciBsaW5lW0xJTkVfTUFYXSwgKmwsICp2OworKyAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpsaW5lID0gTlVMTDsKKysgICAgICAgICAgICAgICAgY2hhciAqbCwgKnY7CisgICAgICAgICAgICAgICAgIHNpemVfdCBrOworIAorLSAgICAgICAgICAgICAgICBpZiAoIWZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZikpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVvZihmKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CistICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgciA9IHJlYWRfbGluZShmLCBMT05HX0xJTkVfTUFYLCAmbGluZSk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gcmVhZCBzZXJpYWxpemF0aW9uIGxpbmU6ICVtIik7CisrICAgICAgICAgICAgICAgIGlmIChyID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgCistICAgICAgICAgICAgICAgIGNoYXJfYXJyYXlfMChsaW5lKTsKKyAgICAgICAgICAgICAgICAgbCA9IHN0cnN0cmlwKGxpbmUpOworIAorICAgICAgICAgICAgICAgICAvKiBFbmQgbWFya2VyICovCistICAgICAgICAgICAgICAgIGlmIChsWzBdID09IDApCisrICAgICAgICAgICAgICAgIGlmIChpc2VtcHR5KGwpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworIAorICAgICAgICAgICAgICAgICBrID0gc3RyY3NwbihsLCAiPSIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21hbmFnZXIuYyBiL3NyYy9jb3JlL21hbmFnZXIuYworaW5kZXggM2E3ZjBjNC4uYTU3ODBjOSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL21hbmFnZXIuYworKysrIGIvc3JjL2NvcmUvbWFuYWdlci5jCitAQCAtMzE3MSwyMiArMzE3MSwxOSBAQCBpbnQgbWFuYWdlcl9kZXNlcmlhbGl6ZShNYW5hZ2VyICptLCBGSUxFICpmLCBGRFNldCAqZmRzKSB7CisgICAgICAgICBtLT5uX3JlbG9hZGluZysrOworIAorICAgICAgICAgZm9yICg7OykgeworLSAgICAgICAgICAgICAgICBjaGFyIGxpbmVbTElORV9NQVhdOworKyAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpsaW5lID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsLCAqbDsKKyAKKy0gICAgICAgICAgICAgICAgaWYgKCFmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGYpKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlb2YoZikpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMDsKKy0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gLWVycm5vOworLQorKyAgICAgICAgICAgICAgICByID0gcmVhZF9saW5lKGYsIExPTkdfTElORV9NQVgsICZsaW5lKTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gcmVhZCBzZXJpYWxpemF0aW9uIGxpbmU6ICVtIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgaWYgKHIgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAKKy0gICAgICAgICAgICAgICAgY2hhcl9hcnJheV8wKGxpbmUpOworICAgICAgICAgICAgICAgICBsID0gc3Ryc3RyaXAobGluZSk7CistCistICAgICAgICAgICAgICAgIGlmIChsWzBdID09IDApCisrICAgICAgICAgICAgICAgIGlmIChpc2VtcHR5KGwpKSAvKiBlbmQgbWFya2VyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAgICAgICAgIGlmICgodmFsID0gc3RhcnRzd2l0aChsLCAiY3VycmVudC1qb2ItaWQ9IikpKSB7CitAQCAtMzM1MywyOSArMzM1MCwzMSBAQCBpbnQgbWFuYWdlcl9kZXNlcmlhbGl6ZShNYW5hZ2VyICptLCBGSUxFICpmLCBGRFNldCAqZmRzKSB7CisgICAgICAgICB9CisgCisgICAgICAgICBmb3IgKDs7KSB7CistICAgICAgICAgICAgICAgIFVuaXQgKnU7CistICAgICAgICAgICAgICAgIGNoYXIgbmFtZVtVTklUX05BTUVfTUFYKzJdOworKyAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpsaW5lID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdW5pdF9uYW1lOworKyAgICAgICAgICAgICAgICBVbml0ICp1OworIAorICAgICAgICAgICAgICAgICAvKiBTdGFydCBtYXJrZXIgKi8KKy0gICAgICAgICAgICAgICAgaWYgKCFmZ2V0cyhuYW1lLCBzaXplb2YobmFtZSksIGYpKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlb2YoZikpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMDsKKy0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gLWVycm5vOworLQorKyAgICAgICAgICAgICAgICByID0gcmVhZF9saW5lKGYsIExPTkdfTElORV9NQVgsICZsaW5lKTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gcmVhZCBzZXJpYWxpemF0aW9uIGxpbmU6ICVtIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgaWYgKHIgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAKKy0gICAgICAgICAgICAgICAgY2hhcl9hcnJheV8wKG5hbWUpOworLSAgICAgICAgICAgICAgICB1bml0X25hbWUgPSBzdHJzdHJpcChuYW1lKTsKKysgICAgICAgICAgICAgICAgdW5pdF9uYW1lID0gc3Ryc3RyaXAobGluZSk7CisgCisgICAgICAgICAgICAgICAgIHIgPSBtYW5hZ2VyX2xvYWRfdW5pdChtLCB1bml0X25hbWUsIE5VTEwsIE5VTEwsICZ1KTsKKyAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX25vdGljZV9lcnJubyhyLCAiRmFpbGVkIHRvIGxvYWQgdW5pdCBcIiVzXCIsIHNraXBwaW5nIGRlc2VyaWFsaXphdGlvbjogJW0iLCB1bml0X25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09IC1FTk9NRU0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgICAgICAgICB1bml0X2Rlc2VyaWFsaXplX3NraXAoZik7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IHVuaXRfZGVzZXJpYWxpemVfc2tpcChmKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgfQorIAorQEAgLTMzODgsOSArMzM4Nyw2IEBAIGludCBtYW5hZ2VyX2Rlc2VyaWFsaXplKE1hbmFnZXIgKm0sIEZJTEUgKmYsIEZEU2V0ICpmZHMpIHsKKyAgICAgICAgIH0KKyAKKyBmaW5pc2g6CistICAgICAgICBpZiAoZmVycm9yKGYpKQorLSAgICAgICAgICAgICAgICByID0gLUVJTzsKKy0KKyAgICAgICAgIGFzc2VydChtLT5uX3JlbG9hZGluZyA+IDApOworICAgICAgICAgbS0+bl9yZWxvYWRpbmctLTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91bml0LmMgYi9zcmMvY29yZS91bml0LmMKK2luZGV4IDdkYTk2M2EuLmU5OGM5YzQgMTAwNjQ0CistLS0gYS9zcmMvY29yZS91bml0LmMKKysrKyBiL3NyYy9jb3JlL3VuaXQuYworQEAgLTMzODAsMjEgKzMzODAsMTkgQEAgaW50IHVuaXRfZGVzZXJpYWxpemUoVW5pdCAqdSwgRklMRSAqZiwgRkRTZXQgKmZkcykgeworICAgICAgICAgYXNzZXJ0KGZkcyk7CisgCisgICAgICAgICBmb3IgKDs7KSB7CistICAgICAgICAgICAgICAgIGNoYXIgbGluZVtMSU5FX01BWF0sICpsLCAqdjsKKysgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqbGluZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgIENHcm91cElQQWNjb3VudGluZ01ldHJpYyBtOworKyAgICAgICAgICAgICAgICBjaGFyICpsLCAqdjsKKyAgICAgICAgICAgICAgICAgc2l6ZV90IGs7CisgCistICAgICAgICAgICAgICAgIGlmICghZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmKSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZW9mKGYpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CistICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICByID0gcmVhZF9saW5lKGYsIExPTkdfTElORV9NQVgsICZsaW5lKTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byByZWFkIHNlcmlhbGl6YXRpb24gbGluZTogJW0iKTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPT0gMCkgLyogZW9mICovCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgCistICAgICAgICAgICAgICAgIGNoYXJfYXJyYXlfMChsaW5lKTsKKyAgICAgICAgICAgICAgICAgbCA9IHN0cnN0cmlwKGxpbmUpOworLQorLSAgICAgICAgICAgICAgICAvKiBFbmQgbWFya2VyICovCistICAgICAgICAgICAgICAgIGlmIChpc2VtcHR5KGwpKQorKyAgICAgICAgICAgICAgICBpZiAoaXNlbXB0eShsKSkgLyogRW5kIG1hcmtlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgICAgICAgICBrID0gc3RyY3NwbihsLCAiPSIpOworQEAgLTM2NzEsMjMgKzM2NjksMjcgQEAgaW50IHVuaXRfZGVzZXJpYWxpemUoVW5pdCAqdSwgRklMRSAqZiwgRkRTZXQgKmZkcykgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorLXZvaWQgdW5pdF9kZXNlcmlhbGl6ZV9za2lwKEZJTEUgKmYpIHsKKytpbnQgdW5pdF9kZXNlcmlhbGl6ZV9za2lwKEZJTEUgKmYpIHsKKysgICAgICAgIGludCByOworICAgICAgICAgYXNzZXJ0KGYpOworIAorICAgICAgICAgLyogU2tpcCBzZXJpYWxpemVkIGRhdGEgZm9yIHRoaXMgdW5pdC4gV2UgZG9uJ3Qga25vdyB3aGF0IGl0IGlzLiAqLworIAorICAgICAgICAgZm9yICg7OykgeworLSAgICAgICAgICAgICAgICBjaGFyIGxpbmVbTElORV9NQVhdLCAqbDsKKysgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqbGluZSA9IE5VTEw7CisrICAgICAgICAgICAgICAgIGNoYXIgKmw7CisgCistICAgICAgICAgICAgICAgIGlmICghZmdldHMobGluZSwgc2l6ZW9mIGxpbmUsIGYpKQorLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICAgICAgciA9IHJlYWRfbGluZShmLCBMT05HX0xJTkVfTUFYLCAmbGluZSk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gcmVhZCBzZXJpYWxpemF0aW9uIGxpbmU6ICVtIik7CisrICAgICAgICAgICAgICAgIGlmIChyID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgCistICAgICAgICAgICAgICAgIGNoYXJfYXJyYXlfMChsaW5lKTsKKyAgICAgICAgICAgICAgICAgbCA9IHN0cnN0cmlwKGxpbmUpOworIAorICAgICAgICAgICAgICAgICAvKiBFbmQgbWFya2VyICovCisgICAgICAgICAgICAgICAgIGlmIChpc2VtcHR5KGwpKQorLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdW5pdC5oIGIvc3JjL2NvcmUvdW5pdC5oCitpbmRleCAwNjMyMWJiLi41MWM3YWFhIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdW5pdC5oCisrKysgYi9zcmMvY29yZS91bml0LmgKK0BAIC02ODQsNyArNjg0LDcgQEAgYm9vbCB1bml0X2Nhbl9zZXJpYWxpemUoVW5pdCAqdSkgX3B1cmVfOworIAorIGludCB1bml0X3NlcmlhbGl6ZShVbml0ICp1LCBGSUxFICpmLCBGRFNldCAqZmRzLCBib29sIHNlcmlhbGl6ZV9qb2JzKTsKKyBpbnQgdW5pdF9kZXNlcmlhbGl6ZShVbml0ICp1LCBGSUxFICpmLCBGRFNldCAqZmRzKTsKKy12b2lkIHVuaXRfZGVzZXJpYWxpemVfc2tpcChGSUxFICpmKTsKKytpbnQgdW5pdF9kZXNlcmlhbGl6ZV9za2lwKEZJTEUgKmYpOworIAorIGludCB1bml0X3NlcmlhbGl6ZV9pdGVtKFVuaXQgKnUsIEZJTEUgKmYsIGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpOworIGludCB1bml0X3NlcmlhbGl6ZV9pdGVtX2VzY2FwZWQoVW5pdCAqdSwgRklMRSAqZiwgY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZGhjcDYtbWFrZS1zdXJlLXdlLWhhdmUtZW5vdWdoLXNwYWNlLWZvci10aGUtREhDUDYtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZGhjcDYtbWFrZS1zdXJlLXdlLWhhdmUtZW5vdWdoLXNwYWNlLWZvci10aGUtREhDUDYtby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzkxMmYyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kaGNwNi1tYWtlLXN1cmUtd2UtaGF2ZS1lbm91Z2gtc3BhY2UtZm9yLXRoZS1ESENQNi1vLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYTI2MjJiODM5OGJhMDI2ZmFmNDgxZjVlZGRlYjUzMjMxZDlkZTRhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExlbm5hcnQgUG9ldHRlcmluZyA8bGVubmFydEBwb2V0dGVyaW5nLm5ldD4KK0RhdGU6IEZyaSwgMTkgT2N0IDIwMTggMTI6MTI6MzMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZGhjcDY6IG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBzcGFjZSBmb3IgdGhlIERIQ1A2IG9wdGlvbgorIGhlYWRlcgorCitGaXhlcyBhIHZ1bG5lcmFiaWxpdHkgb3JpZ2luYWxseSBkaXNjb3ZlcmVkIGJ5IEZlbGl4IFdpbGhlbG0gZnJvbQorR29vZ2xlLgorCitDVkUtMjAxOC0xNTY4OAorTFA6ICMxNzk1OTIxCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE2MzkwNjcKKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNGRhYzVlYWJhNGU0MTliMjljOTdkYTM4YThiMWY4MjMzNmMyYzg5MikKKworQ1ZFOiBDVkUtMjAxOC0xNTY4OAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbGlic3lzdGVtZC1uZXR3b3JrL2RoY3A2LW9wdGlvbi5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9kaGNwNi1vcHRpb24uYyBiL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvZGhjcDYtb3B0aW9uLmMKK2luZGV4IGM0YjQwMmIuLmRjYmFhZDAgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL2RoY3A2LW9wdGlvbi5jCisrKysgYi9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL2RoY3A2LW9wdGlvbi5jCitAQCAtMTAzLDcgKzEwMyw3IEBAIGludCBkaGNwNl9vcHRpb25fYXBwZW5kX2lhKHVpbnQ4X3QgKipidWYsIHNpemVfdCAqYnVmbGVuLCBESENQNklBICppYSkgeworICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmICgqYnVmbGVuIDwgbGVuKQorKyAgICAgICAgaWYgKCpidWZsZW4gPCBvZmZzZXRvZihESENQNk9wdGlvbiwgZGF0YSkgKyBsZW4pCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PQlVGUzsKKyAKKyAgICAgICAgIGlhX2hkciA9ICpidWY7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbG9naW4tdXNlLXBhcnNlX3VpZC13aGVuLXVubW91bnRpbmctdXNlci1ydW50aW1lLWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbG9naW4tdXNlLXBhcnNlX3VpZC13aGVuLXVubW91bnRpbmctdXNlci1ydW50aW1lLWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTA4ZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1sb2dpbi11c2UtcGFyc2VfdWlkLXdoZW4tdW5tb3VudGluZy11c2VyLXJ1bnRpbWUtZGlyLnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIDg2ZDE4ZjNiMDllYzk4NGVmMzczMjU2N2FmOTkyYWRiMmRjNzdhOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZdSBXYXRhbmFiZSA8d2F0YW5hYmUueXUrZ2l0aHViQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgOSBKdWwgMjAxOCAxNDowNToyMCArMDkwMAorU3ViamVjdDogW1BBVENIXSBsb2dpbjogdXNlIHBhcnNlX3VpZCgpIHdoZW4gdW5tb3VudGluZyB1c2VyIHJ1bnRpbWUgZGlyZWN0b3J5CisKK1doZW4gdW5tb3VudGluZyB1c2VyIHJ1bnRpbWUgZGlyZWN0b3J5LCBvbmx5IFVJRCBpcyBuZWNlc3NhcnksCithbmQgdGhlIGNvcnJlc3BvbmRpbmcgdXNlciBtYXkgbm90IGV4aXN0IGFueW1vcmUuCitUaGlzIG1ha2VzIGZpcnN0IHRyeSB0byBwYXJzZSB0aGUgaW5wdXQgYnkgcGFyc2VfdWlkKCksIGFuZCBvbmx5IGlmIGl0CitmYWlscywgcHJhc2UgdGhlIGlucHV0IGJ5IGdldF91c2VyX2NyZWRzKCkuCisKK0ZpeGVzICM5NTQxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CistLS0KKyBzcmMvbG9naW4vdXNlci1ydW50aW1lLWRpci5jIHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbG9naW4vdXNlci1ydW50aW1lLWRpci5jIGIvc3JjL2xvZ2luL3VzZXItcnVudGltZS1kaXIuYworaW5kZXggMWJiMjZjOTllLi5kZTQwNjFjNzUgMTAwNjQ0CistLS0gYS9zcmMvbG9naW4vdXNlci1ydW50aW1lLWRpci5jCisrKysgYi9zcmMvbG9naW4vdXNlci1ydW50aW1lLWRpci5jCitAQCAtMTExLDggKzExMSwyMiBAQCBzdGF0aWMgaW50IHVzZXJfcmVtb3ZlX3J1bnRpbWVfcGF0aChjb25zdCBjaGFyICpydW50aW1lX3BhdGgpIHsKKyAgICAgICAgIHJldHVybiByOworIH0KKyAKKy1zdGF0aWMgaW50IGRvX21vdW50KGNvbnN0IGNoYXIgKnJ1bnRpbWVfcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKytzdGF0aWMgaW50IGRvX21vdW50KGNvbnN0IGNoYXIgKnVzZXIpIHsKKysgICAgICAgIGNoYXIgcnVudGltZV9wYXRoW3NpemVvZigiL3J1bi91c2VyIikgKyBERUNJTUFMX1NUUl9NQVgodWlkX3QpXTsKKyAgICAgICAgIHNpemVfdCBydW50aW1lX2Rpcl9zaXplOworKyAgICAgICAgdWlkX3QgdWlkOworKyAgICAgICAgZ2lkX3QgZ2lkOworKyAgICAgICAgaW50IHI7CisrCisrICAgICAgICByID0gZ2V0X3VzZXJfY3JlZHMoJnVzZXIsICZ1aWQsICZnaWQsIE5VTEwsIE5VTEwpOworKyAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9PSAtRVNSQ0ggPyAiTm8gc3VjaCB1c2VyIFwiJXNcIiIgOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT0gLUVOT01TRyA/ICJVSUQgXCIlc1wiIGlzIGludmFsaWQgb3IgaGFzIGFuIGludmFsaWQgbWFpbiBncm91cCIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiRmFpbGVkIHRvIGxvb2sgdXAgdXNlciBcIiVzXCI6ICVtIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyKTsKKysKKysgICAgICAgIHhzcHJpbnRmKHJ1bnRpbWVfcGF0aCwgIi9ydW4vdXNlci8iIFVJRF9GTVQsIHVpZCk7CisgCisgICAgICAgICBhc3NlcnRfc2UoZ2F0aGVyX2NvbmZpZ3VyYXRpb24oJnJ1bnRpbWVfZGlyX3NpemUpID09IDApOworIAorQEAgLTEyMCwxNiArMTM0LDMwIEBAIHN0YXRpYyBpbnQgZG9fbW91bnQoY29uc3QgY2hhciAqcnVudGltZV9wYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworICAgICAgICAgcmV0dXJuIHVzZXJfbWtkaXJfcnVudGltZV9wYXRoKHJ1bnRpbWVfcGF0aCwgdWlkLCBnaWQsIHJ1bnRpbWVfZGlyX3NpemUpOworIH0KKyAKKy1zdGF0aWMgaW50IGRvX3Vtb3VudChjb25zdCBjaGFyICpydW50aW1lX3BhdGgpIHsKKytzdGF0aWMgaW50IGRvX3Vtb3VudChjb25zdCBjaGFyICp1c2VyKSB7CisrICAgICAgICBjaGFyIHJ1bnRpbWVfcGF0aFtzaXplb2YoIi9ydW4vdXNlciIpICsgREVDSU1BTF9TVFJfTUFYKHVpZF90KV07CisrICAgICAgICB1aWRfdCB1aWQ7CisrICAgICAgICBpbnQgcjsKKysKKysgICAgICAgIC8qIFRoZSB1c2VyIG1heSBiZSBhbHJlYWR5IHJlbW92ZWQuIFNvLCBmaXJzdCB0cnkgdG8gcGFyc2UgdGhlIHN0cmluZyBieSBwYXJzZV91aWQoKSwKKysgICAgICAgICAqIGFuZCBpZiBpdCBmYWlscywgZmFsbGJhY2sgdG8gZ2V0X3VzZXJfY3JlZHMoKS4qLworKyAgICAgICAgaWYgKHBhcnNlX3VpZCh1c2VyLCAmdWlkKSA8IDApIHsKKysgICAgICAgICAgICAgICAgciA9IGdldF91c2VyX2NyZWRzKCZ1c2VyLCAmdWlkLCBOVUxMLCBOVUxMLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8ociwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT0gLUVTUkNIID8gIk5vIHN1Y2ggdXNlciBcIiVzXCIiIDoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT0gLUVOT01TRyA/ICJVSUQgXCIlc1wiIGlzIGludmFsaWQgb3IgaGFzIGFuIGludmFsaWQgbWFpbiBncm91cCIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJGYWlsZWQgdG8gbG9vayB1cCB1c2VyIFwiJXNcIjogJW0iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcik7CisrICAgICAgICB9CisrCisrICAgICAgICB4c3ByaW50ZihydW50aW1lX3BhdGgsICIvcnVuL3VzZXIvIiBVSURfRk1ULCB1aWQpOworKworICAgICAgICAgbG9nX2RlYnVnKCJXaWxsIHJlbW92ZSAlcyIsIHJ1bnRpbWVfcGF0aCk7CisgICAgICAgICByZXR1cm4gdXNlcl9yZW1vdmVfcnVudGltZV9wYXRoKHJ1bnRpbWVfcGF0aCk7CisgfQorIAorIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKy0gICAgICAgIGNvbnN0IGNoYXIgKnVzZXI7CistICAgICAgICB1aWRfdCB1aWQ7CistICAgICAgICBnaWRfdCBnaWQ7CistICAgICAgICBjaGFyIHJ1bnRpbWVfcGF0aFtzaXplb2YoIi9ydW4vdXNlciIpICsgREVDSU1BTF9TVFJfTUFYKHVpZF90KV07CisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGxvZ19wYXJzZV9lbnZpcm9ubWVudCgpOworQEAgLTE0NiwyMyArMTc0LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAKKyAgICAgICAgIHVtYXNrKDAwMjIpOworIAorLSAgICAgICAgdXNlciA9IGFyZ3ZbMl07CistICAgICAgICByID0gZ2V0X3VzZXJfY3JlZHMoJnVzZXIsICZ1aWQsICZnaWQsIE5VTEwsIE5VTEwpOworLSAgICAgICAgaWYgKHIgPCAwKSB7CistICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9PSAtRVNSQ0ggPyAiTm8gc3VjaCB1c2VyIFwiJXNcIiIgOgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9PSAtRU5PTVNHID8gIlVJRCBcIiVzXCIgaXMgaW52YWxpZCBvciBoYXMgYW4gaW52YWxpZCBtYWluIGdyb3VwIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIkZhaWxlZCB0byBsb29rIHVwIHVzZXIgXCIlc1wiOiAlbSIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyKTsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIHhzcHJpbnRmKHJ1bnRpbWVfcGF0aCwgIi9ydW4vdXNlci8iIFVJRF9GTVQsIHVpZCk7CistCisgICAgICAgICBpZiAoc3RyZXEoYXJndlsxXSwgInN0YXJ0IikpCistICAgICAgICAgICAgICAgIHIgPSBkb19tb3VudChydW50aW1lX3BhdGgsIHVpZCwgZ2lkKTsKKysgICAgICAgICAgICAgICAgciA9IGRvX21vdW50KGFyZ3ZbMl0pOworICAgICAgICAgZWxzZSBpZiAoc3RyZXEoYXJndlsxXSwgInN0b3AiKSkKKy0gICAgICAgICAgICAgICAgciA9IGRvX3Vtb3VudChydW50aW1lX3BhdGgpOworKyAgICAgICAgICAgICAgICByID0gZG9fdW1vdW50KGFyZ3ZbMl0pOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICBhc3NlcnRfbm90X3JlYWNoZWQoIlVua25vd24gdmVyYiEiKTsKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtc2QtYnVzLW1ha2UtQlVTX0RFRkFVTFRfVElNRU9VVC1jb25maWd1cmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXNkLWJ1cy1tYWtlLUJVU19ERUZBVUxUX1RJTUVPVVQtY29uZmlndXJhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YzliNWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXNkLWJ1cy1tYWtlLUJVU19ERUZBVUxUX1RJTUVPVVQtY29uZmlndXJhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMTc1IEBACitGcm9tIDViNzVhNzJlZTk2OGM5NjY2YjVmMmVhMzEzNzIwYjZjMzgzY2I0YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZdSBXYXRhbmFiZSA8d2F0YW5hYmUueXUrZ2l0aHViQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTMgSnVsIDIwMTggMTc6Mzg6NDcgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2QtYnVzOiBtYWtlIEJVU19ERUZBVUxUX1RJTUVPVVQgY29uZmlndXJhYmxlCisKK1RoaXMgYWRkcyBzZF9idXNfe2dldCxzZXR9X21ldGhvZF9jYWxsX3RpbWVvdXQoKS4KK0lmIHRoZSB0aW1lb3V0IGlzIG5vdCBzZXQgb3Igc2V0IHRvIDAsIHRoZW4gdGhlIHRpbWVvdXQgdmFsdWUgaXMKK3BhcnNlZCBmcm9tICRTWVNURU1EX0JVU19USU1FT1VUPSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSWYgdGhlCitlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGVuIGJ1aWx0LWluIHRpbWVvdXQgaXMgdXNlZC4KKy0tLQorIGRvYy9FTlZJUk9OTUVOVC5tZCAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCisgc3JjL2xpYnN5c3RlbWQvbGlic3lzdGVtZC5zeW0gICAgICAgIHwgIDUgKysrKysKKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWludGVybmFsLmggfCAgOSArKysrLS0tLQorIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jICB8ICA3ICsrKysrLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBzcmMvc3lzdGVtZC9zZC1idXMuaCAgICAgICAgICAgICAgICAgfCAgMyArKysKKyA2IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvZG9jL0VOVklST05NRU5ULm1kIGIvZG9jL0VOVklST05NRU5ULm1kCitpbmRleCA4NWQyNmZlMjhjLi42NDFhMDNkNWQ3IDEwMDY0NAorLS0tIGEvZG9jL0VOVklST05NRU5ULm1kCisrKysgYi9kb2MvRU5WSVJPTk1FTlQubWQKK0BAIC0zNyw2ICszNywxMSBAQCBBbGwgdG9vbHM6CisgICB1c2VmdWwgZm9yIGRlYnVnZ2luZywgaW4gb3JkZXIgdG8gdGVzdCBnZW5lcmF0b3JzIGFuZCBvdGhlciBjb2RlIGFnYWluc3QKKyAgIHNwZWNpZmljIGtlcm5lbCBjb21tYW5kIGxpbmVzLgorIAorKyogYCRTWVNURU1EX0JVU19USU1FT1VUPVNFQ1NgIOKAlCBzcGVjaWZpZXMgdGhlIG1heGltdW0gdGltZSB0byB3YWl0IGZvciBtZXRob2QgY2FsbAorKyAgY29tcGxldGlvbi4gSWYgbm8gdGltZSB1bml0IGlzIHNwZWNpZmllZCwgYXNzdW1lcyBzZWNvbmRzLiBUaGUgdXN1YWwgb3RoZXIgdW5pdHMKKysgIGFyZSB1bmRlcnN0b29kLCB0b28gKHVzLCBtcywgcywgbWluLCBoLCBkLCB3LCBtb250aCwgeSkuIElmIGl0IGlzIG5vdCBzZXQgb3Igc2V0CisrICB0byAwLCB0aGVuIHRoZSBidWlsdC1pbiBkZWZhdWx0IGlzIHVzZWQuCisrCisgc3lzdGVtY3RsOgorIAorICogYCRTWVNURU1DVExfRk9SQ0VfQlVTPTFgIOKAlCBpZiBzZXQsIGRvIG5vdCBjb25uZWN0IHRvIFBJRDEncyBwcml2YXRlIEQtQnVzCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvbGlic3lzdGVtZC5zeW0gYi9zcmMvbGlic3lzdGVtZC9saWJzeXN0ZW1kLnN5bQoraW5kZXggMWVlYzE3ZGI1MC4uMDA2ZGJjOWMzZiAxMDA2NDQKKy0tLSBhL3NyYy9saWJzeXN0ZW1kL2xpYnN5c3RlbWQuc3ltCisrKysgYi9zcmMvbGlic3lzdGVtZC9saWJzeXN0ZW1kLnN5bQorQEAgLTU3MCwzICs1NzAsOCBAQCBnbG9iYWw6CisgICAgICAgICBzZF9ldmVudF9zb3VyY2Vfc2V0X2Rlc3Ryb3lfY2FsbGJhY2s7CisgICAgICAgICBzZF9ldmVudF9zb3VyY2VfZ2V0X2Rlc3Ryb3lfY2FsbGJhY2s7CisgfSBMSUJTWVNURU1EXzIzODsKKysKKytMSUJTWVNURU1EXzI0MCB7CisrICAgICAgICBzZF9idXNfc2V0X21ldGhvZF9jYWxsX3RpbWVvdXQ7CisrICAgICAgICBzZF9idXNfZ2V0X21ldGhvZF9jYWxsX3RpbWVvdXQ7CisrfSBMSUJTWVNURU1EXzIzOTsKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWludGVybmFsLmggYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWludGVybmFsLmgKK2luZGV4IDIwODdlZjhlZWIuLjQ4NjRiMWU5MTEgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWludGVybmFsLmgKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtaW50ZXJuYWwuaAorQEAgLTMxOSw2ICszMTksOSBAQCBzdHJ1Y3Qgc2RfYnVzIHsKKyAKKyAgICAgICAgIGludCAqaW5vdGlmeV93YXRjaGVzOworICAgICAgICAgc2l6ZV90IG5faW5vdGlmeV93YXRjaGVzOworKworKyAgICAgICAgLyogemVybyBtZWFucyB1c2UgdmFsdWUgc3BlY2lmaWVkIGJ5ICRTWVNURU1EX0JVU19USU1FT1VUPSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBidWlsdC1pbiBkZWZhdWx0ICovCisrICAgICAgICB1c2VjX3QgbWV0aG9kX2NhbGxfdGltZW91dDsKKyB9OworIAorIC8qIEZvciBtZXRob2QgY2FsbHMgd2UgdGltZS1vdXQgYXQgMjVzLCBsaWtlIGluIHRoZSBELUJ1cyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gKi8KK0BAIC0zMzYsOCArMzM5LDcgQEAgc3RydWN0IHNkX2J1cyB7CisgCisgI2RlZmluZSBCVVNfQ09OVEFJTkVSX0RFUFRIIDEyOAorIAorLS8qIERlZmluZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gYXMgbWF4aW11bSBzaXplIG9mIGFuIGFycmF5IGluCistICogYnl0ZXMgKi8KKysvKiBEZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIGFzIG1heGltdW0gc2l6ZSBvZiBhbiBhcnJheSBpbiBieXRlcyAqLworICNkZWZpbmUgQlVTX0FSUkFZX01BWF9TSVpFIDY3MTA4ODY0CisgCisgI2RlZmluZSBCVVNfRkRTX01BWCAxMDI0CitAQCAtMzg4LDggKzM5MCw3IEBAIHZvaWQgYnVzX2Nsb3NlX2lvX2ZkcyhzZF9idXMgKmIpOworICAgICAgICAgICAgICBfc2xhc2ggPSBzdHJlcSgocHJlZml4KSwgIi8iKSA/IE5VTEwgOiBzdHJyY2hyKChwcmVmaXgpLCAnLycpKQorIAorIC8qIElmIHdlIGFyZSBpbnZva2luZyBjYWxsYmFja3Mgb2YgYSBidXMgb2JqZWN0LCBlbnN1cmUgdW5yZWZmaW5nIHRoZQorLSAqIGJ1cyBmcm9tIHRoZSBjYWxsYmFjayBkb2Vzbid0IGRlc3Ryb3kgdGhlIG9iamVjdCB3ZSBhcmUgd29ya2luZworLSAqIG9uICovCisrICogYnVzIGZyb20gdGhlIGNhbGxiYWNrIGRvZXNuJ3QgZGVzdHJveSB0aGUgb2JqZWN0IHdlIGFyZSB3b3JraW5nIG9uICovCisgI2RlZmluZSBCVVNfRE9OVF9ERVNUUk9ZKGJ1cykgXAorICAgICAgICAgX2NsZWFudXBfKHNkX2J1c191bnJlZnApIF91bnVzZWRfIHNkX2J1cyAqX2RvbnRfZGVzdHJveV8jI2J1cyA9IHNkX2J1c19yZWYoYnVzKQorIAorZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKK2luZGV4IDhkOTJiYzIwMDIuLmRmZmU3MGE2NjUgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKK0BAIC01ODA5LDggKzU4MDksMTEgQEAgaW50IGJ1c19tZXNzYWdlX3JlbWFyc2hhbChzZF9idXMgKmJ1cywgc2RfYnVzX21lc3NhZ2UgKiptKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorICAgICAgICAgdGltZW91dCA9ICgqbSktPnRpbWVvdXQ7CistICAgICAgICBpZiAodGltZW91dCA9PSAwICYmICEoKCptKS0+aGVhZGVyLT5mbGFncyAmIEJVU19NRVNTQUdFX05PX1JFUExZX0VYUEVDVEVEKSkKKy0gICAgICAgICAgICAgICAgdGltZW91dCA9IEJVU19ERUZBVUxUX1RJTUVPVVQ7CisrICAgICAgICBpZiAodGltZW91dCA9PSAwICYmICEoKCptKS0+aGVhZGVyLT5mbGFncyAmIEJVU19NRVNTQUdFX05PX1JFUExZX0VYUEVDVEVEKSkgeworKyAgICAgICAgICAgICAgICByID0gc2RfYnVzX2dldF9tZXRob2RfY2FsbF90aW1lb3V0KGJ1cywgJnRpbWVvdXQpOworKyAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisrICAgICAgICB9CisgCisgICAgICAgICByID0gc2RfYnVzX21lc3NhZ2Vfc2VhbChuLCBCVVNfTUVTU0FHRV9DT09LSUUoKm0pLCB0aW1lb3V0KTsKKyAgICAgICAgIGlmIChyIDwgMCkKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKK2luZGV4IDA4OWI1MWE2ZDkuLjk0NTQ5MGViZjcgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYworQEAgLTE2MTEsOCArMTYxMSwxMSBAQCBzdGF0aWMgaW50IGJ1c19zZWFsX21lc3NhZ2Uoc2RfYnVzICpiLCBzZF9idXNfbWVzc2FnZSAqbSwgdXNlY190IHRpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAodGltZW91dCA9PSAwKQorLSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gQlVTX0RFRkFVTFRfVElNRU9VVDsKKysgICAgICAgIGlmICh0aW1lb3V0ID09IDApIHsKKysgICAgICAgICAgICAgICAgciA9IHNkX2J1c19nZXRfbWV0aG9kX2NhbGxfdGltZW91dChiLCAmdGltZW91dCk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghbS0+c2VuZGVyICYmIGItPnBhdGNoX3NlbmRlcikgeworICAgICAgICAgICAgICAgICByID0gc2RfYnVzX21lc3NhZ2Vfc2V0X3NlbmRlcihtLCBiLT5wYXRjaF9zZW5kZXIpOworQEAgLTQwNzUsMyArNDA3OCwzNiBAQCBfcHVibGljXyBpbnQgc2RfYnVzX2dldF9uX3F1ZXVlZF93cml0ZShzZF9idXMgKmJ1cywgdWludDY0X3QgKnJldCkgeworICAgICAgICAgKnJldCA9IGJ1cy0+d3F1ZXVlX3NpemU7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisrCisrX3B1YmxpY18gaW50IHNkX2J1c19zZXRfbWV0aG9kX2NhbGxfdGltZW91dChzZF9idXMgKmJ1cywgdWludDY0X3QgdXNlYykgeworKyAgICAgICAgYXNzZXJ0X3JldHVybihidXMsIC1FSU5WQUwpOworKyAgICAgICAgYXNzZXJ0X3JldHVybihidXMgPSBidXNfcmVzb2x2ZShidXMpLCAtRU5PUEtHKTsKKysKKysgICAgICAgIGJ1cy0+bWV0aG9kX2NhbGxfdGltZW91dCA9IHVzZWM7CisrICAgICAgICByZXR1cm4gMDsKKyt9CisrCisrX3B1YmxpY18gaW50IHNkX2J1c19nZXRfbWV0aG9kX2NhbGxfdGltZW91dChzZF9idXMgKmJ1cywgdWludDY0X3QgKnJldCkgeworKyAgICAgICAgY29uc3QgY2hhciAqZTsKKysgICAgICAgIHVzZWNfdCB1c2VjOworKworKyAgICAgICAgYXNzZXJ0X3JldHVybihidXMsIC1FSU5WQUwpOworKyAgICAgICAgYXNzZXJ0X3JldHVybihidXMgPSBidXNfcmVzb2x2ZShidXMpLCAtRU5PUEtHKTsKKysgICAgICAgIGFzc2VydF9yZXR1cm4ocmV0LCAtRUlOVkFMKTsKKysKKysgICAgICAgIGlmIChidXMtPm1ldGhvZF9jYWxsX3RpbWVvdXQgIT0gMCkgeworKyAgICAgICAgICAgICAgICAqcmV0ID0gYnVzLT5tZXRob2RfY2FsbF90aW1lb3V0OworKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGUgPSBzZWN1cmVfZ2V0ZW52KCJTWVNURU1EX0JVU19USU1FT1VUIik7CisrICAgICAgICBpZiAoZSAmJiBwYXJzZV9zZWMoZSwgJnVzZWMpID49IDAgJiYgdXNlYyAhPSAwKSB7CisrICAgICAgICAgICAgICAgIC8qIFNhdmUgdGhlIHBhcnNlZCB2YWx1ZSB0byBhdm9pZCBtdWx0aXBsZSBwYXJzaW5nLiBUbyBjaGFuZ2UgdGhlIHRpbWVvdXQgdmFsdWUsCisrICAgICAgICAgICAgICAgICAqIHVzZSBzZF9idXNfc2V0X21ldGhvZF9jYWxsX3RpbWVvdXQoKSBpbnN0ZWFkIG9mIHNldGVudigpLiAqLworKyAgICAgICAgICAgICAgICAqcmV0ID0gYnVzLT5tZXRob2RfY2FsbF90aW1lb3V0ID0gdXNlYzsKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICB9CisrCisrICAgICAgICAqcmV0ID0gYnVzLT5tZXRob2RfY2FsbF90aW1lb3V0ID0gQlVTX0RFRkFVTFRfVElNRU9VVDsKKysgICAgICAgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zZC1idXMuaCBiL3NyYy9zeXN0ZW1kL3NkLWJ1cy5oCitpbmRleCA1NGM0YjFjYTgzLi5jOWZkMjU0ODM0IDEwMDY0NAorLS0tIGEvc3JjL3N5c3RlbWQvc2QtYnVzLmgKKysrKyBiL3NyYy9zeXN0ZW1kL3NkLWJ1cy5oCitAQCAtMjA2LDYgKzIwNiw5IEBAIHNkX2V2ZW50ICpzZF9idXNfZ2V0X2V2ZW50KHNkX2J1cyAqYnVzKTsKKyBpbnQgc2RfYnVzX2dldF9uX3F1ZXVlZF9yZWFkKHNkX2J1cyAqYnVzLCB1aW50NjRfdCAqcmV0KTsKKyBpbnQgc2RfYnVzX2dldF9uX3F1ZXVlZF93cml0ZShzZF9idXMgKmJ1cywgdWludDY0X3QgKnJldCk7CisgCisraW50IHNkX2J1c19zZXRfbWV0aG9kX2NhbGxfdGltZW91dChzZF9idXMgKmJ1cywgdWludDY0X3QgdXNlYyk7CisraW50IHNkX2J1c19nZXRfbWV0aG9kX2NhbGxfdGltZW91dChzZF9idXMgKmJ1cywgdWludDY0X3QgKnJldCk7CisrCisgaW50IHNkX2J1c19hZGRfZmlsdGVyKHNkX2J1cyAqYnVzLCBzZF9idXNfc2xvdCAqKnNsb3QsIHNkX2J1c19tZXNzYWdlX2hhbmRsZXJfdCBjYWxsYmFjaywgdm9pZCAqdXNlcmRhdGEpOworIGludCBzZF9idXNfYWRkX21hdGNoKHNkX2J1cyAqYnVzLCBzZF9idXNfc2xvdCAqKnNsb3QsIGNvbnN0IGNoYXIgKm1hdGNoLCBzZF9idXNfbWVzc2FnZV9oYW5kbGVyX3QgY2FsbGJhY2ssIHZvaWQgKnVzZXJkYXRhKTsKKyBpbnQgc2RfYnVzX2FkZF9tYXRjaF9hc3luYyhzZF9idXMgKmJ1cywgc2RfYnVzX3Nsb3QgKipzbG90LCBjb25zdCBjaGFyICptYXRjaCwgc2RfYnVzX21lc3NhZ2VfaGFuZGxlcl90IGNhbGxiYWNrLCBzZF9idXNfbWVzc2FnZV9oYW5kbGVyX3QgaW5zdGFsbF9jYWxsYmFjaywgdm9pZCAqdXNlcmRhdGEpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Y0YjM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLUZyb20gYzkzZWI2Y2RlYzAzZjVlMjQzZTU5ZTk1ZGM0OTI3M2ZjYjkwZTdjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjMgRmViIDIwMTggMTA6MjM6NDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8zMV0gYmluZm10OiBEb24ndCBpbnN0YWxsIGRlcGVuZGVuY3kgbGlua3MgYXQgaW5zdGFsbCB0aW1lCi0gZm9yIHRoZSBiaW5mbXQgc2VydmljZXMKLQotdXNlIFtJbnN0YWxsXSBibG9ja3Mgc28gdGhhdCB0aGV5IGdldCBjcmVhdGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgZW5hYmxlZAotbGlrZSBhIHRyYWRpdGlvbmFsIHNlcnZpY2UuCi0KLVRoZSBbSW5zdGFsbF0gYmxvY2tzIHdlcmUgcmVqZWN0ZWQgdXBzdHJlYW0gYXMgdGhleSBkb24ndCBoYXZlIGEgd2F5IHRvCi0iZW5hYmxlIiBpdCBvbiBpbnN0YWxsIHdpdGhvdXQgc3RhdGljIHN5bWxpbmtzIHdoaWNoIGNhbid0IGJlIGRpc2FibGVkLAotb25seSBtYXNrZWQuIFdlIGhvd2V2ZXIgY2FuIGRvIHRoYXQgaW4gYSBwb3N0aW5zdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB1bml0cy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrLS0tLQotIHVuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCB8IDMgKysrCi0gdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiAgICAgICAgIHwgNCArKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91bml0cy9tZXNvbi5idWlsZCBiL3VuaXRzL21lc29uLmJ1aWxkCi1pbmRleCA4MTRlZTc4ODUuLjQ5YWNlMGQwZiAxMDA2NDQKLS0tLSBhL3VuaXRzL21lc29uLmJ1aWxkCi0rKysgYi91bml0cy9tZXNvbi5idWlsZAotQEAgLTYwLDggKzYwLDcgQEAgdW5pdHMgPSBbCi0gICAgICAgICBbJ3Bvd2Vyb2ZmLnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgJ3J1bmxldmVsMC50YXJnZXQnXSwKLSAgICAgICAgIFsncHJpbnRlci50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICAnJ10sCi0tICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCcsICAgJ0VOQUJMRV9CSU5GTVQnLAotLSAgICAgICAgICdzeXNpbml0LnRhcmdldC53YW50cy8nXSwKLSsgICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50JywgICAnRU5BQkxFX0JJTkZNVCddLAotICAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5tb3VudCcsICAgICAgICdFTkFCTEVfQklORk1UJ10sCi0gICAgICAgICBbJ3JlYm9vdC50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgJ3J1bmxldmVsNi50YXJnZXQgY3RybC1hbHQtZGVsLnRhcmdldCddLAotQEAgLTE0NCw4ICsxNDMsNyBAQCBpbl91bml0cyA9IFsKLSAgICAgICAgIFsnc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlJywgJyddLAotICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UnLCAgICAnJ10sCi0gICAgICAgICBbJ3N5c3RlbWQtYmFja2xpZ2h0QC5zZXJ2aWNlJywgICAgICAgICAgICdFTkFCTEVfQkFDS0xJR0hUJ10sCi0tICAgICAgICBbJ3N5c3RlbWQtYmluZm10LnNlcnZpY2UnLCAgICAgICAgICAgICAgICdFTkFCTEVfQklORk1UJywKLS0gICAgICAgICAnc3lzaW5pdC50YXJnZXQud2FudHMvJ10sCi0rICAgICAgICBbJ3N5c3RlbWQtYmluZm10LnNlcnZpY2UnLCAgICAgICAgICAgICAgICdFTkFCTEVfQklORk1UJ10sCi0gICAgICAgICBbJ3N5c3RlbWQtY29yZWR1bXBALnNlcnZpY2UnLCAgICAgICAgICAgICdFTkFCTEVfQ09SRURVTVAnXSwKLSAgICAgICAgIFsnc3lzdGVtZC1leGl0LnNlcnZpY2UnLCAgICAgICAgICAgICAgICAgJyddLAotICAgICAgICAgWydzeXN0ZW1kLWZpcnN0Ym9vdC5zZXJ2aWNlJywgICAgICAgICAgICAnRU5BQkxFX0ZJUlNUQk9PVCcsCi1kaWZmIC0tZ2l0IGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IGIvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci1pbmRleCAzMGE2YmM5OTEuLjQyMzFmM2I3MCAxMDA2NDQKLS0tLSBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotKysrIGIvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci1AQCAtMTgsMyArMTgsNiBAQCBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotIAotIFtBdXRvbW91bnRdCi0gV2hlcmU9L3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjCi0rCi0rW0luc3RhbGxdCi0rV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKLWRpZmYgLS1naXQgYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgotaW5kZXggZGY5Mzk2ZDg5Li4wNjg3ZjQ2NDggMTAwNjQ0Ci0tLS0gYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi0rKysgYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi1AQCAtMTMsNiArMTMsNyBAQCBEb2N1bWVudGF0aW9uPW1hbjpzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlKDgpIG1hbjpiaW5mbXQuZCg1KQotIERvY3VtZW50YXRpb249aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRhdGlvbi9iaW5mbXRfbWlzYy50eHQKLSBEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCi0gQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAotK1dhbnRzPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotIEFmdGVyPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotIEJlZm9yZT1zeXNpbml0LnRhcmdldCBzaHV0ZG93bi50YXJnZXQKLSBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotQEAgLTI3LDMgKzI4LDYgQEAgVHlwZT1vbmVzaG90Ci0gUmVtYWluQWZ0ZXJFeGl0PXllcwotIEV4ZWNTdGFydD1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtYmluZm10Ci0gVGltZW91dFNlYz05MHMKLSsKLStbSW5zdGFsbF0KLStXYW50ZWRCeT1zeXNpbml0LnRhcmdldAotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUwZDY2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKQEAgLTAsMCArMSwxODMgQEAKK0Zyb20gZDc0YTRkZTZkYWVhNWE1MTFjMmI1NjM2YmJiNTUyYzE1YjNhNGFkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAorU3ViamVjdDogW1BBVENIXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzaWMvZm9ybWF0LXRhYmxlLmMgfCAyNyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBzcmMvYmFzaWMvdXRpbC5oICAgICAgICAgfCAgNyAtLS0tLS0tCisgc3JjL2h3ZGIvaHdkYi5jICAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCisgc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgIHwgMTYgKysrKysrKysrKy0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXRhYmxlLmMgYi9zcmMvYmFzaWMvZm9ybWF0LXRhYmxlLmMKK2luZGV4IDk0ZTc5NmQxY2EuLjliM2YzNWMyOWEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZm9ybWF0LXRhYmxlLmMKKysrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdGFibGUuYworQEAgLTc0NSwyOSArNzQ1LDI5IEBAIHN0YXRpYyBpbnQgY2VsbF9kYXRhX2NvbXBhcmUoVGFibGVEYXRhICphLCBzaXplX3QgaW5kZXhfYSwgVGFibGVEYXRhICpiLCBzaXplX3QKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgaW50IHRhYmxlX2RhdGFfY29tcGFyZShjb25zdCB2b2lkICp4LCBjb25zdCB2b2lkICp5LCB2b2lkICp1c2VyZGF0YSkgeworK3N0YXRpYyBUYWJsZSAqdXNlcl90YWJsZTsKKytzdGF0aWMgaW50IHRhYmxlX2RhdGFfY29tcGFyZShjb25zdCB2b2lkICp4LCBjb25zdCB2b2lkICp5KSB7CisgICAgICAgICBjb25zdCBzaXplX3QgKmEgPSB4LCAqYiA9IHk7CistICAgICAgICBUYWJsZSAqdCA9IHVzZXJkYXRhOworICAgICAgICAgc2l6ZV90IGk7CisgICAgICAgICBpbnQgcjsKKyAKKy0gICAgICAgIGFzc2VydCh0KTsKKy0gICAgICAgIGFzc2VydCh0LT5zb3J0X21hcCk7CisrICAgICAgICBhc3NlcnQodXNlcl90YWJsZSk7CisrICAgICAgICBhc3NlcnQodXNlcl90YWJsZS0+c29ydF9tYXApOworIAorICAgICAgICAgLyogTWFrZSBzdXJlIHRoZSBoZWFkZXIgc3RheXMgYXQgdGhlIGJlZ2lubmluZyAqLworLSAgICAgICAgaWYgKCphIDwgdC0+bl9jb2x1bW5zICYmICpiIDwgdC0+bl9jb2x1bW5zKQorKyAgICAgICAgaWYgKCphIDwgdXNlcl90YWJsZS0+bl9jb2x1bW5zICYmICpiIDwgdXNlcl90YWJsZS0+bl9jb2x1bW5zKQorICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKy0gICAgICAgIGlmICgqYSA8IHQtPm5fY29sdW1ucykKKysgICAgICAgIGlmICgqYSA8IHVzZXJfdGFibGUtPm5fY29sdW1ucykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworLSAgICAgICAgaWYgKCpiIDwgdC0+bl9jb2x1bW5zKQorKyAgICAgICAgaWYgKCpiIDwgdXNlcl90YWJsZS0+bl9jb2x1bW5zKQorICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAKKyAgICAgICAgIC8qIE9yZGVyIG90aGVyIGxpbmVzIGJ5IHRoZSBzb3J0aW5nIG1hcCAqLworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHQtPm5fc29ydF9tYXA7IGkrKykgeworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHVzZXJfdGFibGUtPm5fc29ydF9tYXA7IGkrKykgeworICAgICAgICAgICAgICAgICBUYWJsZURhdGEgKmQsICpkZDsKKyAKKy0gICAgICAgICAgICAgICAgZCA9IHQtPmRhdGFbKmEgKyB0LT5zb3J0X21hcFtpXV07CistICAgICAgICAgICAgICAgIGRkID0gdC0+ZGF0YVsqYiArIHQtPnNvcnRfbWFwW2ldXTsKKysgICAgICAgICAgICAgICAgZCA9IHVzZXJfdGFibGUtPmRhdGFbKmEgKyB1c2VyX3RhYmxlLT5zb3J0X21hcFtpXV07CisrICAgICAgICAgICAgICAgIGRkID0gdXNlcl90YWJsZS0+ZGF0YVsqYiArIHVzZXJfdGFibGUtPnNvcnRfbWFwW2ldXTsKKyAKKyAgICAgICAgICAgICAgICAgciA9IGNlbGxfZGF0YV9jb21wYXJlKGQsICphLCBkZCwgKmIpOworICAgICAgICAgICAgICAgICBpZiAociAhPSAwKQorQEAgLTk2MCw3ICs5NjAsMTIgQEAgaW50IHRhYmxlX3ByaW50KFRhYmxlICp0LCBGSUxFICpmKSB7CisgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3Jvd3M7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRbaV0gPSBpICogdC0+bl9jb2x1bW5zOworIAorLSAgICAgICAgICAgICAgICBxc29ydF9yX3NhZmUoc29ydGVkLCBuX3Jvd3MsIHNpemVvZihzaXplX3QpLCB0YWJsZV9kYXRhX2NvbXBhcmUsIHQpOworKyAgICAgICAgICAgICAgICBpZiAobl9yb3dzIDw9IDEpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgICAgIGFzc2VydChzb3J0ZWQpOworKyAgICAgICAgICAgICAgICB1c2VyX3RhYmxlID0gdDsKKysgICAgICAgICAgICAgICAgcXNvcnQoc29ydGVkLCBuX3Jvd3MsIHNpemVvZihzaXplX3QpLCB0YWJsZV9kYXRhX2NvbXBhcmUpOworKyAgICAgICAgICAgICAgICB1c2VyX3RhYmxlID0gTlVMTDsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICh0LT5kaXNwbGF5X21hcCkKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5oIGIvc3JjL2Jhc2ljL3V0aWwuaAoraW5kZXggOTY5OWQyMjhmOS4uNDBlYWY1MThjYiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy91dGlsLmgKKysrKyBiL3NyYy9iYXNpYy91dGlsLmgKK0BAIC0xMDUsMTMgKzEwNSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fCisgICAgICAgICAgICAgICAgIHFzb3J0X3NhZmUoKHApLCAobiksIHNpemVvZigocClbMF0pLCAoX19jb21wYXJfZm5fdCkgX2Z1bmNfKTsgXAorICAgICAgICAgfSkKKyAKKy1zdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfcl9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCB2b2lkKiksIHZvaWQgKnVzZXJkYXRhKSB7CistICAgICAgICBpZiAobm1lbWIgPD0gMSkKKy0gICAgICAgICAgICAgICAgcmV0dXJuOworLQorLSAgICAgICAgYXNzZXJ0KGJhc2UpOworLSAgICAgICAgcXNvcnRfcihiYXNlLCBubWVtYiwgc2l6ZSwgY29tcGFyLCB1c2VyZGF0YSk7CistfQorIAorIC8qKgorICAqIE5vcm1hbCBtZW1jcHkgcmVxdWlyZXMgc3JjIHRvIGJlIG5vbm51bGwuIFdlIGRvIG5vdGhpbmcgaWYgbiBpcyAwLgorZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYworaW5kZXggMzE3Y2FkOGE2Ny4uNzAxZDU5YTFlYiAxMDA2NDQKKy0tLSBhL3NyYy9od2RiL2h3ZGIuYworKysrIGIvc3JjL2h3ZGIvaHdkYi5jCitAQCAtMTM1LDEzICsxMzUsMTIgQEAgc3RhdGljIHZvaWQgdHJpZV9mcmVlKHN0cnVjdCB0cmllICp0cmllKSB7CisgCisgREVGSU5FX1RSSVZJQUxfQ0xFQU5VUF9GVU5DKHN0cnVjdCB0cmllKiwgdHJpZV9mcmVlKTsKKyAKKy1zdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIsIHZvaWQgKmFyZykgeworK3N0YXRpYyBzdHJ1Y3QgdHJpZSAqdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllOworK3N0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2MikgeworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDEgPSB2MTsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwyID0gdjI7CistICAgICAgICBzdHJ1Y3QgdHJpZSAqdHJpZSA9IGFyZzsKKy0KKy0gICAgICAgIHJldHVybiBzdHJjbXAodHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKKy0gICAgICAgICAgICAgICAgICAgICAgdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisrICAgICAgICByZXR1cm4gc3RyY21wKHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKKysgICAgICAgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKyB9CisgCisgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorQEAgLTE2Niw3ICsxNjUsMTAgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAorICAgICAgICAgICAgICAgICB9OworIAorLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworKworICAgICAgICAgICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIDIgaWRlbnRpY2FsIHByb3BlcnRpZXMgb24gdGhlIHNhbWUgbWF0Y2gtc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNpbmNlIHdlIHByb2Nlc3MgZmlsZXMgaW4gb3JkZXIsIHdlIGp1c3QgcmVwbGFjZSB0aGUgcHJldmlvdXMgdmFsdWUuCitAQCAtMTkxLDcgKzE5Myw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmZpbGVfcHJpb3JpdHkgPSBmaWxlX3ByaW9yaXR5OworICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ubGluZV9udW1iZXIgPSBsaW5lX251bWJlcjsKKyAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOworLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYworaW5kZXggMDI0MDhhNDI4NS4uNDkxZDM2N2QxMiAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCisrKysgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYworQEAgLTExNCwxMyArMTE0LDEzIEBAIHN0YXRpYyB2b2lkIHRyaWVfbm9kZV9jbGVhbnVwKHN0cnVjdCB0cmllX25vZGUgKm5vZGUpIHsKKyAgICAgICAgIGZyZWUobm9kZSk7CisgfQorIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworIAorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTQxLDcgKzE0MSw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlcGxhY2UgZXhpc3RpbmcgZWFybGllciBrZXkgd2l0aCBuZXcgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWwtPnZhbHVlX29mZiA9IHY7CitAQCAtMTU4LDcgKzE2MCw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmtleV9vZmYgPSBrOworICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0udmFsdWVfb2ZmID0gdjsKKyAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOworLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ3ZjUyMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIDZlNjJiZTg3YTI3MjJmYmU1MzEzMTBhMWIwNTJjMTMwMWJkZjA2ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI3IEp1biAyMDE4IDE2OjA5OjI0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlIG9wdGlvbgorIGZvciBsbgorCitSZW1vdmUgZmlsZSBtYW51YWxseSB0byBhdm9pZCB0aGUgJ0ZpbGUgRXhpc3RzJyBlcnJvciB3aGVuIGNyZWF0aW5nCitzeW1saW5rLiBUaGlzIGlzIGJlY2F1c2UgdGhlIG9yaWdpbmFsICdsbicgY29tbWFuZCB1c2VzICctZicgb3B0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgNCAtLS0tCisgdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIHwgMyArKy0KKyB1bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggICAgfCA3ICsrKysrKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDA0MzMxZGQ0MS4uNmQ1ZWRjYjRlIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTU4LDEwICs1NTgsNiBAQCBlbmRmb3JlYWNoCisgCisgY29uZi5zZXRfcXVvdGVkKCdURUxJTklUJywgZ2V0X29wdGlvbigndGVsaW5pdC1wYXRoJykpCisgCistaWYgcnVuX2NvbW1hbmQoJ2xuJywgJy0tcmVsYXRpdmUnLCAnLS1oZWxwJykucmV0dXJuY29kZSgpICE9IDAKKy0gICAgICAgIGVycm9yKCdsbiBkb2VzIG5vdCBzdXBwb3J0IC0tcmVsYXRpdmUgKGFkZGVkIGluIGNvcmV1dGlscyA4LjE2KScpCistZW5kaWYKKy0KKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKyBncGVyZiA9IGZpbmRfcHJvZ3JhbSgnZ3BlcmYnKQorZGlmZiAtLWdpdCBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAoraW5kZXggNTAxY2Q0M2Q0Li5mNGU0YWM5YWMgMTAwNzU1CistLS0gYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKKysrKyBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAorQEAgLTgsNSArOCw2IEBAIG1rZGlyIC12cCAiJChkaXJuYW1lICIke0RFU1RESVI6LX0kMiIpIgorIGlmIFsgIiQoZGlybmFtZSAkMSkiID0gLiBdOyB0aGVuCisgICAgICAgICBsbiAtdmZzIC1UICIkMSIgIiR7REVTVERJUjotfSQyIgorIGVsc2UKKy0gICAgICAgIGxuIC12ZnMgLVQgLS1yZWxhdGl2ZSAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKKysgICAgICAgIHJtIC1mICIke0RFU1RESVI6LX0kMiIKKysgICAgICAgIGxuciAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKKyBmaQorZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLWFkZC13YW50cy5zaCBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAoraW5kZXggNzBmNzE3MmFlLi5hNDI2NjZhYWMgMTAwNzU1CistLS0gYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKKysrKyBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAorQEAgLTI1LDQgKzI1LDkgQEAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgICAgICAgICAgICAgOzsKKyBlc2FjCisgCistbG4gLXZmcyAtLXJlbGF0aXZlICIkdW5pdHBhdGgiICIkZGlyIgorK2lmIFsgLWQgIiRkaXIiIF07IHRoZW4KKysgICAgICAgIHJtIC1mICIkZGlyLyR1bml0IgorKyAgICAgICAgbG5yICIkdW5pdHBhdGgiICIkZGlyLyR1bml0IgorK2Vsc2UKKysgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpciIKKytmaQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNWZiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBlOTY1ZTc0OGM3MDMwZGYwNzA5ZTYzMTI4ZGIyZjAyMzU0MGEwNmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTIgU2VwIDIwMTUgMTg6NTM6MzEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xOV0gY29tcGFyaXNvbl9mbl90IGlzIGdsaWJjIHNwZWNpZmljLCB1c2UgcmF3IHNpZ25hdHVyZSBpbgorIGZ1bmN0aW9uIHBvaW50ZXIKKworbWFrZSBpdCB3b3JrIHdpdGggbXVzbCB3aGVyZSBjb21wYXJpc29uX2ZuX3QgaXMgbm90IHByb3ZpZGVkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy91dGlsLmggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9iYXNpYy91dGlsLmgKK2luZGV4IDQwZWFmNTE4Yy4uYzU4MzkyMzk3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3V0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3V0aWwuaAorQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCAqeGJzZWFyY2hfcihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCisgICogdGhhdCBvbmx5IGlmIG5tZW1iID4gMC4KKyAgKi8KKyBzdGF0aWMgaW5saW5lIHZvaWQqIGJzZWFyY2hfc2FmZShjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgCitAQCAtODksNyArODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIGJzZWFyY2hfc2FmZShjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsCisgICogTm9ybWFsIHFzb3J0IHJlcXVpcmVzIGJhc2UgdG8gYmUgbm9ubnVsbC4gSGVyZSB3ZXJlIHJlcXVpcmUKKyAgKiB0aGF0IG9ubHkgaWYgbm1lbWIgPiAwLgorICAqLworLXN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fZm5fdCBjb21wYXIpIHsKKytzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgeworICAgICAgICAgaWYgKG5tZW1iIDw9IDEpCisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM1OTVhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMGZjYjZlNjQ2NDAxMjA1ZTE3Y2M2YzEyOTQ0MWE0OTAyM2M2MmNlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDUgU2VwIDIwMTUgMDY6MzE6NDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzldIGltcGxtZW50IHN5c3RlbWQtc3lzdi1pbnN0YWxsIGZvciBPRQorCitVc2UgdXBkYXRlLXJjLmQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgc3RhdHVzIGNvbW1hbmQKK3RvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHN5c3Ygc2VydmljZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCitpbmRleCA4YzE2Y2Y5OTkuLjlmMDc4YTEyMSAxMDA3NTUKKy0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KKysrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KK0BAIC0zMiwxNyArMzIsMTcgQEAgY2FzZSAiJDEiIGluCisgICAgIGVuYWJsZSkKKyAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBlbmFibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCisgICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKKy0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZW5hYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgorKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgZGVmYXVsdHMKKyAgICAgICAgIDs7CisgICAgIGRpc2FibGUpCisgICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZGlzYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKKyAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQorLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBkaXNhYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgorKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgcmVtb3ZlCisgICAgICAgICA7OworICAgICBpcy1lbmFibGVkKQorICAgICAgICAgIyBleGl0IHdpdGggMCBpZiAkTkFNRSBpcyBlbmFibGVkLCBub24temVybyBpZiBpdCBpcyBkaXNhYmxlZAorICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCistICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGNoZWNraW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIC9ldGMvaW5pdC5kLyROQU1FIHN0YXR1cworICAgICAgICAgOzsKKyAgICAgKikKKyAgICAgICAgIHVzYWdlIDs7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZjFiMjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSA4YjlkMTk0ZTk1Njg0OGUwZDFmYjM1ZWYyZmJhNzE0YjI2OTFlYmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMDo0Nzo0OSAtMDgwMAotU3ViamVjdDogW1BBVENIIDAzLzMxXSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlCi0gb3B0aW9uIGZvciBsbgotCi1SZW1vdmUgZmlsZSBtYW51YWxseSB0byBhdm9pZCB0aGUgJ0ZpbGUgRXhpc3RzJyBlcnJvciB3aGVuIGNyZWF0aW5nCi1zeW1saW5rLiBUaGlzIGlzIGJlY2F1c2UgdGhlIG9yaWdpbmFsICdsbicgY29tbWFuZCB1c2VzICctZicgb3B0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgNCAtLS0tCi0gdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIHwgMyArKy0KLSB1bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggICAgfCA3ICsrKysrKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDM2YTYyZDI4MC4uNzM0N2VhODgwIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNTcwLDEwICs1NzAsNiBAQCBlbmRmb3JlYWNoCi0gCi0gY29uZi5zZXRfcXVvdGVkKCdURUxJTklUJywgZ2V0X29wdGlvbigndGVsaW5pdC1wYXRoJykpCi0gCi0taWYgcnVuX2NvbW1hbmQoJ2xuJywgJy0tcmVsYXRpdmUnLCAnLS1oZWxwJykucmV0dXJuY29kZSgpICE9IDAKLS0gICAgICAgIGVycm9yKCdsbiBkb2VzIG5vdCBzdXBwb3J0IC0tcmVsYXRpdmUnKQotLWVuZGlmCi0tCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi0gZ3BlcmYgPSBmaW5kX3Byb2dyYW0oJ2dwZXJmJykKLWRpZmYgLS1naXQgYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKLWluZGV4IDUwMWNkNDNkNC4uZjRlNGFjOWFjIDEwMDc1NQotLS0tIGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi0rKysgYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKLUBAIC04LDUgKzgsNiBAQCBta2RpciAtdnAgIiQoZGlybmFtZSAiJHtERVNURElSOi19JDIiKSIKLSBpZiBbICIkKGRpcm5hbWUgJDEpIiA9IC4gXTsgdGhlbgotICAgICAgICAgbG4gLXZmcyAtVCAiJDEiICIke0RFU1RESVI6LX0kMiIKLSBlbHNlCi0tICAgICAgICBsbiAtdmZzIC1UIC0tcmVsYXRpdmUgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCi0rICAgICAgICBybSAtZiAiJHtERVNURElSOi19JDIiCi0rICAgICAgICBsbnIgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCi0gZmkKLWRpZmYgLS1naXQgYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLWluZGV4IDcwZjcxNzJhZS4uYTQyNjY2YWFjIDEwMDc1NQotLS0tIGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCi0rKysgYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLUBAIC0yNSw0ICsyNSw5IEBAIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgICAgICAgICAgICAgIDs7Ci0gZXNhYwotIAotLWxuIC12ZnMgLS1yZWxhdGl2ZSAiJHVuaXRwYXRoIiAiJGRpciIKLStpZiBbIC1kICIkZGlyIiBdOyB0aGVuCi0rICAgICAgICBybSAtZiAiJGRpci8kdW5pdCIKLSsgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpci8kdW5pdCIKLStlbHNlCi0rICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIiCi0rZmkKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NTJhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDMyIEBACitGcm9tIDU4MmFmN2VjMTMxMzFkZmNjNjIwZWQ4MWRlN2IyMTE5MTRjNGNiMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDEzOjQzOjQ5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTldIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgc3JjL2Jhc2ljL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgNSArCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKKyBzcmMvYmFzaWMvc3RkaW8tdXRpbC5oICAgICAgICAgIHwgICAyICstCisgc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICB8ICAgMiArLQorIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggZTA0NWI5MjI0Li44YzE2YmM5NzkgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC01OTgsNiArNTk4LDcgQEAgZm9yZWFjaCBoZWFkZXIgOiBbJ2NyeXB0LmgnLAorICAgICAgICAgICAgICAgICAgICdsaW51eC9idHJmcy5oJywKKyAgICAgICAgICAgICAgICAgICAnbGludXgvbWVtZmQuaCcsCisgICAgICAgICAgICAgICAgICAgJ2xpbnV4L3ZtX3NvY2tldHMuaCcsCisrICAgICAgICAgICAgICAgICAgJ3ByaW50Zi5oJywKKyAgICAgICAgICAgICAgICAgICAnc3lzL2F1eHYuaCcsCisgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL21lbWNoZWNrLmgnLAorICAgICAgICAgICAgICAgICAgICd2YWxncmluZC92YWxncmluZC5oJywKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWVzb24uYnVpbGQgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKK2luZGV4IDMxNjI1YjE3OC4uMGMyNzUyOGU3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCisrKysgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKK0BAIC0zMDIsNiArMzAyLDExIEBAIGZvcmVhY2ggaXRlbSA6IFtbJ2FmJywgICAgIGFmX2xpc3RfdHh0LCAgICAgJ2FmJywgICAgICAgICAnJ10sCisgZW5kZm9yZWFjaAorIAorIGJhc2ljX3NvdXJjZXMgKz0gW21pc3NpbmdfaF0gKyBnZW5lcmF0ZWRfZ3BlcmZfaGVhZGVycworKworK2lmIGNvbmYuZ2V0KCdIQVZFX1BSSU5URl9IJykgIT0gMQorKyAgICAgICAgYmFzaWNfc291cmNlcyArPSBbZmlsZXMoJ3BhcnNlLXByaW50Zi1mb3JtYXQuYycpXQorK2VuZGlmCisrCisgYmFzaWNfZ2NyeXB0X3NvdXJjZXMgPSBmaWxlcygKKyAgICAgICAgICdnY3J5cHQtdXRpbC5jJywKKyAgICAgICAgICdnY3J5cHQtdXRpbC5oJykKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uNDk0MzdlNTQ0CistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCitAQCAtMCwwICsxLDI3MyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIG11c2wgQyBsaWJyYXJ5CisrICBDb3B5cmlnaHQgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbm9uYXJnKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0gd2hpbGUgKCpmbXQrKyAhPSAnJScpOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbnVtKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBmb3IgKDsqZm10ID49ICcwJyAmJiAqZm10IDw9ICc5JzsgZm10KyspCisrICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CisrICAgICAgICByZXR1cm4gZm10OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9hcmduKGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90ICphcmcpCisreworKyAgICAgICAgY29uc3QgY2hhciAqcCA9IGZtdDsKKysgICAgICAgIHNpemVfdCB2YWwgPSAwOworKworKyAgICAgICAgaWYgKCpwIDwgJzEnIHx8ICpwID4gJzknKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICB2YWwgPSAxMCp2YWwgKyAoKnArKyAtICcwJyk7CisrICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKysKKysgICAgICAgIGlmICgqcCAhPSAnJCcpCisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICAqYXJnID0gdmFsOworKyAgICAgICAgcmV0dXJuIHArMTsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfZmxhZ3MoY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIHdoaWxlICgxKSB7CisrICAgICAgICAgICAgICAgIHN3aXRjaCAoKmZtdCkgeworKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnMCc6CisrICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorKyAgICAgICAgICAgICAgICBjYXNlICcgJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnKyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnSSc6CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0KKyt9CisrCisrZW51bSBzdGF0ZSB7CisrICAgICAgICBCQVJFLAorKyAgICAgICAgTFBSRSwKKysgICAgICAgIExMUFJFLAorKyAgICAgICAgSFBSRSwKKysgICAgICAgIEhIUFJFLAorKyAgICAgICAgQklHTFBSRSwKKysgICAgICAgIFpUUFJFLAorKyAgICAgICAgSlBSRSwKKysgICAgICAgIFNUT1AKKyt9OworKworK2VudW0gdHlwZSB7CisrICAgICAgICBOT05FLAorKyAgICAgICAgUFRSLAorKyAgICAgICAgSU5ULAorKyAgICAgICAgVUlOVCwKKysgICAgICAgIFVMTE9ORywKKysgICAgICAgIExPTkcsCisrICAgICAgICBVTE9ORywKKysgICAgICAgIFNIT1JULAorKyAgICAgICAgVVNIT1JULAorKyAgICAgICAgQ0hBUiwKKysgICAgICAgIFVDSEFSLAorKyAgICAgICAgTExPTkcsCisrICAgICAgICBTSVpFVCwKKysgICAgICAgIElNQVgsCisrICAgICAgICBVTUFYLAorKyAgICAgICAgUERJRkYsCisrICAgICAgICBVSVBUUiwKKysgICAgICAgIERCTCwKKysgICAgICAgIExEQkwsCisrICAgICAgICBNQVhUWVBFCisrfTsKKysKKytzdGF0aWMgY29uc3Qgc2hvcnQgcGFfdHlwZXNbTUFYVFlQRV0gPSB7CisrICAgICAgICBbTk9ORV0gICA9IFBBX0lOVCwKKysgICAgICAgIFtQVFJdICAgID0gUEFfUE9JTlRFUiwKKysgICAgICAgIFtJTlRdICAgID0gUEFfSU5ULAorKyAgICAgICAgW1VJTlRdICAgPSBQQV9JTlQsCisrICAgICAgICBbVUxMT05HXSA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW0xPTkddICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbVUxPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtTSE9SVF0gID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtVU0hPUlRdID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtDSEFSXSAgID0gUEFfQ0hBUiwKKysgICAgICAgIFtVQ0hBUl0gID0gUEFfQ0hBUiwKKysgICAgICAgIFtMTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbU0laRVRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtJTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1BESUZGXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtVSVBUUl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW0RCTF0gICAgPSBQQV9ET1VCTEUsCisrICAgICAgICBbTERCTF0gICA9IFBBX0RPVUJMRSB8IFBBX0ZMQUdfTE9OR19ET1VCTEUKKyt9OworKworKyNkZWZpbmUgUyh4KSBbKHgpLSdBJ10KKysjZGVmaW5lIEUoeCkgKFNUT1AgKyAoeCkpCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3RhdGVzW11bJ3onLSdBJysxXSA9IHsKKysgICAgICAgIHsgLyogMDogYmFyZSB0eXBlcyAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElOVCksIFMoJ2knKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVSU5UKSxTKCd1JykgPSBFKFVJTlQpLFMoJ3gnKSA9IEUoVUlOVCksIFMoJ1gnKSA9IEUoVUlOVCksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgUygnZicpID0gRShEQkwpLCBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgUygnRicpID0gRShEQkwpLCBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoQ0hBUiksUygnQycpID0gRShJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdzJykgPSBFKFBUUiksIFMoJ1MnKSA9IEUoUFRSKSwgUygncCcpID0gRShVSVBUUiksUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdtJykgPSBFKE5PTkUpLAorKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMUFJFLCAgIFMoJ2gnKSA9IEhQUkUsIFMoJ0wnKSA9IEJJR0xQUkUsCisrICAgICAgICAgICAgICAgIFMoJ3onKSA9IFpUUFJFLCAgUygnaicpID0gSlBSRSwgUygndCcpID0gWlRQUkUKKysgICAgICAgIH0sIHsgLyogMTogbC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExPTkcpLCBTKCdpJykgPSBFKExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMT05HKSxTKCd1JykgPSBFKFVMT05HKSxTKCd4JykgPSBFKFVMT05HKSxTKCdYJykgPSBFKFVMT05HKSwKKysgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCAgUygnZicpID0gRShEQkwpLCAgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksICBTKCdGJykgPSBFKERCTCksICBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoSU5UKSwgIFMoJ3MnKSA9IEUoUFRSKSwgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTExQUkUKKysgICAgICAgIH0sIHsgLyogMjogbGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMTE9ORyksIFMoJ2knKSA9IEUoTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMTE9ORyksUygndScpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVMTE9ORyksUygnWCcpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogMzogaC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFNIT1JUKSwgUygnaScpID0gRShTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVVNIT1JUKSxTKCd1JykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVVNIT1JUKSxTKCdYJykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnaCcpID0gSEhQUkUKKysgICAgICAgIH0sIHsgLyogNDogaGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShDSEFSKSwgUygnaScpID0gRShDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVQ0hBUiksUygndScpID0gRShVQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUNIQVIpLFMoJ1gnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNTogTC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKExEQkwpLFMoJ2YnKSA9IEUoTERCTCksUygnZycpID0gRShMREJMKSwgUygnYScpID0gRShMREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShMREJMKSxTKCdGJykgPSBFKExEQkwpLFMoJ0cnKSA9IEUoTERCTCksIFMoJ0EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA2OiB6LSBvciB0LXByZWZpeGVkIChhc3N1bWVkIHRvIGJlIHNhbWUgc2l6ZSkgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShQRElGRiksUygnaScpID0gRShQRElGRiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoU0laRVQpLFMoJ3UnKSA9IEUoU0laRVQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFNJWkVUKSxTKCdYJykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDc6IGotcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTUFYKSwgUygnaScpID0gRShJTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTUFYKSwgUygndScpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTUFYKSwgUygnWCcpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9CisrfTsKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKQorK3sKKysgICAgICAgIHNpemVfdCBpID0gMDsKKysgICAgICAgIHNpemVfdCBsYXN0ID0gMDsKKysKKysgICAgICAgIG1lbXNldCh0eXBlcywgMCwgbik7CisrCisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzaXplX3QgYXJnOworKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CisrCisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbm9uYXJnKGZtdCk7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGFyZyA9IDA7CisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQsICZhcmcpOworKyAgICAgICAgICAgICAgICAvKiBmbGFncyAqLworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2ZsYWdzKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHdpZHRoICovCisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3YXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZ3YXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd2FyZzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA8PSBuICYmIHR5cGVzW3dhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3dhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHByZWNpc2lvbiAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJnBhcmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHBhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA8PSBuICYmIHR5cGVzW3BhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbcGFyZy0xXSA9IElOVDsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy0nKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBtb2RpZmllciBhbmQgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KKysgICAgICAgICAgICAgICAgc3RhdGUgPSBCQVJFOworKyAgICAgICAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKmZtdCsrOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJ0EnIHx8IGMgPiAneicpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlc1tzdGF0ZV1TKGMpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlIDwgU1RPUCk7CisrCisrICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBFKE5PTkUpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgICAgICAgICBpZiAoYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKytpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gYXJnOworKyAgICAgICAgICAgICAgICBpZiAoYXJnIDw9IG4pCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbYXJnLTFdID0gc3RhdGUgLSBTVE9QOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGxhc3QgPiBuKQorKyAgICAgICAgICAgICAgICBsYXN0ID0gbjsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCisrICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gcGFfdHlwZXNbdHlwZXNbaV1dOworKworKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi40N2JlNzUyMmQKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK0BAIC0wLDAgKzEsNTcgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5CisrICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNwcmFnbWEgb25jZQorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaWYgSEFWRV9QUklOVEZfSAorKyNpbmNsdWRlIDxwcmludGYuaD4KKysjZWxzZQorKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKytlbnVtIHsJCQkJLyogQyB0eXBlOiAqLworKyAgUEFfSU5ULAkJCS8qIGludCAqLworKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLworKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCisrICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KKysgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KKysgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCisrICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLworKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLworKyAgUEFfTEFTVAorK307CisrCisrLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KKysjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQorKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORworKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQorKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCisrI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7CisrCisrI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAoraW5kZXggNzNjMDMyNzRjLi4zMDE5MmNkNzEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCitAQCAtMSwxMiArMSwxMiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAjcHJhZ21hIG9uY2UKKyAKKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorIAorICNkZWZpbmUgc25wcmludGZfb2soYnVmLCBsZW4sIGZtdCwgLi4uKSBcCisgICAgICAgICAoKHNpemVfdCkgc25wcmludGYoYnVmLCBsZW4sIGZtdCwgX19WQV9BUkdTX18pIDwgKGxlbikpCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworaW5kZXggYTA2MjE1MjRhLi42NWJjYmNkMmUgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK0BAIC0yLDcgKzIsNiBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxwcmludGYuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CitAQCAtMjEsNiArMjAsNyBAQAorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorIAorICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNmZGI1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNzBkNDU2ZmIyMWRlMmE4MDY5N2ZhMzY0ZjA4NDc1MzM5ZDYzOTZjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDUgU2VwIDIwMTUgMDY6MzE6NDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8zMV0gaW1wbG1lbnQgc3lzdGVtZC1zeXN2LWluc3RhbGwgZm9yIE9FCi0KLVVzZSB1cGRhdGUtcmMuZCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBzdGF0dXMgY29tbWFuZAotdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3lzdiBzZXJ2aWNlCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLWluZGV4IGE1M2EzZTYyMi4uNWQ4NzdiMDZlIDEwMDc1NQotLS0tIGEvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotKysrIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotQEAgLTMwLDE3ICszMCwxNyBAQCBjYXNlICIkMSIgaW4KLSAgICAgZW5hYmxlKQotICAgICAgICAgIyBjYWxsIHRoZSBjb21tYW5kIHRvIGVuYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKLSAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQotLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBlbmFibGluZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCi0rICAgICAgICB1cGRhdGUtcmMuZCAtZiAkTkFNRSBkZWZhdWx0cwotICAgICAgICAgOzsKLSAgICAgZGlzYWJsZSkKLSAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBkaXNhYmxlIFN5c1YgaW5pdCBzY3JpcHQgJE5BTUUgaGVyZQotICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCi0tICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGRpc2FibGluZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCi0rICAgICAgICB1cGRhdGUtcmMuZCAtZiAkTkFNRSByZW1vdmUKLSAgICAgICAgIDs7Ci0gICAgIGlzLWVuYWJsZWQpCi0gICAgICAgICAjIGV4aXQgd2l0aCAwIGlmICROQU1FIGlzIGVuYWJsZWQsIG5vbi16ZXJvIGlmIGl0IGlzIGRpc2FibGVkCi0gICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKLS0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogY2hlY2tpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgL2V0Yy9pbml0LmQvJE5BTUUgc3RhdHVzCi0gICAgICAgICA7OwotICAgICAqKQotICAgICAgICAgdXNhZ2UgOzsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMzdjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNWQ4MTI4ZjM4MzJmZDExZmQwNDZkMWQxYWQ4NmM0ZWU3YmMxZGZmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6NDE6MTMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzldIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKKworcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKK0NPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCisvZGV2L2hkKi4gUGF0Y2ggcmVqZWN0ZWQgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFIGlzIGRlcHJlY2F0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTI3Nl0KKworU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHJ1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcworaW5kZXggOGRkYjc1NzdjLi44MTFlOTQ4YWQgMTAwNjQ0CistLS0gYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKKysrKyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcworQEAgLTcsNyArNyw3IEBAIEFDVElPTj09InJlbW92ZSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgRU5We1VERVZfRElTQUJMRV9QRVJTSVNURU5UX1NUT1JBR0VfUlVMRVNfRkxBR309PSIxIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKyAKKyBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCistS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKytLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKyAKKyAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKKyBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzcwODcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDhiODI2NjNhZWVlZGY5Y2E1OGUzYjk3MTE2YjRjNGRhNTIyOWUwZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI3IEp1biAyMDE4IDE2OjQ2OjQ1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNS85XSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKKworT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKK3N5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKK3Nob3VsZCBiZS4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1Vwc3RyZWFtIHdhbnRzIHRvIGhhdmUgYSB1bmlmaWVkIGhpZXJhcmNoeSB3aGVyZSBldmVyeW9uZSBpcwordXNpbmcgdGhlIHNhbWUgcm9vdCBmb2xkZXIuCitodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy81NDEKKworU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgfCA3ICsrKysrKysKKyBtZXNvbl9vcHRpb25zLnR4dCB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNmQ1ZWRjYjRlLi4zMjMxNDZmZTEgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC04OSw2ICs4OSwxMSBAQCBpZiByb290bGliZGlyID09ICcnCisgICAgICAgICByb290bGliZGlyID0gam9pbl9wYXRocyhyb290cHJlZml4ZGlyLCBsaWJkaXIuc3BsaXQoJy8nKVstMV0pCisgZW5kaWYKKyAKKytyb290aG9tZWRpciA9IGdldF9vcHRpb24oJ3Jvb3Rob21lZGlyJykKKytpZiByb290aG9tZWRpciA9PSAnJworKyAgICAgICAgcm9vdGhvbWVkaXIgPSAnL3Jvb3QnCisrZW5kaWYKKysKKyAjIERpcnMgb2YgZXh0ZXJuYWwgcGFja2FnZXMKKyBwa2djb25maWdkYXRhZGlyID0gam9pbl9wYXRocyhkYXRhZGlyLCAncGtnY29uZmlnJykKKyBwa2djb25maWdsaWJkaXIgPSBqb2luX3BhdGhzKGxpYmRpciwgJ3BrZ2NvbmZpZycpCitAQCAtMjEwLDYgKzIxNSw3IEBAIGNvbmYuc2V0X3F1b3RlZCgnVURFVkxJQkVYRUNESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRldmxpYmV4ZWNkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdQT0xLSVRfQUdFTlRfQklOQVJZX1BBVEgnLCAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKGJpbmRpciwgJ3BrdHR5YWdlbnQnKSkKKyBjb25mLnNldF9xdW90ZWQoJ0xJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmRpcikKKyBjb25mLnNldF9xdW90ZWQoJ1JPT1RMSUJESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJkaXIpCisrY29uZi5zZXRfcXVvdGVkKCdST09USE9NRURJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290aG9tZWRpcikKKyBjb25mLnNldF9xdW90ZWQoJ1JPT1RMSUJFWEVDRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJleGVjZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnQk9PVExJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxpYmRpcikKKyBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTURfUFVMTF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocm9vdGxpYmV4ZWNkaXIsICdzeXN0ZW1kLXB1bGwnKSkKK0BAIC0yMjgsNiArMjM0LDcgQEAgc3Vic3RzLnNldCgncHJlZml4JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhkaXIpCisgc3Vic3RzLnNldCgnZXhlY19wcmVmaXgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhkaXIpCisgc3Vic3RzLnNldCgnbGliZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJkaXIpCisgc3Vic3RzLnNldCgncm9vdGxpYmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290bGliZGlyKQorK3N1YnN0cy5zZXQoJ3Jvb3Rob21lZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGhvbWVkaXIpCisgc3Vic3RzLnNldCgnaW5jbHVkZWRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZGlyKQorIHN1YnN0cy5zZXQoJ3BrZ3N5c2NvbmZkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnc3lzY29uZmRpcikKKyBzdWJzdHMuc2V0KCdiaW5kaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpcikKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCAxNmMxZjJiMmYuLmFhOWEzMzM2OCAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTksNiArOSw4IEBAIG9wdGlvbigncm9vdGxpYmRpcicsIHR5cGUgOiAnc3RyaW5nJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnJydbL3Vzcl0vbGliL3g4Nl82NC1saW51eC1nbnUgb3Igc3VjaCcnJykKKyBvcHRpb24oJ3Jvb3RwcmVmaXgnLCB0eXBlIDogJ3N0cmluZycsCisgICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgcHJlZml4JycnKQorK29wdGlvbigncm9vdGhvbWVkaXInLCB0eXBlIDogJ3N0cmluZycsCisrICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnknJycpCisgb3B0aW9uKCdsaW5rLXVkZXYtc2hhcmVkJywgdHlwZSA6ICdib29sZWFuJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnbGluayBzeXN0ZW1kLXVkZXYgYW5kIGl0cyBoZWxwZXJzIHRvIGxpYnN5c3RlbWQtc2hhcmVkLnNvJykKKyBvcHRpb24oJ2xpbmstc3lzdGVtY3RsLXNoYXJlZCcsIHR5cGU6ICdib29sZWFuJywKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtaW5jbHVkZS1nc2hhZG93LW9ubHktaWYtRU5BQkxFX0dTSEFET1ctaXMtMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtaW5jbHVkZS1nc2hhZG93LW9ubHktaWYtRU5BQkxFX0dTSEFET1ctaXMtMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDVmYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1pbmNsdWRlLWdzaGFkb3ctb25seS1pZi1FTkFCTEVfR1NIQURPVy1pcy0xLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYTJjNGQ0Njk0NDg5MjE3NDkzMDEzNTY3MjUwODM4OWEwNGUxOTFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTM6NTM6MjkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNS8xOV0gaW5jbHVkZSBnc2hhZG93IG9ubHkgaWYgRU5BQkxFX0dTSEFET1cgaXMgMQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2xdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy91c2VyLXV0aWwuaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXNlci11dGlsLmggYi9zcmMvYmFzaWMvdXNlci11dGlsLmgKK2luZGV4IGI3NGYxNjg4NS4uZjljMWUyOWM0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvdXNlci11dGlsLmgKK0BAIC0yLDcgKzIsOSBAQAorICNwcmFnbWEgb25jZQorIAorICNpbmNsdWRlIDxncnAuaD4KKysjaWYgRU5BQkxFX0dTSEFET1cKKyAjaW5jbHVkZSA8Z3NoYWRvdy5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxwd2QuaD4KKyAjaW5jbHVkZSA8c2hhZG93Lmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDQyMWM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDdiNWIzNDk5MzAwMmI0NDE4YmE4YTNjMmFlNjYxYTczMzdmZDhlZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMzFdIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gUGF0Y2ggcmVqZWN0ZWQgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFIGlzIGRlcHJlY2F0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTI3Nl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHJ1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotaW5kZXggMGRlOGNmM2ExLi5kM2Y1OGYxNTMgMTAwNjQ0Ci0tLS0gYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLSsrKyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotQEAgLTcsNyArNyw3IEBAIEFDVElPTj09InJlbW92ZSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gRU5We1VERVZfRElTQUJMRV9QRVJTSVNURU5UX1NUT1JBR0VfUlVMRVNfRkxBR309PSIxIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSAKLSBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0tS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLStLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSAKLSAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKLSBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmE5NjYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA5ZDYzMjI3NDIwZjBjNGYwOTNjMWMyMDY2ZWFmZTJiNjE1MjA3MGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxMzo0NzozNyArMDgwMAotU3ViamVjdDogW1BBVENIIDA2LzMxXSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKLQotT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKLXN5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKLXNob3VsZCBiZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLVVwc3RyZWFtIHdhbnRzIHRvIGhhdmUgYSB1bmlmaWVkIGhpZXJhcmNoeSB3aGVyZSBldmVyeW9uZSBpcwotdXNpbmcgdGhlIHNhbWUgcm9vdCBmb2xkZXIuCi1odHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy81NDEKLQotU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgfCA4ICsrKysrKysrCi0gbWVzb25fb3B0aW9ucy50eHQgfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA3MzQ3ZWE4ODAuLjkxODEwMWQ2YiAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTk0LDYgKzk0LDExIEBAIGlmIHJvb3RsaWJkaXIgPT0gJycKLSAgICAgICAgIHJvb3RsaWJkaXIgPSBqb2luX3BhdGhzKHJvb3RwcmVmaXhkaXIsIGxpYmRpci5zcGxpdCgnLycpWy0xXSkKLSBlbmRpZgotIAotK3Jvb3Rob21lZGlyID0gZ2V0X29wdGlvbigncm9vdGhvbWVkaXInKQotK2lmIHJvb3Rob21lZGlyID09ICcnCi0rICAgICAgICByb290aG9tZWRpciA9ICcvcm9vdCcKLStlbmRpZgotKwotICMgRGlycyBvZiBleHRlcm5hbCBwYWNrYWdlcwotIHBrZ2NvbmZpZ2RhdGFkaXIgPSBqb2luX3BhdGhzKGRhdGFkaXIsICdwa2djb25maWcnKQotIHBrZ2NvbmZpZ2xpYmRpciA9IGpvaW5fcGF0aHMobGliZGlyLCAncGtnY29uZmlnJykKLUBAIC0yMDUsNiArMjEwLDcgQEAgY29uZi5zZXRfcXVvdGVkKCdVREVWTElCRVhFQ0RJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZGV2bGliZXhlY2RpcikKLSBjb25mLnNldF9xdW90ZWQoJ1BPTEtJVF9BR0VOVF9CSU5BUllfUEFUSCcsICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMoYmluZGlyLCAncGt0dHlhZ2VudCcpKQotIGNvbmYuc2V0X3F1b3RlZCgnTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliZGlyKQotIGNvbmYuc2V0X3F1b3RlZCgnUk9PVExJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmRpcikKLStjb25mLnNldF9xdW90ZWQoJ1JPT1RIT01FRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rob21lZGlyKQotIGNvbmYuc2V0X3F1b3RlZCgnUk9PVExJQkVYRUNESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmV4ZWNkaXIpCi0gY29uZi5zZXRfcXVvdGVkKCdCT09UTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290bGliZGlyKQotIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNRF9QVUxMX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyb290bGliZXhlY2RpciwgJ3N5c3RlbWQtcHVsbCcpKQotQEAgLTIyMSw2ICsyMjcsNyBAQCBzdWJzdHMuc2V0KCdwcmVmaXgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGRpcikKLSBzdWJzdHMuc2V0KCdleGVjX3ByZWZpeCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGRpcikKLSBzdWJzdHMuc2V0KCdsaWJkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmRpcikKLSBzdWJzdHMuc2V0KCdyb290bGliZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJkaXIpCi0rc3Vic3RzLnNldCgncm9vdGhvbWVkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290aG9tZWRpcikKLSBzdWJzdHMuc2V0KCdpbmNsdWRlZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkaXIpCi0gc3Vic3RzLnNldCgncGtnc3lzY29uZmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dzeXNjb25mZGlyKQotIHN1YnN0cy5zZXQoJ2JpbmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGlyKQotQEAgLTI3MDUsNiArMjcxMiw3IEBAIHN0YXR1cyA9IFsKLSAgICAgICAgICdpbmNsdWRlIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGluY2x1ZGVkaXIpLAotICAgICAgICAgJ2xpYiBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQobGliZGlyKSwKLSAgICAgICAgICdyb290bGliIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHJvb3RsaWJkaXIpLAotKyAgICAgICAgJ3Jvb3Rob21lIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocm9vdGhvbWVkaXIpLAotICAgICAgICAgJ1N5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdmluaXRfcGF0aCksCi0gICAgICAgICAnU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2cmNuZF9wYXRoKSwKLSAgICAgICAgICdQQU0gbW9kdWxlcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHBhbWxpYmRpciksCi1kaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggMzk4MjJkNmNkLi4wYjI0ZjBlMGYgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yMiw2ICsyMiw4IEBAIG9wdGlvbigncm9vdGxpYmRpcicsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAnJydbL3Vzcl0vbGliL3g4Nl82NC1saW51eC1nbnUgb3Igc3VjaCcnJykKLSBvcHRpb24oJ3Jvb3RwcmVmaXgnLCB0eXBlIDogJ3N0cmluZycsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgcHJlZml4JycnKQotK29wdGlvbigncm9vdGhvbWVkaXInLCB0eXBlIDogJ3N0cmluZycsCi0rICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnknJycpCi0gb3B0aW9uKCdsaW5rLXVkZXYtc2hhcmVkJywgdHlwZSA6ICdib29sZWFuJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAnbGluayBzeXN0ZW1kLXVkZXYgYW5kIGl0cyBoZWxwZXJzIHRvIGxpYnN5c3RlbWQtc2hhcmVkLnNvJykKLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2ZWI4YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gNTE5OWFlNWRlYzliOGE5YzllMjA0NzdkNTA5MGYxNzMyNzM1ZmJlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjggSnVuIDIwMTggMDk6Mzg6MTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA2LzldIHJlbW92ZSBub2JvZHkgdXNlci9ncm91cCBjaGVja2luZworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDM3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAzMjMxNDZmZTEuLjNiYjA4N2ZlZiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTY4MSw0MyArNjgxLDYgQEAgc3Vic3RzLnNldCgnY29udGFpbmVydWlkYmFzZW1heCcsIGNvbnRhaW5lcl91aWRfYmFzZV9tYXgpCisgbm9ib2R5X3VzZXIgPSBnZXRfb3B0aW9uKCdub2JvZHktdXNlcicpCisgbm9ib2R5X2dyb3VwID0gZ2V0X29wdGlvbignbm9ib2R5LWdyb3VwJykKKyAKKy1nZXRlbnRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2dldGVudCcsICdwYXNzd2QnLCAnNjU1MzQnKQorLWlmIGdldGVudF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIG5hbWUgPSBnZXRlbnRfcmVzdWx0LnN0ZG91dCgpLnNwbGl0KCc6JylbMF0KKy0gICAgICAgIGlmIG5hbWUgIT0gbm9ib2R5X3VzZXIKKy0gICAgICAgICAgICAgICAgd2FybmluZygnXG4nICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGxvY2FsIHVzZXIgd2l0aCB0aGUgVUlEIDY1NTM0IGRvZXMgbm90IG1hdGNoIHRoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIgKGl0cyBuYW1lIGlzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgbmFtZSkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIHVzZXIgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistaWRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2lkJywgJy11Jywgbm9ib2R5X3VzZXIpCistaWYgaWRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCistICAgICAgICBpZCA9IGlkX3Jlc3VsdC5zdGRvdXQoKS50b19pbnQoKQorLSAgICAgICAgaWYgaWQgIT0gNjU1MzQKKy0gICAgICAgICAgICAgICAgd2FybmluZygnXG4nICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGxvY2FsIHVzZXIgd2l0aCB0aGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyIGRvZXMgbm90IGhhdmUgVUlEIDY1NTM0IChpdCBoYXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBpZCkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIHVzZXIgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistCistZ2V0ZW50X3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdnZXRlbnQnLCAnZ3JvdXAnLCAnNjU1MzQnKQorLWlmIGdldGVudF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIG5hbWUgPSBnZXRlbnRfcmVzdWx0LnN0ZG91dCgpLnNwbGl0KCc6JylbMF0KKy0gICAgICAgIGlmIG5hbWUgIT0gbm9ib2R5X2dyb3VwCistICAgICAgICAgICAgICAgIHdhcm5pbmcoJ1xuJyArCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBsb2NhbCBncm91cCB3aXRoIHRoZSBHSUQgNjU1MzQgZG9lcyBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IGdyb3VwIChpdHMgbmFtZSBpcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X2dyb3VwLCBuYW1lKSArCistICAgICAgICAgICAgICAgICAgICAgICAgJ1lvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gZ3JvdXAgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistaWRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2lkJywgJy1nJywgbm9ib2R5X2dyb3VwKQorLWlmIGlkX3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAorLSAgICAgICAgaWQgPSBpZF9yZXN1bHQuc3Rkb3V0KCkudG9faW50KCkKKy0gICAgICAgIGlmIGlkICE9IDY1NTM0CistICAgICAgICAgICAgICAgIHdhcm5pbmcoJ1xuJyArCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBsb2NhbCBncm91cCB3aXRoIHRoZSBjb25maWd1cmVkIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSBncm91cCBkb2VzIG5vdCBoYXZlIFVJRCA2NTUzNCAoaXQgaGFzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfZ3JvdXAsIGlkKSArCistICAgICAgICAgICAgICAgICAgICAgICAgJ1lvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gZ3JvdXAgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCisgaWYgbm9ib2R5X3VzZXIgIT0gbm9ib2R5X2dyb3VwIGFuZCBub3QgKG5vYm9keV91c2VyID09ICdub2JvZHknIGFuZCBub2JvZHlfZ3JvdXAgPT0gJ25vZ3JvdXAnKQorICAgICAgICAgd2FybmluZygnXG4nICsKKyAgICAgICAgICAgICAgICAgJ1RoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBhbmQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIvZ3JvdXAgYXJlIG5vdCBlcXVpdmFsZW50LlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIG5vYm9keV9ncm91cCkgKworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwN2E3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwxMTggQEAKK0Zyb20gMDNmZDE5ZmM4NzU3MzI3NmUwZDM1OTI2MGM4ZmU1OTFmNWYwMjE2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTY6MzQ6NTAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xOV0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3Npbmcgc3RybmR1cGEKKworaW5jbHVkZSBtaXNzaW5nLmggIGZvciBkZWZpbml0aW9uIG9mIHN0cm5kdXBhCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgIHwgMTEgKysrKysrKysrKysKKyBzcmMvYmFzaWMvbWtkaXIuYyAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvcGFnZXIuYyAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICB8ICAxICsKKyBzcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyB8ICAxICsKKyBzcmMvc2hhcmVkL3VpZC1yYW5nZS5jICB8ICAxICsKKyA3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDhjMTZiYzk3OS4uYTczNGEyOTVjIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTAzLDYgKzUwMyw3IEBAIGZvcmVhY2ggaWRlbnQgOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPicnJ10sCisgICAgICAgICBbJ2V4cGxpY2l0X2J6ZXJvJyAsICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCisgICAgICAgICBbJ3JlYWxsb2NhcnJheScsICAgICAgJycnI2luY2x1ZGUgPG1hbGxvYy5oPicnJ10sCisrICAgICAgICBbJ3N0cm5kdXBhJyAsICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCisgXQorIAorICAgICAgICAgaGF2ZSA9IGNjLmhhc19mdW5jdGlvbihpZGVudFswXSwgcHJlZml4IDogaWRlbnRbMV0sIGFyZ3MgOiAnLURfR05VX1NPVVJDRScpCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDBlMzNhYmI5Zi4uMDIzOTdmMWI2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTExODQsNiArMTE4NCwxNyBAQCBzdHJ1Y3QgaW5wdXRfbWFzayB7CisgdHlwZWRlZiBpbnQzMl90IGtleV9zZXJpYWxfdDsKKyAjZW5kaWYKKyAKKysjaWYgISBIQVZFX1NUUk5EVVBBCisrI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCisrICAoeyBcCisrICAgIGNvbnN0IGNoYXIgKl9fb2xkID0gKHMpOyBcCisrICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4oX19vbGQsIChuKSk7IFwKKysgICAgY2hhciAqX19uZXcgPSAoY2hhciAqKWFsbG9jYShfX2xlbiArIDEpOyBcCisrICAgIF9fbmV3W19fbGVuXSA9ICdcMCc7IFwKKysgICAgKGNoYXIgKiltZW1jcHkoX19uZXcsIF9fb2xkLCBfX2xlbik7IFwKKysgIH0pCisrI2VuZGlmCisrCisgI2lmbmRlZiBLRVlDVExfSk9JTl9TRVNTSU9OX0tFWVJJTkcKKyAjZGVmaW5lIEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORyAxCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYworaW5kZXggNmFiMWI0NDIyLi43N2MzZTA4NjMgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWtkaXIuYworKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKK0BAIC0xMyw2ICsxMyw3IEBACisgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgaW50IG1rZGlyX3NhZmVfaW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBNa2RpckZsYWdzIGZsYWdzLCBta2Rpcl9mdW5jX3QgX21rZGlyKSB7CisgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFnZXIuYyBiL3NyYy9iYXNpYy9wYWdlci5jCitpbmRleCBmMjQxMjYxMTEuLjgyMjNiZmYwMiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wYWdlci5jCisrKysgYi9zcmMvYmFzaWMvcGFnZXIuYworQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgcGlkX3QgcGFnZXJfcGlkID0gMDsKKyAKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworaW5kZXggNmJlY2Y4NTg3Li41MjU3NmY1MzYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCisgI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgaW50IHBhcnNlX2Jvb2xlYW4oY29uc3QgY2hhciAqdikgeworICAgICAgICAgYXNzZXJ0KHYpOworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKK2luZGV4IGExNTllMzQ0Yi4uZWJjNDI3ZDZiIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCitAQCAtMTEsNiArMTEsNyBAQAorICNpbmNsdWRlICJwcm9jZnMtdXRpbC5oIgorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcHJvY2ZzX3Rhc2tzX2dldF9saW1pdCh1aW50NjRfdCAqcmV0KSB7CisgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICp2YWx1ZSA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK2luZGV4IDQzNGNlNmZmNC4uMzcwOTNhYjdiIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYworKysrIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYworQEAgLTgsNiArOCw3IEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKKyAgICAgICAgIGFzc2VydChyYW5nZSk7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGY4Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApAQCAtMCwwICsxLDk2IEBACitGcm9tIGFhYjkwZDBkZmE5MzRkMzM4NzllYWVjMWE4NzhlOTNiMjAxZDMzZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE2OjQ0OjQzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTldIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCisKK0ZpeGVzCisvcGF0aC90by9zeXN0ZW1kL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL25ldGluZXQvaWZfZXRoZXIuaDoxMDE6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGV0aGhkcicKKyBzdHJ1Y3QgZXRoaGRyIHsKKyAgICAgICAgXn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5oICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyAgICB8IDEgKworIDYgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCitpbmRleCBjOTNmZTljYjQuLjIwMTNkMDZlMSAxMDA2NDQKKy0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworQEAgLTMsNiArMyw3IEBACisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisgI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9nZW5ldGxpbmsuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK2luZGV4IDIxZmI3YWIwNi4uMGFmZTUxNzBjIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK0BAIC0yLDYgKzIsNyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKK2luZGV4IDhlOGE2MThlMi4uNTJkNTIzYTY3IDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitAQCAtNCw2ICs0LDcgQEAKKyAqKiovCisgCisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorIAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworaW5kZXggNGJiNDIxNmFjLi41ZjczODM0ODMgMTAwNjQ0CistLS0gYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKKysrKyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworQEAgLTEsNSArMSw2IEBACisgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xKyAqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuaCBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuaAoraW5kZXggMDY0YmY0ZDJiLi5lZTBkNGZiMmEgMTAwNjQ0CistLS0gYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmgKKysrKyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuaAorQEAgLTMsNiArMyw3IEBACisgCisgCisgI2luY2x1ZGUgPG1hY3JvLmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorIAorICNpbmNsdWRlICJtaXNzaW5nLmgiCitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworaW5kZXggOGJlZDYzOTlhLi5hM2E5Njk1OWIgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImxpbmstY29uZmlnLmgiCisgI2luY2x1ZGUgImxvZy5oIgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIxMmQzMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMzVkNmQzODRlODNhYzM4MDc3NjAzNjExYmI3OTE5NjllZjk1ZmU2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTkgTWFyIDIwMTUgMTU6MDE6MjkgKzExMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8zMV0gUmV2ZXJ0ICJydWxlczogcmVtb3ZlIGZpcm13YXJlIGxvYWRpbmcgcnVsZXMiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgNzBlN2Q3NTRkZGIzNTZmYjFhMjk0MmIyNjJmOGNlZTk2NTBlMmExOS4KLVVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBMaW51eCA8IDMuNy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotLS0tCi0gcnVsZXMvNTAtZmlybXdhcmUucnVsZXMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLQotZGlmZiAtLWdpdCBhL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmYwYWU2ODQ1MQotLS0tIC9kZXYvbnVsbAotKysrIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLUBAIC0wLDAgKzEsMyBAQAotKyMgZG8gbm90IGVkaXQgdGhpcyBmaWxlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uIHVwZGF0ZQotKwotK1NVQlNZU1RFTT09ImZpcm13YXJlIiwgQUNUSU9OPT0iYWRkIiwgUlVOe2J1aWx0aW59PSJmaXJtd2FyZSIKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWY2NWU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gOTMwMmI3MmU1ZTY5NTEyYWFhNzEwNjE5N2IwMGM1NWJhZWIzNWIzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTcgTm92IDIwMTcgMDk6NDY6MDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA3LzldIHJ1bGVzOiB3YXRjaCBtZXRhZGF0YSBjaGFuZ2VzIGluIGlkZSBkZXZpY2VzCisKK0Zvcm1hdHRpbmcgSURFIHN0b3JhZ2UgZG9lcyBub3QgdHJpZ2dlciAiY2hhbmdlIiB1ZXZlbnRzLiBBcyBhIHJlc3VsdAorY2xpZW50cyB1c2luZyB1ZGV2IEFQSSBkb24ndCBnZXQgYW55IHVwZGF0ZXMgYWZ0ZXJ3YXJkcyBhbmQgZ2V0IG91dGRhdGVkCitpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlLgorLi4uCityb290QHFlbXV4ODYtNjQ6fiMgbWtmcy5leHQ0IC1GIC9kZXYvaGRhMQorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCA0ayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworRmlsZXN5c3RlbSBVVUlEOiA5ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTIKKworcm9vdEBxZW11eDg2LTY0On4jIGxzIC9kZXYvZGlzay9ieS11dWlkLzk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgorbHM6IGNhbm5vdCBhY2Nlc3MgJy9kZXYvZGlzay9ieS11dWlkLzk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMic6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKy4uLgorSW5jbHVkZSBoZCogaW4gYSBtYXRjaCBmb3Igd2F0Y2ggb3B0aW9uIGFzc2lnbm1lbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCisKK3FlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCitDT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcworL2Rldi9oZCouIEEgc2ltaWxhciBwYXRjaCByZWplY3RlZCBieSB1cHN0cmVhbSBiZWNhdXNlIENPTkZJR19JREUKK2lzIGRlcHJlY2F0ZWQuCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHJ1bGVzLzYwLWJsb2NrLnJ1bGVzIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcnVsZXMvNjAtYmxvY2sucnVsZXMgYi9ydWxlcy82MC1ibG9jay5ydWxlcworaW5kZXggMzQzZmMwNmY4Li5iNTIzN2RhYzQgMTAwNjQ0CistLS0gYS9ydWxlcy82MC1ibG9jay5ydWxlcworKysrIGIvcnVsZXMvNjAtYmxvY2sucnVsZXMKK0BAIC04LDQgKzgsNCBAQCBBQ1RJT049PSJhZGQiLCBTVUJTWVNURU09PSJtb2R1bGUiLCBLRVJORUw9PSJibG9jayIsIEFUVFJ7cGFyYW1ldGVycy9ldmVudHNfZGZsXworIEFDVElPTj09ImNoYW5nZSIsIFNVQlNZU1RFTT09InNjc2kiLCBFTlZ7REVWVFlQRX09PSJzY3NpX2RldmljZSIsIFRFU1Q9PSJibG9jayIsIEFUVFJ7YmxvY2svKi91ZXZlbnR9PSJjaGFuZ2UiCisgCisgIyB3YXRjaCBtZXRhZGF0YSBjaGFuZ2VzLCBjYXVzZWQgYnkgdG9vbHMgY2xvc2luZyB0aGUgZGV2aWNlIG5vZGUgd2hpY2ggd2FzIG9wZW5lZCBmb3Igd3JpdGluZworLUFDVElPTiE9InJlbW92ZSIsIFNVQlNZU1RFTT09ImJsb2NrIiwgS0VSTkVMPT0ibG9vcCp8bnZtZSp8c2QqfHZkKnx4dmQqfHBtZW0qfG1tY2JsayoiLCBPUFRJT05TKz0id2F0Y2giCisrQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBLRVJORUw9PSJsb29wKnxudm1lKnxzZCp8dmQqfHh2ZCp8cG1lbSp8bW1jYmxrKnxoZCoiLCBPUFRJT05TKz0id2F0Y2giCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJlY2RjNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGI2YmE1OTZmZDEzMTNhMTYyY2RjMmViODgxNjFkY2YyNGQxOWVkZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI4IEp1biAyMDE4IDEwOjEwOjAyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cyBpZiBuc3Mtc3lzdGVtZCBpcyBub3QgZW5hYmxlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy90ZXN0L21lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAoraW5kZXggN2RhN2UzYTIyLi43YjdjMjU3ZmYgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC9tZXNvbi5idWlsZAorKysrIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKK0BAIC02NDUsNyArNjQ1LDcgQEAgdGVzdHMgKz0gWworICAgICAgICAgW1snc3JjL3Rlc3QvdGVzdC1uc3MuYyddLAorICAgICAgICAgIFtdLAorICAgICAgICAgIFtsaWJkbF0sCistICAgICAgICAgJycsICdtYW51YWwnXSwKKysgICAgICAgICAnRU5BQkxFX05TU19TWVNURU1EJywgJ21hbnVhbCddLAorIAorICAgICAgICAgW1snc3JjL3Rlc3QvdGVzdC11bW91bnQuYycsCisgICAgICAgICAgICdzcmMvY29yZS9tb3VudC1zZXR1cC5jJywKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVkN2UwMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNzcgKzAsMCBAQAotRnJvbSA1Y2NlNzYyNmYzM2U5MmY2MjRhYzA2YjYxMzEyNTgxM2ZiNDdkNDQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMTowNTozOSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA4LzMxXSBSZXZlcnQgInVkZXY6IHJlbW92ZSB1c2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZwotIHN1cHBvcnQiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgYmUyZWE3MjNiMWQwMjNiM2QzODVkM2I3OTFlZTQ2MDdjYmZiMjBjYS4KLVVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBMaW51eCA8IDMuNy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCi0gVE9ETyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsrKwotIG1lc29uX29wdGlvbnMudHh0ICAgICAgICAgICAgICAgIHwgICAyICsKLSBydWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgNCArCi0gc3JjL3VkZXYvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDQgKwotIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIHwgMTU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi5jICAgICAgICAgIHwgICAzICsKLSBzcmMvdWRldi91ZGV2LmggICAgICAgICAgICAgICAgICB8ICAgNiArKwotIHNyYy91ZGV2L3VkZXZkLmMgICAgICAgICAgICAgICAgIHwgIDEyICsrKwotIDEwIGZpbGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCi1pbmRleCA4ODA3ZTVjZmUuLmJmZDdhMzVkZSAxMDA2NDQKLS0tLSBhL1JFQURNRQotKysrIGIvUkVBRE1FCi1AQCAtNTgsOCArNTgsOCBAQCBSRVFVSVJFTUVOVFM6Ci0gICAgICAgICBMZWdhY3kgaG90cGx1ZyBzbG93cyBkb3duIHRoZSBzeXN0ZW0gYW5kIGNvbmZ1c2VzIHVkZXY6Ci0gICAgICAgICAgIENPTkZJR19VRVZFTlRfSEVMUEVSX1BBVEg9IiIKLSAKLS0gICAgICAgIFVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIHNob3VsZAotLSAgICAgICAgYmUgZGlzYWJsZWQgaW4gdGhlIGtlcm5lbDoKLSsgICAgICAgIFVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIGlzIGRlcHJlY2F0ZWQsIHdpbGwgZ28gYXdheSwgYW5kCi0rICAgICAgICBzb21ldGltZXMgY2F1c2VzIHByb2JsZW1zOgotICAgICAgICAgICBDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSPW4KLSAKLSAgICAgICAgIFNvbWUgdWRldiBydWxlcyBhbmQgdmlydHVhbGl6YXRpb24gZGV0ZWN0aW9uIHJlbGllcyBvbiBpdDoKLWRpZmYgLS1naXQgYS9UT0RPIGIvVE9ETwotaW5kZXggYTc3MDI4YzdiLi4zOWU3MmQ3ZWMgMTAwNjQ0Ci0tLS0gYS9UT0RPCi0rKysgYi9UT0RPCi1AQCAtNzgzLDYgKzc4Myw3IEBAIEZlYXR1cmVzOgotICogaW5pdGlhbGl6ZSB0aGUgaG9zdG5hbWUgZnJvbSB0aGUgZnMgbGFiZWwgb2YgLywgaWYgL2V0Yy9ob3N0bmFtZSBkb2VzIG5vdCBleGlzdD8KLSAKLSAqIHVkZXY6Ci0rICAtIHJlbW92ZSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyAoQ09ORklHX0ZXX0xPQURFUl9VU0VSX0hFTFBFUj1uKQotICAgLSBtb3ZlIHRvIExHUEwKLSAgIC0ga2lsbCBzY3NpX2lkCi0gICAtIGFkZCB0cmlnZ2VyIC0tc3Vic3lzdGVtLW1hdGNoPXVzYi91c2JfZGV2aWNlIGRldmljZQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDkxODEwMWQ2Yi4uOWMyNTAyMmE0IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNzIsNiArNzIsMTIgQEAgY29uZi5zZXQxMCgnSEFWRV9TWVNWX0NPTVBBVCcsIGhhdmUsCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiA6ICdTeXNWIGluaXQgc2NyaXB0cyBhbmQgcmNOLmQgbGlua3MgYXJlIHN1cHBvcnRlZCcpCi0gbTRfZGVmaW5lcyArPSBoYXZlID8gWyctREhBVkVfU1lTVl9DT01QQVQnXSA6IFtdCi0gCi0rZmlybXdhcmVfcGF0aCA9IGdldF9vcHRpb24oJ2Zpcm13YXJlLXBhdGgnKQotK2hhdmUgPSBmaXJtd2FyZV9wYXRoICE9ICcnCi0rY29uZi5zZXQxMCgnSEFWRV9GSVJNV0FSRScsIGhhdmUsCi0rICAgICAgICAgICBkZXNjcmlwdGlvbiA6ICdVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBzdXBwb3J0ZWQnKQotK200X2RlZmluZXMgKz0gaGF2ZSA/IFsnLURIQVZFX0ZJUk1XQVJFJ10gOiBbXQotKwotICMgam9pbl9wYXRocyBpZ25vcmUgdGhlIHByZWNlZGluZyBhcmd1bWVudHMgaWYgYW4gYWJzb2x1dGUgY29tcG9uZW50IGlzCi0gIyBlbmNvdW50ZXJlZCwgc28gdGhpcyBzaG91bGQgY2Fub25pY2FsaXplIHZhcmlvdXMgcGF0aHMgd2hlbiB0aGV5IGFyZQotICMgYWJzb2x1dGUgb3IgcmVsYXRpdmUuCi1AQCAtMTc4LDYgKzE4NCw3IEBAIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNX0NPTkZJR19VTklUX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhwa2dzeXNjCi0gY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fREFUQV9VTklUX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW11bml0ZGlyKQotIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNX1NZU1ZJTklUX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgc3lzdmluaXRfcGF0aCkKLSBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9TWVNWUkNORF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgIHN5c3ZyY25kX3BhdGgpCi0rY29uZi5zZXRfcXVvdGVkKCdGSVJNV0FSRV9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZV9wYXRoKQotIGNvbmYuc2V0X3F1b3RlZCgnUkNfTE9DQUxfU0NSSVBUX1BBVEhfU1RBUlQnLCAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbigncmMtbG9jYWwnKSkKLSBjb25mLnNldF9xdW90ZWQoJ1JDX0xPQ0FMX1NDUklQVF9QQVRIX1NUT1AnLCAgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ2hhbHQtbG9jYWwnKSkKLSBjb25mLnNldF9xdW90ZWQoJ1VTRVJfQ09ORklHX1VOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocGtnc3lzY29uZmRpciwgJ3VzZXInKSkKLUBAIC0yNTgsNiArMjY1LDcgQEAgc3Vic3RzLnNldCgnU1lTVEVNQ1RMJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHJvb3RiaW4KLSBzdWJzdHMuc2V0KCdSQU5ET01fU0VFRCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocmFuZG9tc2VlZGRpciwgJ3JhbmRvbS1zZWVkJykpCi0gc3Vic3RzLnNldCgnU1lTVEVNX1NZU1ZJTklUX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN2aW5pdF9wYXRoKQotIHN1YnN0cy5zZXQoJ1NZU1RFTV9TWVNWUkNORF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdnJjbmRfcGF0aCkKLStzdWJzdHMuc2V0KCdGSVJNV0FSRV9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcm13YXJlX3BhdGgpCi0gc3Vic3RzLnNldCgnUkNfTE9DQUxfU0NSSVBUX1BBVEhfU1RBUlQnLCAgICAgICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdyYy1sb2NhbCcpKQotIHN1YnN0cy5zZXQoJ1JDX0xPQ0FMX1NDUklQVF9QQVRIX1NUT1AnLCAgICAgICAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbignaGFsdC1sb2NhbCcpKQotIAotQEAgLTI3MTUsNiArMjcyMyw3IEBAIHN0YXR1cyA9IFsKLSAgICAgICAgICdyb290aG9tZSBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHJvb3Rob21lZGlyKSwKLSAgICAgICAgICdTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHN5c3Zpbml0X3BhdGgpLAotICAgICAgICAgJ1N5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdnJjbmRfcGF0aCksCi0rICAgICAgICAnZmlybXdhcmUgcGF0aDogICAgICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChmaXJtd2FyZV9wYXRoKSwKLSAgICAgICAgICdQQU0gbW9kdWxlcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHBhbWxpYmRpciksCi0gICAgICAgICAnUEFNIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5OiAgICAgICBAMEAnLmZvcm1hdChwYW1jb25mZGlyKSwKLSAgICAgICAgICdSUE0gbWFjcm9zIGRpcmVjdG9yeTogICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHJwbW1hY3Jvc2RpciksCi1kaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggMGIyNGYwZTBmLi45MmQyNWZhMzUgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0xMDgsNiArMTA4LDggQEAgb3B0aW9uKCd0bXBmaWxlcycsIHR5cGUgOiAnYm9vbGVhbicsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3N1cHBvcnQgZm9yIHRtcGZpbGVzLmQnKQotIG9wdGlvbignaW1wb3J0ZCcsIHR5cGUgOiAnY29tYm8nLCBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKLSAgICAgICAgZGVzY3JpcHRpb24gOiAnaW5zdGFsbCB0aGUgc3lzdGVtZC1pbXBvcnRkIGRhZW1vbicpCi0rb3B0aW9uKCdmaXJtd2FyZS1wYXRoJywgdHlwZSA6ICdzdHJpbmcnLCB2YWx1ZSA6ICcnLAotKyAgICAgICBkZXNjcmlwdGlvbiA6ICdGaXJtd2FyZSBzZWFyY2ggcGF0aCcpCi0gb3B0aW9uKCdod2RiJywgdHlwZSA6ICdib29sZWFuJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAnc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIGRhdGFiYXNlJykKLSBvcHRpb24oJ3Jma2lsbCcsIHR5cGUgOiAnYm9vbGVhbicsCi1kaWZmIC0tZ2l0IGEvcnVsZXMvbWVzb24uYnVpbGQgYi9ydWxlcy9tZXNvbi5idWlsZAotaW5kZXggZTI1M2I5ZjU5Li41ZWVlNWZiY2EgMTAwNjQ0Ci0tLS0gYS9ydWxlcy9tZXNvbi5idWlsZAotKysrIGIvcnVsZXMvbWVzb24uYnVpbGQKLUBAIC00MSw2ICs0MSwxMCBAQCBydWxlcyA9IGZpbGVzKCcnJwotIGluc3RhbGxfZGF0YShydWxlcywKLSAgICAgICAgICAgICAgaW5zdGFsbF9kaXIgOiB1ZGV2cnVsZXNkaXIpCi0gCi0raWYgY29uZi5nZXQoJ0hBVkVfRklSTVdBUkUnKSA9PSAxCi0rICAgICAgICBpbnN0YWxsX2RhdGEoJzUwLWZpcm13YXJlLnJ1bGVzJywgaW5zdGFsbF9kaXIgOiB1ZGV2cnVsZXNkaXIpCi0rZW5kaWYKLSsKLSBhbGxfcnVsZXMgPSBydWxlcwotIAotIHJ1bGVzX2luID0gJycnCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbWVzb24uYnVpbGQgYi9zcmMvdWRldi9tZXNvbi5idWlsZAotaW5kZXggZGUyZmQyZDljLi5iNmIwY2EwMDYgMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi9tZXNvbi5idWlsZAotKysrIGIvc3JjL3VkZXYvbWVzb24uYnVpbGQKLUBAIC02Nyw2ICs2NywxMCBAQCBpZiBjb25mLmdldCgnSEFWRV9BQ0wnKSA9PSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RfbG9naW5fY10KLSBlbmRpZgotIAotK2lmIGNvbmYuZ2V0KCdIQVZFX0ZJUk1XQVJFJykgPT0gMQotKyAgICAgICAgbGlidWRldl9jb3JlX3NvdXJjZXMgKz0gWyd1ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyddCi0rZW5kaWYKLSsKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKLSBnZW5lcmF0ZV9rZXlib2FyZF9rZXlzX2xpc3QgPSBmaW5kX3Byb2dyYW0oJ2dlbmVyYXRlLWtleWJvYXJkLWtleXMtbGlzdC5zaCcpCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uYmQ4YzJmYjk2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotQEAgLTAsMCArMSwxNTQgQEAKLSsvKgotKyAqIGZpcm13YXJlIC0gS2VybmVsIGZpcm13YXJlIGxvYWRlcgotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDA5IFBpdGVyIFB1bmsgPHBpdGVycHVua0BzbGFja3dhcmUuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEtheSBTaWV2ZXJzIDxrYXlAdnJmeS5vcmc+Ci0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKLSsgKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlsczoqCi0rICovCi0rCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGdldG9wdC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0rI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rCi0rI2luY2x1ZGUgInVkZXYuaCIKLSsKLStzdGF0aWMgYm9vbCBzZXRfbG9hZGluZyhzdHJ1Y3QgdWRldiAqdWRldiwgY2hhciAqbG9hZHBhdGgsIGNvbnN0IGNoYXIgKnN0YXRlKSB7Ci0rICAgICAgICBGSUxFICpsZGZpbGU7Ci0rCi0rICAgICAgICBsZGZpbGUgPSBmb3Blbihsb2FkcGF0aCwgIndlIik7Ci0rICAgICAgICBpZiAobGRmaWxlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJlcnJvcjogY2FuIG5vdCBvcGVuICclcyciLCBsb2FkcGF0aCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIH07Ci0rICAgICAgICBmcHJpbnRmKGxkZmlsZSwgIiVzXG4iLCBzdGF0ZSk7Ci0rICAgICAgICBmY2xvc2UobGRmaWxlKTsKLSsgICAgICAgIHJldHVybiB0cnVlOwotK30KLSsKLStzdGF0aWMgYm9vbCBjb3B5X2Zpcm13YXJlKHN0cnVjdCB1ZGV2ICp1ZGV2LCBjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKnRhcmdldCwgc2l6ZV90IHNpemUpIHsKLSsgICAgICAgIGNoYXIgKmJ1ZjsKLSsgICAgICAgIEZJTEUgKmZzb3VyY2UgPSBOVUxMLCAqZnRhcmdldCA9IE5VTEw7Ci0rICAgICAgICBib29sIHJldCA9IGZhbHNlOwotKwotKyAgICAgICAgYnVmID0gbWFsbG9jKHNpemUpOwotKyAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiTm8gbWVtb3J5IGF2YWlsYWJsZSB0byBsb2FkIGZpcm13YXJlIGZpbGUiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbG9nX2RlYnVnKCJ3cml0aW5nICclcycgKCV6aSkgdG8gJyVzJyIsIHNvdXJjZSwgc2l6ZSwgdGFyZ2V0KTsKLSsKLSsgICAgICAgIGZzb3VyY2UgPSBmb3Blbihzb3VyY2UsICJyZSIpOwotKyAgICAgICAgaWYgKGZzb3VyY2UgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgZnRhcmdldCA9IGZvcGVuKHRhcmdldCwgIndlIik7Ci0rICAgICAgICBpZiAoZnRhcmdldCA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBpZiAoZnJlYWQoYnVmLCBzaXplLCAxLCBmc291cmNlKSAhPSAxKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBpZiAoZndyaXRlKGJ1Ziwgc2l6ZSwgMSwgZnRhcmdldCkgPT0gMSkKLSsgICAgICAgICAgICAgICAgcmV0ID0gdHJ1ZTsKLStleGl0OgotKyAgICAgICAgaWYgKGZ0YXJnZXQgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZ0YXJnZXQpOwotKyAgICAgICAgaWYgKGZzb3VyY2UgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZzb3VyY2UpOwotKyAgICAgICAgZnJlZShidWYpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGludCBidWlsdGluX2Zpcm13YXJlKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBpbnQgYXJnYywgY2hhciAqYXJndltdLCBib29sIHRlc3QpIHsKLSsgICAgICAgIHN0cnVjdCB1ZGV2ICp1ZGV2ID0gdWRldl9kZXZpY2VfZ2V0X3VkZXYoZGV2KTsKLSsgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICpzZWFyY2hwYXRoW10gPSB7IEZJUk1XQVJFX1BBVEggfTsKLSsgICAgICAgIGNoYXIgbG9hZHBhdGhbVVRJTF9QQVRIX1NJWkVdOwotKyAgICAgICAgY2hhciBkYXRhcGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjaGFyIGZ3cGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjb25zdCBjaGFyICpmaXJtd2FyZTsKLSsgICAgICAgIEZJTEUgKmZ3ZmlsZSA9IE5VTEw7Ci0rICAgICAgICBzdHJ1Y3QgdXRzbmFtZSBrZXJuZWw7Ci0rICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotKyAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0rICAgICAgICBpbnQgcmMgPSBFWElUX1NVQ0NFU1M7Ci0rCi0rICAgICAgICBmaXJtd2FyZSA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXYsICJGSVJNV0FSRSIpOwotKyAgICAgICAgaWYgKGZpcm13YXJlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJmaXJtd2FyZSBwYXJhbWV0ZXIgbWlzc2luZyIpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgfQotKwotKyAgICAgICAgLyogbG9va3VwIGZpcm13YXJlIGZpbGUgKi8KLSsgICAgICAgIHVuYW1lKCZrZXJuZWwpOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0Yoc2VhcmNocGF0aCk7IGkrKykgewotKyAgICAgICAgICAgICAgICBzdHJzY3B5bChmd3BhdGgsIHNpemVvZihmd3BhdGgpLCBzZWFyY2hwYXRoW2ldLCBrZXJuZWwucmVsZWFzZSwgIi8iLCBmaXJtd2FyZSwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGZ3ZmlsZSA9IGZvcGVuKGZ3cGF0aCwgInJlIik7Ci0rICAgICAgICAgICAgICAgIGlmIChmd2ZpbGUgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsKLSsgICAgICAgICAgICAgICAgc3Ryc2NweWwoZndwYXRoLCBzaXplb2YoZndwYXRoKSwgc2VhcmNocGF0aFtpXSwgZmlybXdhcmUsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBmd2ZpbGUgPSBmb3Blbihmd3BhdGgsICJyZSIpOwotKyAgICAgICAgICAgICAgICBpZiAoZndmaWxlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBzdHJzY3B5bChsb2FkcGF0aCwgc2l6ZW9mKGxvYWRwYXRoKSwgdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2KSwgIi9sb2FkaW5nIiwgTlVMTCk7Ci0rCi0rICAgICAgICBpZiAoZndmaWxlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2RlYnVnKCJkaWQgbm90IGZpbmQgZmlybXdhcmUgZmlsZSAnJXMnIiwgZmlybXdhcmUpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICogRG8gbm90IGNhbmNlbCB0aGUgcmVxdWVzdCBpbiB0aGUgaW5pdHJkLCB0aGUgcmVhbCByb290IG1pZ2h0IGhhdmUKLSsgICAgICAgICAgICAgICAgICogdGhlIGZpcm13YXJlIGZpbGUgYW5kIHRoZSAnY29sZHBsdWcnIHJ1biBpbiB0aGUgcmVhbCByb290IHdpbGwgZmluZAotKyAgICAgICAgICAgICAgICAgKiB0aGlzIHBlbmRpbmcgcmVxdWVzdCBhbmQgZnVsZmlsbCBvciBjYW5jZWwgaXQuCi0rICAgICAgICAgICAgICAgICAqICovCi0rICAgICAgICAgICAgICAgIGlmICghaW5faW5pdHJkKCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoc3RhdChmd3BhdGgsICZzdGF0YnVmKSA8IDAgfHwgc3RhdGJ1Zi5zdF9zaXplID09IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKCFpbl9pbml0cmQoKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7Ci0rICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIXNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiMSIpKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rCi0rICAgICAgICBzdHJzY3B5bChkYXRhcGF0aCwgc2l6ZW9mKGRhdGFwYXRoKSwgdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2KSwgIi9kYXRhIiwgTlVMTCk7Ci0rICAgICAgICBpZiAoIWNvcHlfZmlybXdhcmUodWRldiwgZndwYXRoLCBkYXRhcGF0aCwgc3RhdGJ1Zi5zdF9zaXplKSkgewotKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImVycm9yIHNlbmRpbmcgZmlybXdhcmUgJyVzJyB0byBkZXZpY2UiLCBmaXJtd2FyZSk7Ci0rICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKLSsgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIH07Ci0rCi0rICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIjAiKTsKLStleGl0OgotKyAgICAgICAgaWYgKGZ3ZmlsZSkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZ3ZmlsZSk7Ci0rICAgICAgICByZXR1cm4gcmM7Ci0rfQotKwotK2NvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Zpcm13YXJlID0gewotKyAgICAgICAgLm5hbWUgPSAiZmlybXdhcmUiLAotKyAgICAgICAgLmNtZCA9IGJ1aWx0aW5fZmlybXdhcmUsCi0rICAgICAgICAuaGVscCA9ICJrZXJuZWwgZmlybXdhcmUgbG9hZGVyIiwKLSsgICAgICAgIC5ydW5fb25jZSA9IHRydWUsCi0rfTsKLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi1pbmRleCBkYjJiNjg3NGYuLmNjZDg4NjM4YyAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotQEAgLTMyLDYgKzMyLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gKmJ1aWx0aW5zW10gPSB7Ci0gICAgICAgICBbVURFVl9CVUlMVElOX0JMS0lEXSA9ICZ1ZGV2X2J1aWx0aW5fYmxraWQsCi0gI2VuZGlmCi0gICAgICAgICBbVURFVl9CVUlMVElOX0JUUkZTXSA9ICZ1ZGV2X2J1aWx0aW5fYnRyZnMsCi0rI2lmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIFtVREVWX0JVSUxUSU5fRklSTVdBUkVdID0gJnVkZXZfYnVpbHRpbl9maXJtd2FyZSwKLSsjZW5kaWYKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fSFdEQl0gPSAmdWRldl9idWlsdGluX2h3ZGIsCi0gICAgICAgICBbVURFVl9CVUlMVElOX0lOUFVUX0lEXSA9ICZ1ZGV2X2J1aWx0aW5faW5wdXRfaWQsCi0gICAgICAgICBbVURFVl9CVUlMVElOX0tFWUJPQVJEXSA9ICZ1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQsCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi5oIGIvc3JjL3VkZXYvdWRldi5oCi1pbmRleCBlYTExYzJkMjkuLmM0N2RkM2Q4OCAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYuaAotKysrIGIvc3JjL3VkZXYvdWRldi5oCi1AQCAtMTUxLDYgKzE1MSw5IEBAIGVudW0gdWRldl9idWlsdGluX2NtZCB7Ci0gICAgICAgICBVREVWX0JVSUxUSU5fQkxLSUQsCi0gI2VuZGlmCi0gICAgICAgICBVREVWX0JVSUxUSU5fQlRSRlMsCi0rI2lmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIFVERVZfQlVJTFRJTl9GSVJNV0FSRSwKLSsjZW5kaWYKLSAgICAgICAgIFVERVZfQlVJTFRJTl9IV0RCLAotICAgICAgICAgVURFVl9CVUlMVElOX0lOUFVUX0lELAotICAgICAgICAgVURFVl9CVUlMVElOX0tFWUJPQVJELAotQEAgLTE3OSw2ICsxODIsOSBAQCBzdHJ1Y3QgdWRldl9idWlsdGluIHsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYmxraWQ7Ci0gI2VuZGlmCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2J0cmZzOwotKyNpZiBIQVZFX0ZJUk1XQVJFCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Zpcm13YXJlOwotKyNlbmRpZgotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9od2RiOwotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9pbnB1dF9pZDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQ7Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmQuYyBiL3NyYy91ZGV2L3VkZXZkLmMKLWluZGV4IDVjNzU3ZDUxMy4uMmYzMzEzMDA3IDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldmQuYwotKysrIGIvc3JjL3VkZXYvdWRldmQuYwotQEAgLTEyNyw2ICsxMjcsOSBAQCBzdHJ1Y3QgZXZlbnQgewotICAgICAgICAgYm9vbCBpc19ibG9jazsKLSAgICAgICAgIHNkX2V2ZW50X3NvdXJjZSAqdGltZW91dF93YXJuaW5nOwotICAgICAgICAgc2RfZXZlbnRfc291cmNlICp0aW1lb3V0OwotKyNpZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBib29sIG5vZGVsYXk7Ci0rI2VuZGlmCi0gfTsKLSAKLSBzdGF0aWMgdm9pZCBldmVudF9xdWV1ZV9jbGVhbnVwKE1hbmFnZXIgKm1hbmFnZXIsIGVudW0gZXZlbnRfc3RhdGUgdHlwZSk7Ci1AQCAtNjA5LDYgKzYxMiwxMCBAQCBzdGF0aWMgaW50IGV2ZW50X3F1ZXVlX2luc2VydChNYW5hZ2VyICptYW5hZ2VyLCBzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldikgewotICAgICAgICAgZXZlbnQtPmRldm51bSA9IHVkZXZfZGV2aWNlX2dldF9kZXZudW0oZGV2KTsKLSAgICAgICAgIGV2ZW50LT5pc19ibG9jayA9IHN0cmVxKCJibG9jayIsIHVkZXZfZGV2aWNlX2dldF9zdWJzeXN0ZW0oZGV2KSk7Ci0gICAgICAgICBldmVudC0+aWZpbmRleCA9IHVkZXZfZGV2aWNlX2dldF9pZmluZGV4KGRldik7Ci0rI2lmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIGlmIChzdHJlcSh1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldiksICJmaXJtd2FyZSIpKQotKyAgICAgICAgICAgICAgICBldmVudC0+bm9kZWxheSA9IHRydWU7Ci0rI2VuZGlmCi0gCi0gICAgICAgICBsb2dfZGVidWcoInNlcSAlbGx1IHF1ZXVlZCwgJyVzJyAnJXMnIiwgdWRldl9kZXZpY2VfZ2V0X3NlcW51bShkZXYpLAotICAgICAgICAgICAgICB1ZGV2X2RldmljZV9nZXRfYWN0aW9uKGRldiksIHVkZXZfZGV2aWNlX2dldF9zdWJzeXN0ZW0oZGV2KSk7Ci1AQCAtNjkyLDYgKzY5OSwxMSBAQCBzdGF0aWMgYm9vbCBpc19kZXZwYXRoX2J1c3koTWFuYWdlciAqbWFuYWdlciwgc3RydWN0IGV2ZW50ICpldmVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICB9Ci0gCi0rI2lmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgICAgICAgICAgLyogYWxsb3cgdG8gYnlwYXNzIHRoZSBkZXBlbmRlbmN5IHRyYWNraW5nICovCi0rICAgICAgICAgICAgICAgIGlmIChldmVudC0+bm9kZWxheSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgLyogcGFyZW50IGRldmljZSBldmVudCBmb3VuZCAqLwotICAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPmRldnBhdGhbY29tbW9uXSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGVsYXlpbmdfc2VxbnVtID0gbG9vcF9ldmVudC0+c2VxbnVtOwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZTVmYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2gKQEAgLTAsMCArMSwxNTMgQEAKK0Zyb20gODQ4ZTcxMWQ3MTlhNmQ5ODdiYzdkMTQxODNlMWM3YjFmMWM5MWM1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTc6MTA6MjkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xOV0gZG9uJ3QgZmFpbCBpZiBHTE9CX0JSQUNFIGFuZCBHTE9CX0FMVERJUkZVTkMgaXMgbm90CisgZGVmaW5lZAorCitJZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IHByb3ZpZGUgYnJhY2UKK2V4cGFuc2lvbiB1c2VycyBqdXN0IHdvbid0IGdldCBpdC4KKworRG9udCB1c2UgR05VIEdMT0IgZXh0ZW50aW9ucyBvbiBub24tZ2xpYmMgc3lzdGVtcworCitDb25kaXRpb25hbGl6ZSB1c2Ugb2YgR0xPQl9BTFRESVJGVU5DCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAxMyArKysrKysrKysrKy0tCisgc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyB8IDE1ICsrKysrKysrKysrKysrKworIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAxMCArKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCitpbmRleCA5ZmFjNjc2ZjIuLjhhZGI5NTU5ZSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCitAQCAtMTAsNiArMTAsMTEgQEAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAicGF0aC11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLworKyNpZm5kZWYgR0xPQl9CUkFDRQorKyNkZWZpbmUgR0xPQl9CUkFDRSAwCisrI2VuZGlmCisgCisgc3RhdGljIHZvaWQgY2xvc2VkaXJfd3JhcHBlcih2b2lkKiB2KSB7CisgICAgICAgICAodm9pZCkgY2xvc2VkaXIodik7CitAQCAtMTgsNiArMjMsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZWRpcl93cmFwcGVyKHZvaWQqIHYpIHsKKyBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgaW50IGs7CisgCisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLworICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKKyAKK0BAIC0zMSwxMCArMzcsMTMgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKKyAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2xzdGF0ID0gbHN0YXQ7CisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9zdGF0KQorICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfc3RhdCA9IHN0YXQ7CistCisrI2VuZGlmCisgICAgICAgICBlcnJubyA9IDA7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MgfCBHTE9CX0FMVERJUkZVTkMsIE5VTEwsIHBnbG9iKTsKKy0KKysjZWxzZQorKyAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MsIE5VTEwsIHBnbG9iKTsKKysjZW5kaWYKKyAgICAgICAgIGlmIChrID09IEdMT0JfTk9NQVRDSCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgICAgICBpZiAoayA9PSBHTE9CX05PU1BBQ0UpCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKK2luZGV4IGQ3OGQ2MjIzYy4uZjU5NDNiMjZkIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworQEAgLTEyLDYgKzEyLDExIEBACisgI2luY2x1ZGUgImdsb2ItdXRpbC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJybS1yZi5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKyAKKyBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKKyAgICAgICAgIGNoYXIgbmFtZVtdID0gIi90bXAvdGVzdC1nbG9iX2V4aXN0cy5YWFhYWFgiOworQEAgLTQwLDExICs0NSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKKyAgICAgICAgIGNvbnN0IGNoYXIgKmZuOworIAorICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0geworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgICAgICAgICAgLmdsX2Nsb3NlZGlyID0gY2xvc2VkaXJfd3JhcHBlciwKKyAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAorICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKKyAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCisgICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKKysjZW5kaWYKKyAgICAgICAgIH07CisgCisgICAgICAgICBpbnQgcjsKK0BAIC01MiwxMSArNTksMTkgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CisgICAgICAgICBhc3NlcnRfc2UobWtkdGVtcCh0ZW1wbGF0ZSkpOworIAorICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8qIik7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7CisrI2VuZGlmCisgICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOworIAorICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8uKiIpOworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOworKyNlbHNlCisrICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOworKyNlbmRpZgorICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKKyAKKyAgICAgICAgICh2b2lkKSBybV9yZih0ZW1wbGF0ZSwgUkVNT1ZFX1JPT1R8UkVNT1ZFX1BIWVNJQ0FMKTsKK2RpZmYgLS1naXQgYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCitpbmRleCA5MjdkZTM1ZjMuLjVmMDI4M2RhNSAxMDA2NDQKKy0tLSBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCisrKysgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYworQEAgLTYwLDYgKzYwLDEyIEBACisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorKworIC8qIFRoaXMgcmVhZHMgYWxsIGZpbGVzIGxpc3RlZCBpbiAvZXRjL3RtcGZpbGVzLmQvPyouY29uZiBhbmQgY3JlYXRlcworICAqIHRoZW0gaW4gdGhlIGZpbGUgc3lzdGVtLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gY3JlYXRlCisgICogcHJvcGVybHkgb3duZWQgZGlyZWN0b3JpZXMgYmVuZWF0aCAvdG1wLCAvdmFyL3RtcCwgL3J1biwgd2hpY2ggYXJlCitAQCAtMTM0NSw3ICsxMzUxLDkgQEAgZmluaXNoOgorIAorIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbikgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0geworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXJfbm9tb2QsCisrI2VuZGlmCisgICAgICAgICB9OworICAgICAgICAgaW50IHIgPSAwLCBrOworICAgICAgICAgY2hhciAqKmZuOworQEAgLTEzNjUsNyArMTM3Myw5IEBAIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbikgeworIAorIHN0YXRpYyBpbnQgZ2xvYl9pdGVtX3JlY3Vyc2l2ZWx5KEl0ZW0gKmksIGZkYWN0aW9uX3QgYWN0aW9uKSB7CisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKKysjZW5kaWYKKyAgICAgICAgIH07CisgICAgICAgICBpbnQgciA9IDAsIGs7CisgICAgICAgICBjaGFyICoqZm47CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTI4N2NjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBhY2MyYzA4MDgyNzk1ODAyMDExZTNjNWY4NjI2ZDYzMjEwMDIxNDg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMTozNjozMiAtMDgwMAorU3ViamVjdDogW1BBVENIIDA5LzE5XSBhZGQgbWlzc2luZyBGVFdfIG1hY3JvcyBmb3IgbXVzbAorCitUaGlzIGlzIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGxpa2UgYmVsb3cgZm9yIG11c2wuCisKKyAgbG9jYWxlLXV0aWwuYzoyOTY6MjQ6IGVycm9yOiAnRlRXX1NUT1AnIHVuZGVjbGFyZWQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDAyMzk3ZjFiNi4uNmRjNzUwZWJhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTE4OSw2ICsxODksMjYgQEAgc3RydWN0IHNvY2thZGRyX3ZtIHsKKyAjZGVmaW5lIEJUUkZTX1FHUk9VUF9MRVZFTF9TSElGVCA0OAorICNlbmRpZgorIAorKyNpZm5kZWYgRlRXX0FDVElPTlJFVFZBTAorKyNkZWZpbmUgRlRXX0FDVElPTlJFVFZBTCAxNgorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX0NPTlRJTlVFCisrI2RlZmluZSBGVFdfQ09OVElOVUUgMAorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NUT1AKKysjZGVmaW5lIEZUV19TVE9QIDEKKysjZW5kaWYKKysKKysjaWZuZGVmIEZUV19TS0lQX1NVQlRSRUUKKysjZGVmaW5lIEZUV19TS0lQX1NVQlRSRUUgMgorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NLSVBfU0lCTElOR1MKKysjZGVmaW5lIEZUV19TS0lQX1NJQkxJTkdTIDMKKysjZW5kaWYKKysKKyAjaWYgISBIQVZFX0xJTlVYX0JUUkZTX0gKKyAjZGVmaW5lIEJUUkZTX0lPQ19RR1JPVVBfQVNTSUdOIF9JT1coQlRSRlNfSU9DVExfTUFHSUMsIDQxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9xZ3JvdXBfYXNzaWduX2FyZ3MpCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYzNWZhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGY5NjI1YjVmM2ZkNWRhYzNmMzU5MWRiZWViMjRkYzlkNmZkYTc5MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDEyOjU2OjIxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggOS85XSBuc3MtbXltYWNoaW5lczogQnVpbGQgY29uZGl0aW9uYWxseSB3aGVuCisgRU5BQkxFX01ZSE9TVE5BTUUgaXMgc2V0CisKK0ZpeGVzIGJ1aWxkIGZhaWx1cmVzIHdoZW4gYnVpbGRpbmcgd2l0aCAtLWRpc2FibGUtbXlob3N0bmFtZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMTEgKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggM2JiMDg3ZmVmLi43M2JkNzBiMGIgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0xMzcxLDEyICsxMzcxLDE1IEBAIHRlc3RfZGxvcGVuID0gZXhlY3V0YWJsZSgKKyAgICAgICAgIGxpbmtfd2l0aCA6IFtsaWJiYXNpY10sCisgICAgICAgICBkZXBlbmRlbmNpZXMgOiBbbGliZGxdKQorIAorLWZvcmVhY2ggdHVwbGUgOiBbWydteWhvc3RuYW1lJywgJ0VOQUJMRV9NWUhPU1ROQU1FJ10sCistICAgICAgICAgICAgICAgICBbJ3N5c3RlbWQnLCAgICAnRU5BQkxFX05TU19TWVNURU1EJ10sCistICAgICAgICAgICAgICAgICBbJ215bWFjaGluZXMnLCAnRU5BQkxFX01BQ0hJTkVEJ10sCistICAgICAgICAgICAgICAgICBbJ3Jlc29sdmUnLCAgICAnRU5BQkxFX1JFU09MVkUnXV0KKytmb3JlYWNoIHR1cGxlIDogW1snbXlob3N0bmFtZScsICdFTkFCTEVfTVlIT1NUTkFNRScsICAnJ10sCisrICAgICAgICAgICAgICAgICBbJ3N5c3RlbWQnLCAgICAnRU5BQkxFX05TU19TWVNURU1EJywgJyddLAorKyAgICAgICAgICAgICAgICAgWydteW1hY2hpbmVzJywgJ0VOQUJMRV9NQUNISU5FRCcsICAgICdFTkFCTEVfTVlIT1NUTkFNRSddLAorKyAgICAgICAgICAgICAgICAgWydyZXNvbHZlJywgICAgJ0VOQUJMRV9SRVNPTFZFJywgICAgICcnXV0KKyAKKyAgICAgICAgIGNvbmRpdGlvbiA9IHR1cGxlWzFdID09ICcnIG9yIGNvbmYuZ2V0KHR1cGxlWzFdKSA9PSAxCisrICAgICAgICBpZiB0dXBsZVsyXSAhPSAnJyBhbmQgY29uZGl0aW9uCisrICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGNvbmYuZ2V0KHR1cGxlWzJdKSA9PSAxCisrICAgICAgICBlbmRpZgorICAgICAgICAgaWYgY29uZGl0aW9uCisgICAgICAgICAgICAgICAgIG1vZHVsZSA9IHR1cGxlWzBdCisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIxNDM2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBmZmRmOWNiNmJhMGQ5MzJiODE5MzNkODI0ZjIzYTg3OGMzMTNhOGQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjIgRmViIDIwMTYgMDU6NTk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8zMV0gcmVtb3ZlIGR1cGxpY2F0ZSBpbmNsdWRlIHVjaGFyLmgKLQotbWlzc2luZy5oIGFscmVhZHkgaW5jbHVkZXMgaXQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gc3JjL2Jhc2ljL2VzY2FwZS5oIHwgMSAtCi0gc3JjL2Jhc2ljL3V0ZjguaCAgIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2VzY2FwZS5oIGIvc3JjL2Jhc2ljL2VzY2FwZS5oCi1pbmRleCBkZTg5ZjQzYTguLjk5MjFjY2JiZCAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9lc2NhcGUuaAotKysrIGIvc3JjL2Jhc2ljL2VzY2FwZS5oCi1AQCAtMjQsNyArMjQsNiBAQAotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDx1Y2hhci5oPgotIAotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotICNpbmNsdWRlICJtaXNzaW5nLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0ZjguaCBiL3NyYy9iYXNpYy91dGY4LmgKLWluZGV4IGIwYTc0ODVhZS4uZmEwNmQyOTA2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3V0ZjguaAotKysrIGIvc3JjL2Jhc2ljL3V0ZjguaAotQEAgLTIzLDcgKzIzLDYgQEAKLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0tI2luY2x1ZGUgPHVjaGFyLmg+Ci0gCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgIm1pc3NpbmcuaCIKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWNoZWNrLWZvci11Y2hhci5oLWluLW1lc29uLmJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTQ0YjU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGVhNGNhYWExYzZhNmRjNjgyYmIwNDU0OGFiMDVjNWM3M2QwYjQ1ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjM0OjUyICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMzFdIGNoZWNrIGZvciB1Y2hhci5oIGluIG1lc29uLmJ1aWxkCi0KLVVzZSAjaWYgSEFWRV9VQ0hBUl9IIHRvIGluY2x1ZGUgdWNoYXIuaCBjb25kaXRpb25hbGx5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgfCAxICsKLSBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA5YzI1MDIyYTQuLjk0YTE2NzEyYiAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTYyMyw2ICs2MjMsNyBAQCBmb3JlYWNoIGhlYWRlciA6IFsnY3J5cHQuaCcsCi0gICAgICAgICAgICAgICAgICAgJ3N5cy9hdXh2LmgnLAotICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKLSAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCi0rICAgICAgICAgICAgICAgICAgJ3VjaGFyLmgnLAotICAgICAgICAgICAgICAgICAgXQotIAotICAgICAgICAgY29uZi5zZXQxMCgnSEFWRV8nICsgaGVhZGVyLnVuZGVyc2NvcmlmeSgpLnRvX3VwcGVyKCksCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDM5YzFmYjcwMC4uODRkNmQ5MTY3IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTM4LDcgKzM4LDkgQEAKLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsjaWYgSEFWRV9VQ0hBUl9ICi0gI2luY2x1ZGUgPHVjaGFyLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNpZiBIQVZFX0FVRElUCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjU0Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGEwYmQ1ODczMDA3NDRkYmI4ZTljZmJiMDQzMjMzNjcwY2U3ODFjOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIgSnVsIDIwMTggMTM6MjI6NDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xOV0gc29ja2V0LXV0aWw6IGRvbid0IGZhaWwgaWYgbGliYyBkb2Vzbid0IHN1cHBvcnQgSUROCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKK2luZGV4IGE5MTMxMDJlMS4uMGQwMTU0ODA1IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCitAQCAtMzIsNiArMzIsMTYgQEAKKyAjaW5jbHVkZSAidXRmOC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3Qgc3VwcG9ydCBJRE4gKi8KKysjaWZuZGVmIE5JX0lETgorKyNkZWZpbmUgTklfSUROIDAKKysjZW5kaWYKKysKKysjaWZuZGVmIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUworKyNkZWZpbmUgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTIDAKKysjZW5kaWYKKysKKyAjaWYgRU5BQkxFX0lETgorICMgIGRlZmluZSBJRE5fRkxBR1MgTklfSUROCisgI2Vsc2UKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDkyM2QxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDYwZGQ0MTFlOTc1NmZjMmIxNGMwZTA2MWFkODAzNzgyYjRhZWU4NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjQ2OjA1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMzFdIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvc29ja2V0LXV0aWwuYyB8IDEwICsrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotaW5kZXggMmM3MGNhZGUxLi42N2FlZGFkZDQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKLUBAIC01MCw2ICs1MCwxNiBAQAotICNpbmNsdWRlICJ1dGY4LmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSAKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBzdXBwb3J0IElETiAqLwotKyNpZm5kZWYgTklfSUROCi0rI2RlZmluZSBOSV9JRE4gMAotKyNlbmRpZgotKwotKyNpZm5kZWYgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTCi0rI2RlZmluZSBOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMgMAotKyNlbmRpZgotKwotICNpZiBFTkFCTEVfSUROCi0gIyAgZGVmaW5lIElETl9GTEFHUyAoTklfSUROfE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUykKLSAjZWxzZQotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMjJmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSAwNDVmMjA1ZmQyMWU1ZTM4MGVkZjgxM2RlMDRmY2ZiZjVhNDg3MjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyIEp1bCAyMDE4IDEzOjI4OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMTldIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIF9fY29tcGFyX2ZuX3QKKyB0eXBlZGVmCisKK2luY2x1ZGUgbWlzc2luZy5oIGZvciBtaXNzaW5nIF9fY29tcGFyX2ZuX3QKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKKyBzcmMvYmFzaWMvc3RyYnVmLmMgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCA2ZGM3NTBlYmEuLmNkMWNjMTA5ZiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xMTc5LDYgKzExNzksMTEgQEAgc3RydWN0IGlucHV0X21hc2sgeworICNkZWZpbmUgUkVOQU1FX05PUkVQTEFDRSAoMSA8PCAwKQorICNlbmRpZgorIAorKyNpZm5kZWYgX19DT01QQVJfRk5fVAorKyNkZWZpbmUgX19DT01QQVJfRk5fVAorK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOworKyNlbmRpZgorKworICNpZm5kZWYgS0NNUF9GSUxFCisgI2RlZmluZSBLQ01QX0ZJTEUgMAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdHJidWYuYyBiL3NyYy9iYXNpYy9zdHJidWYuYworaW5kZXggZTJlZDc3NmEwLi40ZDNlYmVjNGMgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc3RyYnVmLmMKKysrKyBiL3NyYy9iYXNpYy9zdHJidWYuYworQEAgLTcsNiArNyw3IEBACisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyYnVmLmgiCisgI2luY2x1ZGUgInV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIC8qCisgICogU3RyYnVmIHN0b3JlcyBnaXZlbiBzdHJpbmdzIGluIGEgc2luZ2xlIGNvbnRpbnVvdXMgYWxsb2NhdGVkIG1lbW9yeQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MWJjNGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSAxZmFkZjgwNWNiMzkxZTNiY2JkOWEwMjg2YTllNGI3YWRiOWU3NDI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyIEp1bCAyMDE4IDEzOjM0OjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTldIGZpeCBtaXNzaW5nIG9mIF9fcmVnaXN0ZXJfYXRmb3JrIGZvciBub24tZ2xpYmMgYnVpbGRzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCitpbmRleCAwYTRmOTE3Y2IuLjM1NDNiYzA0NSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCitAQCAtMjIsNiArMjIsOSBAQAorICNpZiBIQVZFX1ZBTEdSSU5EX1ZBTEdSSU5EX0gKKyAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KKyAjZW5kaWYKKysjaWZuZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisrI2VuZGlmCisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiYXJjaGl0ZWN0dXJlLmgiCitAQCAtMTE1MCwxMSArMTE1MywxNSBAQCB2b2lkIHJlc2V0X2NhY2hlZF9waWQodm9pZCkgeworICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7CisgfQorIAorKyNpZmRlZiBfX0dMSUJDX18KKyAvKiBXZSB1c2UgZ2xpYmMgX19yZWdpc3Rlcl9hdGZvcmsoKSArIF9fZHNvX2hhbmRsZSBkaXJlY3RseSBoZXJlLCBhcyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGdsaWJjCisgICogaGVhZGVycy4gX19yZWdpc3Rlcl9hdGZvcmsoKSBpcyBtb3N0bHkgZXF1aXZhbGVudCB0byBwdGhyZWFkX2F0Zm9yaygpLCBidXQgZG9lc24ndCByZXF1aXJlIHVzIHRvIGxpbmsgYWdhaW5zdAorICAqIGxpYnB0aHJlYWQsIGFzIGl0IGlzIHBhcnQgb2YgZ2xpYmMgYW55d2F5LiAqLworIGV4dGVybiBpbnQgX19yZWdpc3Rlcl9hdGZvcmsodm9pZCAoKnByZXBhcmUpICh2b2lkKSwgdm9pZCAoKnBhcmVudCkgKHZvaWQpLCB2b2lkICgqY2hpbGQpICh2b2lkKSwgdm9pZCAqIF9fZHNvX2hhbmRsZSk7CisgZXh0ZXJuIHZvaWQqIF9fZHNvX2hhbmRsZSBfX2F0dHJpYnV0ZV9fICgoX193ZWFrX18pKTsKKysjZWxzZQorKyNkZWZpbmUgX19yZWdpc3Rlcl9hdGZvcmsocHJlcGFyZSxwYXJlbnQsY2hpbGQsZHNvKSBwdGhyZWFkX2F0Zm9yayhwcmVwYXJlLHBhcmVudCxjaGlsZCkKKysjZW5kaWYKKyAKKyBwaWRfdCBnZXRwaWRfY2FjaGVkKHZvaWQpIHsKKyAgICAgICAgIHN0YXRpYyBib29sIGluc3RhbGxlZCA9IGZhbHNlOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjA3ODYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNDA2YTRjODY5MjMxNmU4YzdlMTRjNzhmOWE4MDI2ODliZTMwNGE5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMTcgTm92IDIwMTcgMDk6NDY6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8zMV0gcnVsZXM6IHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMgaW4gaWRlIGRldmljZXMKLQotRm9ybWF0dGluZyBJREUgc3RvcmFnZSBkb2VzIG5vdCB0cmlnZ2VyICJjaGFuZ2UiIHVldmVudHMuIEFzIGEgcmVzdWx0Ci1jbGllbnRzIHVzaW5nIHVkZXYgQVBJIGRvbid0IGdldCBhbnkgdXBkYXRlcyBhZnRlcndhcmRzIGFuZCBnZXQgb3V0ZGF0ZWQKLWluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UuCi0uLi4KLXJvb3RAcWVtdXg4Ni02NDp+IyBta2ZzLmV4dDQgLUYgL2Rldi9oZGExCi1DcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjYyMTQ0IDRrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCi1GaWxlc3lzdGVtIFVVSUQ6IDk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgotCi1yb290QHFlbXV4ODYtNjQ6fiMgbHMgL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCi1sczogY2Fubm90IGFjY2VzcyAnL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotLi4uCi1JbmNsdWRlIGhkKiBpbiBhIG1hdGNoIGZvciB3YXRjaCBvcHRpb24gYXNzaWdubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gQSBzaW1pbGFyIHBhdGNoIHJlamVjdGVkIGJ5IHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERQotaXMgZGVwcmVjYXRlZC4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcnVsZXMvNjAtYmxvY2sucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1ibG9jay5ydWxlcyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi1pbmRleCAzNDNmYzA2ZjguLmI1MjM3ZGFjNCAxMDA2NDQKLS0tLSBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi0rKysgYi9ydWxlcy82MC1ibG9jay5ydWxlcwotQEAgLTgsNCArOCw0IEBAIEFDVElPTj09ImFkZCIsIFNVQlNZU1RFTT09Im1vZHVsZSIsIEtFUk5FTD09ImJsb2NrIiwgQVRUUntwYXJhbWV0ZXJzL2V2ZW50c19kZmxfCi0gQUNUSU9OPT0iY2hhbmdlIiwgU1VCU1lTVEVNPT0ic2NzaSIsIEVOVntERVZUWVBFfT09InNjc2lfZGV2aWNlIiwgVEVTVD09ImJsb2NrIiwgQVRUUntibG9jay8qL3VldmVudH09ImNoYW5nZSIKLSAKLSAjIHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMsIGNhdXNlZCBieSB0b29scyBjbG9zaW5nIHRoZSBkZXZpY2Ugbm9kZSB3aGljaCB3YXMgb3BlbmVkIGZvciB3cml0aW5nCi0tQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBLRVJORUw9PSJsb29wKnxudm1lKnxzZCp8dmQqfHh2ZCp8cG1lbSp8bW1jYmxrKiIsIE9QVElPTlMrPSJ3YXRjaCIKLStBQ1RJT04hPSJyZW1vdmUiLCBTVUJTWVNURU09PSJibG9jayIsIEtFUk5FTD09Imxvb3AqfG52bWUqfHNkKnx2ZCp8eHZkKnxwbWVtKnxtbWNibGsqfGhkKiIsIE9QVElPTlMrPSJ3YXRjaCIKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjliM2MxNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCkBAIC0wLDAgKzEsOTAgQEAKK0Zyb20gYTBhYzBjZmQ5MGFmNjQzMWM2NGQxYjI3NmY0MjJhMjA5MmQ1NjliMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMiBKdWwgMjAxOCAxMzo0NDoyMSArMDgwMAorU3ViamVjdDogW1BBVENIIDEzLzE5XSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKKworUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKK3RoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwordWludG1heF90LgorCitGaXhlcyBwb3J0YWJsaWxpdHkgZXJyb3JzIGxpa2UKKworZXhlY3V0ZS5jOjM0NDY6MzY6IGVycm9yOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdybGltX3Qge2FrYSBsb25nIGxvbmcgdW5zaWduZWQgaW50fScgWy1XZXJyb3I9Zm9ybWF0PV0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvNzE5OV0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgOCAtLS0tLS0tLQorIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgOCArKysrLS0tLQorIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgIHwgOCArKysrLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKK2luZGV4IDE2MDU1MGNkNi4uNjEyNDVkMWUzIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitAQCAtNDMsMTQgKzQzLDYgQEAKKyAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKKyAjZW5kaWYKKyAKKy0jaWYgU0laRU9GX1JMSU1fVCA9PSA4CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1NjQKKy0jZWxpZiBTSVpFT0ZfUkxJTV9UID09IDQKKy0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXUzMgorLSNlbHNlCistIyAgZXJyb3IgVW5rbm93biBybGltX3Qgc2l6ZQorLSNlbmRpZgorLQorICNpZiBTSVpFT0ZfREVWX1QgPT0gOAorICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKKyAjZWxpZiBTSVpFT0ZfREVWX1QgPT0gNAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKK2luZGV4IGJlMWJhNjE1ZS4uZTMyOGNlNDk5IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitAQCAtMjk5LDEzICsyOTksMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKKyAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKyAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eToiIFJMSU1fRk1ULCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eTolanUiLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOmluZmluaXR5IiwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OmluZmluaXR5IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID09IHJsLT5ybGltX21heCkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6IiBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyLCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKKyAKKyAgICAgICAgIGlmICghcykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitpbmRleCA4YWM2OWQxYTAuLmVmZWRmMzg0MiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitAQCAtMzk3NiwxMCArMzk3NiwxMCBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKGNvbnN0IEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKKyAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIkxpbWl0JXMlczogIiBSTElNX0ZNVCAiXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICJMaW1pdCVzJXNTb2Z0OiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIkxpbWl0JXMlczogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIkxpbWl0JXMlc1NvZnQ6ICVqdVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fY3VyKTsKKyAgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAgaWYgKGMtPmlvcHJpb19zZXQpIHsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzkyNzhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MzEgKzAsMCBAQAotRnJvbSA1ODBkMjNjZjBiMzJlMzZhOGZiOTY3MTAzMzZmZmVmNDMyYjNjN2NlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMToxMDo1OCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gc3JjL2Jhc2ljL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgNCArCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKLSBzcmMvYmFzaWMvc3RkaW8tdXRpbC5oICAgICAgICAgIHwgICAyICstCi0gc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICB8ICAgMiArLQotIDYgZmlsZXMgY2hhbmdlZCwgMzM3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggOTRhMTY3MTJiLi40ZWFiYWFmZTggMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC02MjAsNiArNjIwLDcgQEAgZm9yZWFjaCBoZWFkZXIgOiBbJ2NyeXB0LmgnLAotICAgICAgICAgICAgICAgICAgICdsaW51eC9idHJmcy5oJywKLSAgICAgICAgICAgICAgICAgICAnbGludXgvbWVtZmQuaCcsCi0gICAgICAgICAgICAgICAgICAgJ2xpbnV4L3ZtX3NvY2tldHMuaCcsCi0rICAgICAgICAgICAgICAgICAgJ3ByaW50Zi5oJywKLSAgICAgICAgICAgICAgICAgICAnc3lzL2F1eHYuaCcsCi0gICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL21lbWNoZWNrLmgnLAotICAgICAgICAgICAgICAgICAgICd2YWxncmluZC92YWxncmluZC5oJywKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWVzb24uYnVpbGQgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKLWluZGV4IDQ0Y2QzMWVjYi4uNDM1YzZlZTAyIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKLUBAIC0zMTAsNiArMzEwLDEwIEBAIGVuZGZvcmVhY2gKLSAKLSBiYXNpY19zb3VyY2VzICs9IFttaXNzaW5nX2hdICsgZ2VuZXJhdGVkX2dwZXJmX2hlYWRlcnMKLSAKLStpZiBjb25mLmdldCgnSEFWRV9QUklOVEZfSCcpICE9IDEKLSsgICAgICAgIGJhc2ljX3NvdXJjZXMgKz0gW2ZpbGVzKCdwYXJzZS1wcmludGYtZm9ybWF0LmMnKV0KLStlbmRpZgotKwotIGxpYmJhc2ljID0gc3RhdGljX2xpYnJhcnkoCi0gICAgICAgICAnYmFzaWMnLAotICAgICAgICAgYmFzaWNfc291cmNlcywKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNDk0MzdlNTQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCi1AQCAtMCwwICsxLDI3MyBAQAotKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KLSsKLSsvKioqCi0rICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgotKwotKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci0rCi0rICBXaXRoIHBhcnRzIGZyb20gdGhlIG11c2wgQyBsaWJyYXJ5Ci0rICBDb3B5cmlnaHQgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4KLSsKLSsgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKLSsgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyoqKi8KLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbm9uYXJnKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICBkbyB7Ci0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCi0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIH0gd2hpbGUgKCpmbXQrKyAhPSAnJScpOwotKyAgICAgICAgcmV0dXJuIGZtdDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbnVtKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICBmb3IgKDsqZm10ID49ICcwJyAmJiAqZm10IDw9ICc5JzsgZm10KyspCi0rICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87Ci0rICAgICAgICByZXR1cm4gZm10OwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9hcmduKGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90ICphcmcpCi0rewotKyAgICAgICAgY29uc3QgY2hhciAqcCA9IGZtdDsKLSsgICAgICAgIHNpemVfdCB2YWwgPSAwOwotKwotKyAgICAgICAgaWYgKCpwIDwgJzEnIHx8ICpwID4gJzknKQotKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OwotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICB2YWwgPSAxMCp2YWwgKyAoKnArKyAtICcwJyk7Ci0rICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKLSsKLSsgICAgICAgIGlmICgqcCAhPSAnJCcpCi0rICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICAqYXJnID0gdmFsOwotKyAgICAgICAgcmV0dXJuIHArMTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfZmxhZ3MoY29uc3QgY2hhciAqZm10KQotK3sKLSsgICAgICAgIHdoaWxlICgxKSB7Ci0rICAgICAgICAgICAgICAgIHN3aXRjaCAoKmZtdCkgewotKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnMCc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJy0nOgotKyAgICAgICAgICAgICAgICBjYXNlICcgJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnKyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnSSc6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIH0KLSt9Ci0rCi0rZW51bSBzdGF0ZSB7Ci0rICAgICAgICBCQVJFLAotKyAgICAgICAgTFBSRSwKLSsgICAgICAgIExMUFJFLAotKyAgICAgICAgSFBSRSwKLSsgICAgICAgIEhIUFJFLAotKyAgICAgICAgQklHTFBSRSwKLSsgICAgICAgIFpUUFJFLAotKyAgICAgICAgSlBSRSwKLSsgICAgICAgIFNUT1AKLSt9OwotKwotK2VudW0gdHlwZSB7Ci0rICAgICAgICBOT05FLAotKyAgICAgICAgUFRSLAotKyAgICAgICAgSU5ULAotKyAgICAgICAgVUlOVCwKLSsgICAgICAgIFVMTE9ORywKLSsgICAgICAgIExPTkcsCi0rICAgICAgICBVTE9ORywKLSsgICAgICAgIFNIT1JULAotKyAgICAgICAgVVNIT1JULAotKyAgICAgICAgQ0hBUiwKLSsgICAgICAgIFVDSEFSLAotKyAgICAgICAgTExPTkcsCi0rICAgICAgICBTSVpFVCwKLSsgICAgICAgIElNQVgsCi0rICAgICAgICBVTUFYLAotKyAgICAgICAgUERJRkYsCi0rICAgICAgICBVSVBUUiwKLSsgICAgICAgIERCTCwKLSsgICAgICAgIExEQkwsCi0rICAgICAgICBNQVhUWVBFCi0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgcGFfdHlwZXNbTUFYVFlQRV0gPSB7Ci0rICAgICAgICBbTk9ORV0gICA9IFBBX0lOVCwKLSsgICAgICAgIFtQVFJdICAgID0gUEFfUE9JTlRFUiwKLSsgICAgICAgIFtJTlRdICAgID0gUEFfSU5ULAotKyAgICAgICAgW1VJTlRdICAgPSBQQV9JTlQsCi0rICAgICAgICBbVUxMT05HXSA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW0xPTkddICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbVUxPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtTSE9SVF0gID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKLSsgICAgICAgIFtVU0hPUlRdID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKLSsgICAgICAgIFtDSEFSXSAgID0gUEFfQ0hBUiwKLSsgICAgICAgIFtVQ0hBUl0gID0gUEFfQ0hBUiwKLSsgICAgICAgIFtMTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbU0laRVRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtJTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbVU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1BESUZGXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtVSVBUUl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAotKyAgICAgICAgW0RCTF0gICAgPSBQQV9ET1VCTEUsCi0rICAgICAgICBbTERCTF0gICA9IFBBX0RPVUJMRSB8IFBBX0ZMQUdfTE9OR19ET1VCTEUKLSt9OwotKwotKyNkZWZpbmUgUyh4KSBbKHgpLSdBJ10KLSsjZGVmaW5lIEUoeCkgKFNUT1AgKyAoeCkpCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3RhdGVzW11bJ3onLSdBJysxXSA9IHsKLSsgICAgICAgIHsgLyogMDogYmFyZSB0eXBlcyAqLwotKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElOVCksIFMoJ2knKSA9IEUoSU5UKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVSU5UKSxTKCd1JykgPSBFKFVJTlQpLFMoJ3gnKSA9IEUoVUlOVCksIFMoJ1gnKSA9IEUoVUlOVCksCi0rICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgUygnZicpID0gRShEQkwpLCBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgUygnRicpID0gRShEQkwpLCBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoQ0hBUiksUygnQycpID0gRShJTlQpLAotKyAgICAgICAgICAgICAgICBTKCdzJykgPSBFKFBUUiksIFMoJ1MnKSA9IEUoUFRSKSwgUygncCcpID0gRShVSVBUUiksUygnbicpID0gRShQVFIpLAotKyAgICAgICAgICAgICAgICBTKCdtJykgPSBFKE5PTkUpLAotKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMUFJFLCAgIFMoJ2gnKSA9IEhQUkUsIFMoJ0wnKSA9IEJJR0xQUkUsCi0rICAgICAgICAgICAgICAgIFMoJ3onKSA9IFpUUFJFLCAgUygnaicpID0gSlBSRSwgUygndCcpID0gWlRQUkUKLSsgICAgICAgIH0sIHsgLyogMTogbC1wcmVmaXhlZCAqLwotKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExPTkcpLCBTKCdpJykgPSBFKExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMT05HKSxTKCd1JykgPSBFKFVMT05HKSxTKCd4JykgPSBFKFVMT05HKSxTKCdYJykgPSBFKFVMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCAgUygnZicpID0gRShEQkwpLCAgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksICBTKCdGJykgPSBFKERCTCksICBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoSU5UKSwgIFMoJ3MnKSA9IEUoUFRSKSwgIFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnbCcpID0gTExQUkUKLSsgICAgICAgIH0sIHsgLyogMjogbGwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShMTE9ORyksIFMoJ2knKSA9IEUoTExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMTE9ORyksUygndScpID0gRShVTExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVMTE9ORyksUygnWCcpID0gRShVTExPTkcpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogMzogaC1wcmVmaXhlZCAqLwotKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFNIT1JUKSwgUygnaScpID0gRShTSE9SVCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVVNIT1JUKSxTKCd1JykgPSBFKFVTSE9SVCksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVVNIT1JUKSxTKCdYJykgPSBFKFVTSE9SVCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnaCcpID0gSEhQUkUKLSsgICAgICAgIH0sIHsgLyogNDogaGgtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShDSEFSKSwgUygnaScpID0gRShDSEFSKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVQ0hBUiksUygndScpID0gRShVQ0hBUiksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUNIQVIpLFMoJ1gnKSA9IEUoVUNIQVIpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogNTogTC1wcmVmaXhlZCAqLwotKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKExEQkwpLFMoJ2YnKSA9IEUoTERCTCksUygnZycpID0gRShMREJMKSwgUygnYScpID0gRShMREJMKSwKLSsgICAgICAgICAgICAgICAgUygnRScpID0gRShMREJMKSxTKCdGJykgPSBFKExEQkwpLFMoJ0cnKSA9IEUoTERCTCksIFMoJ0EnKSA9IEUoTERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfSwgeyAvKiA2OiB6LSBvciB0LXByZWZpeGVkIChhc3N1bWVkIHRvIGJlIHNhbWUgc2l6ZSkgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShQRElGRiksUygnaScpID0gRShQRElGRiksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoU0laRVQpLFMoJ3UnKSA9IEUoU0laRVQpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFNJWkVUKSxTKCdYJykgPSBFKFNJWkVUKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDc6IGotcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTUFYKSwgUygnaScpID0gRShJTUFYKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTUFYKSwgUygndScpID0gRShVTUFYKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShVTUFYKSwgUygnWCcpID0gRShVTUFYKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9Ci0rfTsKLSsKLStzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKQotK3sKLSsgICAgICAgIHNpemVfdCBpID0gMDsKLSsgICAgICAgIHNpemVfdCBsYXN0ID0gMDsKLSsKLSsgICAgICAgIG1lbXNldCh0eXBlcywgMCwgbik7Ci0rCi0rICAgICAgICB3aGlsZSAoMSkgewotKyAgICAgICAgICAgICAgICBzaXplX3QgYXJnOwotKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7Ci0rCi0rICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbm9uYXJnKGZtdCk7Ci0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGFyZyA9IDA7Ci0rICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQsICZhcmcpOwotKyAgICAgICAgICAgICAgICAvKiBmbGFncyAqLwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2ZsYWdzKGZtdCk7Ci0rICAgICAgICAgICAgICAgIC8qIHdpZHRoICovCi0rICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3YXJnID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZ3YXJnKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd2FyZzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA8PSBuICYmIHR5cGVzW3dhcmctMV0gPT0gTk9ORSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3dhcmctMV0gPSBJTlQ7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7Ci0rICAgICAgICAgICAgICAgIC8qIHByZWNpc2lvbiAqLwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJnID0gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJnBhcmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID4gbGFzdCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHBhcmc7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA8PSBuICYmIHR5cGVzW3BhcmctMV0gPT0gTk9ORSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbcGFyZy0xXSA9IElOVDsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy0nKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBtb2RpZmllciBhbmQgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KLSsgICAgICAgICAgICAgICAgc3RhdGUgPSBCQVJFOwotKyAgICAgICAgICAgICAgICBkbyB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKmZtdCsrOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJ0EnIHx8IGMgPiAneicpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlc1tzdGF0ZV1TKGMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlIDwgU1RPUCk7Ci0rCi0rICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBFKE5PTkUpKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgICAgICAgICBpZiAoYXJnID09IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKytpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnID4gbGFzdCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gYXJnOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnIDw9IG4pCi0rICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbYXJnLTFdID0gc3RhdGUgLSBTVE9QOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKGxhc3QgPiBuKQotKyAgICAgICAgICAgICAgICBsYXN0ID0gbjsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCi0rICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gcGFfdHlwZXNbdHlwZXNbaV1dOwotKwotKyAgICAgICAgcmV0dXJuIGxhc3Q7Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi40N2JlNzUyMmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKLUBAIC0wLDAgKzEsNTcgQEAKLSsvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCi0rCi0rLyoqKgotKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KLSsKLSsgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotKwotKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5Ci0rICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKLSsgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQotKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rKioqLwotKwotKyNwcmFnbWEgb25jZQotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSsjaWYgSEFWRV9QUklOVEZfSAotKyNpbmNsdWRlIDxwcmludGYuaD4KLSsjZWxzZQotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLStlbnVtIHsJCQkJLyogQyB0eXBlOiAqLwotKyAgUEFfSU5ULAkJCS8qIGludCAqLwotKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLwotKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCi0rICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KLSsgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KLSsgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCi0rICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLwotKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLwotKyAgUEFfTEFTVAotK307Ci0rCi0rLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KLSsjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCi0rI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQotKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORwotKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQotKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCi0rI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCi0rCi0rc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7Ci0rCi0rI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotaW5kZXggZGJmYWZiYTI2Li44MDM4MzgwZDYgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi1AQCAtMjAsMTIgKzIwLDEyIEBACi0gICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0gCi0tI2luY2x1ZGUgPHByaW50Zi5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0rI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKLSAKLSAjZGVmaW5lIHhzcHJpbnRmKGJ1ZiwgZm10LCAuLi4pIFwKLSAgICAgICAgIGFzc2VydF9tZXNzYWdlX3NlKChzaXplX3QpIHNucHJpbnRmKGJ1ZiwgRUxFTUVOVFNPRihidWYpLCBmbXQsIF9fVkFfQVJHU19fKSA8IEVMRU1FTlRTT0YoYnVmKSwgInhzcHJpbnRmOiAiICNidWYgIltdIG11c3QgYmUgYmlnIGVub3VnaCIpCi1kaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotaW5kZXggNzMzMjliYTAyLi43MGJiOWUwZTggMTAwNjQ0Ci0tLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLUBAIC0yMCw3ICsyMCw2IEBACi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHByaW50Zi5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLUBAIC0zOSw2ICszOCw3IEBACi0gI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0gCi0gI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCi0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4YTYzMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGNiNTliM2FmNTRmYjNiYmQ0ZDgyNjRmZWY5MTk4MTBhZjhkMDhkMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE0OjAxOjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvMTldIGZpeCBtaXNzaW5nIFVMT05HX0xPTkdfTUFYIGRlZmluaXRpb24gaW4gY2FzZSBvZiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbF0KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCBjZDFjYzEwOWYuLjE0NDA1OGExYSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC01NCw2ICs1NCwxMCBAQCBzdHJ1Y3Qgc29ja2FkZHJfdm0geworIH07CisgI2VuZGlmIC8qICFIQVZFX0xJTlVYX1ZNX1NPQ0tFVFNfSCAqLworIAorKyNpZm5kZWYgVUxPTkdfTE9OR19NQVgKKysjZGVmaW5lIFVMT05HX0xPTkdfTUFYIFVMTE9OR19NQVgKKysjZW5kaWYKKysKKyAjaWZuZGVmIFJMSU1JVF9SVFRJTUUKKyAjZGVmaW5lIFJMSU1JVF9SVFRJTUUgMTUKKyAjZW5kaWYKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY2MmNiYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotRnJvbSAzM2JlOTA1MjMxNWNjNGVjOGU5MjlmYTIzOGUxZjBjYzAxNjFhZDA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMToxNToyOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQotCi1pbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAxICsKLSBzcmMvYmFzaWMvbWlzc2luZy5oICAgICB8IDExICsrKysrKysrKysrCi0gc3JjL2Jhc2ljL21rZGlyLmMgICAgICAgfCAgMSArCi0gc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyAgfCAgMSArCi0gc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgfCAgMSArCi0gc3JjL3NoYXJlZC9wYWdlci5jICAgICAgfCAgMSArCi0gc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyAgfCAgMSArCi0gNyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA0ZWFiYWFmZTguLjEyODExYjNmMyAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTUyNSw2ICs1MjUsNyBAQCBmb3JlYWNoIGlkZW50IDogWwotICAgICAgICAgWydicGYnLCAgICAgICAgICAgICAgICcnJyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAotICAgICAgICAgWydleHBsaWNpdF9iemVybycgLCAgICcnJyNpbmNsdWRlIDxzdHJpbmcuaD4nJyddLAotKyAgICAgICAgWydzdHJuZHVwYScgLCAgICAgICAgICcnJyNpbmNsdWRlIDxzdHJpbmcuaD4nJyddLAotIF0KLSAKLSAgICAgICAgIGhhdmUgPSBjYy5oYXNfZnVuY3Rpb24oaWRlbnRbMF0sIHByZWZpeCA6IGlkZW50WzFdLCBhcmdzIDogJy1EX0dOVV9TT1VSQ0UnKQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA4NGQ2ZDkxNjcuLjA3YThjODM2NCAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMTg3LDYgKzExODcsMTcgQEAgc3RydWN0IGlucHV0X21hc2sgewotIHR5cGVkZWYgaW50MzJfdCBrZXlfc2VyaWFsX3Q7Ci0gI2VuZGlmCi0gCi0rI2lmICEgSEFWRV9TVFJORFVQQQotKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAotKyAgKHsgXAotKyAgICBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgXAotKyAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuKF9fb2xkLCAobikpOyBcCi0rICAgIGNoYXIgKl9fbmV3ID0gKGNoYXIgKilhbGxvY2EoX19sZW4gKyAxKTsgXAotKyAgICBfX25ld1tfX2xlbl0gPSAnXDAnOyBcCi0rICAgIChjaGFyICopbWVtY3B5KF9fbmV3LCBfX29sZCwgX19sZW4pOyBcCi0rICB9KQotKyNlbmRpZgotKwotICNpZm5kZWYgS0VZQ1RMX0pPSU5fU0VTU0lPTl9LRVlSSU5HCi0gI2RlZmluZSBLRVlDVExfSk9JTl9TRVNTSU9OX0tFWVJJTkcgMQotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ta2Rpci5jIGIvc3JjL2Jhc2ljL21rZGlyLmMKLWluZGV4IGRlNDc0NmM4Ni4uZDUxNTE4YTVhIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21rZGlyLmMKLSsrKyBiL3NyYy9iYXNpYy9ta2Rpci5jCi1AQCAtMzAsNiArMzAsNyBAQAotICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RhdC11dGlsLmgiCi0gI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gaW50IG1rZGlyX3NhZmVfaW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBib29sIGZvbGxvd19zeW1saW5rLCBta2Rpcl9mdW5jX3QgX21rZGlyKSB7Ci0gICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotaW5kZXggMmMyMjc1M2RlLi45NzUzMzcyMWQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCi0gI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gaW50IHBhcnNlX2Jvb2xlYW4oY29uc3QgY2hhciAqdikgewotICAgICAgICAgYXNzZXJ0KHYpOwotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKLWluZGV4IDliYjQyY2M3Yi4uMjNiYmQ5ZTY3IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCi1AQCAtOSw2ICs5LDcgQEAKLSAjaW5jbHVkZSAicHJvY2ZzLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gaW50IHByb2Nmc190YXNrc19nZXRfbGltaXQodWludDY0X3QgKnJldCkgewotICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqdmFsdWUgPSBOVUxMOwotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvcGFnZXIuYyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotaW5kZXggNzVkYjNjOTg1Li44NGYwNmJmN2QgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL3BhZ2VyLmMKLSsrKyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotQEAgLTM5LDYgKzM5LDcgQEAKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSAjaW5jbHVkZSAic3Rydi5oIgotICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBzdGF0aWMgcGlkX3QgcGFnZXJfcGlkID0gMDsKLSAKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwotaW5kZXggYzM4YjdjYzk4Li44ZWM2YmYwOGQgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCi0rKysgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCi1AQCAtMjUsNiArMjUsNyBAQAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJ1aWQtcmFuZ2UuaCIKLSAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBzdGF0aWMgYm9vbCB1aWRfcmFuZ2VfaW50ZXJzZWN0KFVpZFJhbmdlICpyYW5nZSwgdWlkX3Qgc3RhcnQsIHVpZF90IG5yKSB7Ci0gICAgICAgICBhc3NlcnQocmFuZ2UpOwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTA5NDc2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi1Gcm9tIGI0NWNmNDkyM2M3ZTFmMTE2NTkyNWU5YjRkN2RiMjEwOGZhZjJlYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTA6NTA6MTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8zMV0gZG9uJ3QgZmFpbCBpZiBHTE9CX0JSQUNFIGFuZCBHTE9CX0FMVERJUkZVTkMgaXMgbm90Ci0gZGVmaW5lZAotCi1JZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IHByb3ZpZGUgYnJhY2UKLWV4cGFuc2lvbiB1c2VycyBqdXN0IHdvbid0IGdldCBpdC4KLQotRG9udCB1c2UgR05VIEdMT0IgZXh0ZW50aW9ucyBvbiBub24tZ2xpYmMgc3lzdGVtcwotCi1Db25kaXRpb25hbGl6ZSB1c2Ugb2YgR0xPQl9BTFRESVJGVU5DCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL2dsb2ItdXRpbC5jICAgICB8IDIwICsrKysrKysrKysrKysrKysrLS0tCi0gc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyB8IDE3ICsrKysrKysrKysrKysrKy0tCi0gc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMgICB8ICA4ICsrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi1pbmRleCA2ZTgwYTFlMjMuLjMxMmJiM2ZkMSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi1AQCAtMjgsMTMgKzI4LDE4IEBACi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgInBhdGgtdXRpbC5oIgotICNpbmNsdWRlICJzdHJ2LmgiCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KLSsjaWZuZGVmIEdMT0JfQlJBQ0UKLSsjZGVmaW5lIEdMT0JfQlJBQ0UgMAotKyNlbmRpZgotIAotIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7Ci0gICAgICAgICBpbnQgazsKLSAKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICAvKiBXZSB3YW50IHRvIHNldCBHTE9CX0FMVERJUkZVTkMgb3Vyc2VsdmVzLCBkb24ndCBhbGxvdyBpdCB0byBiZSBzZXQuICovCi0gICAgICAgICBhc3NlcnQoIShmbGFncyAmIEdMT0JfQUxURElSRlVOQykpOwotLQotICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfY2xvc2VkaXIpCi0gICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpcjsKLSAgICAgICAgIGlmICghcGdsb2ItPmdsX3JlYWRkaXIpCi1AQCAtNDUsMTAgKzUwLDEzIEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7Ci0gICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9sc3RhdCA9IGxzdGF0OwotICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfc3RhdCkKLSAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX3N0YXQgPSBzdGF0OwotLQotKyNlbmRpZgotICAgICAgICAgZXJybm8gPSAwOwotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgIGsgPSBnbG9iKHBhdGgsIGZsYWdzIHwgR0xPQl9BTFRESVJGVU5DLCBOVUxMLCBwZ2xvYik7Ci0tCi0rI2Vsc2UKLSsgICAgICAgIGsgPSBnbG9iKHBhdGgsIGZsYWdzLCBOVUxMLCBwZ2xvYik7Ci0rI2VuZGlmCi0gICAgICAgICBpZiAoayA9PSBHTE9CX05PTUFUQ0gpCi0gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwotICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT1NQQUNFKQotQEAgLTYxLDYgKzY5LDEyIEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci0gCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KLSsjaWZuZGVmIEdMT0JfQlJBQ0UKLSsjZGVmaW5lIEdMT0JfQlJBQ0UgMAotKyNlbmRpZgotKwotIGludCBnbG9iX2V4aXN0cyhjb25zdCBjaGFyICpwYXRoKSB7Ci0gICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7fTsKLSAgICAgICAgIGludCBrOwotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi1pbmRleCBiZDJmOGZjZmQuLmExMGM3NzQyNyAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKLSsrKyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKLUBAIC0zMCw2ICszMCwxMSBAQAotICNpbmNsdWRlICJnbG9iLXV0aWwuaCIKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAicm0tcmYuaCIKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7Ci0gICAgICAgICBjaGFyIG5hbWVbXSA9ICIvdG1wL3Rlc3QtZ2xvYl9leGlzdHMuWFhYWFhYIjsKLUBAIC01MiwyNSArNTcsMzMgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7Ci0gc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7Ci0gICAgICAgICBjaGFyIHRlbXBsYXRlW10gPSAiL3RtcC90ZXN0LWdsb2ItdXRpbC5YWFhYWFhYIjsKLSAgICAgICAgIGNvbnN0IGNoYXIgKmZuOwotLQotICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0gewotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgICAgICAgICAgLmdsX2Nsb3NlZGlyID0gKHZvaWQgKCopKHZvaWQgKikpIGNsb3NlZGlyLAotICAgICAgICAgICAgICAgICAuZ2xfcmVhZGRpciA9IChzdHJ1Y3QgZGlyZW50ICooKikodm9pZCAqKSkgcmVhZGRpcl9ub19kb3QsCi0gICAgICAgICAgICAgICAgIC5nbF9vcGVuZGlyID0gKHZvaWQgKigqKShjb25zdCBjaGFyICopKSBvcGVuZGlyLAotICAgICAgICAgICAgICAgICAuZ2xfbHN0YXQgPSBsc3RhdCwKLSAgICAgICAgICAgICAgICAgLmdsX3N0YXQgPSBzdGF0LAotKyNlbmRpZgotICAgICAgICAgfTsKLS0KLSAgICAgICAgIGludCByOwotIAotICAgICAgICAgYXNzZXJ0X3NlKG1rZHRlbXAodGVtcGxhdGUpKTsKLSAKLSAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvKiIpOwotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOwotKyNlbHNlCi0rICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOwotKyNlbmRpZgotICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKLSAKLSAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvLioiKTsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKLSsjZWxzZQotKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKLSsjZW5kaWYKLSAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7Ci0gCi0gICAgICAgICAodm9pZCkgcm1fcmYodGVtcGxhdGUsIFJFTU9WRV9ST09UfFJFTU9WRV9QSFlTSUNBTCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwotaW5kZXggMzhjYmI3MzljLi44OGNjNTQzZjAgMTAwNjQ0Ci0tLS0gYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwotKysrIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLUBAIC03Niw2ICs3NiwxMiBAQAotICNpbmNsdWRlICJ1bWFzay11dGlsLmgiCi0gI2luY2x1ZGUgInVzZXItdXRpbC5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KLSsjaWZuZGVmIEdMT0JfQlJBQ0UKLSsjZGVmaW5lIEdMT0JfQlJBQ0UgMAotKyNlbmRpZgotKwotIAotIC8qIFRoaXMgcmVhZHMgYWxsIGZpbGVzIGxpc3RlZCBpbiAvZXRjL3RtcGZpbGVzLmQvPyouY29uZiBhbmQgY3JlYXRlcwotICAqIHRoZW0gaW4gdGhlIGZpbGUgc3lzdGVtLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gY3JlYXRlCi1AQCAtMTI4OCw3ICsxMjk0LDkgQEAgc3RhdGljIGludCBpdGVtX2RvX2NoaWxkcmVuKEl0ZW0gKmksIGNvbnN0IGNoYXIgKnBhdGgsIGFjdGlvbl90IGFjdGlvbikgewotIAotIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbiwgYm9vbCByZWN1cnNpdmUpIHsKLSAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICAgICAgICAgIC5nbF9vcGVuZGlyID0gKHZvaWQgKigqKShjb25zdCBjaGFyICopKSBvcGVuZGlyX25vbW9kLAotKyNlbmRpZgotICAgICAgICAgfTsKLSAgICAgICAgIGludCByID0gMCwgazsKLSAgICAgICAgIGNoYXIgKipmbjsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3Y2E5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYjExMTA5ZWNjNDExMTBjNTE4YTk4YjZhYzM5NjExZmY4NjQ3NzAyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEyOjMzOjIyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMTldIHRlc3QtaGV4ZGVjb2N0LmM6IEluY2x1ZGUgbWlzc2luZy5oIGZvciBzdHJuZHVwYQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworaW5kZXggZGE5ZjMwMDhiLi43ZmYyZGZlMGMgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCitAQCAtNiw2ICs2LDcgQEAKKyAjaW5jbHVkZSAiaGV4ZGVjb2N0LmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgdm9pZCB0ZXN0X2hleGNoYXIodm9pZCkgeworICAgICAgICAgYXNzZXJ0X3NlKGhleGNoYXIoMHhhKSA9PSAnYScpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzAzN2VhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZWZjNTc4NTZmOTYxYzFmM2JmMDE2YzUxMWM1M2Q5OTBkYjhhYmRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTozMTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDE2LzMxXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90Ci0gdHlwZWRlZgotCi1pbmNsdWRlIG1pc3NpbmcuaCBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKLSBzcmMvYmFzaWMvc3RyYnVmLmMgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCAwN2E4YzgzNjQuLjFhZWUzMzQ2YSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMTYyLDYgKzExNjIsMTEgQEAgc3RydWN0IGlucHV0X21hc2sgewotICNkZWZpbmUgUkVOQU1FX05PUkVQTEFDRSAoMSA8PCAwKQotICNlbmRpZgotIAotKyNpZm5kZWYgX19DT01QQVJfRk5fVAotKyNkZWZpbmUgX19DT01QQVJfRk5fVAotK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwotKyNlbmRpZgotKwotICNpZm5kZWYgS0NNUF9GSUxFCi0gI2RlZmluZSBLQ01QX0ZJTEUgMAotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdHJidWYuYyBiL3NyYy9iYXNpYy9zdHJidWYuYwotaW5kZXggOGJlZmZmYTY2Li5iY2I4NjBmOTUgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc3RyYnVmLmMKLSsrKyBiL3NyYy9iYXNpYy9zdHJidWYuYwotQEAgLTI0LDYgKzI0LDcgQEAKLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJzdHJidWYuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIC8qCi0gICogU3RyYnVmIHN0b3JlcyBnaXZlbiBzdHJpbmdzIGluIGEgc2luZ2xlIGNvbnRpbnVvdXMgYWxsb2NhdGVkIG1lbW9yeQotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNmEzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBjNGJiZjNlZmVmZmZlMGE0ZWZhZGJmNGUzZjBhZGI1NGQ3NmZlMGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMToyNToyMiAtMDgwMAorU3ViamVjdDogW1BBVENIIDE2LzE5XSB0ZXN0LXNpemVvZi5jOiBEaXNhYmxlIHRlc3RzIGZvciBtaXNzaW5nIHR5cGVkZWZzIGluCisgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGVzdC90ZXN0LXNpemVvZi5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKK2luZGV4IDdhMWU0OTZlZC4uMzg2YjMxNGQ1IDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworQEAgLTQwLDggKzQwLDEwIEBAIGludCBtYWluKHZvaWQpIHsKKyAgICAgICAgIGluZm8odW5zaWduZWQpOworICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fc3lzY2FsbF91bG9uZ190KTsKKyAgICAgICAgIGluZm8oX19zeXNjYWxsX3Nsb25nX3QpOworKyNlbmRpZgorIAorICAgICAgICAgaW5mbyhmbG9hdCk7CisgICAgICAgICBpbmZvKGRvdWJsZSk7CitAQCAtNTksNyArNjEsOSBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHNzaXplX3QpOworICAgICAgICAgaW5mbyh0aW1lX3QpOworICAgICAgICAgaW5mbyh1c2VjX3QpOworKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgICAgIGluZm8oX190aW1lX3QpOworKyNlbmRpZgorICAgICAgICAgaW5mbyhwaWRfdCk7CisgICAgICAgICBpbmZvKHVpZF90KTsKKyAgICAgICAgIGluZm8oZ2lkX3QpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOWNmZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gZjJiMDE3M2NkOTgwNzg2NGRiMWVmM2IxMDJhYmFhNzZlZjM3ZTUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTk6MTIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8zMV0gSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKLQotRml4ZXMKLS9wYXRoL3RvL3N5c3RlbWQvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJwotIHN0cnVjdCBldGhoZHIgewotICAgICAgICBefn5+fn4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyB8IDEgKwotIHNyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyAgICAgICAgICAgICAgIHwgMSArCi0gc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgICAgICAgICAgICAgfCAxICsKLSBzcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgICAgICAgICAgICAgICB8IDEgKwotIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMSArCi0gNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKLWluZGV4IDBlZTdkNmYwZC4uZWY3NTg5M2E2IDEwMDY0NAotLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKLSsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi1AQCAtMjEsNiArMjEsNyBAQAotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgotICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KLSAjaW5jbHVkZSA8bGludXgvZ2VuZXRsaW5rLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCi1pbmRleCA0ZmM5YjYxMGEuLjYyOGM2MWM1NyAxMDA2NDQKLS0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYwotKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCi1AQCAtMjAsNiArMjAsNyBAQAotIAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLWluZGV4IDk5ZGQ0MTYyOS4uOTA0MDdjOWQ4IDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi1AQCAtMTksNiArMTksNyBAQAotICoqKi8KLSAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi1pbmRleCA5YmRhZWY4ZDkuLjk0OGY4OWNmOCAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYwotKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi1AQCAtMTgsNiArMTgsNyBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPG5ldC9pZi5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKLWluZGV4IDQwMTU4ZTBhZi4uYjI0YjNmY2U4IDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCi1AQCAtMTgsNiArMTgsNyBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAibGluay1jb25maWcuaCIKLSAjaW5jbHVkZSAibG9nLmgiCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNDdjNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApAQCAtMCwwICsxLDk5IEBACitGcm9tIDkxYmI0ZjVjOWMxMTQ2NDQ2OGU4ZDNmYTQ3NDZkOThkNTk5OTcyNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDE3LzE5XSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQorCitBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAordGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisKKyAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKKyAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKworTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCitkaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAorKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCitvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgorVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQord2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgorZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKKyhmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorCitUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAorY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCitqdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9mcy11dGlsLmggICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCisgc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYyB8ICA2ICsrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mcy11dGlsLmggYi9zcmMvYmFzaWMvZnMtdXRpbC5oCitpbmRleCAyODU2Njc3M2MuLjE0Yjg2NGNjNSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9mcy11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9mcy11dGlsLmgKK0BAIC0zMiw3ICszMiwyNyBAQCBpbnQgZmNobW9kX29wYXRoKGludCBmZCwgbW9kZV90IG0pOworIAorIGludCBmZF93YXJuX3Blcm1pc3Npb25zKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCk7CisgCistI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIEFUX1NZTUxJTktfTk9GT0xMT1cpCisrLyoKKysgICBBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodCB0aGluZyB0bworKyAgIGRvIGFuZCBpdCdzIG5vdCBwb3J0YWJsZSAobm90IHN1cHBvcnRlZCBieSBtdXNsKS4gU2VlOgorKworKyAgICAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKKysgICAgIGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL211c2wvMjAxNS8wMi8wNS8yCisrCisrICAgTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlIGRpc2N1c3Npb24gaW4KKysgICB0aGUgbGlua3MgYWJvdmUgZG9lc24ndCBhcHBseS4gTm90ZSBhbHNvIHRoYXQgKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycworKyAgIG9mIGxhY2Nlc3MoKSBwYXNzIG1vZGUgYXMgRl9PSywgc28gb25seSBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIGEgZmlsZSwgbm90CisrICAgYWNjZXNzIHBlcm1pc3Npb25zLiBUaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgdGhlIG9ubHkgZGlzdGljdGlvbiBiZXR3ZWVuCisrICAgZmFjY2Vzc2F0KCkgd2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlCisrICAgYmVoYXZpb3VyIGZvciBicm9rZW4gc3ltbGlua3M7IGxhY2Nlc3MoKSBvbiBhIGJyb2tlbiBzeW1saW5rIHdpbGwgc3VjY2VlZAorKyAgIHdpdGggKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgYW5kIGZhaWwgKGZsYWcgPT0gMCkuCisrCisrICAgVGhlIGxhY2Nlc3MoKSBtYWNyb3Mgd2FzIGFkZGVkIHRvIHN5c3RlbWQgc29tZSB0aW1lIGFnbyBhbmQgaXQncyBub3QgY2xlYXIgaWYKKysgICBvciB3aHkgaXQgbmVlZHMgdG8gcmV0dXJuIHN1Y2Nlc3MgZm9yIGJyb2tlbiBzeW1saW5rcy4gTWF5YmUganVzdCBoaXN0b3JpY2FsCisrICAgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/CisrKi8KKysKKysjZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgMCkKKyAKKyBpbnQgdG91Y2hfZmlsZShjb25zdCBjaGFyICpwYXRoLCBib29sIHBhcmVudHMsIHVzZWNfdCBzdGFtcCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1vZGVfdCBtb2RlKTsKKyBpbnQgdG91Y2goY29uc3QgY2hhciAqcGF0aCk7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKK2luZGV4IDg5ZDdhN2Q1OS4uMzRiNGFkNTNhIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYworKysrIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYworQEAgLTUzLDcgKzUzLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhlcnJubywgIkZhaWxlZCB0byBvcGVuIHJvb3QgZmlsZSBzeXN0ZW06ICVtIik7CisgCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRih0YWJsZSk7IGkgKyspIHsKKy0gICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA+PSAwKQorKyAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIDApID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgCisgICAgICAgICAgICAgICAgIGlmICh0YWJsZVtpXS50YXJnZXQpIHsKK0BAIC02MSw3ICs2MSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgb25lIG9mIHRoZSB0YXJnZXRzIGV4aXN0cyAqLworICAgICAgICAgICAgICAgICAgICAgICAgIE5VTFNUUl9GT1JFQUNIKHMsIHRhYmxlW2ldLnRhcmdldCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcywgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcywgRl9PSywgMCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIGEgc3BlY2lmaWMgZmlsZSBleGlzdHMgYXQgdGhlIHRhcmdldCBwYXRoICovCitAQCAtNzIsNyArNzIsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKKyAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCAwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkMGQ2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDk3ZmVkMDcxMzI1MzNhMWIyYmNlOWM2MGUzMDVhNWQwOWFlZTJlOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyNyBNYXkgMjAxOCAwODozNjo0NCAtMDcwMAorU3ViamVjdDogW1BBVENIIDE4LzE5XSBEZWZpbmUgZ2xpYmMgY29tcGF0aWJsZSBiYXNlbmFtZSgpIGZvciBub24tZ2xpYmMKKyBzeXN0ZW1zCisKK0ZpeGVzIGJ1aWxkcyB3aXRoIG11c2wsIGV2ZW4gdGhvdWdoIHN5c3RlbWQgaXMgYWRhbWFudCBhYm91dAordXNpbmcgbm9uLXBvc2l4IGJhc2VuYW1lIGltcGxlbWVudGF0aW9uLCB3ZSBoYXZlIGEgd2F5IG91dAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKK2luZGV4IDdmNDE0NjVjYy4uY2VlOGE1ZDQzIDEwMDY0NAorLS0tIGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKKysrKyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCitAQCAtMTEsNiArMTEsMTAgQEAKKyAjaW5jbHVkZSA8bGliZ2VuLmg+CisgI3VuZGVmIGJhc2VuYW1lCisgCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVmaW5lIGJhc2VuYW1lKHNyYykgKHN0cnJjaHIoc3JjLCcvJykgPyBzdHJyY2hyKHNyYywnLycpKzEgOiBzcmMpCisrI2VuZGlmCisrCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiYnVzLWNvbW1vbi1lcnJvcnMuaCIKKyAjaW5jbHVkZSAiYnVzLWludGVybmFsLmgiCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiN2VkZjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA2OTBlZWVmOTU5MGM3ZWYxZDlkMmMzMWQ4YzFkNWQ4MDcxZGE4YzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNzoyMToxMSArMDgwMAotU3ViamVjdDogW1BBVENIIDE4LzMxXSBjaGVjayBmb3IgbWlzc2luZyBjYW5vbmljYWxpemVfZmlsZV9uYW1lCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgMiArKwotIHNyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCB8IDYgKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDEyODExYjNmMy4uZjY1MTVlOTdjIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNTIwLDYgKzUyMCw4IEBAIGZvcmVhY2ggaWRlbnQgOiBbCi0gICAgICAgICBbJ2tjbXAnLCAgICAgICAgICAgICAgJycnI2luY2x1ZGUgPGxpbnV4L2tjbXAuaD4nJyddLAotICAgICAgICAgWydrZXljdGwnLCAgICAgICAgICAgICcnJyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8a2V5dXRpbHMuaD4nJyddLAotKyAgICAgICAgWydjYW5vbmljYWxpemVfZmlsZV9uYW1lJywgJycnI2RlZmluZSBfR05VX1NPVVJDRQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPicnJ10sCi0gICAgICAgICBbJ2NvcHlfZmlsZV9yYW5nZScsICAgJycnI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPicnJ10sCi0gICAgICAgICBbJ2JwZicsICAgICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCi1pbmRleCBjOTM4ZDBkOTcuLjMwOGI5NDcyYiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotKysrIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCi1AQCAtMzEsNiArMzEsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgewotIH0KLSAjZW5kaWYKLSAKLSsjaWYgIUhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRQotK3N0YXRpYyBpbmxpbmUgY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZShjb25zdCBjaGFyICpwYXRoKSB7Ci0rICAgICAgICByZXR1cm4gcmVhbHBhdGgocGF0aCwgTlVMTCk7Ci0rfQotKyNlbmRpZgotKwotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0gCi0gI2lmICFIQVZFX01FTUZEX0NSRUFURQotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MmY0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA4NDQwMzQ4YmNhYzM0MjQ5Y2RmNmFjMmRjYWU5YWM2NmQzYzcyN2RiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCA0IEp1bCAyMDE4IDE1OjAwOjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTkvMTldIERvIG5vdCBkaXNhYmxlIGJ1ZmZlcmluZyB3aGVuIHdyaXRpbmcgdG8gb29tX3Njb3JlX2FkagorCitPbiBtdXNsLCBkaXNhYmxpbmcgYnVmZmVyaW5nIHdoZW4gd3JpdGluZyB0byBvb21fc2NvcmVfYWRqIHdpbGwKK2NhdXNlIHRoZSBmb2xsb3dpbmcgZXJyb3IuCisKKyAgRmFpbGVkIHRvIGFkanVzdCBPT00gc2V0dGluZzogSW52YWxpZCBhcmd1bWVudAorCitUaGlzIGVycm9yIGFwcGVhcnMgZm9yIHN5c3RlbWQtdWRldmQuc2VydmljZSBhbmQgZGJ1cy5zZXJ2aWNlLgorVGhpcyBpcyBiZWNhdXNlIGtlcm5lbCByZWNlaXZlcyAnLScgaW5zdGVhZCBvZiB0aGUgd2hvbGUgJy05MDAnCitpZiBidWZmZXJpbmcgaXMgZGlzYWJsZWQuCisKK1RoaXMgaXMgbGliYyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYywgYXMgZ2xpYmMgZG9lcyBub3QgaGF2ZSB0aGlzIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworaW5kZXggMzU0M2JjMDQ1Li5kMDU3MmUwMzQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworQEAgLTE0NzMsNyArMTQ3Myw3IEBAIGludCBzZXRfb29tX3Njb3JlX2FkanVzdChpbnQgdmFsdWUpIHsKKyAgICAgICAgIHNwcmludGYodCwgIiVpIiwgdmFsdWUpOworIAorICAgICAgICAgcmV0dXJuIHdyaXRlX3N0cmluZ19maWxlKCIvcHJvYy9zZWxmL29vbV9zY29yZV9hZGoiLCB0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX1NUUklOR19GSUxFX1ZFUklGWV9PTl9GQUlMVVJFfFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9TVFJJTkdfRklMRV9WRVJJRllfT05fRkFJTFVSRSk7CisgfQorIAorIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBpb3ByaW9fY2xhc3NfdGFibGVbXSA9IHsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZiMjFhMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGY1ZjMxMzkxNWQ3OGJjNDNlYjk2ZTJhYWZiOGNlM2NkYTMwNGMyNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE3OjI3OjU2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMzFdIERvIG5vdCBlbmFibGUgbnNzIHRlc3RzIGlmIG5zcy1zeXN0ZW1kIGlzIG5vdCBlbmFibGVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3Rlc3QvbWVzb24uYnVpbGQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdGVzdC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21lc29uLmJ1aWxkCi1pbmRleCAxZGI4YWExMDcuLmRmM2ExZjVjNSAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L21lc29uLmJ1aWxkCi0rKysgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAotQEAgLTY0Niw3ICs2NDYsNyBAQCB0ZXN0cyArPSBbCi0gICAgICAgICBbWydzcmMvdGVzdC90ZXN0LW5zcy5jJ10sCi0gICAgICAgICAgW10sCi0gICAgICAgICAgW2xpYmRsXSwKLS0gICAgICAgICAnJywgJ21hbnVhbCddLAotKyAgICAgICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnLCAnbWFudWFsJ10sCi0gXQotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNzhjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSBkZDUzZGM5Yjk1NDJjYmQyYzM5YTM5MDk2OTQxZGZlZDcwZDA2NTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxMCBKdWwgMjAxOCAxNTo0MDoxNyArMDgwMAorU3ViamVjdDogW1BBVENIIDIwLzIwXSBkaXN0aW5ndWlzaCBYU0ktY29tcGxpYW50IHN0cmVycm9yX3IgZnJvbSBHTlUtc3BlY2lmaQorIHN0cmVycm9yX3IKKworWFNJLWNvbXBsaWFudCBzdHJlcnJvcl9yIGFuZCBHTlUtc3BlY2lmaSBzdHJlcnJvcl9yIGFyZSBkaWZmZXJlbnQuCisKKyAgICAgICBpbnQgc3RyZXJyb3JfcihpbnQgZXJybnVtLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOworICAgICAgICAgICAgICAgICAgIC8qIFhTSS1jb21wbGlhbnQgKi8KKworICAgICAgIGNoYXIgKnN0cmVycm9yX3IoaW50IGVycm51bSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAvKiBHTlUtc3BlY2lmaWMgKi8KKworV2UgbmVlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0uIE90aGVyd2lzZSwgd2UnbGwgZ2V0IGFuIGludCB2YWx1ZQorYXNzaWduZWQgdG8gKGNoYXIgKikgdmFyaWFibGUsIHJlc3VsdGluZyBpbiBzZWdtZW50IGZhdWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgICB8IDUgKysrKysKKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgfCA1ICsrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCitpbmRleCA2NWJjYmNkMmUuLmFlZjgwZGQ4ZiAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCisrKysgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworQEAgLTMzNyw3ICszMzcsMTIgQEAgc3RhdGljIGludCBmaWxsX2lvdmVjX3BlcnJvcl9hbmRfc2VuZChjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgc2tpcCwgc3RydWN0IGlvdmUKKyAgICAgICAgICAgICAgICAgY2hhciogajsKKyAKKyAgICAgICAgICAgICAgICAgZXJybm8gPSAwOworKyNpZm5kZWYgX19HTElCQ19fCisrICAgICAgICAgICAgICAgIHN0cmVycm9yX3IoX3NhdmVkX2Vycm5vXywgYnVmZmVyICsgOCArIGssIG4gLSA4IC0gayk7CisrICAgICAgICAgICAgICAgIGogPSBidWZmZXIgKyA4ICsgazsKKysjZWxzZQorICAgICAgICAgICAgICAgICBqID0gc3RyZXJyb3Jfcihfc2F2ZWRfZXJybm9fLCBidWZmZXIgKyA4ICsgaywgbiAtIDggLSBrKTsKKysjZW5kaWYKKyAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGVycm9yW1NUUkxFTigiRVJSTk89IikgKyBERUNJTUFMX1NUUl9NQVgoaW50KSArIDFdOworIAorZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworaW5kZXggZWMzNTlhYzEzLi5kMmFhODZjZWEgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworQEAgLTM2Miw3ICszNjIsMTIgQEAgc3RhdGljIHZvaWQgYnVzX2Vycm9yX3N0cmVycm9yKHNkX2J1c19lcnJvciAqZSwgaW50IGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorICAgICAgICAgICAgICAgICBlcnJubyA9IDA7CisrI2lmbmRlZiBfX0dMSUJDX18KKysgICAgICAgICAgICAgICAgc3RyZXJyb3JfcihlcnJvciwgbSwgayk7CisrICAgICAgICAgICAgICAgIHggPSBtOworKyNlbHNlCisgICAgICAgICAgICAgICAgIHggPSBzdHJlcnJvcl9yKGVycm9yLCBtLCBrKTsKKysjZW5kaWYKKyAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBzdHJsZW4oeCkgPj0gayAtIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKG0pOworICAgICAgICAgICAgICAgICAgICAgICAgIGsgKj0gMjsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDQ5Y2ZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGQ2M2QyZmVkY2Q4MGU1OGVlNTM2NTVhZWFmMjgzNmQ0YjBhMTQ2NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjozMzoyMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDIwLzMxXSB0ZXN0LWhleGRlY29jdC5jOiBJbmNsdWRlIG1pc3NpbmcuaCBmb3Igc3RybmR1cGEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotaW5kZXggM2UyNWEwYmFjLi5hYjNlNTA4ZjEgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi1AQCAtMjQsNiArMjQsNyBAQAotICNpbmNsdWRlICJoZXhkZWNvY3QuaCIKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyB2b2lkIHRlc3RfaGV4Y2hhcih2b2lkKSB7Ci0gICAgICAgICBhc3NlcnRfc2UoaGV4Y2hhcigweGEpID09ICdhJyk7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OGYyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDY4N2E1YWY4ZGM1ZDM4ZjkxOGE2Y2UwOGZlZDUyOTcyMzRiZjgzNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDE4OjAwOjE3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEhpZGUgX19zdGFydF9CVVNfRVJST1JfTUFQIGFuZCBfX3N0b3BfQlVTX0VSUk9SX01BUAorCitmb3IgY3VycmVudGx5IHVua25vd24gcmVhc29ucyB0aGV5IGdldCBleHBvcnRlZCB0byB0aGUgc2hhcmVkIGxpYnJpZXMKK2V2ZW4gd2l0aG91dCBiZWluZyBsaXN0ZWQgaW4gdGhlIHN5bSBmaWxlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgQ29uZGl0aW9uYWwgb24gbWFzdGVyIG5lZWRpbmcgdGhpcywgMjM5IGRvZXMgbmVlZCBpdCBdCisKKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCitpbmRleCAzNzhmN2EzNzcuLjQ5ZDc5N2FiZCAxMDA2NDQKKy0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCitAQCAtNzEsOCArNzEsOCBAQCBCVVNfRVJST1JfTUFQX0VMRl9SRUdJU1RFUiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIGJ1c19zdGFuZGFyZF9lcnJvcnNbXSA9IHsKKyB9OworIAorIC8qIEdDQyBtYXBzIHRoaXMgbWFnaWNhbGx5IHRvIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgQlVTX0VSUk9SX01BUCBzZWN0aW9uICovCistZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdGFydF9CVVNfRVJST1JfTUFQW107CistZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdG9wX0JVU19FUlJPUl9NQVBbXTsKKytleHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0YXJ0X0JVU19FUlJPUl9NQVBbXSBfaGlkZGVuXzsKKytleHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0b3BfQlVTX0VSUk9SX01BUFtdIF9oaWRkZW5fOworIAorIC8qIEFkZGl0aW9uYWwgbWFwcyByZWdpc3RlcmVkIHdpdGggc2RfYnVzX2Vycm9yX2FkZF9tYXAoKSBhcmUgaW4gdGhpcworICAqIE5VTEwgdGVybWluYXRlZCBhcnJheSAqLworLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzhhZWNhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZGZlYTRiOTg4NDQ3OTVhMGNkMTRmZGFmNDBjNjdkZjM4OWRiZDI3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MjU6MjIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8zMV0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgotIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvdGVzdC90ZXN0LXNpemVvZi5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLWluZGV4IGFlZDZkYjg0Mi4uMGRlNmZhNjNjIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotQEAgLTUwLDggKzUwLDEwIEBAIGludCBtYWluKHZvaWQpIHsKLSAgICAgICAgIGluZm8odW5zaWduZWQpOwotICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKLSAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICAgICAgICBpbmZvKF9fc3lzY2FsbF91bG9uZ190KTsKLSAgICAgICAgIGluZm8oX19zeXNjYWxsX3Nsb25nX3QpOwotKyNlbmRpZgotIAotICAgICAgICAgaW5mbyhmbG9hdCk7Ci0gICAgICAgICBpbmZvKGRvdWJsZSk7Ci1AQCAtNjEsNyArNjMsOSBAQCBpbnQgbWFpbih2b2lkKSB7Ci0gICAgICAgICBpbmZvKHNzaXplX3QpOwotICAgICAgICAgaW5mbyh0aW1lX3QpOwotICAgICAgICAgaW5mbyh1c2VjX3QpOwotKyNpZmRlZiBfX0dMSUJDX18KLSAgICAgICAgIGluZm8oX190aW1lX3QpOwotKyNlbmRpZgotICAgICAgICAgaW5mbyhwaWRfdCk7Ci0gICAgICAgICBpbmZvKHVpZF90KTsKLSAgICAgICAgIGluZm8oZ2lkX3QpOwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1idWlsZC1zeXMtRGV0ZWN0LXdoZXRoZXItc3RydWN0LXN0YXR4LWlzLWRlZmluZWQtaW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1idWlsZC1zeXMtRGV0ZWN0LXdoZXRoZXItc3RydWN0LXN0YXR4LWlzLWRlZmluZWQtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MjQ2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWJ1aWxkLXN5cy1EZXRlY3Qtd2hldGhlci1zdHJ1Y3Qtc3RhdHgtaXMtZGVmaW5lZC1pbi0ucGF0Y2gKQEAgLTAsMCArMSwxMDkgQEAKK0Zyb20gNzU3MjBiZmY2MmE4NDg5NmU5YTA2NTRhZmM3Y2Y5NDA4Y2Y4OWEzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZpbGlwZSBCcmFuZGVuYnVyZ2VyIDxmaWxicmFuZGVuQGdvb2dsZS5jb20+CitEYXRlOiBTdW4sIDE1IEp1bCAyMDE4IDIyOjQzOjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkLXN5czogRGV0ZWN0IHdoZXRoZXIgc3RydWN0IHN0YXR4IGlzIGRlZmluZWQgaW4KKyBzeXMvc3RhdC5oCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1N0YXJ0aW5nIHdpdGggZ2xpYmMgMi4yNy45MDAwLTM2LmZjMjksIGluY2x1ZGUgZmlsZSBzeXMvc3RhdC5oIHdpbGwgaGF2ZSBhCitkZWZpbml0aW9uIGZvciBzdHJ1Y3Qgc3RhdHgsIGluIHdoaWNoIGNhc2UgaW5jbHVkZSBmaWxlIGxpbnV4L3N0YXQuaCBzaG91bGQgYmUKK2F2b2lkZWQsIGluIG9yZGVyIHRvIHByZXZlbnQgYSBkdXBsaWNhdGUgZGVmaW5pdGlvbi4KKworICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvYmFzaWMvbWlzc2luZy5oOjE4LAorCQkgICAgIGZyb20gLi4vc3JjL2Jhc2ljL3V0aWwuaDoyOCwKKwkJICAgICBmcm9tIC4uL3NyYy9iYXNpYy9oYXNobWFwLmg6MTAsCisJCSAgICAgZnJvbSAuLi9zcmMvc2hhcmVkL2J1cy11dGlsLmg6MTIsCisJCSAgICAgZnJvbSAuLi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWNyZWRzLmM6MTE6CisgICAgL3Vzci9pbmNsdWRlL2xpbnV4L3N0YXQuaDo5OTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mIOKAmHN0cnVjdCBzdGF0eOKAmQorICAgICBzdHJ1Y3Qgc3RhdHggeworCSAgICBefn5+fgorICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaDo0NDYsCisJCSAgICAgZnJvbSAuLi9zcmMvYmFzaWMvdXRpbC5oOjE5LAorCQkgICAgIGZyb20gLi4vc3JjL2Jhc2ljL2hhc2htYXAuaDoxMCwKKwkJICAgICBmcm9tIC4uL3NyYy9zaGFyZWQvYnVzLXV0aWwuaDoxMiwKKwkJICAgICBmcm9tIC4uL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtY3JlZHMuYzoxMToKKyAgICAvdXNyL2luY2x1ZGUvYml0cy9zdGF0eC5oOjM2Ojg6IG5vdGU6IG9yaWdpbmFsbHkgZGVmaW5lZCBoZXJlCisgICAgIHN0cnVjdCBzdGF0eAorCSAgICBefn5+fgorCitFeHRlbmQgb3VyIG1lc29uLmJ1aWxkIHRvIGxvb2sgZm9yIHN0cnVjdCBzdGF0eCB3aGVuIG9ubHkgc3lzL3N0YXQuaCBpcworaW5jbHVkZWQgYW5kLCBpbiB0aGF0IGNhc2UsIGRvIG5vdCBpbmNsdWRlIGxpbnV4L3N0YXQuaCBhbnltb3JlLgorCitUZXN0ZWQgdGhhdCBzeXN0ZW1kIGJ1aWxkcyBjb3JyZWN0bHkgd2hlbiB1c2luZyBhIGdsaWJjIHZlcnNpb24gdGhhdCBpbmNsdWRlcyBhCitkZWZpbml0aW9uIGZvciBzdHJ1Y3Qgc3RhdHguCisKK2dsaWJjIEZlZG9yYSBSUE0gdXBkYXRlOgoraHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nbGliYy9jLzI4Y2I1ZDMxZmMxZTU4ODc5MTIyODNjODg5Njg5YzQ3MDc2Mjc4YWUKKworZ2xpYmMgdXBzdHJlYW0gY29tbWl0OgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0ZGlmZjtoPWZkNzBhZjQ1NTI4ZDU5YTAwZWIzMTkwZWY2NzA2Y2IyOTk0ODhmY2QKKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBtZXNvbi5idWlsZCAgICAgICAgICAgIHwgNSArKysrKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgfCA1ICsrKystCisgc3JjL2Jhc2ljL3hhdHRyLXV0aWwuYyB8IDEgLQorIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L21lc29uLmJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbWVzb24uYnVpbGQKKysrKyBnaXQvbWVzb24uYnVpbGQKK0BAIC00MzIsNiArNDMyLDcgQEAgZGVjbF9oZWFkZXJzID0gJycnCisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgJycnCisgIyBGSVhNRToga2V5X3NlcmlhbF90IGlzIG9ubHkgZGVmaW5lZCBpbiBrZXl1dGlscy5oLCB0aGlzIGlzIGJvdW5kIHRvIGZhaWwKKysjIEZJWE1FOiB0aGVzZSBzaG91bGQgdXNlIC1EX0dOVV9TT1VSQ0UsIHNpbmNlIHRoYXQgaXMgZGVmaW5lZCBhdCBidWlsZCB0aW1lCisgCisgZm9yZWFjaCBkZWNsIDogWydjaGFyMTZfdCcsCisgICAgICAgICAgICAgICAgICdjaGFyMzJfdCcsCitAQCAtNDQ2LDYgKzQ0NywxMCBAQCBmb3JlYWNoIGRlY2wgOiBbJ2NoYXIxNl90JywKKyAgICAgICAgIGNvbmYuc2V0MTAoJ0hBVkVfJyArIGRlY2wudW5kZXJzY29yaWZ5KCkudG9fdXBwZXIoKSwgaGF2ZSkKKyBlbmRmb3JlYWNoCisgCisrY29uZi5zZXQxMCgnSEFWRV9TVFJVQ1RfU1RBVFhfSU5fU1lTX1NUQVRfSCcsIGNjLnNpemVvZignc3RydWN0IHN0YXR4JywgcHJlZml4IDogJycnCisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrJycnLCBhcmdzIDogJy1EX0dOVV9TT1VSQ0UnKSA+IDApCisrCisgZm9yZWFjaCBkZWNsIDogW1snSUZMQV9JTkVUNl9BRERSX0dFTl9NT0RFJywgICAgICAgICAnbGludXgvaWZfbGluay5oJ10sCisgICAgICAgICAgICAgICAgIFsnSU42X0FERFJfR0VOX01PREVfU1RBQkxFX1BSSVZBQ1knLCAnbGludXgvaWZfbGluay5oJ10sCisgICAgICAgICAgICAgICAgIFsnSUZMQV9WUkZfVEFCTEUnLCAgICAgICAgICAgICAgICAgICAnbGludXgvaWZfbGluay5oJ10sCitJbmRleDogZ2l0L3NyYy9iYXNpYy9taXNzaW5nLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgZ2l0L3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xNSw3ICsxNSw2IEBACisgI2luY2x1ZGUgPGxpbnV4L25laWdoYm91ci5oPgorICNpbmNsdWRlIDxsaW51eC9vb20uaD4KKyAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CistI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KK0BAIC0yNSw2ICsyNCwxMCBAQAorICNpbmNsdWRlIDx1Y2hhci5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaWYgIUhBVkVfU1RSVUNUX1NUQVRYX0lOX1NZU19TVEFUX0gKKysjaW5jbHVkZSA8bGludXgvc3RhdC5oPgorKyNlbmRpZgorKworICNpZiBIQVZFX0FVRElUCisgI2luY2x1ZGUgPGxpYmF1ZGl0Lmg+CisgI2VuZGlmCitJbmRleDogZ2l0L3NyYy9iYXNpYy94YXR0ci11dGlsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvYmFzaWMveGF0dHItdXRpbC5jCisrKysgZ2l0L3NyYy9iYXNpYy94YXR0ci11dGlsLmMKK0BAIC0yLDcgKzIsNiBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVmNzQ0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLUZyb20gZDM0Mzc1N2Q2Mjk0MDJjNzBjYThlNWVhYTU1MWRlYWYxNzVjOTZmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAotU3ViamVjdDogW1BBVENIIDIyLzMxXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCi0gc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgfCAxNiArKysrKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYwotaW5kZXggNDU0MDI2MGY5Li44MWFjYTdhOWIgMTAwNjQ0Ci0tLS0gYS9zcmMvaHdkYi9od2RiLmMKLSsrKyBiL3NyYy9od2RiL2h3ZGIuYwotQEAgLTE1MiwxMyArMTUyLDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgewotIAotIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7Ci0gCi0tc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKLStzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKLStzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOwotLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7Ci0tCi0tICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0tICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0rICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0gfQotIAotIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLUBAIC0xODMsNyArMTgyLDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKLSAgICAgICAgICAgICAgICAgfTsKLSAKLS0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSsKLSAgICAgICAgICAgICAgICAgaWYgKHZhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgotQEAgLTIwOCw3ICsyMTAsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKLSAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7Ci0gICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKLS0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLWluZGV4IGFiNWRjN2FiNi4uYzc3N2UzMGFiIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCi1AQCAtMTMwLDEzICsxMzAsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9ub2RlX2NsZWFudXAoc3RydWN0IHRyaWVfbm9kZSAqbm9kZSkgewotICAgICAgICAgZnJlZShub2RlKTsKLSB9Ci0gCi0tc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKLStzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKLStzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOwotLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7Ci0gCi0tICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0tICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0rICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0gfQotIAotIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLUBAIC0xNTcsNyArMTU3LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAotICAgICAgICAgICAgICAgICB9OwotIAotLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgICAgICAgICBpZiAodmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSBleGlzdGluZyBlYXJsaWVyIGtleSB3aXRoIG5ldyB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC0+dmFsdWVfb2ZmID0gdjsKLUBAIC0xNzQsNyArMTc2LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ua2V5X29mZiA9IGs7Ci0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS52YWx1ZV9vZmYgPSB2OwotICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7Ci0tICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMy1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzJiNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMy1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1Gcm9tIDdiODAyYWRhMTIwN2VkMDBlZDM4NjdiOTgwNGRkMGYzMTY2NDFiOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIzLzMxXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQotCi1Bdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAotdGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6Ci0KLSAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKLSAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKLQotTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCi1kaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAotKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCi1vbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgotVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQotd2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgotZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKLShmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgotCi1UaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAotY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCi1qdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KLSBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKLWluZGV4IDRkYmExZWE1Ni4uOWM0YjAyZWNjIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotQEAgLTUwLDcgKzUwLDI3IEBAIGludCBmY2htb2RfdW1hc2soaW50IGZkLCBtb2RlX3QgbW9kZSk7Ci0gCi0gaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKLSAKLS0jZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgQVRfU1lNTElOS19OT0ZPTExPVykKLSsvKgotKyAgIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvCi0rICAgZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6Ci0rCi0rICAgICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAotKyAgICAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKLSsKLSsgICBOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbgotKyAgIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdCAoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzCi0rICAgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbyBvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QKLSsgICBhY2Nlc3MgcGVybWlzc2lvbnMuIFRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4KLSsgICBmYWNjZXNzYXQoKSB3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUKLSsgICBiZWhhdmlvdXIgZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkCi0rICAgd2l0aCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KLSsKLSsgICBUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdCBjbGVhciBpZgotKyAgIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZSBqdXN0IGhpc3RvcmljYWwKLSsgICBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KLSsqLwotKwotKyNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCAwKQotIAotIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOwotIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotaW5kZXggM2MyNWFhNTM0Li41NzRjYTcxYzcgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi0rKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1AQCAtNzEsNyArNzEsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewotICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKLSAKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgewotLSAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpID49IDApCi0rICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgMCkgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgewotQEAgLTc5LDcgKzc5LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCAwKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KLUBAIC05MCw3ICs5MCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOwotIAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIDApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtcmVzb2x2Y29uZi1maXhlcy1mb3ItdGhlLWNvbXBhdGliaWxpdHktaW50ZXJmYWNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMy1yZXNvbHZjb25mLWZpeGVzLWZvci10aGUtY29tcGF0aWJpbGl0eS1pbnRlcmZhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYzZTc3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtcmVzb2x2Y29uZi1maXhlcy1mb3ItdGhlLWNvbXBhdGliaWxpdHktaW50ZXJmYWNlLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK3N5c3RlbWQtMjM5OiBmaXhlcyBmb3IgdGhlIGNvbXBhdGliaWxpdHkgaW50ZXJmYWNlCisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvOTQyMworCityZXNvbHZjb25mLWNvbXBhdDogdXNlIGNvbXBhdF9tYWluKCkgd2hlbiBjYWxsZWQgYXMgYHJlc29sdmNvbmZgLAorc2luY2UgdGhlIGludGVyZmFjZSBpcyBjbG9zZXIgdG8gdGhhdCBvZiBgc3lzdGVtZC1yZXNvbHZlYC4KKworVXNlIGEgaGVhcCBhbGxvY2F0ZWQgc3RyaW5nIHRvIHNldCBhcmdfaWZuYW1lLCBzaW5jZSBhIHN0YWNrIGFsbG9jYXRlZAorb25lIHdvdWxkIGJlIGxvc3QgYWZ0ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMuIChUaGlzIGxhc3Qgb25lIGJyb2tlIHRoZQorY2FzZSB3aGVyZSBhbiBpbnRlcmZhY2UgbmFtZSB3YXMgc3VmZml4ZWQgd2l0aCBhIGRvdCwgc3VjaCBhcyBpbgorYHJlc29sdmNvbmYgLWEgdGFwMC5kaGNwYC4pCisKK1Rlc3RlZDoKKyAgJCBidWlsZC9yZXNvbHZjb25mIC1hIG5vbmV4aXN0ZW50LmFiYyA8L2V0Yy9yZXNvbHYuY29uZgorICBVbmtub3duIGludGVyZmFjZSAnbm9uZXhpc3RlbnQnOiBObyBzdWNoIGRldmljZQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2NvbW1pdC81YTAxYjNmMzVkN2I2MTgyYzc4YjY5NzNkYjhkOTliZGFiZDRmOWMzXQorYnVnOiA5NDIzCitTaWduZWQtb2ZmLWJ5OiBTaW1vbiBBdXNzZXJsZWNobmVyIDxzaW1vbi5hdXNzZXJsZWNobmVyQHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEvc3JjL3Jlc29sdmUvcmVzb2x2Y29uZi1jb21wYXQuYyBiL3NyYy9yZXNvbHZlL3Jlc29sdmNvbmYtY29tcGF0LmMKK2luZGV4IGQ3ZTY4MDAzZS4uMDcyMzQ1ODk0IDEwMDY0NAorLS0tIGEvc3JjL3Jlc29sdmUvcmVzb2x2Y29uZi1jb21wYXQuYworKysrIGIvc3JjL3Jlc29sdmUvcmVzb2x2Y29uZi1jb21wYXQuYworQEAgLTUzLDYgKzUzLDggQEAgc3RhdGljIGludCBwYXJzZV9uYW1lc2VydmVyKGNvbnN0IGNoYXIgKnN0cmluZykgeworIAorICAgICAgICAgICAgICAgICBpZiAoc3Rydl9wdXNoKCZhcmdfc2V0X2Rucywgd29yZCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CisrCisrICAgICAgICAgICAgICAgIHdvcmQgPSBOVUxMOworICAgICAgICAgfQorIAorICAgICAgICAgcmV0dXJuIDA7CitAQCAtMjAyLDcgKzIwNCw3IEBAIGludCByZXNvbHZjb25mX3BhcnNlX2FyZ3YoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworIAorICAgICAgICAgZG90ID0gc3RyY2hyKGFyZ3Zbb3B0aW5kXSwgJy4nKTsKKyAgICAgICAgIGlmIChkb3QpIHsKKy0gICAgICAgICAgICAgICAgaWZhY2UgPSBzdHJuZHVwYShhcmd2W29wdGluZF0sIGRvdCAtIGFyZ3Zbb3B0aW5kXSk7CisrICAgICAgICAgICAgICAgIGlmYWNlID0gc3RybmR1cChhcmd2W29wdGluZF0sIGRvdCAtIGFyZ3Zbb3B0aW5kXSk7CisgICAgICAgICAgICAgICAgIGxvZ19kZWJ1ZygiSWdub3JpbmcgcHJvdG9jb2wgc3BlY2lmaWVyICclcycuIiwgZG90ICsgMSk7CisgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgaWZhY2UgPSBhcmd2W29wdGluZF07CitkaWZmIC0tZ2l0IGEvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCitpbmRleCBlOTZjMTNmZWEuLmU5ZTM5NWUzZSAxMDA2NDQKKy0tLSBhL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworKysrIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCitAQCAtMzA5Miw3ICszMDkyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgfQorIAorLSAgICAgICAgaWYgKHN0cmVxKHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lLCAic3lzdGVtZC1yZXNvbHZlIikpCisrICAgICAgICBpZiAoU1RSX0lOX1NFVChwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSwgInN5c3RlbWQtcmVzb2x2ZSIsICJyZXNvbHZjb25mIikpCisgICAgICAgICAgICAgICAgIHIgPSBjb21wYXRfbWFpbihhcmdjLCBhcmd2LCBidXMpOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICByID0gbmF0aXZlX21haW4oYXJnYywgYXJndiwgYnVzKTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3ZTYyMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDc2YzcxYWE4ODkxNTVmMjliZTFkNWQyYjc0YTJjNGZhYTU5MDljOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMiBTZXAgMjAxNSAxODo1MzozMSArMDAwMAotU3ViamVjdDogW1BBVENIIDI0LzMxXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCi0gZnVuY3Rpb24gcG9pbnRlcgotCi1tYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvdXRpbC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9iYXNpYy91dGlsLmgKLWluZGV4IDlkMWIxMDc1Ni4uMTJkYjUzYTkzIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3V0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3V0aWwuaAotQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCAqeGJzZWFyY2hfcihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCi0gICogTm9ybWFsIHFzb3J0IHJlcXVpcmVzIGJhc2UgdG8gYmUgbm9ubnVsbC4gSGVyZSB3ZXJlIHJlcXVpcmUKLSAgKiB0aGF0IG9ubHkgaWYgbm1lbWIgPiAwLgotICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fZm5fdCBjb21wYXIpIHsKLStzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgewotICAgICAgICAgaWYgKG5tZW1iIDw9IDEpCi0gICAgICAgICAgICAgICAgIHJldHVybjsKLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM3NmE4Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIGEwYjE0OTYzMjJmNGQ3Y2U4M2Y0ZmJmZDJhOTBiOTFkMDcyMWY2NDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBPY3QgMjAxNyAyMzowODoyNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI1LzMxXSBEZWZpbmUgX1BBVEhfV1RNUFggYW5kIF9QQVRIX1VUTVBYIGlmIG5vdCBkZWZpbmVkCi0KLU11c2wgbmVlZHMgdGhlc2UgZGVmaW5lcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9zaGFyZWQvdXRtcC13dG1wLmMgfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKLWluZGV4IGNhYjFjZDZhMi4uZjVlZWRhYzE4IDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotKysrIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHV0bXAuaD4KLSAjaW5jbHVkZSA8dXRtcHguaD4KLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotQEAgLTQyLDYgKzQzLDEzIEBACi0gI2luY2x1ZGUgInV0aWwuaCIKLSAjaW5jbHVkZSAidXRtcC13dG1wLmgiCi0gCi0rI2lmIGRlZmluZWQgX1BBVEhfVVRNUCAmJiAhZGVmaW5lZCBfUEFUSF9VVE1QWAotKyMgZGVmaW5lIF9QQVRIX1VUTVBYIF9QQVRIX1VUTVAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBfUEFUSF9XVE1QICYmICFkZWZpbmVkIF9QQVRIX1dUTVBYCi0rIyBkZWZpbmUgX1BBVEhfV1RNUFggX1BBVEhfV1RNUAotKyNlbmRpZgotKwotIGludCB1dG1wX2dldF9ydW5sZXZlbChpbnQgKnJ1bmxldmVsLCBpbnQgKnByZXZpb3VzKSB7Ci0gICAgICAgICBzdHJ1Y3QgdXRtcHggKmZvdW5kLCBsb29rdXAgPSB7IC51dF90eXBlID0gUlVOX0xWTCB9OwotICAgICAgICAgaW50IHI7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjYtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmQ3NWFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjYtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotRnJvbSA4OGM0OGVhODRkYjZmZGExOWRmYWViNjQ1NDVmY2NmOGZhMDUyNWVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMTM6MDA6NDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNi8zMV0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90Ci0KLVBSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCi10aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KLXVpbnRtYXhfdC4KLQotRml4ZXMgcG9ydGFibGlsaXR5IGVycm9ycyBsaWtlCi0KLWV4ZWN1dGUuYzozNDQ2OjM2OiBlcnJvcjogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAncmxpbV90IHtha2EgbG9uZyBsb25nIHVuc2lnbmVkIGludH0nIFstV2Vycm9yPWZvcm1hdD1dCi18ICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCi18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzcxOTldCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCB8IDggLS0tLS0tLS0KLSBzcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyB8IDggKysrKy0tLS0KLSBzcmMvY29yZS9leGVjdXRlLmMgICAgICB8IDggKysrKy0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi1pbmRleCBkOWE3OGY3ODEuLjlhMWJjMjFkNyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotQEAgLTYxLDE0ICs2MSw2IEBACi0gIyAgZGVmaW5lIFBSSV9USU1FWCAibGkiCi0gI2VuZGlmCi0gCi0tI2lmIFNJWkVPRl9STElNX1QgPT0gOAotLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTY0Ci0tI2VsaWYgU0laRU9GX1JMSU1fVCA9PSA0Ci0tIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1MzIKLS0jZWxzZQotLSMgIGVycm9yIFVua25vd24gcmxpbV90IHNpemUKLS0jZW5kaWYKLS0KLSAjaWYgU0laRU9GX0RFVl9UID09IDgKLSAjICBkZWZpbmUgREVWX0ZNVCAiJSIgUFJJdTY0Ci0gI2VsaWYgU0laRU9GX0RFVl9UID09IDQKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi1pbmRleCAwMDY0ODIxMWQuLmRmM2Q5ZWNjMSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotQEAgLTI4NiwxMyArMjg2LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7Ci0gICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCi0gICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7Ci0gICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKLS0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6IiBSTElNX0ZNVCwgcmwtPnJsaW1fbWF4KTsKLSsgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOwotICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCi0tICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjppbmZpbml0eSIsIHJsLT5ybGltX2N1cik7Ci0rICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTppbmZpbml0eSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKLSAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA9PSBybC0+cmxpbV9tYXgpCi0tICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQsIHJsLT5ybGltX2N1cik7Ci0rICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKLSAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOiIgUkxJTV9GTVQsIHJsLT5ybGltX2N1ciwgcmwtPnJsaW1fbWF4KTsKLSsgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyLCAodWludG1heF90KXJsLT5ybGltX21heCk7Ci0gCi0gICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYwotaW5kZXggMGRmMzk3MWRmLi5hYWJkZGRiNjggMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKLSsrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYwotQEAgLTM5OTEsMTAgKzM5OTEsMTAgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7Ci0gCi0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCi0gICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAiIFJMSU1fRk1UICJcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICVqdVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzU29mdDogJWp1XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAoYy0+aW9wcmlvX3NldCkgewotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJmNTliMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gNTM1NGViNzY3ZDFlYmEyZWM0MWViMjczZjZiNjU3ZjRhNjMwY2E4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgOSBKYW4gMjAxOCAxNDo0NTo0NiArMDgwMAotU3ViamVjdDogW1BBVENIIDI3LzMxXSByZW1vdmUgbm9ib2R5IHVzZXIvZ3JvdXAgY2hlY2tpbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCAzNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDM3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggZjY1MTVlOTdjLi4xYjk0N2FkYWMgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC03MDAsNDMgKzcwMCw2IEBAIHN1YnN0cy5zZXQoJ2NvbnRhaW5lcnVpZGJhc2VtYXgnLCBjb250YWluZXJfdWlkX2Jhc2VfbWF4KQotIG5vYm9keV91c2VyID0gZ2V0X29wdGlvbignbm9ib2R5LXVzZXInKQotIG5vYm9keV9ncm91cCA9IGdldF9vcHRpb24oJ25vYm9keS1ncm91cCcpCi0gCi0tZ2V0ZW50X3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdnZXRlbnQnLCAncGFzc3dkJywgJzY1NTM0JykKLS1pZiBnZXRlbnRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCi0tICAgICAgICBuYW1lID0gZ2V0ZW50X3Jlc3VsdC5zdGRvdXQoKS5zcGxpdCgnOicpWzBdCi0tICAgICAgICBpZiBuYW1lICE9IG5vYm9keV91c2VyCi0tICAgICAgICAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgbG9jYWwgdXNlciB3aXRoIHRoZSBVSUQgNjU1MzQgZG9lcyBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQgdXNlciBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgdXNlciAoaXRzIG5hbWUgaXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBuYW1lKSArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiB1c2VyIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQotLSAgICAgICAgZW5kaWYKLS1lbmRpZgotLWlkX3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdpZCcsICctdScsIG5vYm9keV91c2VyKQotLWlmIGlkX3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAotLSAgICAgICAgaWQgPSBpZF9yZXN1bHQuc3Rkb3V0KCkudG9faW50KCkKLS0gICAgICAgIGlmIGlkICE9IDY1NTM0Ci0tICAgICAgICAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgbG9jYWwgdXNlciB3aXRoIHRoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIgZG9lcyBub3QgaGF2ZSBVSUQgNjU1MzQgKGl0IGhhcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIGlkKSArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiB1c2VyIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQotLSAgICAgICAgZW5kaWYKLS1lbmRpZgotLQotLWdldGVudF9yZXN1bHQgPSBydW5fY29tbWFuZCgnZ2V0ZW50JywgJ2dyb3VwJywgJzY1NTM0JykKLS1pZiBnZXRlbnRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCi0tICAgICAgICBuYW1lID0gZ2V0ZW50X3Jlc3VsdC5zdGRvdXQoKS5zcGxpdCgnOicpWzBdCi0tICAgICAgICBpZiBuYW1lICE9IG5vYm9keV9ncm91cAotLSAgICAgICAgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGxvY2FsIGdyb3VwIHdpdGggdGhlIEdJRCA2NTUzNCBkb2VzIG5vdCBtYXRjaCB0aGUgY29uZmlndXJlZCBncm91cCBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgZ3JvdXAgKGl0cyBuYW1lIGlzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfZ3JvdXAsIG5hbWUpICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIGdyb3VwIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQotLSAgICAgICAgZW5kaWYKLS1lbmRpZgotLWlkX3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdpZCcsICctZycsIG5vYm9keV9ncm91cCkKLS1pZiBpZF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKLS0gICAgICAgIGlkID0gaWRfcmVzdWx0LnN0ZG91dCgpLnRvX2ludCgpCi0tICAgICAgICBpZiBpZCAhPSA2NTUzNAotLSAgICAgICAgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGxvY2FsIGdyb3VwIHdpdGggdGhlIGNvbmZpZ3VyZWQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IGdyb3VwIGRvZXMgbm90IGhhdmUgVUlEIDY1NTM0IChpdCBoYXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV9ncm91cCwgaWQpICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIGdyb3VwIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQotLSAgICAgICAgZW5kaWYKLS1lbmRpZgotIGlmIG5vYm9keV91c2VyICE9IG5vYm9keV9ncm91cCBhbmQgbm90IChub2JvZHlfdXNlciA9PSAnbm9ib2R5JyBhbmQgbm9ib2R5X2dyb3VwID09ICdub2dyb3VwJykKLSAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKLSAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGNvbmZpZ3VyZWQgdXNlciBuYW1lICJAMEAiIGFuZCBncm91cCBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgdXNlci9ncm91cCBhcmUgbm90IGVxdWl2YWxlbnQuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgbm9ib2R5X2dyb3VwKSArCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVjMzEzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSAwM2NkZDMzYmU2MmRiNGM3MmE3ZmNmMjFiNjFkMGQwNTZjMjNjNmE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMTozNjozMiAtMDgwMAotU3ViamVjdDogW1BBVENIIDI4LzMxXSBhZGQgbWlzc2luZyBGVFdfIG1hY3JvcyBmb3IgbXVzbAotCi1UaGlzIGlzIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGxpa2UgYmVsb3cgZm9yIG11c2wuCi0KLSAgbG9jYWxlLXV0aWwuYzoyOTY6MjQ6IGVycm9yOiAnRlRXX1NUT1AnIHVuZGVjbGFyZWQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyMCArKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggMWFlZTMzNDZhLi41YjlmZGU2OTIgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMjA3LDYgKzIwNywyNiBAQCBzdHJ1Y3Qgc29ja2FkZHJfdm0gewotICNkZWZpbmUgQlRSRlNfUUdST1VQX0xFVkVMX1NISUZUIDQ4Ci0gI2VuZGlmCi0gCi0rI2lmbmRlZiBGVFdfQUNUSU9OUkVUVkFMCi0rI2RlZmluZSBGVFdfQUNUSU9OUkVUVkFMIDE2Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBGVFdfQ09OVElOVUUKLSsjZGVmaW5lIEZUV19DT05USU5VRSAwCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBGVFdfU1RPUAotKyNkZWZpbmUgRlRXX1NUT1AgMQotKyNlbmRpZgotKwotKyNpZm5kZWYgRlRXX1NLSVBfU1VCVFJFRQotKyNkZWZpbmUgRlRXX1NLSVBfU1VCVFJFRSAyCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBGVFdfU0tJUF9TSUJMSU5HUwotKyNkZWZpbmUgRlRXX1NLSVBfU0lCTElOR1MgMwotKyNlbmRpZgotKwotICNpZiAhIEhBVkVfTElOVVhfQlRSRlNfSAotICNkZWZpbmUgQlRSRlNfSU9DX1FHUk9VUF9BU1NJR04gX0lPVyhCVFJGU19JT0NUTF9NQUdJQywgNDEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ0cmZzX2lvY3RsX3Fncm91cF9hc3NpZ25fYXJncykKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE3MjQ5Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDU4NDVjODJkMTAxNmEzZTNmMjY5NjE4MGQ1YWM5MWI0Njk1MDU0MGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDEyOjU2OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjkvMzFdIG5zcy1teW1hY2hpbmVzOiBCdWlsZCBjb25kaXRpb25hbGx5IHdoZW4KLSBFTkFCTEVfTVlIT1NUTkFNRSBpcyBzZXQKLQotRml4ZXMgYnVpbGQgZmFpbHVyZXMgd2hlbiBidWlsZGluZyB3aXRoIC0tZGlzYWJsZS1teWhvc3RuYW1lCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCAxMSArKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAxYjk0N2FkYWMuLjFlZDRkZGU3MiAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTEzNTEsMTIgKzEzNTEsMTUgQEAgdGVzdF9kbG9wZW4gPSBleGVjdXRhYmxlKAotICAgICAgICAgbGlua193aXRoIDogW2xpYmJhc2ljXSwKLSAgICAgICAgIGRlcGVuZGVuY2llcyA6IFtsaWJkbF0pCi0gCi0tZm9yZWFjaCB0dXBsZSA6IFtbJ215aG9zdG5hbWUnLCAnRU5BQkxFX01ZSE9TVE5BTUUnXSwKLS0gICAgICAgICAgICAgICAgIFsnc3lzdGVtZCcsICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnXSwKLS0gICAgICAgICAgICAgICAgIFsnbXltYWNoaW5lcycsICdFTkFCTEVfTUFDSElORUQnXSwKLS0gICAgICAgICAgICAgICAgIFsncmVzb2x2ZScsICAgICdFTkFCTEVfUkVTT0xWRSddXQotK2ZvcmVhY2ggdHVwbGUgOiBbWydteWhvc3RuYW1lJywgJ0VOQUJMRV9NWUhPU1ROQU1FJywgICcnXSwKLSsgICAgICAgICAgICAgICAgIFsnc3lzdGVtZCcsICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnLCAnJ10sCi0rICAgICAgICAgICAgICAgICBbJ215bWFjaGluZXMnLCAnRU5BQkxFX01BQ0hJTkVEJywgICAgJ0VOQUJMRV9NWUhPU1ROQU1FJ10sCi0rICAgICAgICAgICAgICAgICBbJ3Jlc29sdmUnLCAgICAnRU5BQkxFX1JFU09MVkUnLCAgICAgJyddXQotIAotICAgICAgICAgY29uZGl0aW9uID0gdHVwbGVbMV0gPT0gJycgb3IgY29uZi5nZXQodHVwbGVbMV0pID09IDEKLSsgICAgICAgIGlmIHR1cGxlWzJdICE9ICcnIGFuZCBjb25kaXRpb24KLSsgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gY29uZi5nZXQodHVwbGVbMl0pID09IDEKLSsgICAgICAgIGVuZGlmCi0gICAgICAgICBpZiBjb25kaXRpb24KLSAgICAgICAgICAgICAgICAgbW9kdWxlID0gdHVwbGVbMF0KLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YwYjRiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGI3ZWFjZGYwMzg4ZjkzMGZjNTI3MWJkZWNmYTQ2NjEyYzcxZGQ2NWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDEzOjI3OjQ3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvMzFdIGZpeCBtaXNzaW5nIG9mIF9fcmVnaXN0ZXJfYXRmb3JrIGZvciBub24tZ2xpYmMgYnVpbGRzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLWluZGV4IGRjN2M5ZWY5ZS4uODVjZThhMGNjIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLUBAIC0zOSw2ICszOSw5IEBACi0gI2lmIEhBVkVfVkFMR1JJTkRfVkFMR1JJTkRfSAotICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgotICNlbmRpZgotKyNpZm5kZWYgX19HTElCQ19fCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJhcmNoaXRlY3R1cmUuaCIKLUBAIC0xMTEyLDExICsxMTE1LDE1IEBAIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7Ci0gICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKLSB9Ci0gCi0rI2lmZGVmIF9fR0xJQkNfXwotIC8qIFdlIHVzZSBnbGliYyBfX3JlZ2lzdGVyX2F0Zm9yaygpICsgX19kc29faGFuZGxlIGRpcmVjdGx5IGhlcmUsIGFzIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgZ2xpYmMKLSAgKiBoZWFkZXJzLiBfX3JlZ2lzdGVyX2F0Zm9yaygpIGlzIG1vc3RseSBlcXVpdmFsZW50IHRvIHB0aHJlYWRfYXRmb3JrKCksIGJ1dCBkb2Vzbid0IHJlcXVpcmUgdXMgdG8gbGluayBhZ2FpbnN0Ci0gICogbGlicHRocmVhZCwgYXMgaXQgaXMgcGFydCBvZiBnbGliYyBhbnl3YXkuICovCi0gZXh0ZXJuIGludCBfX3JlZ2lzdGVyX2F0Zm9yayh2b2lkICgqcHJlcGFyZSkgKHZvaWQpLCB2b2lkICgqcGFyZW50KSAodm9pZCksIHZvaWQgKCpjaGlsZCkgKHZvaWQpLCB2b2lkICogX19kc29faGFuZGxlKTsKLSBleHRlcm4gdm9pZCogX19kc29faGFuZGxlIF9fYXR0cmlidXRlX18gKChfX3dlYWtfXykpOwotKyNlbHNlCi0rI2RlZmluZSBfX3JlZ2lzdGVyX2F0Zm9yayhwcmVwYXJlLHBhcmVudCxjaGlsZCxkc28pIHB0aHJlYWRfYXRmb3JrKHByZXBhcmUscGFyZW50LGNoaWxkKQotKyNlbmRpZgotIAotIHBpZF90IGdldHBpZF9jYWNoZWQodm9pZCkgewotICAgICAgICAgcGlkX3QgY3VycmVudF92YWx1ZTsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE5YzRiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGFkY2Q3ZTQyNmZjZDgwZTc1NDI3NGE3MzAyMjFkMWExZjQ5ZGJjMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE0OjAxOjMwICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzEvMzFdIGZpeCBtaXNzaW5nIFVMT05HX0xPTkdfTUFYIGRlZmluaXRpb24gaW4gY2FzZSBvZiBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvbWlzc2luZy5oIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDViOWZkZTY5Mi4uYTkyMmYxMzQ2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTcyLDYgKzcyLDEwIEBAIHN0cnVjdCBzb2NrYWRkcl92bSB7Ci0gfTsKLSAjZW5kaWYgLyogIUhBVkVfTElOVVhfVk1fU09DS0VUU19IICovCi0gCi0rI2lmbmRlZiBVTE9OR19MT05HX01BWAotKyNkZWZpbmUgVUxPTkdfTE9OR19NQVggVUxMT05HX01BWAotKyNlbmRpZgotKwotICNpZm5kZWYgUkxJTUlUX1JUVElNRQotICNkZWZpbmUgUkxJTUlUX1JUVElNRSAxNQotICNlbmRpZgotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMi1tZW1mZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzItbWVtZmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Y2ZkNjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMi1tZW1mZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MiArMCwwIEBACi1taXNzaW5nX3N5c2NhbGw6IHdoZW4gYWRkaW5nIHN5c2NhbGwgcmVwbGFjZW1lbnRzLCB1c2UgZGlmZmVyZW50IG5hbWVzICgKLQotIzgyMjkpCi0KLUluIG1lc29uLmJ1aWxkIHdlIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgdXNpbmc6Ci0gICAgbWVzb24uZ2V0X2NvbXBpbGVyKCdjJykuaGFzX2Z1bmN0aW9uKCdmb28nKQotd2hpY2ggY2hlY2tzIHRoZSBmb2xsb3dpbmc6Ci0tIGlmIF9fc3R1Yl9mb28gb3IgX19zdHViX19fZm9vIGFyZSBkZWZpbmVkLCByZXR1cm4gZmFsc2UKLS0gaWYgZm9vIGlzIGRlY2xhcmVkIChhIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIGNhbiBiZSB0YWtlbiksIHJldHVybiB0cnVlCi0tIG90aGVyd2lzZSBjaGVjayBmb3IgX19idWlsdGluX21lbWZkX2NyZWF0ZQotCi1fc3R1YiBpcyBkb2N1bWVudGVkIGJ5IGdsaWJjIGFzCi0gICBJdCBkZWZpbmVzIGEgc3ltYm9sICdfX3N0dWJfRlVOQ1RJT04nIGZvciBlYWNoIGZ1bmN0aW9uCi0gICBpbiB0aGUgQyBsaWJyYXJ5IHdoaWNoIGlzIGEgc3R1YiwgbWVhbmluZyBpdCB3aWxsIGZhaWwKLSAgIGV2ZXJ5IHRpbWUgY2FsbGVkLCB1c3VhbGx5IHNldHRpbmcgZXJybm8gdG8gRU5PU1lTLgotCi1TbyBpZiBfX3N0dWIgaXMgZGVmaW5lZCwgd2Uga25vdyB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgZ2xpYmMgdmVyc2lvbiwgYnV0Ci10aGlzIGRvZXNuJ3QgdGVsbCB1cyBpZiB0aGUgbmFtZSBpdHNlbGYgaXMgZGVmaW5lZCBvciBub3QuIElmIGl0IF9pc18gZGVmaW5lZCwKLWFuZCB3ZSBkZWZpbmUgb3VyIHJlcGxhY2VtZW50IGFzIGFuIGlubGluZSBzdGF0aWMgZnVuY3Rpb24sIHdlIGdldCBhbiBlcnJvcjoKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy9iYXNpYy9taXNzaW5nLmg6MTM1ODowLAotICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy91dGlsLmg6NDcsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2Jhc2ljL2NhbGVuZGFyc3BlYy5oOjI5LAotICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy9jYWxlbmRhcnNwZWMuYzozNDoKLS4uL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaDo2NToxOTogZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiAnbWVtZmRfY3JlYXRlJyBmb2xsb3dzIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24KLSBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7Ci0gICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+Ci0uLi4vdXNyL2luY2x1ZGUvYml0cy9tbWFuLXNoYXJlZC5oOjQ2OjU6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdtZW1mZF9jcmVhdGUnIHdhcyBoZXJlCi0gaW50IG1lbWZkX2NyZWF0ZSAoY29uc3QgY2hhciAqX19uYW1lLCB1bnNpZ25lZCBpbnQgX19mbGFncykgX19USFJPVzsKLSAgICAgXn5+fn5+fn5+fn5+Ci0KLVRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgY2FsbCBvdXIgaW5saW5lIGZ1bmN0aW9ucyBkaWZmZXJlbnQgdGhhbiBnbGliYywKLWFuZCB1c2UgYSAjZGVmaW5lIHRvIG1hcCB0aGUgb2ZmaWNpYWwgbmFtZSB0byBvdXIgcmVwbGFjZW1lbnQuCi0KLUZpeGVzICM4MDk5LgotCi12MjoKLS0gdXNlICJtaXNzaW5nXyIgYXMgdGhlIHByZWZpeCBpbnN0ZWFkIG9mICJfIgotCi12MzoKLS0gcmViYXNlIGFuZCB1cGRhdGUgZm9yIHN0YXR4KCkKLQotICBVbmZvcnR1bmF0ZWx5ICJzdGF0eCIgaXMgYWxzbyBwcmVzZW50IGluICJzdHJ1Y3Qgc3RhdHgiLCBzbyB0aGUgZGVmaW5lCi0gIGNhdXNlcyBpc3N1ZXMuIFdvcmsgYXJvdW5kIHRoaXMgYnkgdXNpbmcgYSB0eXBlZGVmLgotCi1JIGNoZWNrZWQgdGhhdCBzeXN0ZW1kIGNvbXBpbGVzIHdpdGggY3VycmVudCBnbGliYwotKGdsaWJjLWRldmVsLTIuMjYtMjQuZmMyNy54ODZfNjQpIGlmIEhBVkVfTUVNRkRfQ1JFQVRFLCBIQVZFX0dFVFRJRCwKLUhBVkVfUElWT1RfUk9PVCwgSEFWRV9TRVROUywgSEFWRV9SRU5BTUVBVDIsIEhBVkVfS0NNUCwgSEFWRV9LRVlDVEwsCi1IQVZFX0NPUFlfRklMRV9SQU5HRSwgSEFWRV9CUEYsIEhBVkVfU1RBVFggYXJlIGZvcmNlZCB0byAwLgotCi1TZXR0aW5nIEhBVkVfTkFNRV9UT19IQU5ETEVfQVQgdG8gMCBjYXVzZXMgYW4gaXNzdWUsIGJ1dCBpdCdzIG5vdCBiZWNhdXNlIG9mCi10aGUgZGVmaW5lLCBidXQgYmVjYXVzZSBvZiBzdHJ1Y3QgZmlsZV9oYW5kbGUuCi0KLQotYmFja3BvcnQgaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNTE4N2RkMmM0MDNjYWY5MmQwOWYzNDkxZTQxZjFjZWIzZjEwNDkxZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvODA5OV0KLUluZGV4OiBnaXQvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCi0rKysgZ2l0L3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotQEAgLTI2LDkgKzI2LDExIEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpZiAhSEFWRV9QSVZPVF9ST09UCi0tc3RhdGljIGlubGluZSBpbnQgcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgewotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoU1lTX3Bpdm90X3Jvb3QsIG5ld19yb290LCBwdXRfb2xkKTsKLSB9Ci0rCi0rIyAgZGVmaW5lIHBpdm90X3Jvb3QgbWlzc2luZ19waXZvdF9yb290Ci0gI2VuZGlmCi0gCi0gI2lmICFIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKLUBAIC02OCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmEKLSAjICAgIGVuZGlmCi0gIyAgZW5kaWYKLSAKLS1zdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7Ci0rc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19tZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7Ci0gIyAgaWZkZWYgX19OUl9tZW1mZF9jcmVhdGUKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfbWVtZmRfY3JlYXRlLCBuYW1lLCBmbGFncyk7Ci0gIyAgZWxzZQotQEAgLTc2LDYgKzc4LDggQEAgc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYQotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0gfQotKwotKyMgIGRlZmluZSBtZW1mZF9jcmVhdGUgbWlzc2luZ19tZW1mZF9jcmVhdGUKLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotQEAgLTExNSw3ICsxMTksNyBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhCi0gIyAgICBlbmRpZgotICMgIGVuZGlmCi0gCi0tc3RhdGljIGlubGluZSBpbnQgZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBmbGFncykgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBmbGFncykgewotICMgIGlmZGVmIF9fTlJfZ2V0cmFuZG9tCi0gICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2dldHJhbmRvbSwgYnVmZmVyLCBjb3VudCwgZmxhZ3MpOwotICMgIGVsc2UKLUBAIC0xMjMsMTQgKzEyNywxOCBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRyYW5kb20odm9pZCAqYnVmZmVyCi0gICAgICAgICByZXR1cm4gLTE7Ci0gIyAgZW5kaWYKLSB9Ci0rCi0rIyAgZGVmaW5lIGdldHJhbmRvbSBtaXNzaW5nX2dldHJhbmRvbQotICNlbmRpZgotIAotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0gCi0gI2lmICFIQVZFX0dFVFRJRAotLXN0YXRpYyBpbmxpbmUgcGlkX3QgZ2V0dGlkKHZvaWQpIHsKLStzdGF0aWMgaW5saW5lIHBpZF90IG1pc3NpbmdfZ2V0dGlkKHZvaWQpIHsKLSAgICAgICAgIHJldHVybiAocGlkX3QpIHN5c2NhbGwoU1lTX2dldHRpZCk7Ci0gfQotKwotKyMgIGRlZmluZSBnZXR0aWQgbWlzc2luZ19nZXR0aWQKLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotQEAgLTE1OCw3ICsxNjYsNyBAQCBzdHJ1Y3QgZmlsZV9oYW5kbGUgewotICAgICAgICAgdW5zaWduZWQgY2hhciBmX2hhbmRsZVswXTsKLSB9OwotIAotLXN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGVfaGFuZGxlICpoYW5kbGUsIGludCAqbW50X2lkLCBpbnQgZmxhZ3MpIHsKLStzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX25hbWVfdG9faGFuZGxlX2F0KGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGVfaGFuZGxlICpoYW5kbGUsIGludCAqbW50X2lkLCBpbnQgZmxhZ3MpIHsKLSAjICBpZmRlZiBfX05SX25hbWVfdG9faGFuZGxlX2F0Ci0gICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX25hbWVfdG9faGFuZGxlX2F0LCBmZCwgbmFtZSwgaGFuZGxlLCBtbnRfaWQsIGZsYWdzKTsKLSAjICBlbHNlCi1AQCAtMTY2LDYgKzE3NCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludAotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0gfQotKwotKyMgIGRlZmluZSBuYW1lX3RvX2hhbmRsZV9hdCBtaXNzaW5nX25hbWVfdG9faGFuZGxlX2F0Ci0gI2VuZGlmCi0gCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLUBAIC0xODMsNyArMTkzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgbmFtZV90b19oYW5kbGVfYXQoaW50Ci0gIyAgICBlbmRpZgotICMgIGVuZGlmCi0gCi0tc3RhdGljIGlubGluZSBpbnQgc2V0bnMoaW50IGZkLCBpbnQgbnN0eXBlKSB7Ci0rc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19zZXRucyhpbnQgZmQsIGludCBuc3R5cGUpIHsKLSAjICBpZmRlZiBfX05SX3NldG5zCi0gICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3NldG5zLCBmZCwgbnN0eXBlKTsKLSAjICBlbHNlCi1AQCAtMTkxLDYgKzIwMSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNldG5zKGludCBmZCwgaW50IG5zdHkKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotIH0KLSsKLSsjICBkZWZpbmUgc2V0bnMgbWlzc2luZ19zZXRucwotICNlbmRpZgotIAotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi1AQCAtMjM2LDcgKzI0OCw3IEBAIHN0YXRpYyBpbmxpbmUgcGlkX3QgcmF3X2dldHBpZCh2b2lkKSB7Ci0gIyAgICBlbmRpZgotICMgIGVuZGlmCi0gCi0tc3RhdGljIGlubGluZSBpbnQgcmVuYW1lYXQyKGludCBvbGRmZCwgY29uc3QgY2hhciAqb2xkbmFtZSwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXduYW1lLCB1bnNpZ25lZCBmbGFncykgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfcmVuYW1lYXQyKGludCBvbGRmZCwgY29uc3QgY2hhciAqb2xkbmFtZSwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXduYW1lLCB1bnNpZ25lZCBmbGFncykgewotICMgIGlmZGVmIF9fTlJfcmVuYW1lYXQyCi0gICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3JlbmFtZWF0Miwgb2xkZmQsIG9sZG5hbWUsIG5ld2ZkLCBuZXduYW1lLCBmbGFncyk7Ci0gIyAgZWxzZQotQEAgLTI0NCwxMiArMjU2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlbmFtZWF0MihpbnQgb2xkZmQsIGMKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotIH0KLSsKLSsjICBkZWZpbmUgcmVuYW1lYXQyIG1pc3NpbmdfcmVuYW1lYXQyCi0gI2VuZGlmCi0gCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLSAKLSAjaWYgIUhBVkVfS0NNUAotLXN0YXRpYyBpbmxpbmUgaW50IGtjbXAocGlkX3QgcGlkMSwgcGlkX3QgcGlkMiwgaW50IHR5cGUsIHVuc2lnbmVkIGxvbmcgaWR4MSwgdW5zaWduZWQgbG9uZyBpZHgyKSB7Ci0rc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19rY21wKHBpZF90IHBpZDEsIHBpZF90IHBpZDIsIGludCB0eXBlLCB1bnNpZ25lZCBsb25nIGlkeDEsIHVuc2lnbmVkIGxvbmcgaWR4MikgewotICMgIGlmZGVmIF9fTlJfa2NtcAotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9rY21wLCBwaWQxLCBwaWQyLCB0eXBlLCBpZHgxLCBpZHgyKTsKLSAjICBlbHNlCi1AQCAtMjU3LDM2ICsyNzEsNDQgQEAgc3RhdGljIGlubGluZSBpbnQga2NtcChwaWRfdCBwaWQxLCBwaWRfdAotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0gfQotKwotKyMgIGRlZmluZSBrY21wIG1pc3Npbmdfa2NtcAotICNlbmRpZgotIAotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0gCi0gI2lmICFIQVZFX0tFWUNUTAotLXN0YXRpYyBpbmxpbmUgbG9uZyBrZXljdGwoaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCx1bnNpZ25lZCBsb25nIGFyZzUpIHsKLStzdGF0aWMgaW5saW5lIGxvbmcgbWlzc2luZ19rZXljdGwoaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCx1bnNpZ25lZCBsb25nIGFyZzUpIHsKLSAjICBpZmRlZiBfX05SX2tleWN0bAotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9rZXljdGwsIGNtZCwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7Ci0gIyAgZWxzZQotICAgICAgICAgZXJybm8gPSBFTk9TWVM7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gIyAgZW5kaWYKLSsKLSsjICBkZWZpbmUga2V5Y3RsIG1pc3Npbmdfa2V5Y3RsCi0gfQotIAotLXN0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IGFkZF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLCBrZXlfc2VyaWFsX3QgcmluZ2lkKSB7Ci0rc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgbWlzc2luZ19hZGRfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCB2b2lkICpwYXlsb2FkLCBzaXplX3QgcGxlbiwga2V5X3NlcmlhbF90IHJpbmdpZCkgewotICMgIGlmZGVmIF9fTlJfYWRkX2tleQotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9hZGRfa2V5LCB0eXBlLCBkZXNjcmlwdGlvbiwgcGF5bG9hZCwgcGxlbiwgcmluZ2lkKTsKLSAjICBlbHNlCi0gICAgICAgICBlcnJubyA9IEVOT1NZUzsKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotKwotKyMgIGRlZmluZSBhZGRfa2V5IG1pc3NpbmdfYWRkX2tleQotIH0KLSAKLS1zdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCByZXF1ZXN0X2tleShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgY29uc3QgY2hhciAqIGNhbGxvdXRfaW5mbywga2V5X3NlcmlhbF90IGRlc3RyaW5naWQpIHsKLStzdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCBtaXNzaW5nX3JlcXVlc3Rfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCBjaGFyICogY2FsbG91dF9pbmZvLCBrZXlfc2VyaWFsX3QgZGVzdHJpbmdpZCkgewotICMgIGlmZGVmIF9fTlJfcmVxdWVzdF9rZXkKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfcmVxdWVzdF9rZXksIHR5cGUsIGRlc2NyaXB0aW9uLCBjYWxsb3V0X2luZm8sIGRlc3RyaW5naWQpOwotICMgIGVsc2UKLSAgICAgICAgIGVycm5vID0gRU5PU1lTOwotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0rCi0rIyAgZGVmaW5lIHJlcXVlc3Rfa2V5IG1pc3NpbmdfcmVxdWVzdF9rZXkKLSB9Ci0gI2VuZGlmCi0gCi1AQCAtMzEzLDEwICszMzUsMTAgQEAgc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgcmVxdWVzdF9rZXkoYwotICMgICAgZW5kaWYKLSAjICBlbmRpZgotIAotLXN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW50IGZkX2luLCBsb2ZmX3QgKm9mZl9pbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZF9vdXQsIGxvZmZfdCAqb2ZmX291dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKLStzdGF0aWMgaW5saW5lIHNzaXplX3QgbWlzc2luZ19jb3B5X2ZpbGVfcmFuZ2UoaW50IGZkX2luLCBsb2ZmX3QgKm9mZl9pbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZkX291dCwgbG9mZl90ICpvZmZfb3V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKLSAjICBpZmRlZiBfX05SX2NvcHlfZmlsZV9yYW5nZQotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jb3B5X2ZpbGVfcmFuZ2UsIGZkX2luLCBvZmZfaW4sIGZkX291dCwgb2ZmX291dCwgbGVuLCBmbGFncyk7Ci0gIyAgZWxzZQotQEAgLTMyNCw2ICszNDYsOCBAQCBzdGF0aWMgaW5saW5lIHNzaXplX3QgY29weV9maWxlX3JhbmdlKGluCi0gICAgICAgICByZXR1cm4gLTE7Ci0gIyAgZW5kaWYKLSB9Ci0rCi0rIyAgZGVmaW5lIGNvcHlfZmlsZV9yYW5nZSBtaXNzaW5nX2NvcHlfZmlsZV9yYW5nZQotICNlbmRpZgotIAotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi1AQCAtMzUxLDcgKzM3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW4KLSAKLSB1bmlvbiBicGZfYXR0cjsKLSAKLS1zdGF0aWMgaW5saW5lIGludCBicGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHNpemVfdCBzaXplKSB7Ci0rc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHNpemVfdCBzaXplKSB7Ci0gI2lmZGVmIF9fTlJfYnBmCi0gICAgICAgICByZXR1cm4gKGludCkgc3lzY2FsbChfX05SX2JwZiwgY21kLCBhdHRyLCBzaXplKTsKLSAjZWxzZQotQEAgLTM2MCw2ICszODQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBicGYoaW50IGNtZCwgdW5pb24gYnBmCi0gI2VuZGlmCi0gfQotIAotKyMgIGRlZmluZSBicGYgbWlzc2luZ19icGYKLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMy1iYXNpYy1tYWNyb3MtcmVuYW1lLW5vcmV0dXJuLWludG8tX25vcmV0dXJuXy04NDU2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMy1iYXNpYy1tYWNyb3MtcmVuYW1lLW5vcmV0dXJuLWludG8tX25vcmV0dXJuXy04NDU2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTY0N2IyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi1Gcm9tIDg0OGU4NjNhY2M1MWVjZmIwZjM5NTVjNDk4ODc0NTg4MjAxZDkxMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGcmFuY2sgQnVpIDxmYnVpQHN1c2UuY29tPgotRGF0ZTogVGh1LCAxNSBNYXIgMjAxOCAwNjoyMzo0NiArMDEwMAotU3ViamVjdDogW1BBVENIXSBiYXNpYy9tYWNyb3M6IHJlbmFtZSBub3JldHVybiBpbnRvIF9ub3JldHVybl8gKCM4NDU2KQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi0ibm9yZXR1cm4iIGlzIHJlc2VydmVkIGFuZCBjYW4gYmUgdXNlZCBpbiBvdGhlciBoZWFkZXIgZmlsZXMgd2UgaW5jbHVkZToKLQotICBbICAgMTZzXSBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2djcnlwdC5oOjMwOjAsCi0gIFsgICAxNnNdICAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvam91cm5hbC9qb3VybmFsLWZpbGUuaDoyNiwKLSAgWyAgIDE2c10gICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9qb3VybmFsL2pvdXJuYWwtdmFjdXVtLmM6MzE6Ci0gIFsgICAxNnNdIC91c3IvaW5jbHVkZS9ncGctZXJyb3IuaDoxNTQ0OjQ2OiBlcnJvcjogZXhwZWN0ZWQg4oCYLOKAmSBvciDigJg74oCZIGJlZm9yZSDigJgp4oCZIHRva2VuCi0gIFsgICAxNnNdICB2b2lkIGdwZ3J0X2xvZ19idWcgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSAgICBHUEdSVF9BVFRSX05SX1BSSU5URigxLDIpOwotCi1IZXJlIHdlIGluY2x1ZGUgZ3JjcnlwdC5oICh3aGljaCBpbiB0dXJucyBpbmNsdWRlIGdwZy1lcnJvci5oKSAqYWZ0ZXIqIHdlCi0ibm9yZXR1cm4iIHdhcyBkZWZpbmVkIGluIG1hY3JvLmguCi0tLS0KLSBzcmMvYmFzaWMvbG9nLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gc3JjL2Jhc2ljL2xvZy5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQotIHNyYy9iYXNpYy9tYWNyby5oICAgICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKy0tLS0tLS0tLS0KLSBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuaCAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2NvcmUvbWFpbi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQotIHNyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYyB8ICAyICstCi0gc3JjL3NoYXJlZC9wYWdlci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYyAgICAgICAgICAgICAgfCAgMiArLQotIDkgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvcHVsbC84NDU2XQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2xvZy5jIGIvc3JjL2Jhc2ljL2xvZy5jCi1pbmRleCA3YTdmMmNiZWMuLjE2YTI0MzFjNSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9sb2cuYwotKysrIGIvc3JjL2Jhc2ljL2xvZy5jCi1AQCAtODE0LDcgKzgxNCw3IEBAIHN0YXRpYyB2b2lkIGxvZ19hc3NlcnQoCi0gICAgICAgICBsb2dfZGlzcGF0Y2hfaW50ZXJuYWwobGV2ZWwsIDAsIGZpbGUsIGxpbmUsIGZ1bmMsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGJ1ZmZlcik7Ci0gfQotIAotLW5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCi0rX25vcmV0dXJuXyB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAotICAgICAgICAgICAgICAgICBMb2dSZWFsbSByZWFsbSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGV4dCwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwKLUBAIC04MjYsNyArODI2LDcgQEAgbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKLSAgICAgICAgIGFib3J0KCk7Ci0gfQotIAotLW5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfdW5yZWFjaGFibGVfcmVhbG0oCi0rX25vcmV0dXJuXyB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3VucmVhY2hhYmxlX3JlYWxtKAotICAgICAgICAgICAgICAgICBMb2dSZWFsbSByZWFsbSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGV4dCwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbG9nLmggYi9zcmMvYmFzaWMvbG9nLmgKLWluZGV4IGVmY2YwZjFiZi4uMzE0YmUxMjhhIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2xvZy5oCi0rKysgYi9zcmMvYmFzaWMvbG9nLmgKLUBAIC0xODYsNyArMTg2LDcgQEAgaW50IGxvZ19kdW1wX2ludGVybmFsKAotICAgICAgICAgICAgICAgICBjaGFyICpidWZmZXIpOwotIAotIC8qIExvZ2dpbmcgZm9yIHZhcmlvdXMgYXNzZXJ0aW9ucyAqLwotLW5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCi0rX25vcmV0dXJuXyB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAotICAgICAgICAgICAgICAgICBMb2dSZWFsbSByZWFsbSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGV4dCwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwKLUBAIC0xOTUsNyArMTk1LDcgQEAgbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKLSAjZGVmaW5lIGxvZ19hc3NlcnRfZmFpbGVkKHRleHQsIC4uLikgXAotICAgICAgICAgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oTE9HX1JFQUxNLCAodGV4dCksIF9fVkFfQVJHU19fKQotIAotLW5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfdW5yZWFjaGFibGVfcmVhbG0oCi0rX25vcmV0dXJuXyB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3VucmVhY2hhYmxlX3JlYWxtKAotICAgICAgICAgICAgICAgICBMb2dSZWFsbSByZWFsbSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGV4dCwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWFjcm8uaCBiL3NyYy9iYXNpYy9tYWNyby5oCi1pbmRleCA5NWJlNjNhMjAuLjg5MTFlZGZjNCAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9tYWNyby5oCi0rKysgYi9zcmMvYmFzaWMvbWFjcm8uaAotQEAgLTUzLDYgKzUzLDE1IEBACi0gI2Vsc2UKLSAjZGVmaW5lIF9mYWxsdGhyb3VnaF8KLSAjZW5kaWYKLSsvKiBEZWZpbmUgQzExIG5vcmV0dXJuIHdpdGhvdXQgPHN0ZG5vcmV0dXJuLmg+IGFuZCBldmVuIG9uIG9sZGVyIGdjYwotKyAqIGNvbXBpbGVyIHZlcnNpb25zICovCi0rI2lmbmRlZiBfbm9yZXR1cm5fCi0rI2lmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTAotKyNkZWZpbmUgX25vcmV0dXJuXyBfTm9yZXR1cm4KLSsjZWxzZQotKyNkZWZpbmUgX25vcmV0dXJuXyBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpCi0rI2VuZGlmCi0rI2VuZGlmCi0gCi0gLyogVGVtcG9yYXJpbHkgZGlzYWJsZSBzb21lIHdhcm5pbmdzICovCi0gI2RlZmluZSBESVNBQkxFX1dBUk5JTkdfREVDTEFSQVRJT05fQUZURVJfU1RBVEVNRU5UICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTQxNCwxNiArNDIzLDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIEFMSUdOX1BPV0VSMih1bnNpZ25lZCBsb25nIHUpIHsKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLS0vKiBEZWZpbmUgQzExIG5vcmV0dXJuIHdpdGhvdXQgPHN0ZG5vcmV0dXJuLmg+IGFuZCBldmVuIG9uIG9sZGVyIGdjYwotLSAqIGNvbXBpbGVyIHZlcnNpb25zICovCi0tI2lmbmRlZiBub3JldHVybgotLSNpZiBfX1NURENfVkVSU0lPTl9fID49IDIwMTExMkwKLS0jZGVmaW5lIG5vcmV0dXJuIF9Ob3JldHVybgotLSNlbHNlCi0tI2RlZmluZSBub3JldHVybiBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpCi0tI2VuZGlmCi0tI2VuZGlmCi0tCi0gI2RlZmluZSBERUZJTkVfVFJJVklBTF9DTEVBTlVQX0ZVTkModHlwZSwgZnVuYykgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBmdW5jIyNwKHR5cGUgKnApIHsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICBpZiAoKnApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1pbmRleCBhYTk4NDZkYjUuLmU2MTIwYWY1YiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtOTg3LDcgKzk4Nyw3IEBAIGJvb2wgaXNfbWFpbl90aHJlYWQodm9pZCkgewotICAgICAgICAgcmV0dXJuIGNhY2hlZCA+IDA7Ci0gfQotIAotLW5vcmV0dXJuIHZvaWQgZnJlZXplKHZvaWQpIHsKLStfbm9yZXR1cm5fIHZvaWQgZnJlZXplKHZvaWQpIHsKLSAKLSAgICAgICAgIGxvZ19jbG9zZSgpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuaCBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuaAotaW5kZXggOTMwMjllMzZlLi41MTcwYWRlYzcgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmgKLSsrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuaAotQEAgLTkxLDcgKzkxLDcgQEAgaW50IHBpZF9mcm9tX3NhbWVfcm9vdF9mcyhwaWRfdCBwaWQpOwotIAotIGJvb2wgaXNfbWFpbl90aHJlYWQodm9pZCk7Ci0gCi0tbm9yZXR1cm4gdm9pZCBmcmVlemUodm9pZCk7Ci0rX25vcmV0dXJuXyB2b2lkIGZyZWV6ZSh2b2lkKTsKLSAKLSBib29sIG9vbV9zY29yZV9hZGp1c3RfaXNfdmFsaWQoaW50IG9hKTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKLWluZGV4IDA3Njg0NmE0MS4uNGIyZDE0OTIzIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvbWFpbi5jCi0rKysgYi9zcmMvY29yZS9tYWluLmMKLUBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIHVpbnQ2NF90IGFyZ19kZWZhdWx0X3Rhc2tzX21heCA9IFVJTlQ2NF9NQVg7Ci0gc3RhdGljIHNkX2lkMTI4X3QgYXJnX21hY2hpbmVfaWQgPSB7fTsKLSBzdGF0aWMgRW1lcmdlbmN5QWN0aW9uIGFyZ19jYWRfYnVyc3RfYWN0aW9uID0gRU1FUkdFTkNZX0FDVElPTl9SRUJPT1RfRk9SQ0U7Ci0gCi0tbm9yZXR1cm4gc3RhdGljIHZvaWQgZnJlZXplX29yX3JlYm9vdCh2b2lkKSB7Ci0rX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBmcmVlemVfb3JfcmVib290KHZvaWQpIHsKLSAKLSAgICAgICAgIGlmIChhcmdfY3Jhc2hfcmVib290KSB7Ci0gICAgICAgICAgICAgICAgIGxvZ19ub3RpY2UoIlJlYm9vdGluZyBpbiAxMHMuLi4iKTsKLUBAIC0xNTYsNyArMTU2LDcgQEAgbm9yZXR1cm4gc3RhdGljIHZvaWQgZnJlZXplX29yX3JlYm9vdCh2b2lkKSB7Ci0gICAgICAgICBmcmVlemUoKTsKLSB9Ci0gCi0tbm9yZXR1cm4gc3RhdGljIHZvaWQgY3Jhc2goaW50IHNpZykgewotK19ub3JldHVybl8gc3RhdGljIHZvaWQgY3Jhc2goaW50IHNpZykgewotICAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKLSAgICAgICAgIHBpZF90IHBpZDsKLSAKLWRpZmYgLS1naXQgYS9zcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMgYi9zcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMKLWluZGV4IDVhODhiMjc3NC4uZDg3YmRiZGQzIDEwMDY0NAotLS0tIGEvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jCi0rKysgYi9zcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMKLUBAIC0zNyw3ICszNyw3IEBACi0gCi0gc3RhdGljIGJvb2wgYXJnX2tlZXAgPSBmYWxzZTsKLSAKLS1ub3JldHVybiBzdGF0aWMgdm9pZCBsb2dfYXNzZXJ0X2Vycm5vKGNvbnN0IGNoYXIgKnRleHQsIGludCBlcnJvciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmMpIHsKLStfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIGxvZ19hc3NlcnRfZXJybm8oY29uc3QgY2hhciAqdGV4dCwgaW50IGVycm9yLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZnVuYykgewotICAgICAgICAgbG9nX2ludGVybmFsKExPR19DUklULCBlcnJvciwgZmlsZSwgbGluZSwgZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBmYWlsZWQgYXQgJXM6JXUgKCVzKTogJW0iLCB0ZXh0LCBmaWxlLCBsaW5lLCBmdW5jKTsKLSAgICAgICAgIGFib3J0KCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1pbmRleCA3NWRiM2M5ODUuLjY4MWFmOWM0MCAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYwotKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1AQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgaW50IHN0b3JlZF9zdGRlcnIgPSAtMTsKLSBzdGF0aWMgYm9vbCBzdGRvdXRfcmVkaXJlY3RlZCA9IGZhbHNlOwotIHN0YXRpYyBib29sIHN0ZGVycl9yZWRpcmVjdGVkID0gZmFsc2U7Ci0gCi0tbm9yZXR1cm4gc3RhdGljIHZvaWQgcGFnZXJfZmFsbGJhY2sodm9pZCkgewotK19ub3JldHVybl8gc3RhdGljIHZvaWQgcGFnZXJfZmFsbGJhY2sodm9pZCkgewotICAgICAgICAgaW50IHI7Ci0gCi0gICAgICAgICByID0gY29weV9ieXRlcyhTVERJTl9GSUxFTk8sIFNURE9VVF9GSUxFTk8sICh1aW50NjRfdCkgLTEsIDApOwotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jIGIvc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMKLWluZGV4IDI4MjE2NDBlOS4uYzhmYTQ3YjNkIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMKLSsrKyBiL3NyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jCi1AQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBfbWF0ZSAqbm9kZV90b19tYXRlKHN0cnVjdCB1ZGV2X2xpc3Rfbm9kZSAqbm9kZSkKLSAgICAgICAgIHJldHVybiBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IF9tYXRlLCBub2RlKTsKLSB9Ci0gCi0tbm9yZXR1cm4gc3RhdGljIHZvaWQgc2lnX2Fscm0oaW50IHNpZ25vKQotK19ub3JldHVybl8gc3RhdGljIHZvaWQgc2lnX2Fscm0oaW50IHNpZ25vKQotIHsKLSAgICAgICAgIGV4aXQoNCk7Ci0gfQotLS0gCi0yLjE3LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTYwNjFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi1Gcm9tIGMyYjNlYmUxMTJlYmZkOWY5ZTgyZmIxNTMxZWUyMjVjMzE1MmNhODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIFVpdGVyd2lqayA8cGF0cmlja0BwdWl0ZXJ3aWprLm9yZz4KLURhdGU6IFRodSwgMjIgRmViIDIwMTggMTk6NDE6MzAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGZvcm1hdC10cnVuY2F0aW9uIGNvbXBpbGUgZmFpbHVyZSBieSB0eXBlY2FzdGluZyBVU0IgSURzCi0gKCM4MjUwKQotCi1UaGlzIHBhdGNoIGFkZHMgc2FmZV9hdG91eDE2IGZvciBwYXJzaW5nIGFuIHVuc2lnbmVkIGhleGFkZWNpbWFsIDE2Yml0IGludCwgYW5kCi11c2VzIHRoYXQgZm9yIHBhcnNpbmcgVVNCIGRldmljZSBhbmQgdmVuZG9yIElEcy4KLQotVGhpcyBmaXhlcyBhIGNvbXBpbGUgZXJyb3Igd2l0aCBnY2MtOCBiZWNhdXNlIHdoaWxlIHdlIGtub3cgdGhhdCBVU0IgSURzIGFyZSAyIGJ5dGVzLAotdGhlIGNvbXBpbGVyIGRvZXMgbm90IGtub3cgdGhhdC4KLQotLi4vc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYzo4MDozODogZXJyb3I6ICclMDRYJyBkaXJlY3RpdmUgb3V0cHV0IG1heSBiZQotdHJ1bmNhdGVkIHdyaXRpbmcgYmV0d2VlbiA0IGFuZCA4IGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSBiZXR3ZWVuIDIgYW5kIDYKLVstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNTU0N2MxMjUwM2E2ODMyOTBlYWVkNDc5NTRmZmNmYjJkMWJjMDNjZF0KLQotU2lnbmVkLW9mZi1ieTogQWRhbSBXaWxsaWFtc29uIDxhd2lsbGlhbUByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogUGF0cmljayBVaXRlcndpamsgPHB1aXRlcndpamtAcmVkaGF0LmNvbT4KLS0tLQotIHNyYy9iYXNpYy9wYXJzZS11dGlsLmMgICAgICAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaCAgICAgICB8ICAyICsrCi0gc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMgfCAxMyArKysrKystLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotaW5kZXggOTc1MzM3MjFkLi5mZjNmYzI5OGEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1AQCAtNTMyLDYgKzUzMiwzMCBAQCBpbnQgc2FmZV9hdG9pMTYoY29uc3QgY2hhciAqcywgaW50MTZfdCAqcmV0KSB7Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci0gCi0raW50IHNhZmVfYXRvdXgxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KSB7Ci0rICAgICAgICBjaGFyICp4ID0gTlVMTDsKLSsgICAgICAgIHVuc2lnbmVkIGxvbmcgbDsKLSsKLSsgICAgICAgIGFzc2VydChzKTsKLSsgICAgICAgIGFzc2VydChyZXQpOwotKwotKyAgICAgICAgcyArPSBzdHJzcG4ocywgV0hJVEVTUEFDRSk7Ci0rCi0rICAgICAgICBlcnJubyA9IDA7Ci0rICAgICAgICBsID0gc3RydG91bChzLCAmeCwgMTYpOwotKyAgICAgICAgaWYgKGVycm5vID4gMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKLSsgICAgICAgIGlmICgheCB8fCB4ID09IHMgfHwgKnggIT0gMCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0rICAgICAgICBpZiAoc1swXSA9PSAnLScpCi0rICAgICAgICAgICAgICAgIHJldHVybiAtRVJBTkdFOwotKyAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSAodWludDE2X3QpIGwgIT0gbCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7Ci0rCi0rICAgICAgICAqcmV0ID0gKHVpbnQxNl90KSBsOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rfQotKwotIGludCBzYWZlX2F0b2QoY29uc3QgY2hhciAqcywgZG91YmxlICpyZXRfZCkgewotICAgICAgICAgX2NsZWFudXBfKGZyZWVsb2NhbGVwKSBsb2NhbGVfdCBsb2MgPSAobG9jYWxlX3QpIDA7Ci0gICAgICAgICBjaGFyICp4ID0gTlVMTDsKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAotaW5kZXggMWVkYTFkN2Y5Li43Mjc0MjIwNTYgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5oCi1AQCAtNTQsNiArNTQsOCBAQCBpbnQgc2FmZV9hdG91OChjb25zdCBjaGFyICpzLCB1aW50OF90ICpyZXQpOwotIGludCBzYWZlX2F0b3UxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KTsKLSBpbnQgc2FmZV9hdG9pMTYoY29uc3QgY2hhciAqcywgaW50MTZfdCAqcmV0KTsKLSAKLStpbnQgc2FmZV9hdG91eDE2KGNvbnN0IGNoYXIgKnMsIHVpbnQxNl90ICpyZXQpOwotKwotIHN0YXRpYyBpbmxpbmUgaW50IHNhZmVfYXRvdTMyKGNvbnN0IGNoYXIgKnMsIHVpbnQzMl90ICpyZXRfdSkgewotICAgICAgICAgYXNzZXJ0X2NjKHNpemVvZih1aW50MzJfdCkgPT0gc2l6ZW9mKHVuc2lnbmVkKSk7Ci0gICAgICAgICByZXR1cm4gc2FmZV9hdG91KHMsICh1bnNpZ25lZCopIHJldF91KTsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jCi1pbmRleCA5Mzc1MDAyMTMuLmE5OWNlYTVhMSAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYwotQEAgLTQ2OCw2ICs0NjgsNDQgQEAgc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b2kxNih2b2lkKSB7Ci0gICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b3V4MTYodm9pZCkgewotKyAgICAgICAgaW50IHI7Ci0rICAgICAgICB1aW50MTZfdCBsOwotKwotKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiMTIzNCIsICZsKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKGwgPT0gMHgxMjM0KTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoImFiY2QiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShsID09IDB4YWJjZCk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCIgIDEyMzQiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShsID09IDB4MTIzNCk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMjM0NSIsICZsKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IC1FUkFOR0UpOwotKwotKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiLTEiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIiAgLTEiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoImp1bmsiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyM3giLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyLjMiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIiIsICZsKTsKLSsgICAgICAgIGFzc2VydF9zZShyID09IC1FSU5WQUwpOwotK30KLSsKLSBzdGF0aWMgdm9pZCB0ZXN0X3NhZmVfYXRvdTY0KHZvaWQpIHsKLSAgICAgICAgIGludCByOwotICAgICAgICAgdWludDY0X3QgbDsKLUBAIC03NDUsNiArNzgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewotICAgICAgICAgdGVzdF9zYWZlX2F0b2xsaSgpOwotICAgICAgICAgdGVzdF9zYWZlX2F0b3UxNigpOwotICAgICAgICAgdGVzdF9zYWZlX2F0b2kxNigpOwotKyAgICAgICAgdGVzdF9zYWZlX2F0b3V4MTYoKTsKLSAgICAgICAgIHRlc3Rfc2FmZV9hdG91NjQoKTsKLSAgICAgICAgIHRlc3Rfc2FmZV9hdG9pNjQoKTsKLSAgICAgICAgIHRlc3Rfc2FmZV9hdG9kKCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKLWluZGV4IGNhN2Y3YzIzMC4uZGJmZTAyNDI5IDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYwotKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLWh3ZGIuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJod2RiLXV0aWwuaCIKLSsjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotICNpbmNsdWRlICJ1ZGV2LXV0aWwuaCIKLSAjaW5jbHVkZSAidWRldi5oIgotQEAgLTYzLDcgKzY0LDcgQEAgaW50IHVkZXZfYnVpbHRpbl9od2RiX2xvb2t1cChzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwKLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqbW9kYWxpYXNfdXNiKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICAgY29uc3QgY2hhciAqdiwgKnA7Ci0tICAgICAgICBpbnQgdm4sIHBuOwotKyAgICAgICAgdWludDE2X3Qgdm4sIHBuOwotIAotICAgICAgICAgdiA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGRldiwgImlkVmVuZG9yIik7Ci0gICAgICAgICBpZiAoIXYpCi1AQCAtNzEsMTIgKzcyLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICptb2RhbGlhc191c2Ioc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsIGNoYXIgKnMsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgICBwID0gdWRldl9kZXZpY2VfZ2V0X3N5c2F0dHJfdmFsdWUoZGV2LCAiaWRQcm9kdWN0Iik7Ci0gICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgICAgdm4gPSBzdHJ0b2wodiwgTlVMTCwgMTYpOwotLSAgICAgICAgaWYgKHZuIDw9IDApCi0tICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgICAgcG4gPSBzdHJ0b2wocCwgTlVMTCwgMTYpOwotLSAgICAgICAgaWYgKHBuIDw9IDApCi0tICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotKyAgICAgICAgaWYgKHNhZmVfYXRvdXgxNih2LCAmdm4pIDwgMCkKLSsJCXJldHVybiBOVUxMOwotKyAgICAgICAgaWYgKHNhZmVfYXRvdXgxNihwLCAmcG4pIDwgMCkKLSsJCXJldHVybiBOVUxMOwotICAgICAgICAgc25wcmludGYocywgc2l6ZSwgInVzYjp2JTA0WHAlMDRYKiIsIHZuLCBwbik7Ci0gICAgICAgICByZXR1cm4gczsKLSB9Ci0tLSAKLTIuMTcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNmQ1MjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA1ZjFmMDY0YzgxZWEzMGFjZjkzY2ZhMGZiNDY2YjM4ZjA5NGY0ODhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjcgTWF5IDIwMTggMDg6MzY6NDQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKLQotRml4ZXMgYnVpbGRzIHdpdGggbXVzbCwgZXZlbiB0aG91Z2ggc3lzdGVtZCBpcyBhZGFtYW50IGFib3V0Ci11c2luZyBub24tcG9zaXggYmFzZW5hbWUgaW1wbGVtZW50YXRpb24sIHdlIGhhdmUgYSB3YXkgb3V0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotaW5kZXggMmQ3ODA2NDkxYi4uOWEzYmRiMWQ3NiAxMDA2NDQKLS0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCi0rKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotQEAgLTI5LDYgKzI5LDEwIEBACi0gI2luY2x1ZGUgPGxpYmdlbi5oPgotICN1bmRlZiBiYXNlbmFtZQotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rI2RlZmluZSBiYXNlbmFtZShzcmMpIChzdHJyY2hyKHNyYywnLycpID8gc3RycmNocihzcmMsJy8nKSsxIDogc3JjKQotKyNlbmRpZgotKwotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImJ1cy1jb21tb24tZXJyb3JzLmgiCi0gI2luY2x1ZGUgImJ1cy1pbnRlcm5hbC5oIgotLS0gCi0yLjE3LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9saWJtb3VudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU5ZDViNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9saWJtb3VudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMjI3YjhhNzYyZmVhMTQ1ODU0N2JlMmNkZjBlNmU0YWFjMDA3OTczMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogTW9uLCAyNiBNYXIgMjAxOCAxNzozNDo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb3JlOiBkb24ndCBpbmNsdWRlIGxpYm1vdW50LmggaW4gYSBoZWFkZXIgZmlsZSAoIzg1ODApCi0KLWxpbnV4L2ZzLmggc3lzL21vdW50LmgsIGxpYm1vdW50LmggYW5kIG1pc3NpbmcuaCBhbGwgaW5jbHVkZSBNU18qCi1kZWZpbml0aW9ucy4KLQotVG8gYXZvaWQgcHJvYmxlbXMsIG9ubHkgb25lIG9mIGxpbnV4L2ZzLmgsIHN5cy9tb3VudC5oIGFuZCBsaWJtb3VudC5oCi1zaG91bGQgYmUgaW5jbHVkZWQuIEFuZCBtaXNzaW5nLmggbXVzdCBiZSBpbmNsdWRlZCBsYXN0LgotCi1XaXRob3V0IHRoaXMsIGJ1aWxkaW5nIHN5c3RlbWQgbWF5IGZhaWwgd2l0aDoKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIFsuLi5dL2xpYm1vdW50L2xpYm1vdW50Lmg6MzE6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS9tYW5hZ2VyLmg6MjMsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvZW1lcmdlbmN5LWFjdGlvbi5oOjM3LAotICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL3VuaXQuaDozNCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS9kYnVzLXRpbWVyLmg6MjUsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvdGltZXIuYzoyNjoKLVsuLi5dL3N5cy9tb3VudC5oOjU3OjI6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIGJlZm9yZSBudW1lcmljIGNvbnN0YW50Ci0tLS0KLSBzcmMvY29yZS9kYnVzLWV4ZWN1dGUuYyB8IDEgKwotIHNyYy9jb3JlL21hbmFnZXIuaCAgICAgIHwgMyArKy0KLSBzcmMvY29yZS9tb3VudC5jICAgICAgICB8IDIgKysKLSAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMgYi9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYwotaW5kZXggNzM0NDYyM2ViZjYuLmMzNDIwOTNiY2E0IDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKLSsrKyBiL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCi1AQCAtMTgsNiArMTgsNyBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotKyNpbmNsdWRlIDxzeXMvbW91bnQuaD4KLSAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotIAotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21hbmFnZXIuaCBiL3NyYy9jb3JlL21hbmFnZXIuaAotaW5kZXggMjhjNWRhMjI1YjEuLmUwOWUwY2RmNWU5IDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvbWFuYWdlci5oCi0rKysgYi9zcmMvY29yZS9tYW5hZ2VyLmgKLUBAIC0yMCw3ICsyMCw2IEBACi0gICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0gCi0tI2luY2x1ZGUgPGxpYm1vdW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAKLUBAIC0zNCw2ICszMyw4IEBACi0gI2luY2x1ZGUgImxpc3QuaCIKLSAjaW5jbHVkZSAicmF0ZWxpbWl0LmgiCi0gCi0rc3RydWN0IGxpYm1udF9tb25pdG9yOwotKwotIC8qIEVuZm9yY2UgdXBwZXIgbGltaXQgaG93IG1hbnkgbmFtZXMgd2UgYWxsb3cgKi8KLSAjZGVmaW5lIE1BTkFHRVJfTUFYX05BTUVTIDEzMTA3MiAvKiAxMjhLICovCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbW91bnQuYyBiL3NyYy9jb3JlL21vdW50LmMKLWluZGV4IDBlNzU1ZGE1YzAyLi4wMTU0ZWJkYTVkNiAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL21vdW50LmMKLSsrKyBiL3NyYy9jb3JlL21vdW50LmMKLUBAIC0yMyw2ICsyMyw4IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgotIAotKyNpbmNsdWRlIDxsaWJtb3VudC5oPgotKwotICNpbmNsdWRlICJzZC1tZXNzYWdlcy5oIgotIAotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MDliMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTk1ICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLQotUFJPVklERVMgPSAidWRldiIKLQotUEUgPSAiMSIKLQotREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKLQotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1pbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KLSMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMyLW1lbWZkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJtb3VudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1jb21waWxlLWZhaWx1cmUtYnktdHlwZWNhc3RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfcWVtdWFsbCA9ICIgZmlsZTovLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCIKLQotIyBXb3JrYXJvdW5kIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnIG9uIHFlbXV4ODYgYW5kIHFlbXVwcGMgZm9yIG11c2wKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbF9xZW11eDg2ID0gIiBmaWxlOi8vMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3FlbXVwcGMgPSAiIGZpbGU6Ly8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2giCi0KLVBBTV9QTFVHSU5TID0gIiBcCi0gICAgcGFtLXBsdWdpbi11bml4IFwKLSAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKLSAgICBwYW0tcGx1Z2luLWtleWluaXQgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgbGRjb25maWcgcGFtIHNlbGludXggdXNybWVyZ2UnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4a2Jjb21tb24nLCAnJywgZCl9IFwKLSAgICBiYWNrbGlnaHQgXAotICAgIGJpbmZtdCBcCi0gICAgZmlyc3Rib290IFwKLSAgICBoaWJlcm5hdGUgXAotICAgIGhvc3RuYW1lZCBcCi0gICAgaW1hIFwKLSAgICBsb2NhbGVkIFwKLSAgICBsb2dpbmQgXAotICAgIG1hY2hpbmVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuZXR3b3JrZCBcCi0gICAgbnNzIFwKLSAgICBwb2xraXQgXAotICAgIHF1b3RhY2hlY2sgXAotICAgIHJhbmRvbXNlZWQgXAotICAgIHJlc29sdmVkIFwKLSAgICBzbWFjayBcCi0gICAgc3lzdXNlcnMgXAotICAgIHRpbWVkYXRlZCBcCi0gICAgdGltZXN5bmNkIFwKLSAgICB1dG1wIFwKLSAgICB2Y29uc29sZSBcCi0gICAgeHogXAotIgotCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKLSAgICBsb2NhbGVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuc3MgXAotICAgIHJlc29sdmVkIFwKLSAgICBzZWxpbnV4IFwKLSAgICBzbWFjayBcCi0gICAgc3lzdXNlcnMgXAotICAgIHV0bXAgXAotIgotCi0jIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KLSMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYwotIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgotCi1QQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKLVBBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKLVBBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCi1QQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi1EZWxmdXRpbHM9dHJ1ZSwtRGVsZnV0aWxzPWZhbHNlLGVsZnV0aWxzIgotUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi1EZmlyc3Rib290PXRydWUsLURmaXJzdGJvb3Q9ZmFsc2UiCi0jIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCi1QQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLURnY3J5cHQ9dHJ1ZSwtRGdjcnlwdD1mYWxzZSxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCi0jIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAotUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCi0jIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKLVBBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgotUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCi1QQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRGxpYmlkbj10cnVlLC1EbGliaWRuPWZhbHNlLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCi1QQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbXlob3N0bmFtZT10cnVlLC1EbXlob3N0bmFtZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi1EcG9sa2l0PXRydWUsLURwb2xraXQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKLVBBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKLSMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5Ci1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgotUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgotUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgotIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCi1QQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCi0KLSMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCi0jIGJ1aWxkIHN5c3RlbS4KLXJvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igotcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCi1yb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKLQotIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCi0jIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAotIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCi1FWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKLSAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3Rob21lZGlyPSR7Uk9PVEhPTUV9IFwKLSAgICAgICAgICAgICAgICAgIC1Ecm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1Ecm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgIC1Ec3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKLSAgICAgICAgICAgICAgICAgICIKLQotIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIHVzaW5nIHBhdGhzIGZyb20gc3lzcm9vdAotRVhUUkFfT0VNRVNPTiArPSAiLURrZXhlYy1wYXRoPSR7c2JpbmRpcn0va2V4ZWMgXAotICAgICAgICAgICAgICAgICAgLURraWxsLXBhdGg9JHtiYXNlX2JpbmRpcn0va2lsbCBcCi0gICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKLSAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCi0gICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKLSAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKLSAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgotCi1kb19pbnN0YWxsKCkgewotCW1lc29uX2RvX2luc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKLQkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgotCWZpCi0KLQkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCi0JWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKLQlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKLQotCSMgQ3JlYXRlIG1hY2hpbmUtaWQKLQkjIDIwOjEyIDwgbWV6Y2FsZXJvPiBrb2VuOiB5b3UgaGF2ZSB0aHJlZSBvcHRpb25zOiBhKSBydW4gc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIGF0IGluc3RhbGwgdGltZSwgYikgaGF2ZSAvIHJlYWQtb25seSBhbmQgYW4gZW1wdHkgZmlsZSB0aGVyZSAoZm9yIHN0YXRlbGVzcykgYW5kIGMpIGJvb3Qgd2l0aCAvIHdyaXRhYmxlCi0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbWFjaGluZS1pZAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQlmaQotCi0JY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCi0KLQkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgotCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKLQotCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JZmkKLQotCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KLQlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0JIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0Ci0Jc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0KLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAotCWVsc2UKLQkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLQotCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgotCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKLQkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCWZpCi0JZmkKLX0KLQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKLSAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1ndWkgXAotICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKLSAgICAke1BOfS1pbml0cmFtZnMgXAotICAgICR7UE59LWFuYWx5emUgXAotICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKLSAgICAke1BOfS1ycG0tbWFjcm9zIFwKLSAgICAke1BOfS1iaW5mbXQgXAotICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKLSAgICAke1BOfS14b3JnLXhpbml0cmMgXAotICAgICR7UE59LWNvbnRhaW5lciBcCi0gICAgJHtQTn0tZXh0cmEtdXRpbHMgXAotIgotCi1TVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgotREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgc3lzdGVtZC1qb3VybmFsIgotVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCi0KLUZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKLQotRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgotUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgotCi1GSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKLQotRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKLUZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCi0KLUZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgotCi1GSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAotICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCi1SUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKLQotUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCi0KLUZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKLSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKLQotRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKLSAgICAgICAgICAgICAgICAvY2dyb3VwIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAotICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCi1SREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCi0gICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKLSAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCi0gICAgICAgICAgICAgICIKLQotRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLSMgVE9ETzoKLSMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLXBrZ19wcmVybV8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKLQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLQkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAotCQkJLS1yb290ICRECi0JCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotCWVsc2UKLQkJdWRldmFkbSBod2RiIC0tdXBkYXRlCi0JZmkKLX0KLQotcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7Ci0Jcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGJlYWFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM5LmJiCkBAIC0wLDAgKzEsNjA2IEBACityZXF1aXJlIHN5c3RlbWQuaW5jCisKK1BST1ZJREVTID0gInVkZXYiCisKK1BFID0gIjEiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KKyMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy1pZi1uc3Mtc3lzdGVtZC1pcy1ub3QtZW5hYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvZ2luLXVzZS1wYXJzZV91aWQtd2hlbi11bm1vdW50aW5nLXVzZXItcnVudGltZS1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zZC1idXMtbWFrZS1CVVNfREVGQVVMVF9USU1FT1VULWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWJ1aWxkLXN5cy1EZXRlY3Qtd2hldGhlci1zdHJ1Y3Qtc3RhdHgtaXMtZGVmaW5lZC1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1yZXNvbHZjb25mLWZpeGVzLWZvci10aGUtY29tcGF0aWJpbGl0eS1pbnRlcmZhY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb3JlLXdoZW4tZGVzZXJpYWxpemluZy1zdGF0ZS1hbHdheXMtdXNlLXJlYWRfbGluZS1MLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2hvd24tcmVjdXJzaXZlLWxldC1zLXJld29yay10aGUtcmVjdXJzaXZlLWxvZ2ljLXRvLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRoY3A2LW1ha2Utc3VyZS13ZS1oYXZlLWVub3VnaC1zcGFjZS1mb3ItdGhlLURIQ1A2LW8ucGF0Y2ggXAorICAgICAgICAgICAiCisKKyMgcGF0Y2hlcyBtYWRlIGZvciBtdXNsIGFyZSBvbmx5IGFwcGxpZWQgb24gVENMSUJDIGlzIG11c2wKK1NSQ19VUkkgKz0gIiR7U1JDX1VSSV9NVVNMfSIKK1NSQ19VUklfTVVTTCA9ICJmaWxlOi8vMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDUtaW5jbHVkZS1nc2hhZG93LW9ubHktaWYtRU5BQkxFX0dTSEFET1ctaXMtMS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDktYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTAtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTEtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxMi1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDEzLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNC1maXgtbWlzc2luZy1VTE9OR19MT05HX01BWC1kZWZpbml0aW9uLWluLWNhc2Utb2YtbXVzLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE1LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE2LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTctZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE4LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTktRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyMC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBcCisgICAgICAgICAgICAgICAiCisKKyMgV29ya2Fyb3VuZCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3N0YWNrX2Noa19mYWlsX2xvY2FsJyBvbiBxZW11eDg2IGFuZCBxZW11cHBjIGZvciBtdXNsCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2xfcWVtdXg4NiA9ICIgZmlsZTovLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbF9xZW11cHBjID0gIiBmaWxlOi8vMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIgorCitQQU1fUExVR0lOUyA9ICIgXAorICAgIHBhbS1wbHVnaW4tdW5peCBcCisgICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCisgICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCisgICAgYWNsIFwKKyAgICBiYWNrbGlnaHQgXAorICAgIGJpbmZtdCBcCisgICAgZmlyc3Rib290IFwKKyAgICBnc2hhZG93IFwKKyAgICBoaWJlcm5hdGUgXAorICAgIGhvc3RuYW1lZCBcCisgICAgaW1hIFwKKyAgICBrbW9kIFwKKyAgICBsb2NhbGVkIFwKKyAgICBsb2dpbmQgXAorICAgIG1hY2hpbmVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuZXR3b3JrZCBcCisgICAgbnNzIFwKKyAgICBwb2xraXQgXAorICAgIHF1b3RhY2hlY2sgXAorICAgIHJhbmRvbXNlZWQgXAorICAgIHJlc29sdmVkIFwKKyAgICBzbWFjayBcCisgICAgc3lzdXNlcnMgXAorICAgIHRpbWVkYXRlZCBcCisgICAgdGltZXN5bmNkIFwKKyAgICB1dG1wIFwKKyAgICB2Y29uc29sZSBcCisgICAgeHogXAorIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKKyAgICBnc2hhZG93IFwKKyAgICBsb2NhbGVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuc3MgXAorICAgIHJlc29sdmVkIFwKKyAgICBzZWxpbnV4IFwKKyAgICBzbWFjayBcCisgICAgc3lzdXNlcnMgXAorICAgIHV0bXAgXAorIgorCisjIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KKyMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYworIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLURhY2w9dHJ1ZSwtRGFjbD1mYWxzZSxhY2wiCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi1EZWxmdXRpbHM9dHJ1ZSwtRGVsZnV0aWxzPWZhbHNlLGVsZnV0aWxzIgorUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi1EZmlyc3Rib290PXRydWUsLURmaXJzdGJvb3Q9ZmFsc2UiCisjIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLURnY3J5cHQ9dHJ1ZSwtRGdjcnlwdD1mYWxzZSxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW2dzaGFkb3ddID0gIi1EZ3NoYWRvdz10cnVlLC1EZ3NoYWRvdz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaGliZXJuYXRlXSA9ICItRGhpYmVybmF0ZT10cnVlLC1EaGliZXJuYXRlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi1EaG9zdG5hbWVkPXRydWUsLURob3N0bmFtZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ltYV0gPSAiLURpbWE9dHJ1ZSwtRGltYT1mYWxzZSIKKyMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0CitQQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi1EaW1wb3J0ZD10cnVlLC1EaW1wb3J0ZD1mYWxzZSIKKyMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcworUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItRGxpYmlwdGM9dHJ1ZSwtRGxpYmlwdGM9ZmFsc2UsaXB0YWJsZXMiCitQQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItRGxpYmN1cmw9dHJ1ZSwtRGxpYmN1cmw9ZmFsc2UsY3VybCIKK1BBQ0tBR0VDT05GSUdba21vZF0gPSAiLURrbW9kPXRydWUsLURrbW9kPWZhbHNlLGttb2QiCitQQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRGxpYmlkbj10cnVlLC1EbGliaWRuPWZhbHNlLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbXlob3N0bmFtZT10cnVlLC1EbXlob3N0bmFtZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi1EcG9sa2l0PXRydWUsLURwb2xraXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3BvcnRhYmxlZF0gPSAiLURwb3J0YWJsZWQ9dHJ1ZSwtRHBvcnRhYmxlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi1EcXJlbmNvZGU9dHJ1ZSwtRHFyZW5jb2RlPWZhbHNlLHFyZW5jb2RlIgorUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItRHF1b3RhY2hlY2s9dHJ1ZSwtRHF1b3RhY2hlY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi1EcmFuZG9tc2VlZD10cnVlLC1EcmFuZG9tc2VlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi1EcmVzb2x2ZT10cnVlLC1EcmVzb2x2ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItRHJma2lsbD10cnVlLC1EcmZraWxsPWZhbHNlIgorIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKK1BBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLURzZWNjb21wPXRydWUsLURzZWNjb21wPWZhbHNlLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi1Ec2VsaW51eD10cnVlLC1Ec2VsaW51eD1mYWxzZSxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCitQQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItRHNtYWNrPXRydWUsLURzbWFjaz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbc3lzdXNlcnNdID0gIi1Ec3lzdXNlcnM9dHJ1ZSwtRHN5c3VzZXJzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0aW1lLWVwb2NoXSA9ICItRHRpbWUtZXBvY2g9MCwsIgorUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi1EdGltZWRhdGVkPXRydWUsLUR0aW1lZGF0ZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLUR0aW1lc3luY2Q9dHJ1ZSwtRHRpbWVzeW5jZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdXNybWVyZ2VdID0gIi1Ec3BsaXQtdXNyPWZhbHNlLC1Ec3BsaXQtdXNyPXRydWUiCitQQUNLQUdFQ09ORklHW3NiaW5tZXJnZV0gPSAiLURzcGxpdC1iaW49ZmFsc2UsLURzcGxpdC1iaW49dHJ1ZSIKK1BBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLUR1dG1wPXRydWUsLUR1dG1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLURWQUxHUklORD0xLCx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbdmNvbnNvbGVdID0gIi1EdmNvbnNvbGU9dHJ1ZSwtRHZjb25zb2xlPWZhbHNlLCwke1BOfS12Y29uc29sZS1zZXR1cCIKKyMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQorUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi1EeGtiY29tbW9uPXRydWUsLUR4a2Jjb21tb249ZmFsc2UsbGlieGtiY29tbW9uIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLUR4ej10cnVlLC1EeHo9ZmFsc2UseHoiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi1EemxpYj10cnVlLC1EemxpYj1mYWxzZSx6bGliIgorCisjIEhlbHBlciB2YXJpYWJsZXMgdG8gY2xhcmlmeSBsb2NhdGlvbnMuICBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHN5c3RlbWQncworIyBidWlsZCBzeXN0ZW0uCityb290cHJlZml4ID89ICIke3Jvb3RfcHJlZml4fSIKK3Jvb3RsaWJkaXIgPz0gIiR7YmFzZV9saWJkaXJ9Igorcm9vdGxpYmV4ZWNkaXIgPSAiJHtyb290cHJlZml4fS9saWIiCisKKyMgVGhpcyBsaW5rcyB1ZGV2IHN0YXRpY2FsbHkgd2l0aCBzeXN0ZW1kIGhlbHBlciBsaWJyYXJ5LgorIyBPdGhlcndpc2UgdWRldiBwYWNrYWdlIHdvdWxkIGRlcGVuZCBvbiBzeXN0ZW1kIHBhY2thZ2UgKHdoaWNoIGhhcyB0aGUgbmVlZGVkIHNoYXJlZCBsaWJyYXJ5KSwKKyMgYW5kIGFsd2F5cyBwdWxsIGl0IGludG8gaW1hZ2VzLgorRVhUUkFfT0VNRVNPTiArPSAiLURsaW5rLXVkZXYtc2hhcmVkPWZhbHNlIgorCitFWFRSQV9PRU1FU09OICs9ICItRG5vYm9keS11c2VyPW5vYm9keSBcCisgICAgICAgICAgICAgICAgICAtRG5vYm9keS1ncm91cD1ub2JvZHkgXAorICAgICAgICAgICAgICAgICAgLURyb290aG9tZWRpcj0ke1JPT1RfSE9NRX0gXAorICAgICAgICAgICAgICAgICAgLURyb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURyb290cHJlZml4PSR7cm9vdHByZWZpeH0gXAorICAgICAgICAgICAgICAgICAgLURzeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgICAgIgorCisjIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgdXNpbmcgcGF0aHMgZnJvbSBzeXNyb290CitFWFRSQV9PRU1FU09OICs9ICItRGtleGVjLXBhdGg9JHtzYmluZGlyfS9rZXhlYyBcCisgICAgICAgICAgICAgICAgICAtRGtpbGwtcGF0aD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKKyAgICAgICAgICAgICAgICAgIC1Ea21vZC1wYXRoPSR7YmFzZV9iaW5kaXJ9L2ttb2QgXAorICAgICAgICAgICAgICAgICAgLURtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKKyAgICAgICAgICAgICAgICAgIC1EcXVvdGFjaGVjay1wYXRoPSR7c2JpbmRpcn0vcXVvdGFjaGVjayBcCisgICAgICAgICAgICAgICAgICAtRHF1b3Rhb24tcGF0aD0ke3NiaW5kaXJ9L3F1b3Rhb24gXAorICAgICAgICAgICAgICAgICAgLURzdWxvZ2luLXBhdGg9JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAorICAgICAgICAgICAgICAgICAgLUR1bW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS91bW91bnQiCisKK2RvX2luc3RhbGwoKSB7CisJbWVzb25fZG9faW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJIyBQcm92aWRlZCBieSBhIHNlcGFyYXRlIHJlY2lwZQorCQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zZXJpYWwtZ2V0dHkqIC1mCisJZmkKKworCSMgUHJvdmlkZSBzdXBwb3J0IGZvciBpbml0cmFtZnMKKwlbICEgLWUgJHtEfS9pbml0IF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kICR7RH0vaW5pdAorCVsgISAtZSAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwlmaQorCisJY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCisKKwkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgorCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKKworCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJZmkKKworCSMgdGhpcyBmaWxlIGlzIG5lZWRlZCB0byBleGlzdCBpZiBuZXR3b3JrZCBpcyBkaXNhYmxlZCBidXQgdGltZXN5bmNkIGlzIHN0aWxsIGluIHVzZSBzaW5jZSB0aW1lc3luY2QgY2hlY2tzIGl0CisJIyBmb3IgZXhpc3RlbmNlIGVsc2UgaXQgZmFpbHMKKwlpZiBbIC1zICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYgXTsgdGhlbgorCQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICc6JywgJ3NlZCAtaSAtZSAiXCRhZCAvcnVuL3N5c3RlbWQvbmV0aWYvbGlua3MgMDc1NSByb290IHJvb3QgLSIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZicsIGQpfQorCWZpCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWVjaG8gJ0whICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQllY2hvICdkIC9ydW4vc3lzdGVtZC9yZXNvbHZlIDA3NTUgcm9vdCByb290IC0nID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQllY2hvICdmIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZWxzZQorCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWZpCisJaW5zdGFsbCAtRG0gMDc1NSAke1N9L3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLXN5c3YtaW5zdGFsbAorCisJIyBJZiBwb2xraXQgaXMgc2V0dXAgZml4dXAgcGVybWlzc2lvbnMgYW5kIG93bmVyc2hpcAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWlmIFsgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZCBdOyB0aGVuCisJCQljaG1vZCA3MDAgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQkJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJZmkKKwlmaQorCisJIyBjb25mIGZpbGVzIGFyZSBoYW5kbGVkIGJ5IHN5c3RlbWQtY29uZgorCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mCisJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZgorCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mCisKKwkjIGR1cGxpY2F0ZSB1ZGV2YWRtIGZvciBwb3N0aW5zdCBzY3JpcHQKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9CisJbG4gJHtEfSR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtCit9CisKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCl7CisgICAgc3lzdGVtZGxpYmRpciA9IGQuZ2V0VmFyKCJyb290bGliZGlyIikKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXN0ZW1kbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ1N5c3RlbWQgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CitQQUNLQUdFU19EWU5BTUlDICs9ICJebGliKHVkZXZ8c3lzdGVtZHxuc3MpLioiCisKK1BBQ0tBR0VTID0rICJcCisgICAgJHtQTn0tZ3VpIFwKKyAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCisgICAgJHtQTn0taW5pdHJhbWZzIFwKKyAgICAke1BOfS1hbmFseXplIFwKKyAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCisgICAgJHtQTn0tcnBtLW1hY3JvcyBcCisgICAgJHtQTn0tYmluZm10IFwKKyAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCisgICAgJHtQTn0teG9yZy14aW5pdHJjIFwKKyAgICAke1BOfS1jb250YWluZXIgXAorICAgICR7UE59LWV4dHJhLXV0aWxzIFwKKyIKKworU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKK0RFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMiCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXk7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQ7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgLS1ob21lLWRpciAke3N5c2NvbmZkaXJ9L3BvbGtpdC0xIHBvbGtpdGQ7JywgJycsIGQpfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHN5c3RlbWQtam91cm5hbCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgKz0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHk7IgorCitGSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCisKK0ZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKK1JERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKKworRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCisKK0ZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCitGSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0teG9yZy14aW5pdHJjID0gIiR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIgorCitGSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKKworRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAorICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCisKK1JSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgorCitGSUxFU18ke1BOfS1jb250YWluZXIgPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmUuc2xpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1pbXBvcnRkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1tYWNoaW5lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMtb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydGQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1yZW1vdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXVwbG9hZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcHVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC1uc3Bhd24uY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW5zcGF3bkAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19teW1hY2hpbmVzLnNvLjIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCisiCisKK0ZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24gXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9oYWx0IFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3RlbGluaXQgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9yZXNvbHZjb25mIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVib290IFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaW5pdCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZmFjdG9yeSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVzb2x2ZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9lbnZpcm9ubWVudC5kIFwKKyAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kcHJvYmUuZC9zeXN0ZW1kLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lZGF0ZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm5ldHdvcmsxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5yZXNvbHZlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmhvc3RuYW1lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9naW4xLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lc3luYzEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnBvcnRhYmxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhICR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMvICR7c3lzY29uZmRpcn0vcnBtL21hY3Jvcy5zeXN0ZW1kIgorCitSREVQRU5EU18ke1BOfSArPSAia21vZCBkYnVzIHV0aWwtbGludXgtbW91bnQgdWRldiAoPSAke0VYVEVORFBLR1Z9KSB1dGlsLWxpbnV4LWFnZXR0eSB1dGlsLWxpbnV4LWZzY2siCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCBzeXN0ZW1kLWNvbmYiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbXBhdC11bml0cyB1ZGV2LWh3ZGIgXAorICAgICAgICAgICAgICAgICAgICAgIGUyZnNwcm9ncy1lMmZzY2sgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKKyAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgorCitSUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgorCitSREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCisKK0ZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCisgICAgICAgICAgICAgICIKKworRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCitJTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgorSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Jlc29sdi1jb25mXSA/PSAiNTAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCitBTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF91ZGV2LWh3ZGIgKCkgeworCWlmIHRlc3QgLW4gIiREIjsgdGhlbgorCQkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3VkZXZfaHdkYiAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9CisJZWxzZQorCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKwlmaQorfQorCitwa2dfcHJlcm1fdWRldi1od2RiICgpIHsKKwlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC0yLjg4ZHNmLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtMi44OGRzZi8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU3NWI1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtMi44OGRzZi8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorRnJvbSAyOWM3YTUyOWQzYmIwYzFlMjAyMzlmODg1ZTc0YzUwMzZmMWE5MDhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNiBBdWcgMjAxOCAxNTozODo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IgZGVmaW5lcyBpbiBnbGliYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvYm9vdGxvZ2QuYyB8ICAgMyArKysKKyBzcmMvYm9vdGxvZ2QubyB8IEJpbiA1ODQ0OCAtPiA2MDM3NiBieXRlcworIHNyYy9kb3dhbGwuYyAgIHwgICAzICsrKworIHNyYy9zaHV0ZG93bi5jIHwgICA0ICsrKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvYm9vdGxvZ2QuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvYm9vdGxvZ2QuYworKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL2Jvb3Rsb2dkLmMKK0BAIC01Myw2ICs1Myw5IEBACisgI2lmZGVmIF9fbGludXhfXworICNpbmNsdWRlIDxzeXMvbW91bnQuaD4KKyAjZW5kaWYKKysjaWZkZWYgX19HTElCQ19fCisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKysjZW5kaWYKKyAKKyBjaGFyICpWZXJzaW9uID0gIkAoIykgYm9vdGxvZ2QgMi44NiAwMy1KdW4tMjAwNCBtaXF1ZWxzQGNpc3Ryb24ubmwiOworIAorSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL2Rvd2FsbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9kb3dhbGwuYworKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL2Rvd2FsbC5jCitAQCAtMzcsNiArMzcsOSBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8c2V0am1wLmg+CisgI2luY2x1ZGUgPHBhdGhzLmg+CisrI2lmZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisgCisgI2lmbmRlZiBfUEFUSF9ERVYKKyAjIGRlZmluZSBfUEFUSF9ERVYJIi9kZXYvIgorSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL3NodXRkb3duLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL3NodXRkb3duLmMKKysrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9zaHV0ZG93bi5jCitAQCAtNTcsNyArNTcsOSBAQAorICNpbmNsdWRlICJyZWJvb3QuaCIKKyAjaW5jbHVkZSAiaW5pdHJlcS5oIgorICNpbmNsdWRlICJpbml0LmgiCistCisrI2lmZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisgCisgY2hhciAqVmVyc2lvbiA9ICJAKCMpIHNodXRkb3duIDIuODYtMSAzMS1KdWwtMjAwNCBtaXF1ZWxzQGNpc3Ryb24ubmwiOworIAorSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL21vdW50cG9pbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvbW91bnRwb2ludC5jCisrKysgc3lzdmluaXQtMi44OGRzZi9zcmMvbW91bnRwb2ludC5jCitAQCAtMzIsNiArMzIsOSBAQAorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8Z2V0b3B0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2lmZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisgCisgaW50IGRvc3RhdChjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCBkb19sc3RhdCwgaW50IHF1aWV0KQorIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgppbmRleCA4OWIxYjY5Li5iZmMxMjgzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCkBAIC0xNSw2ICsxNSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1UaGlzLWZpeGVzLWFuLWlzc3VlLXRoYXQtY2xhbmctcmVwb3J0cy1hYm91dC1tdXRsaXBsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3JlYWxwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9yY1MtZGVmYXVsdCBcCiAgICAgICAgICAgIGZpbGU6Ly9yYyBcCiAgICAgICAgICAgIGZpbGU6Ly9yY1MgXApAQCAtMjksNyArMzAsNyBAQAogQiA9ICIke1N9L3NyYyIKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotREVQRU5EU19hcHBlbmQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKK0RFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUgYmFzZS1wYXNzd2QgdmlydHVhbC9jcnlwdCIKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3Zpbml0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIKaW5kZXggODhhZDhmMS4uNTkyZGQ4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuNS5iYgpAQCAtMzAsNiArMzAsNyBAQAogRVhUUkFfT0VDT05GID0gIiBcCiAgICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCiAgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgIC0td2l0aC1yb290bGliZXhlY2Rpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgXAogICAgIC0td2l0aC1yb290cHJlZml4PSBcCiAiCiAKQEAgLTQ5LDYgKzUwLDEwIEBACiAKIAkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5CiAJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQorCisJIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0CisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KIH0KIAogZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CkBAIC02NCw3ICs2OSw3IEBACiBQQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKIAogCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgogRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAogICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCkBAIC04MCw4ICs4NSw3IEBACiBQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgogcGtnX3Bvc3RpbnN0X2V1ZGV2LWh3ZGIgKCkgewogICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgotICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgLS1yb290ICRECi0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorICAgICAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3VkZXZfaHdkYiAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9CiAgICAgZWxzZQogICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mL21vdW50LnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mL21vdW50LnNoCmluZGV4IGQ3NjAzMjguLjNlZTY3YjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZi9tb3VudC5zaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmYvbW91bnQuc2gKQEAgLTQsMTAgKzQsMjggQEAKICMKICMgQXR0ZW1wdCB0byBtb3VudCBhbnkgYWRkZWQgYmxvY2sgZGV2aWNlcyBhbmQgdW1vdW50IGFueSByZW1vdmVkIGRldmljZXMKIAorQkFTRV9JTklUPSJgcmVhZGxpbmsgLWYgIkBiYXNlX3NiaW5kaXJAL2luaXQiYCIKK0lOSVRfU1lTVEVNRD0iQHN5c3RlbWRfdW5pdGRpckAvc3lzdGVtZCIKIAotTU9VTlQ9Ii9iaW4vbW91bnQiCitpZiBbICJ4JEJBU0VfSU5JVCIgPSAieCRJTklUX1NZU1RFTUQiIF07dGhlbgorICAgICMgc3lzdGVtZCBhcyBpbml0IHVzZXMgc3lzdGVtZC1tb3VudCB0byBtb3VudCBibG9jayBkZXZpY2VzCisgICAgTU9VTlQ9Ii91c3IvYmluL3N5c3RlbWQtbW91bnQiCisgICAgVU1PVU5UPSIvdXNyL2Jpbi9zeXN0ZW1kLXVtb3VudCIKKworICAgIGlmIFsgLXggJE1PVU5UIF0gJiYgWyAteCAkVU1PVU5UIF07CisgICAgdGhlbgorICAgICAgICBsb2dnZXIgIlVzaW5nIHN5c3RlbWQtbW91bnQgdG8gZmluaXNoIG1vdW50IgorICAgIGVsc2UKKyAgICAgICAgbG9nZ2VyICJMaW51eCBpbml0IGlzIHVzaW5nIHN5c3RlbWQsIHNvIHBsZWFzZSBpbnN0YWxsIHN5c3RlbWQtbW91bnQgdG8gZmluaXNoIG1vdW50IgorICAgICAgICBleGl0IDEKKyAgICBmaQorZWxzZQorICAgIE1PVU5UPSIvYmluL21vdW50IgorICAgIFVNT1VOVD0iL2Jpbi91bW91bnQiCitmaQorCiBQTU9VTlQ9Ii91c3IvYmluL3Btb3VudCIKLVVNT1VOVD0iL2Jpbi91bW91bnQiCisKIGZvciBsaW5lIGluIGBncmVwIC1oIC12IF4jIC9ldGMvdWRldi9tb3VudC5ibGFja2xpc3QgL2V0Yy91ZGV2L21vdW50LmJsYWNrbGlzdC5kLypgCiBkbwogCWlmIFsgYCBleHByIG1hdGNoICIkREVWTkFNRSIgIiRsaW5lIiBgIC1ndCAwIF07CkBAIC0xNywxNiArMzUsNjMgQEAKIAlmaQogZG9uZQogCi1hdXRvbW91bnQoKSB7CQorYXV0b21vdW50X3N5c3RlbWQoKSB7CisgICAgbmFtZT0iYGJhc2VuYW1lICIkREVWTkFNRSJgIgorCisgICAgIyBTa2lwIHRoZSBwYXJ0aXRpb24gd2hpY2ggYXJlIGFscmVhZHkgaW4gL2V0Yy9mc3RhYgorICAgIGdyZXAgIl5bWzpzcGFjZTpdXSokREVWTkFNRSIgL2V0Yy9mc3RhYiAmJiByZXR1cm4KKyAgICBmb3IgbiBpbiBMQUJFTCBQQVJUTEFCRUwgVVVJRCBQQVJUVVVJRDsgZG8KKyAgICAgICAgdG1wPSIkKGxzYmxrIC1vICRuICRERVZOQU1FIHwgc2VkIC1lICcxZCcpIgorICAgICAgICB0ZXN0IC16ICIkdG1wIiAmJiBjb250aW51ZQorICAgICAgICB0bXA9IiRuPSR0bXAiCisgICAgICAgIGdyZXAgIl5bWzpzcGFjZTpdXSokdG1wIiAvZXRjL2ZzdGFiICYmIHJldHVybgorICAgIGRvbmUKKworICAgIFsgLWQgIi9ydW4vbWVkaWEvJG5hbWUiIF0gfHwgbWtkaXIgLXAgIi9ydW4vbWVkaWEvJG5hbWUiCisKKyAgICBNT1VOVD0iJE1PVU5UIC1vIHNpbGVudCIKKworICAgICMgSWYgZmlsZXN5c3RlbXR5cGUgaXMgdmZhdCwgY2hhbmdlIHRoZSBvd25lcnNoaXAgZ3JvdXAgdG8gJ2Rpc2snLCBhbmQKKyAgICAjIGdyYW50IGl0IHdpdGggIHcvci94IHBlcm1pc3Npb25zLgorICAgIGNhc2UgJElEX0ZTX1RZUEUgaW4KKyAgICB2ZmF0fGZhdCkKKyAgICAgICAgTU9VTlQ9IiRNT1VOVCAtbyB1bWFzaz0wMDcsZ2lkPWBhd2sgLUYnOicgJy9eZGlzay97cHJpbnQgJDN9JyAvZXRjL2dyb3VwYCIKKyAgICAgICAgOzsKKyAgICAjIFRPRE8KKyAgICAqKQorICAgICAgICA7OworICAgIGVzYWMKKworICAgIGlmICEgJE1PVU5UIC0tbm8tYmxvY2sgLXQgYXV0byAkREVWTkFNRSAiL3J1bi9tZWRpYS8kbmFtZSIKKyAgICB0aGVuCisgICAgICAgICNsb2dnZXIgIm1vdW50LnNoL2F1dG9tb3VudCIgIiRNT1VOVCAtdCBhdXRvICRERVZOQU1FIFwiL3J1bi9tZWRpYS8kbmFtZVwiIGZhaWxlZCEiCisgICAgICAgIHJtX2RpciAiL3J1bi9tZWRpYS8kbmFtZSIKKyAgICBlbHNlCisgICAgICAgIGxvZ2dlciAibW91bnQuc2gvYXV0b21vdW50IiAiQXV0by1tb3VudCBvZiBbL3J1bi9tZWRpYS8kbmFtZV0gc3VjY2Vzc2Z1bCIKKyAgICAgICAgdG91Y2ggIi90bXAvLmF1dG9tb3VudC0kbmFtZSIKKyAgICBmaQorfQorCithdXRvbW91bnQoKSB7CiAJbmFtZT0iYGJhc2VuYW1lICIkREVWTkFNRSJgIgogCisJaWYgWyAteCAiJFBNT1VOVCIgXTsgdGhlbgorCQkkUE1PVU5UICRERVZOQU1FIDI+IC9kZXYvbnVsbAorCWVsaWYgWyAteCAkTU9VTlQgXTsgdGhlbgorCQkkTU9VTlQgJERFVk5BTUUgMj4gL2Rldi9udWxsCisJZmkKKworCSMgSWYgdGhlIGRldmljZSBpc24ndCBtb3VudGVkIGF0IHRoaXMgcG9pbnQsIGl0IGlzbid0CisJIyBjb25maWd1cmVkIGluIGZzdGFiCisJZ3JlcCAtcSAiXiRERVZOQU1FICIgL3Byb2MvbW91bnRzICYmIHJldHVybgorCiAJISB0ZXN0IC1kICIvcnVuL21lZGlhLyRuYW1lIiAmJiBta2RpciAtcCAiL3J1bi9tZWRpYS8kbmFtZSIKIAkjIFNpbGVudCB1dGlsLWxpbnV4J3MgdmVyc2lvbiBvZiBtb3VudGluZyBhdXRvCiAJaWYgWyAieGByZWFkbGluayAkTU9VTlRgIiA9ICJ4L2Jpbi9tb3VudC51dGlsLWxpbnV4IiBdIDsKIAl0aGVuCiAJCU1PVU5UPSIkTU9VTlQgLW8gc2lsZW50IgogCWZpCi0JCisKIAkjIElmIGZpbGVzeXN0ZW0gdHlwZSBpcyB2ZmF0LCBjaGFuZ2UgdGhlIG93bmVyc2hpcCBncm91cCB0byAnZGlzaycsIGFuZAogCSMgZ3JhbnQgaXQgd2l0aCAgdy9yL3ggcGVybWlzc2lvbnMuCiAJY2FzZSAkSURfRlNfVFlQRSBpbgpAQCAtNjMsMjggKzEyOCwyNCBAQAogWyAtZSAvc3lzL2Jsb2NrLyRuYW1lL2RldmljZS9tZWRpYSBdICYmIG1lZGlhX3R5cGU9YGNhdCAvc3lzL2Jsb2NrLyRuYW1lL2RldmljZS9tZWRpYWAKIAogaWYgWyAiJEFDVElPTiIgPSAiYWRkIiBdICYmIFsgLW4gIiRERVZOQU1FIiBdICYmIFsgLW4gIiRJRF9GU19UWVBFIiAtbyAiJG1lZGlhX3R5cGUiID0gImNkcm9tIiBdOyB0aGVuCi0JaWYgWyAteCAiJFBNT1VOVCIgXTsgdGhlbgotCQkkUE1PVU5UICRERVZOQU1FIDI+IC9kZXYvbnVsbAotCWVsaWYgWyAteCAkTU9VTlQgXTsgdGhlbgotICAgIAkJJE1PVU5UICRERVZOQU1FIDI+IC9kZXYvbnVsbAotCWZpCi0JCi0JIyBJZiB0aGUgZGV2aWNlIGlzbid0IG1vdW50ZWQgYXQgdGhpcyBwb2ludCwgaXQgaXNuJ3QKLQkjIGNvbmZpZ3VyZWQgaW4gZnN0YWIgKG5vdGUgdGhlIHJvb3QgZmlsZXN5c3RlbSBjYW4gc2hvdyB1cCBhcwotCSMgL2Rldi9yb290IGluIC9wcm9jL21vdW50cywgc28gY2hlY2sgdGhlIGRldmljZSBudW1iZXIgdG9vKQotCWlmIGV4cHIgJE1BSk9SICIqIiAyNTYgKyAkTUlOT1IgIT0gYHN0YXQgLWMgJWQgL2A7IHRoZW4KLQkJZ3JlcCAtcSAiXiRERVZOQU1FICIgL3Byb2MvbW91bnRzIHx8IGF1dG9tb3VudAotCWZpCisgICAgIyBOb3RlIHRoZSByb290IGZpbGVzeXN0ZW0gY2FuIHNob3cgdXAgYXMgL2Rldi9yb290IGluIC9wcm9jL21vdW50cywKKyAgICAjIHNvIGNoZWNrIHRoZSBkZXZpY2UgbnVtYmVyIHRvbworICAgIGlmIGV4cHIgJE1BSk9SICIqIiAyNTYgKyAkTUlOT1IgIT0gYHN0YXQgLWMgJWQgL2A7IHRoZW4KKyAgICAgICAgaWYgWyAiYGJhc2VuYW1lICRNT1VOVGAiID0gInN5c3RlbWQtbW91bnQiIF07dGhlbgorICAgICAgICAgICAgYXV0b21vdW50X3N5c3RlbWQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXV0b21vdW50CisgICAgICAgIGZpCisgICAgZmkKIGZpCiAKLQogaWYgWyAiJEFDVElPTiIgPSAicmVtb3ZlIiBdIHx8IFsgIiRBQ1RJT04iID0gImNoYW5nZSIgXSAmJiBbIC14ICIkVU1PVU5UIiBdICYmIFsgLW4gIiRERVZOQU1FIiBdOyB0aGVuCi0JZm9yIG1udCBpbiBgY2F0IC9wcm9jL21vdW50cyB8IGdyZXAgIiRERVZOQU1FIiB8IGN1dCAtZiAyIC1kICIgIiBgCi0JZG8KLQkJJFVNT1VOVCAkbW50Ci0JZG9uZQotCQotCSMgUmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVzIGZyb20gYXV0by1tb3VudGVyCi0JbmFtZT0iYGJhc2VuYW1lICIkREVWTkFNRSJgIgotCXRlc3QgLWUgIi90bXAvLmF1dG9tb3VudC0kbmFtZSIgJiYgcm1fZGlyICIvcnVuL21lZGlhLyRuYW1lIgorICAgIGZvciBtbnQgaW4gYGNhdCAvcHJvYy9tb3VudHMgfCBncmVwICIkREVWTkFNRSIgfCBjdXQgLWYgMiAtZCAiICIgYAorICAgIGRvCisgICAgICAgICRVTU9VTlQgJG1udAorICAgIGRvbmUKKworICAgICMgUmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVzIGZyb20gYXV0by1tb3VudGVyCisgICAgbmFtZT0iYGJhc2VuYW1lICIkREVWTkFNRSJgIgorICAgIHRlc3QgLWUgIi90bXAvLmF1dG9tb3VudC0kbmFtZSIgJiYgcm1fZGlyICIvcnVuL21lZGlhLyRuYW1lIgogZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmZfMS4xLmJiCmluZGV4IDQzYTFjZmYuLjkwZjkzM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYgpAQCAtMjksNiArMjksOSBAQAogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9zY3JpcHRzLwogCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbW91bnQuc2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9zY3JpcHRzL21vdW50LnNoCisgICAgc2VkIC1pICdzfEBzeXN0ZW1kX3VuaXRkaXJAfCR7c3lzdGVtZF91bml0ZGlyfXxnJyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3NjcmlwdHMvbW91bnQuc2gKKyAgICBzZWQgLWkgJ3N8QGJhc2Vfc2JpbmRpckB8JHtiYXNlX3NiaW5kaXJ9fGcnICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvc2NyaXB0cy9tb3VudC5zaAorCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmV0d29yay5zaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3NjcmlwdHMKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9hZGQtdmVyYm9zZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQvYWRkLXZlcmJvc2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNDQzZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9hZGQtdmVyYm9zZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0gdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQub3JnCTIwMDUtMDEtMDMgMDA6MzA6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQJMjAwNy0xMi0wMSAxOTo0MTowOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xOSw2ICsxOSw3IEBACi0gbm90cmVhbGx5PTAKLSBmb3JjZT0wCi0gZG9zdGFydD0wCi0rdmVyYm9zZT0wCi0gCi0gdXNhZ2UoKQotIHsKLUBAIC0yOCw2ICsyOSw3IEBACi0gICAgICAgIHVwZGF0ZS1yYy5kIFstbl0gWy1yIDxyb290Pl0gWy1zXSA8YmFzZW5hbWU+IHN0YXJ0fHN0b3AgTk4gcnVubHZsIFtydW5sdmxdIFsuLi5dIC4KLSAJCS1uOiBub3QgcmVhbGx5Ci0gCQktZjogZm9yY2UKLSsJCS12OiB2ZXJib3NlCi0gCQktcjogYWx0ZXJuYXRlIHJvb3QgcGF0aCAoZGVmYXVsdCBpcyAvKQotIAkJLXM6IGludm9rZSBzdGFydCBtZXRob2RzIGlmIGFwcHJvcHJpYXRlIHRvIGN1cnJlbnQgcnVubGV2ZWwKLSBFT0YKLUBAIC02OSw3ICs3MSw3IEBACi0gCWxldj1gZWNobyAkMiB8IGN1dCAtZC8gLWYxYAotIAlubj1gZWNobyAkMiB8IGN1dCAtZC8gLWYyYAotIAlmbj0iJHtldGNkfSR7bGV2fS5kLyR7c3RhcnRzdG9wfSR7bm59JHtibn0iCi0tCWVjaG8gIiAgJGZuIC0+IC4uL2luaXQuZC8kYm4iCi0rCVsgJHZlcmJvc2UgLWVxIDEgXSAmJiBlY2hvICIgICRmbiAtPiAuLi9pbml0LmQvJGJuIgotIAlpZiBbICRub3RyZWFsbHkgLWVxIDAgXTsgdGhlbgotIAkJbWtkaXIgLXAgYGRpcm5hbWUgJGZuYAotICAJCWxuIC1zIC4uL2luaXQuZC8kYm4gJGZuCi1AQCAtODksNyArOTEsNyBAQAotIAkJZXhpdCAwCi0gCWZpCi0gCi0tCWVjaG8gIiBBZGRpbmcgc3lzdGVtIHN0YXJ0dXAgZm9yICRpbml0ZC8kYm4gLi4uIgotKwllY2hvICIgQWRkaW5nIHN5c3RlbSBzdGFydHVwIGZvciAkaW5pdGQvJGJuLiIKLSAKLSAJZm9yIGkgaW4gJHN0YXJ0bGlua3M7IGRvCi0gCQlkb2xpbmsgUyAkaQotQEAgLTEwNSw2ICsxMDcsMTAgQEAKLSAJCQlzaGlmdAotIAkJCWNvbnRpbnVlCi0gCQkJOzsKLSsJCS12KQl2ZXJib3NlPTEKLSsJCQlzaGlmdAotKwkJCWNvbnRpbnVlCi0rCQkJOzsKLSAJCS1mKQlmb3JjZT0xCi0gCQkJc2hpZnQKLSAJCQljb250aW51ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9jaGVjay1pZi1zeW1saW5rcy1hcmUtdmFsaWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kL2NoZWNrLWlmLXN5bWxpbmtzLWFyZS12YWxpZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc1MTcxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kL2NoZWNrLWlmLXN5bWxpbmtzLWFyZS12YWxpZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUNoZWNrIGlmIHN5bWxpbmtzIGFyZSB2YWxpZAotCi1XaGVuIHVzaW5nIHJvb3Qgb3B0aW9uIGFuZCAkaW5pdGQvJGJuIGlzIGEgc3ltbGluaywgdGhlIHNjcmlwdCB3b3VsZCBmYWlsIGJlY2F1c2UKLXRoZSBzeW1saW5rIHBvaW50cyB0byBhIHBhdGggb24gdGFyZ2V0LiBGb3IgZXhhbXBsZToKLQotL3BhdGgvdG8vdGFyZ2V0L3Jvb3Rmcy9ldGMvaW5pdC5kL3N5c2xvZyAtPiAvZXRjL2luaXQuZC9zeXNsb2cuYnVzeWJveAotCi1IZW5jZSwgWyAtZiAvcGF0aC90by90YXJnZXQvcm9vdGZzL2V0Yy9pbml0LmQvc3lzbG9nIF0gY29uZGl0aW9uIHdvdWxkIHJldHVybgotZmFsc2UuCi0KLVRoaXMgcGF0Y2ggYWRkcyB0aGUgcG9zaWJpbGl0eSB0byBjaGVjayB3aGV0aGVyIHRoZSBmaWxlIHRoZSBzeW1saW5rIHBvaW50cyB0bwotYWN0dWFsbHkgZXhpc3RzIGluIHJvb3RmcyBwYXRoIGFuZCB0aGVuIGNvbnRpbnVlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPiAKLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0KLUluZGV4OiBnaXQvdXBkYXRlLXJjLmQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy91cGRhdGUtcmMuZAotKysrIGdpdC91cGRhdGUtcmMuZAotQEAgLTE0NywxMyArMTQ3LDM0IEBAIGZpCi0gYm49JDEKLSBzaGlmdAotIAotK3NuPSRpbml0ZC8kYm4KLStpZiBbIC1MICIkc24iIC1hIC1uICIkcm9vdCIgXTsgdGhlbgotKwlpZiB3aGljaCByZWFkbGluayA+L2Rldi9udWxsOyB0aGVuCi0rCQl3aGlsZSB0cnVlOyBkbwotKwkJCWxpbmtzbj0iJChyZWFkbGluayAiJHNuIikiCi0rCQkJaWYgWyAteiAiJGxpbmtzbiIgXTsgdGhlbgotKwkJCQlicmVhawotKwkJCWZpCi0rCi0rCQkJc249IiRsaW5rc24iCi0rCQkJY2FzZSAiJHNuIiBpbgotKwkJCQkvKikgc249IiRyb290JHNuIiA7OwotKwkJCQkqKSAgc249IiRpbml0ZC8kc24iIDs7Ci0rCQkJZXNhYwotKwkJZG9uZQotKwllbHNlCi0rCQllY2hvICJ1cGRhdGUtcmMuZDogcmVhZGxpbmsgdG9vbCBub3QgcHJlc2VudCwgY2Fubm90IGNoZWNrIHdoZXRoZXIgXAotKwkJCQkkc24gc3ltbGluayBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLiIgPiYyCi0rCWZpCi0rZmkKLSsKLSBpZiBbICQxICE9ICJyZW1vdmUiIF07IHRoZW4KLS0JaWYgWyAhIC1mICIkaW5pdGQvJGJuIiBdOyB0aGVuCi0rCWlmIFsgISAtZiAiJHNuIiBdOyB0aGVuCi0gCQllY2hvICJ1cGRhdGUtcmMuZDogJGluaXRkLyRibjogZmlsZSBkb2VzIG5vdCBleGlzdCIgPiYyCi0gCQlleGl0IDEKLSAJZmkKLSBlbHNlCi0tCWlmIFsgLWYgIiRpbml0ZC8kYm4iIF07IHRoZW4KLSsJaWYgWyAtZiAiJHNuIiBdOyB0aGVuCi0gCQlpZiBbICRmb3JjZSAtZXEgMSBdOyB0aGVuCi0gCQkJZWNobyAidXBkYXRlLXJjLmQ6ICRpbml0ZC8kYm4gZXhpc3RzIGR1cmluZyByYy5kIHB1cmdlIChjb250aW51aW5nKSIgPiYyCi0gCQllbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kL2ZpeC10by1oYW5kbGUtcHJpb3JpdHktbnVtYmVycy1jb3JyZWN0bHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kL2ZpeC10by1oYW5kbGUtcHJpb3JpdHktbnVtYmVycy1jb3JyZWN0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YmMyMzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCB0byBoYW5kbGUgcHJpb3JpdHkgbnVtYmVycyBjb3JyZWN0bHkuCi1QcmV2aW91c2x5LCBpZiB0aGUgcHJpb3JpdHkgbnVtYmVyIGlzICcwOCcgb3IgJzA5JywgZm9yIGV4YW1wbGUsCi10aGUgc2NyaXB0IGNhbm5vdCBoYW5kbGUgdGhlbSBjb3JyZWN0bHkgYXMgdGhlc2UgbnVtYmVycyBhcmUgdHJlYXRlZAotYXMgb2N0YWwgbnVtYmVycy4KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gdXBkYXRlLXJjLmQgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91cGRhdGUtcmMuZCBiL3VwZGF0ZS1yYy5kCi1pbmRleCBlYzUwZDE1Li5jNzBiODU5IDEwMDY0NAotLS0tIGEvdXBkYXRlLXJjLmQKLSsrKyBiL3VwZGF0ZS1yYy5kCi1AQCAtMjA1LDcgKzIwNSw3IEBAIGNhc2UgJDEgaW4KLSAJCQkJZXhpdCAxCi0gCQkJZmkKLSAJCQlzaGlmdAotLQkJCU5OPWBwcmludGYgJTAyZCAkMWAKLSsJCQlOTj1gcHJpbnRmICUwMmQgJChleHByICQxICsgMClgCi0gCQkJc2hpZnQKLSAJCQl3aGlsZSBbICJ4JDEiICE9ICJ4LiIgXTsgZG8KLSAJCQkJaWYgWyAkIyAtZXEgMCBdOyB0aGVuCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZkNDMxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAibWFuYWdlIHN5bWxpbmtzIGluIC9ldGMvcmNOLmQiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9waGlsYi91cGRhdGUtcmMuZC8iCi1ERVNDUklQVElPTiA9ICJ1cGRhdGUtcmMuZCBpcyBhIHV0aWxpdHkgdGhhdCBhbGxvd3MgdGhlIG1hbmFnZW1lbnQgb2Ygc3ltbGlua3MgdG8gdGhlIGluaXRzY3JpcHRzIGluIHRoZSAvZXRjL3JjTi5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIgotU0VDVElPTiA9ICJiYXNlIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3VwZGF0ZS1yYy5kO2JlZ2lubGluZT01O2VuZGxpbmU9MTU7bWQ1PTE0OGE0ODMyMWIxMGViMzdjMWZhM2VlMDJiOTQwYTc1IgotCi1QUiA9ICJyNSIKLQotIyBSZXZpc2lvbiBjb3JyZXNwb25kaW5nIHRvIHRhZyB1cGRhdGUtcmMuZF8wLjcKLVNSQ1JFViA9ICJlY2E2ODBkZGYyOGQwMjQ5NTQ4OTVmNTlhMjQxYTYyMmRkNTc1YzExIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcGhpbGIvdXBkYXRlLXJjLmQuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2FkZC12ZXJib3NlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXN5bWxpbmtzLWFyZS12YWxpZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAiCi1VUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1kb19jb21waWxlKCkgewotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS91cGRhdGUtcmMuZCAke0R9JHtzYmluZGlyfS91cGRhdGUtcmMuZAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFhMjFhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC44LmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAibWFuYWdlIHN5bWxpbmtzIGluIC9ldGMvcmNOLmQiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9waGlsYi91cGRhdGUtcmMuZC8iCitERVNDUklQVElPTiA9ICJ1cGRhdGUtcmMuZCBpcyBhIHV0aWxpdHkgdGhhdCBhbGxvd3MgdGhlIG1hbmFnZW1lbnQgb2Ygc3ltbGlua3MgdG8gdGhlIGluaXRzY3JpcHRzIGluIHRoZSAvZXRjL3JjTi5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIgorU0VDVElPTiA9ICJiYXNlIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3VwZGF0ZS1yYy5kO2JlZ2lubGluZT01O2VuZGxpbmU9MTU7bWQ1PTE0OGE0ODMyMWIxMGViMzdjMWZhM2VlMDJiOTQwYTc1IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3VwZGF0ZS1yYy5kIgorU1JDUkVWID0gIjIyZTA2OTI4OThjM2U3Y2VlZGM4ZWI1ZmY0ZWM4ZTBiOWMzNDBiMmQiCisKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2NvbXBpbGUoKSB7Cit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke1N9L3VwZGF0ZS1yYy5kICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1yYy5kCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwppbmRleCAwYjdkYjUyLi5hMDVjMWNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgICAgICAgdXRpbC1saW51eC1sc2JsayB1dGlsLWxpbnV4LW1rZnMuY3JhbWZzIHV0aWwtbGludXgtZnN0cmltIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXBhcnR4IHV0aWwtbGludXgtaHdjbG9jayB1dGlsLWxpbnV4LW1vdW50cG9pbnQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LXBybGltaXQgXAotICAgICAgICAgICAgIHV0aWwtbGludXgtaW9uaWNlIHV0aWwtbGludXgtc3dpdGNoLXJvb3QiCisgICAgICAgICAgICAgdXRpbC1saW51eC1pb25pY2UgdXRpbC1saW51eC1zd2l0Y2gtcm9vdCB1dGlsLWxpbnV4LXVuc2hhcmUiCiBQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHlsaWJtb3VudCcsICd1dGlsLWxpbnV4LXB5bGlibW91bnQnLCAnJywgZCl9IgogUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3V0aWwtbGludXgtcnVudXNlciB1dGlsLWxpbnV4LXN1JywgJycsIGQpfSIKIApAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1raWxsIC0tZW5hYmxlLWxhc3QgLS1lbmFibGUtbWVzZyAtLWVuYWJsZS1wYXJ0eCBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXJhdyAtLWVuYWJsZS1yZmtpbGwgLS1kaXNhYmxlLWxvZ2luIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpcHcgLS1kaXNhYmxlLW5ld2dycCAtLWRpc2FibGUtY2hmbi1jaHNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtd3JpdGUgLS1lbmFibGUtbW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS13cml0ZSAtLWVuYWJsZS1tb3VudCAtLWVuYWJsZS11bnNoYXJlIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlidXVpZCAtLWVuYWJsZS1saWJibGtpZCAtLWVuYWJsZS1mc2NrIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1pbml4IC0tZGlzYWJsZS1iZnMgLS13aXRob3V0LXVkZXYgXAogICAgICAgICAgICAgICAgICAgICAgICB1c3JzYmluX2V4ZWNkaXI9JyR7c2JpbmRpcn0nIFwKQEAgLTc1LDcgKzc1LDcgQEAKIAogRklMRVNfdXRpbC1saW51eC1hZ2V0dHkgPSAiJHtiYXNlX3NiaW5kaXJ9L2FnZXR0eSIKIEZJTEVTX3V0aWwtbGludXgtZmRpc2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2ZkaXNrLiR7QlBOfSIKLUZJTEVTX3V0aWwtbGludXgtZnN0cmltID0gIiR7YmFzZV9zYmluZGlyfS9mc3RyaW0iCitGSUxFU191dGlsLWxpbnV4LWZzdHJpbSA9ICIke2Jhc2Vfc2JpbmRpcn0vZnN0cmltLiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtY2ZkaXNrID0gIiR7YmFzZV9zYmluZGlyfS9jZmRpc2siCiBGSUxFU191dGlsLWxpbnV4LXNmZGlzayA9ICIke3NiaW5kaXJ9L3NmZGlzayIKIEZJTEVTX3V0aWwtbGludXgtc3dhcG9ub2ZmID0gIiR7YmFzZV9zYmluZGlyfS9zd2Fwb24uJHtCUE59ICR7YmFzZV9zYmluZGlyfS9zd2Fwb2ZmLiR7QlBOfSIKQEAgLTkzLDcgKzkzLDcgQEAKIEZJTEVTX3V0aWwtbGludXgtZ2V0b3B0ID0gIiR7YmFzZV9iaW5kaXJ9L2dldG9wdC4ke0JQTn0iCiBGSUxFU191dGlsLWxpbnV4LXJ1bnVzZXIgPSAiJHtzYmluZGlyfS9ydW51c2VyIgogRklMRVNfdXRpbC1saW51eC1wcmxpbWl0ID0gIiR7YmluZGlyfS9wcmxpbWl0IgotRklMRVNfdXRpbC1saW51eC1pb25pY2UgPSAiJHtiaW5kaXJ9L2lvbmljZSIKK0ZJTEVTX3V0aWwtbGludXgtaW9uaWNlID0gIiR7YmluZGlyfS9pb25pY2UuJHtCUE59IgogRklMRVNfdXRpbC1saW51eC1zdSA9ICIke2JpbmRpcn0vc3UudXRpbC1saW51eCAke3N5c2NvbmZkaXJ9L3BhbS5kL3N1LWwiCiBDT05GRklMRVNfdXRpbC1saW51eC1zdSA9ICIke3N5c2NvbmZkaXJ9L3BhbS5kL3N1LWwiCiAKQEAgLTExMyw2ICsxMTMsNyBAQAogRklMRVNfdXRpbC1saW51eC1tb3VudHBvaW50ID0gIiR7YmFzZV9iaW5kaXJ9L21vdW50cG9pbnQuJHtCUE59IgogCiBGSUxFU191dGlsLWxpbnV4LXN3aXRjaC1yb290ID0gIiR7YmFzZV9zYmluZGlyfS9zd2l0Y2hfcm9vdC4ke0JQTn0iCitGSUxFU191dGlsLWxpbnV4LXVuc2hhcmUgPSAiJHtiaW5kaXJ9L3Vuc2hhcmUuJHtCUE59IgogCiAjIFV0aWwtbGludXgnIGJsa2lkIHJlcGxhY2VzIHRoZSBlMmZzcHJvZ3Mgb25lCiBGSUxFU191dGlsLWxpbnV4LWJsa2lkID0gIiR7YmFzZV9zYmluZGlyfS9ibGtpZCoiCkBAIC0yMDQsOSArMjA1LDEyIEBACiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgogCi1BTFRFUk5BVElWRV8ke1BOfSAgPSAiZG1lc2cga2lsbCBtb3JlIG1rc3dhcCBibG9ja2RldiBwaXZvdF9yb290IHN3aXRjaF9yb290IgotQUxURVJOQVRJVkVfJHtQTn0gKz0gImhleGR1bXAgbGFzdCBsYXN0YiBsb2dnZXIgbWVzZyByZW5pY2Ugd2FsbCIKLUFMVEVSTkFUSVZFXyR7UE59ICs9ICJzZXRzaWQgY2hydCBmbG9jayB1dG1wZHVtcCBlamVjdCBub2xvZ2luIHRhc2tzZXQiCitBTFRFUk5BVElWRV8ke1BOfSAgPSAiIFwKKyAgICBkbWVzZyBraWxsIG1vcmUgbWtzd2FwIGJsb2NrZGV2IHBpdm90X3Jvb3QgXAorICAgIGhleGR1bXAgbGFzdCBsYXN0YiBsb2dnZXIgbWVzZyByZW5pY2Ugd2FsbCBcCisgICAgc2V0c2lkIGNocnQgZmxvY2sgdXRtcGR1bXAgZWplY3Qgbm9sb2dpbiB0YXNrc2V0IGZhbGxvY2F0ZSBcCisgICAgZnNmcmVlemUgbnNlbnRlciBjYWwgcmV2IFwKKyIKIAogQUxURVJOQVRJVkVfTElOS19OQU1FW2RtZXNnXSA9ICIke2Jhc2VfYmluZGlyfS9kbWVzZyIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsXSA9ICIke2Jhc2VfYmluZGlyfS9raWxsIgpAQCAtMjE0LDggKzIxOCwxMSBAQAogQUxURVJOQVRJVkVfTElOS19OQU1FW21rc3dhcF0gPSAiJHtiYXNlX3NiaW5kaXJ9L21rc3dhcCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtibG9ja2Rldl0gPSAiJHtiYXNlX3NiaW5kaXJ9L2Jsb2NrZGV2IgogQUxURVJOQVRJVkVfTElOS19OQU1FW3Bpdm90X3Jvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9waXZvdF9yb290IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N3aXRjaF9yb290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vc3dpdGNoX3Jvb3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY2FsXSA9ICIke2JpbmRpcn0vY2FsIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2VqZWN0XSA9ICIke2JpbmRpcn0vZWplY3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZmFsbG9jYXRlXSA9ICIke2JpbmRpcn0vZmFsbG9jYXRlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jldl0gPSAiJHtiaW5kaXJ9L3JldiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmc2ZyZWV6ZV0gPSAiJHtzYmluZGlyfS9mc2ZyZWV6ZSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luXSA9ICIke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiIKIAogQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIG5vbG9naW4uOCBzdWxvZ2luLjggdXRtcGR1bXAuMSByZmtpbGwuOCBraWxsLjEgbGliYmxraWQuMyBibGtpZC44IGZpbmRmcy44IGZzY2suOCB1dWlkLjMgZWplY3QuMSBsb2dnZXIuMSIKQEAgLTI0NCw2ICsyNTEsOSBAQAogQUxURVJOQVRJVkVfdXRpbC1saW51eC1mZGlzayA9ICJmZGlzayIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZGlza10gPSAiJHtiYXNlX3NiaW5kaXJ9L2ZkaXNrIgogCitBTFRFUk5BVElWRV91dGlsLWxpbnV4LWZzdHJpbSA9ICJmc3RyaW0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnN0cmltXSA9ICIke2Jhc2Vfc2JpbmRpcn0vZnN0cmltIgorCiBBTFRFUk5BVElWRV91dGlsLWxpbnV4LWFnZXR0eSA9ICJnZXR0eSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXR0eV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2dldHR5IgogQUxURVJOQVRJVkVfVEFSR0VUW2dldHR5XSA9ICIke2Jhc2Vfc2JpbmRpcn0vYWdldHR5IgpAQCAtMjgyLDYgKzI5MiwxNSBAQAogQUxURVJOQVRJVkVfdXRpbC1saW51eC1tb3VudHBvaW50ID0gIm1vdW50cG9pbnQiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludF0gPSAiJHtiYXNlX2JpbmRpcn0vbW91bnRwb2ludCIKIAorQUxURVJOQVRJVkVfdXRpbC1saW51eC11bnNoYXJlID0gInVuc2hhcmUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdW5zaGFyZV0gPSAiJHtiaW5kaXJ9L3Vuc2hhcmUiCisKK0FMVEVSTkFUSVZFX3V0aWwtbGludXgtaW9uaWNlID0gImlvbmljZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpb25pY2VdID0gIiR7YmluZGlyfS9pb25pY2UiCisKK0FMVEVSTkFUSVZFX3V0aWwtbGludXgtc3dpdGNoLXJvb3QgPSAic3dpdGNoX3Jvb3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3dpdGNoX3Jvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9zd2l0Y2hfcm9vdCIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiBweXRob24gZG9fcGFja2FnZV9wcmVwZW5kICgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuMS5iYgppbmRleCA0NTViOTM3Li5hNjE2ZDg1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMyLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMi4xLmJiCkBAIC0yMSwxMCArMjEsOCBAQAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInNjYW5mX2N2X2FsbG9jX21vZGlmaWVyPW1zIgogCiBFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKIAkJCSAgICAgLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAogIgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCiAJCQkJLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAogIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS92b2xhdGlsZS1iaW5kcy9maWxlcy9tb3VudC1jb3B5YmluZCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvZmlsZXMvbW91bnQtY29weWJpbmQKaW5kZXggMmFlYWY4NC4uZmRkZjUyMCAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS92b2xhdGlsZS1iaW5kcy9maWxlcy9tb3VudC1jb3B5YmluZAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL2ZpbGVzL21vdW50LWNvcHliaW5kCkBAIC04LDcgKzgsMTAgQEAKICAgICBleGl0IDEKIGZpCiAKKyMgZS5nLiAvdmFyL3ZvbGF0aWxlL2xpYgogc3BlYz0kMQorCisjIGUuZy4gL3Zhci9saWIKIG1vdW50cG9pbnQ9JDIKIAogaWYgWyAkIyAtZ3QgMiBdOyB0aGVuCkBAIC0yMCwxNSArMjMsMzQgQEAKIFsgLW4gIiRvcHRpb25zIiBdICYmIG9wdGlvbnM9Iiwkb3B0aW9ucyIKIAogbWtkaXIgLXAgIiR7c3BlYyUvKn0iCisKIGlmIFsgLWQgIiRtb3VudHBvaW50IiBdOyB0aGVuCi0gICAgaWYgWyAhIC1kICIkc3BlYyIgXTsgdGhlbgorCisgICAgaWYgWyAtZCAiJHNwZWMiIF07IHRoZW4KKyAgICAgICAgc3BlY2Rpcl9leGlzdGVkPXllcworICAgIGVsc2UKKyAgICAgICAgc3BlY2Rpcl9leGlzdGVkPW5vCiAgICAgICAgIG1rZGlyICIkc3BlYyIKLSAgICAgICAgY3AgLXBQUiAiJG1vdW50cG9pbnQiLy4gIiRzcGVjLyIKKyAgICBmaQorCisgICAgIyBGYXN0IHZlcnNpb24gb2YgY2FsY3VsYXRpbmcgYGRpcm5hbWUgJHtzcGVjfWAvLmBiYXNlbmFtZSAke3NwZWN9YC13b3JrCisgICAgb3ZlcmxheV93b3JrZGlyPSIke3NwZWMlLyp9Ly4ke3NwZWMjIyovfS13b3JrIgorICAgIG1rZGlyICIke292ZXJsYXlfd29ya2Rpcn0iCisKKyAgICAjIFRyeSB0byBtb3VudCB1c2luZyBvdmVybGF5LCB3aGljaCBpcyBtdXN0IGZhc3RlciB0aGFuIGNvcHlpbmcgZmlsZXMuCisgICAgIyBJZiB0aGF0IGZhaWxzLCBmYWxsIGJhY2sgdG8gc2xvd2VyIGNvcHkuCisgICAgaWYgISBtb3VudCAtdCBvdmVybGF5IG92ZXJsYXkgLW9sb3dlcmRpcj0iJG1vdW50cG9pbnQiLHVwcGVyZGlyPSIkc3BlYyIsd29ya2Rpcj0iJG92ZXJsYXlfd29ya2RpciIgIiRtb3VudHBvaW50IiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisKKyAgICAgICAgaWYgWyAiJHNwZWNkaXJfZXhpc3RlZCIgIT0gInllcyIgXTsgdGhlbgorICAgICAgICAgICAgY3AgLXBQUiAiJG1vdW50cG9pbnQiLy4gIiRzcGVjLyIKKyAgICAgICAgZmkKKworICAgICAgICBtb3VudCAtbyAiYmluZCRvcHRpb25zIiAiJHNwZWMiICIkbW91bnRwb2ludCIKICAgICBmaQogZWxpZiBbIC1mICIkbW91bnRwb2ludCIgXTsgdGhlbgogICAgIGlmIFsgISAtZiAiJHNwZWMiIF07IHRoZW4KICAgICAgICAgY3AgLXBQICIkbW91bnRwb2ludCIgIiRzcGVjIgogICAgIGZpCi1maQogCi1tb3VudCAtbyAiYmluZCRvcHRpb25zIiAiJHNwZWMiICIkbW91bnRwb2ludCIKKyAgICBtb3VudCAtbyAiYmluZCRvcHRpb25zIiAiJHNwZWMiICIkbW91bnRwb2ludCIKK2ZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMKaW5kZXggZGY4MWJjNi4uYjgyYWY1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYwpAQCAtMTAsMjQgKzEwLDQ5IEBACiBERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstbTQgbmF0aXZlc2RrLWdudS1jb25maWciCiBSREVQRU5EU18ke1BOfSA9ICJtNCBnbnUtY29uZmlnIFwKIAkJICBwZXJsIFwKKwkJICBwZXJsLW1vZHVsZS1ieXRlcyBcCiAJCSAgcGVybC1tb2R1bGUtY2FycCBcCiAJCSAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorCQkgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKIAkJICBwZXJsLW1vZHVsZS1lcnJubyBcCiAJCSAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAogCQkgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAogCQkgIHBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBcCiAJCSAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKwkJICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAogCQkgIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCiAJCSAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKIAkJICBwZXJsLW1vZHVsZS1maWxlLXN0YXQgXAotCQkgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCiAJCSAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAogCQkgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAogCQkgIHBlcmwtbW9kdWxlLXBvc2l4IFwKLQkJICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisJCSAgcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKKwkJICBwZXJsLW1vZHVsZS10aHJlYWRzIFwKIAkJICIKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJtNC1uYXRpdmUgZ251LWNvbmZpZy1uYXRpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW00IG5hdGl2ZXNkay1nbnUtY29uZmlnIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIlwKKwkJICBuYXRpdmVzZGstZ251LWNvbmZpZyBcCisJCSAgbmF0aXZlc2RrLW00IFwKKwkJICBuYXRpdmVzZGstcGVybCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWJ5dGVzIFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtY2FycCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWNvbnN0YW50IFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1lcnJubyBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtc3RhdCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtaW8tZmlsZSBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXBvc2l4IFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgICAiCiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hdXRvY29uZi9hdXRvY29uZi0ke1BWfS50YXIuZ3ogXAogCSAgIGZpbGU6Ly9wcm9ncmFtX3ByZWZpeC5wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2gKaW5kZXggMTIyMWYxMy4uZGViMWQwMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI1YThhYzMwNDg2Nzk4ZDIzZjUxNjcyMmQ3M2ViNjIyZTYyNjRmMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIzYzZlMTk3MTc4NmNkOTNhMmUzMDE3YzkyYmZiZmU5NmJhYWYyZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyNiBKdWwgMjAxNyAxMToxOTo1NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBhdXRvbWFrZTogQWRkIGRlZmF1bHQgbGlidG9vbF90YWcgdG8gY3BwYXNtLgpAQCAtNiwxOSArNiwxOSBAQAogICAgICogYmluL2F1dG9tYWtlLmluIChyZWdpc3Rlcl9sYW5ndWFnZSk6IERlZmluZSBkZWZhdWx0IGxpYnRvb2wgdGFnIHRvIGJlIENDCiAgICAgc2luY2UgQ1BQQVNDT01QSUxFIGlzIHVzaW5nIENDIHRvIGNhbGwgYXNzZW1ibGVyCiAKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCistLS0KICBiaW4vYXV0b21ha2UuaW4gfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9iaW4vYXV0b21ha2UuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9iaW4vYXV0b21ha2UuaW4KLSsrKyBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCi1AQCAtODMxLDYgKzgzMSw3IEBAIHJlZ2lzdGVyX2xhbmd1YWdlICgnbmFtZScgPT4gJ2NwcGFzbScsCi0gCQkgICAnY29tcGlsZXInID0+ICdDUFBBU0NPTVBJTEUnLAorZGlmZiAtLWdpdCBhL2Jpbi9hdXRvbWFrZS5pbiBiL2Jpbi9hdXRvbWFrZS5pbgoraW5kZXggM2E2Njk2NS4uMDhiYTA5YSAxMDA2NDQKKy0tLSBhL2Jpbi9hdXRvbWFrZS5pbgorKysrIGIvYmluL2F1dG9tYWtlLmluCitAQCAtODk4LDYgKzg5OCw3IEBAIHJlZ2lzdGVyX2xhbmd1YWdlICgnbmFtZScgPT4gJ2NwcGFzbScsCisgICAgICAgICAgICAgICAgICAgICdsaWJ0b29sX3RhZycgPT4gJ0NDJywKICAJCSAgICdjb21waWxlX2ZsYWcnID0+ICctYycsCiAgCQkgICAnb3V0cHV0X2ZsYWcnID0+ICctbycsCiArCQkgICAnbGlidG9vbF90YWcnID0+ICdDQycsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWJ1aWxkLWZpeC1yYWNlLWluLXBhcmFsbGVsLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYnVpbGQtZml4LXJhY2UtaW4tcGFyYWxsZWwtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MWZjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWJ1aWxkLWZpeC1yYWNlLWluLXBhcmFsbGVsLWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIDU5MmViNTViMjQ4YTc2NWFiZmM3OTZmY2NiNjhiYWEzZDUzNzQ1YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI2IEp1bCAyMDE4IDAwOjU4OjEyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBmaXggcmFjZSBpbiBwYXJhbGxlbCBidWlsZHMKKworVGhlIGF1dG9tYWtlLSQoQVBJVkVSU0lPTikgaXMgYSBoYXJkbGluayBvZiBhdXRvbWFrZSwgaWYgaXQgaXMKK2NyZWF0ZWQgbGF0ZXIgdGhhbiB1cGRhdGVfbWFucyBleGVjdXRpbmcsIHRoZXJlIGlzIGEgZmFpbHVyZQorW3NuaXBdCit8OiAmJiBta2RpciAtcCBkb2MgJiYgLi9wcmUtaW5zdC1lbnYgL3Vzci9iaW4vZW52IHBlcmwKKy4uL2F1dG9tYWtlLTEuMTYuMS9kb2MvaGVscDJtYW4gLS1vdXRwdXQ9ZG9jL2FjbG9jYWwtMS4xNi4xCithY2xvY2FsLTEuMTYKK3xoZWxwMm1hbjogY2FuJ3QgZ2V0IGAtLWhlbHAnIGluZm8gZnJvbSBhY2xvY2FsLTEuMTYKK3xUcnkgYC0tbm8tZGlzY2FyZC1zdGRlcnInIGlmIG9wdGlvbiBvdXRwdXRzIHRvIHN0ZGVycgorTWFrZWZpbGU6MzY5MzogcmVjaXBlIGZvciB0YXJnZXQgJ2RvYy9hY2xvY2FsLTEuMTYuMScgZmFpbGVkCitbc25pcF0KKworVGhlIGF1dG9tYWtlX3NjcmlwdCBpcyByZXF1aXJlZCBieSB1cGRhdGVfbWFucyBhbmQgdXBkYXRlX21hbnMKK2ludm9rZXMgYXV0b21ha2UtJChBUElWRVJTSU9OKSByYXRoZXIgdGhhbiBhdXRvbWFrZSB0byBnZW5lcmF0ZQorZG9jLCBzbyB3ZSBzaG91bGQgYXNzaWduIGBhdXRvbWFrZS0kKEFQSVZFUlNJT04pJyB0byBhdXRvbWFrZV9zY3JpcHQuCisKK1RoZSBzYW1lIHJlYXNvbiB0byB0d2VhayBhY2xvY2FsX3NjcmlwdC4KKworKiBiaW4vbG9jYWwubWs6IGNvcnJlY3QgYXV0b21ha2Vfc2NyaXB0L2FjbG9jYWxfc2NyaXB0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFthdXRvbWFrZS1wYXRjaGVzQGdudS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICB8IDQgKystLQorIGJpbi9sb2NhbC5tayB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggYzNlOTM0Yy4uN2NkZGI4ZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTY5MSw4ICs2OTEsOCBAQCBiaW5fU0NSSVBUUyA9IGJpbi9hdXRvbWFrZSBiaW4vYWNsb2NhbAorICMgVXNlZCBieSBtYWludGFpbmVyIGNoZWNrcyBhbmQgc3VjaC4KKyBhdXRvbWFrZV9pbiA9ICQoc3JjZGlyKS9iaW4vYXV0b21ha2UuaW4KKyBhY2xvY2FsX2luID0gJChzcmNkaXIpL2Jpbi9hY2xvY2FsLmluCistYXV0b21ha2Vfc2NyaXB0ID0gYmluL2F1dG9tYWtlCistYWNsb2NhbF9zY3JpcHQgPSBiaW4vYWNsb2NhbAorK2F1dG9tYWtlX3NjcmlwdCA9IGJpbi9hdXRvbWFrZS0kKEFQSVZFUlNJT04pCisrYWNsb2NhbF9zY3JpcHQgID0gYmluL2FjbG9jYWwtJChBUElWRVJTSU9OKQorIEFVVE9NQUtFU09VUkNFUyA9ICQoYXV0b21ha2VfaW4pICQoYWNsb2NhbF9pbikKKyBpbmZvX1RFWElORk9TID0gZG9jL2F1dG9tYWtlLnRleGkgZG9jL2F1dG9tYWtlLWhpc3RvcnkudGV4aQorIGRvY19hdXRvbWFrZV9URVhJTkZPUyA9IGRvYy9mZGwudGV4aQorZGlmZiAtLWdpdCBhL2Jpbi9sb2NhbC5tayBiL2Jpbi9sb2NhbC5taworaW5kZXggOTdiMzhkYi4uMDU4Y2E5OSAxMDA2NDQKKy0tLSBhL2Jpbi9sb2NhbC5taworKysrIGIvYmluL2xvY2FsLm1rCitAQCAtMzEsOCArMzEsOCBAQCBDTEVBTkZJTEVTICs9IFwKKyAjIFVzZWQgYnkgbWFpbnRhaW5lciBjaGVja3MgYW5kIHN1Y2guCisgYXV0b21ha2VfaW4gPSAkKHNyY2RpcikvJUQlL2F1dG9tYWtlLmluCisgYWNsb2NhbF9pbiAgPSAkKHNyY2RpcikvJUQlL2FjbG9jYWwuaW4KKy1hdXRvbWFrZV9zY3JpcHQgPSAlRCUvYXV0b21ha2UKKy1hY2xvY2FsX3NjcmlwdCAgPSAlRCUvYWNsb2NhbAorK2F1dG9tYWtlX3NjcmlwdCA9ICVEJS9hdXRvbWFrZS0kKEFQSVZFUlNJT04pCisrYWNsb2NhbF9zY3JpcHQgID0gJUQlL2FjbG9jYWwtJChBUElWRVJTSU9OKQorIAorIEFVVE9NQUtFU09VUkNFUyA9ICQoYXV0b21ha2VfaW4pICQoYWNsb2NhbF9pbikKKyBUQUdTX0ZJTEVTICs9ICQoQVVUT01BS0VTT1VSQ0VTKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoCmluZGV4IDk2YjVhM2QuLjE1OTJjMDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0MWUwNmI3YTM1NDc3NDkxM2RjZDJlMzJhMzU0NDBlNDA3ODQzMzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwODEzODVmNGQ0YmJhMzY3YWZhZDNiZmYxZmEwMzRmNTI2MzMwNWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogU2VyaGlpIFBvcG92eWNoIDxzcG9wb3Z5Y0BjaXNjby5jb20+CiBEYXRlOiBXZWQsIDEwIEZlYiAyMDE2IDE3OjA3OjMyICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHBlcmw6IFJlcGxhY2UgLXcgb3B0aW9uIGluIHNoZWJhbmdzIHdpdGggbW9kZXJuICJ1c2UKQEAgLTE1LDI0ICsxNSwyNCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IFNlcmhpaSBQb3BvdnljaCA8c3BvcG92eWNAY2lzY28uY29tPgotLS0tCi0gYmluL2FjbG9jYWwuaW4gICAgIHwgMyArKy0KLSBiaW4vYXV0b21ha2UuaW4gICAgfCAzICsrLQotIHQvd3JhcC9hY2xvY2FsLmluICB8IDMgKystCi0gdC93cmFwL2F1dG9tYWtlLmluIHwgMyArKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogCi1JbmRleDogYXV0b21ha2UtMS4xNS4xL2Jpbi9hY2xvY2FsLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvYmluL2FjbG9jYWwuaW4KLSsrKyBhdXRvbWFrZS0xLjE1LjEvYmluL2FjbG9jYWwuaW4KKy0tLQorIGJpbi9hY2xvY2FsLmluICB8IDMgKystCisgYmluL2F1dG9tYWtlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jpbi9hY2xvY2FsLmluIGIvYmluL2FjbG9jYWwuaW4KK2luZGV4IGIzNzE1ZDkuLjQ2MWQ0NTMgMTAwNjQ0CistLS0gYS9iaW4vYWNsb2NhbC5pbgorKysrIGIvYmluL2FjbG9jYWwuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBFUkxAIC13CiArIyFAUEVSTEAKICAjIC0qLSBwZXJsIC0qLQogICMgQGNvbmZpZ3VyZV9pbnB1dEAKICAKLUBAIC0zMyw2ICszMyw3IEBAIEJFR0lOCitAQCAtMzIsNiArMzIsNyBAQCBCRUdJTgogIH0KICAKICB1c2Ugc3RyaWN0OwpAQCAtNDAsMTcgKzQwLDE3IEBACiAgCiAgdXNlIEF1dG9tYWtlOjpDb25maWc7CiAgdXNlIEF1dG9tYWtlOjpHZW5lcmFsOwotSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9iaW4vYXV0b21ha2UuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9iaW4vYXV0b21ha2UuaW4KLSsrKyBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCitkaWZmIC0tZ2l0IGEvYmluL2F1dG9tYWtlLmluIGIvYmluL2F1dG9tYWtlLmluCitpbmRleCA4Mzc3ZDIwLi4zYTY2OTY1IDEwMDY0NAorLS0tIGEvYmluL2F1dG9tYWtlLmluCisrKysgYi9iaW4vYXV0b21ha2UuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBFUkxAIC13CiArIyFAUEVSTEAKICAjIC0qLSBwZXJsIC0qLQogICMgQGNvbmZpZ3VyZV9pbnB1dEAKICAKLUBAIC0yOCw2ICsyOCw3IEBAIGV2YWwgJ2Nhc2UgJCMgaW4gMCkgZXhlYyBAUEVSTEAgLVMgIiQwIjsKK0BAIC0yOCw2ICsyOCw3IEBAIGV2YWwgJ2Nhc2UgJCMgaW4gMCkgZXhlYyBAUEVSTEAgLVMgIiQwIjs7ICopIGV4ZWMgQFBFUkxAIC1TICIkMCIgIiRAIjs7IGVzYWMnCiAgcGFja2FnZSBBdXRvbWFrZTsKICAKICB1c2Ugc3RyaWN0OwpAQCAtNTgsMzkgKzU4LDMgQEAKICAKICBCRUdJTgogIHsKLUluZGV4OiBhdXRvbWFrZS0xLjE1LjEvdC93cmFwL2FjbG9jYWwuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy90L3dyYXAvYWNsb2NhbC5pbgotKysrIGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYWNsb2NhbC5pbgotQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIUBQRVJMQAotICMgQGNvbmZpZ3VyZV9pbnB1dEAKLSAKLSAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotQEAgLTE5LDYgKzE5LDcgQEAKLSBCRUdJTgotIHsKLSAgIHVzZSBzdHJpY3Q7Ci0rICB1c2Ugd2FybmluZ3M7Ci0gICBAQWNsb2NhbDo6cGVybF9saWJkaXJzID0gKCdAYWJzX3RvcF9zcmNkaXJAL2xpYicpOwotICAgdW5zaGlmdCBAQWNsb2NhbDo6cGVybF9saWJkaXJzLCAnQGFic190b3BfYnVpbGRkaXJAL2xpYicKLSAgICAgaWYgJ0BzcmNkaXJAJyBuZSAnLic7Ci1JbmRleDogYXV0b21ha2UtMS4xNS4xL3Qvd3JhcC9hdXRvbWFrZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL3Qvd3JhcC9hdXRvbWFrZS5pbgotKysrIGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYXV0b21ha2UuaW4KLUBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyFAUEVSTEAKLSAjIEBjb25maWd1cmVfaW5wdXRACi0gCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLUBAIC0xOSw2ICsxOSw3IEBACi0gQkVHSU4KLSB7Ci0gICB1c2Ugc3RyaWN0OwotKyAgdXNlIHdhcm5pbmdzOwotICAgQEF1dG9tYWtlOjpwZXJsX2xpYmRpcnMgPSAoJ0BhYnNfdG9wX3NyY2RpckAvbGliJyk7Ci0gICB1bnNoaWZ0IEBBdXRvbWFrZTo6cGVybF9saWJkaXJzLCAnQGFic190b3BfYnVpbGRkaXJAL2xpYicKLSAgICAgaWYgJ0BzcmNkaXJAJyBuZSAnLic7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9idWlsZHRlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9idWlsZHRlc3QucGF0Y2gKaW5kZXggYzMyY2QxZi4uYjg4YjllOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYnVpbGR0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaApAQCAtMSwxMyArMSwyNSBAQAorRnJvbSBhODYwYjI4MDY5Nzg1YWE1YmYyZmE5YjY3MTI4N2RlOWFmNTAwNGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0JqPUMzPUI2cm49MjBTdGVuYmVyZz89IDxianN0QGVuZWEuY29tPgorRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAxNzoxODoyNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBBZGQgYSBuZXcgZGlzdHJvIGZlYXR1cmUgInB0ZXN0Ii4KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKwogU3BsaXQgImNoZWNrLVRFU1RTIiBpbnRvIGEgYnVpbGR0ZXN0IGFuZCBydW50ZXN0IHRhcmdldCwgc28gdGhhdCB0aGV5IGNhbgogYmUgcnVuIHNlcGFyYXRlbHkuCiAKIFNpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogYXV0b21ha2UtMS4xNS4xL2xpYi9hbS9jaGVjay5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2xpYi9hbS9jaGVjay5hbQotKysrIGF1dG9tYWtlLTEuMTUuMS9saWIvYW0vY2hlY2suYW0KKy0tLQorIGxpYi9hbS9jaGVjay5hbSB8IDExICsrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9hbS9jaGVjay5hbSBiL2xpYi9hbS9jaGVjay5hbQoraW5kZXggZTBkYjY1MS4uZGUxMzdmYSAxMDA2NDQKKy0tLSBhL2xpYi9hbS9jaGVjay5hbQorKysrIGIvbGliL2FtL2NoZWNrLmFtCiBAQCAtNDEsNyArNDEsNyBAQCBhbV9fdHR5X2NvbG9ycyA9IHsgXAogICAgZmk7IFwKICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2gKaW5kZXggMmM2NTk0Zi4uMWY3MTcyMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvbmV3X3J0X3BhdGhfZm9yX3Rlc3QtZHJpdmVyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL25ld19ydF9wYXRoX2Zvcl90ZXN0LWRyaXZlci5wYXRjaApAQCAtMSwyMiArMSwzMiBAQAotU2V0IHJlbGF0aXZlIHRvIHRvcF9idWlsZGRpciBwYXRoIGluIE1ha2VmaWxlIHRvIGFjY2VzcyB0ZXN0LWRyaXZlcgorRnJvbSBmNzhkZmEzOTEzOWQ1MjhjOTRkNzJmMjc5OTRmMzM3ZjJmZDNiNmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWRyaWFuIENhbGlhbnUgPGFkcmlhbi5jYWxpYW51QGVuZWEuY29tPgorRGF0ZTogVGh1LCAyNSBGZWIgMjAxNiAxNjowODowNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBTZXQgcmVsYXRpdmUgdG8gdG9wX2J1aWxkZGlyIHBhdGggaW4gTWFrZWZpbGUgdG8gYWNjZXNzCisgdGVzdC1kcml2ZXIKIAogU2lnbmVkLW9mZi1ieTogQWRyaWFuIENhbGlhbnUgPGFkcmlhbi5jYWxpYW51QGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBCdWctUmVwb3J0OiBodHRwOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz0xOTA0MgogCistLS0KKyBiaW4vYXV0b21ha2UuaW4gfCA5ICsrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2Jpbi9hdXRvbWFrZS5pbiBiL2Jpbi9hdXRvbWFrZS5pbgoraW5kZXggYTUyYTQ4OS4uODM3N2QyMCAxMDA2NDQKIC0tLSBhL2Jpbi9hdXRvbWFrZS5pbgogKysrIGIvYmluL2F1dG9tYWtlLmluCi1AQCAtMjcyLDYgKzI3Miw5IEBACitAQCAtMzI0LDYgKzMyNCw5IEBAIG15ICRjb25maWdfYXV4X2Rpcl9zZXRfaW5fY29uZmlndXJlX2FjID0gMDsKICAjICRBTV9DT05GSUdfQVVYX0RJUiBpcyBwcmVmaXhlZCB3aXRoICQodG9wX3NyY2RpciksIHNvIGl0IGNhbiBiZSB1c2VkCiAgIyBpbiBNYWtlZmlsZXMuCiAgbXkgJGFtX2NvbmZpZ19hdXhfZGlyID0gJyc7CiArIyBEaXJlY3RvcnkgdXNlZCBhdCBydW50aW1lIGxpa2UgcnVubmluZyB0ZXN0LWRyaXZlciB0aGF0IHNob3VsZCBub3QKICsjIGRlcGVuZCBvbiAkKHRvcF9zcmNkaXIpCiArbXkgJGFtX2NvbmZpZ19ydF9hdXhfZGlyID0gJyc7Ci0KKyAKICAjIERpcmVjdG9yeSB0byBzZWFyY2ggZm9yIEFDX0xJQlNPVVJDRSBmaWxlcywgYXMgc2V0IGJ5IEFDX0NPTkZJR19MSUJPQkpfRElSCiAgIyBpbiBjb25maWd1cmUuYWMuCi1AQCAtNDcwMCw3ICs0NzAzLDcgQEAKK0BAIC00ODU0LDcgKzQ4NTcsNyBAQCBzdWIgaGFuZGxlX3Blcl9zdWZmaXhfdGVzdAogICAgICB7CiAgICAgICAgcmVxdWlyZV9jb25mX2ZpbGUgKCJwYXJhbGxlbC10ZXN0cyIsIEZPUkVJR04sICd0ZXN0LWRyaXZlcicpOwogICAgICAgIGRlZmluZV92YXJpYWJsZSAoIiR7cGZ4fUxPR19EUklWRVIiLApAQCAtMjUsNyArMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgSU5URVJOQUwpOwogICAgICB9CiAgICBteSAkZHJpdmVyID0gJyQoJyAuICRwZnggLiAnTE9HX0RSSVZFUiknOwotQEAgLTcyODQsNiArNzI4NywxMCBAQAorQEAgLTc0NDAsNiArNzQ0MywxMCBAQCBzdWIgbG9jYXRlX2F1eF9kaXIgKCkKICAgICRhbV9jb25maWdfYXV4X2RpciA9CiAgICAgICckKHRvcF9zcmNkaXIpJyAuICgkY29uZmlnX2F1eF9kaXIgZXEgJy4nID8gIiIgOiAiLyRjb25maWdfYXV4X2RpciIpOwogICAgJGFtX2NvbmZpZ19hdXhfZGlyID1+IHMsLyokLCw7CkBAIC0zNCwzICs0NCw1IEBACiArICAgICckKHRvcF9idWlsZGRpciknIC4gKCRjb25maWdfYXV4X2RpciBlcSAnLicgPyAiIiA6ICIvJGNvbmZpZ19hdXhfZGlyIik7CiArICAkYW1fY29uZmlnX3J0X2F1eF9kaXIgPX4gcywvKiQsLDsKICB9CisgCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9wZXJmb3JtYW5jZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3BlcmZvcm1hbmNlLnBhdGNoCmluZGV4IDNlNmQ1NjkuLmE4YmE2NTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3BlcmZvcm1hbmNlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3BlcmZvcm1hbmNlLnBhdGNoCkBAIC0xLDE1ICsxLDI0IEBACitGcm9tIGNkNDdjMzI4Y2I1MzU0Njg5MWJiM2RjN2M5YjJjNTRlZDAxY2M2ZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAxODoyODowNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBhdXRvbWFrZTogUmVtb3ZlIGRlbGF5cyBpbiBjb25maWd1cmUgc2NyaXB0cyB1c2luZyBhdXRvbWFrZQorCiBCeSBkZWZhdWx0IGF1dG9tYWtlIHB1dHMgInNsZWVwIDEiIGludG8gdGhlIHN0YXJ0IG9mIGNvbmZpZ3VyZSBzY3JpcHRzCi13aGljaCBhZGRzIHBvaW50bGVzcyBkZWxheXMgdG8gdGhlbS4gUmF0aGVyIHRoYW4gZG8gdGhpcywgbGV0cyBqdXN0IGFzc3VtZSAKK3doaWNoIGFkZHMgcG9pbnRsZXNzIGRlbGF5cyB0byB0aGVtLiBSYXRoZXIgdGhhbiBkbyB0aGlzLCBsZXRzIGp1c3QgYXNzdW1lCiBvdXIgc3lzdGVtcyBhcmUgc2FuZS4KIAogUlAKIDIwMTUvMTIvNwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKLUluZGV4OiBhdXRvbWFrZS0xLjE1L200L3Nhbml0eS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9tYWtlLTEuMTUub3JpZy9tNC9zYW5pdHkubTQKLSsrKyBhdXRvbWFrZS0xLjE1L200L3Nhbml0eS5tNAorLS0tCisgbTQvc2FuaXR5Lm00IHwgNTUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1NSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL200L3Nhbml0eS5tNCBiL200L3Nhbml0eS5tNAoraW5kZXggZWFhYzIxOC4uYmZkZmU4OCAxMDA2NDQKKy0tLSBhL200L3Nhbml0eS5tNAorKysrIGIvbTQvc2FuaXR5Lm00CiBAQCAtMjMsNjAgKzIzLDUgQEAgY2FzZSAkc3JjZGlyIGluCiAgICAgIEFDX01TR19FUlJPUihbdW5zYWZlIHNyY2RpciB2YWx1ZTogJyRzcmNkaXInXSk7OwogIGVzYWMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3B5dGhvbi1saWJkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9weXRob24tbGliZGlyLnBhdGNoCmluZGV4IDJhNDhiMTMuLmVlMWY3MjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3B5dGhvbi1saWJkaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvcHl0aG9uLWxpYmRpci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDcyYTNkMzZjOTdlZjc1MzVmMDVkNmMxODVlZGNiYzIyYjAwNzRjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTgwZGFjZDUxMjRkMDcxM2NmMmM5ODZiMjhkNzM2ZTc4ZGM2YjBjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+CiBEYXRlOiBUaHUsIDExIEF1ZyAyMDExIDAxOjI2OjMzIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBhdXRvbWFrZTogVXBkYXRlIGZvciBweXRob24ubTQgdG8gcmVzcGVjdCBsaWJkaXIKK1N1YmplY3Q6IFtQQVRDSF0gYXV0b21ha2U6IFVwZGF0ZSBmb3IgcHl0aG9uLm00IHRvIHJlc3BlY3QgbGliZGlyCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKQEAgLTE3LDEwICsxNywxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbTQvcHl0aG9uLm00IGIvbTQvcHl0aG9uLm00Ci1pbmRleCA1YjJjNjk1Li5lZDE5MjYxIDEwMDY0NAoraW5kZXggNjNjMGEwZS4uN2JiZDJkMiAxMDA2NDQKIC0tLSBhL200L3B5dGhvbi5tNAogKysrIGIvbTQvcHl0aG9uLm00Ci1AQCAtOTEsMTIgKzkxLDEzIEBAIEFDX0RFRlVOKFtBTV9QQVRIX1BZVEhPTl0sCitAQCAtOTQsMTIgKzk0LDEzIEBAIEFDX0RFRlVOKFtBTV9QQVRIX1BZVEhPTl0sCiAgICAgIFthbV9jdl9weXRob25fdmVyc2lvbj1gJFBZVEhPTiAtYyAiaW1wb3J0IHN5czsgc3lzLnN0ZG91dC53cml0ZShzeXMudmVyc2lvbltbOjNdXSkiYF0pCiAgICBBQ19TVUJTVChbUFlUSE9OX1ZFUlNJT05dLCBbJGFtX2N2X3B5dGhvbl92ZXJzaW9uXSkKICAKQEAgLTM2LDcgKzM2LDcgQEAKICAgIEFDX1NVQlNUKFtQWVRIT05fRVhFQ19QUkVGSVhdLCBbJyR7ZXhlY19wcmVmaXh9J10pCiAgCiAgICBkbmwgQXQgdGltZXMgKGxpa2Ugd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzKSB5b3UgbWF5IHdhbnQKLUBAIC0xNDEsMTQgKzE0Miw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKK0BAIC0xNDQsMTQgKzE0NSw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgIGVsc2UKICAgICAgICAgYW1fcHlfcHJlZml4PSRwcmVmaXgKICAgICAgIGZpCkBAIC01Miw3ICs1Miw3IEBACiAgICAgICBjYXNlICRhbV9jdl9weXRob25fcHl0aG9uZGlyIGluCiAgICAgICAkYW1fcHlfcHJlZml4KikKICAgICAgICAgYW1fX3N0cmlwX3ByZWZpeD1gZWNobyAiJGFtX3B5X3ByZWZpeCIgfCBzZWQgJ3N8LnwufGcnYAotQEAgLTE1OCw3ICsxNTIsNyBAQCBzeXMuc3Rkb3V0LndyaXRlKHNpdGVkaXIpImAKK0BAIC0xNjEsNyArMTU1LDcgQEAgc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSJgCiAgICAgICAgIGNhc2UgJGFtX3B5X3ByZWZpeCBpbgogICAgICAgICAgIC91c3J8L1N5c3RlbSopIDs7CiAgICAgICAgICAgKikKQEAgLTYxLDcgKzYxLDcgQEAKICAJICA7OwogICAgICAgICBlc2FjCiAgICAgICAgIDs7Ci1AQCAtMTgzLDE0ICsxNzcsNyBAQCBzeXMuc3Rkb3V0LndyaXRlKHNpdGVkaXIpImAKK0BAIC0xODYsMTQgKzE4MCw3IEBAIHN5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiYAogICAgICAgZWxzZQogICAgICAgICBhbV9weV9leGVjX3ByZWZpeD0kZXhlY19wcmVmaXgKICAgICAgIGZpCkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICBjYXNlICRhbV9jdl9weXRob25fcHlleGVjZGlyIGluCiAgICAgICAkYW1fcHlfZXhlY19wcmVmaXgqKQogICAgICAgICBhbV9fc3RyaXBfcHJlZml4PWBlY2hvICIkYW1fcHlfZXhlY19wcmVmaXgiIHwgc2VkICdzfC58LnxnJ2AKLUBAIC0yMDAsNyArMTg3LDcgQEAgc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSJgCitAQCAtMjAzLDcgKzE5MCw3IEBAIHN5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiYAogICAgICAgICBjYXNlICRhbV9weV9leGVjX3ByZWZpeCBpbgogICAgICAgICAgIC91c3J8L1N5c3RlbSopIDs7CiAgICAgICAgICAgKikKQEAgLTg2LDYgKzg2LDMgQEAKICAJICAgOzsKICAgICAgICAgZXNhYwogICAgICAgICA7OwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmOWI2MTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotcmVxdWlyZSBhdXRvbWFrZS5pbmMKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSIKLQotTkFNRVZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgIGF1dG9jb25mIFwKLSAgICBwZXJsIFwKLSAgICBwZXJsLW1vZHVsZS1ieXRlcyBcCi0gICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAotICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCi0gICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKLSAgICBwZXJsLW1vZHVsZS10aHJlYWQtcXVldWUgXAotICAgIHBlcmwtbW9kdWxlLXRocmVhZHMgXAotICAgIHBlcmwtbW9kdWxlLXZhcnMgIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtbmF0aXZlIGhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1hdXRvY29uZiIKLQotU1JDX1VSSSArPSAiZmlsZTovL3B5dGhvbi1saWJkaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2J1aWxkdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGVyZm9ybWFuY2UucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL25ld19ydF9wYXRoX2Zvcl90ZXN0LWRyaXZlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk1ZGYzZjJkNmViOGY4MWU3MGI4Y2I2M2E5M2M4ODUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4OGUzMjUyN2FiZTA1MjMwN2QyMWM4Y2EwMDBhYTIzOGI5MTRkZjM2M2E2MTdlMzhmNGZiODlmNWFiZjYyNjAiCi0KLVBFUkwgPSAiJHtVU1JCSU5QQVRIfS9wZXJsIgotUEVSTF9jbGFzcy1uYXRpdmUgPSAiJHtVU1JCSU5QQVRIfS9lbnYgcGVybCIKLVBFUkxfY2xhc3MtbmF0aXZlc2RrID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9JyR7UEVSTH0nIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgyZWVkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlXzEuMTYuMS5iYgpAQCAtMCwwICsxLDQ0IEBACityZXF1aXJlIGF1dG9tYWtlLmluYworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtbmF0aXZlIgorCitOQU1FVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgYXV0b2NvbmYgXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWJ5dGVzIFwKKyAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKKyAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAorICAgIHBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCisgICAgcGVybC1tb2R1bGUtdGhyZWFkcyBcCisgICAgcGVybC1tb2R1bGUtdmFycyAiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUgaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLWF1dG9jb25mIgorCitTUkNfVVJJICs9ICJmaWxlOi8vcHl0aG9uLWxpYmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYnVpbGR0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wZXJmb3JtYW5jZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbmV3X3J0X3BhdGhfZm9yX3Rlc3QtZHJpdmVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZml4LXJhY2UtaW4tcGFyYWxsZWwtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjgzY2MyNDYzYTQwODBlZmQ0NmE3MmJhMmM5ZjZiOGY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwOGE5NzUyM2Y5N2RiMzJmMWY1ZDU2MTVjOThjYTY5MzI2Y2VkMjA1NGM5ZjgyZTY1YmFkZTdmYzRjOWRlYTgiCisKK1BFUkwgPSAiJHtVU1JCSU5QQVRIfS9wZXJsIgorUEVSTF9jbGFzcy1uYXRpdmUgPSAiJHtVU1JCSU5QQVRIfS9lbnYgcGVybCIKK1BFUkxfY2xhc3MtbmF0aXZlc2RrID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9JyR7UEVSTH0nIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWQ3ZDliLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotTElDX0ZJTEVTX0NIS1NVTT0iXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAotICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCi0gICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKLSAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCi0gICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICAiCi0KLWRlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi1CSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJiaW51dGlscy0oP1A8cHZlcj5cZCtfKFxkXz8pKikiCi0KLVNSQ1JFViA/PSAiY2FhODM5ZmJhNjY2MDBhNmMzNmQzNjM5OTA2ZWQ5MTEwYjc5YzMwNyIKLUJJTlVUSUxTX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9iaW51dGlscy1nZGIuZ2l0O2JyYW5jaD1iaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoO3Byb3RvY29sPWdpdCIKLVNSQ19VUkkgPSAiXAotICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKLSAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtODk0NS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC03NjQzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE4LTY4NzIucGF0Y2ggXCAKLSAgICAgZmlsZTovL0NWRS0yMDE4LTY3NTkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtNzY0Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC03MjA4LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE4LTc1NjkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtNzU2OC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDM3My5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDM3Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDUzNS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDUzNC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDAxLUNoYW5nZS10aGUtQVJNLWFzc2VtYmxlci1zLUFEUi1hbmQtQURSbC1wc2V1ZG8tb3BzLXMucGF0Y2ggXAotIgotUyAgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5ZDRjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEuaW5jCkBAIC0wLDAgKzEsNTUgQEAKK0xJQ19GSUxFU19DSEtTVU09IlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAorICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCisgICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAorICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgIgorCitkZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgorCitTUkNSRVYgPz0gIjQ1NjhlNDlmZjc5OTE5MmZlYTRmNjYwNjNmZTEzZTJiODcxZWM3NWEiCitCSU5VVElMU19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9YmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaDtwcm90b2NvbD1naXQiCitTUkNfVVJJID0gIlwKKyAgICAgJHtCSU5VVElMU19HSVRfVVJJfSBcCisgICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTYtYWRkLWkzODZwZXAtZW11bGF0aW9uLWZvci14ODZfNjQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNy1pbXByb3ZlLWNoZWNrLWZvci1pbnB1dC1maWxlLW1hdGNoaW5nLW91dHB1dC1maWxlLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTgtUmVmYWN0b3JlZC1sb2NhdGlvbi13aGVyZS1HT1QtaW5mb3JtYXRpb24taXMtY29sbGVjdC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE5LUltcHJvdmVkLXJvYnVzdG5lc3MuLVJldHVybi1GQUxTRS1pbi1jYXNlLW9mLU5VTEwtcG8ucGF0Y2ggXAorICAgICBmaWxlOi8vMDAyMC1NYWtlLXN1cmUtZ2xvYmFsLXN5bWJvbC1pcy1ub3QtYW4taW5kaXJlY3Qtb3Itd2FybmluLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMjEtUExULWluZm9ybWF0aW9uLXdhcy1zdGlsbC1iZWluZy1nZW5lcmF0ZWQtd2hlbi1zeW1iby5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNzM1OC5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNzM2MC5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAxOC0xODMwOS5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAxOC0xODYwNS5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAxOC0xODYwNi5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAxOC0xODYwNy5wYXRjaCBcCisiCitTICA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMxLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jCmluZGV4IDM3ODEzZGQuLjBmYjZjYWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMKQEAgLTM4LDYgKzM4LDkgQEAKICMgUmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgbXVsdGlwbGUgZW50cmllcyBmb3IgdGhlc2UsIG1ha2Ugb25lCiAjIGxpc3QgYW5kIHJldXNlIGl0LgogCitMREdPTERfQUxUUyA/PSAibGQuZ29sZCBkd3AiCitMREdPTERfQUxUU19yaXNjdjY0ID0gIiIKKwogVVNFX0FMVEVSTkFUSVZFU19GT1IgPSAiIFwKIAlhZGRyMmxpbmUgXAogCWFyIFwKQEAgLTQ3LDcgKzUwLDcgQEAKIAlncHJvZiBcCiAJbGQgXAogCWxkLmJmZCBcCi0JbGQuZ29sZCBkd3AgXAorCSR7TERHT0xEX0FMVFN9IFwKIAlubSBcCiAJb2JqY29weSBcCiAJb2JqZHVtcCBcCkBAIC0xMjgsMTIgKzEzMSwxMiBAQAogCSMgV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhlc2UsIHNvIHdlJ2xsIHJlbW92ZSB0aGVtLi4uCiAJcm0gLXJmICR7RH0ke2xpYmRpcn0vbGRzY3JpcHRzCiAKKwliaW5kaXJfcmVsPSR7QG9zLnBhdGgucmVscGF0aCgnJHtiaW5kaXJ9JywgJyR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2JpbicpfQorCiAJIyBGaXggdGhlIC91c3IvJHtUQVJHRVRfU1lTfS9iaW4vKiBsaW5rcwogCWZvciBsIGluICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9iaW4vKjsgZG8KIAkJcm0gLWYgJGwKLQkJbG4gLXNmIGBlY2hvICR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2JpbiBcCi0JCQl8IHRyIC1zIC8gXAotCQkJfCBzZWQgLWUgJ3MsXi8sLCcgLWUgJ3MsW14vXSosLi4sZydgJHtiaW5kaXJ9LyR7VEFSR0VUX1BSRUZJWH1gYmFzZW5hbWUgJGxgICRsCisJCWxuIC1zZiAkYmluZGlyX3JlbC8ke1RBUkdFVF9QUkVGSVh9YGJhc2VuYW1lICRsYCAkbAogCWRvbmUKIAogCSMgSW5zdGFsbCB0aGUgbGliaWJlcnR5IGhlYWRlcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1DaGFuZ2UtdGhlLUFSTS1hc3NlbWJsZXItcy1BRFItYW5kLUFEUmwtcHNldWRvLW9wcy1zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1DaGFuZ2UtdGhlLUFSTS1hc3NlbWJsZXItcy1BRFItYW5kLUFEUmwtcHNldWRvLW9wcy1zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjA0ZTY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtQ2hhbmdlLXRoZS1BUk0tYXNzZW1ibGVyLXMtQURSLWFuZC1BRFJsLXBzZXVkby1vcHMtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi1Gcm9tIGZjNjE0MWYwOTcwNTZmODMwYTQxMmFmZWJlZDhkODFhOWQ3MmI2OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDIwIEp1biAyMDE4IDEyOjM4OjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIENoYW5nZSB0aGUgQVJNIGFzc2VtYmxlcidzIEFEUiBhbmQgQURSbCBwc2V1ZG8tb3BzIHNvIHRoYXQKLSB0aGV5IHdpbGwgb25seSBzZXQgdGhlIGJvdHRvbSBiaXQgb2YgaW1wb3J0ZWQgdGh1bWIgZnVuY3Rpb24gc3ltYm9scyBpZiB0aGUKLSAtbXRodW1iLWludGVyd29yayBvcHRpb24gaXMgYWN0aXZlLgotCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGVtYWlsIHRocmVhZCBzdGFydGluZyBoZXJlOgotaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxOC0wNS9tc2cwMDM0OC5odG1sCi0KLQlQUiAyMTQ1OAotCSogdGMtYXJtLmMgKGRvX2Fkcik6IE9ubHkgc2V0IHRoZSBib3R0b20gYml0IG9mIGFuIGltcG9ydGVkIHRodW1iCi0JZnVuY3Rpb24gc3ltYm9sIGFkZHJlc3MgaWYgLW10aHVtYi1pbnRlcndvcmsgaXMgYWN0aXZlLgotCShkb19hZHJsKTogTGlrZXdpc2UuCi0JKiBkb2MvYy1hcm0udGV4aTogVXBkYXRlIGRlc2NyaXB0aW9ucyBvZiB0aGUgLW10aHVtYi1pbnRlcndvcmsKLQlvcHRpb24gYW5kIHRoZSBBRFIgYW5kIEFEUkwgcHNldWRvLW9wcy4KLQkqIE5FV1M6IE1lbnRpb24gdGhlIG5ldyBiZWhhdmlvdXIgb2YgdGhlIEFEUiBhbmQgQURSTCBwc2V1ZG8tb3BzLgotCSogdGVzdHN1aXRlL2dhcy9hcm0vcHIyMTQ1OC5kOiBBZGQgLW10aHVtYi1pbnRlcndvcmsgb3B0aW9uIHRvCi0JYXNzZW1ibGVyIGNvbW1hbmQgbGluZS4KLQkqIHRlc3RzdWl0ZS9nYXMvYXJtL2Fkci5kOiBMaWtld2lzZS4KLQkqIHRlc3RzdWl0ZS9nYXMvYXJtL2FkcmwuZDogTGlrZXdpc2UuCi0tLS0KLSBnYXMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKysrKysrKysKLSBnYXMvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIGdhcy9jb25maWcvdGMtYXJtLmMgICAgICAgICAgICAgfCAxMCArKysrKystLS0tCi0gZ2FzL2RvYy9jLWFybS50ZXhpICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKystCi0gZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2Fkci5kICAgICB8ICAxICsKLSBnYXMvdGVzdHN1aXRlL2dhcy9hcm0vYWRybC5kICAgIHwgIDEgKwotIGdhcy90ZXN0c3VpdGUvZ2FzL2FybS9wcjIxNDU4LmQgfCAgMyArKy0KLSA3IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvZ2FzL2NvbmZpZy90Yy1hcm0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9jb25maWcvdGMtYXJtLmMKLSsrKyBnaXQvZ2FzL2NvbmZpZy90Yy1hcm0uYwotQEAgLTg0MTAsMTEgKzg0MTAsMTIgQEAgZG9fYWRyICh2b2lkKQotICAgaW5zdC5yZWxvYy5wY19yZWwgPSAxOwotICAgaW5zdC5yZWxvYy5leHAuWF9hZGRfbnVtYmVyIC09IDg7Ci0gCi0tICBpZiAoaW5zdC5yZWxvYy5leHAuWF9vcCA9PSBPX3N5bWJvbAotKyAgaWYgKHN1cHBvcnRfaW50ZXJ3b3JrCi0rICAgICAgJiYgaW5zdC5yZWxvYy5leHAuWF9vcCA9PSBPX3N5bWJvbAotICAgICAgICYmIGluc3QucmVsb2MuZXhwLlhfYWRkX3N5bWJvbCAhPSBOVUxMCi0gICAgICAgJiYgU19JU19ERUZJTkVEIChpbnN0LnJlbG9jLmV4cC5YX2FkZF9zeW1ib2wpCi0gICAgICAgJiYgVEhVTUJfSVNfRlVOQyAoaW5zdC5yZWxvYy5leHAuWF9hZGRfc3ltYm9sKSkKLS0gICAgaW5zdC5yZWxvYy5leHAuWF9hZGRfbnVtYmVyICs9IDE7Ci0rICAgIGluc3QucmVsb2MuZXhwLlhfYWRkX251bWJlciB8PSAxOwotIH0KLSAKLSAvKiBUaGlzIGlzIGEgcHNldWRvLW9wIG9mIHRoZSBmb3JtICJhZHJsIHJkLCBsYWJlbCIgdG8gYmUgY29udmVydGVkCi1AQCAtODQzNCwxMSArODQzNSwxMiBAQCBkb19hZHJsICh2b2lkKQotICAgaW5zdC5zaXplCQkgICAgICAgPSBJTlNOX1NJWkUgKiAyOwotICAgaW5zdC5yZWxvYy5leHAuWF9hZGRfbnVtYmVyIC09IDg7Ci0gCi0tICBpZiAoaW5zdC5yZWxvYy5leHAuWF9vcCA9PSBPX3N5bWJvbAotKyAgaWYgKHN1cHBvcnRfaW50ZXJ3b3JrCi0rICAgICAgJiYgaW5zdC5yZWxvYy5leHAuWF9vcCA9PSBPX3N5bWJvbAotICAgICAgICYmIGluc3QucmVsb2MuZXhwLlhfYWRkX3N5bWJvbCAhPSBOVUxMCi0gICAgICAgJiYgU19JU19ERUZJTkVEIChpbnN0LnJlbG9jLmV4cC5YX2FkZF9zeW1ib2wpCi0gICAgICAgJiYgVEhVTUJfSVNfRlVOQyAoaW5zdC5yZWxvYy5leHAuWF9hZGRfc3ltYm9sKSkKLS0gICAgaW5zdC5yZWxvYy5leHAuWF9hZGRfbnVtYmVyICs9IDE7Ci0rICAgIGluc3QucmVsb2MuZXhwLlhfYWRkX251bWJlciB8PSAxOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotSW5kZXg6IGdpdC9nYXMvZG9jL2MtYXJtLnRleGkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvZG9jL2MtYXJtLnRleGkKLSsrKyBnaXQvZ2FzL2RvYy9jLWFybS50ZXhpCi1AQCAtMzE3LDcgKzMxNyw4IEBAIGluc3RydWN0aW9uczsgdGhhdCBpcywgaXQgc2hvdWxkIGJlaGF2ZQotIEBjaW5kZXggQGNvZGV7LW10aHVtYi1pbnRlcndvcmt9IGNvbW1hbmQgbGluZSBvcHRpb24sIEFSTQotIEBpdGVtIC1tdGh1bWItaW50ZXJ3b3JrCi0gVGhpcyBvcHRpb24gc3BlY2lmaWVzIHRoYXQgdGhlIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIGFzc2VtYmxlciBzaG91bGQKLS1iZSBtYXJrZWQgYXMgc3VwcG9ydGluZyBpbnRlcndvcmtpbmcuCi0rYmUgbWFya2VkIGFzIHN1cHBvcnRpbmcgaW50ZXJ3b3JraW5nLiAgSXQgYWxzbyBhZmZlY3RzIHRoZSBiZWhhdmlvdXIKLStvZiB0aGUgQGNvZGV7QURSfSBhbmQgQGNvZGV7QURSTH0gcHNldWRvIG9wY29kZXMuCi0gCi0gQGNpbmRleCBAY29kZXstbWltcGxpY2l0LWl0fSBjb21tYW5kIGxpbmUgb3B0aW9uLCBBUk0KLSBAaXRlbSAtbWltcGxpY2l0LWl0PW5ldmVyCi1AQCAtMTA2MCw2ICsxMDYxLDE2IEBAIG91dCBvZiByYW5nZSwgb3IgaWYgaXQgaXMgbm90IGRlZmluZWQgaW4KLSB0aGUgQURSIGluc3RydWN0aW9uLCB0aGVuIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLiAgVGhpcyBpbnN0cnVjdGlvbgotIHdpbGwgbm90IG1ha2UgdXNlIG9mIHRoZSBsaXRlcmFsIHBvb2wuCi0gCi0rSWYgQHZhcntsYWJlbH0gaXMgYSB0aHVtYiBmdW5jdGlvbiBzeW1ib2wsIGFuZCB0aHVtYiBpbnRlcndvcmtpbmcgaGFzCi0rYmVlbiBlbmFibGVkIHZpYSB0aGUgQG9wdGlvbnstbXRodW1iLWludGVyd29ya30gb3B0aW9uIHRoZW4gdGhlIGJvdHRvbQotK2JpdCBvZiB0aGUgdmFsdWUgc3RvcmVkIGludG8gQHZhcntyZWdpc3Rlcn0gd2lsbCBiZSBzZXQuICBUaGlzIGFsbG93cwotK3RoZSBmb2xsb3dpbmcgc2VxdWVuY2UgdG8gd29yayBhcyBleHBlY3RlZDoKLSsKLStAc21hbGxleGFtcGxlCi0rICBhZHIgICAgIHIwLCB0aHVtYl9mdW5jdGlvbgotKyAgYmx4ICAgICByMAotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0gQGNpbmRleCBAY29kZXtBRFJMIHJlZyw8bGFiZWw+fSBwc2V1ZG8gb3AsIEFSTQotIEBpdGVtIEFEUkwKLSBAc21hbGxleGFtcGxlCi1AQCAtMTA3Niw2ICsxMDg3LDEwIEBAIElmIHRoZSBsYWJlbCBpcyBvdXQgb2YgcmFuZ2UsIG9yIGlmIGl0IGkKLSAoYW5kIHNlY3Rpb24pIGFzIHRoZSBBRFJMIGluc3RydWN0aW9uLCB0aGVuIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkLgotIFRoaXMgaW5zdHJ1Y3Rpb24gd2lsbCBub3QgbWFrZSB1c2Ugb2YgdGhlIGxpdGVyYWwgcG9vbC4KLSAKLStJZiBAdmFye2xhYmVsfSBpcyBhIHRodW1iIGZ1bmN0aW9uIHN5bWJvbCwgYW5kIHRodW1iIGludGVyd29ya2luZyBoYXMKLStiZWVuIGVuYWJsZWQgdmlhIHRoZSBAb3B0aW9uey1tdGh1bWItaW50ZXJ3b3JrfSBvcHRpb24gdGhlbiB0aGUgYm90dG9tCi0rYml0IG9mIHRoZSB2YWx1ZSBzdG9yZWQgaW50byBAdmFye3JlZ2lzdGVyfSB3aWxsIGJlIHNldC4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBBUk0gb3IgVGh1bWIgaW5zdHJ1Y3Rpb24gc2V0cywgc2VlIEBjaXRle0FSTQotSW5kZXg6IGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vYWRyLmQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vYWRyLmQKLSsrKyBnaXQvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2Fkci5kCi1AQCAtMSwzICsxLDQgQEAKLSsjYXM6IC1tdGh1bWItaW50ZXJ3b3JrCi0gI29iamR1bXA6IC1kciAtLXByZWZpeC1hZGRyZXNzZXMgLS1zaG93LXJhdy1pbnNuCi0gI25hbWU6IEFEUgotIAotSW5kZXg6IGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vYWRybC5kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2FkcmwuZAotKysrIGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vYWRybC5kCi1AQCAtMSwzICsxLDQgQEAKLSsjYXM6IC1tdGh1bWItaW50ZXJ3b3JrCi0gI29iamR1bXA6IC1kciAtLXByZWZpeC1hZGRyZXNzZXMgLS1zaG93LXJhdy1pbnNuCi0gI25hbWU6IEFEUkwKLSAKLUluZGV4OiBnaXQvZ2FzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9DaGFuZ2VMb2cKLSsrKyBnaXQvZ2FzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxNyBAQAotKzIwMTgtMDYtMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIDIxNDU4Ci0rICAgICAgICogdGMtYXJtLmMgKGRvX2Fkcik6IE9ubHkgc2V0IHRoZSBib3R0b20gYml0IG9mIGFuIGltcG9ydGVkIHRodW1iCi0rICAgICAgIGZ1bmN0aW9uIHN5bWJvbCBhZGRyZXNzIGlmIC1tdGh1bWItaW50ZXJ3b3JrIGlzIGFjdGl2ZS4KLSsgICAgICAgKGRvX2FkcmwpOiBMaWtld2lzZS4KLSsgICAgICAgKiBkb2MvYy1hcm0udGV4aTogVXBkYXRlIGRlc2NyaXB0aW9ucyBvZiB0aGUgLW10aHVtYi1pbnRlcndvcmsKLSsgICAgICAgb3B0aW9uIGFuZCB0aGUgQURSIGFuZCBBRFJMIHBzZXVkby1vcHMuCi0rICAgICAgICogTkVXUzogTWVudGlvbiB0aGUgbmV3IGJlaGF2aW91ciBvZiB0aGUgQURSIGFuZCBBRFJMIHBzZXVkby1vcHMuCi0rICAgICAgICogdGVzdHN1aXRlL2dhcy9hcm0vcHIyMTQ1OC5kOiBBZGQgLW10aHVtYi1pbnRlcndvcmsgb3B0aW9uIHRvCi0rICAgICAgIGFzc2VtYmxlciBjb21tYW5kIGxpbmUuCi0rICAgICAgICogdGVzdHN1aXRlL2dhcy9hcm0vYWRyLmQ6IExpa2V3aXNlLgotKyAgICAgICAqIHRlc3RzdWl0ZS9nYXMvYXJtL2FkcmwuZDogTGlrZXdpc2UuCi0rCi0gMjAxOC0wMi0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJKiBwby9ydS5wbzogVXBkYXRlZCBSdXNzaWFuIHRyYW5zbGF0aW9uLgotSW5kZXg6IGdpdC9nYXMvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9ORVdTCi0rKysgZ2l0L2dhcy9ORVdTCi1AQCAtMSw1ICsxLDkgQEAKLSAtKi0gdGV4dCAtKi0KLSAKLSsqIFRoZSBBRFIgYW5kIEFEUkwgcHNldWRvLWluc3RydWN0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIEFSTSBhc3NlbWJsZXIKLSsgIG5vdyBvbmx5IHNldCB0aGUgYm90dG9tIGJpdCBvZiB0aGUgYWRkcmVzcyBvZiB0aHVtYiBmdW5jdGlvbiBzeW1ib2xzCi0rICBpZiB0aGUgLW10aHVtYi1pbnRlcndvcmsgY29tbWFuZCBsaW5lIG9wdGlvbiBpcyBhY3RpdmUuCi0rCi0gQ2hhbmdlcyBpbiAyLjMwOgotIAotICogQWRkIHN1cHBvcnQgZm9yIGxvYWN0aW9uIHZpZXdzIGluIERXQVJGIGRlYnVnIGxpbmUgaW5mb3JtYXRpb24uCi1JbmRleDogZ2l0L2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9wcjIxNDU4LmQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vcHIyMTQ1OC5kCi0rKysgZ2l0L2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9wcjIxNDU4LmQKLUBAIC0xLDggKzEsOSBAQAotKyNhczogLW10aHVtYi1pbnRlcndvcmsKLSAjb2JqZHVtcDogLWQgLS1wcmVmaXgtYWRkcmVzc2VzIC0tc2hvdy1yYXctaW5zbgotICNuYW1lOiBBRFIoTCkgZm9yIFRodW1iIGZ1bmN0aW9ucwotICNza2lwOiAqLSotcGUgKi13aW5jZS0qICotKi1jb2ZmICotKi12eHdvcmtzCi0gCi0tIyBUZXN0IHRoYXQgdXNpbmcgQURSKEwpIG9uIHRodW1iIGZ1bmN0aW9uIHN5bWJvbHMgc2V0cyB0aGUgVCBiaXQuCi0rIyBUZXN0IHRoYXQgdXNpbmcgQURSKEwpIG9uIHRodW1iIGZ1bmN0aW9uIHN5bWJvbHMgc2V0cyB0aGUgVCBiaXQgd2hlbiAtbXRodW1iLWludGVyd29yayBpcyBhY3RpdmUuCi0gCi0gLio6ICtmaWxlIGZvcm1hdCAuKmFybS4qCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKaW5kZXggMmRmODM2MC4uNmJkYjQwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmUxYjVlMjRhNjc1OWRlN2Y3M2FhNjA2MGE1NzQ4NDhkOTEzMWI1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGE5OWYwNTgwMzBjODY3OTRiYjk2YjU4MmE3ZGJkNjMxZjk2M2IwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NTg6NTQgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMS8xNV0gYmludXRpbHMtY3Jvc3NzZGs6IEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKQEAgLTE4LDEwICsxOCwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvZ2Vuc2NyaXB0cy5zaCBiL2xkL2dlbnNjcmlwdHMuc2gKLWluZGV4IDg3MzI0MjJiM2EuLjFmMjU3ZTk5Y2EgMTAwNzU1CitpbmRleCAzNzBiMjIyNjlkLi5hNWMzNjdhYThmIDEwMDc1NQogLS0tIGEvbGQvZ2Vuc2NyaXB0cy5zaAogKysrIGIvbGQvZ2Vuc2NyaXB0cy5zaAotQEAgLTI3Nyw2ICsyNzcsNyBAQCBEQVRBX0FMSUdOTUVOVF91PSIke0RBVEFfQUxJR05NRU5UX3UtJHtEQVRBX0FMSUdOTUVOVF9yfX0iCitAQCAtMjc5LDYgKzI3OSw3IEBAIERBVEFfQUxJR05NRU5UX3U9IiR7REFUQV9BTElHTk1FTlRfdS0ke0RBVEFfQUxJR05NRU5UX3J9fSIKICBMRF9GTEFHPXIKICBEQVRBX0FMSUdOTUVOVD0ke0RBVEFfQUxJR05NRU5UX3J9CiAgREVGQVVMVF9EQVRBX0FMSUdOTUVOVD0iQUxJR04oJHtTRUdNRU5UX1NJWkV9KSIKQEAgLTI5LDcgKzI5LDcgQEAKICAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovIgogICAgLiAke0NVU1RPTUlaRVJfU0NSSVBUfQogICAgLiAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKLUBAIC0yODUsMTAgKzI4NiwxMiBAQCBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgorQEAgLTI4NywxMCArMjg4LDEyIEBAIERFRkFVTFRfREFUQV9BTElHTk1FTlQ9IkFMSUdOKCR7U0VHTUVOVF9TSVpFfSkiCiAgTERfRkxBRz11CiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF91fQogIENPTlNUUlVDVElORz0iICIKQEAgLTQzLDcgKzQzLDcgQEAKICBEQVRBX0FMSUdOTUVOVD0ke0RBVEFfQUxJR05NRU5UX30KICBSRUxPQ0FUSU5HPSIgIgogZGlmZiAtLWdpdCBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwotaW5kZXggOTc4N2FiNWRhYy4uMGM4YTkzYzJjOCAxMDA2NDQKK2luZGV4IDQ0NGFlZjI5NDIuLmFmYTk5ZjczNmQgMTAwNjQ0CiAtLS0gYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKICsrKyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogQEAgLTEzOSw4ICsxMzksOCBAQCBpZiB0ZXN0IC16ICIkREFUQV9TRUdNRU5UX0FMSUdOIjsgdGhlbgpAQCAtNTgsNSArNTgsNSBAQAogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCmluZGV4IGJhYzdmYjIuLjAyMDgyMTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDU4ZGRmMzhmYTUzYWJiNDhiNjlkZDc2ZTM5OGM3MzQ1MWFkMWE1ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZlNzhiMWM4OGMwNDBhNzQyYjdhZjgyNTQyYWM3ZWI5MmVkZGRhM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjM3OjA1IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMDIvMTVdIGJpbnV0aWxzLWNyb3NzOiBEbyBub3QgZ2VuZXJhdGUgbGlua2VyIHNjcmlwdApAQCAtMTksMTQgKzE5LDE0IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLSBsZC9nZW5zY3JpcHRzLnNoIHwgMjMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjMgZGVsZXRpb25zKC0pCisgbGQvZ2Vuc2NyaXB0cy5zaCB8IDI1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggMWYyNTdlOTljYS4uMTU4M2I3M2EyYiAxMDA3NTUKK2luZGV4IGE1YzM2N2FhOGYuLjZjYzllZWQ5NzYgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCi1AQCAtMTg5LDI5ICsxODksNiBAQCBhcHBlbmRfdG9fbGliX3BhdGgoKQorQEAgLTE4OSwzMSArMTg5LDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKICAgIGZpCiAgfQogIApAQCAtNDQsMTAgKzQ0LDEyIEBACiAtICAgICMgYmVjYXVzZSA2NGJpdCBsaWJyYXJpZXMgbWF5IGJlIGluIGJvdGggcGxhY2VzLCBkZXBlbmRpbmcgb24KIC0gICAgIyBjcm9zcy1kZXZlbG9wbWVudCBzZXR1cCBtZXRob2QgKGUuZy46IC91c3IvczM5MHgtbGludXgvbGliNjQKIC0gICAgIyB2cy4gL3Vzci9zMzkwLWxpbnV4L2xpYjY0KQotLSAgICBjYXNlICIke05BVElWRX06JHtMSUJQQVRIX1NVRkZJWH06JHtUT09MX0xJQn0iIGluCi0tICAgICAgOiogfCAqOjoqIHwgKjoqOioke0xJQlBBVEhfU1VGRklYfSkgOzsKLS0gICAgICAqKSBsaWJzPSIke2V4ZWNfcHJlZml4fS8ke3RhcmdldF9hbGlhc30vbGliJHtMSUJQQVRIX1NVRkZJWH0iIDs7Ci0tICAgIGVzYWMKKy0gICAgZm9yIGxpYnBhdGhfc3VmZml4IGluICR7TElCUEFUSF9TVUZGSVh9OyBkbworLSAgICAgIGNhc2UgIiR7TkFUSVZFfToke2xpYnBhdGhfc3VmZml4fToke1RPT0xfTElCfSIgaW4KKy0JOiogfCAqOjoqIHwgKjoqOioke2xpYnBhdGhfc3VmZml4fSkgOzsKKy0JKikgbGlicz0iJHtleGVjX3ByZWZpeH0vJHt0YXJnZXRfYWxpYXN9L2xpYiR7bGlicGF0aF9zdWZmaXh9IiA7OworLSAgICAgIGVzYWMKKy0gICAgZG9uZQogLSAgICBsaWJzPSIke2V4ZWNfcHJlZml4fS8ke1RPT0xfTElCfS9saWIgJHtsaWJzfSIKIC0gIGZpCiAtICBhcHBlbmRfdG9fbGliX3BhdGggJHtsaWJzfQpAQCAtNTcsNSArNTksNSBAQAogICAgbGlicz0ke05BVElWRV9MSUJfRElSU30KICAgIGlmIFsgIngke05BVElWRX0iID0gInh5ZXMiIF0gOyB0aGVuCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCmluZGV4IDMwNmFmZTcuLjE1MTkzYzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNTA4OWJlODhmNjcwYmNhZGY3ZGIwZTc3ODg5NGY5MDBiMmMwNWQ3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGM2ZmQ4ZjVlYjliYzdjMGQwMmYxYTk4YWQ4NmUzOTVkNGQyYWIzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCkBAIC0xNCwxMCArMTQsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAyZDYxNWE5OTk2Li5jNGFkNDVjMDZjIDEwMDc1NQoraW5kZXggMDhkZDM1YzNlYS4uODE1ZTc0ZGRiNyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtMzgzNSw3ICszODM1LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorQEAgLTM4NTUsNyArMzg1NSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KICAgIG52cHR4Ki0qLSopCiAgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlic3NwIHRhcmdldC1saWJzdGRjKystdjMgdGFyZ2V0LWxpYm9iamMiCiAgICAgIDs7CkBAIC0yNywxMCArMjcsMTAgQEAKICAgICAgICBzaCotKi1lbGYpCiAgICAgICAgICAgOzsKIGRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IDFlMjUxMDI5NzYuLjZiNDNiZjJiMTggMTAwNzU1CitpbmRleCA0NDdjZWE3ODg0Li5hNzMwZTIwNTA5IDEwMDc1NQogLS0tIGEvZ3Byb2YvY29uZmlndXJlCiArKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC01ODc0LDYgKzU4NzQsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorQEAgLTYxNjIsNiArNjE2MiwxMSBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICAgOzsKICAKQEAgLTQzLDUgKzQzLDUgQEAKICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaAppbmRleCAzZTI5YzU4Li5iZjFjMWJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGEwZTg5M2VhMDk0YzQ4ZmE4MDMwNDZmZmE4OWUzMTkwN2FlZTA1OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ4YWQ1MjkyYjEwNDA4ZDRlNWQ1NzM5MDIyNzUzYTcxODNhMWNiYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA5OjU4ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDQvMTVdIFBvaW50IHNjcmlwdHMgbG9jYXRpb24gdG8gbGliZGlyCkBAIC0xMiw3ICsxMiw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5hbSBiL2xkL01ha2VmaWxlLmFtCi1pbmRleCA2MjQzYzEyNTI4Li4zYzVkNmM4MjAyIDEwMDY0NAoraW5kZXggZDg2YWQwOTQwYy4uYzk1YjBlZjAyNSAxMDA2NDQKIC0tLSBhL2xkL01ha2VmaWxlLmFtCiArKysgYi9sZC9NYWtlZmlsZS5hbQogQEAgLTU3LDcgKzU3LDcgQEAgZW5kaWYKQEAgLTI1LDEwICsyNSwxMCBAQAogIEVNVUwgPSBARU1VTEAKICBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgotaW5kZXggNzYwYzAzN2Y5ZC4uNmRlYTY5Mjg2OSAxMDA2NDQKK2luZGV4IDQ3OTJiMmIwMTMuLjc4OWRmMmQwMWIgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5pbgogKysrIGIvbGQvTWFrZWZpbGUuaW4KLUBAIC00NDYsNyArNDQ2LDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQorQEAgLTU2Myw3ICs1NjMsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCiAgIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgogICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgogICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgpAQCAtMzgsNSArMzgsNSBAQAogIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCiAgSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAppbmRleCAyZjQ5OTY5Li4xZjU4OTcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1MThhYmIxOTVkMGViNDdkOGVlZjU4MWQ3ZmQwYTVmZDlmYTczZjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3OWU1MzUxMGIxZjllMTZhMjFkYjMxMjY5OGZiMWMxYzQ0MjQ4MWU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMToyNzoxNyArMDAwMAogU3ViamVjdDogW1BBVENIIDA1LzE1XSBPbmx5IGdlbmVyYXRlIGFuIFJQQVRIIGVudHJ5IGlmIExEX1JVTl9QQVRIIGlzIG5vdApAQCAtMTUsMTAgKzE1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi1pbmRleCBjMDkyNWZjOWI5Li43ZDc2NzBhODlmIDEwMDY0NAoraW5kZXggMWFkOWQ2YjZmYS4uNmEwMjVhNDViNCAxMDA2NDQKIC0tLSBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQogKysrIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi1AQCAtMTQ3MCw2ICsxNDcwLDggQEAgZnJhZ21lbnQgPDxFT0YKK0BAIC0xNDcxLDYgKzE0NzEsOCBAQCBmcmFnbWVudCA8PEVPRgogIAkgICAgICAmJiBjb21tYW5kX2xpbmUucnBhdGggPT0gTlVMTCkKICAJICAgIHsKICAJICAgICAgcGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CkBAIC0yNyw3ICsyNyw3IEBACiAgCSAgICAgIGlmIChwYXRoCiAgCQkgICYmIGdsZCR7RU1VTEFUSU9OX05BTUV9X3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSkpCiAgCQlicmVhazsKLUBAIC0xNzUwLDYgKzE3NTIsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKK0BAIC0xNzUxLDYgKzE3NTMsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKICAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOwogICAgaWYgKHJwYXRoID09IE5VTEwpCiAgICAgIHJwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKQEAgLTM3LDUgKzM3LDUgQEAKICAgIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQogICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCmluZGV4IDMzM2UyZWUuLjg1NTBkZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmYWQwNTNjYzU5YmFhNjI3NzE4MmIwZmM5MDQxNWEyMTQwNjBiYTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMWY2ZDI4ODk3MjVhZDU5MmFiNzg5NTM0Y2E5Yjg1ODA3M2RmNGQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDQ6MDcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNi8xNV0gVXNlIGxpYnRvb2wgMi40CkBAIC05LDI3ICs5LDI3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLSBiZmQvY29uZmlndXJlICAgICAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KKyBiZmQvY29uZmlndXJlICAgICAgICB8IDEzMjIgKysrKysrKysrKysrKystLS0tLQogIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQotIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQotIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMxNCArKysrKysrKysrKysrKysrKy0tLS0tLQotIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKysrKy0tLS0tLQotIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQotIGxpYnRvb2wubTQgICAgICAgICAgIHwgMTA4MCArKysrKysrKysrKysrLS0tLS0tCi0gbHRtYWluLnNoICAgICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCisgYmludXRpbHMvY29uZmlndXJlICAgfCAxMzIwICsrKysrKysrKysrKysrLS0tLS0KKyBnYXMvY29uZmlndXJlICAgICAgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQorIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyNyArKysrKysrKysrKysrKy0tLS0tCisgbGQvY29uZmlndXJlICAgICAgICAgfCAxNjk1ICsrKysrKysrKysrKysrKysrKy0tLS0tLQorIGxpYnRvb2wubTQgICAgICAgICAgIHwgMTA4MCArKysrKysrKysrKy0tLS0tCisgbHRtYWluLnNoICAgICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogIGx0b3B0aW9ucy5tNCAgICAgICAgIHwgICAgMiArLQogIGx0dmVyc2lvbi5tNCAgICAgICAgIHwgICAxMiArLQogIGx0fm9ic29sZXRlLm00ICAgICAgIHwgICAgMiArLQotIG9wY29kZXMvY29uZmlndXJlICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQorIG9wY29kZXMvY29uZmlndXJlICAgIHwgMTMyMiArKysrKysrKysrKysrKy0tLS0tCiAgb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCi0gemxpYi9jb25maWd1cmUgICAgICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gMTQgZmlsZXMgY2hhbmdlZCwgOTkyNiBpbnNlcnRpb25zKCspLCAzNjkzIGRlbGV0aW9ucygtKQorIHpsaWIvY29uZmlndXJlICAgICAgIHwgMTMyMCArKysrKysrKysrKysrKy0tLS0tCisgMTQgZmlsZXMgY2hhbmdlZCwgOTk0OCBpbnNlcnRpb25zKCspLCAzNzAzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKLWluZGV4IDZjMmIyNGViZTMuLjVmZGQ3MjNiN2YgMTAwNzU1Ci0tLS0gYS9iZmQvY29uZmlndXJlCi0rKysgYi9iZmQvY29uZmlndXJlCi1AQCAtNjcyLDYgKzY3Miw5IEBAIE9UT09MCitJbmRleDogZ2l0L2JmZC9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9iZmQvY29uZmlndXJlCisrKysgZ2l0L2JmZC9jb25maWd1cmUKK0BAIC03MDQsNiArNzA0LDkgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTM5LDcgKzM5LDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzg1LDYgKzc4OCw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC04MjIsNiArODI1LDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC00Nyw3ICs0Nyw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV9wbHVnaW5zCiAgZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NjEsNiArMTQ2NSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE1MDQsNiArMTUwOCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtNTYsNyArNTYsNyBAQAogICAgLS13aXRoLW1tYXAgICAgICAgICAgICAgdHJ5IHVzaW5nIG1tYXAgZm9yIEJGRCBpbnB1dCBmaWxlcyBpZiBhdmFpbGFibGUKICAgIC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9RElSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGVidWcgaW5mbyBpbiBESVIKLUBAIC01MzkzLDggKzUzOTksOCBAQCBlc2FjCitAQCAtNTY5Myw4ICs1Njk5LDggQEAgZXNhYwogIAogIAogIApAQCAtNjcsNyArNjcsNyBAQAogIAogIAogIAotQEAgLTU0MzQsNyArNTQ0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitAQCAtNTczNCw3ICs1NzQwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQogICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgpAQCAtNzYsNyArNzYsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTYxMjAsOCArNjEyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CitAQCAtNjQyMCw4ICs2NDI2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdQogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtODcsMTMgKzg3LDEzIEBACiAgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02MTcwLDYgKzYxNzYsODAgQEAgZXNhYworQEAgLTY0NzAsNiArNjQ3Niw4MCBAQCBlc2FjCiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2FzZSAkaG9zdCBpbgpAQCAtMTQwLDcgKzE0MCw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCkBAIC0xNjcsOCArMTY3LDggQEAKICsKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MTg2LDYgKzYyNjYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NDg2LDYgKzY1NjYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KICBlc2FjCiAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTE4MCw3ICsxODAsNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjM1NCw3ICs2NDM5LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNjY1NCw3ICs2NzM5LDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtMTkwLDcgKzE5MCw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTY1MDgsNiArNjU5NCwyMSBAQCBlc2FjCitAQCAtNjgwOCw2ICs2ODk0LDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtMjEyLDcgKzIxMiw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjUyMSwxMSArNjYyMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjgyMyw5ICs2OTI0LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC0yMjYsOCArMjI2LDYgQEAKICsKICsKICsKLSAKLSAKICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAtICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCkBAIC0yMzUsNyArMjMzLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtMjQ3LDcgKzI0NSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0yNzUsNyArMjczLDcgQEAKICtzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KQEAgLTI4Nyw3ICsyODUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTMzNSw3ICszMzMsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKQEAgLTM3OCwxNyArMzc2LDE3IEBACiArc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjU0MSw3ICs2Nzk1LDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY4NDEsNyArNzA5NSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKICsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTY1NjEsMTEgKzY4MTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC02ODYxLDExICs3MTE1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTQwNiwxNyArNDA0LDE3IEBACiArc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjU4MSw3ICs2ODM5LDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY4ODEsNyArNzEzOSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02NjAwLDYgKzY4NTgsMTAgQEAgZWxzZQorQEAgLTY5MDAsNiArNzE1OCwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtNDI3LDcgKzQyNSw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTY2MTEsMTYgKzY4NzMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNjkxMSwxNiArNzE3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTQ0OSwxNiArNDQ3LDE2IEBACiArCiArCiArCi0rCisgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KICsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiArLyogZW5kIGNvbmZkZWZzLmguICAqLwotKworIAogK2ludAogK21haW4gKCkKICt7CkBAIC00OTEsMTEgKzQ4OSwxMSBAQAogIAogK2ZpCiArcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCisrCiArZmkKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQogKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCisrCiAraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgogKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQogK2Vsc2UKQEAgLTUwNCw3ICs1MDIsNyBAQAogIAogIAogIAotQEAgLTY5NjIsOCArNzI4MCw4IEBAIGVzYWMKK0BAIC03MjYyLDggKzc1ODAsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTUxNSw3ICs1MTMsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC02OTk5LDYgKzczMTcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNzI5OSw2ICs3NjE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTUyMyw3ICs1MjEsNyBAQAogIAogICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgICBwaXBlX3dvcmtzPW5vCi1AQCAtNzA0MCw2ICs3MzU5LDE4IEBAIF9MVF9FT0YKK0BAIC03MzQwLDYgKzc2NTksMTggQEAgX0xUX0VPRgogICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CkBAIC01NDIsNyArNTQwLDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC03MDUxLDcgKzczODIsNyBAQCBfTFRfRU9GCitAQCAtNzM1MSw3ICs3NjgyLDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTU1MSw3ICs1NDksNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTcwNzcsOCArNzQwOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNzM3Nyw4ICs3NzA4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC01NjIsNyArNTYwLDcgQEAKICAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKICAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03MDg4LDggKzc0MTksOCBAQCBfTFRfRU9GCitAQCAtNzM4OCw4ICs3NzE5LDggQEAgX0xUX0VPRgogICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgCSAgICBwaXBlX3dvcmtzPXllcwogIAkgIGZpCkBAIC01NzMsNyArNTcxLDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTcxMjYsNiArNzQ1NywxNiBAQCBlbHNlCitAQCAtNzQyNiw2ICs3NzU3LDIwIEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC01ODcsMjAgKzU4NSwxNyBAQAogKwogKwogKworKworKworKworKwogIAogIAogIAotQEAgLTcxNDIsNiArNzQ4Myw0NSBAQCBmaQorQEAgLTc0NDUsNiArNzc5MCw0MSBAQCBmaQogIAogIAogIAotKwotKwotKwotKwotKwotKwotKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CiArCkBAIC02MjcsMTYgKzYyMiwxOSBAQAogKyAqKQogKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CiArJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKICsgICA7OwogK2VzYWMKICsKICsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKICskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorKworKworKwogIAogIAotIAotQEAgLTczNTMsNiArNzczMywxMjMgQEAgZXNhYworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgorQEAgLTc2NTMsNiArODAzMywxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtNjQ1LDcgKzY0Myw3IEBACiArc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC02NTcsNyArNjU1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC02ODUsNyArNjgzLDcgQEAKICtzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC02OTcsNyArNjk1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNzM1LDcgKzczMyw3IEBACiArdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCkBAIC03NjAsNyArNzU4LDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03OTE2LDYgKzg0MTMsOCBAQCBfTFRfRU9GCitAQCAtODIxNiw2ICs4NzEzLDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC03NjksNyArNzY3LDcgQEAKICAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQogIF9MVF9FT0YKLUBAIC04MDgwLDcgKzg1NzksOCBAQCBmaQorQEAgLTgzODAsNyArODg3OSw4IEBAIGZpCiAgTElCVE9PTF9ERVBTPSIkbHRtYWluIgogIAogICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCkBAIC03NzksNyArNzc3LDcgQEAKICAKICAKICAKLUBAIC04MTY5LDcgKzg2NjksNyBAQCBhaXgzKikKK0BAIC04NDY5LDcgKzg5NjksNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtNzg4LDcgKzc4Niw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NDY3LDggKzg5NjcsNiBAQCBmaQorQEAgLTg3NjcsOCArOTI2Nyw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC03OTcsNyArNzk1LDcgQEAKICAKICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODYzNCw2ICs5MTMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODkzNCw2ICs5NDMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC04MTAsNyArODA4LDcgQEAKICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg2OTYsNyArOTIwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODk5Niw3ICs5NTAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTgxOSw3ICs4MTcsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODc1MywxMyArOTI1NywxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtOTA1MywxMyArOTU1NywxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtODMyLDcgKzgzMCw3IEBACiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCkBAIC04NDMsNyArODQxLDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg4MjAsNiArOTMyOCwxMSBAQCBmaQorQEAgLTkxMjAsNiArOTYyOCwxMSBAQCBmaQogIAogIAogIApAQCAtODU1LDcgKzg1Myw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtOTE3MCw3ICs5NjgzLDggQEAgX0xUX0VPRgorQEAgLTk0NzAsNyArOTk4Myw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC04NjUsNyArODYzLDcgQEAKICAKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkyNjksMTIgKzk3ODMsMTIgQEAgX0xUX0VPRgorQEAgLTk1NjksMTIgKzEwMDgzLDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtODgwLDcgKzg3OCw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTI4OCw4ICs5ODAyLDggQEAgX0xUX0VPRgorQEAgLTk1ODgsOCArMTAxMDIsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtODkxLDcgKzg4OSw3IEBACiAgICAgICAgZmkKICAgICAgICA7OwogIAotQEAgLTkzMDcsOCArOTgyMSw4IEBAIF9MVF9FT0YKK0BAIC05NjA3LDggKzEwMTIxLDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTkwMiw3ICs5MDAsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05MzU0LDggKzk4NjgsOCBAQCBfTFRfRU9GCitAQCAtOTY1NCw4ICsxMDE2OCw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC05MTMsNyArOTExLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTQ4NSw3ICs5OTk5LDEzIEBAIF9MVF9FT0YKK0BAIC05Nzg1LDcgKzEwMjk5LDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtOTIxLDE0ICs5MTksMTQgQEAKICsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05NDk4LDIyICsxMDAxOCwyOSBAQCBtYWluICgpCitAQCAtOTc5OCwyMiArMTAzMTgsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTk3MSw3ICs5NjksNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTUyNSw3ICsxMDA1MiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05ODI1LDcgKzEwMzUyLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC05NzksMTQgKzk3NywxNCBAQAogKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTk1MzgsMjIgKzEwMDcxLDI5IEBAIG1haW4gKCkKK0BAIC05ODM4LDIyICsxMDM3MSwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMTAyOSw3ICsxMDI3LDcgQEAKICAKICAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05NTk4LDIwICsxMDEzOCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05ODk4LDIwICsxMDQzOCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KQEAgLTExMDcsNyArMTEwNSw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NjcyLDcgKzEwMjU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTk3Miw3ICsxMDU1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC0xMTE2LDcgKzExMTQsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk2ODAsNyArMTAyNjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05OTgwLDcgKzEwNTYzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTExMjUsNyArMTEyMyw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgIGZpCi1AQCAtOTY5Niw3ICsxMDI3OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk5OTYsNyArMTA1NzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC0xMTM0LDcgKzExMzIsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtOTcyMCwxMCArMTAzMDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTAwMjAsMTAgKzEwNjAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtMTE0Nyw3ICsxMTQ1LDcgQEAKICAJICA7OwogIAllc2FjCiAgICAgICAgZWxzZQotQEAgLTk4MDIsMjMgKzEwMzg1LDM2IEBAIGZpCitAQCAtMTAxMDIsMjMgKzEwNjg1LDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTExNjIsNyArMTE2MCw3IEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtMTE5Miw3ICsxMTkwLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk5MDMsNyArMTA0OTksNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC0xMDIwMyw3ICsxMDc5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwpAQCAtMTIwMSw3ICsxMTk5LDcgQEAKICAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgIGVsc2UKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTkyMiw5ICsxMDUxOCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTEwMjIyLDkgKzEwODE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC0xMjEzLDcgKzEyMTEsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNTAwLDggKzExMDk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwODAwLDggKzExMzk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTEyMjUsNyArMTIyMyw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA1MzQsMTMgKzExMTMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDgzNCwxMyArMTE0MzEsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC0xMjk4LDcgKzEyOTYsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTA2MzIsNyArMTEyODcsNyBAQCBoYWlrdSopCitAQCAtMTA5MzIsNyArMTE1ODcsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTEzMDcsNyArMTMwNSwxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMTQ3MiwxMCArMTIxMjcsMTAgQEAgZWxzZQorQEAgLTExNzI4LDcgKzEyMzgzLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE3MzEgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNzcyLDEwICsxMjQyNywxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTEzMjAsNyArMTMyNywxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE1NzgsMTAgKzEyMjMzLDEwIEBAIGVsc2UKK0BAIC0xMTgzNCw3ICsxMjQ4OSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExODM3ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTg3OCwxMCArMTI1MzMsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xMzMzLDcgKzEzNDksNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTQxNzIsNyArMTQ4MjcsNyBAQCBTSEFSRURfTERGTEFHUz0KK0BAIC0xNDUyNSw3ICsxNTE4MCw3IEBAIFNIQVJFRF9MREZMQUdTPQogIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCiAgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAogICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCkBAIC0xMzQyLDcgKzEzNTgsNyBAQAogICAgZmkKICAKICAjIE1vcmUgaGFja3MgdG8gYnVpbGQgRExMcyBvbiBXaW5kb3dzLgotQEAgLTE2ODc5LDEzICsxNzUzNCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTcxMzksMTMgKzE3Nzk0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV8KICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTEzNjMsNyArMTM3OSw3IEBACiAgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjkwMCwxNCArMTc1NjIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKK0BAIC0xNzE2MCwxNCArMTc4MjIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTEzODIsNyArMTM5OCw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY5NDAsMTIgKzE3NjA1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTcyMDAsMTIgKzE3ODY1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2QKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xMzk2LDcgKzE0MTIsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTcwMDAsOCArMTc2NjUsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE3MjYwLDggKzE3OTI1LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtMTQxMCw3ICsxNDI2LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTcwMTEsMTIgKzE3NjgxLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE3MjcxLDEyICsxNzk0MSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtMTQyNiw3ICsxNDQyLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xNzAzMiw3ICsxNzcwNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xNzI5Miw3ICsxNzk2NCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTE0MzQsNyArMTQ1MCw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNzA2OCw2ICsxNzczOSw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xNzMyOCw2ICsxNzk5OSw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC0xNDQyLDcgKzE0NTgsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE3ODQ3LDcgKzE4NTE5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE4MTE2LDcgKzE4Nzg4LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtMTQ1Miw3ICsxNDY4LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTc5NTAsMTkgKzE4NjIzLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE4MjE5LDE5ICsxODg5Miw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC0xNDk2LDcgKzE1MTIsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTc5OTIsNiArMTg2ODgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xODI2MSw2ICsxODk1NywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTE1MDksNyArMTUyNSw3IEBACiAgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiAgb2JqZGlyPSRvYmpkaXIKICAKLUBAIC0xODAwMSw2ICsxODcwMyw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECitAQCAtMTgyNzAsNiArMTg5NzIsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiAgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogIApAQCAtMTUxOSw3ICsxNTM1LDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTgxMTUsMTIgKzE4ODIwLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xODM4NCwxMiArMTkwODksMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC0xNTM1LDcgKzE1NTEsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTE4MjA3LDkgKzE4OTEyLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTE4NDc2LDkgKzE5MTgxLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTE1NDUsNyArMTU2MSw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKICAKLUBAIC0xODIyNSw2ICsxODkyNyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCitAQCAtMTg0OTQsNiArMTkxOTYsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKICAKQEAgLTE1NTUsNyArMTU3MSw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTgyNTcsMjEwICsxODk2MiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTg1MjYsMjEwICsxOTIzMSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTE3NTcsMTUgKzE3NzMsOSBAQAogLV9MVF9FT0YKIC0gICAgOzsKIC0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKICsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCisgCiArICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCiArICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAogK2Z1bmNfZGlybmFtZSAoKVwKQEAgLTE5MjMsMTcgKzE5MzMsMjAgQEAKICsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CiArJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KICtmaQotKwotKworIAorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKLWluZGV4IDIzNDJmM2ZhZWEuLmE2NDUxZmNjZGEgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlndXJlLmFjCi0rKysgYi9iZmQvY29uZmlndXJlLmFjCi1AQCAtMjU0LDcgKzI1NCw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCitJbmRleDogZ2l0L2JmZC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9iZmQvY29uZmlndXJlLmFjCisrKysgZ2l0L2JmZC9jb25maWd1cmUuYWMKK0BAIC0yOTMsNyArMjkzLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKICAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCiAgY2hhbmdlcXVvdGUoWyxdKWRubAogICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCkBAIC0xOTQyLDExICsxOTU1LDExIEBACiAgICBmaQogIAogICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCi1pbmRleCA1ZDljOTEwNWE3Li5hNjViMmI0NTE4IDEwMDc1NQotLS0tIGEvYmludXRpbHMvY29uZmlndXJlCi0rKysgYi9iaW51dGlscy9jb25maWd1cmUKLUBAIC02NTksOCArNjU5LDExIEBAIE9UT09MCitJbmRleDogZ2l0L2JpbnV0aWxzL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2JpbnV0aWxzL2NvbmZpZ3VyZQorKysrIGdpdC9iaW51dGlscy9jb25maWd1cmUKK0BAIC02ODgsOCArNjg4LDExIEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC0xOTU4LDcgKzE5NzEsNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03NzIsNiArNzc1LDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTgwNiw2ICs4MDksNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTE5NjYsNyArMTk3OSw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV9wbHVnaW5zCiAgZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NDQsNiArMTQ0OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE0ODIsNiArMTQ4Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtMTk3NSw3ICsxOTg4LDcgQEAKICAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KICAgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKLUBAIC01MTYwLDggKzUxNjYsOCBAQCBlc2FjCitAQCAtNTQ1Myw4ICs1NDU5LDggQEAgZXNhYwogIAogIAogIApAQCAtMTk4Niw3ICsxOTk5LDcgQEAKICAKICAKICAKLUBAIC01MjAxLDcgKzUyMDcsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTU0OTQsNyArNTUwMCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTE5OTUsNyArMjAwOCw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTg4Nyw4ICs1ODkzLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC02MTgwLDggKzYxODYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1CiAgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKICB4c2lfc2hlbGw9bm8KICAoIF9sdF9kdW1teT0iYS9iL2MiCkBAIC0yMDA2LDEzICsyMDE5LDEzIEBACiAgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01OTM3LDYgKzU5NDMsODAgQEAgZXNhYworQEAgLTYyMzAsNiArNjIzNiw4MCBAQCBlc2FjCiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2FzZSAkaG9zdCBpbgpAQCAtMjA1OSw3ICsyMDcyLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KQEAgLTIwODYsOCArMjA5OSw4IEBACiArCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTk1Myw2ICs2MDMzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjI0Niw2ICs2MzI2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0yMDk5LDcgKzIxMTIsNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjEyMSw3ICs2MjA2LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNjQxNCw3ICs2NDk5LDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtMjEwOSw3ICsyMTIyLDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNjI3NSw2ICs2MzYxLDIxIEBAIGVzYWMKK0BAIC02NTY4LDYgKzY2NTQsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC0yMTMxLDcgKzIxNDQsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyOTAsOSArNjM5MSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjU4Myw5ICs2Njg0LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC0yMTUwLDcgKzIxNjMsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCkBAIC0yMTYyLDcgKzIxNzUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMjE5MCw3ICsyMjAzLDcgQEAKICtzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KQEAgLTIyMDIsNyArMjIxNSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMjI1MCw3ICsyMjYzLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCkBAIC0yMjk1LDE3ICsyMzA4LDE3IEBACiArc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjMwOCw3ICs2NTYyLDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY2MDEsNyArNjg1NSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKICsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYzMjgsMTEgKzY1ODIsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC02NjIxLDExICs2ODc1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTIzMjMsMTcgKzIzMzYsMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzQ4LDcgKzY2MDYsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjY0MSw3ICs2ODk5LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKICsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYzNjcsNiArNjYyNSwxMCBAQCBlbHNlCitAQCAtNjY2MCw2ICs2OTE4LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC0yMzQ0LDcgKzIzNTcsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02Mzc4LDEyICs2NjQwLDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTY2NzEsMTIgKzY5MzMsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC0yMzU5LDEzICsyMzcyLDEzIEBACiAgCiAgCiAgCi1AQCAtNjM5NSw2ICs2NjU1LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitAQCAtNjY4OCw2ICs2OTQ4LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KQEAgLTI0MjQsNyArMjQzNyw3IEBACiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KICBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTY3MjksOCArNzA0Nyw4IEBAIGVzYWMKK0BAIC03MDIyLDggKzczNDAsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTI0MzUsNyArMjQ0OCw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTY3NjYsNiArNzA4NCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC03MDU5LDYgKzczNzcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtMjQ0Myw3ICsyNDU2LDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTY4MDcsNiArNzEyNiwxOCBAQCBfTFRfRU9GCitAQCAtNzEwMCw2ICs3NDE5LDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtMjQ2Miw3ICsyNDc1LDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC02ODE4LDcgKzcxNDksNyBAQCBfTFRfRU9GCitAQCAtNzExMSw3ICs3NDQyLDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTI0NzEsNyArMjQ4NCw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNjg0NCw4ICs3MTc1LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC03MTM3LDggKzc0NjgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTI0ODIsNyArMjQ5NSw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjg1NSw4ICs3MTg2LDggQEAgX0xUX0VPRgorQEAgLTcxNDgsOCArNzQ3OSw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtMjQ5Myw3ICsyNTA2LDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTY4OTMsNiArNzIyNCwyMSBAQCBlbHNlCitAQCAtNzE4Niw2ICs3NTE3LDE4IEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC0yNTA5LDE4ICsyNTIyLDEzIEBACiArCiArCiArCi0rCi0rCi0rCiAgCiAgCiAgCi1AQCAtNjkwOCw2ICs3MjU0LDQwIEBAIGZpCitAQCAtNzIwNyw2ICs3NTUwLDQzIEBAIGZpCiAgCiAgCiAgCi0rCi0rCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KICsKQEAgLTI1NDcsMTYgKzI1NTUsMjEgQEAKICsgKikKICsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQogKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CiArICAgOzsKICtlc2FjCiArCiArIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiArJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03MTIwLDYgKzc1MDAsMTIzIEBAIGVzYWMKKysKKysKKysKKysKKysKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOworQEAgLTc0MTMsNiArNzc5MywxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtMjU2NSw3ICsyNTc4LDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTI1NzcsNyArMjU5MCw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMjYwNSw3ICsyNjE4LDcgQEAKICtzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC0yNjE3LDcgKzI2MzAsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0yNjU1LDcgKzI2NjgsNyBAQAogK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwpAQCAtMjY4MCw3ICsyNjkzLDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NjgzLDYgKzgxODAsOCBAQCBfTFRfRU9GCitAQCAtNzk3Niw2ICs4NDczLDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC0yNjg5LDcgKzI3MDIsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTc4NzgsNyArODM3Nyw4IEBAIGZpCitAQCAtODE3MSw3ICs4NjcwLDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTI2OTksNyArMjcxMiw3IEBACiAgCiAgCiAgCi1AQCAtNzk2Nyw3ICs4NDY3LDcgQEAgYWl4MyopCitAQCAtODI2MCw3ICs4NzYwLDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTI3MDgsNyArMjcyMSw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04MjY1LDggKzg3NjUsNiBAQCBmaQorQEAgLTg1NTgsOCArOTA1OCw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC0yNzE3LDcgKzI3MzAsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04NDMyLDYgKzg5MzAsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04NzI1LDYgKzkyMjMsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTI3MzAsNyArMjc0Myw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDk0LDcgKzg5OTgsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg3ODcsNyArOTI5MSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC0yNzM5LDcgKzI3NTIsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODU1MSwxMyArOTA1NSwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtODg0NCwxMyArOTM0OCwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtMjc1Miw3ICsyNzY1LDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKQEAgLTI3NjMsNyArMjc3Niw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NjE4LDYgKzkxMjYsMTEgQEAgZmkKK0BAIC04OTExLDYgKzk0MTksMTEgQEAgZmkKICAKICAKICAKQEAgLTI3NzUsNyArMjc4OCw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODk2OCw3ICs5NDgxLDggQEAgX0xUX0VPRgorQEAgLTkyNjEsNyArOTc3NCw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0yNzg1LDcgKzI3OTgsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTA2NywxMiArOTU4MSwxMiBAQCBfTFRfRU9GCitAQCAtOTM2MCwxMiArOTg3NCwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTI4MDAsNyArMjgxMyw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTA4Niw4ICs5NjAwLDggQEAgX0xUX0VPRgorQEAgLTkzNzksOCArOTg5Myw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC0yODExLDcgKzI4MjQsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC05MTA1LDggKzk2MTksOCBAQCBfTFRfRU9GCitAQCAtOTM5OCw4ICs5OTEyLDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTI4MjIsNyArMjgzNSw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTkxNTIsOCArOTY2Niw4IEBAIF9MVF9FT0YKK0BAIC05NDQ1LDggKzk5NTksOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMjgzMyw3ICsyODQ2LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTI4Myw3ICs5Nzk3LDEzIEBAIF9MVF9FT0YKK0BAIC05NTc2LDcgKzEwMDkwLDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMjg0MSwxNCArMjg1NCwxNCBAQAogKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTkyOTYsMjIgKzk4MTYsMjkgQEAgbWFpbiAoKQorQEAgLTk1ODksMjIgKzEwMTA5LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0yODkxLDcgKzI5MDQsNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTMyMyw3ICs5ODUwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk2MTYsNyArMTAxNDMsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTI4OTksMTQgKzI5MTIsMTQgQEAKICsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MzM2LDIyICs5ODY5LDI5IEBAIG1haW4gKCkKK0BAIC05NjI5LDIyICsxMDE2MiwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMjk0OSw3ICsyOTYyLDcgQEAKICAKICAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05Mzk2LDIwICs5OTM2LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk2ODksMjAgKzEwMjI5LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgpAQCAtMzAyNyw3ICszMDQwLDcgQEAKICAgICAgICA7OwogIAogICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk0NzAsNyArMTAwNTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NzYzLDcgKzEwMzQ2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTMwMzYsNyArMzA0OSw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTQ3OCw3ICsxMDA2MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk3NzEsNyArMTAzNTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtMzA0NSw3ICszMDU4LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05NDk0LDcgKzEwMDc3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTc4Nyw3ICsxMDM3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDEwKikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KQEAgLTMwNTQsNyArMzA2Nyw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgZmkKLUBAIC05NTE4LDEwICsxMDEwMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05ODExLDEwICsxMDM5NCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAJICA7OwogIAlpYTY0KikKQEAgLTMwNjcsNyArMzA4MCw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC05NjAwLDIzICsxMDE4MywzNiBAQCBmaQorQEAgLTk4OTMsMjMgKzEwNDc2LDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTMwODIsNyArMzA5NSw3IEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtMzExMiw3ICszMTI1LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk3MDEsNyArMTAyOTcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05OTk0LDcgKzEwNTkwLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC0zMTIxLDcgKzMxMzQsNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05NzIwLDkgKzEwMzE2LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtMTAwMTMsOSArMTA2MDksOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTMxMzMsNyArMzE0Niw3IEBACiAgICAgICAgZWxzZQogIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KICAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTAyOTgsOCArMTA4OTQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTA1OTEsOCArMTExODcsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICBuZWVkX3ZlcnNpb249bm8KICAgIG5lZWRfbGliX3ByZWZpeD1ubwogIApAQCAtMzE0NSw3ICszMTU4LDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDMzMiwxMyArMTA5MjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwNjI1LDEzICsxMTIyMiw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTMyMTgsNyArMzIzMSw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xMDQzMCw3ICsxMTA4NSw3IEBAIGhhaWt1KikKK0BAIC0xMDcyMyw3ICsxMTM3OCw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMzIyNyw3ICszMjQwLDE2IEBACiAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgICA7OwogIAotQEAgLTExMjcwLDEwICsxMTkyNSwxMCBAQCBlbHNlCitAQCAtMTE1MTksNyArMTIxNzQsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTUyMiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE1NjMsMTAgKzEyMjE4LDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtMzI0MCw3ICszMjYyLDE2IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTM3NiwxMCArMTIwMzEsMTAgQEAgZWxzZQorQEAgLTExNjI1LDcgKzEyMjgwLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE2MjggImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNjY5LDEwICsxMjMyNCwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTMyNTMsNyArMzI4NCw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTQ0NiwxMyArMTYxMDEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NzMxLDEzICsxNjM4NiwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfCiAgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0zMjc0LDcgKzMzMDUsNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0NjcsMTQgKzE2MTI5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTU3NTIsMTQgKzE2NDE0LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0zMjkzLDcgKzMzMjQsNyBAQAogIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NTA3LDEyICsxNjE3MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorQEAgLTE1NzkyLDEyICsxNjQ1NywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMzMwNyw3ICszMzM4LDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NTY3LDggKzE2MjMyLDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xNTg1Miw4ICsxNjUxNywxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTMzMjEsNyArMzM1Miw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTE1NTc4LDEyICsxNjI0OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xNTg2MywxMiArMTY1MzMsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTMzMzcsNyArMzM2OCw3IEBACiAgRFNZTVVUSUwgXAogIE5NRURJVCBcCiAgTElQTyBcCi1AQCAtMTU1OTksNyArMTYyNzEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCitAQCAtMTU4ODQsNyArMTY1NTYsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCkBAIC0zMzQ1LDcgKzMzNzYsNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTU2MzUsNiArMTYzMDYsNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTU5MjAsNiArMTY1OTEsNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtMzM1Myw3ICszMzg0LDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xNjM5Miw3ICsxNzA2NCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xNjY4Niw3ICsxNzM1OCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTMzNjMsNyArMzM5NCw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDk1LDE5ICsxNzE2OCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xNjc4OSwxOSArMTc0NjIsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtMzQwNyw3ICszNDM4LDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE2NTM3LDYgKzE3MjMzLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTY4MzEsNiArMTc1MjcsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfYwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC0zNDIwLDcgKzM0NTEsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTY1NDYsNiArMTcyNDgsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE2ODQwLDYgKzE3NTQyLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTM0MzAsNyArMzQ2MSw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTE2NjYwLDEyICsxNzM2NSwxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTY5NTQsMTIgKzE3NjU5LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtMzQ0Niw3ICszNDc3LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xNjc1Miw5ICsxNzQ1Nyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xNzA0Niw5ICsxNzc1MSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC0zNDU2LDcgKzM0ODcsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTY3NzAsNiArMTc0NzIsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE3MDY0LDYgKzE3NzY2LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0zNDY2LDcgKzM0OTcsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTE2ODAyLDIxMCArMTc1MDcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTE3MDk2LDIxMCArMTc4MDEsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0zNjY4LDE1ICszNjk5LDkgQEAKIC1fTFRfRU9GCiAtICAgIDs7CiAtICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCiArICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKworIAogKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgogKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKICtmdW5jX2Rpcm5hbWUgKClcCkBAIC0zODM0LDE3ICszODU5LDIwIEBACiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQogKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CiArZmkKLSsKLSsKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAKKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgICBjaG1vZCAreCAiJG9maWxlIgogIAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCBmYmFjOGY0NGQ1Li5hNDBhYzIxNDRmIDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTY1MCw4ICs2NTAsMTEgQEAgT1RPT0wKK0luZGV4OiBnaXQvZ2FzL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2dhcy9jb25maWd1cmUKKysrKyBnaXQvZ2FzL2NvbmZpZ3VyZQorQEAgLTY4MSw4ICs2ODEsMTEgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTM4NTYsNyArMzg4NCw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTc2Myw2ICs3NjYsNyBAQCBlbmFibGVfc3RhdGljCitAQCAtNzk5LDYgKzgwMiw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtMzg2NCw3ICszODkyLDE2IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV9wbHVnaW5zCiAgZW5hYmxlX2xhcmdlZmlsZQotQEAgLTQ5MjEsOCArNDkyNSw4IEBAIGVzYWMKK0BAIC0xNDgyLDYgKzE0ODYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtY3B1PUNQVSAgICAgICAgICBkZWZhdWx0IGNwdSB2YXJpYW50IGlzIENQVSAoY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBBUkMpCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKK0BAIC01MjY5LDggKzUyNzUsOCBAQCBlc2FjCiAgCiAgCiAgCkBAIC0zODc1LDcgKzM5MTIsNyBAQAogIAogIAogIAotQEAgLTQ5NjIsNyArNDk2Niw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitAQCAtNTMxMCw3ICs1MzE2LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQogICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgpAQCAtMzg4NCw3ICszOTIxLDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01NjQ4LDggKzU2NTIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworQEAgLTU5OTYsOCArNjAwMiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHUKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTM4OTUsMTMgKzM5MzIsMTMgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU2OTgsNiArNTcwMiw4MCBAQCBlc2FjCitAQCAtNjA0Niw2ICs2MDUyLDgwIEBAIGVzYWMKICAKICAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXNlICRob3N0IGluCkBAIC0zOTQ4LDcgKzM5ODUsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgpAQCAtMzk3NSw4ICs0MDEyLDggQEAKICsKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01NzE0LDYgKzU3OTIsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MDYyLDYgKzYxNDIsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KICBlc2FjCiAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTM5ODgsNyArNDAyNSw3IEBACiAgICBkYXJ3aW4qKQogICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01ODgyLDcgKzU5NjUsOCBAQCBtaW5ndyogfCBwdzMyKikKK0BAIC02MjMwLDcgKzYzMTUsOCBAQCBtaW5ndyogfCBwdzMyKikKICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgICBlbHNlCkBAIC0zOTk4LDcgKzQwMzUsNyBAQAogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgICBmaQogICAgOzsKLUBAIC02MDM2LDYgKzYxMjAsMjEgQEAgZXNhYworQEAgLTYzODQsNiArNjQ3MCwyMSBAQCBlc2FjCiAgZmkKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKICAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KQEAgLTQwMjAsNyArNDA1Nyw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjA1MSw5ICs2MTUwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02Mzk5LDkgKzY1MDAsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGkKICAKICAKICAKQEAgLTQwMzQsMTIgKzQwNzEsMTQgQEAKICsKICsKICsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgogKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCkBAIC00MDUxLDcgKzQwOTAsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNDA3OSw3ICs0MTE4LDcgQEAKICtzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KQEAgLTQwOTEsNyArNDEzMCw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNDEzOSw3ICs0MTc4LDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCkBAIC00MTc1LDI2ICs0MjE0LDI0IEBACiArCiArCiArCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICsgIGZvciBhY19wcm9nIGluIGFyCiArICBkbwogKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KICtzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MDY5LDcgKzYzMjEsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQxNyw3ICs2NjcxLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgogKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjA4OSwxMSArNjM0MSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorQEAgLTY0MzcsMTEgKzY2OTEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIAogIApAQCAtNDIxMiwxNyArNDI0OSwxNyBAQAogK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYxMDksNyArNjM2NSw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NDU3LDcgKzY3MTUsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgogKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjEyOCw2ICs2Mzg0LDEwIEBAIGVsc2UKK0BAIC02NDc2LDYgKzY3MzQsMTAgQEAgZWxzZQogICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKQEAgLTQyMzMsNyArNDI3MCw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTYxMzksMTIgKzYzOTksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNjQ4NywxMiArNjc0OSwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTQyNDgsMTMgKzQyODUsMTMgQEAKICAKICAKICAKLUBAIC02MTU2LDYgKzY0MTQsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKK0BAIC02NTA0LDYgKzY3NjQsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKICAKICAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwpAQCAtNDMxMyw3ICs0MzUwLDcgQEAKICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjQ5MCw4ICs2ODA2LDggQEAgZXNhYworQEAgLTY4MzgsOCArNzE1Niw4IEBAIGVzYWMKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIAogICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwpAQCAtNDMyNCw3ICs0MzYxLDcgQEAKICAKICAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KICBvcHRfY3I9Ci1AQCAtNjUyNyw2ICs2ODQzLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworQEAgLTY4NzUsNiArNzE5Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KICAgIGVsc2UKICAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgIGZpCkBAIC00MzMyLDcgKzQzNjksNyBAQAogIAogICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgICBwaXBlX3dvcmtzPW5vCi1AQCAtNjU2OCw2ICs2ODg1LDE4IEBAIF9MVF9FT0YKK0BAIC02OTE2LDYgKzcyMzUsMTggQEAgX0xUX0VPRgogICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CkBAIC00MzUxLDcgKzQzODgsNyBAQAogICNpZmRlZiBfX2NwbHVzcGx1cwogIGV4dGVybiAiQyIgewogICNlbmRpZgotQEAgLTY1NzksNyArNjkwOCw3IEBAIF9MVF9FT0YKK0BAIC02OTI3LDcgKzcyNTgsNyBAQCBfTFRfRU9GCiAgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgCiAgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtNDM2MCw3ICs0Mzk3LDcgQEAKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB2b2lkICAgICAgICphZGRyZXNzOwogIH0KLUBAIC02NjA1LDggKzY5MzQsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworQEAgLTY5NTMsOCArNzI4NCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKQogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtNDM3MSw3ICs0NDA4LDcgQEAKICAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKICAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02NjE2LDggKzY5NDUsOCBAQCBfTFRfRU9GCitAQCAtNjk2NCw4ICs3Mjk1LDggQEAgX0xUX0VPRgogICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgCSAgICBwaXBlX3dvcmtzPXllcwogIAkgIGZpCkBAIC00MzgyLDcgKzQ0MTksNyBAQAogIAllbHNlCiAgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CiAgCWZpCi1AQCAtNjY1NCw2ICs2OTgzLDIxIEBAIGVsc2UKK0BAIC03MDAyLDYgKzczMzMsMTkgQEAgZWxzZQogICRhc19lY2hvICJvayIgPiY2OyB9CiAgZmkKICAKQEAgLTQzOTksMTcgKzQ0MzYsMTMgQEAKICsKICsKICsKLSsKLSsKICAKICAKICAKLUBAIC02NjY5LDYgKzcwMTMsNDAgQEAgZmkKK0BAIC03MDIyLDYgKzczNjYsNDIgQEAgZmkKICAKICAKICAKLSsKLSsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQogKwpAQCAtNDQzNiwxNiArNDQ2OSwyMCBAQAogKyAqKQogKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CiArJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKICsgICA7OwogK2VzYWMKICsKICsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKICskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorKworKworKworKwogIAotIAotIAotQEAgLTY4ODEsNiArNzI1OSwxMjMgQEAgZXNhYworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNzIyOSw2ICs3NjA5LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC00NDU0LDcgKzQ0OTEsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtNDQ2Niw3ICs0NTAzLDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC00NDk0LDcgKzQ1MzEsNyBAQAogK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTQ1MDYsNyArNDU0Myw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTQ1NDQsNyArNDU4MSw3IEBACiArdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCkBAIC00NTY5LDcgKzQ2MDYsNyBAQAogIAogICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc0NDQsNiArNzkzOSw4IEBAIF9MVF9FT0YKK0BAIC03NzkyLDYgKzgyODksOCBAQCBfTFRfRU9GCiAgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CiAgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQogICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKQEAgLTQ1NzgsNyArNDYxNSw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtNzYzOSw3ICs4MTM2LDggQEAgZmkKK0BAIC03OTg3LDcgKzg0ODYsOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtNDU4OCw3ICs0NjI1LDcgQEAKICAKICAKICAKLUBAIC03NzI4LDcgKzgyMjYsNyBAQCBhaXgzKikKK0BAIC04MDc2LDcgKzg1NzYsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtNDU5Nyw3ICs0NjM0LDcgQEAKICBjYW5fYnVpbGRfc2hhcmVkPXllcwogIAogICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgwMjYsOCArODUyNCw2IEBAIGZpCitAQCAtODM3NCw4ICs4ODc0LDYgQEAgZmkKICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KICAKQEAgLTQ2MDYsNyArNDY0Myw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTgxOTMsNiArODY4OSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg1NDEsNiArOTAzOSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKICAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogIAk7OwpAQCAtNDYxOSw3ICs0NjU2LDcgQEAKICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTgyNTUsNyArODc1Nyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODYwMyw3ICs5MTA3LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTQ2MjgsNyArNDY2NSw3IEBACiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgICopCiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04MzEyLDEzICs4ODE0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC04NjYwLDEzICs5MTY0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKICAgICAgOzsKICBlc2FjCkBAIC00NjQxLDcgKzQ2NzgsNyBAQAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwpAQCAtNDY1Miw3ICs0Njg5LDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTgzNzksNiArODg4NSwxMSBAQCBmaQorQEAgLTg3MjcsNiArOTIzNSwxMSBAQCBmaQogIAogIAogIApAQCAtNDY2NCw3ICs0NzAxLDcgQEAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogICMKLUBAIC04NzI5LDcgKzkyNDAsOCBAQCBfTFRfRU9GCitAQCAtOTA3Nyw3ICs5NTkwLDggQEAgX0xUX0VPRgogICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCiAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKQEAgLTQ2NzQsNyArNDcxMSw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04ODI4LDEyICs5MzQwLDEyIEBAIF9MVF9FT0YKK0BAIC05MTc2LDEyICs5NjkwLDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNDY4OSw3ICs0NzI2LDcgQEAKICAJICBmaQogIAkgIDs7CiAgCWVzYWMKLUBAIC04ODQ3LDggKzkzNTksOCBAQCBfTFRfRU9GCitAQCAtOTE5NSw4ICs5NzA5LDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTQ3MDAsNyArNDczNyw3IEBACiAgICAgICAgZmkKICAgICAgICA7OwogIAotQEAgLTg4NjYsOCArOTM3OCw4IEBAIF9MVF9FT0YKK0BAIC05MjE0LDggKzk3MjgsOCBAQCBfTFRfRU9GCiAgCiAgX0xUX0VPRgogICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtNDcxMSw3ICs0NzQ4LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtODkxMyw4ICs5NDI1LDggQEAgX0xUX0VPRgorQEAgLTkyNjEsOCArOTc3NSw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC00NzIyLDcgKzQ3NTksNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05MDQ0LDcgKzk1NTYsMTMgQEAgX0xUX0VPRgorQEAgLTkzOTIsNyArOTkwNiwxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTQ3MzAsMTQgKzQ3NjcsMTQgQEAKICsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MDU3LDIyICs5NTc1LDI5IEBAIG1haW4gKCkKK0BAIC05NDA1LDIyICs5OTI1LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC00NzgwLDcgKzQ4MTcsNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTA4NCw3ICs5NjA5LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk0MzIsNyArOTk1OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCWVsc2UKICAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogIAkgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtNDc4OCwxNCArNDgyNSwxNCBAQAogKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTkwOTcsMjIgKzk2MjgsMjkgQEAgbWFpbiAoKQorQEAgLTk0NDUsMjIgKzk5NzgsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTQ4MzgsNyArNDg3NSw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTE1NywyMCArOTY5NSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NTA1LDIwICsxMDA0NSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KQEAgLTQ5MTYsNyArNDk1Myw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05MjMxLDcgKzk4MTIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NTc5LDcgKzEwMTYyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTQ5MjUsNyArNDk2Miw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTIzOSw3ICs5ODIwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTU4Nyw3ICsxMDE3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC00OTM0LDcgKzQ5NzEsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTkyNTUsNyArOTgzNiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk2MDMsNyArMTAxODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC00OTQzLDcgKzQ5ODAsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtOTI3OSwxMCArOTg2MCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NjI3LDEwICsxMDIxMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAJICA7OwogIAlpYTY0KikKQEAgLTQ5NTYsNyArNDk5Myw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC05MzYxLDIzICs5OTQyLDM2IEBAIGZpCitAQCAtOTcwOSwyMyArMTAyOTIsMzYgQEAgZmkKICAKICAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtNDk3MSw3ICs1MDA4LDcgQEAKICsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KICsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC01MDAxLDcgKzUwMzgsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTQ2Miw3ICsxMDA1Niw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk4MTAsNyArMTA0MDYsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTUwMTAsNyArNTA0Nyw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk0ODEsOSArMTAwNzUsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05ODI5LDkgKzEwNDI1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC01MDIyLDcgKzUwNTksNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwMDU5LDggKzEwNjUzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwNDA3LDggKzExMDAzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTUwMzQsNyArNTA3MSw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAwOTMsMTMgKzEwNjg4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDQ0MSwxMyArMTEwMzgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC01MTA3LDcgKzUxNDQsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTAxOTEsNyArMTA4NDQsNyBAQCBoYWlrdSopCitAQCAtMTA1MzksNyArMTExOTQsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTUxMTYsNyArNTE1MywxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMTAzMSwxMCArMTE2ODQsMTAgQEAgZWxzZQorQEAgLTExMzM1LDcgKzExOTkwLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTEzMzggImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExMzc5LDEwICsxMjAzNCwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTUxMjksNyArNTE3NSwxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTExMzcsMTAgKzExNzkwLDEwIEBAIGVsc2UKK0BAIC0xMTQ0MSw3ICsxMjA5Niw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNDQ0ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTQ4NSwxMCArMTIxNDAsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC01MTQyLDcgKzUxOTcsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTU0MzcsMTMgKzE2MDkwLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTgwMywxMyArMTY0NTgsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5XwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTE2Myw3ICs1MjE4LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDU4LDE0ICsxNjExOCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE1ODI0LDE0ICsxNjQ4NiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTE4Miw3ICs1MjM3LDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ5OCwxMiArMTYxNjEsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xNTg2NCwxMiArMTY1MjksMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZAogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTUxOTYsNyArNTI1MSw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTU1OCw4ICsxNjIyMSwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTU5MjQsOCArMTY1ODksMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC01MjEwLDcgKzUyNjUsNyBAQAogIFNUUklQIFwKICBSQU5MSUIgXAogIENDIFwKLUBAIC0xNTU2OSwxMiArMTYyMzcsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCitAQCAtMTU5MzUsMTIgKzE2NjA1LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCkBAIC01MjI2LDcgKzUyODEsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTE1NTkwLDcgKzE2MjYwLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTE1OTU2LDcgKzE2NjI4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtNTIzNCw3ICs1Mjg5LDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTE1NjI2LDYgKzE2Mjk1LDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTE1OTkyLDYgKzE2NjYzLDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTUyNDIsNyArNTI5Nyw3IEBACiAgcG9zdGluc3RhbGxfY21kcyBcCiAgcG9zdHVuaW5zdGFsbF9jbWRzIFwKICBmaW5pc2hfY21kcyBcCi1AQCAtMTYzOTAsNyArMTcwNjAsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CitAQCAtMTY3NjUsNyArMTc0MzcsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CiAgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAgIwogICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCkBAIC01MjUyLDcgKzUzMDcsNyBAQAogICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAgIwogICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjQ5MywxOSArMTcxNjQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCitAQCAtMTY4NjgsMTkgKzE3NTQxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAogICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KICBOTDJTUD0kbHRfbHRfTkwyU1AKICAKQEAgLTUyOTYsNyArNTM1MSw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xNjUzNSw2ICsxNzIyOSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTE2OTEwLDYgKzE3NjA2LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtNTMwOSw3ICs1MzY0LDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE2NTQ0LDYgKzE3MjQ0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xNjkxOSw2ICsxNzYyMSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC01MzE5LDcgKzUzNzQsNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNjY1OCwxMiArMTczNjEsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE3MDMzLDEyICsxNzczOCwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTUzMzUsNyArNTM5MCw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTY3NTAsOSArMTc0NTMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTcxMjUsOSArMTc4MzAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtNTM0NSw3ICs1NDAwLDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE2NzY4LDYgKzE3NDY4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xNzE0Myw2ICsxNzg0NSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtNTM1NSw3ICs1NDEwLDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNjgwMCwyMTAgKzE3NTAzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNzE3NSwyMTAgKzE3ODgwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtNTU1NywxNSArNTYxMiw5IEBACiAtX0xUX0VPRgogLSAgICA7OwogLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAogKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKKyAKICsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KICsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCiArZnVuY19kaXJuYW1lICgpXApAQCAtNTcyMywxNyArNTc3MiwyMCBAQAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKICskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQogK2ZpCi0rCi0rCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLWRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IDZiNDNiZjJiMTguLjI0NWVlNDhiYzMgMTAwNzU1Ci0tLS0gYS9ncHJvZi9jb25maWd1cmUKLSsrKyBiL2dwcm9mL2NvbmZpZ3VyZQotQEAgLTYzMSw4ICs2MzEsMTEgQEAgT1RPT0wKK0luZGV4OiBnaXQvZ3Byb2YvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZ3Byb2YvY29uZmlndXJlCisrKysgZ2l0L2dwcm9mL2NvbmZpZ3VyZQorQEAgLTY2Miw4ICs2NjIsMTEgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTU3NDUsNyArNTc5Nyw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTc0NCw2ICs3NDcsNyBAQCBlbmFibGVfc3RhdGljCitAQCAtNzgwLDYgKzc4Myw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtNTc1Myw3ICs1ODA1LDcgQEAKICBlbmFibGVfbGlidG9vbF9sb2NrCiAgZW5hYmxlX3BsdWdpbnMKICBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQwMiw2ICsxNDA2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTQ0Miw2ICsxNDQ2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCkBAIC01NzYyLDcgKzU4MTQsNyBAQAogIAogIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNDgzNiw4ICs0ODQyLDggQEAgZXNhYworQEAgLTUxMjQsOCArNTEzMCw4IEBAIGVzYWMKICAKICAKICAKQEAgLTU3NzMsNyArNTgyNSw3IEBACiAgCiAgCiAgCi1AQCAtNDg3Nyw3ICs0ODgzLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC01MTY1LDcgKzUxNzEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC01NzgyLDcgKzU4MzQsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU1NjMsOCArNTU2OSw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CitAQCAtNTg1MSw4ICs1ODU3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdQogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtNTc5MywxMyArNTg0NSwxMyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTYxMyw2ICs1NjE5LDgwIEBAIGVzYWMKK0BAIC01OTAxLDYgKzU5MDcsODAgQEAgZXNhYwogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhc2UgJGhvc3QgaW4KQEAgLTU4NDYsNyArNTg5OCw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCkBAIC01ODczLDggKzU5MjUsOCBAQAogKwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU2MjksNiArNTcwOSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTU5MTcsNiArNTk5NywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgogIGVzYWMKICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtNTg4Niw3ICs1OTM4LDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTU3OTcsNyArNTg4Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTYwODUsNyArNjE3MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTU4OTYsNyArNTk0OCw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTU4NzQsMTEgKzU5NjAsNiBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCitAQCAtNjE2MiwxMSArNjI0OCw2IEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgICA7OwogIApAQCAtNTkwOCw3ICs1OTYwLDcgQEAKICBuZXRic2QqKQogICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi1AQCAtNTk1Niw2ICs2MDM3LDIxIEBAIGVzYWMKK0BAIC02MjQ0LDYgKzYzMjUsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC01OTMwLDcgKzU5ODIsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTU5NzEsOSArNjA2NywxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjI1OSw5ICs2MzU1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC01OTQ0LDEyICs1OTk2LDE0IEBACiArCiArCiArCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKICsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtNTk2MSw3ICs2MDE1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTU5ODksNyArNjA0Myw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC02MDAxLDcgKzYwNTUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTYwNDksNyArNjEwMyw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwpAQCAtNjA4NSwyNiArNjEzOSwyNCBAQAogKwogKwogKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiArICBmb3IgYWNfcHJvZyBpbiBhcgogKyAgZG8KICsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiArc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTk4OSw3ICs2MjM4LDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYyNzcsNyArNjUyNiw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKICsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYwMDksMTEgKzYyNTgsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC02Mjk3LDExICs2NTQ2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTYxMjIsMTcgKzYxNzQsMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MDI5LDcgKzYyODIsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjMxNyw3ICs2NTcwLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKICsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYwNDgsNiArNjMwMSwxMCBAQCBlbHNlCitAQCAtNjMzNiw2ICs2NTg5LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC02MTQzLDcgKzYxOTUsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02MDU5LDEyICs2MzE2LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTYzNDcsMTYgKzY2MDQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC02MTU1LDE2ICs2MjA3LDIwIEBACiAtdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKICs6ICR7QVI9YXJ9CiArOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02MDc2LDYgKzYzMzEsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwpAQCAtNjE3NCw3ICs2MjMwLDcgQEAKICtpbnQKICttYWluICgpCiArewotKworIAogKyAgOwogKyAgcmV0dXJuIDA7CiArfQpAQCAtNjIwMCwzMCArNjI1NiwyMyBAQAogKyAgICAgICAgZmkKICsgICAgICBmaQogKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKworIAogK2ZpCiArcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCisgCiArZmkKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQogKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0rCisgCiAraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgogKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQogK2Vsc2UKICsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQogK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTY0MTAsOCArNjcyMyw4IEBAIGVzYWMKKyAKKyAKKyAKK0BAIC02Njk4LDggKzcwMTEsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTYyMzQsNyArNjI4Myw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTY0NDcsNiArNjc2MCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC02NzM1LDYgKzcwNDgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtNjI0Miw3ICs2MjkxLDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTY0ODgsNiArNjgwMiwxOCBAQCBfTFRfRU9GCitAQCAtNjc3Niw2ICs3MDkwLDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtNjI2MSw3ICs2MzEwLDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC02NDk5LDcgKzY4MjUsNyBAQCBfTFRfRU9GCitAQCAtNjc4Nyw3ICs3MTEzLDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTYyNzAsNyArNjMxOSw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNjUyNSw4ICs2ODUxLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC02ODEzLDggKzcxMzksOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTYyODEsNyArNjMzMCw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjUzNiw4ICs2ODYyLDggQEAgX0xUX0VPRgorQEAgLTY4MjQsOCArNzE1MCw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtNjI5Miw3ICs2MzQxLDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTY1NzQsNiArNjkwMCwxOCBAQCBlbHNlCitAQCAtNjg2Miw2ICs3MTg4LDE3IEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC02MzA3LDE5ICs2MzU2LDE0IEBACiArCiArCiArCi0rCiAgCiAgCiAgCi1AQCAtNjU5MCw2ICs2OTI4LDQzIEBAIGZpCitAQCAtNjg4Myw2ICs3MjIwLDQ0IEBAIGZpCiAgCiAgCiAgCiArCi0rCi0rCi0rCi0rCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KICsKQEAgLTYzNDYsMTYgKzYzOTAsMjEgQEAKICsgKikKICsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQogKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CiArICAgOzsKICtlc2FjCiArCiArIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiArJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC02ODAxLDYgKzcxNzYsMTIzIEBAIGVzYWMKKysKKysKKysKKysKKysKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOworQEAgLTcwODksNiArNzQ2NCwxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtNjM2NCw3ICs2NDEzLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTYzNzYsNyArNjQyNSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNjQwNCw3ICs2NDUzLDcgQEAKICtzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC02NDE2LDcgKzY0NjUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC02NDU0LDcgKzY1MDMsNyBAQAogK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwpAQCAtNjQ3OSw3ICs2NTI4LDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03MzY0LDYgKzc4NTYsOCBAQCBfTFRfRU9GCitAQCAtNzY1Miw2ICs4MTQ0LDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC02NDg4LDcgKzY1MzcsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTc1NTksNyArODA1Myw4IEBAIGZpCitAQCAtNzg0Nyw3ICs4MzQxLDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTY0OTgsNyArNjU0Nyw3IEBACiAgCiAgCiAgCi1AQCAtNzY0OCw3ICs4MTQzLDcgQEAgYWl4MyopCitAQCAtNzkzNiw3ICs4NDMxLDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTY1MDcsNyArNjU1Niw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC03OTQ2LDggKzg0NDEsNiBAQCBmaQorQEAgLTgyMzQsOCArODcyOSw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC02NTE2LDcgKzY1NjUsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MTEzLDYgKzg2MDYsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04NDAxLDYgKzg4OTQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTY1MjksNyArNjU3OCw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04MTc1LDcgKzg2NzQsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg0NjMsNyArODk2Miw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC02NTM4LDcgKzY1ODcsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODIzMiwxMyArODczMSwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtODUyMCwxMyArOTAxOSwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtNjU1MSw3ICs2NjAwLDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKQEAgLTY1NjIsNyArNjYxMSw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04Mjk5LDYgKzg4MDIsMTEgQEAgZmkKK0BAIC04NTg3LDYgKzkwOTAsMTEgQEAgZmkKICAKICAKICAKQEAgLTY1NzQsNyArNjYyMyw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODY0OSw3ICs5MTU3LDggQEAgX0xUX0VPRgorQEAgLTg5MzcsNyArOTQ0NSw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC02NTg0LDcgKzY2MzMsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODc0OCwxMiArOTI1NywxMiBAQCBfTFRfRU9GCitAQCAtOTAzNiwxMiArOTU0NSwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTY1OTksNyArNjY0OCw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtODc2Nyw4ICs5Mjc2LDggQEAgX0xUX0VPRgorQEAgLTkwNTUsOCArOTU2NCw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC02NjEwLDcgKzY2NTksNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC04Nzg2LDggKzkyOTUsOCBAQCBfTFRfRU9GCitAQCAtOTA3NCw4ICs5NTgzLDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTY2MjEsNyArNjY3MCw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTg4MzMsOCArOTM0Miw4IEBAIF9MVF9FT0YKK0BAIC05MTIxLDggKzk2MzAsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtNjYzMiw3ICs2NjgxLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtODk2NCw3ICs5NDczLDEzIEBAIF9MVF9FT0YKK0BAIC05MjUyLDcgKzk3NjEsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC02NjQwLDE0ICs2Njg5LDE0IEBACiArICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtODk3NywyMiArOTQ5MiwyOSBAQCBtYWluICgpCitAQCAtOTI2NSwyMiArOTc4MCwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtNjY5MCw3ICs2NzM5LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkwMDQsNyArOTUyNiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05MjkyLDcgKzk4MTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTY2OTgsMTQgKzY3NDcsMTQgQEAKICsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MDE3LDIyICs5NTQ1LDI5IEBAIG1haW4gKCkKK0BAIC05MzA1LDIyICs5ODMzLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC02NzQ4LDcgKzY3OTcsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkwNzcsMjAgKzk2MTIsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTM2NSwyMCArOTkwMCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KQEAgLTY4MjYsNyArNjg3NSw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05MTUxLDcgKzk3MjksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDM5LDcgKzEwMDE3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTY4MzUsNyArNjg4NCw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTE1OSw3ICs5NzM3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTQ0Nyw3ICsxMDAyNSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC02ODQ0LDcgKzY4OTMsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTkxNzUsNyArOTc1Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk0NjMsNyArMTAwNDEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC02ODUzLDcgKzY5MDIsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtOTE5OSwxMCArOTc3NywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDg3LDEwICsxMDA2NSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAJICA7OwogIAlpYTY0KikKQEAgLTY4NjYsNyArNjkxNSw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC05MjgxLDIzICs5ODU5LDM2IEBAIGZpCitAQCAtOTU2OSwyMyArMTAxNDcsMzYgQEAgZmkKICAKICAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtNjg4MSw3ICs2OTMwLDcgQEAKICsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KICsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC02OTExLDcgKzY5NjAsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTM4Miw3ICs5OTczLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTY3MCw3ICsxMDI2MSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwpAQCAtNjkyMCw3ICs2OTY5LDcgQEAKICAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgIGVsc2UKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTQwMSw5ICs5OTkyLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTY4OSw5ICsxMDI4MCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtNjkzMiw3ICs2OTgxLDcgQEAKICAgICAgICBlbHNlCiAgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC05OTc5LDggKzEwNTcwLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwMjY3LDggKzEwODU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTY5NDQsNyArNjk5Myw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAwMTMsMTMgKzEwNjA1LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDMwMSwxMyArMTA4OTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC03MDE3LDcgKzcwNjYsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTAxMTEsNyArMTA3NjEsNyBAQCBoYWlrdSopCitAQCAtMTAzOTksNyArMTEwNDksNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTcwMjYsNyArNzA3NSwxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMDk1MSwxMCArMTE2MDEsMTAgQEAgZWxzZQorQEAgLTExMTk1LDcgKzExODQ1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTExOTMgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExMjM5LDEwICsxMTg4OSwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTcwMzksNyArNzA5NywxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEwNTcsMTAgKzExNzA3LDEwIEBAIGVsc2UKK0BAIC0xMTMwMSw3ICsxMTk1MSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExMjk5ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTM0NSwxMCArMTE5OTUsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC03MDUyLDcgKzcxMTksNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTMwMDUsMTMgKzEzNjU1LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzMxNCwxMyArMTM5NjQsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5XwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNzA3Myw3ICs3MTQwLDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMDI2LDE0ICsxMzY4MywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTEzMzM1LDE0ICsxMzk5MiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNzA5Miw3ICs3MTU5LDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzA2NiwxMiArMTM3MjYsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xMzM3NSwxMiArMTQwMzUsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZAogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTcxMDYsNyArNzE3Myw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzEyNiw4ICsxMzc4NiwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTM0MzUsOCArMTQwOTUsMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC03MTIwLDcgKzcxODcsNyBAQAogIFNUUklQIFwKICBSQU5MSUIgXAogIENDIFwKLUBAIC0xMzEzNywxMiArMTM4MDIsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCitAQCAtMTM0NDYsMTIgKzE0MTExLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCkBAIC03MTM2LDcgKzcyMDMsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTEzMTU4LDcgKzEzODI1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTEzNDY3LDcgKzE0MTM0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtNzE0NCw3ICs3MjExLDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzMTk0LDYgKzEzODYwLDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTEzNTAzLDYgKzE0MTY5LDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTcxNTIsNyArNzIxOSw3IEBACiAgcG9zdGluc3RhbGxfY21kcyBcCiAgcG9zdHVuaW5zdGFsbF9jbWRzIFwKICBmaW5pc2hfY21kcyBcCi1AQCAtMTM5NTAsNyArMTQ2MTcsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CitAQCAtMTQyNjgsNyArMTQ5MzUsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CiAgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAgIwogICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCkBAIC03MTYyLDcgKzcyMjksNyBAQAogICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAgIwogICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNDA1MywxOSArMTQ3MjEsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCitAQCAtMTQzNzEsMTkgKzE1MDM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAogICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KICBOTDJTUD0kbHRfbHRfTkwyU1AKICAKQEAgLTcyMDYsNyArNzI3Myw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xNDA5NSw2ICsxNDc4NiwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTE0NDEzLDYgKzE1MTA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtNzIxOSw3ICs3Mjg2LDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE0MTA0LDYgKzE0ODAxLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xNDQyMiw2ICsxNTExOSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC03MjI5LDcgKzcyOTYsNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNDIxOCwxMiArMTQ5MTgsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE0NTM2LDEyICsxNTIzNiwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTcyNDUsNyArNzMxMiw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTQzMTAsOSArMTUwMTAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTQ2MjgsOSArMTUzMjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtNzI1NSw3ICs3MzIyLDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE0MzI4LDYgKzE1MDI1LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xNDY0Niw2ICsxNTM0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtNzI2NSw3ICs3MzMyLDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNDM2MCwyMTAgKzE1MDYwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNDY3OCwyMTAgKzE1Mzc4LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtNzQ2NywxNSArNzUzNCw5IEBACiAtX0xUX0VPRgogLSAgICA7OwogLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAogKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKKyAKICsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KICsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCiArZnVuY19kaXJuYW1lICgpXApAQCAtNzYzMywxNyArNzY5NCwyMCBAQAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKICskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQogK2ZpCi0rCi0rCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IDBjYzZlOGE1MGYuLmRiOGI5OTg3MjIgMTAwNzU1Ci0tLS0gYS9sZC9jb25maWd1cmUKLSsrKyBiL2xkL2NvbmZpZ3VyZQotQEAgLTY1NSw4ICs2NTUsMTEgQEAgT1RPT0wKK0luZGV4OiBnaXQvbGQvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbGQvY29uZmlndXJlCisrKysgZ2l0L2xkL2NvbmZpZ3VyZQorQEAgLTY4Nyw4ICs2ODcsMTEgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTc2NTUsNyArNzcxOSw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTc3OCw2ICs3ODEsNyBAQCBlbmFibGVfc3RhdGljCitAQCAtODE1LDYgKzgxOCw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtNzY2Myw3ICs3NzI3LDcgQEAKICBlbmFibGVfbGlidG9vbF9sb2NrCiAgZW5hYmxlX3BsdWdpbnMKICBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ2NCw2ICsxNDY4LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTUwNyw2ICsxNTExLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCkBAIC03NjcyLDcgKzc3MzYsNyBAQAogICAgLS13aXRoLWxpYi1wYXRoPWRpcjE6ZGlyMi4uLiAgc2V0IGRlZmF1bHQgTElCX1BBVEgKICAgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIHVzci9saWIgZXQgYWwgd2l0aGluIERJUi4KICAKLUBAIC01NjU4LDggKzU2NjQsOCBAQCBlc2FjCitAQCAtNTk1OSw4ICs1OTY1LDggQEAgZXNhYwogIAogIAogIApAQCAtNzY4Myw3ICs3NzQ3LDcgQEAKICAKICAKICAKLUBAIC01Njk5LDcgKzU3MDUsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTYwMDAsNyArNjAwNiw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTc2OTIsNyArNzc1Niw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjM4NSw4ICs2MzkxLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC02Njg2LDggKzY2OTIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1CiAgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKICB4c2lfc2hlbGw9bm8KICAoIF9sdF9kdW1teT0iYS9iL2MiCkBAIC03NzAzLDEzICs3NzY3LDEzIEBACiAgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02NDM1LDYgKzY0NDEsODAgQEAgZXNhYworQEAgLTY3MzYsNiArNjc0Miw4MCBAQCBlc2FjCiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2FzZSAkaG9zdCBpbgpAQCAtNzc1Niw3ICs3ODIwLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KQEAgLTc3ODMsOCArNzg0Nyw4IEBACiArCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjQ1MSw2ICs2NTMxLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjc1Miw2ICs2ODMyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC03Nzk2LDcgKzc4NjAsNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjYxOSw3ICs2NzA0LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNjkyMCw3ICs3MDA1LDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtNzgwNiw3ICs3ODcwLDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNjc3Myw2ICs2ODU5LDIxIEBAIGVzYWMKK0BAIC03MDc0LDYgKzcxNjAsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC03ODI4LDcgKzc4OTIsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY3ODgsOSArNjg4OSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNzA4OSw5ICs3MTkwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC03ODQ3LDcgKzc5MTEsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCkBAIC03ODU5LDcgKzc5MjMsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNzg4Nyw3ICs3OTUxLDcgQEAKICtzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KQEAgLTc4OTksNyArNzk2Myw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNzk0Nyw3ICs4MDExLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCkBAIC03OTkyLDE3ICs4MDU2LDE3IEBACiArc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjgwNiw3ICs3MDYwLDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTcxMDcsNyArNzM2MSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKICsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTY4MjYsMTEgKzcwODAsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC03MTI3LDExICs3MzgxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTgwMjAsMTcgKzgwODQsMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02ODQ2LDcgKzcxMDQsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNzE0Nyw3ICs3NDA1LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKICsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTY4NjUsNiArNzEyMywxMCBAQCBlbHNlCitAQCAtNzE2Niw2ICs3NDI0LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC04MDQxLDcgKzgxMDUsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02ODc2LDEyICs3MTM4LDEyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTcxNzcsMTIgKzc0MzksMTEgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC04MDU0LDE3ICs4MTE4LDE2IEBACiArOiAke0FSPWFyfQogKzogJHtBUl9GTEFHUz1jcnV9CiArCi0rCiAgCiAgCiAgCi1AQCAtNjg5MSw2ICs3MTUzLDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitAQCAtNzE5Myw2ICs3NDU0LDYzIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KQEAgLTgxMTgsMTAgKzgxODEsMTEgQEAKICsKICsKICsKLSAKKysKICAKICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi1AQCAtNzIyNyw4ICs3NTQ1LDggQEAgZXNhYworICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK0BAIC03NTI4LDggKzc4NDYsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTgxMzIsNyArODE5Niw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTcyNjQsNiArNzU4Miw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC03NTY1LDYgKzc4ODMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtODE0MCw3ICs4MjA0LDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTczMDUsNiArNzYyNCwxOCBAQCBfTFRfRU9GCitAQCAtNzYwNiw2ICs3OTI1LDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtODE1OSw3ICs4MjIzLDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC03MzE2LDcgKzc2NDcsNyBAQCBfTFRfRU9GCitAQCAtNzYxNyw3ICs3OTQ4LDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTgxNjgsNyArODIzMiw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNzM0Miw4ICs3NjczLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC03NjQzLDggKzc5NzQsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTgxNzksNyArODI0Myw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzM1Myw4ICs3Njg0LDggQEAgX0xUX0VPRgorQEAgLTc2NTQsOCArNzk4NSw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtODE5MCw3ICs4MjU0LDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTczOTEsNiArNzcyMiwxOSBAQCBlbHNlCitAQCAtNzY5Miw2ICs4MDIzLDEzIEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC04MjAxLDE2ICs4MjY1LDEwIEBACiArICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKICtmaQogKwotKwotKwotKwotKwotKwotKwogIAogIAogIAotQEAgLTc0MDQsNiArNzc0OCw0MiBAQCBmaQorQEAgLTc3MTMsNiArODA1MSw0OCBAQCBmaQogIAogIAogIApAQCAtODIxOCw2ICs4Mjc2LDcgQEAKICsKICsKICsKKysKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQogKwpAQCAtODI0NCwxNiArODMwMywyMSBAQAogKyAqKQogKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CiArJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKICsgICA7OwogK2VzYWMKICsKICsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKICskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTc2MTgsNiArNzk5OCwxMjMgQEAgZXNhYworKworKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6CisgICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7CitAQCAtNzkxOSw2ICs4Mjk5LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC04MjYyLDcgKzgzMjYsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtODI3NCw3ICs4MzM4LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC04MzAyLDcgKzgzNjYsNyBAQAogK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTgzMTQsNyArODM3OCw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTgzNTIsNyArODQxNiw3IEBACiArdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCkBAIC04Mzc3LDcgKzg0NDEsNyBAQAogIAogICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTgxODEsNiArODY3OCw4IEBAIF9MVF9FT0YKK0BAIC04NDgyLDYgKzg5NzksOCBAQCBfTFRfRU9GCiAgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CiAgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQogICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKQEAgLTgzODYsNyArODQ1MCw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtODI0OSw2ICs4NzQ4LDE2IEBAIGRvbmUKK0BAIC04NTUwLDYgKzkwNDksMTYgQEAgZG9uZQogIAogIAogIApAQCAtODQwMyw3ICs4NDY3LDcgQEAKICAKICAKICAjIFNldCBvcHRpb25zCi1AQCAtODM3Nyw3ICs4ODg2LDggQEAgZmkKK0BAIC04Njc4LDcgKzkxODcsOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtODQxMyw3ICs4NDc3LDcgQEAKICAKICAKICAKLUBAIC04NDY2LDcgKzg5NzYsNyBAQCBhaXgzKikKK0BAIC04NzY3LDcgKzkyNzcsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtODQyMiw3ICs4NDg2LDcgQEAKICBjYW5fYnVpbGRfc2hhcmVkPXllcwogIAogICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg3NjQsOCArOTI3NCw2IEBAIGZpCitAQCAtOTA2NSw4ICs5NTc1LDYgQEAgZmkKICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KICAKQEAgLTg0MzEsNyArODQ5NSw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg5MzEsNiArOTQzOSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTkyMzIsNiArOTc0MCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKICAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogIAk7OwpAQCAtODQ0NCw3ICs4NTA4LDcgQEAKICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg5OTMsNyArOTUwNyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtOTI5NCw3ICs5ODA4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTg0NTMsNyArODUxNyw3IEBACiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgICopCiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MDUwLDEzICs5NTY0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC05MzUxLDEzICs5ODY1LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKICAgICAgOzsKICBlc2FjCkBAIC04NDY2LDcgKzg1MzAsNyBAQAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwpAQCAtODQ3Nyw3ICs4NTQxLDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTkxMTcsNiArOTYzNSwxMSBAQCBmaQorQEAgLTk0MTgsNiArOTkzNiwxMSBAQCBmaQogIAogIAogIApAQCAtODQ4OSw3ICs4NTUzLDcgQEAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogICMKLUBAIC05NDY3LDcgKzk5OTAsOCBAQCBfTFRfRU9GCitAQCAtOTc2OCw3ICsxMDI5MSw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC04NDk5LDcgKzg1NjMsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTU2NiwxMiArMTAwOTAsMTIgQEAgX0xUX0VPRgorQEAgLTk4NjcsMTIgKzEwMzkxLDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtODUxNCw3ICs4NTc4LDcgQEAKICAJICBmaQogIAkgIDs7CiAgCWVzYWMKLUBAIC05NTg1LDggKzEwMTA5LDggQEAgX0xUX0VPRgorQEAgLTk4ODYsOCArMTA0MTAsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtODUyNSw3ICs4NTg5LDcgQEAKICAgICAgICBmaQogICAgICAgIDs7CiAgCi1AQCAtOTYwNCw4ICsxMDEyOCw4IEBAIF9MVF9FT0YKK0BAIC05OTA1LDggKzEwNDI5LDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTg1MzYsNyArODYwMCw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTk2NTEsOCArMTAxNzUsOCBAQCBfTFRfRU9GCitAQCAtOTk1Miw4ICsxMDQ3Niw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC04NTQ3LDcgKzg2MTEsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05NzgyLDcgKzEwMzA2LDEzIEBAIF9MVF9FT0YKK0BAIC0xMDA4Myw3ICsxMDYwNywxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTg1NTUsMTQgKzg2MTksMTQgQEAKICsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05Nzk1LDIyICsxMDMyNSwyOSBAQCBtYWluICgpCitAQCAtMTAwOTYsMjIgKzEwNjI2LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC04NjA1LDcgKzg2NjksNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTgyMiw3ICsxMDM1OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMDEyMyw3ICsxMDY2MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCWVsc2UKICAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogIAkgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtODYxMywxNCArODY3NywxNCBAQAogKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTk4MzUsMjIgKzEwMzc4LDI5IEBAIG1haW4gKCkKK0BAIC0xMDEzNiwyMiArMTA2NzksMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTg2NjMsMTEgKzg3MjcsMTAgQEAKICAKICAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05ODk0LDIxICsxMDQ0NCw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworQEAgLTEwMTk2LDIwICsxMDc0Niw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0tICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCiAtICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKIC0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgpAQCAtODY4Miw3ICs4NzQ1LDYgQEAKIC0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCiAtICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCiAtICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiArICAgICAgY2wqKQogKwkjIE5hdGl2ZSBNU1ZDCkBAIC04NzQzLDcgKzg4MDUsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTk2OSw3ICsxMDU2Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEwMjcwLDcgKzEwODYzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTg3NTIsNyArODgxNCw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTk3Nyw3ICsxMDU3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEwMjc4LDcgKzEwODcxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTg3NjEsNyArODgyMyw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgIGZpCi1AQCAtOTk5Myw3ICsxMDU4Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEwMjk0LDcgKzEwODg3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtODc3MCw3ICs4ODMyLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTEwMDE3LDEwICsxMDYxMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMDMxOCwxMCArMTA5MTEsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC04NzgzLDcgKzg4NDUsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtMTAwOTksMjMgKzEwNjkyLDM2IEBAIGZpCitAQCAtMTA0MDAsMjMgKzEwOTkzLDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTg3OTgsNyArODg2MCw3IEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtODgyOCw3ICs4ODkwLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTEwMjAwLDcgKzEwODA2LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtMTA1MDEsNyArMTExMDcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTg4MzcsNyArODg5OSw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwMjE5LDkgKzEwODI1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtMTA1MjAsOSArMTExMjYsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTg4NDksNyArODkxMSw3IEBACiAgICAgICAgZWxzZQogIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KICAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA3OTcsOCArMTE0MDMsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTEwOTgsOCArMTE3MDQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICBuZWVkX3ZlcnNpb249bm8KICAgIG5lZWRfbGliX3ByZWZpeD1ubwogIApAQCAtODg2MSw3ICs4OTIzLDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDgzMSwxMyArMTE0MzgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTExMTMyLDEzICsxMTczOSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTg5MzQsNyArODk5Niw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xMDkyOSw3ICsxMTU5NCw3IEBAIGhhaWt1KikKK0BAIC0xMTIzMCw3ICsxMTg5NSw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtODk0Myw3ICs5MDA1LDE2IEBACiAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgICA7OwogIAotQEAgLTExNzY5LDEwICsxMjQzNCwxMCBAQCBlbHNlCitAQCAtMTIwMjYsNyArMTI2OTEsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMjAyOSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTIwNzAsMTAgKzEyNzM1LDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtODk1Niw3ICs5MDI3LDE2IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTg3NSwxMCArMTI1NDAsMTAgQEAgZWxzZQorQEAgLTEyMTMyLDcgKzEyNzk3LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTIxMzUgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTEyMTc2LDEwICsxMjg0MSwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTg5NjksNyArOTA0OSw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjI3MCw2ICsxMjkzNSw3IEBAICRSTSAtciBjb25mdGVzdCoKK0BAIC0xMjU3MSw2ICsxMzIzNiw3IEBAICRSTSAtciBjb25mdGVzdCoKICAKICAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgICBsdF9zYXZlX0NDPSRDQwpAQCAtODk3Nyw3ICs5MDU3LDcgQEAKICAgIGx0X3NhdmVfTEQ9JExECiAgICBsdF9zYXZlX0dDQz0kR0NDCiAgICBHQ0M9JEdYWAotQEAgLTEyMjg3LDYgKzEyOTUzLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorQEAgLTEyNTg4LDYgKzEzMjU0LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgogICAgZmkKICAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCiAgICBDQz0ke0NYWC0iYysrIn0KQEAgLTg5ODUsNyArOTA2NSw3IEBACiAgICBjb21waWxlcj0kQ0MKICAgIGNvbXBpbGVyX0NYWD0kQ0MKICAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotQEAgLTEyNTY5LDcgKzEzMjM2LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCitAQCAtMTI4NzAsNyArMTM1MzcsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbAogICAgICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9Jy1iZXJvaycKICAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CiAgICAgICAgICAgICMgZXhlY3V0YWJsZS4KQEAgLTg5OTMsMTQgKzkwNzMsMTQgQEAKICsgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtMTI1ODIsMjIgKzEzMjU1LDI5IEBAIG1haW4gKCkKK0BAIC0xMjg4MywyMiArMTM1NTYsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtOTA0Myw3ICs5MTIzLDcgQEAKICAKICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCi1AQCAtMTI2MTAsNyArMTMyOTAsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTI5MTEsNyArMTM1OTEsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICAgICBlbHNlCiAgCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTkwNTEsMTQgKzkxMzEsMTQgQEAKICsJICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTEyNjIzLDIyICsxMzMwOSwyOSBAQCBtYWluICgpCitAQCAtMTI5MjQsMjIgKzEzNjEwLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTkxMDEsNyArOTE4MSw3IEBACiAgCiAgCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtMTI2ODEsMjkgKzEzMzc0LDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEyOTgyLDI5ICsxMzY3NSw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgICA7OwogIAogICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKQEAgLTkyMDAsNyArOTI4MCw3IEBACiAgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAKICAKLUBAIC0xMjgwOSw3ICsxMzU0OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEzMTEwLDcgKzEzODQ5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTkyMDksNyArOTI4OSw3IEBACiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CiAgICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi1AQCAtMTI4ODAsMTAgKzEzNjE5LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEzMTgxLDEwICsxMzkyMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKICAJICAgICAgICAgICAgOzsKICAJICAgICAgICAgIGlhNjQqKQpAQCAtOTIyMiw3ICs5MzAyLDcgQEAKICAJICAgICAgICAgICAgOzsKICAJICAgICAgICBlc2FjCiAgCSAgICAgIGZpCi1AQCAtMTI5MjQsOSArMTM2NjMsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMzIyNSw5ICsxMzk2NCw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAgICAgICAgICAgKikKICAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCiAgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtOTIzNCw3ICs5MzE0LDcgQEAKICAJICAgICAgZmkKICAJICAgIGZpCiAgCSAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKLUBAIC0xMjk5NiwyMCArMTM3MzUsMjAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTMyOTcsMjAgKzE0MDM2LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJICAgICAgcHJlbGlua19jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KICAJCXJtIC1yZiAkdHBsZGlyfgogIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgpAQCAtOTI1OSw3ICs5MzM5LDcgQEAKICAJICAgICAgOzsKICAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCiAgCSAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotQEAgLTEzMjA0LDcgKzEzOTQzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTM1MDUsNyArMTQyNDQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCQkgIDs7CiAgCSAgICAgICAgKikKQEAgLTkyNjgsNyArOTM0OCw3IEBACiAgCQkgIDs7CiAgCSAgICAgIGVzYWMKICAKLUBAIC0xMzI1MCw3ICsxMzk4OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEzNTUxLDcgKzE0MjkwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICAgIHNvbGFyaXMqKQogICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTkyNzcsNyArOTM1Nyw3IEBACiAgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwogIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJwotQEAgLTEzMjkxLDkgKzE0MDMwLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTM1OTIsOSArMTQzMzEsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KICAJICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCiAgCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCkBAIC05Mjg5LDcgKzkzNjksNyBAQAogIAogIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKICAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLUBAIC0xMzQyOCw2ICsxNDE2NywxMyBAQCBwcml2YXRlOgorQEAgLTEzNzI5LDYgKzE0NDY4LDEzIEBAIHByaXZhdGU6CiAgfTsKICBfTFRfRU9GCiAgCkBAIC05MzAzLDcgKzkzODMsNyBAQAogIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgIGFjX3N0YXR1cz0kPwotQEAgLTEzNDQxLDcgKzE0MTg3LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CitAQCAtMTM3NDIsNyArMTQ0ODgsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuCiAgICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCiAgCiAgICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCkBAIC05MzEyLDcgKzkzOTIsNyBAQAogIAogICAgICAtTCogfCAtUiogfCAtbCopCiAgICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCi1AQCAtMTM0NTAsMTMgKzE0MTk2LDIyIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorQEAgLTEzNzUxLDEzICsxNDQ5NywyMiBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuCiAgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCiAgCSBwcmV2PSRwCiAgCSBjb250aW51ZQpAQCAtOTMzOSw3ICs5NDE5LDcgQEAKICAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCiAgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC0xMzQ3Niw4ICsxNDIzMSwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKK0BAIC0xMzc3Nyw4ICsxNDUzMiwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuCiAgCSAgIHBvc3RkZXBzX0NYWD0iJHtwb3N0ZGVwc19DWFh9ICR7cHJldn0ke3B9IgogIAkgZmkKICAgICAgICAgZmkKQEAgLTkzNTAsNyArOTQzMCw3IEBACiAgICAgICouJG9iamV4dCkKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCiAgICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgotQEAgLTEzNTEzLDYgKzE0MjcwLDcgQEAgZWxzZQorQEAgLTEzODE0LDYgKzE0NTcxLDcgQEAgZWxzZQogIGZpCiAgCiAgJFJNIC1mIGNvbmZlc3QuJG9iamV4dApAQCAtOTM1OCw3ICs5NDM4LDcgQEAKICAKICAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgogIGNhc2UgJGhvc3Rfb3MgaW4KLUBAIC0xMzU0OCw3ICsxNDMwNiw3IEBAIGxpbnV4KikKK0BAIC0xMzg0OSw3ICsxNDYwNyw3IEBAIGxpbnV4KikKICAKICBzb2xhcmlzKikKICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05MzY3LDcgKzk0NDcsNyBAQAogICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKICAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCiAgICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLUBAIC0xMzYxMyw4ICsxNDM3MSw2IEBAIGZpCitAQCAtMTM5MTQsOCArMTQ2NzIsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9CiAgCkBAIC05Mzc2LDcgKzk0NTYsNyBAQAogIAogICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgogICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLUBAIC0xMzcxOSw2ICsxNDQ3NSwxMSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTE0MDIwLDYgKzE0Nzc2LDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAJICA7OwogIAllc2FjCiAgCTs7CkBAIC05Mzg4LDcgKzk0NjgsNyBAQAogICAgICAgIGRndXgqKQogIAljYXNlICRjY19iYXNlbmFtZSBpbgogIAkgIGVjKysqKQotQEAgLTEzODcxLDcgKzE0NjMyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC0xNDE3Miw3ICsxNDkzMyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAJOzsKICAgICAgICBzb2xhcmlzKikKICAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTkzOTcsNyArOTQ3Nyw3IEBACiAgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAgCSAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1LUElDJwogIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctQnN0YXRpYycKLUBAIC0xMzkzNiwxMCArMTQ2OTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTE0MjM3LDEwICsxNDk5OCwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKICAgICAgOzsKICBlc2FjCkBAIC05NDA3LDcgKzk0ODcsNyBAQAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKQEAgLTk0MTgsNyArOTQ5OCw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC0xMzk5Nyw2ICsxNDc2NSw4IEBAIGZpCitAQCAtMTQyOTgsNiArMTUwNjYsOCBAQCBmaQogIAogIAogIApAQCAtOTQyNyw3ICs5NTA3LDcgQEAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogICMKLUBAIC0xNDE3NCw2ICsxNDk0NCw3IEBAIGZpCitAQCAtMTQ0NzUsNiArMTUyNDUsNyBAQCBmaQogICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4uLiAiID4mNjsgfQogIAogICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKQEAgLTk0MzUsNyArOTUxNSw3IEBACiAgICBjYXNlICRob3N0X29zIGluCiAgICBhaXhbNC05XSopCiAgICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgotQEAgLTE0MTg4LDE1ICsxNDk1OSwyMCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQorQEAgLTE0NDg5LDE1ICsxNTI2MCwyMCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsCiAgICAgIDs7CiAgICBwdzMyKikKICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgpAQCAtOTQ2MSw3ICs5NTQxLDcgQEAKICAKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQogICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci1AQCAtMTQ0NTksOCArMTUyMzUsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTQ3NjAsOCArMTU1MzYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICBuZWVkX3ZlcnNpb249bm8KICAgIG5lZWRfbGliX3ByZWZpeD1ubwogIApAQCAtOTQ3Myw3ICs5NTUzLDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xNDQ5MiwxMyArMTUyNjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTE0NzkzLDEzICsxNTU3MCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTk1NDYsNyArOTYyNiw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xNDU4OSw3ICsxNTQyNCw3IEBAIGhhaWt1KikKK0BAIC0xNDg5MCw3ICsxNTcyNSw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtOTU1NSw3ICs5NjM1LDcgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTUwNDgsNiArMTU4ODMsNyBAQCBmaQorQEAgLTE1MzQ5LDYgKzE2MTg0LDcgQEAgZmkKICAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogIAogICAgQ0M9JGx0X3NhdmVfQ0MKQEAgLTk1NjMsNyArOTY0Myw3IEBACiAgICBMRENYWD0kTEQKICAgIExEPSRsdF9zYXZlX0xECiAgICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtMTgwODMsMTMgKzE4OTE5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODQ0NCwxMyArMTkyODAsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5XwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtOTU4NCw3ICs5NjY0LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MTA0LDE0ICsxODk0NywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE4NDY1LDE0ICsxOTMwOCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtOTYwMyw3ICs5NjgzLDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODE0NCwxMiArMTg5OTAsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xODUwNSwxMiArMTkzNTEsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZAogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTk2MTcsNyArOTY5Nyw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODE4OCw4ICsxOTAzNCw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCitAQCAtMTg1NDksOCArMTkzOTUsOCBAQCBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nYCRFQ0hPICIkb2xkX2FyY2hpCiAgY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTk2MjcsNyArOTcwNyw3IEBACiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgyMTYsMTIgKzE5MDYyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCitAQCAtMTg1NzcsMTIgKzE5NDIzLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXIKICBoYXJkY29kZV9hdXRvbWF0aWNfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoX0NYWD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC05NjQxLDcgKzk3MjEsNyBAQAogIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODI1OSw4ICsxOTEwNSwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTg2MjAsOCArMTk0NjYsMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC05NjU1LDcgKzk3MzUsNyBAQAogIFNUUklQIFwKICBSQU5MSUIgXAogIENDIFwKLUBAIC0xODI3MCwxMiArMTkxMjEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCitAQCAtMTg2MzEsMTIgKzE5NDgyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCkBAIC05NjcxLDcgKzk3NTEsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTE4MjkxLDcgKzE5MTQ0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTE4NjUyLDcgKzE5NTA1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtOTY3OSw3ICs5NzU5LDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTE4MzEzLDggKzE5MTY1LDggQEAgTERfQ1hYIFwKK0BAIC0xODY3NCw4ICsxOTUyNiw4IEBAIExEX0NYWCBcCiAgcmVsb2FkX2ZsYWdfQ1hYIFwKICBjb21waWxlcl9DWFggXAogIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBcCkBAIC05Njg5LDcgKzk3NjksNyBAQAogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCBcCiAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIFwKICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIFwKLUBAIC0xODMyNiw3ICsxOTE3OCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnX0NYWCBcCitAQCAtMTg2ODcsNyArMTk1MzksNiBAQCBub191bmRlZmluZWRfZmxhZ19DWFggXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkX0NYWCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFggXApAQCAtOTY5Nyw3ICs5Nzc3LDcgQEAKICBleGNsdWRlX2V4cHN5bXNfQ1hYIFwKICBpbmNsdWRlX2V4cHN5bXNfQ1hYIFwKICBmaWxlX2xpc3Rfc3BlY19DWFggXAotQEAgLTE4MzYwLDYgKzE5MjExLDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTE4NzIxLDYgKzE5NTcyLDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTk3MDUsNyArOTc4NSw3IEBACiAgcG9zdGluc3RhbGxfY21kcyBcCiAgcG9zdHVuaW5zdGFsbF9jbWRzIFwKICBmaW5pc2hfY21kcyBcCi1AQCAtMTgzNzQsNyArMTkyMjYsOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCitAQCAtMTg3MzUsNyArMTk1ODcsOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCiAgbW9kdWxlX2NtZHNfQ1hYIFwKICBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCkBAIC05NzE1LDcgKzk3OTUsNyBAQAogICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKICAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgotQEAgLTE5MTY3LDcgKzIwMDIwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE5NTM5LDcgKzIwMzkyLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtOTcyNSw3ICs5ODA1LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTkyNzAsMTkgKzIwMTI0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE5NjQyLDE5ICsyMDQ5Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC05NzY5LDcgKzk4NDksNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTkzMTIsNiArMjAxODksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xOTY4NCw2ICsyMDU2MSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTk3ODIsNyArOTg2Miw3IEBACiAgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiAgb2JqZGlyPSRvYmpkaXIKICAKLUBAIC0xOTMyMSw2ICsyMDIwNCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECitAQCAtMTk2OTMsNiArMjA1NzYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiAgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogIApAQCAtOTc5Miw3ICs5ODcyLDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTk0MzUsMTIgKzIwMzIxLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xOTgwNywxMiArMjA2OTMsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC05ODA4LDcgKzk4ODgsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTE5NTI3LDkgKzIwNDEzLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTE5ODk5LDkgKzIwNzg1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTk4MTgsNyArOTg5OCw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKICAKLUBAIC0xOTU0NSw2ICsyMDQyOCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCitAQCAtMTk5MTcsNiArMjA4MDAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKICAKQEAgLTk4MjgsNyArOTkwOCw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTk1OTEsMjEwICsyMDQ3NywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTk5NjMsMjEwICsyMDg0OSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTEwMDMwLDE1ICsxMDExMCw5IEBACiAtX0xUX0VPRgogLSAgICA7OwogLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAogKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKKyAKICsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KICsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCiArZnVuY19kaXJuYW1lICgpXApAQCAtMTAxOTYsMTMgKzEwMjcwLDE2IEBACiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQogKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CiArZmkKLSsKLSsKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAKKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgICBjaG1vZCAreCAiJG9maWxlIgogIAotQEAgLTE5ODIyLDEyICsyMDY2NywxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAorQEAgLTIwMTk0LDEyICsyMTAzOSwxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWAogIApAQCAtMTAyMTgsNyArMTAyOTUsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgKICAKLUBAIC0xOTkxNCw5ICsyMDc1OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYCitAQCAtMjAyODYsOSArMjExMzEsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoX0NYWAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnNfQ1hYCiAgCkBAIC0xMDIyOCw3ICsxMDMwNSw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYCiAgCi1AQCAtMTk5MzIsNiArMjA3NzQsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltc19DWFgKK0BAIC0yMDMwNCw2ICsyMTE0Niw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zX0NYWAogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHNfQ1hYCiAgCkBAIC0xMDIzOCwxMCArMTAzMTUsMTAgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCiAgCi1kaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKLWluZGV4IDI0ZDEzZjM0NDAuLmU0NWZkYzY5OTggMTAwNjQ0Ci0tLS0gYS9saWJ0b29sLm00Ci0rKysgYi9saWJ0b29sLm00CitJbmRleDogZ2l0L2xpYnRvb2wubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9saWJ0b29sLm00CisrKysgZ2l0L2xpYnRvb2wubTQKIEBAIC0xLDcgKzEsOCBAQAogICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCiAgIwpAQCAtMTAyODEsNyArMTAzNTgsNyBAQAogIEFDX1NVQlNUKExJQlRPT0wpZG5sCiAgCiAgX0xUX1NFVFVQCi1AQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAorQEAgLTE2NiwxMCArMTY5LDEzIEBAIF9MVF9ERUNMKFtdLCBbZXhlZXh0XSwgWzBdLCBbRXhlY3V0YWJsZQogIGRubAogIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCkBAIC0xMDMwNCw3ICsxMDM4MSw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAorQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfCiAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKICBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KICAKQEAgLTEwMzYwLDcgKzEwNDM3LDcgQEAKICsjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCiAgbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKICBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLS1BQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWworLUFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbQUNfTEFOR19QUk9HUkFNXSldLFsKIC1sdF9haXhfbGlicGF0aF9zZWQ9JwogLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CiAtCS9eMC8gewpAQCAtMTA0MDksNyArMTA0ODYsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTExNjEsNiArMTE3NywzOSBAQCBfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlc10pCitAQCAtMTE2MSw2ICsxMTc3LDM5IEBAIF9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3IKICBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKICAKICAKQEAgLTEwNjYyLDcgKzEwNzM5LDcgQEAKICBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKICBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKICB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC0zMTc0LDcgKzMzMzYsMTEgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGkKICBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAogICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQogIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCkBAIC0xMDc5MCw3ICsxMDg2Nyw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworQEAgLTM1MTAsMTUgKzM3NTAsMTUgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC0xMDgyNCw3ICsxMDkwMSw3IEBACiAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAogICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCiAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCi1AQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorQEAgLTM1NjEsNiArMzgwOCw4IEBAIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXMKICBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKICAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCiAgICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCkBAIC0xMDkwOSw3ICsxMDk4Niw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtNDIxMyw2ICs0NDc3LDcgQEAgX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9zdGF0aWNdLCBbMV0sCitAQCAtNDIxMyw2ICs0NDc3LDcgQEAgX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZwogIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCiAgW0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAogIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubApAQCAtMTExNTYsNyArMTEyMzMsNyBAQAogIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgogLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKIC0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIEFDX0xJTktfSUZFTFNFKGludCBmb28odm9pZCkge30sCistICAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW2ludCBmb28odm9pZCkge31dKV0sCiAtICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAtICAgICAgICApCiAtICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgpAQCAtMTEyMzEsNyArMTEzMDgsNyBAQAogIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCiAgICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAogICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KLUBAIC01NDg3LDYgKzU4MTgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogIAogICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgIGx0X3NhdmVfQ0M9JENDCkBAIC0xMTIzOSw3ICsxMTMxNiw3IEBACiAgICBsdF9zYXZlX0xEPSRMRAogICAgbHRfc2F2ZV9HQ0M9JEdDQwogICAgR0NDPSRHWFgKLUBAIC01NTA0LDYgKzU4MzYsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogICAgZmkKICAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCiAgICBDQz0ke0NYWC0iYysrIn0KQEAgLTExMjQ3LDcgKzExMzI0LDcgQEAKICAgIGNvbXBpbGVyPSRDQwogICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTU2NjcsNyArNjAwMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKICAgICAgICAgICAgIyBleGVjdXRhYmxlLgpAQCAtMTEyNTYsNyArMTEzMzMsNyBAQAogICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAKICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtNTY3OSw3ICs2MDEyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsKICAgICAgICAgICAgZWxzZQogIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0xMTI2NSw3ICsxMTM0Miw3IEBACiAgCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAgCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi1AQCAtNTcyMSwyOSArNjA1NCw3NSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgICAgICAgICA7OwogIAogICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKQEAgLTExMzY0LDcgKzExNDQxLDcgQEAKICAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQogICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCiAgCTs7Ci1AQCAtNTgxOCw3ICs2MTk3LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01ODE4LDcgKzYxOTcsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsKICAgICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCkBAIC0xMTM3Myw3ICsxMTQ1MCw3IEBACiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CiAgICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi1AQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTU4ODksMTAgKzYyNjgsMTAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKICAJICAgICAgICAgICAgOzsKICAJICAgICAgICAgIGlhNjQqKQpAQCAtMTEzODYsNyArMTE0NjMsNyBAQAogIAkgICAgICAgICAgICA7OwogIAkgICAgICAgIGVzYWMKICAJICAgICAgZmkKLUBAIC01OTMzLDkgKzYzMTIsOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTU5MzMsOSArNjMxMiw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogICAgICAgICAgICAqKQogIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KICAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC0xMTM5OCw3ICsxMTQ3NSw3IEBACiAgCSAgICAgIGZpCiAgCSAgICBmaQogIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi1AQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTYwMDUsMjAgKzYzODQsMjAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAgCQlybSAtcmYgJHRwbGRpcn4KICAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KQEAgLTExNDIzLDcgKzExNTAwLDcgQEAKICAJICAgICAgOzsKICAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCiAgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotQEAgLTYyMTMsNyArNjU5Miw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNjIxMyw3ICs2NTkyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCQkgIDs7CiAgCSAgICAgICAgKikKQEAgLTExNDMyLDcgKzExNTA5LDcgQEAKICAJCSAgOzsKICAJICAgICAgZXNhYwogIAotQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNjI1OSw3ICs2NjM4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgCiAgICAgICAgc29sYXJpcyopCiAgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtMTE0NDEsNyArMTE1MTgsNyBAQAogIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcwogIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwotQEAgLTYzMDAsOSArNjY3OSw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNjMwMCw5ICs2Njc5LDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KICAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCiAgCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0xMTQ1Myw3ICsxMTUzMCw3IEBACiAgCiAgCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTY0MzEsNiArNjgxMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNjQzMSw2ICs2ODEwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKICAKICAgIENDPSRsdF9zYXZlX0NDCkBAIC0xMTY2MSw3ICsxMTczOCw3IEBACiAgXSkjIF9MVF9MQU5HX1JDX0NPTkZJRwogIAogIAotQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCitAQCAtNzEwMSw2ICs3NTM2LDE1IEBAIF9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdAogIEFDX1NVQlNUKFtPQkpEVU1QXSkKICBdKQogIApAQCAtMTE2ODgsNyArMTE3NjUsNyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAorQEAgLTcyMzQsMjA2ICs3Njc4LDE2MiBAQCBfTFRfREVDTChbTkwyU1BdLCBbbHRfTkwyU1BdLCBbMV0sIFt0dXJuCiAgXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUwogIAogIApAQCAtMTE3ODYsNiArMTE4NjMsMzEgQEAKIC17CiAtICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KIC19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CiArIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKICsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKQEAgLTExODAyLDIzICsxMTkwNCwyMiBAQAogK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiArXSkKICAKLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQorLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCistZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCiAgCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKIC17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCiAtfQogKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwogKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE4NDIsNDUgKzExOTQzLDI0IEBACiArICAgIGVzYWMKICsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCiAgCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwogKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCiArICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKICsgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgogKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQogKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQogKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCi0gCi0tZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLS1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAotLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgorKwogKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKICsgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9CiArICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQotIAotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KKysKICsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAogKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQogKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKLSAKLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKKysKICsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKICsgICAgY2FzZSAkezF9IGluCiArICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKQEAgLTExOTI4LDkgKzEyMDA4LDcgQEAKICsgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKICtkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKICsgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQotIAotLV9MVF9FT0YKLS1lc2FjCisrCiArICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCiArICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAogKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKQEAgLTExOTQ0LDE0ICsxMjAyMiwxNyBAQAogKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKICtmaQogIAotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLV9MVF9FT0YKKy1lc2FjCiAraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KICsgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKICtmaQogK10pCiAgCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCiAtIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKIC0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KIC1mdW5jX2FwcGVuZCAoKQpAQCAtMTIwMzcsMTAgKzEyMTE4LDEwIEBACiArX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCiArICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCiArXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA5NTAzZWM4NWQ3Li43MGU4NTZlMDY1IDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKK0luZGV4OiBnaXQvbHRtYWluLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbHRtYWluLnNoCisrKysgZ2l0L2x0bWFpbi5zaAogQEAgLTEsMTAgKzEsOSBAQAogLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCiAgCkBAIC0xMjQ3MCwzMSArMTI1NTEsNyBAQAogKyRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KICtfTFRfRU9GCiArICAgIGZpCi0gCi0tICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLS0gIGNhc2UgJDEgaW4KLS0gIGNsZWFufGNsZWF8Y2xlfGNsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGxpbmt8bGlufGxpfGwpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBlc2FjCisrCiArICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKICsgIGZpCiArfQpAQCAtMTI1MjQsOSArMTI1ODEsNyBAQAogKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKICsgIDs7CiArZXNhYwotIAotLSAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6Ci0tICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCisrCiArCiArCiArIyBPcHRpb24gZGVmYXVsdHM6CkBAIC0xMjU0Miw4ICsxMjU5NywzNCBAQAogK29wdF92ZXJib3NlPToKICtvcHRfc2lsZW50PWZhbHNlCiArb3B0X3ZlcmJvc2U9ZmFsc2UKLSsKLSsKKyAKKy0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorLSAgY2FzZSAkMSBpbgorLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgbGlua3xsaW58bGl8bCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGVzYWMKKyAKKy0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgorLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbwogKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQogKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgogK3sKQEAgLTEyNzg3LDEzICsxMjg2OCwxMyBAQAogLSAgZmkKIC19CiAtCi0rICAgICMgRGFyd2luIHN1Y2tzCi0rICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0gCistCiAtIyMgLS0tLS0tLS0tLS0gIyMKIC0jIyAgICBNYWluLiAgICAjIwogLSMjIC0tLS0tLS0tLS0tICMjCi0tCisrICAgICMgRGFyd2luIHN1Y2tzCisrICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisgCiAtJG9wdF9oZWxwIHx8IHsKIC0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKIC0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaApAQCAtMTM1MTQsNyArMTM1OTUsNyBAQAogICAgICAgICIiKQogICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCiAgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCi1AQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CitAQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbgogIAogICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCiAgICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKQEAgLTEzNTI1LDcgKzEzNjA2LDcgQEAKICAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCiAgICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKICAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKLUBAIC0xODA0LDcgKzI0NzIsNyBAQCBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCitAQCAtMTgwNCw3ICsyNDcyLDcgQEAgT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdQogICAgICAgICAgOzsKICAKICAgICAgICAqKQpAQCAtMTM2MjcsNyArMTM3MDgsNyBAQAogKyAgICBkbwogKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCiArCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgotIAorKwogKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KICsJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KICsJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKQEAgLTEzNjQ3LDcgKzEzNzI4LDcgQEAKICsgICAgICBlbHNlCiArICAgICAgICBzeXNyb290X2NtZD0KICsgICAgICBmaQotKworIAogKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcwogKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgogKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KQEAgLTE0MDU5LDcgKzE0MTQwLDcgQEAKICBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQogIHtcCiAgICB7IFwiJG15X29yaWdpbmF0b3JcIiwgKHZvaWQgKikgMCB9LCIKLUBAIC0yNzM2LDcgKzM0OTMsNyBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworQEAgLTI3MzYsNyArMzQ5Myw3IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKQogIAlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KICAJICBjYXNlICRhcmcgaW4KICAJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKQEAgLTE0NTg4LDcgKzE0NjY5LDcgQEAKICAqLwogIEVPRgogIAkgICAgY2F0IDw8IkVPRiIKLUBAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCiAgICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAogIH0gd2hpbGUgKDApCiAgCkBAIC0xNDYxNSw3ICsxNDY5Niw3IEBACiAgCiAgdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CiAgY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKLUBAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKK0BAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcAogIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwogIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKICBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKQEAgLTE0OTQzLDcgKzE1MDI0LDcgQEAKICAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKICAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwogIAotQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaAogIH0KICAKICB2b2lkCkBAIC0xNDk4MSw3ICsxNTA2Miw3IEBACiAgICB7CiAgI2lmZGVmIEhBVkVfU0VURU5WCiAgICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCi1AQCAtNDA0OSw5ICs0OTA1LDkgQEAgbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKQorQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGMKICB2b2lkCiAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKICB7CkBAIC0xNDk5NCw3ICsxNTA3NSw3IEBACiAgCiAgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCiAgICAgIHsKLUBAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorQEAgLTQwNzAsOSArNDkyNiw5IEBAIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY28KICB2b2lkCiAgbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKICB7CkBAIC0xNzI2NywxMCArMTczNDgsMTAgQEAKICAKICBpZiB0ZXN0IC1uICIkZXhlY19jbWQiOyB0aGVuCiAgICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKLWRpZmYgLS1naXQgYS9sdG9wdGlvbnMubTQgYi9sdG9wdGlvbnMubTQKLWluZGV4IDVlZjEyY2VkMmEuLjE3Y2ZkNTFjMGIgMTAwNjQ0Ci0tLS0gYS9sdG9wdGlvbnMubTQKLSsrKyBiL2x0b3B0aW9ucy5tNAorSW5kZXg6IGdpdC9sdG9wdGlvbnMubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sdG9wdGlvbnMubTQKKysrKyBnaXQvbHRvcHRpb25zLm00CiBAQCAtOCw3ICs4LDcgQEAKICAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xNzI4MCwxMCArMTczNjEsMTAgQEAKICAKICAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgogIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKLWRpZmYgLS1naXQgYS9sdHZlcnNpb24ubTQgYi9sdHZlcnNpb24ubTQKLWluZGV4IGJmODdmNzcxMzIuLjljN2I1ZDQxMTggMTAwNjQ0Ci0tLS0gYS9sdHZlcnNpb24ubTQKLSsrKyBiL2x0dmVyc2lvbi5tNAorSW5kZXg6IGdpdC9sdHZlcnNpb24ubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sdHZlcnNpb24ubTQKKysrKyBnaXQvbHR2ZXJzaW9uLm00CiBAQCAtNywxNyArNywxNyBAQAogICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTE3MzA4LDEwICsxNzM4OSwxMCBAQAogIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQogIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCiAgXSkKLWRpZmYgLS1naXQgYS9sdH5vYnNvbGV0ZS5tNCBiL2x0fm9ic29sZXRlLm00Ci1pbmRleCBiZjkyYjVlMDc5Li5jNTczZGE5MGM1IDEwMDY0NAotLS0tIGEvbHR+b2Jzb2xldGUubTQKLSsrKyBiL2x0fm9ic29sZXRlLm00CitJbmRleDogZ2l0L2x0fm9ic29sZXRlLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbHR+b2Jzb2xldGUubTQKKysrKyBnaXQvbHR+b2Jzb2xldGUubTQKIEBAIC03LDcgKzcsNyBAQAogICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTE3MzIxLDExICsxNzQwMiwxMSBAQAogIAogICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogICMKLWRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCi1pbmRleCA0ZjI5ODg3MDk4Li4yMTI3ZDM5Mjg4IDEwMDc1NQotLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKLSsrKyBiL29wY29kZXMvY29uZmlndXJlCi1AQCAtNjUwLDYgKzY1MCw5IEBAIE9UT09MCitJbmRleDogZ2l0L29wY29kZXMvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9jb25maWd1cmUKKysrKyBnaXQvb3Bjb2Rlcy9jb25maWd1cmUKK0BAIC02ODEsNiArNjgxLDkgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTE3MzM1LDcgKzE3NDE2LDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzYzLDYgKzc2Niw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC03OTksNiArODAyLDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC0xNzM0Myw3ICsxNzQyNCw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlX3dlcnJvcgotQEAgLTE0MjMsNiArMTQyNyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE0NjMsNiArMTQ2Nyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtMTczNTIsNyArMTc0MzMsNyBAQAogIAogIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNTExNSw4ICs1MTIxLDggQEAgZXNhYworQEAgLTU0MDQsOCArNTQxMCw4IEBAIGVzYWMKICAKICAKICAKQEAgLTE3MzYzLDcgKzE3NDQ0LDcgQEAKICAKICAKICAKLUBAIC01MTU2LDcgKzUxNjIsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTU0NDUsNyArNTQ1MSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTE3MzcyLDcgKzE3NDUzLDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01ODQyLDggKzU4NDgsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworQEAgLTYxMzEsOCArNjEzNyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHUKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTE3MzgzLDEzICsxNzQ2NCwxMyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTg5Miw2ICs1ODk4LDgwIEBAIGVzYWMKK0BAIC02MTgxLDYgKzYxODcsODAgQEAgZXNhYwogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhc2UgJGhvc3QgaW4KQEAgLTE3NDM2LDcgKzE3NTE3LDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KQEAgLTE3NDYzLDggKzE3NTQ0LDggQEAKICsKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01OTA4LDYgKzU5ODgsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MTk3LDYgKzYyNzcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KICBlc2FjCiAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTE3NDc2LDcgKzE3NTU3LDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYwNzYsNyArNjE2MSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTYzNjUsNyArNjQ1MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTE3NDg2LDcgKzE3NTY3LDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNjIzMCw2ICs2MzE2LDIxIEBAIGVzYWMKK0BAIC02NTE5LDYgKzY2MDUsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC0xNzUwOCw3ICsxNzU4OSw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjI0MywxMSArNjM0NCwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUzNCw5ICs2NjM1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC0xNzUyMiw4ICsxNzYwMyw2IEBACiArCiArCiArCi0gCi0gCiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIC1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgpAQCAtMTc1MzEsNyArMTc2MTAsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCkBAIC0xNzU0Myw3ICsxNzYyMiw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0xNzU3MSw3ICsxNzY1MCw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC0xNzU4Myw3ICsxNzY2Miw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMTc2MzEsNyArMTc3MTAsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKQEAgLTE3Njc0LDE3ICsxNzc1MywxNyBAQAogK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYyNjMsNyArNjUxNyw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NTUyLDcgKzY4MDYsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiArICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MjgzLDExICs2NTM3LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNjU3MiwxMSArNjgyNiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC0xNzcwMiwxNyArMTc3ODEsMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzAzLDcgKzY1NjEsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU5Miw3ICs2ODUwLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKICsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYzMjIsNiArNjU4MCwxMCBAQCBlbHNlCitAQCAtNjYxMSw2ICs2ODY5LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC0xNzcyMyw3ICsxNzgwMiw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTYzMzMsMTYgKzY1OTUsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNjYyMiwxMiArNjg4NCwxMSBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTE3NzM2LDE5ICsxNzgxNSwxNiBAQAogKzogJHtBUj1hcn0KICs6ICR7QVJfRkxBR1M9Y3J1fQogKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKworIAorIAorIAorQEAgLTY2MzgsNiArNjg5OSw2MyBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9hcl9hdF9maWxlPW5vCkBAIC0xNzc1OCw3ICsxNzgzNCw3IEBACiAraW50CiArbWFpbiAoKQogK3sKLSAKKysKICsgIDsKICsgIHJldHVybiAwOwogK30KQEAgLTE3Nzg0LDIzICsxNzg2MCwyOSBAQAogKyAgICAgICAgZmkKICsgICAgICBmaQogKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAorKwogK2ZpCiArcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCisrCiArZmkKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQogKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCisrCiAraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgogKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQogK2Vsc2UKICsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQogK2ZpCisrCisrCisrCisrCisrCisrCiAgCi0gCi0gCi1AQCAtNjY4NCw4ICs3MDAyLDggQEAgZXNhYworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitAQCAtNjk3Myw4ICs3MjkxLDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC0xNzgxMSw3ICsxNzg5Myw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTY3MjEsNiArNzAzOSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC03MDEwLDYgKzczMjgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtMTc4MTksNyArMTc5MDEsNyBAQAogIAogICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgICBwaXBlX3dvcmtzPW5vCi1AQCAtNjc2Miw2ICs3MDgxLDE4IEBAIF9MVF9FT0YKK0BAIC03MDUxLDYgKzczNzAsMTggQEAgX0xUX0VPRgogICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CkBAIC0xNzgzOCw3ICsxNzkyMCw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNjc3Myw3ICs3MTA0LDcgQEAgX0xUX0VPRgorQEAgLTcwNjIsNyArNzM5Myw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC0xNzg0Nyw3ICsxNzkyOSw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNjc5OSw4ICs3MTMwLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC03MDg4LDggKzc0MTksOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTE3ODU4LDcgKzE3OTQwLDcgQEAKICAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKICAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02ODEwLDggKzcxNDEsOCBAQCBfTFRfRU9GCitAQCAtNzA5OSw4ICs3NDMwLDggQEAgX0xUX0VPRgogICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgCSAgICBwaXBlX3dvcmtzPXllcwogIAkgIGZpCkBAIC0xNzg2OSw3ICsxNzk1MSw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC02ODQ4LDYgKzcxNzksMTYgQEAgZWxzZQorQEAgLTcxMzcsNiArNzQ2OCwxNCBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtMTc4ODEsMTIgKzE3OTYzLDEwIEBACiArZmkKICsKICsKLSsKLSsKICAKICAKICAKLUBAIC02ODY0LDYgKzcyMDUsNDUgQEAgZmkKK0BAIC03MTU4LDYgKzc0OTcsNDcgQEAgZmkKICAKICAKICAKQEAgLTE3ODk0LDkgKzE3OTc0LDYgQEAKICsKICsKICsKLSsKLSsKLSsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQogKwpAQCAtMTc5MjMsMTYgKzE4MDAwLDIxIEBACiArICopCiArICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKICskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQogKyAgIDs7CiArZXNhYwogKwogKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQogKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzA3NSw2ICs3NDU1LDEyMyBAQCBlc2FjCisrCisrCisrCisrCisrCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKK0BAIC03MzY0LDYgKzc3NDQsMTIzIEBAIGVzYWMKICAKICBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKICAKQEAgLTE3OTQxLDcgKzE4MDIzLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTE3OTUzLDcgKzE4MDM1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0xNzk4MSw3ICsxODA2Myw3IEBACiArc2V0IGR1bW15IG10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtMTc5OTMsNyArMTgwNzUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0xODAzMSw3ICsxODExMyw3IEBACiArdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCkBAIC0xODA1Niw3ICsxODEzOCw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzYzOCw2ICs4MTM1LDggQEAgX0xUX0VPRgorQEAgLTc5MjcsNiArODQyNCw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtMTgwNjUsNyArMTgxNDcsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTc4MDMsNyArODMwMiw4IEBAIGZpCitAQCAtODA5Miw3ICs4NTkxLDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTE4MDc1LDcgKzE4MTU3LDcgQEAKICAKICAKICAKLUBAIC03ODkyLDcgKzgzOTIsNyBAQCBhaXgzKikKK0BAIC04MTgxLDcgKzg2ODEsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtMTgwODQsNyArMTgxNjYsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODE5MCw4ICs4NjkwLDYgQEAgZmkKK0BAIC04NDc5LDggKzg5NzksNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtMTgwOTMsNyArMTgxNzUsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MzU3LDYgKzg4NTUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04NjQ2LDYgKzkxNDQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTE4MTA2LDcgKzE4MTg4LDcgQEAKICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg0MTksNyArODkyMyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODcwOCw3ICs5MjEyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTE4MTE1LDcgKzE4MTk3LDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg0NzYsMTMgKzg5ODAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTg3NjUsMTMgKzkyNjksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTE4MTI4LDcgKzE4MjEwLDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKQEAgLTE4MTM5LDcgKzE4MjIxLDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg1NDMsNiArOTA1MSwxMSBAQCBmaQorQEAgLTg4MzIsNiArOTM0MCwxMSBAQCBmaQogIAogIAogIApAQCAtMTgxNTEsNyArMTgyMzMsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTg4OTMsNyArOTQwNiw4IEBAIF9MVF9FT0YKK0BAIC05MTgyLDcgKzk2OTUsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtMTgxNjEsNyArMTgyNDMsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODk5MiwxMiArOTUwNiwxMiBAQCBfTFRfRU9GCitAQCAtOTI4MSwxMiArOTc5NSwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTE4MTc2LDcgKzE4MjU4LDcgQEAKICAJICBmaQogIAkgIDs7CiAgCWVzYWMKLUBAIC05MDExLDggKzk1MjUsOCBAQCBfTFRfRU9GCitAQCAtOTMwMCw4ICs5ODE0LDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTE4MTg3LDcgKzE4MjY5LDcgQEAKICAgICAgICBmaQogICAgICAgIDs7CiAgCi1AQCAtOTAzMCw4ICs5NTQ0LDggQEAgX0xUX0VPRgorQEAgLTkzMTksOCArOTgzMyw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0xODE5OCw3ICsxODI4MCw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTkwNzcsOCArOTU5MSw4IEBAIF9MVF9FT0YKK0BAIC05MzY2LDggKzk4ODAsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMTgyMDksNyArMTgyOTEsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05MjA4LDcgKzk3MjIsMTMgQEAgX0xUX0VPRgorQEAgLTk0OTcsNyArMTAwMTEsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0xODIxNywxNCArMTgyOTksMTQgQEAKICsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MjIxLDIyICs5NzQxLDI5IEBAIG1haW4gKCkKK0BAIC05NTEwLDIyICsxMDAzMCwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMTgyNjcsNyArMTgzNDksNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTI0OCw3ICs5Nzc1LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk1MzcsNyArMTAwNjQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTE4Mjc1LDE0ICsxODM1NywxNCBAQAogKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTkyNjEsMjIgKzk3OTQsMjkgQEAgbWFpbiAoKQorQEAgLTk1NTAsMjIgKzEwMDgzLDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC0xODMyNSw3ICsxODQwNyw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTMyMSwyMCArOTg2MSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NjEwLDIwICsxMDE1MCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KQEAgLTE4NDAzLDcgKzE4NDg1LDcgQEAKICAgICAgICA7OwogIAogICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTkzOTUsNyArOTk3OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk2ODQsNyArMTAyNjcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQpAQCAtMTg0MTIsNyArMTg0OTQsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk0MDMsNyArOTk4Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk2OTIsNyArMTAyNzUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtMTg0MjEsNyArMTg1MDMsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTk0MTksNyArMTAwMDIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NzA4LDcgKzEwMjkxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtMTg0MzAsNyArMTg1MTIsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtOTQ0MywxMCArMTAwMjYsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTczMiwxMCArMTAzMTUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC0xODQ0Myw3ICsxODUyNSw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC05NTI1LDIzICsxMDEwOCwzNiBAQCBmaQorQEAgLTk4MTQsMjMgKzEwMzk3LDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTE4NDU4LDcgKzE4NTQwLDcgQEAKICsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KICsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC0xODQ4OCw3ICsxODU3MCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NjI2LDcgKzEwMjIyLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTkxNSw3ICsxMDUxMSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwpAQCAtMTg0OTcsNyArMTg1NzksNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05NjQ1LDkgKzEwMjQxLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTkzNCw5ICsxMDUzMCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtMTg1MDksNyArMTg1OTEsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwMjIzLDggKzEwODE5LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwNTEyLDggKzExMTA4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTE4NTIxLDcgKzE4NjAzLDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDI1NywxMyArMTA4NTQsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwNTQ2LDEzICsxMTE0Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgIDs7CiAgICAgIGVzYWMKQEAgLTE4NTk0LDcgKzE4Njc2LDcgQEAKICAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgICA7OwotQEAgLTEwMzU1LDcgKzExMDEwLDcgQEAgaGFpa3UqKQorQEAgLTEwNjQ0LDcgKzExMjk5LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0xODYwMyw3ICsxODY4NSwxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMTE5NSwxMCArMTE4NTAsMTAgQEAgZWxzZQorQEAgLTExNDQwLDcgKzEyMDk1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE0NDMgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNDg0LDEwICsxMjEzOSwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTE4NjE2LDcgKzE4NzA3LDE2IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTMwMSwxMCArMTE5NTYsMTAgQEAgZWxzZQorQEAgLTExNTQ2LDcgKzEyMjAxLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1NDkgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTkwLDEwICsxMjI0NSwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTE4NjI5LDcgKzE4NzI5LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyNTQzLDcgKzEzMTk4LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KK0BAIC0xMjgzMSw3ICsxMzQ4Niw3IEBAIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCiAgIyBzaW5jZSBsaWJiZmQgbWF5IG5vdCBwdWxsIGluIHRoZSBlbnRpcmV0eSBvZiBsaWJpYmVydHkuCiAgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAogICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCkBAIC0xODYzOCw3ICsxODczOCw3IEBACiAgICBmaQogIAogICAgY2FzZSAiJHtob3N0fSIgaW4KLUBAIC0xMzUyMCwxMyArMTQxNzUsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzODA3LDEzICsxNDQ2MiwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfCiAgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xODY1OSw3ICsxODc1OSw3IEBACiAgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzU0MSwxNCArMTQyMDMsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKK0BAIC0xMzgyOCwxNCArMTQ0OTAsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTE4Njc4LDcgKzE4Nzc4LDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzU4MSwxMiArMTQyNDYsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xMzg2OCwxMiArMTQ1MzMsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZAogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTE4NjkyLDcgKzE4NzkyLDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNjQxLDggKzE0MzA2LDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xMzkyOCw4ICsxNDU5MywxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTE4NzA2LDcgKzE4ODA2LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTM2NTIsMTIgKzE0MzIyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTEzOTM5LDEyICsxNDYwOSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtMTg3MjIsNyArMTg4MjIsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTEzNjczLDcgKzE0MzQ1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTEzOTYwLDcgKzE0NjMyLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtMTg3MzAsNyArMTg4MzAsNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTM3MDksNiArMTQzODAsNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTM5OTYsNiArMTQ2NjcsNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtMTg3MzgsNyArMTg4MzgsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE0NDY1LDcgKzE1MTM3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE0NzYxLDcgKzE1NDMzLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtMTg3NDgsNyArMTg4NDgsNyBAQAogICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAgIwogICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNDU2OCwxOSArMTUyNDEsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCitAQCAtMTQ4NjQsMTkgKzE1NTM3LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAogICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KICBOTDJTUD0kbHRfbHRfTkwyU1AKICAKQEAgLTE4NzkyLDcgKzE4ODkyLDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE0NjEwLDYgKzE1MzA2LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTQ5MDYsNiArMTU2MDIsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfYwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC0xODgwNSw3ICsxODkwNSw3IEBACiAgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiAgb2JqZGlyPSRvYmpkaXIKICAKLUBAIC0xNDYxOSw2ICsxNTMyMSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECitAQCAtMTQ5MTUsNiArMTU2MTcsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiAgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogIApAQCAtMTg4MTUsNyArMTg5MTUsNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNDczMywxMiArMTU0MzgsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE1MDI5LDEyICsxNTczNCwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTE4ODMxLDcgKzE4OTMxLDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xNDgyNSw5ICsxNTUzMCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xNTEyMSw5ICsxNTgyNiw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC0xODg0MSw3ICsxODk0MSw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKICAKLUBAIC0xNDg0Myw2ICsxNTU0NSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCitAQCAtMTUxMzksNiArMTU4NDEsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKICAKQEAgLTE4ODUxLDcgKzE4OTUxLDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNDg3NSwyMTAgKzE1NTgwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNTE3MSwyMTAgKzE1ODc2LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtMTkwNTMsMTUgKzE5MTUzLDkgQEAKIC1fTFRfRU9GCiAtICAgIDs7CiAtICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCiArICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKworIAogKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgogKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKICtmdW5jX2Rpcm5hbWUgKClcCkBAIC0xOTIxOSwxNyArMTkzMTMsMjAgQEAKICsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CiArJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KICtmaQotKwotKworIAorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotaW5kZXggYjA3ZjNmMzYyOS4uNWEzMmQ5YjFmYyAxMDA2NDQKLS0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotQEAgLTE2Nyw3ICsxNjcsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAorSW5kZXg6IGdpdC9vcGNvZGVzL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL29wY29kZXMvY29uZmlndXJlLmFjCisrKysgZ2l0L29wY29kZXMvY29uZmlndXJlLmFjCitAQCAtMTY2LDcgKzE2Niw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCiAgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAogIGNoYW5nZXF1b3RlKFssXSlkbmwKICAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgpAQCAtMTkyMzgsMTEgKzE5MzM1LDExIEBACiAgICBmaQogIAogICAgY2FzZSAiJHtob3N0fSIgaW4KLWRpZmYgLS1naXQgYS96bGliL2NvbmZpZ3VyZSBiL3psaWIvY29uZmlndXJlCi1pbmRleCBkYzJkOWVkMzgzLi5lZDlhNDkyZjVjIDEwMDc1NQotLS0tIGEvemxpYi9jb25maWd1cmUKLSsrKyBiL3psaWIvY29uZmlndXJlCi1AQCAtNjE0LDggKzYxNCwxMSBAQCBPVE9PTAorSW5kZXg6IGdpdC96bGliL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3psaWIvY29uZmlndXJlCisrKysgZ2l0L3psaWIvY29uZmlndXJlCitAQCAtNjQ2LDggKzY0NiwxMSBAQCBPVE9PTAogIExJUE8KICBOTUVESVQKICBEU1lNVVRJTApAQCAtMTkyNTQsNyArMTkzNTEsNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03MzcsNiArNzQwLDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTc3NCw2ICs3NzcsNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTE5MjYyLDcgKzE5MzU5LDcgQEAKICBlbmFibGVfbGlidG9vbF9sb2NrCiAgZW5hYmxlX2hvc3Rfc2hhcmVkCiAgJwotQEAgLTEzODUsNiArMTM4OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE0MjgsNiArMTQzMiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtMTkyNzEsNyArMTkzNjgsNyBAQAogIAogIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtMzkxMCw4ICszOTE2LDggQEAgZXNhYworQEAgLTQxNDcsOCArNDE1Myw4IEBAIGVzYWMKICAKICAKICAKQEAgLTE5MjgyLDcgKzE5Mzc5LDcgQEAKICAKICAKICAKLUBAIC0zOTUxLDcgKzM5NTcsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTQxODgsNyArNDE5NCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTE5MjkxLDcgKzE5Mzg4LDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC00NzY3LDggKzQ3NzMsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworQEAgLTUwMDQsOCArNTAxMCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHUKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTE5MzAyLDEzICsxOTM5OSwxMyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNDgxNyw2ICs0ODIzLDgwIEBAIGVzYWMKK0BAIC01MDU0LDYgKzUwNjAsODAgQEAgZXNhYwogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhc2UgJGhvc3QgaW4KQEAgLTE5MzU1LDcgKzE5NDUyLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KQEAgLTE5MzgyLDggKzE5NDc5LDggQEAKICsKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC00ODMzLDYgKzQ5MTMsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC01MDcwLDYgKzUxNTAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KICBlc2FjCiAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTE5Mzk1LDcgKzE5NDkyLDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTUwMDEsNyArNTA4Niw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTUyMzgsNyArNTMyMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTE5NDA1LDcgKzE5NTAyLDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNTE1NSw2ICs1MjQxLDIxIEBAIGVzYWMKK0BAIC01MzkyLDYgKzU0NzgsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC0xOTQyNyw3ICsxOTUyNCw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTE2OCwxMSArNTI2OSwxNjUgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNTQwNyw5ICs1NTA4LDE2MyBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC0xOTQ0MSw4ICsxOTUzOCw2IEBACiArCiArCiArCi0gCi0gCiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIC1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgpAQCAtMTk0NTAsNyArMTk1NDUsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCkBAIC0xOTQ2Miw3ICsxOTU1Nyw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0xOTQ5MCw3ICsxOTU4NSw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC0xOTUwMiw3ICsxOTU5Nyw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMTk1NTAsNyArMTk2NDUsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKQEAgLTE5NTk0LDE3ICsxOTY4OSwxNyBAQAogK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTUxODgsNyArNTQ0Myw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC01NDI1LDcgKzU2ODAsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiArICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC01MjA4LDExICs1NDYzLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNTQ0NSwxMSArNTcwMCwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC0xOTYyMiwxNyArMTk3MTcsMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01MjI4LDcgKzU0ODcsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNTQ2NSw3ICs1NzI0LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKICsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTUyNDcsNiArNTUwNiwxMCBAQCBlbHNlCitAQCAtNTQ4NCw2ICs1NzQzLDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC0xOTY0Myw3ICsxOTczOCw3IEBACiAgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KICAgICAgQVI9ImZhbHNlIgogICAgZWxzZQotQEAgLTUyNTgsMTYgKzU1MjEsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CitAQCAtNTQ5NSwxMiArNTc1OCwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKICBlc2FjCiAgICAgIEFSPSRhY19jdF9BUgogICAgZmkKQEAgLTE5NjU1LDIwICsxOTc1MCwxNiBAQAogLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiArOiAke0FSPWFyfQogKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCisgCisgCisgCitAQCAtNTUxMiw2ICs1NzczLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KQEAgLTE5Njc4LDcgKzE5NzY5LDcgQEAKICtpbnQKICttYWluICgpCiArewotIAorKwogKyAgOwogKyAgcmV0dXJuIDA7CiArfQpAQCAtMTk3MDQsMjMgKzE5Nzk1LDMwIEBACiArICAgICAgICBmaQogKyAgICAgIGZpCiArICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCisrCiArZmkKICtybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKKysKICtmaQogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CiArJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKKysKICtpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCiArICBhcmNoaXZlcl9saXN0X3NwZWM9CiArZWxzZQogKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCiArZmkKLSAKLSAKLSAKLUBAIC01NjA5LDggKzU5MjgsOCBAQCBlc2FjCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTU4NDYsOCArNjE2NSw4IEBAIGVzYWMKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIAogICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwpAQCAtMTk3MzEsNyArMTk4MjksNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC01NjQ2LDYgKzU5NjUsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNTg4Myw2ICs2MjAyLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTE5NzM5LDcgKzE5ODM3LDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTU2ODcsNiArNjAwNywxOCBAQCBfTFRfRU9GCitAQCAtNTkyNCw2ICs2MjQ0LDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtMTk3NTgsNyArMTk4NTYsNyBAQAogICNpZmRlZiBfX2NwbHVzcGx1cwogIGV4dGVybiAiQyIgewogICNlbmRpZgotQEAgLTU2OTgsNyArNjAzMCw3IEBAIF9MVF9FT0YKK0BAIC01OTM1LDcgKzYyNjcsNyBAQCBfTFRfRU9GCiAgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgCiAgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtMTk3NjcsNyArMTk4NjUsNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTU3MjQsOCArNjA1Niw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNTk2MSw4ICs2MjkzLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC0xOTc3OCw3ICsxOTg3Niw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNTczNSw4ICs2MDY3LDggQEAgX0xUX0VPRgorQEAgLTU5NzIsOCArNjMwNCw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtMTk3ODksNyArMTk4ODcsNyBAQAogIAllbHNlCiAgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CiAgCWZpCi1AQCAtNTc3Myw2ICs2MTA1LDE5IEBAIGVsc2UKK0BAIC02MDEwLDYgKzYzNDIsMTggQEAgZWxzZQogICRhc19lY2hvICJvayIgPiY2OyB9CiAgZmkKICAKQEAgLTE5ODA1LDE3ICsxOTkwMywxMyBAQAogKwogKwogKwotKwogIAogIAogIAotQEAgLTU3OTAsNiArNjEzNSw0MSBAQCBmaQorQEAgLTYwMzEsNiArNjM3NSw0MiBAQCBmaQogIAogIAogIAotKwotKwotKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CiArCkBAIC0xOTg0MiwxNiArMTk5MzYsMjAgQEAKICsgKikKICsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQogKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CiArICAgOzsKICtlc2FjCiArCiArIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiArJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKysKKysKKysKKysKICAKLSAKLSAKLUBAIC02MDA0LDYgKzYzODQsMTIzIEBAIGVzYWMKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYyNDEsNiArNjYyMSwxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtMTk4NjAsNyArMTk5NTgsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtMTk4NzIsNyArMTk5NzAsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTE5OTAwLDcgKzE5OTk4LDcgQEAKICtzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC0xOTkxMiw3ICsyMDAxMCw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTE5OTUwLDcgKzIwMDQ4LDcgQEAKICt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KQEAgLTE5OTc1LDcgKzIwMDczLDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC02NTcwLDYgKzcwNjcsOCBAQCBfTFRfRU9GCitAQCAtNjgwNyw2ICs3MzA0LDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC0xOTk4NCw3ICsyMDA4Miw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtNzAzMyw3ICs3NTMyLDggQEAgZmkKK0BAIC03MjY5LDcgKzc3NjgsOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtMTk5OTQsNyArMjAwOTIsNyBAQAogIAogIAogIAotQEAgLTcxMjIsNyArNzYyMiw3IEBAIGFpeDMqKQorQEAgLTczNTgsNyArNzg1OCw3IEBAIGFpeDMqKQogIGVzYWMKICAKICAjIEdsb2JhbCB2YXJpYWJsZXM6CkBAIC0yMDAwMyw3ICsyMDEwMSw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC03NDIwLDggKzc5MjAsNiBAQCBmaQorQEAgLTc2NTYsOCArODE1Niw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC0yMDAxMiw3ICsyMDExMCw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTc1ODcsNiArODA4NSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTc4MjMsNiArODMyMSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKICAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogIAk7OwpAQCAtMjAwMjUsNyArMjAxMjMsNyBAQAogICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNzY0OSw3ICs4MTUzLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC03ODg1LDcgKzgzODksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtMjAwMzQsNyArMjAxMzIsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtNzcwNiwxMyArODIxMCwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtNzk0MiwxMyArODQ0NiwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtMjAwNDcsNyArMjAxNDUsNyBAQAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwpAQCAtMjAwNTgsNyArMjAxNTYsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtNzc3Myw2ICs4MjgxLDExIEBAIGZpCitAQCAtODAwOSw2ICs4NTE3LDExIEBAIGZpCiAgCiAgCiAgCkBAIC0yMDA3MCw3ICsyMDE2OCw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODEyMyw3ICs4NjM2LDggQEAgX0xUX0VPRgorQEAgLTgzNTksNyArODg3Miw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0yMDA4MCw3ICsyMDE3OCw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04MjIyLDEyICs4NzM2LDEyIEBAIF9MVF9FT0YKK0BAIC04NDU4LDEyICs4OTcyLDEyIEBAIF9MVF9FT0YKICAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwpAQCAtMjAwOTUsNyArMjAxOTMsNyBAQAogIAkgIGZpCiAgCSAgOzsKICAJZXNhYwotQEAgLTgyNDEsOCArODc1NSw4IEBAIF9MVF9FT0YKK0BAIC04NDc3LDggKzg5OTEsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtMjAxMDYsNyArMjAyMDQsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC04MjYwLDggKzg3NzQsOCBAQCBfTFRfRU9GCitAQCAtODQ5Niw4ICs5MDEwLDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTIwMTE3LDcgKzIwMjE1LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtODMwNyw4ICs4ODIxLDggQEAgX0xUX0VPRgorQEAgLTg1NDMsOCArOTA1Nyw4IEBAIF9MVF9FT0YKICAKICAgICAgKikKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0yMDEyOCw3ICsyMDIyNiw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTg0MzgsNyArODk1MiwxMyBAQCBfTFRfRU9GCitAQCAtODY3NCw3ICs5MTg4LDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMjAxMzYsMTQgKzIwMjM0LDE0IEBACiArICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQorICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CiAgZmkKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ1NCwyMiArODk3NCwyOSBAQCBtYWluICgpCitAQCAtODY5MCwyMiArOTIxMCwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMjAxODYsNyArMjAyODQsNyBAQAogIAogICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODQ4MSw3ICs5MDA4LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg3MTcsNyArOTI0NCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCWVsc2UKICAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogIAkgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMjAxOTQsMTQgKzIwMjkyLDE0IEBACiArCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQorICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CiAgZmkKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ5NywyMiArOTAzMCwyOSBAQCBtYWluICgpCitAQCAtODczMywyMiArOTI2NiwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMjAyNDQsNyArMjAzNDIsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTg1NTcsMjAgKzkwOTcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtODc5MywyMCArOTMzMyw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KQEAgLTIwMzIyLDcgKzIwNDIwLDcgQEAKICAgICAgICA7OwogIAogICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTg2MzEsNyArOTIxNCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg4NjcsNyArOTQ1MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC0yMDMzMSw3ICsyMDQyOSw3IEBACiAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwogICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtODYzOSw3ICs5MjIyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtODg3NSw3ICs5NDU4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTIwMzQwLDcgKzIwNDM4LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC04NjU1LDcgKzkyMzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04ODkxLDcgKzk0NzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC0yMDM0OSw3ICsyMDQ0Nyw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgZmkKLUBAIC04Njc5LDEwICs5MjYyLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg5MTUsMTAgKzk0OTgsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC0yMDM2Miw3ICsyMDQ2MCw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC04NzYxLDI2ICs5MzQ0LDM5IEBAIGZpCitAQCAtODk5NywyNiArOTU4MCwzOSBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0yMDM3NywxMyArMjA0NzUsMTMgQEAKICsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KICsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCiArCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKICsJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgICBhc19mbl9lcnJvciAkPyAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKICBmaQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0yMDQxMCw3ICsyMDUwOCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC04ODY1LDcgKzk0NjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05MTAxLDcgKzk2OTcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTIwNDE5LDcgKzIwNTE3LDcgQEAKICAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgIGVsc2UKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtODg4NCw5ICs5NDgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTEyMCw5ICs5NzE2LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC0yMDQzMSw3ICsyMDUyOSw3IEBACiAgICAgICAgZWxzZQogIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KICAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtOTQ2Miw4ICsxMDA1OCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC05Njk4LDggKzEwMjk0LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTIwNDQzLDcgKzIwNTQxLDcgQEAKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC05NDk2LDEzICsxMDA5Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtOTczMiwxMyArMTAzMjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC0yMDUxNiw3ICsyMDYxNCw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC05NTk0LDcgKzEwMjQ5LDcgQEAgaGFpa3UqKQorQEAgLTk4MzAsNyArMTA0ODUsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTIwNTI1LDcgKzIwNjIzLDE2IEBACiAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgICA7OwogIAotQEAgLTEwNDUyLDEwICsxMTEwNywxMCBAQCBlbHNlCitAQCAtMTA2NDQsNyArMTEyOTksNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMDY0NyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTA2ODgsMTAgKzExMzQzLDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtMjA1MzgsNyArMjA2NDUsMTYgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEwNTU4LDEwICsxMTIxMywxMCBAQCBlbHNlCitAQCAtMTA3NTAsNyArMTE0MDUsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMDc1MyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTA3OTQsMTAgKzExNDQ5LDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtMjA1NTEsNyArMjA2NjcsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE5OTIsMTMgKzEyNjQ3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMjI2NiwxMyArMTI5MjEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5XwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMjA1NzIsNyArMjA2ODgsNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIwMTMsMTQgKzEyNjc1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTIyODcsMTQgKzEyOTQ5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0yMDU5MSw3ICsyMDcwNyw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIwNTMsMTIgKzEyNzE4LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTIzMjcsMTIgKzEyOTkyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2QKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0yMDYwNSw3ICsyMDcyMSw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjExMyw4ICsxMjc3OCwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTIzODcsOCArMTMwNTIsMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC0yMDYxOSw3ICsyMDczNSw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTEyMTI0LDEyICsxMjc5NCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xMjM5OCwxMiArMTMwNjgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTIwNjM1LDcgKzIwNzUxLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xMjE0NSw3ICsxMjgxNyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xMjQxOSw3ICsxMzA5MSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTIwNjQzLDcgKzIwNzU5LDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTEyMTgxLDYgKzEyODUyLDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTEyNDU1LDYgKzEzMTI2LDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTIwNjUxLDcgKzIwNzY3LDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xMjc3MCw3ICsxMzQ0Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xMzA1Myw3ICsxMzcyNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTIwNjYxLDcgKzIwNzc3LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTI4NzMsMTkgKzEzNTQ2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTEzMTU2LDE5ICsxMzgyOSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC0yMDcwNSw3ICsyMDgyMSw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xMjkxNSw2ICsxMzYxMSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTEzMTk4LDYgKzEzODk0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtMjA3MTgsNyArMjA4MzQsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTI5MjQsNiArMTM2MjYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTEzMjA3LDYgKzEzOTA5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTIwNzI4LDcgKzIwODQ0LDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTMwMzgsMTIgKzEzNzQzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xMzMyMSwxMiArMTQwMjYsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC0yMDc0NCw3ICsyMDg2MCw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTMxMzAsOSArMTM4MzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTM0MTMsOSArMTQxMTgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtMjA3NTQsNyArMjA4NzAsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTMxNDgsNiArMTM4NTAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTEzNDMxLDYgKzE0MTMzLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0yMDc2NCw3ICsyMDg4MCw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTMxODAsMjEwICsxMzg4NSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTM0NjMsMjEwICsxNDE2OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTIwOTY2LDE1ICsyMTA4Miw5IEBACiAtX0xUX0VPRgogLSAgICA7OwogLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAogKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKKyAKICsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KICsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCiArZnVuY19kaXJuYW1lICgpXApAQCAtMjExMzIsMTIgKzIxMjQyLDEyIEBACiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQogKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CiArZmkKLSsKLSsKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAKKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgICBjaG1vZCAreCAiJG9maWxlIgogIAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAppbmRleCA0YTUxMjczLi4xOGVmNmJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjk3OTAzMjU2ZTA5NTMzNzc4YmFhOGFmNjY0MDJjNDRkNzAyMTlkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWY1MGQ4NDhkOTgzZjgxZTRhODZkZDNlZWY0OTMzZTM1NzkzMzZmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzc6MTAgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNy8xNV0gQWRkIHRoZSBhcm12NWUgYXJjaGl0ZWN0dXJlIHRvIGJpbnV0aWxzCkBAIC0xOSwxMCArMTksMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtYXJtLmMgYi9nYXMvY29uZmlnL3RjLWFybS5jCi1pbmRleCBlYzUwNDIwNTE4Li5hMjVkMTcyMWFmIDEwMDY0NAoraW5kZXggM2Y1Mzg0ZTFjNy4uOGQ1YmMxNDVhZiAxMDA2NDQKIC0tLSBhL2dhcy9jb25maWcvdGMtYXJtLmMKICsrKyBiL2dhcy9jb25maWcvdGMtYXJtLmMKLUBAIC0yNjE5NSw2ICsyNjE5NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtX2FyY2hfb3B0aW9uX3RhYmxlIGFybV9hcmNoc1tdID0KK0BAIC0yNjI5NCw2ICsyNjI5NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtX2FyY2hfb3B0aW9uX3RhYmxlIGFybV9hcmNoc1tdID0KICAgIEFSTV9BUkNIX09QVCAoImFybXY0dCIsCUFSTV9BUkNIX1Y0VCwJIEZQVV9BUkNIX0ZQQSksCiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NHR4bSIsCUFSTV9BUkNIX1Y0VHhNLAkgRlBVX0FSQ0hfRlBBKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY1IiwJQVJNX0FSQ0hfVjUsCSBGUFVfQVJDSF9WRlApLApAQCAtMzEsNSArMzEsNSBAQAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0eG0iLAlBUk1fQVJDSF9WNVR4TSwJIEZQVV9BUkNIX1ZGUCksCiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NXRlIiwJQVJNX0FSQ0hfVjVURSwJIEZQVV9BUkNIX1ZGUCksCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAppbmRleCA5MzliZTY3Li42OTk5ZWQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2MjJkNjY2MzRlYjJlNTA5ZDQxMjZmNWJkY2FiMjZkZTM2NzI0MWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjYTI1ZDU1Y2VmODM5OGJhZDUwOGMyYjJiZTI5YWVhNWFhM2M0ZDI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozOTowMSArMDAwMAogU3ViamVjdDogW1BBVENIIDA4LzE1XSBkb24ndCBsZXQgdGhlIGRpc3RybyBjb21waWxlciBwb2ludCB0byB0aGUgd3JvbmcKQEAgLTMxLDUgKzMxLDUgQEAKICAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKICAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaAppbmRleCBlNzUxMDQ3Li45YTllMzE5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyN2UzOGVlOTJjMjRmY2E4NmIxYzNmNmVmMTU2YTE4OTJkZDA2YmZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMzY2NzA1OWZjMGQ1MmQ4OTBiNTA1YmVkMGU1MDUwZWEzZDcwMDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwOS8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCkBAIC01NSw3ICs1NSw3IEBACiAgbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKwogIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKICBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKwotIGxkL2xkLnRleGluZm8gICB8IDEyICsrKysrKysrKysrKworIGxkL2xkLnRleGkgICAgICB8IDEyICsrKysrKysrKysrKwogIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCiAgbGQvbGRsZXguaCAgICAgIHwgIDIgKysKICBsZC9sZG1haW4uYyAgICAgfCAgMiArKwpAQCAtNjMsMTAgKzYzLDEwIEBACiAgOSBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9sZC9jb25maWcuaW4gYi9sZC9jb25maWcuaW4KLWluZGV4IGE4NDY3NDNkYTYuLmRmM2NkNWZiNjAgMTAwNjQ0CitpbmRleCBkOTNjOWIwODMwLi41ZGEyNzQyYmVhIDEwMDY0NAogLS0tIGEvbGQvY29uZmlnLmluCiArKysgYi9sZC9jb25maWcuaW4KLUBAIC0yNyw2ICsyNyw5IEBACitAQCAtMzEsNiArMzEsOSBAQAogICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KICAjdW5kZWYgRU5BQkxFX05MUwogIApAQCAtNzcsMTAgKzc3LDEwIEBACiAgI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgogIAogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggZGI4Yjk5ODcyMi4uNDg5ZWFkNWMxMyAxMDA3NTUKK2luZGV4IDJiMjkxZjBkYTguLmZhY2MzODY1NjMgMTAwNzU1CiAtLS0gYS9sZC9jb25maWd1cmUKICsrKyBiL2xkL2NvbmZpZ3VyZQotQEAgLTc4OSw2ICs3ODksNyBAQCB3aXRoX2xpYl9wYXRoCitAQCAtODI2LDYgKzgyNiw3IEBAIHdpdGhfbGliX3BhdGgKICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgd2l0aF9zeXNyb290CkBAIC04OCw3ICs4OCw3IEBACiAgZW5hYmxlX2dvbGQKICBlbmFibGVfZ290CiAgZW5hYmxlX2NvbXByZXNzZWRfZGVidWdfc2VjdGlvbnMKLUBAIC0xNDQ4LDYgKzE0NDksOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKK0BAIC0xNDkwLDYgKzE0OTEsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKICAgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKICAgIC0tZW5hYmxlLXRhcmdldHMgICAgICAgIGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwogICAgLS1lbmFibGUtNjQtYml0LWJmZCAgICAgNjQtYml0IHN1cHBvcnQgKG9uIGhvc3RzIHdpdGggbmFycm93ZXIgd29yZCBzaXplcykKQEAgLTk3LDcgKzk3LDcgQEAKICAgIC0tZW5hYmxlLWdvbGRbPUFSR10gICAgIGJ1aWxkIGdvbGQgW0FSRz17ZGVmYXVsdCx5ZXMsbm99XQogICAgLS1lbmFibGUtZ290PTx0eXBlPiAgICAgR09UIGhhbmRsaW5nIHNjaGVtZSAodGFyZ2V0LCBzaW5nbGUsIG5lZ2F0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlnb3QpCi1AQCAtMTYzMTUsNiArMTYzMTgsMTkgQEAgZmkKK0BAIC0xNjYxOCw2ICsxNjYyMSwxOSBAQCBmaQogIAogIAogIApAQCAtMTE4LDEwICsxMTgsMTAgQEAKICBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKICAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKLWluZGV4IGJhZGExYjUwYjAuLmQwNzRhMzgyMGIgMTAwNjQ0CitpbmRleCBkMTBjNTUzNjUwLi45ZjFiNTdiMTIwIDEwMDY0NAogLS0tIGEvbGQvY29uZmlndXJlLmFjCiArKysgYi9sZC9jb25maWd1cmUuYWMKLUBAIC05NSw2ICs5NSwxNiBAQCBBQ19TVUJTVCh1c2Vfc3lzcm9vdCkKK0BAIC05NCw2ICs5NCwxNiBAQCBBQ19TVUJTVCh1c2Vfc3lzcm9vdCkKICBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1QpCiAgQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSkKICAKQEAgLTE1NywxMSArMTU3LDExIEBACiAgICAvKiBCaWcgb3IgbGl0dGxlIGVuZGlhbiBhcyBzZXQgb24gY29tbWFuZCBsaW5lLiAgKi8KICAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOwogIAotZGlmZiAtLWdpdCBhL2xkL2xkLnRleGluZm8gYi9sZC9sZC50ZXhpbmZvCi1pbmRleCBjODk5MTVmMWFhLi5kZjQzMDgzN2UyIDEwMDY0NAotLS0tIGEvbGQvbGQudGV4aW5mbwotKysrIGIvbGQvbGQudGV4aW5mbwotQEAgLTI0OTgsNiArMjQ5OCwxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KK2RpZmYgLS1naXQgYS9sZC9sZC50ZXhpIGIvbGQvbGQudGV4aQoraW5kZXggYjlmZTIzMjRkYS4uNDM0ODY2MDVlMCAxMDA2NDQKKy0tLSBhL2xkL2xkLnRleGkKKysrKyBiL2xkL2xkLnRleGkKK0BAIC0yNDc5LDYgKzI0NzksMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCiAgCiAgUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKICBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KQEAgLTE4MSw3ICsxODEsNyBAQAogIAogIEBjIG1hbiBlbmQKIGRpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCi1pbmRleCA2NTMyYTU3ZDk2Li5mOTQzZjBiMmU1IDEwMDY0NAoraW5kZXggYTcyZmYxMzUyNi4uZGM1MTQ4Zjc0OCAxMDA2NDQKIC0tLSBhL2xkL2xkZmlsZS5jCiArKysgYi9sZC9sZGZpbGUuYwogQEAgLTExNiw2ICsxMTYsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCkBAIC0yMDksMTAgKzIwOSwxMCBAQAogIAogIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KIGRpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAotaW5kZXggMTQwZWQxZDlkYS4uOTk2NWNiYzA0ZiAxMDA2NDQKK2luZGV4IDA0ZDZmZDVmOTYuLmQ3ZGYwMDViYjIgMTAwNjQ0CiAtLS0gYS9sZC9sZGxleC5oCiArKysgYi9sZC9sZGxleC5oCi1AQCAtMTQ3LDYgKzE0Nyw4IEBAIGVudW0gb3B0aW9uX3ZhbHVlcworQEAgLTE0OCw2ICsxNDgsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKICAgIE9QVElPTl9SRVFVSVJFX0RFRklORURfU1lNQk9MLAogICAgT1BUSU9OX09SUEhBTl9IQU5ETElORywKICAgIE9QVElPTl9GT1JDRV9HUk9VUF9BTExPQ0FUSU9OLApAQCAtMjIyLDEwICsyMjIsMTAgQEAKICAKICAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KIGRpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCi1pbmRleCBjNDczZWQyNGMzLi5hZGFlMGI0NjEwIDEwMDY0NAoraW5kZXggZjMxZWViMjljMy4uMjVmODQ5Nzg4OCAxMDA2NDQKIC0tLSBhL2xkL2xkbWFpbi5jCiArKysgYi9sZC9sZG1haW4uYwotQEAgLTI2MSw2ICsyNjEsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMjY4LDYgKzI2OCw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKICAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7CiAgICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKQEAgLTIzNSwxMCArMjM1LDEwIEBACiAgICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCiAgICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCiBkaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYwotaW5kZXggZjIxOTE2MDJkNC4uYmNjYjNiZGVlZiAxMDA2NDQKK2luZGV4IDg2YTAzM2EzODMuLjRhNDBkNDgwMjAgMTAwNjQ0CiAtLS0gYS9sZC9sZXhzdXAuYwogKysrIGIvbGQvbGV4c3VwLmMKLUBAIC01MzgsNiArNTM4LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9CitAQCAtNTQzLDYgKzU0MywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQogICAgeyB7Im9ycGhhbi1oYW5kbGluZyIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fT1JQSEFOX0hBTkRMSU5HfSwKICAgICAgJ1wwJywgTl8oIj1NT0RFIiksIE5fKCJDb250cm9sIGhvdyBvcnBoYW4gc2VjdGlvbnMgYXJlIGhhbmRsZWQuIiksCiAgICAgIFRXT19EQVNIRVMgfSwKQEAgLTI1Myw4ICsyNTMsOCBAQAogIH07CiAgCiAgI2RlZmluZSBPUFRJT05fQ09VTlQgQVJSQVlfU0laRSAobGRfb3B0aW9ucykKLUBAIC0xNTY4LDYgKzE1NzYsMTQgQEAgcGFyc2VfYXJncyAodW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSAgICBlaW5mbyAoXygiJVAlRjogaW52YWxpZCBhcmd1bWVudCB0byBvcHRpb24iCitAQCAtMTU3Nyw2ICsxNTg1LDE0IEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgICAgZWluZm8gKF8oIiVGJVA6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIgogIAkJICAgICAiIFwiLS1vcnBoYW4taGFuZGxpbmdcIlxuIikpOwogIAkgIGJyZWFrOwogKwpAQCAtMjY5LDUgKzI2OSw1IEBACiAgICAgIH0KICAKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKaW5kZXggMzNkZmZmOS4uOGZjMDBmZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlMjA1YWUwNWM0MWE4Y2M4ZDQ3NzA4ZjBhM2I2Zjc0MGUyYmYyNTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5ZTFkOGY5YTY1N2E4YmQ0ODA0OGMyZWE2NDA3Y2Y2MGI3MjNiZDY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAogU3ViamVjdDogW1BBVENIIDEwLzE1XSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZApAQCAtNDgsNSArNDgsNSBAQAogIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAgCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCmluZGV4IDgwZmNiYzEuLjJlOTNiMTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzk3OGMxMjk5MDIxMDMzYzM1YzI5Yzk0ZTA5OTcyMzVmN2VkZTI0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmQyZTJmY2RkOTY0Njg0OTcxNmVlOTlkOGQzZTVkNzJhZTg4ODliYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDQ6MTQgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxMS8xNV0gQ2hhbmdlIGRlZmF1bHQgZW11bGF0aW9uIGZvciBtaXBzNjQqLSotbGludXgKQEAgLTE0LDEwICsxNCwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggZjA0YTk5M2YwNi4uODc3N2Y5NmJkMiAxMDA2NDQKK2luZGV4IDYzOTFmMzU2ODQuLjhhMTFjMDY4MGEgMTAwNjQ0CiAtLS0gYS9iZmQvY29uZmlnLmJmZAogKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC0xMTg5LDEyICsxMTg5LDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCitAQCAtOTEzLDEyICs5MTMsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KICAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKICAgICAgOzsKICAgIG1pcHM2NCplbC0qLWxpbnV4KikKQEAgLTM1LDEwICszNSwxMCBAQAogICAgbWlwcyplbC0qLWxpbnV4KikKICAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYwogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCA2MTgzYTg1YjNkLi4xZDc4NDY1NTkwIDEwMDY0NAoraW5kZXggZmFkOGIyZTVjOC4uN2ZiMjE2ODUwMyAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC01MzUsMTEgKzUzNSwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcworQEAgLTQ2NCwxMSArNDY0LDExIEBAIG1pcHMqZWwtKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWxtaXB2eHdvcmtzCiAgbWlwcyotKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWJtaXB2eHdvcmtzCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJlbG1pcHZ4d29ya3MiIDs7CiAgbWlwcyotKi13aW5kaXNzKQl0YXJnX2VtdWw9ZWxmMzJtaXBzd2luZGlzcyA7OwpAQCAtNTUsNSArNTUsNSBAQAogIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCIKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCmluZGV4IDFmZWZiNjguLjRkNjRiZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNiNDBiZjU4NDYxNWY3OTRiODVmZDUwZDRkMGE1YzBhMWQyZWU3YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk2ZmY3NTcwYzI5Zjc5MmM0NjZhOTMzNTI5ZmVmZGE5YjhlOTc5OTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAogU3ViamVjdDogW1BBVENIIDEyLzE1XSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCkBAIC0zNCwxMCArMzQsMTAgQEAKICAxNCBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JmZC9hb3V0eC5oIGIvYmZkL2FvdXR4LmgKLWluZGV4IGVlYzljNGFkMmEuLjNiZjBhNzFlNjMgMTAwNjQ0CitpbmRleCAwMjM4NDNiMGJlLi40NjI0NmZlYzJkIDEwMDY0NAogLS0tIGEvYmZkL2FvdXR4LmgKICsrKyBiL2JmZC9hb3V0eC5oCi1AQCAtODE0LDYgKzgxNCw3IEBAIE5BTUUgKGFvdXQsIG1hY2hpbmVfdHlwZSkgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLAorQEAgLTc5OCw2ICs3OTgsNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKICAJY2FzZSBiZmRfbWFjaF9taXBzaXNhNjRyNjoKICAJY2FzZSBiZmRfbWFjaF9taXBzX3NiMToKICAJY2FzZSBiZmRfbWFjaF9taXBzX3hscjoKQEAgLTQ2LDEwICs0NiwxMCBAQAogIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOwogIAkgIGJyZWFrOwogZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKLWluZGV4IGU4M2M1N2EyZjMuLjMwMTZlYTFiYWUgMTAwNjQ0CitpbmRleCAyODJlOTgzMDg2Li5iMzhiMDVkMTMyIDEwMDY0NAogLS0tIGEvYmZkL2FyY2h1cmVzLmMKICsrKyBiL2JmZC9hcmNodXJlcy5jCi1AQCAtMjAxLDYgKzIwMSw3IEBAIERFU0NSSVBUSU9OCitAQCAtMTgzLDYgKzE4Myw3IEBAIERFU0NSSVBUSU9OCiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zCQk2NTAzCiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIJCTg4NzY4MgkgeyogZGVjaW1hbCAnWExSJy4gICp9CiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMgk3MzY1NTAJIHsqIGRlY2ltYWwgJ0lBMicuICAqfQpAQCAtNTgsMTAgKzU4LDEwIEBACiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIJCTMzCiAgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMJCTM0CiBkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IDQyOTkxZTc4NDguLjI3YWJjNWQ1YTggMTAwNjQ0CitpbmRleCA5Mzc0NWJkM2ZkLi4zMjZlOWU0OWVkIDEwMDY0NAogLS0tIGEvYmZkL2JmZC1pbjIuaAogKysrIGIvYmZkL2JmZC1pbjIuaAotQEAgLTIwNjIsNiArMjA2Miw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQorQEAgLTIwNTQsNiArMjA1NCw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQogICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKICAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInLiAgKi8KICAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInLiAgKi8KQEAgLTcwLDEwICs3MCwxMCBAQAogICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCA4Nzc3Zjk2YmQyLi43YjgwYmRhOGM5IDEwMDY0NAoraW5kZXggOGExMWMwNjgwYS4uYzg4MjQyMTM0MyAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExNzIsNiArMTE3MiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTg5Niw2ICs4OTYsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KICAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKICAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKICAgICAgOzsKQEAgLTExMCwxMCArMTEwLDEwIEBACiAgCiAgLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgogZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCi1pbmRleCAyODU0MDEzNjdkLi4xNGViYjVmMTc1IDEwMDY0NAoraW5kZXggZDkxOTQyMzAxYy4uNWQxYmQzZjBiMSAxMDA2NDQKIC0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKICsrKyBiL2JmZC9lbGZ4eC1taXBzLmMKLUBAIC02ODA2LDYgKzY4MDYsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQorQEAgLTY4MDUsNiArNjgwNSw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCiAgICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6CiAgICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjI7CiAgCkBAIC0xMjMsNyArMTIzLDcgQEAKICAgICAgZGVmYXVsdDoKICAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQogIAl7Ci1AQCAtMTE5NjMsNiArMTE5NjYsMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCitAQCAtMTIwMDMsNiArMTIwMDYsMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCiAgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7CiAgICAgICAgYnJlYWs7CiAgCkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6CiAgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7CiAgICAgICAgYnJlYWs7Ci1AQCAtMTM5MzYsNiArMTM5NDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9CitAQCAtMTM5OTIsNiArMTM5OTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9CiAgICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9ucCwgYmZkX21hY2hfbWlwc19vY3Rlb24gfSwKICAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb24sIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCiAgICB7IGJmZF9tYWNoX21pcHNfbG9vbmdzb25fM2EsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCkBAIC0xNDMsMTAgKzE0MywxMCBAQAogICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLwogICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCiBkaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCBhZTFjZGE5YTdiLi5mZWQwMzg3YTk0IDEwMDY0NAoraW5kZXggMmI3OGRiMjE5Yi4uN2E3MTc4OTI1ZiAxMDA2NDQKIC0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwogKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMzM3MCw2ICszMzcwLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKEZpbGVkYXRhICogZmlsZWRhdGEsIHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKK0BAIC0zNDAzLDYgKzM0MDMsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAoRmlsZWRhdGEgKiBmaWxlZGF0YSwgdW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQogIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKICAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKICAJICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6ICBzdHJjYXQgKGJ1ZiwgIiwgaW50ZXJhcHRpdi1tcjIiKTsgYnJlYWs7CkBAIC0xNTUsNyArMTU1LDcgQEAKICAJICAgIC8qIFdlIHNpbXBseSBpZ25vcmUgdGhlIGZpZWxkIGluIHRoaXMgY2FzZSB0byBhdm9pZCBjb25mdXNpb246CiAgCSAgICAgICBNSVBTIEVMRiBkb2VzIG5vdCBzcGVjaWZ5IEVGX01JUFNfTUFDSCwgaXQgaXMgYSBHTlUKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLW1pcHMuYyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCi1pbmRleCBjMTM1MTMxYjU5Li5kOGZiZGE4ZTMxIDEwMDY0NAoraW5kZXggNTlkZjc4NzE1NS4uNDg1MzcyMjZjMCAxMDA2NDQKIC0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCiArKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwogQEAgLTU1Miw2ICs1NTIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICkKICAKICAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC0xOTczNyw3ICsxOTczOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQorQEAgLTE5Nzc4LDcgKzE5NzgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CiAgICAvKiBCcm9hZGNvbSBYTFAuCiAgICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKICAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCkBAIC0xODQsMTAgKzE4NCwxMCBAQAogICAgLyogTUlQUyA2NCBSZWxlYXNlIDYgKi8KICAgIHsgImk2NDAwIiwJICAgICAgMCwgQVNFX01TQSwJCUlTQV9NSVBTNjRSNiwgQ1BVX01JUFM2NFI2fSwKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggYTQwYWMyMTQ0Zi4uNjVhNjk5NTI0MyAxMDA3NTUKK2luZGV4IDEzNDI3OGZhMjUuLjJmZGNhMTQ3YTEgMTAwNzU1CiAtLS0gYS9nYXMvY29uZmlndXJlCiArKysgYi9nYXMvY29uZmlndXJlCi1AQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKK0BAIC0xMzMzNiw2ICsxMzMzNiw5IEBAIF9BQ0VPRgogIAkgIG1pcHNpc2E2NHI2IHwgbWlwc2lzYTY0cjZlbCkKICAJICAgIG1pcHNfY3B1PW1pcHM2NHI2CiAgCSAgICA7OwpAQCAtMTk4LDcgKzE5OCw3IEBACiAgCSAgICBtaXBzX2NwdT1yMzkwMAogIAkgICAgOzsKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9taXBzLmggYi9pbmNsdWRlL2VsZi9taXBzLmgKLWluZGV4IDlkZTBiNGUxNzUuLjc0ZmM0ZjdlNTUgMTAwNjQ0CitpbmRleCA0ZTJjZGUzMjc5Li5jMzI5ZjM4OTI5IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCiArKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKIEBAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCkBAIC0yMTAsMTAgKzIxMCwxMCBAQAogICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMwkweDAwOGUwMDAwCiAgI2RlZmluZSBFX01JUFNfTUFDSF81NDAwCTB4MDA5MTAwMDAKIGRpZmYgLS1naXQgYS9pbmNsdWRlL29wY29kZS9taXBzLmggYi9pbmNsdWRlL29wY29kZS9taXBzLmgKLWluZGV4IDVlZWE3MmYxMzkuLjkwZjZkNTdlMTUgMTAwNjQ0CitpbmRleCAxYWIxNzgwNTY3Li43NGY0NTdiNTc5IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCiArKysgYi9pbmNsdWRlL29wY29kZS9taXBzLmgKLUBAIC0xMjU5LDYgKzEyNTksOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7CitAQCAtMTI2Miw2ICsxMjYyLDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0gewogICNkZWZpbmUgSU5TTl9YTFIgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKICAvKiBJbWFnaW5hdGlvbiBpbnRlckFwdGl2IE1SMi4gICovCiAgI2RlZmluZSBJTlNOX0lOVEVSQVBUSVZfTVIyCSAgMHgwNDAwMDAwMApAQCAtMjIyLDcgKzIyMiw3IEBACiAgCiAgLyogRFNQIEFTRSAqLwogICNkZWZpbmUgQVNFX0RTUAkJCTB4MDAwMDAwMDEKLUBAIC0xMzY1LDYgKzEzNjcsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7CitAQCAtMTM3Myw2ICsxMzc1LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0gewogICNkZWZpbmUgQ1BVX09DVEVPTjMJNjUwMwogICNkZWZpbmUgQ1BVX1hMUiAgICAgCTg4NzY4MiAgIAkvKiBkZWNpbWFsICdYTFInICAgKi8KICAjZGVmaW5lIENQVV9JTlRFUkFQVElWX01SMiA3MzY1NTAJLyogZGVjaW1hbCAnSUEyJyAgKi8KQEAgLTIzMCw3ICsyMzAsNyBAQAogIAogIC8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBDUFUgaXMgaW5jbHVkZWQgaW4gSU5TTl8qIG1hc2sgTUFTSy4gICovCiAgCi1AQCAtMTQ0NSw2ICsxNDQ4LDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCitAQCAtMTQ1Myw2ICsxNDU2LDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCiAgICAgICAgcmV0dXJuICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBMzJSNikKICAJICAgICB8fCAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTY0UjYpOwogIApAQCAtMjQxLDEwICsyNDEsMTAgQEAKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgIH0KIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggMWQ3ODQ2NTU5MC4uMzA3ZTc4N2I2NCAxMDA2NDQKK2luZGV4IDdmYjIxNjg1MDMuLmExZGI3YWRmZTIgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUudGd0CiArKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTIxLDYgKzUyMSw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKK0BAIC00NTAsNiArNDUwLDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQogIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKICAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKQEAgLTI1NCwxMCArMjU0LDEwIEBACiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJscjU5MDAiCiAgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7CiBkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLWRpcy5jIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCi1pbmRleCA5ODRmY2JiODAyLi45NWIxMDdkMjE2IDEwMDY0NAoraW5kZXggYmJmMjEzMjhlOC4uMzhlNDg3YzE2ZiAxMDA2NDQKIC0tLSBhL29wY29kZXMvbWlwcy1kaXMuYwogKysrIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCi1AQCAtNjU1LDEzICs2NTUsMTEgQEAgY29uc3Qgc3RydWN0IG1pcHNfYXJjaF9jaG9pY2UgbWlwc19hcmNoX2Nob2ljZXNbXSA9CitAQCAtNjU2LDEzICs2NTYsMTEgQEAgY29uc3Qgc3RydWN0IG1pcHNfYXJjaF9jaG9pY2UgbWlwc19hcmNoX2Nob2ljZXNbXSA9CiAgICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKICAgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKICAKQEAgLTI3NywxMCArMjc3LDEwIEBACiAgICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCiAgICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLwogZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYwotaW5kZXggMTgwZDYxM2M5My4uNjViN2I4Y2MyMyAxMDA2NDQKK2luZGV4IDFjYmNiYzZhYmMuLmUxZmJkYzg5ZGUgMTAwNjQ0CiAtLS0gYS9vcGNvZGVzL21pcHMtb3BjLmMKICsrKyBiL29wY29kZXMvbWlwcy1vcGMuYwotQEAgLTMyOCw2ICszMjgsNyBAQCBkZWNvZGVfbWlwc19vcGVyYW5kIChjb25zdCBjaGFyICpwKQorQEAgLTMyOSw2ICszMjksNyBAQCBkZWNvZGVfbWlwc19vcGVyYW5kIChjb25zdCBjaGFyICpwKQogICNkZWZpbmUgSU9DVDMJSU5TTl9PQ1RFT04zCiAgI2RlZmluZSBYTFIgICAgIElOU05fWExSCiAgI2RlZmluZSBJQU1SMglJTlNOX0lOVEVSQVBUSVZfTVIyCkBAIC0yODgsNyArMjg4LDcgQEAKICAjZGVmaW5lIElWSVJUCUFTRV9WSVJUCiAgI2RlZmluZSBJVklSVDY0CUFTRV9WSVJUNjQKICAKLUBAIC05NjYsNiArOTY3LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTk3NCw2ICs5NzUsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAogIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCiAgeyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LApAQCAtMjk2LDcgKzI5Niw3IEBACiAgLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCiAgeyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKICB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAotQEAgLTk5OCwxMiArMTAwMCwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTAwNiwxMiArMTAwOCwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJkYWRkaXUiLAkJInQscixqIiwJMHg2NDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8yLAkJMCwJCUkzLAkJMCwJMCB9LAogIHsiZGFkZHUiLAkJImQsdix0IiwJMHgwMDAwMDAyZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTMsCQkwLAkwIH0sCiAgeyJkYWRkdSIsCQkidCxyLEkiLAkwLCAgICAoaW50KSBNX0RBRERVX0ksCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAkwIH0sCkBAIC0zMTEsNyArMzExLDcgQEAKICAvKiBkY3RyIGFuZCBkY3R3IGFyZSB1c2VkIG9uIHRoZSByNTAwMC4gICovCiAgeyJkY3RyIiwJCSJvKGIpIiwJIAkweGJjMDUwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKICB7ImRjdHciLAkJIm8oYikiLAkJMHhiYzA5MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCi1AQCAtMTA3NSw2ICsxMDc4LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTEwODMsNiArMTA4Niw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7ImRtZmMwIiwJCSJ0LEcsSCIsCTB4NDAyMDAwMDAsIDB4ZmZlMDA3ZjgsCVdSXzF8UkRfQzB8TEMsCQkwLAkJSTY0LAkJMCwJMCB9LAogIHsiZG1mZ2MwIiwJCSJ0LEciLAkJMHg0MDYwMDEwMCwgMHhmZmUwMDdmZiwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAogIHsiZG1mZ2MwIiwJCSJ0LEcsSCIsCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZjgsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKQEAgLTMxOSw3ICszMTksNyBAQAogIHsiZG10IiwJCQkiIiwJCTB4NDE2MDBiYzEsIDB4ZmZmZmZmZmYsIFRSQVAsCQkJMCwJCTAsCQlNVDMyLAkwIH0sCiAgeyJkbXQiLAkJCSJ0IiwJCTB4NDE2MDBiYzEsIDB4ZmZlMGZmZmYsIFdSXzF8VFJBUCwJCTAsCQkwLAkJTVQzMiwJMCB9LAogIHsiZG10YzAiLAkJInQsRyIsCQkweDQwYTAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0MwfFdSX0NDfENNLAkwLAkJSTMsCQkwLAlFRSB9LAotQEAgLTEwOTAsNiArMTA5NCw4IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xMDk4LDYgKzExMDIsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwogIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KICB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LApAQCAtMzI4LDcgKzMyOCw3IEBACiAgeyJkbXVsIiwJCSJkLHMsdCIsCTB4MDAwMDAwOWMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKICB7ImRtdWwiLAkJImQsdix0IiwJMHg3MDAwMDAwMywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfSElMTywJMCwJCUlPQ1QsCQkwLAkwIH0sCiAgeyJkbXVsIiwJCSJkLHYsdCIsCTAsICAgIChpbnQpIE1fRE1VTCwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCU0zMnxJNjkgfSwKLUBAIC0xMjQzLDkgKzEyNDksOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTI1MSw5ICsxMjU3LDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsibGQiLAkJCSJzLC1iKCtSKSIsCTB4ZWMxODAwMDAsIDB4ZmMxYzAwMDAsIFdSXzEsCQkJUkRfcGMsCQlJNjksCQkwLAkwIH0sCiAgeyJsZCIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fTERfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCiAgeyJsZCIsCQkJInQsbyhiKSIsCTB4ZGMwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xMTSwJCTAsCQlJMywJCTAsCTAgfSwKQEAgLTM0MSw3ICszNDEsNyBAQAogIHsibGRjMSIsCQkiVCxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAogIHsibGRjMSIsCQkiRSxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAogIHsibGRjMSIsCQkiVCxBKGIpIiwJMCwgICAgKGludCkgTV9MREMxX0FCLAlJTlNOX01BQ1JPLAkJSU5TTjJfTV9GUF9ELAlJMiwJCTAsCVNGIH0sCi1AQCAtMTQxMCw3ICsxNDE2LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTE0MTgsNyArMTQyNCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKICB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCiAgeyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCkBAIC0zNTAsNyArMzUwLDcgQEAKICB7Im1mc2EiLAkJImQiLAkJMHgwMDAwMDAyOCwgMHhmZmZmMDdmZiwJV1JfMSwJCQkwLAkJRUUsCQkwLAkwIH0sCiAgeyJtaW4ub2IiLAkJIlgsWSxRIiwJMHg3ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCVNCMSwJCU1YLAkwIH0sCiAgeyJtaW4ub2IiLAkJIkQsUyxRIiwJMHg0ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCU41NCwJCTAsCTAgfSwKLUBAIC0xNDU1LDEwICsxNDYxLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xNDYzLDEwICsxNDY5LDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICAvKiBtb3ZlIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHRhYmxlLiAgKi8KICB7Im1zZ24ucWgiLAkJIlgsWSxRIiwJMHg3ODIwMDAwMCwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCTAsCQlNWCwJMCB9LAogIHsibXNnc25kIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHU05ELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKQEAgLTM2Niw3ICszNjYsNyBAQAogIHsibXN1Yi5kIiwJCSJELFIsUyxUIiwJMHg0YzAwMDAyOSwgMHhmYzAwMDAzZiwgV1JfMXxSRF8yfFJEXzN8UkRfNHxGUF9ELCAwLAkJSTRfMzMsCQkwLAlJMzcgfSwKICB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDQ2MjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRSwJCTAsCTAgfSwKICB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDcyMjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRiwJCTAsCTAgfSwKLUBAIC0xNTA4LDcgKzE1MTcsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTUxNiw3ICsxNTI1LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsibXRsbyIsCQkicyw3IiwJCTB4MDAwMDAwMTMsIDB4ZmMxZmU3ZmYsIFJEXzF8V1JfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAogIHsibXRsbzEiLAkJInMiLAkJMHg3MDAwMDAxMywgMHhmYzFmZmZmZiwJUkRfMXxXUl9MTywJCTAsCQlFRSwJCTAsCTAgfSwKICB7Im10bGh4IiwJCSJzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZmZmZmYsCVJEXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LApAQCAtMzc1LDcgKzM3NSw3IEBACiAgeyJtdG0wIiwJCSJzIiwJCTB4NzAwMDAwMDgsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCiAgeyJtdG0wIiwgICAgCQkicyx0IiwJCTB4NzAwMDAwMDgsIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlJT0NUMywJCTAsCTAgfSwKICB7Im10bTEiLAkJInMiLAkJMHg3MDAwMDAwYywgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKLUBAIC0xOTQ1LDkgKzE5NTQsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTk1Myw5ICsxOTYyLDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsic3V4YzEiLAkJIlMsdChiKSIsCTB4NGMwMDAwMGQsIDB4ZmMwMDA3ZmYsIFJEXzF8UkRfMnxSRF8zfFNNfEZQX0QsCTAsCQlJNV8zM3xONTUsCTAsCUkzN30sCiAgeyJzdyIsCQkJInQsbyhiKSIsCTB4YWMwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTSwJCTAsCQlJMSwJCTAsCTAgfSwKICB7InN3IiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9TV19BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKQEAgLTM4OSw1ICszODksNSBAQAogIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKICB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCmluZGV4IGMzZTFiMTMuLmM5ZmZkYWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjdlYzIyY2EzY2Q1NmNmZGYwNjBkMmUxZjQxNGJlZGNlMjY5YjMyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDQ1NDU1ZGIzNWRiNTY5M2M1ZWZlMGUxYjM4NDI5NWU0YzBkYjk5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgogRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjowODoyOSAtMDUwMAogU3ViamVjdDogW1BBVENIIDEzLzE1XSBmaXggdGhlIGluY29ycmVjdCBhc3NlbWJsaW5nIGZvciBwcGMgd2FpdCBtbmVtb25pYwpAQCAtMTEsMTAgKzExLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYwotaW5kZXggYmIxN2YyNmMyZS4uZGJkZDc2MmI0ZSAxMDA2NDQKK2luZGV4IDRhMGZjYTVmMGEuLjQ5ZjcyZmMzNWMgMTAwNjQ0CiAtLS0gYS9vcGNvZGVzL3BwYy1vcGMuYwogKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLUBAIC01MzM4LDcgKzUzMzgsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CitAQCAtNTM1MSw3ICs1MzUxLDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0gewogIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAogIAogIHsid2FpdGFzZWMiLAlYKDMxLDMwKSwgICAgICBYUlRSQVJCX01BU0ssIFBPV0VSOCwJUE9XRVI5LAkJezB9fSwKQEAgLTIyLDcgKzIyLDcgQEAKICAKICB7Imx3ZXB4IiwJWCgzMSwzMSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKICAKLUBAIC01MzkyLDcgKzUzOTEsNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CitAQCAtNTQwNSw3ICs1NDA0LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0gewogIAogIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCiAgeyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCkBAIC0zMiw1ICszMiw1IEBACiAgeyJkY2JzdGVwIiwJWFJUKDMxLDYzLDApLAlYUlRfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1JBMCwgUkJ9fSwKICAKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKaW5kZXggY2YzNjkwZi4uNjE5N2RmNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ZGZiZDY4ODlkODY4YTA5ZDY5NWRkMjczNjEwNDg0OGMxYTljOWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5YWY5MGNmYzM1ZmYxZmU3ODc1NTU3ODg2MTQ3MzAzOTgzNmM0NjdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAxNC8xNV0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgdGFyZ19vYmo9bWlwcwogICB0YXJnX21hY2hpbmU9RU1fTUlQUwogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKaW5kZXggOGM5ZmQyMy4uN2RjOGJhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjk4ODA0ZjQzMDkzOWQ2Y2M5NGIwOTczMmVlOTNlNjRjNWU2YmUxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjllMjZiZDI5YjVmMDE3ZWExMzA3YjUxYjUwMzYwNjNiZmY3ODYwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6MzM6MjcgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSCAxNS8xNV0gc3luYyB3aXRoIE9FIGxpYnRvb2wgY2hhbmdlcwpAQCAtODUsNSArODUsNSBAQAogIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KICAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtYWRkLWkzODZwZXAtZW11bGF0aW9uLWZvci14ODZfNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LWFkZC1pMzg2cGVwLWVtdWxhdGlvbi1mb3IteDg2XzY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMjA3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LWFkZC1pMzg2cGVwLWVtdWxhdGlvbi1mb3IteDg2XzY0LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK2JpbnV0aWxzIDogZW5hYmxlIHg4Nl82NC1wZXAgZm9yIHByb2R1Y2luZyBFRkkgYmluYXJpZXMgb24geDg2LTY0CisKK0FkZCB4ODZfNjQtcGVwIGVtdWxhdGlvbiBzdXBwb3J0IHRvIHRoZSBzZXQgZW5hYmxlZCBmb3IgeDg2XzY0IHRhcmdldHMKK3RvIGVuYWJsZSB0aGUgbGlua2VyIHRvIHByb2R1Y2UgUG9ydGFibGUgRXhlY3V0YWJsZXMgZm9yIEVGSSBiaW5hcmllcy4KKworRW5hYmxlcyBidWlsZGluZyB0aGUgeDg2LTY0IEVGSSB2YXJpYW50IG9mIHRoZSBYZW4gaHlwZXJ2aXNvciBmb3IKK3RoZSBPcGVuWFQgUHJvamVjdC4KKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xhcmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uIHNwZWNpZmljXQorLS0tCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggYzg4MjQyMS4uZGM3MDViNiAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTY4OCw3ICs2ODgsNyBAQCBjYXNlICIke3Rhcmd9IiBpbgorICAgICA7OworICAgeDg2XzY0LSotbGludXgtKikKKyAgICAgdGFyZ19kZWZ2ZWM9eDg2XzY0X2VsZjY0X3ZlYworLSAgICB0YXJnX3NlbHZlY3M9ImkzODZfZWxmMzJfdmVjIGlhbWN1X2VsZjMyX3ZlYyB4ODZfNjRfZWxmMzJfdmVjIGkzODZfcGVpX3ZlYyB4ODZfNjRfcGVpX3ZlYyBsMW9tX2VsZjY0X3ZlYyBrMW9tX2VsZjY0X3ZlYyIKKysgICAgdGFyZ19zZWx2ZWNzPSJpMzg2X2VsZjMyX3ZlYyBpYW1jdV9lbGYzMl92ZWMgeDg2XzY0X2VsZjMyX3ZlYyBpMzg2X3BlaV92ZWMgeDg2XzY0X3BlaV92ZWMgbDFvbV9lbGY2NF92ZWMgazFvbV9lbGY2NF92ZWMgeDg2XzY0X3BlX3ZlYyB4ODZfNjRfcGVfYmVfdmVjIGkzODZfcGVfdmVjIgorICAgICB3YW50NjQ9dHJ1ZQorICAgICA7OworICAgeDg2XzY0LSotbmFjbCopCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IGExZGI3YWQuLjY1YTk4NGEgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUudGd0CisrKysgYi9sZC9jb25maWd1cmUudGd0CitAQCAtMjUzLDggKzI1Myw5IEBAIHg4Nl82NC0qLWxpbnV4LWdudXgzMikJdGFyZ19lbXVsPWVsZjMyX3g4Nl82NAorIAkJCXRkaXJfZWxmX2lhbWN1PWBlY2hvICR7dGFyZ19hbGlhc30gfCBzZWQgLWUgJ3MveDg2XzY0L2kzODYvJyAtZSAncy8tbGludXgtZ251eDMyLy1saW51eC1nbnUvJ2AKKyAJCQl0ZGlyX2VsZl9pMzg2PWBlY2hvICR7dGFyZ19hbGlhc30gfCBzZWQgLWUgJ3MveDg2XzY0L2kzODYvJyAtZSAncy8tbGludXgtZ251eDMyLy1saW51eC1nbnUvJ2AgOzsKKyB4ODZfNjQtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmX3g4Nl82NAorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyX3g4Nl82NCBlbGZfaTM4NiBlbGZfaWFtY3UgZWxmX2wxb20gZWxmX2sxb20iCistCQkJdGFyZ19leHRyYV9saWJwYXRoPSJlbGZfaTM4NiBlbGYzMl94ODZfNjQgZWxmX2wxb20gZWxmX2sxb20iCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJfeDg2XzY0IGVsZl9pMzg2IGVsZl9pYW1jdSBlbGZfbDFvbSBlbGZfazFvbSBpMzg2cGUgaTM4NnBlcCIKKysJCQl0YXJnX2V4dHJhX2xpYnBhdGg9ImVsZl9pMzg2IGVsZjMyX3g4Nl82NCBlbGZfbDFvbSBlbGZfazFvbSBpMzg2cGVwIgorKwkJCXRhcmdfZXh0cmFfb2ZpbGVzPSJkZWZmaWxlcC5vIHBlcC1kbGwubyBwZS1kbGwubyIKKyAJCQl0ZGlyX2VsZl9pMzg2PWBlY2hvICR7dGFyZ19hbGlhc30gfCBzZWQgLWUgJ3MveDg2XzY0L2kzODYvJ2AgOzsKKyBpWzMtN104Ni0qLXJlZG94KikJdGFyZ19lbXVsPWVsZl9pMzg2CisgCQkJdGFyZ19leHRyYV9lbXVscz1lbGZfeDg2XzY0IDs7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWltcHJvdmUtY2hlY2stZm9yLWlucHV0LWZpbGUtbWF0Y2hpbmctb3V0cHV0LWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWltcHJvdmUtY2hlY2stZm9yLWlucHV0LWZpbGUtbWF0Y2hpbmctb3V0cHV0LWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1ZTUyNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTctaW1wcm92ZS1jaGVjay1mb3ItaW5wdXQtZmlsZS1tYXRjaGluZy1vdXRwdXQtZmlsZS5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDJhNTAzNjZkZWQzMjliZmIzOWQzODcyNTM0NTBjOWQ1MzAyYzM1MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTQgQXVnIDIwMTggMTI6MjI6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXMuYzogSW1wcm92ZSBjaGVjayBmb3IgaW5wdXQgZmlsZSBtYXRjaGluZyBvdXRwdXQgZmlsZS4KKworV2hlbiB0aGUgYXNzZW1ibGVyIHJlcG9ydHMgdGhhdCB0aGUgaW5wdXQgYW5kIG91dHB1dCBhcmUgdGhlIHNhbWUsIHJlcG9ydCB0aGUKK2ZpbGUgbmFtZXMgaW52b2x2ZWQsIGluIG9yZGVyIHRvIGhlbHAgZGVidWdnaW5nLiAgQWxzbyBkbyBub3QgZXF1YXRlIHR3byBmaWxlcworYXJlIHRoZSBzYW1lIGlmIHRoZSBoYXZlIHRoZSBzYW1lIGlub2RlIHZhbHVlIGJ1dCByZXNpZGUgb24gZGlmZmVyZW50IGZpbGUKK3N5c3RlbXMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBnYXMvYXMuYyAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKystLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2FzL2FzLmMgYi9nYXMvYXMuYworaW5kZXggYjJhOTA4YS4uMzEwNWQwNiAxMDA2NDQKKy0tLSBhL2dhcy9hcy5jCisrKysgYi9nYXMvYXMuYworQEAgLTEyNTksMTQgKzEyNTksMjcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiogYXJndikKKyAJeworIAkgIHN0cnVjdCBzdGF0IHNpYjsKKyAKKy0JICBpZiAoc3RhdCAoYXJndltpXSwgJnNpYikgPT0gMCkKKysJICAvKiBDaGVjayB0aGF0IHRoZSBpbnB1dCBmaWxlIGFuZCBvdXRwdXQgZmlsZSBhcmUgZGlmZmVyZW50LiAgKi8KKysJICBpZiAoc3RhdCAoYXJndltpXSwgJnNpYikgPT0gMAorKwkgICAgICAmJiBzaWIuc3RfaW5vID09IHNvYi5zdF9pbm8KKysJICAgICAgLyogUE9TSVggZW11bGF0aW5nIHN5c3RlbXMgbWF5IHN1cHBvcnQgc3RhdCgpIGJ1dCBpZiB0aGUKKysJCSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgYSBmaWxlIHNlcmlhbCBudW1iZXIKKysJCSBvZiBzb21lIGtpbmQgdGhlbiB0aGV5IHdpbGwgcmV0dXJuIDAgZm9yIHRoZSBpbm9kZS4gIFNvCisrCQkgdHdvIGZpbGVzIHdpdGggYW4gaW5vZGUgb2YgMCBtYXkgbm90IGFjdHVhbGx5IGJlIHRoZSBzYW1lLgorKwkJIE9uIHJlYWwgUE9TSVggc3lzdGVtcyBubyBvcmRpbmFyeSBmaWxlIHdpbGwgZXZlciBoYXZlIGFuCisrCQkgaW5vZGUgb2YgMC4gICovCisrCSAgICAgICYmIHNpYi5zdF9pbm8gIT0gMAorKwkgICAgICAvKiBEaWZmZXJlbnQgZmlsZXMgbWF5IGhhdmUgdGhlIHNhbWUgaW5vZGUgbnVtYmVyIGlmIHRoZXkKKysJCSByZXNpZGUgb24gZGlmZmVyZW50IGRldmljZXMsIHNvIGNoZWNrIHRoZSBzdF9kZXYgZmllbGQgYXMKKysJCSB3ZWxsLiAgKi8KKysJICAgICAgJiYgc2liLnN0X2RldiA9PSBzb2Iuc3RfZGV2KQorIAkgICAgeworLQkgICAgICBpZiAoc2liLnN0X2lubyA9PSBzb2Iuc3RfaW5vICYmIHNpYi5zdF9pbm8gIT0gMCkKKy0JCXsKKy0JCSAgLyogRG9uJ3QgbGV0IGFzX2ZhdGFsIHJlbW92ZSB0aGUgb3V0cHV0IGZpbGUhICAqLworLQkJICBvdXRfZmlsZV9uYW1lID0gTlVMTDsKKy0JCSAgYXNfZmF0YWwgKF8oIlRoZSBpbnB1dCBhbmQgb3V0cHV0IGZpbGVzIG11c3QgYmUgZGlzdGluY3QiKSk7CistCQl9CisrCSAgICAgIGNvbnN0IGNoYXIgKnNhdmVkX291dF9maWxlX25hbWUgPSBvdXRfZmlsZV9uYW1lOworKworKwkgICAgICAvKiBEb24ndCBsZXQgYXNfZmF0YWwgcmVtb3ZlIHRoZSBvdXRwdXQgZmlsZSEgICovCisrCSAgICAgIG91dF9maWxlX25hbWUgPSBOVUxMOworKwkgICAgICBhc19mYXRhbCAoXygiVGhlIGlucHV0ICclcycgYW5kIG91dHB1dCAnJXMnIGZpbGVzIGFyZSB0aGUgc2FtZSIpLAorKwkJCWFyZ3ZbaV0sIHNhdmVkX291dF9maWxlX25hbWUpOworIAkgICAgfQorIAl9CisgICAgIH0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1SZWZhY3RvcmVkLWxvY2F0aW9uLXdoZXJlLUdPVC1pbmZvcm1hdGlvbi1pcy1jb2xsZWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1SZWZhY3RvcmVkLWxvY2F0aW9uLXdoZXJlLUdPVC1pbmZvcm1hdGlvbi1pcy1jb2xsZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MTMzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE4LVJlZmFjdG9yZWQtbG9jYXRpb24td2hlcmUtR09ULWluZm9ybWF0aW9uLWlzLWNvbGxlY3QucGF0Y2gKQEAgLTAsMCArMSwyMDEgQEAKK0Zyb20gZDkzMGFmZmEyZDQ3NWQxY2M2NzkyZjFlNmQ1NmJlZjNkNmM2MTdkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CitEYXRlOiBGcmksIDIgTWFyIDIwMTggMTc6MTY6MjEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVmYWN0b3JlZCBsb2NhdGlvbiB3aGVyZSBHT1QgaW5mb3JtYXRpb24gaXMgY29sbGVjdGVkLgorCitDaGFuZ2UgbG9jYXRpb24gd2hlcmUgR09UIGluZm9ybWF0aW9uIGlzIGNvbGxlY3RlZCBmb3IgQVJDIHRhcmdldCwgYXZvaWRpbmcKK3Bvc2libGUgdXNlIGNvbmZsaWN0cyBvZiB0aGUgcHJldmlvdXMgLmdvdCBmaWVsZCBpbiB0aGUgc3ltYm9scyBoYXNoX2VudHJ5LgorCitiZmQvCisyMDE4LTAzLTAxICBDdXBlcnRpbm8gTWlyYW5kYSAgPGNtaXJhbmRhQHN5bm9wc3lzLmNvbT4KKworCSogYXJjLWdvdC5oIChnZXRfZ290X2VudHJ5X2xpc3RfZm9yX3N5bWJvbCk6IENoYW5nZWQuCisJKiBlZjMyLWFyYy5jIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkpOiBNb3ZlZCBhbmQgY2hhbmdlZC4KKwkoZWxmX2FyY19saW5rX2hhc2hfbmV3ZnVuYyk6IENoYW5nZWQuCisJKGFyY19lbGZfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IFJlbW92ZWQgb2xkIGluaXRpYWxpemF0aW9ucy4KKwkoZWxmX2FyY19yZWxvY2F0ZV9zZWN0aW9uLCBlbGZfYXJjX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IENoYW5nZWQuCisKK1NpZ25lZC1vZmYtYnk6IEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorW1JvbWFpbjogcmViYXNlIG9uIHRvcCBvZiAyLjMxXQorU2lnbmVkLW9mZi1ieTogUm9tYWluIE5hb3VyIDxyb21haW4ubmFvdXJAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGJmZC9hcmMtZ290LmggICB8ICA2ICsrKy0tCisgYmZkL2VsZjMyLWFyYy5jIHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9hcmMtZ290LmggYi9iZmQvYXJjLWdvdC5oCitpbmRleCBhODYwNjFiY2IzOC4uODFjZTg4ZmUyMWEgMTAwNjQ0CistLS0gYS9iZmQvYXJjLWdvdC5oCisrKysgYi9iZmQvYXJjLWdvdC5oCitAQCAtMTU2LDkgKzE1NiwxMSBAQCBnZXRfZ290X2VudHJ5X2xpc3RfZm9yX3N5bWJvbCAoYmZkICphYmZkLAorIAkJCSAgICAgICB1bnNpZ25lZCBsb25nIHJfc3ltbmR4LAorIAkJCSAgICAgICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqaCkKKyB7CistICBpZiAoaCAhPSBOVUxMKQorKyAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICpoMSA9CisrICAgICgoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopIGgpOworKyAgaWYgKGgxICE9IE5VTEwpCisgICAgIHsKKy0gICAgICByZXR1cm4gJmgtPmdvdC5nbGlzdDsKKysgICAgICByZXR1cm4gJmgxLT5nb3RfZW50czsKKyAgICAgfQorICAgZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWFyYy5jIGIvYmZkL2VsZjMyLWFyYy5jCitpbmRleCBhNDhlZjBjYTE1Zi4uYWI4NGRlNDM4MTUgMTAwNjQ0CistLS0gYS9iZmQvZWxmMzItYXJjLmMKKysrKyBiL2JmZC9lbGYzMi1hcmMuYworQEAgLTE2MCw2ICsxNjAsMTggQEAgc3RydWN0IGFyY19yZWxvY2F0aW9uX2RhdGEKKyAgIGNvbnN0IGNoYXIgKiAgICBzeW1ib2xfbmFtZTsKKyB9OworIAorKy8qIEFSQyBFTEYgbGlua2VyIGhhc2ggZW50cnkuICAqLworK3N0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeQorK3sKKysgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5IHJvb3Q7CisrCisrICAvKiBUcmFjayBkeW5hbWljIHJlbG9jcyBjb3BpZWQgZm9yIHRoaXMgc3ltYm9sLiAgKi8KKysgIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqZHluX3JlbG9jczsKKysKKysgIHN0cnVjdCBnb3RfZW50cnkgKmdvdF9lbnRzOworK307CisrCisrCisgLyogU2hvdWxkIGJlIGluY2x1ZGVkIGF0IHRoaXMgbG9jYXRpb24gZHVlIHRvIHN0YXRpYyBkZWNsYXJhdGlvbnMKKyAgICBkZWZpbmVkIGJlZm9yZSB0aGlzIHBvaW50LiAgKi8KKyAjaW5jbHVkZSAiYXJjLWdvdC5oIgorQEAgLTI4MSwxNSArMjkzLDYgQEAgc3RydWN0IGFyY19yZWxvY19tYXAKKyAgIHVuc2lnbmVkIGNoYXIJCSAgICBlbGZfcmVsb2NfdmFsOworIH07CisgCistLyogQVJDIEVMRiBsaW5rZXIgaGFzaCBlbnRyeS4gICovCistc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5CisteworLSAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgcm9vdDsKKy0KKy0gIC8qIFRyYWNrIGR5bmFtaWMgcmVsb2NzIGNvcGllZCBmb3IgdGhpcyBzeW1ib2wuICAqLworLSAgc3RydWN0IGVsZl9keW5fcmVsb2NzICpkeW5fcmVsb2NzOworLX07CistCisgLyogQVJDIEVMRiBsaW5rZXIgaGFzaCB0YWJsZS4gICovCisgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX3RhYmxlCisgeworQEAgLTMwMSwyOCArMzA0LDI4IEBAIGVsZl9hcmNfbGlua19oYXNoX25ld2Z1bmMgKHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqZW50cnksCisgCQkJICAgc3RydWN0IGJmZF9oYXNoX3RhYmxlICp0YWJsZSwKKyAJCQkgICBjb25zdCBjaGFyICpzdHJpbmcpCisgeworKyAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICogcmV0ID0KKysgICAgKHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqKSBlbnRyeTsKKysKKyAgIC8qIEFsbG9jYXRlIHRoZSBzdHJ1Y3R1cmUgaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkIGJ5IGEKKyAgICAgIHN1YmNsYXNzLiAgKi8KKy0gIGlmIChlbnRyeSA9PSBOVUxMKQorLSAgICB7CistICAgICAgZW50cnkgPSAoc3RydWN0IGJmZF9oYXNoX2VudHJ5ICopCistCSAgYmZkX2hhc2hfYWxsb2NhdGUgKHRhYmxlLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkpKTsKKy0gICAgICBpZiAoZW50cnkgPT0gTlVMTCkKKy0JcmV0dXJuIGVudHJ5OworLSAgICB9CisrICBpZiAocmV0ID09IE5VTEwpCisrICAgIHJldCA9IChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKikKKysJYmZkX2hhc2hfYWxsb2NhdGUgKHRhYmxlLCBzaXplb2YgKHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSkpOworKyAgaWYgKHJldCA9PSBOVUxMKQorKyAgICByZXR1cm4gKHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqKSByZXQ7CisgCisgICAvKiBDYWxsIHRoZSBhbGxvY2F0aW9uIG1ldGhvZCBvZiB0aGUgc3VwZXJjbGFzcy4gICovCistICBlbnRyeSA9IF9iZmRfZWxmX2xpbmtfaGFzaF9uZXdmdW5jIChlbnRyeSwgdGFibGUsIHN0cmluZyk7CistICBpZiAoZW50cnkgIT0gTlVMTCkKKysgIHJldCA9ICgoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopCisrCSBfYmZkX2VsZl9saW5rX2hhc2hfbmV3ZnVuYyAoKHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqKSByZXQsCisrCQkJCSAgICAgdGFibGUsIHN0cmluZykpOworKyAgaWYgKHJldCAhPSBOVUxMKQorICAgICB7CistICAgICAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICplaDsKKy0KKy0gICAgICBlaCA9IChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKikgZW50cnk7CistICAgICAgZWgtPmR5bl9yZWxvY3MgPSBOVUxMOworKyAgICAgIHJldC0+ZHluX3JlbG9jcyA9IE5VTEw7CisrICAgICAgcmV0LT5nb3RfZW50cyA9IE5VTEw7CisgICAgIH0KKyAKKy0gIHJldHVybiBlbnRyeTsKKysgIHJldHVybiAoc3RydWN0IGJmZF9oYXNoX2VudHJ5ICopIHJldDsKKyB9CisgCisgLyogRGVzdHJveSBhbiBBUkMgRUxGIGxpbmtlciBoYXNoIHRhYmxlLiAgKi8KK0BAIC0zNTIsMTEgKzM1NSw2IEBAIGFyY19lbGZfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSAoYmZkICphYmZkKQorICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCistICByZXQtPmVsZi5pbml0X2dvdF9yZWZjb3VudC5yZWZjb3VudCA9IDA7CistICByZXQtPmVsZi5pbml0X2dvdF9yZWZjb3VudC5nbGlzdCA9IE5VTEw7CistICByZXQtPmVsZi5pbml0X2dvdF9vZmZzZXQub2Zmc2V0ID0gMDsKKy0gIHJldC0+ZWxmLmluaXRfZ290X29mZnNldC5nbGlzdCA9IE5VTEw7CistCisgICByZXQtPmVsZi5yb290Lmhhc2hfdGFibGVfZnJlZSA9IGVsZl9hcmNfbGlua19oYXNoX3RhYmxlX2ZyZWU7CisgCisgICByZXR1cm4gJnJldC0+ZWxmLnJvb3Q7CitAQCAtMTYxNSwxMCArMTYxMywxNCBAQCBlbGZfYXJjX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqCQkJICBvdXRwdXRfYmZkLAorIAkgIHdoaWxlIChoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF9pbmRpcmVjdAorIAkJIHx8IGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX3dhcm5pbmcpCisgCSAgeworLQkgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmhfb2xkID0gaDsKKysJICAgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqYWhfb2xkID0KKysJICAgICAgKHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqKSBoOworIAkgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOworLQkgICAgaWYgKGgtPmdvdC5nbGlzdCA9PSAwICYmIGhfb2xkLT5nb3QuZ2xpc3QgIT0gaC0+Z290LmdsaXN0KQorLQkgICAgICBoLT5nb3QuZ2xpc3QgPSBoX29sZC0+Z290LmdsaXN0OworKwkgICAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICphaCA9CisrCSAgICAgIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKikgaDsKKysKKysJICAgIGlmIChhaC0+Z290X2VudHMgPT0gMCAmJiBhaF9vbGQtPmdvdF9lbnRzICE9IGFoLT5nb3RfZW50cykKKysJICAgICAgYWgtPmdvdF9lbnRzID0gYWhfb2xkLT5nb3RfZW50czsKKyAJICB9CisgCisgCSAgLyogVE9ETzogTmVlZCB0byB2YWxpZGF0ZSB3aGF0IHdhcyB0aGUgaW50ZW50aW9uLiAgKi8KK0BAIC0xNjM2LDYgKzE2MzgsOCBAQCBlbGZfYXJjX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqCQkJICBvdXRwdXRfYmZkLAorIAorIAkgICAgICBpZiAoaXNfcmVsb2NfZm9yX0dPVCAoaG93dG8pICYmICFiZmRfbGlua19waWMgKGluZm8pKQorIAkJeworKwkJICBzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKmFoID0KKysJCSAgICAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopIGg7CisgCQkgIC8qIFRPRE86IENoYW5nZSBpdCB0byB1c2UgYXJjX2RvX3JlbG9jYXRpb24gd2l0aAorIAkJICAgIEFSQ18zMiByZWxvYy4gIFRyeSB0byB1c2UgQUREX1JFTEEgbWFjcm8uICAqLworIAkJICBiZmRfdm1hIHJlbG9jYXRpb24gPQorQEAgLTE2NDUsOCArMTY0OSw4IEBAIGVsZl9hcmNfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICoJCQkgIG91dHB1dF9iZmQsCisgCQkJICsgcmVsb2NfZGF0YS5zeW1fc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPnZtYSkKKyAJCSAgICAgIDogMCk7CisgCistCQkgIEJGRF9BU1NFUlQgKGgtPmdvdC5nbGlzdCk7CistCQkgIGJmZF92bWEgZ290X29mZnNldCA9IGgtPmdvdC5nbGlzdC0+b2Zmc2V0OworKwkJICBCRkRfQVNTRVJUIChhaC0+Z290X2VudHMpOworKwkJICBiZmRfdm1hIGdvdF9vZmZzZXQgPSBhaC0+Z290X2VudHMtPm9mZnNldDsKKyAJCSAgYmZkX3B1dF8zMiAob3V0cHV0X2JmZCwgcmVsb2NhdGlvbiwKKyAJCQkgICAgICBodGFiLT5zZ290LT5jb250ZW50cyArIGdvdF9vZmZzZXQpOworIAkJfQorQEAgLTE5NTgsNiArMTk2Miw3IEBAIGVsZl9hcmNfY2hlY2tfcmVsb2NzIChiZmQgKgkJCSBhYmZkLAorICAgICAgIGVsc2UgLyogR2xvYmFsIG9uZS4gICovCisgCWggPSBzeW1faGFzaGVzW3Jfc3ltbmR4IC0gc3ltdGFiX2hkci0+c2hfaW5mb107CisgCisrCisgICAgICAgc3dpdGNoIChyX3R5cGUpCisgCXsKKyAJICBjYXNlIFJfQVJDXzMyOgorQEAgLTI0MDQsNyArMjQwOSw5IEBAIGVsZl9hcmNfZmluaXNoX2R5bmFtaWNfc3ltYm9sIChiZmQgKiBvdXRwdXRfYmZkLAorICAgICAgY3JlYXRlIHJlc3BlY3RpdmUgZHluYW1pYyByZWxvY3MuICAqLworICAgLyogVE9ETzogTWFrZSBmdW5jdGlvbiB0byBnZXQgbGlzdCBhbmQgbm90IGFjY2VzcyB0aGUgbGlzdCBkaXJlY3RseS4gICovCisgICAvKiBUT0RPOiBNb3ZlIGZ1bmN0aW9uIHRvIHJlbG9jYXRlX3NlY3Rpb24gY3JlYXRlIHRoaXMgcmVsb2NzIGVhZ2VybHkuICAqLworLSAgY3JlYXRlX2dvdF9keW5yZWxvY3NfZm9yX2dvdF9pbmZvICgmaC0+Z290LmdsaXN0LAorKyAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICphaCA9CisrICAgIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKikgaDsKKysgIGNyZWF0ZV9nb3RfZHlucmVsb2NzX2Zvcl9nb3RfaW5mbyAoJmFoLT5nb3RfZW50cywKKyAJCQkJICAgICBvdXRwdXRfYmZkLAorIAkJCQkgICAgIGluZm8sCisgCQkJCSAgICAgaCk7CistLSAKKzIuMTQuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE5LUltcHJvdmVkLXJvYnVzdG5lc3MuLVJldHVybi1GQUxTRS1pbi1jYXNlLW9mLU5VTEwtcG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE5LUltcHJvdmVkLXJvYnVzdG5lc3MuLVJldHVybi1GQUxTRS1pbi1jYXNlLW9mLU5VTEwtcG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1OGVlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTktSW1wcm92ZWQtcm9idXN0bmVzcy4tUmV0dXJuLUZBTFNFLWluLWNhc2Utb2YtTlVMTC1wby5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDk1NTE3NmJkOTk5ZmU4MGM1YjkzN2FiODc4NjY2NTA3OWUzNWMzODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDE3OjMzOjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmVkIHJvYnVzdG5lc3MuIFJldHVybiBGQUxTRSBpbiBjYXNlIG9mIE5VTEwgcG9pbnRlci4KKworYmZkLworMjAxOC0wMy0wMSAgQ3VwZXJ0aW5vIE1pcmFuZGEgPGNtaXJhbmRhQHN5bm9wc3lzLmNvbT4KKworCSogZWxmMzItYXJjLmMgKGVsZl9hcmNfZmluaXNoX2R5bmFtaWNfc3ltYm9sKSBSZXR1cm4gRkFMU0UgaW4gY2FzZQorCWFyY19odGFiIGlzIE5VTEwuCisKK1NpZ25lZC1vZmYtYnk6IEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorW1JvbWFpbjogcmViYXNlIG9uIHRvcCBvZiAyLjMxXQorU2lnbmVkLW9mZi1ieTogUm9tYWluIE5hb3VyIDxyb21haW4ubmFvdXJAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGJmZC9lbGYzMi1hcmMuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWFyYy5jIGIvYmZkL2VsZjMyLWFyYy5jCitpbmRleCBhYjg0ZGU0MzgxNS4uMzNmYzcyY2ZmNmUgMTAwNjQ0CistLS0gYS9iZmQvZWxmMzItYXJjLmMKKysrKyBiL2JmZC9lbGYzMi1hcmMuYworQEAgLTI0MjAsNiArMjQyMCw5IEBAIGVsZl9hcmNfZmluaXNoX2R5bmFtaWNfc3ltYm9sIChiZmQgKiBvdXRwdXRfYmZkLAorICAgICB7CisgICAgICAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX3RhYmxlICphcmNfaHRhYiA9IGVsZl9hcmNfaGFzaF90YWJsZSAoaW5mbyk7CisgCisrICAgICAgaWYoYXJjX2h0YWIgPT0gTlVMTCkKKysJcmV0dXJuIEZBTFNFOworKworICAgICAgIGlmIChoLT5keW5pbmR4ID09IC0xCisgCSAgfHwgKGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZmluZWQKKyAJICAgICAgJiYgaC0+cm9vdC50eXBlICE9IGJmZF9saW5rX2hhc2hfZGVmd2VhaykKKy0tIAorMi4xNC40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMjAtTWFrZS1zdXJlLWdsb2JhbC1zeW1ib2wtaXMtbm90LWFuLWluZGlyZWN0LW9yLXdhcm5pbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMjAtTWFrZS1zdXJlLWdsb2JhbC1zeW1ib2wtaXMtbm90LWFuLWluZGlyZWN0LW9yLXdhcm5pbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWU0MmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAyMC1NYWtlLXN1cmUtZ2xvYmFsLXN5bWJvbC1pcy1ub3QtYW4taW5kaXJlY3Qtb3Itd2FybmluLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOWQwOWNlMTRiNGVlZjJiNTZmMjQ2NjBmZDY5YTQ0YWNkNDUxMjhiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CitEYXRlOiBGcmksIDIgTWFyIDIwMTggMTc6Mzg6MTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBzdXJlIGdsb2JhbCBzeW1ib2wgaXMgbm90IGFuIGluZGlyZWN0IG9yIHdhcm5pbmcuCisKK1Byb2JsZW0gaWRlbnRpZmllZCBpbiB0aGUgY29udGV4dCBvZiBnbGliYyB3aXRoIGxhdGVzdCB1cHN0cmVhbSBiaW51dGlscy4KK0R5bmFtaWMgc3ltYm9sIHNwYWNlIHdhcyBiZWluZyByZXNlcnZlZCBidXQsIG5vIGFjdHVhbCBpbmZvcm1hdGlvbiBmb3IgdGhlCitzeW1ib2wgd2FzIGJlaW5nIHNldC4gRGF0YSBmb3IgdGhlIHN5bWJvbCB3YXMga2VwdCBpbml0aWFsaXplZCB3aXRoIC0xLgorTm8gZWFzeSB0ZXN0IGNhc2Ugd2FzIHBvc3NpYmxlIHRvIGJlIGNyZWF0ZWQuCisKK2JmZC8KKzIwMTgtMDMtMDEgIEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CisKKwkqIGVsZjMyLWFyYy5jIChlbGZfYXJjX2NoZWNrX3JlbG9jcyk6IENoYW5nZWQuCisKK1NpZ25lZC1vZmYtYnk6IEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorW1JvbWFpbjogcmViYXNlIG9uIHRvcCBvZiAyLjMxXQorU2lnbmVkLW9mZi1ieTogUm9tYWluIE5hb3VyIDxyb21haW4ubmFvdXJAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGJmZC9lbGYzMi1hcmMuYyB8IDcgKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1hcmMuYyBiL2JmZC9lbGYzMi1hcmMuYworaW5kZXggMzNmYzcyY2ZmNmUuLjliNzJjNWI0ZjRmIDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLWFyYy5jCisrKysgYi9iZmQvZWxmMzItYXJjLmMKK0BAIC0xOTYwLDcgKzE5NjAsMTIgQEAgZWxmX2FyY19jaGVja19yZWxvY3MgKGJmZCAqCQkJIGFiZmQsCisgICAgICAgaWYgKHJfc3ltbmR4IDwgc3ltdGFiX2hkci0+c2hfaW5mbykgLyogSXMgYSBsb2NhbCBzeW1ib2wuICAqLworIAloID0gTlVMTDsKKyAgICAgICBlbHNlIC8qIEdsb2JhbCBvbmUuICAqLworLQloID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOworKwl7CisrCSAgaCA9IHN5bV9oYXNoZXNbcl9zeW1uZHggLSBzeW10YWJfaGRyLT5zaF9pbmZvXTsKKysJICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKKysJCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQorKwkgICAgaCA9IChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKSBoLT5yb290LnUuaS5saW5rOworKwl9CisgCisgCisgICAgICAgc3dpdGNoIChyX3R5cGUpCistLSAKKzIuMTQuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDIxLVBMVC1pbmZvcm1hdGlvbi13YXMtc3RpbGwtYmVpbmctZ2VuZXJhdGVkLXdoZW4tc3ltYm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDIxLVBMVC1pbmZvcm1hdGlvbi13YXMtc3RpbGwtYmVpbmctZ2VuZXJhdGVkLXdoZW4tc3ltYm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU5NDIzOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMjEtUExULWluZm9ybWF0aW9uLXdhcy1zdGlsbC1iZWluZy1nZW5lcmF0ZWQtd2hlbi1zeW1iby5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGU0ODYxYzY4MDY3Y2IyMTY2YjRjMmJiOWMwNTJhYmViNmFkOWFhYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDE3OjQ0OjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFBMVCBpbmZvcm1hdGlvbiB3YXMgc3RpbGwgYmVpbmcgZ2VuZXJhdGVkIHdoZW4gc3ltYm9sIHdhcworIGZvcmNlZF9sb2NhbC4KKworQSBjaGFuZ2UgdXBzdHJlYW0gcmV2ZWlsZWQgdGhpcyBpc3N1ZSwgdHJpZ2dlcmluZyBhbiBhc3NlcnQgd2hlbiBsaW5raW5nIGdsaWJjLgorCitiZmQvCisyMDE4LTAzLTAxICBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorCisJKiBlbGYzMi1hcmMuYyAoZWxmX2FyY19jaGVja19yZWxvY3MpOiBDaGFuZ2VkLgorCitTaWduZWQtb2ZmLWJ5OiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KK1tSb21haW46IHJlYmFzZSBvbiB0b3Agb2YgMi4zMV0KK1NpZ25lZC1vZmYtYnk6IFJvbWFpbiBOYW91ciA8cm9tYWluLm5hb3VyQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBiZmQvZWxmMzItYXJjLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1hcmMuYyBiL2JmZC9lbGYzMi1hcmMuYworaW5kZXggOWI3MmM1YjRmNGYuLmI0MGI0NjNkMzRkIDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLWFyYy5jCisrKysgYi9iZmQvZWxmMzItYXJjLmMKK0BAIC0yMDQxLDcgKzIwNDEsOCBAQCBlbGZfYXJjX2NoZWNrX3JlbG9jcyAoYmZkICoJCQkgYWJmZCwKKyAJICBpZiAoaCA9PSBOVUxMKQorIAkgICAgY29udGludWU7CisgCSAgZWxzZQorLQkgICAgaC0+bmVlZHNfcGx0ID0gMTsKKysJICAgIGlmKGgtPmZvcmNlZF9sb2NhbCA9PSAwKQorKwkgICAgICBoLT5uZWVkc19wbHQgPSAxOworIAl9CisgCisgICAgICAgLyogQWRkIGluZm8gdG8gdGhlIHN5bWJvbCBnb3RfZW50cnlfbGlzdC4gICovCistLSAKKzIuMTQuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDM3Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwMzcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTNlOWQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwMzcyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSA2YWVhMDhkOWYzZTNkNjQ3NWE2NTQ1NGRhNDg4YTBjNTFmNWRjOTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAxNyBBcHIgMjAxOCAxMjozNTo1NSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggaWxsZWdhbCBtZW1vcnkgYWNjZXNzIHdoZW4gcGFyc2luZyBjb3JydXB0IERXQVJGCi0gaW5mb3JtYXRpb24uCi0KLQlQUiAyMzA2NAotCSogZHdhcmYuYyAocHJvY2Vzc19jdV90dV9pbmRleCk6IFRlc3QgZm9yIGEgcG90ZW50aWFsIGJ1ZmZlcgotCW92ZXJydW4gYmVmb3JlIGNvcHlpbmcgc2lnbmF0dXJlIHBvaW50ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtMTAzNzIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9kd2FyZi5jICAgfCAxMyArKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvZHdhcmYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL2R3YXJmLmMKLSsrKyBnaXQvYmludXRpbHMvZHdhcmYuYwotQEAgLTkyNTIsNyArOTI1MiwxOCBAQCBwcm9jZXNzX2N1X3R1X2luZGV4IChzdHJ1Y3QgZHdhcmZfc2VjdGlvCi0gCQl9Ci0gCi0gCSAgICAgIGlmICghZG9fZGlzcGxheSkKLS0JCW1lbWNweSAoJnRoaXNfc2V0W3JvdyAtIDFdLnNpZ25hdHVyZSwgcGgsIHNpemVvZiAodWludDY0X3QpKTsKLSsJCXsKLSsJCSAgc2l6ZV90IG51bV9jb3B5ID0gc2l6ZW9mICh1aW50NjRfdCk7Ci0rCi0rCQkgIC8qIFBSIDIzMDY0OiBCZXdhcmUgb2YgYnVmZmVyIG92ZXJmbG93LiAgKi8KLSsJCSAgaWYgKHBoICsgbnVtX2NvcHkgPCBsaW1pdCkKLSsJCSAgICBtZW1jcHkgKCZ0aGlzX3NldFtyb3cgLSAxXS5zaWduYXR1cmUsIHBoLCBudW1fY29weSk7Ci0rCQkgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICB3YXJuIChfKCJTaWduYXR1cmUgKCVwKSBleHRlbmRzIGJleW9uZCBlbmQgb2Ygc3BhY2UgaW4gc2VjdGlvblxuIiksIHBoKTsKLSsJCSAgICAgIHJldHVybiAwOwotKwkJICAgIH0KLSsJCX0KLSAKLSAJICAgICAgcHJvdyA9IHBvZmZzZXRzICsgKHJvdyAtIDEpICogbmNvbHMgKiA0OwotIAkgICAgICAvKiBQUiAxNzUzMTogZmlsZTogYjhjZTYwYTguICAqLwotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE4LTA0LTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMzA2NAotKyAgICAgICAqIGR3YXJmLmMgKHByb2Nlc3NfY3VfdHVfaW5kZXgpOiBUZXN0IGZvciBhIHBvdGVudGlhbCBidWZmZXIKLSsgICAgICAgb3ZlcnJ1biBiZWZvcmUgY29weWluZyBzaWduYXR1cmUgcG9pbnRlci4KLSsKLSAyMDE4LTAxLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlCYWNrIHRvIGRldmVsb3BtZW50LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTAzNzMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDM3My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0N2NmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDM3My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gNjMyNzUzM2IxZmQyOWZhODZmNmJmMzRlNjFjMzMyYzAxMGUzYzY4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMTcgQXByIDIwMTggMTQ6MzA6MDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIGEgY2hlY2sgZm9yIGEgTlVMTCB0YWJsZSBwb2ludGVyIGJlZm9yZSBhdHRlbXB0aW5nIHRvCi0gY29tcHV0ZSBhIERXQVJGIGZpbGVuYW1lLgotCi0JUFIgMjMwNjUKLQkqIGR3YXJmMi5jIChjb25jYXRfZmlsZW5hbWUpOiBDaGVjayBmb3IgYSBOVUxMIHRhYmxlIHBvaW50ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtMTAzNzMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNSArKysrKwotIGJmZC9kd2FyZjIuYyAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iZmQvZHdhcmYyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZHdhcmYyLmMKLSsrKyBnaXQvYmZkL2R3YXJmMi5jCi1AQCAtMTU2NSw3ICsxNTY1LDcgQEAgY29uY2F0X2ZpbGVuYW1lIChzdHJ1Y3QgbGluZV9pbmZvX3RhYmxlCi0gewotICAgY2hhciAqZmlsZW5hbWU7Ci0gCi0tICBpZiAoZmlsZSAtIDEgPj0gdGFibGUtPm51bV9maWxlcykKLSsgIGlmICh0YWJsZSA9PSBOVUxMIHx8IGZpbGUgLSAxID49IHRhYmxlLT5udW1fZmlsZXMpCi0gICAgIHsKLSAgICAgICAvKiBGSUxFID09IDAgbWVhbnMgdW5rbm93bi4gICovCi0gICAgICAgaWYgKGZpbGUpCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTgtMDQtMTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIDIzMDY1Ci0rICAgICAgICogZHdhcmYyLmMgKGNvbmNhdF9maWxlbmFtZSk6IENoZWNrIGZvciBhIE5VTEwgdGFibGUgcG9pbnRlci4KLSsKLSAyMDE4LTAxLTI5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAgICAgICAgUFIgMjI3NDEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwNTM0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTA1MzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NDcwMjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTA1MzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNDI5ICswLDAgQEAKLUZyb20gYWE0YThjMmEyYTY3NTQ1ZTkwYzg3NzE2MmM1M2NjOWRlNDJkYzhiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjQgQXByIDIwMTggMTY6MzE6MjcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFuIGlsbGVnYWwgbWVtb3J5IGFjY2VzcyB3aGVuIGNvcHlpbmcgYSBQRSBmb3JtYXQgZmlsZQotIHdpdGggY29ycnVwdCBkZWJ1ZyBpbmZvcm1hdGlvbi4KLQotCVBSIDIzMTEwCi0JKiBwZVhYaWdlbi5jIChfYmZkX1hYX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogQ2hlY2sgZm9yCi0JYSBuZWdhdGl2ZSBQRV9ERUJVR19EQVRBIHNpemUgYmVmb3JlIGl0ZXJhdGluZyBvdmVyIHRoZSBkZWJ1ZyBkYXRhLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTEwNTM0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgfCAgICA2ICsKLSBiZmQvcGVYWGlnZW4uYyB8ICAgIDkgKwotIGJmZC9wby9iZmQucG90IHwgNTYzMSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMjY2MiBpbnNlcnRpb25zKCspLCAyOTg0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9wZVhYaWdlbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3BlWFhpZ2VuLmMKLSsrKyBnaXQvYmZkL3BlWFhpZ2VuLmMKLUBAIC0yOTkxLDYgKzI5OTEsMTUgQEAgX2JmZF9YWF9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbgotIAkJCQkgIGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0aW9uKSAtIChhZGRyIC0gc2VjdGlvbi0+dm1hKSk7Ci0gCSAgICAgIHJldHVybiBGQUxTRTsKLSAJICAgIH0KLSsJICAvKiBQUiAyMzExMC4gICovCi0rCSAgZWxzZSBpZiAob3BlLT5wZV9vcHRoZHIuRGF0YURpcmVjdG9yeVtQRV9ERUJVR19EQVRBXS5TaXplIDwgMCkKLSsJICAgIHsKLSsJICAgICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KLSsJICAgICAgX2JmZF9lcnJvcl9oYW5kbGVyCi0rCQkoXygiJXBCOiBEYXRhIERpcmVjdG9yeSBzaXplICglI2x4KSBpcyBuZWdhdGl2ZSIpLAotKwkJIG9iZmQsIG9wZS0+cGVfb3B0aGRyLkRhdGFEaXJlY3RvcnlbUEVfREVCVUdfREFUQV0uU2l6ZSk7Ci0rCSAgICAgIHJldHVybiBGQUxTRTsKLSsJICAgIH0KLSAKLSAJICBmb3IgKGkgPSAwOyBpIDwgb3BlLT5wZV9vcHRoZHIuRGF0YURpcmVjdG9yeVtQRV9ERUJVR19EQVRBXS5TaXplCi0gCQkgLyBzaXplb2YgKHN0cnVjdCBleHRlcm5hbF9JTUFHRV9ERUJVR19ESVJFQ1RPUlkpOyBpKyspCi1JbmRleDogZ2l0L2JmZC9wby9iZmQucG90Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3BvL2JmZC5wb3QKLSsrKyBnaXQvYmZkL3BvL2JmZC5wb3QKLUBAIC0xOCwxNzUgKzE4LDIxNCBAQCBtc2dzdHIgIiIKLSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgotICJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPUlOVEVHRVI7IHBsdXJhbD1FWFBSRVNTSU9OO1xuIgotIAotLSM6IGFvdXQtYWRvYmUuYzoxMjYKLS0jLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogVW5rbm93biBzZWN0aW9uIHR5cGUgaW4gYS5vdXQuYWRvYmUgZmlsZTogJXhcbiIKLS1tc2dzdHIgIiIKLS0KLSAjOiBhb3V0LWNyaXMuYzoyMDAKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogSW52YWxpZCByZWxvY2F0aW9uIHR5cGUgZXhwb3J0ZWQ6ICVkIgotK21zZ2lkICIlcEI6IHVuc3VwcG9ydGVkIHJlbG9jYXRpb24gdHlwZSBleHBvcnRlZDogJSN4IgotIG1zZ3N0ciAiIgotIAotICM6IGFvdXQtY3Jpcy5jOjI0NAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBJbnZhbGlkIHJlbG9jYXRpb24gdHlwZSBpbXBvcnRlZDogJWQiCi0rbXNnaWQgIiVwQjogdW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiB0eXBlIGltcG9ydGVkOiAlI3giCi0gbXNnc3RyICIiCi0gCi0gIzogYW91dC1jcmlzLmM6MjU2Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IEJhZCByZWxvY2F0aW9uIHJlY29yZCBpbXBvcnRlZDogJWQiCi0rbXNnaWQgIiVwQjogYmFkIHJlbG9jYXRpb24gcmVjb3JkIGltcG9ydGVkOiAlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBhb3V0eC5oOjEyODQgYW91dHguaDoxNjM2IHBkcDExLmM6MTE1MiBwZHAxMS5jOjE0MTMKLSsjOiBhb3V0eC5oOjEyNjQgYW91dHguaDoxNjE3IHBkcDExLmM6MTEzOCBwZHAxMS5jOjEzOTkKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogY2FuIG5vdCByZXByZXNlbnQgc2VjdGlvbiBgJUEnIGluIGEub3V0IG9iamVjdCBmaWxlIGZvcm1hdCIKLSttc2dpZCAiJXBCOiBjYW4gbm90IHJlcHJlc2VudCBzZWN0aW9uIGAlcEEnIGluIGEub3V0IG9iamVjdCBmaWxlIGZvcm1hdCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBhb3V0eC5oOjE2MDAgcGRwMTEuYzoxMzg1Ci0rIzogYW91dHguaDoxNTgxIHBkcDExLmM6MTM3MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLS0iJUI6IGNhbiBub3QgcmVwcmVzZW50IHNlY3Rpb24gZm9yIHN5bWJvbCBgJXMnIGluIGEub3V0IG9iamVjdCBmaWxlIGZvcm1hdCIKLSsiJXBCOiBjYW4gbm90IHJlcHJlc2VudCBzZWN0aW9uIGZvciBzeW1ib2wgYCVzJyBpbiBhLm91dCBvYmplY3QgZmlsZSBmb3JtYXQiCi0gbXNnc3RyICIiCi0gCi0tIzogYW91dHguaDoxNjAzIHZtcy1hbHBoYS5jOjc4NTMKLSsjOiBhb3V0eC5oOjE1ODQgdm1zLWFscGhhLmM6Nzg1NAotIG1zZ2lkICIqdW5rbm93bioiCi0gbXNnc3RyICIiCi0gCi0tIzogYW91dHguaDoyNDIyIGFvdXR4Lmg6MjQ0MAotLW1zZ2lkICIlQjogYXR0ZW1wdCB0byB3cml0ZSBvdXQgdW5rbm93biByZWxvYyB0eXBlIgotKyM6IGFvdXR4Lmg6MTcyMAotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogaW52YWxpZCBzdHJpbmcgb2Zmc2V0ICU8UFJJdTY0PiA+PSAlPFBSSXU2ND4iCi0gbXNnc3RyICIiCi0gCi0tIzogYW91dHguaDo0MDkzIGFvdXR4Lmg6NDQxNAotLW1zZ2lkICIlUDogJUI6IHVuZXhwZWN0ZWQgcmVsb2NhdGlvbiB0eXBlXG4iCi0rIzogYW91dHguaDoyNDExIGFvdXR4Lmg6MjQyOQotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogYXR0ZW1wdCB0byB3cml0ZSBvdXQgdW5rbm93biByZWxvYyB0eXBlIgotIG1zZ3N0ciAiIgotIAotLSM6IGFvdXR4Lmg6NTQ0MCBwZHAxMS5jOjM3MDgKLSsjOiBhb3V0eC5oOjQwODQKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogcmVsb2NhdGFibGUgbGluayBmcm9tICVzIHRvICVzIG5vdCBzdXBwb3J0ZWQiCi0rbXNnaWQgIiVwQjogdW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiB0eXBlIgotIG1zZ3N0ciAiIgotIAotLSM6IGFyY2hpdmUuYzoyMzA1Ci0tbXNnaWQgIldhcm5pbmc6IHdyaXRpbmcgYXJjaGl2ZSB3YXMgc2xvdzogcmV3cml0aW5nIHRpbWVzdGFtcFxuIgotKyMuIFVua25vd24gcmVsb2NhdGlvbi4KLSsjOiBhb3V0eC5oOjQ0MDUgY29mZi1hbHBoYS5jOjYwMSBjb2ZmLWFscGhhLmM6MTUxNCBjb2ZmLXJzNjAwMC5jOjI3NzMKLSsjOiBjb2ZmLXNoLmM6NTA0IGNvZmYtdGljNHguYzoxODQgY29mZi10aWM1NHguYzoyNzkgZWxmLWhwcGEuaDoxMDQwCi0rIzogZWxmLWhwcGEuaDoxMDY4IGVsZi1tMTAyMDAuYzoyMjYgZWxmLW0xMDMwMC5jOjgxMiBlbGYzMi1hcmMuYzo1MTkKLSsjOiBlbGYzMi1hcm0uYzoxODUyIGVsZjMyLWF2ci5jOjk1OSBlbGYzMi1iZmluLmM6MTA2MSBlbGYzMi1iZmluLmM6NDY5OAotKyM6IGVsZjMyLWNyMTYuYzo2NTMgZWxmMzItY3IxNi5jOjY4MyBlbGYzMi1jcjE2Yy5jOjE4NiBlbGYzMi1jcmlzLmM6NDY3Ci0rIzogZWxmMzItY3J4LmM6NDI5IGVsZjMyLWQxMHYuYzoyMzQgZWxmMzItZDMwdi5jOjUyMiBlbGYzMi1kMzB2LmM6NTQ0Ci0rIzogZWxmMzItZGx4LmM6NTQ4IGVsZjMyLWVwaXBoYW55LmM6Mzc2IGVsZjMyLWZyMzAuYzozODEgZWxmMzItZnJ2LmM6MjU1OAotKyM6IGVsZjMyLWZydi5jOjYyNjIgZWxmMzItZnQzMi5jOjMwNiBlbGYzMi1oODMwMC5jOjMwMiBlbGYzMi1pMzg2LmM6NDAxCi0rIzogZWxmMzItaXAyay5jOjEyNDUgZWxmMzItaXEyMDAwLmM6NDQyIGVsZjMyLWxtMzIuYzo1MzkgZWxmMzItbTMyYy5jOjMwNQotKyM6IGVsZjMyLW0zMnIuYzoxMjg2IGVsZjMyLW0zMnIuYzoxMzExIGVsZjMyLW0zMnIuYzoyNDE3IGVsZjMyLW02OGhjMTEuYzozOTAKLSsjOiBlbGYzMi1tNjhoYzEyLmM6NTEwIGVsZjMyLW02OGsuYzozNTIgZWxmMzItbWNvcmUuYzozNTQgZWxmMzItbWNvcmUuYzo0NDAKLSsjOiBlbGYzMi1tZXAuYzozODkgZWxmMzItbWV0YWcuYzo4NzggZWxmMzItbWljcm9ibGF6ZS5jOjY5MgotKyM6IGVsZjMyLW1pY3JvYmxhemUuYzo5NjkgZWxmMzItbWlwcy5jOjIyMjkgZWxmMzItbW94aWUuYzoxMzcKLSsjOiBlbGYzMi1tc3A0MzAuYzo2NDggZWxmMzItbXNwNDMwLmM6NjU4IGVsZjMyLW10LmM6MjQxIGVsZjMyLW5kczMyLmM6Mjg4MAotKyM6IGVsZjMyLW5kczMyLmM6MjkwNCBlbGYzMi1uZHMzMi5jOjQ0MjMgZWxmMzItbmlvczIuYzozMDE1IGVsZjMyLW9yMWsuYzo3MTUKLSsjOiBlbGYzMi1wai5jOjMyNSBlbGYzMi1wcGMuYzoyMDYxIGVsZjMyLXBwYy5jOjIwNzQgZWxmMzItcHJ1LmM6NDIwCi0rIzogZWxmMzItcmw3OC5jOjI5MiBlbGYzMi1yeC5jOjMxNCBlbGYzMi1yeC5jOjMyMyBlbGYzMi1zMzkwLmM6MzQ3Ci0rIzogZWxmMzItc2guYzo0MzggZWxmMzItc3B1LmM6MTYwIGVsZjMyLXRpYzZ4LmM6MTUwOCBlbGYzMi10aWM2eC5jOjE1MTgKLSsjOiBlbGYzMi10aWM2eC5jOjE1MzcgZWxmMzItdGljNnguYzoxNTQ3IGVsZjMyLXRpYzZ4LmM6MjY0MiBlbGYzMi10aWxlcHJvLmM6ODAzCi0rIzogZWxmMzItdjg1MC5jOjE4OTkgZWxmMzItdjg1MC5jOjE5MjEgZWxmMzItdjg1MC5jOjQyNzAgZWxmMzItdmF4LmM6MjkwCi0rIzogZWxmMzItdmlzaXVtLmM6NDgyIGVsZjMyLXdhc20zMi5jOjEwNiBlbGYzMi14YzE2eC5jOjI0MSBlbGYzMi14Z2F0ZS5jOjQyOAotKyM6IGVsZjMyLXhzdG9ybXkxNi5jOjM5NSBlbGYzMi14dGVuc2EuYzo0NTQgZWxmMzIteHRlbnNhLmM6NDg4Ci0rIzogZWxmNjQtYWxwaGEuYzoxMTEyIGVsZjY0LWFscGhhLmM6NDEwMSBlbGY2NC1hbHBoYS5jOjQyNDkKLSsjOiBlbGY2NC1pYTY0LXZtcy5jOjI1NCBlbGY2NC1pYTY0LXZtcy5jOjM0NDAgZWxmNjQtbWlwcy5jOjM2MjMKLSsjOiBlbGY2NC1taXBzLmM6MzYzOSBlbGY2NC1tbWl4LmM6MTI2NCBlbGY2NC1wcGMuYzoyMjgxIGVsZjY0LXBwYy5jOjI1NTUKLSsjOiBlbGY2NC1wcGMuYzoyNTY0IGVsZjY0LXMzOTAuYzozMjggZWxmNjQtczM5MC5jOjM3OCBlbGY2NC14ODYtNjQuYzoyODUKLSsjOiBlbGZuMzItbWlwcy5jOjM0NTEgZWxmeHgtaWE2NC5jOjMyNSBlbGZ4eC1yaXNjdi5jOjk1NSBlbGZ4eC1zcGFyYy5jOjU4OQotKyM6IGVsZnh4LXNwYXJjLmM6NjM5IGVsZnh4LXNwYXJjLmM6NjYxIGVsZnh4LXRpbGVneC5jOjkxMiBlbGZ4eC10aWxlZ3guYzo5NTIKLSsjOiAvd29yay9zb3VyY2VzL2JpbnV0aWxzL2N1cnJlbnQvYmZkL2VsZm5uLWFhcmNoNjQuYzoyMTI2Ci0rIzogL3dvcmsvc291cmNlcy9iaW51dGlscy9jdXJyZW50L2JmZC9lbGZubi1hYXJjaDY0LmM6MjIyNCBlbGYzMi1pYTY0LmM6MjExCi0rIzogZWxmMzItaWE2NC5jOjM4NjMgZWxmNjQtaWE2NC5jOjIxMSBlbGY2NC1pYTY0LmM6Mzg2MwotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogdW5zdXBwb3J0ZWQgcmVsb2NhdGlvbiB0eXBlICUjeCIKLSttc2dzdHIgIiIKLSsKLSsjOiBhb3V0eC5oOjU0MzIgcGRwMTEuYzozNjk0Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiByZWxvY2F0YWJsZSBsaW5rIGZyb20gJXMgdG8gJXMgbm90IHN1cHBvcnRlZCIKLSttc2dzdHIgIiIKLSsKLSsjOiBhcmNoaXZlLmM6MjIxNgotK21zZ2lkICJ3YXJuaW5nOiB3cml0aW5nIGFyY2hpdmUgd2FzIHNsb3c6IHJld3JpdGluZyB0aW1lc3RhbXAiCi0gbXNnc3RyICIiCi0gCi0tIzogYXJjaGl2ZS5jOjI0MjEgbGlua2VyLmM6MTQxMAotLW1zZ2lkICIlQjogcGx1Z2luIG5lZWRlZCB0byBoYW5kbGUgbHRvIG9iamVjdCIKLSsjOiBhcmNoaXZlLmM6MjMzMiBsaW5rZXIuYzoxNDE2Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiBwbHVnaW4gbmVlZGVkIHRvIGhhbmRsZSBsdG8gb2JqZWN0IgotIG1zZ3N0ciAiIgotIAotLSM6IGFyY2hpdmUuYzoyNjUwCi0rIzogYXJjaGl2ZS5jOjI1NjEKLSBtc2dpZCAiUmVhZGluZyBhcmNoaXZlIGZpbGUgbW9kIHRpbWVzdGFtcCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBhcmNoaXZlLmM6MjY3NAotKyM6IGFyY2hpdmUuYzoyNTg1Ci0gbXNnaWQgIldyaXRpbmcgdXBkYXRlZCBhcm1hcCB0aW1lc3RhbXAiCi0gbXNnc3RyICIiCi0gCi0rIzogYmZkLmM6NDQ4Ci0rbXNnaWQgIm5vIGVycm9yIgotK21zZ3N0ciAiIgotKwotKyM6IGJmZC5jOjQ0OQotK21zZ2lkICJzeXN0ZW0gY2FsbCBlcnJvciIKLSttc2dzdHIgIiIKLSsKLSsjOiBiZmQuYzo0NTAKLSttc2dpZCAiaW52YWxpZCBiZmQgdGFyZ2V0IgotK21zZ3N0ciAiIgotKwotKyM6IGJmZC5jOjQ1MQotK21zZ2lkICJmaWxlIGluIHdyb25nIGZvcm1hdCIKLSttc2dzdHIgIiIKLSsKLSsjOiBiZmQuYzo0NTIKLSttc2dpZCAiYXJjaGl2ZSBvYmplY3QgZmlsZSBpbiB3cm9uZyBmb3JtYXQiCi0rbXNnc3RyICIiCi0rCi0rIzogYmZkLmM6NDUzCi0rbXNnaWQgImludmFsaWQgb3BlcmF0aW9uIgotK21zZ3N0ciAiIgotKwotICM6IGJmZC5jOjQ1NAotLW1zZ2lkICJObyBlcnJvciIKLSttc2dpZCAibWVtb3J5IGV4aGF1c3RlZCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NTUKLS1tc2dpZCAiU3lzdGVtIGNhbGwgZXJyb3IiCi0rbXNnaWQgIm5vIHN5bWJvbHMiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDU2Ci0tbXNnaWQgIkludmFsaWQgYmZkIHRhcmdldCIKLSttc2dpZCAiYXJjaGl2ZSBoYXMgbm8gaW5kZXg7IHJ1biByYW5saWIgdG8gYWRkIG9uZSIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NTcKLS1tc2dpZCAiRmlsZSBpbiB3cm9uZyBmb3JtYXQiCi0rbXNnaWQgIm5vIG1vcmUgYXJjaGl2ZWQgZmlsZXMiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDU4Ci0tbXNnaWQgIkFyY2hpdmUgb2JqZWN0IGZpbGUgaW4gd3JvbmcgZm9ybWF0IgotK21zZ2lkICJtYWxmb3JtZWQgYXJjaGl2ZSIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NTkKLS1tc2dpZCAiSW52YWxpZCBvcGVyYXRpb24iCi0rbXNnaWQgIkRTTyBtaXNzaW5nIGZyb20gY29tbWFuZCBsaW5lIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ2MAotLW1zZ2lkICJNZW1vcnkgZXhoYXVzdGVkIgotK21zZ2lkICJmaWxlIGZvcm1hdCBub3QgcmVjb2duaXplZCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjEKLS1tc2dpZCAiTm8gc3ltYm9scyIKLSttc2dpZCAiZmlsZSBmb3JtYXQgaXMgYW1iaWd1b3VzIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ2MgotLW1zZ2lkICJBcmNoaXZlIGhhcyBubyBpbmRleDsgcnVuIHJhbmxpYiB0byBhZGQgb25lIgotK21zZ2lkICJzZWN0aW9uIGhhcyBubyBjb250ZW50cyIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjMKLS1tc2dpZCAiTm8gbW9yZSBhcmNoaXZlZCBmaWxlcyIKLSttc2dpZCAibm9ucmVwcmVzZW50YWJsZSBzZWN0aW9uIG9uIG91dHB1dCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjQKLS1tc2dpZCAiTWFsZm9ybWVkIGFyY2hpdmUiCi0rbXNnaWQgInN5bWJvbCBuZWVkcyBkZWJ1ZyBzZWN0aW9uIHdoaWNoIGRvZXMgbm90IGV4aXN0IgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ2NQotLW1zZ2lkICJEU08gbWlzc2luZyBmcm9tIGNvbW1hbmQgbGluZSIKLSttc2dpZCAiYmFkIHZhbHVlIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ2NgotLW1zZ2lkICJGaWxlIGZvcm1hdCBub3QgcmVjb2duaXplZCIKLSttc2dpZCAiZmlsZSB0cnVuY2F0ZWQiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDY3Ci0tbXNnaWQgIkZpbGUgZm9ybWF0IGlzIGFtYmlndW91cyIKLSttc2dpZCAiZmlsZSB0b28gYmlnIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ2OAotLW1zZ2lkICJTZWN0aW9uIGhhcyBubyBjb250ZW50cyIKLS1tc2dzdHIgIiIKLS0KLS0jOiBiZmQuYzo0NjkKLS1tc2dpZCAiTm9ucmVwcmVzZW50YWJsZSBzZWN0aW9uIG9uIG91dHB1dCIKLS1tc2dzdHIgIiIKLS0KLS0jOiBiZmQuYzo0NzAKLS1tc2dpZCAiU3ltYm9sIG5lZWRzIGRlYnVnIHNlY3Rpb24gd2hpY2ggZG9lcyBub3QgZXhpc3QiCi0tbXNnc3RyICIiCi0tCi0tIzogYmZkLmM6NDcxCi0tbXNnaWQgIkJhZCB2YWx1ZSIKLS1tc2dzdHIgIiIKLS0KLS0jOiBiZmQuYzo0NzIKLS1tc2dpZCAiRmlsZSB0cnVuY2F0ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogYmZkLmM6NDczCi0tbXNnaWQgIkZpbGUgdG9vIGJpZyIKLS1tc2dzdHIgIiIKLS0KLS0jOiBiZmQuYzo0NzQKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJFcnJvciByZWFkaW5nICVzOiAlcyIKLSttc2dpZCAiZXJyb3IgcmVhZGluZyAlczogJXMiCi0gbXNnc3RyICIiCi0gCi0tIzogYmZkLmM6NDc1Ci0tbXNnaWQgIiM8SW52YWxpZCBlcnJvciBjb2RlPiIKLSsjOiBiZmQuYzo0NjkKLSttc2dpZCAiIzxpbnZhbGlkIGVycm9yIGNvZGU+IgotIG1zZ3N0ciAiIgotIAotLSM6IGJmZC5jOjE0NDIKLSsjOiBiZmQuYzoxNDE2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQkZEICVzIGFzc2VydGlvbiBmYWlsICVzOiVkIgotIG1zZ3N0ciAiIgotIAotLSM6IGJmZC5jOjE0NTUKLSsjOiBiZmQuYzoxNDI5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQkZEICVzIGludGVybmFsIGVycm9yLCBhYm9ydGluZyBhdCAlczolZCBpbiAlc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IGJmZC5jOjE0NjAKLSsjOiBiZmQuYzoxNDM0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQkZEICVzIGludGVybmFsIGVycm9yLCBhYm9ydGluZyBhdCAlczolZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IGJmZC5jOjE0NjIKLSsjOiBiZmQuYzoxNDM2Ci0gbXNnaWQgIlBsZWFzZSByZXBvcnQgdGhpcyBidWcuXG4iCi0gbXNnc3RyICIiCi0gCi1AQCAtMzMyLDcgKzM3MSw3IEBAIG1zZ3N0ciAiIgotIG1zZ2lkICJwcml2YXRlIGZsYWdzID0gJXg6IgotIG1zZ3N0ciAiIgotIAotLSM6IGNvZmYtYXJtLmM6MjMwNiBlbGYzMi1hcm0uYzoxNDE2MAotKyM6IGNvZmYtYXJtLmM6MjMwNiBlbGYzMi1hcm0uYzoxNDE5MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBbZmxvYXRzIHBhc3NlZCBpbiBmbG9hdCByZWdpc3RlcnNdIgotIG1zZ3N0ciAiIgotQEAgLTM0Miw3ICszODEsNyBAQCBtc2dzdHIgIiIKLSBtc2dpZCAiIFtmbG9hdHMgcGFzc2VkIGluIGludGVnZXIgcmVnaXN0ZXJzXSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBjb2ZmLWFybS5jOjIzMTEgZWxmMzItYXJtLmM6MTQxNjMKLSsjOiBjb2ZmLWFybS5jOjIzMTEgZWxmMzItYXJtLmM6MTQxOTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgW3Bvc2l0aW9uIGluZGVwZW5kZW50XSIKLSBtc2dzdHIgIiIKLUBAIC0yNTY1LDIyNCArMjYwNCwxODAgQEAgbXNnc3RyICIiCi0gbXNnaWQgImlwMmsgcmVsYXhlcjogc3dpdGNoIHRhYmxlIGhlYWRlciBjb3JydXB0LiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1pcDJrLmM6MTI0NQotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBpbnZhbGlkIElQMksgcmVsb2MgbnVtYmVyOiAlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1pcDJrLmM6MTI5OAotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgImlwMmsgbGlua2VyOiBtaXNzaW5nIHBhZ2UgaW5zdHJ1Y3Rpb24gYXQgJSNMeCAoZGVzdCA9ICUjTHgpIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLWlwMmsuYzoxMzE1Ci0tIywgYy1mb3JtYXQKLS1tc2dpZCAiaXAyayBsaW5rZXI6IHJlZHVuZGFudCBwYWdlIGluc3RydWN0aW9uIGF0ICUjTHggKGRlc3QgPSAlI0x4KSIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1pcTIwMDAuYzo0NDEKLSsjOiBlbGYzMi1pcDJrLmM6MTMwMgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBpbnZhbGlkIElRMjAwMCByZWxvYyBudW1iZXI6ICVkIgotK21zZ2lkICJpcDJrIGxpbmtlcjogbWlzc2luZyBwYWdlIGluc3RydWN0aW9uIGF0ICUjPFBSSXg2ND4gKGRlc3QgPSAlIzxQUkl4NjQ+KSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1sbTMyLmM6NTM5Ci0rIzogZWxmMzItaXAyay5jOjEzMjEKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogaW52YWxpZCBMTTMyIHJlbG9jIG51bWJlcjogJWQiCi0rbXNnaWQgIiIKLSsiaXAyayBsaW5rZXI6IHJlZHVuZGFudCBwYWdlIGluc3RydWN0aW9uIGF0ICUjPFBSSXg2ND4gKGRlc3QgPSAlIzxQUkl4NjQ+KSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1sbTMyLmM6NjQ4IGVsZjMyLW5pb3MyLmM6MzEzMwotKyM6IGVsZjMyLWxtMzIuYzo2NTEgZWxmMzItbmlvczIuYzozMTQxCi0gbXNnaWQgImdsb2JhbCBwb2ludGVyIHJlbGF0aXZlIHJlbG9jYXRpb24gd2hlbiBfZ3Agbm90IGRlZmluZWQiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbG0zMi5jOjcwMyBlbGYzMi1uaW9zMi5jOjM1NzAKLSsjOiBlbGYzMi1sbTMyLmM6NzA2IGVsZjMyLW5pb3MyLmM6MzU3OAotIG1zZ2lkICJnbG9iYWwgcG9pbnRlciByZWxhdGl2ZSBhZGRyZXNzIG91dCBvZiByYW5nZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1sbTMyLmM6OTk4Ci0tbXNnaWQgImludGVybmFsIGVycm9yOiBhZGRlbmQgc2hvdWxkIGJlIHplcm8gZm9yIFJfTE0zMl8xNl9HT1QiCi0tbXNnc3RyICIiCi0tCi0tIzogZWxmMzItbTMyYy5jOjMwNgotKyM6IGVsZjMyLWxtMzIuYzoxMDAyIGVsZjMyLW9yMWsuYzo5NjgKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogaW52YWxpZCBNMzJDIHJlbG9jIG51bWJlcjogJWQiCi0rbXNnaWQgImludGVybmFsIGVycm9yOiBhZGRlbmQgc2hvdWxkIGJlIHplcm8gZm9yICVzIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW0zMnIuYzoxMjg2Ci0tIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IGludmFsaWQgTTMyUiByZWxvYyBudW1iZXI6ICVkIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLW0zMnIuYzoxNDU4Ci0rIzogZWxmMzItbTMyci5jOjE0NzEKLSBtc2dpZCAiU0RBIHJlbG9jYXRpb24gd2hlbiBfU0RBX0JBU0VfIG5vdCBkZWZpbmVkIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW0zMnIuYzoyOTcxIGVsZjMyLW1pY3JvYmxhemUuYzoxMDY0IGVsZjMyLW1pY3JvYmxhemUuYzoxMTEyCi0rIzogZWxmMzItbTMyci5jOjI5ODQgZWxmMzItbWljcm9ibGF6ZS5jOjExMDEgZWxmMzItbWljcm9ibGF6ZS5jOjExNDkKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogVGhlIHRhcmdldCAoJXMpIG9mIGFuICVzIHJlbG9jYXRpb24gaXMgaW4gdGhlIHdyb25nIHNlY3Rpb24gKCVBKSIKLSttc2dpZCAiJXBCOiB0aGUgdGFyZ2V0ICglcykgb2YgYW4gJXMgcmVsb2NhdGlvbiBpcyBpbiB0aGUgd3Jvbmcgc2VjdGlvbiAoJXBBKSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6MzQ3MwotLW1zZ2lkICIlQjogSW5zdHJ1Y3Rpb24gc2V0IG1pc21hdGNoIHdpdGggcHJldmlvdXMgbW9kdWxlcyIKLSsjOiBlbGYzMi1tMzJyLmM6MzQ4NwotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogaW5zdHJ1Y3Rpb24gc2V0IG1pc21hdGNoIHdpdGggcHJldmlvdXMgbW9kdWxlcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6MzQ5NCBlbGYzMi1uZHMzMi5jOjYwMzcKLSsjOiBlbGYzMi1tMzJyLmM6MzUwOCBlbGYzMi1uZHMzMi5jOjYwMTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJwcml2YXRlIGZsYWdzID0gJWx4IgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW0zMnIuYzozNDk5Ci0rIzogZWxmMzItbTMyci5jOjM1MTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICI6IG0zMnIgaW5zdHJ1Y3Rpb25zIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW0zMnIuYzozNTAwCi0rIzogZWxmMzItbTMyci5jOjM1MTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICI6IG0zMnJ4IGluc3RydWN0aW9ucyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6MzUwMQotKyM6IGVsZjMyLW0zMnIuYzozNTE1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiOiBtMzJyMiBpbnN0cnVjdGlvbnMiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxMS5jOjM5MAotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBpbnZhbGlkIE02OEhDMTEgcmVsb2MgbnVtYmVyOiAlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1tNjhoYzEyLmM6NTEwCi0tIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IGludmFsaWQgTTY4SEMxMiByZWxvYyBudW1iZXI6ICVkIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLW02OGhjMXguYzoxMTE1Ci0rIzogZWxmMzItbTY4aGMxeC5jOjExMTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0tIlJlZmVyZW5jZSB0byB0aGUgZmFyIHN5bWJvbCBgJXMnIHVzaW5nIGEgd3JvbmcgcmVsb2NhdGlvbiBtYXkgcmVzdWx0IGluICIKLSsicmVmZXJlbmNlIHRvIHRoZSBmYXIgc3ltYm9sIGAlcycgdXNpbmcgYSB3cm9uZyByZWxvY2F0aW9uIG1heSByZXN1bHQgaW4gIgotICJpbmNvcnJlY3QgZXhlY3V0aW9uIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxMTQ5Ci0rIzogZWxmMzItbTY4aGMxeC5jOjExNTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gIlhHQVRFIGFkZHJlc3MgKCVseCkgaXMgbm90IHdpdGhpbiBzaGFyZWQgUkFNKDB4RTAwMC0weEZGRkYpLCB0aGVyZWZvcmUgeW91ICIKLSAibXVzdCBtYW51YWxseSBvZmZzZXQgdGhlIGFkZHJlc3MsIGFuZCBwb3NzaWJseSBtYW5hZ2UgdGhlIHBhZ2UsIGluIHlvdXIgY29kZS4iCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjExNjcKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTE2OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLSAiYmFua2VkIGFkZHJlc3MgWyVseDolMDRseF0gKCVseCkgaXMgbm90IGluIHRoZSBzYW1lIGJhbmsgYXMgY3VycmVudCBiYW5rZWQgIgotICJhZGRyZXNzIFslbHg6JTA0bHhdICglbHgpIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxMTgzCi0rIzogZWxmMzItbTY4aGMxeC5jOjExODQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gInJlZmVyZW5jZSB0byBhIGJhbmtlZCBhZGRyZXNzIFslbHg6JTA0bHhdIGluIHRoZSBub3JtYWwgYWRkcmVzcyBzcGFjZSBhdCAiCi0gIiUwNGx4IgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxMjI0Ci0rIzogZWxmMzItbTY4aGMxeC5jOjEyMjUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gIlMxMiBhZGRyZXNzICglbHgpIGlzIG5vdCB3aXRoaW4gc2hhcmVkIFJBTSgweDIwMDAtMHg0MDAwKSwgdGhlcmVmb3JlIHlvdSAiCi0gIm11c3QgbWFudWFsbHkgb2Zmc2V0IHRoZSBhZGRyZXNzIGluIHlvdXIgY29kZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTM1MQotKyM6IGVsZjMyLW02OGhjMXguYzoxMzUyCi0rIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotLSIlQjogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgMTYtYml0IGludGVnZXJzICgtbXNob3J0KSBhbmQgb3RoZXJzIGZvciAzMi0iCi0rIiVwQjogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgMTYtYml0IGludGVnZXJzICgtbXNob3J0KSBhbmQgb3RoZXJzIGZvciAzMi0iCi0gImJpdCBpbnRlZ2VycyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTM1OAotKyM6IGVsZjMyLW02OGhjMXguYzoxMzU5Ci0rIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotLSIlQjogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgMzItYml0IGRvdWJsZSAoLWZzaG9ydC1kb3VibGUpIGFuZCBvdGhlcnMgZm9yICIKLS0iNjQtYml0IGRvdWJsZSIKLSsiJXBCOiBsaW5raW5nIGZpbGVzIGNvbXBpbGVkIGZvciAzMi1iaXQgZG91YmxlICgtZnNob3J0LWRvdWJsZSkgYW5kIG90aGVycyAiCi0rImZvciA2NC1iaXQgZG91YmxlIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxMzY3Ci0tbXNnaWQgIiVCOiBsaW5raW5nIGZpbGVzIGNvbXBpbGVkIGZvciBIQ1MxMiB3aXRoIG90aGVycyBjb21waWxlZCBmb3IgSEMxMiIKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTM2OAotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgSENTMTIgd2l0aCBvdGhlcnMgY29tcGlsZWQgZm9yIEhDMTIiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MTIgZWxmMzIteGdhdGUuYzo2NzIKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQxMyBlbGYzMi14Z2F0ZS5jOjY3NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlthYmk9MzItYml0IGludCwgIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxNDE0IGVsZjMyLXhnYXRlLmM6Njc0Ci0rIzogZWxmMzItbTY4aGMxeC5jOjE0MTUgZWxmMzIteGdhdGUuYzo2NzcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJbYWJpPTE2LWJpdCBpbnQsICIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQxNyBlbGYzMi14Z2F0ZS5jOjY3NwotKyM6IGVsZjMyLW02OGhjMXguYzoxNDE4IGVsZjMyLXhnYXRlLmM6NjgwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiNjQtYml0IGRvdWJsZSwgIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxNDE5IGVsZjMyLXhnYXRlLmM6Njc5Ci0rIzogZWxmMzItbTY4aGMxeC5jOjE0MjAgZWxmMzIteGdhdGUuYzo2ODIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIzMi1iaXQgZG91YmxlLCAiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MjIKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQyMwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNwdT1IQzExXSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQyNAotKyM6IGVsZjMyLW02OGhjMXguYzoxNDI1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY3B1PUhDUzEyXSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQyNgotKyM6IGVsZjMyLW02OGhjMXguYzoxNDI3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY3B1PUhDMTJdIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxNDI5Ci0rIzogZWxmMzItbTY4aGMxeC5jOjE0MzAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgW21lbW9yeT1iYW5rLW1vZGVsXSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQzMQotKyM6IGVsZjMyLW02OGhjMXguYzoxNDMyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIFttZW1vcnk9ZmxhdF0iCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MzQKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQzNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBbWEdBVEUgUkFNIG9mZnNldHRpbmddIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGsuYzoxMjE0IGVsZjMyLW02OGsuYzoxMjE1IHZtcy1hbHBoYS5jOjc0Nzcgdm1zLWFscGhhLmM6NzQ5MwotKyM6IGVsZjMyLW02OGsuYzoxMjE2IGVsZjMyLW02OGsuYzoxMjE3IHZtcy1hbHBoYS5jOjc0Nzggdm1zLWFscGhhLmM6NzQ5NAotIG1zZ2lkICJ1bmtub3duIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGsuYzoxNjU4Ci0tIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IEdPVCBvdmVyZmxvdzogTnVtYmVyIG9mIHJlbG9jYXRpb25zIHdpdGggOC1iaXQgb2Zmc2V0ID4gJWQiCi0tbXNnc3RyICIiCi0tCi0tIzogZWxmMzItbTY4ay5jOjE2NjUKLS0jLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogR09UIG92ZXJmbG93OiBOdW1iZXIgb2YgcmVsb2NhdGlvbnMgd2l0aCA4LSBvciAxNi1iaXQgb2Zmc2V0ID4gJWQiCi0tbXNnc3RyICIiCi0tCi0tIzogZWxmMzItbWNvcmUuYzoxMDAgZWxmMzItbWNvcmUuYzo0NTUKLSsjOiBlbGYzMi1tNjhrLmM6MTY2MAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBSZWxvY2F0aW9uICVzICglZCkgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4iCi0rbXNnaWQgIiVwQjogR09UIG92ZXJmbG93OiBudW1iZXIgb2YgcmVsb2NhdGlvbnMgd2l0aCA4LWJpdCBvZmZzZXQgPiAlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tY29yZS5jOjM1NQotKyM6IGVsZjMyLW02OGsuYzoxNjY3Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IHVucmVjb2duaXNlZCBNQ29yZSByZWxvYyBudW1iZXI6ICVkIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLW1jb3JlLmM6NDQwCi0tIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IFVua25vd24gcmVsb2NhdGlvbiB0eXBlICVkXG4iCi0rbXNnaWQgIiVwQjogR09UIG92ZXJmbG93OiBudW1iZXIgb2YgcmVsb2NhdGlvbnMgd2l0aCA4LSBvciAxNi1iaXQgb2Zmc2V0ID4gJWQiCi0gbXNnc3RyICIiCi0gCi0gIy4gUGFjaWZ5IGdjYyAtV2FsbC4KLUBAIC01OTM2LDEyNCArNTkzMSwxMjggQEAgbXNnc3RyICIiCi0gIy4gWFhYIGNvZGUgeWV0IHRvIGJlIHdyaXR0ZW4uCi0gIzogcGVpY29kZS5oOjc3NQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBVbmhhbmRsZWQgaW1wb3J0IHR5cGU7ICV4IgotK21zZ2lkICIlcEI6IHVuaGFuZGxlZCBpbXBvcnQgdHlwZTsgJXgiCi0gbXNnc3RyICIiCi0gCi0gIzogcGVpY29kZS5oOjc4MQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBVbnJlY29nbmlzZWQgaW1wb3J0IHR5cGU7ICV4IgotK21zZ2lkICIlcEI6IHVucmVjb2duaXplZCBpbXBvcnQgdHlwZTsgJXgiCi0gbXNnc3RyICIiCi0gCi0gIzogcGVpY29kZS5oOjc5NgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBVbnJlY29nbmlzZWQgaW1wb3J0IG5hbWUgdHlwZTsgJXgiCi0rbXNnaWQgIiVwQjogdW5yZWNvZ25pemVkIGltcG9ydCBuYW1lIHR5cGU7ICV4IgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWNvZGUuaDoxMjE3Ci0rIzogcGVpY29kZS5oOjEyMTEKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogVW5yZWNvZ25pc2VkIG1hY2hpbmUgdHlwZSAoMHgleCkgaW4gSW1wb3J0IExpYnJhcnkgRm9ybWF0IGFyY2hpdmUiCi0rbXNnaWQgIiVwQjogdW5yZWNvZ25pc2VkIG1hY2hpbmUgdHlwZSAoMHgleCkgaW4gSW1wb3J0IExpYnJhcnkgRm9ybWF0IGFyY2hpdmUiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpY29kZS5oOjEyMzAKLSsjOiBwZWljb2RlLmg6MTIyNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLS0iJUI6IFJlY29nbmlzZWQgYnV0IHVuaGFuZGxlZCBtYWNoaW5lIHR5cGUgKDB4JXgpIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCAiCi0rIiVwQjogcmVjb2duaXNlZCBidXQgdW5oYW5kbGVkIG1hY2hpbmUgdHlwZSAoMHgleCkgaW4gSW1wb3J0IExpYnJhcnkgRm9ybWF0ICIKLSAiYXJjaGl2ZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWljb2RlLmg6MTI0OAotLW1zZ2lkICIlQjogc2l6ZSBmaWVsZCBpcyB6ZXJvIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCBoZWFkZXIiCi0rIzogcGVpY29kZS5oOjEyNDIKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IHNpemUgZmllbGQgaXMgemVybyBpbiBJbXBvcnQgTGlicmFyeSBGb3JtYXQgaGVhZGVyIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWNvZGUuaDoxMjgwCi0tbXNnaWQgIiVCOiBzdHJpbmcgbm90IG51bGwgdGVybWluYXRlZCBpbiBJTEYgb2JqZWN0IGZpbGUuIgotKyM6IHBlaWNvZGUuaDoxMjc0Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiBzdHJpbmcgbm90IG51bGwgdGVybWluYXRlZCBpbiBJTEYgb2JqZWN0IGZpbGUiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpY29kZS5oOjEzMzUKLS1tc2dpZCAiJUI6IEVycm9yOiBEZWJ1ZyBEYXRhIGVuZHMgYmV5b25kIGVuZCBvZiBkZWJ1ZyBkaXJlY3RvcnkuIgotKyM6IHBlaWNvZGUuaDoxMzMwCi0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiBlcnJvcjogZGVidWcgZGF0YSBlbmRzIGJleW9uZCBlbmQgb2YgZGVidWcgZGlyZWN0b3J5IgotIG1zZ3N0ciAiIgotIAotLSM6IHBwY2Jvb3QuYzozOTMKLSsjOiBwcGNib290LmM6MzkyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotICJcbiIKLSAicHBjYm9vdCBoZWFkZXI6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcHBjYm9vdC5jOjM5NAotKyM6IHBwY2Jvb3QuYzozOTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJFbnRyeSBvZmZzZXQgICAgICAgID0gMHglLjhseCAoJWxkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHBwY2Jvb3QuYzozOTYKLSsjOiBwcGNib290LmM6Mzk1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiTGVuZ3RoICAgICAgICAgICAgICA9IDB4JS44bHggKCVsZClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6NDAwCi0rIzogcHBjYm9vdC5jOjM5OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkZsYWcgZmllbGQgICAgICAgICAgPSAweCUuMnhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6NDA2Ci0rIzogcHBjYm9vdC5jOjQwNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlBhcnRpdGlvbiBuYW1lICAgICAgPSBcIiVzXCJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6NDI2Ci0rIzogcHBjYm9vdC5jOjQyNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLSAiXG4iCi0gIlBhcnRpdGlvblslZF0gc3RhcnQgID0geyAweCUuMngsIDB4JS4yeCwgMHglLjJ4LCAweCUuMnggfVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHBwY2Jvb3QuYzo0MzMKLSsjOiBwcGNib290LmM6NDMyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiUGFydGl0aW9uWyVkXSBlbmQgICAgPSB7IDB4JS4yeCwgMHglLjJ4LCAweCUuMngsIDB4JS4yeCB9XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcHBjYm9vdC5jOjQ0MAotKyM6IHBwY2Jvb3QuYzo0MzkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJQYXJ0aXRpb25bJWRdIHNlY3RvciA9IDB4JS44bHggKCVsZClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6NDQ0Ci0rIzogcHBjYm9vdC5jOjQ0MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlBhcnRpdGlvblslZF0gbGVuZ3RoID0gMHglLjhseCAoJWxkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHJlbG9jLmM6ODEwNgotLW1zZ2lkICJJTlBVVF9TRUNUSU9OX0ZMQUdTIGFyZSBub3Qgc3VwcG9ydGVkLlxuIgotKyM6IHJlbG9jLmM6ODEyNQotK21zZ2lkICJJTlBVVF9TRUNUSU9OX0ZMQUdTIGFyZSBub3Qgc3VwcG9ydGVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHJlbG9jLmM6ODIwNwotKyM6IHJlbG9jLmM6ODIyNgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVYJVA6ICVCKCVBKTogZXJyb3I6IHJlbG9jYXRpb24gZm9yIG9mZnNldCAlViBoYXMgbm8gdmFsdWVcbiIKLSttc2dpZCAiJVglUDogJXBCKCVwQSk6IGVycm9yOiByZWxvY2F0aW9uIGZvciBvZmZzZXQgJVYgaGFzIG5vIHZhbHVlXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcmVsb2MuYzo4MjgzCi0rIzogcmVsb2MuYzo4MzAyCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJVglUDogJUIoJUEpOiByZWxvY2F0aW9uIFwiJVJcIiBpcyBub3Qgc3VwcG9ydGVkXG4iCi0rbXNnaWQgIiVYJVA6ICVwQiglcEEpOiByZWxvY2F0aW9uIFwiJXBSXCIgaXMgbm90IHN1cHBvcnRlZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHJlbG9jLmM6ODI5MgotKyM6IHJlbG9jLmM6ODMxMQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVYJVA6ICVCKCVBKTogcmVsb2NhdGlvbiBcIiVSXCIgcmV0dXJucyBhbiB1bnJlY29nbml6ZWQgdmFsdWUgJXhcbiIKLSttc2dpZCAiJVglUDogJXBCKCVwQSk6IHJlbG9jYXRpb24gXCIlcFJcIiByZXR1cm5zIGFuIHVucmVjb2duaXplZCB2YWx1ZSAleFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHJlbG9jLmM6ODM1NAotKyM6IHJlbG9jLmM6ODM3MwotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiB1bnJlY29nbml6ZWQgcmVsb2NhdGlvbiAoJSN4KSBpbiBzZWN0aW9uIGAlQSciCi0rbXNnaWQgIiVwQjogdW5yZWNvZ25pemVkIHJlbG9jYXRpb24gdHlwZSAlI3ggaW4gc2VjdGlvbiBgJXBBJyIKLSBtc2dzdHIgIiIKLSAKLSAjLiBQUiAyMTgwMzogU3VnZ2VzdCB0aGUgbW9zdCBsaWtlbHkgY2F1c2Ugb2YgdGhpcyBlcnJvci4KLS0jOiByZWxvYy5jOjgzNTgKLSsjOiByZWxvYy5jOjgzNzcKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJJcyB0aGlzIHZlcnNpb24gb2YgdGhlIGxpbmtlciAtICVzIC0gb3V0IG9mIGRhdGUgPyIKLSttc2dpZCAiaXMgdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaW5rZXIgLSAlcyAtIG91dCBvZiBkYXRlID8iCi0gbXNnc3RyICIiCi0gCi0gIzogcnM2MDAwLWNvcmUuYzo0NzEKLS1tc2dpZCAiJUI6IHdhcm5pbmcgY29yZSBmaWxlIHRydW5jYXRlZCIKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IHdhcm5pbmcgY29yZSBmaWxlIHRydW5jYXRlZCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBzb20uYzo1NDc4Ci1AQCAtNjA2OSw5MSArNjA2OCw5MSBAQCBtc2dzdHIgIiIKLSAKLSAjOiBzcmVjLmM6MjYwCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6JWQ6IFVuZXhwZWN0ZWQgY2hhcmFjdGVyIGAlcycgaW4gUy1yZWNvcmQgZmlsZVxuIgotK21zZ2lkICIlcEI6JWQ6IHVuZXhwZWN0ZWQgY2hhcmFjdGVyIGAlcycgaW4gUy1yZWNvcmQgZmlsZSIKLSBtc2dzdHIgIiIKLSAKLSAjOiBzcmVjLmM6NDg4Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6JWQ6IGJ5dGUgY291bnQgJWQgdG9vIHNtYWxsXG4iCi0rbXNnaWQgIiVwQjolZDogYnl0ZSBjb3VudCAlZCB0b28gc21hbGwiCi0gbXNnc3RyICIiCi0gCi0gIzogc3JlYy5jOjU4MSBzcmVjLmM6NjE1Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6JWQ6IEJhZCBjaGVja3N1bSBpbiBTLXJlY29yZCBmaWxlXG4iCi0rbXNnaWQgIiVwQjolZDogYmFkIGNoZWNrc3VtIGluIFMtcmVjb3JkIGZpbGUiCi0gbXNnc3RyICIiCi0gCi0gIzogc3RhYnMuYzoyNzkKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQiglQSslI2x4KTogU3RhYnMgZW50cnkgaGFzIGludmFsaWQgc3RyaW5nIGluZGV4LiIKLSttc2dpZCAiJXBCKCVwQSslI2x4KTogc3RhYnMgZW50cnkgaGFzIGludmFsaWQgc3RyaW5nIGluZGV4IgotIG1zZ3N0ciAiIgotIAotICM6IHN5bXMuYzoxMDc5Ci0tbXNnaWQgIlVuc3VwcG9ydGVkIC5zdGFiIHJlbG9jYXRpb24iCi0rbXNnaWQgInVuc3VwcG9ydGVkIC5zdGFiIHJlbG9jYXRpb24iCi0gbXNnc3RyICIiCi0gCi0gIzogdm1zLWFscGhhLmM6NDc5Ci0tbXNnaWQgIkNvcnJ1cHQgRUlIRCByZWNvcmQgLSBzaXplIGlzIHRvbyBzbWFsbCIKLSttc2dpZCAiY29ycnVwdCBFSUhEIHJlY29yZCAtIHNpemUgaXMgdG9vIHNtYWxsIgotIG1zZ3N0ciAiIgotIAotICM6IHZtcy1hbHBoYS5jOjY2MAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlVuYWJsZSB0byByZWFkIEVJSFMgcmVjb3JkIGF0IG9mZnNldCAlI3giCi0rbXNnaWQgInVuYWJsZSB0byByZWFkIEVJSFMgcmVjb3JkIGF0IG9mZnNldCAlI3giCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTE3MgotKyM6IHZtcy1hbHBoYS5jOjExNzMKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJDb3JydXB0IEVHU0QgcmVjb3JkOiBpdHMgc2l6ZSAoJSN4KSBpcyB0b28gc21hbGwiCi0rbXNnaWQgImNvcnJ1cHQgRUdTRCByZWNvcmQ6IGl0cyBzaXplICglI3gpIGlzIHRvbyBzbWFsbCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxMTk2Ci0rIzogdm1zLWFscGhhLmM6MTE5NwotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIkNvcnJ1cHQgRUdTRCByZWNvcmQ6IHNpemUgKCUjeCkgaXMgbGFyZ2VyIHRoYW4gcmVtYWluaW5nIHNwYWNlICglI3gpIgotK21zZ2lkICJjb3JydXB0IEVHU0QgcmVjb3JkOiBzaXplICglI3gpIGlzIGxhcmdlciB0aGFuIHJlbWFpbmluZyBzcGFjZSAoJSN4KSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxMjA0Ci0rIzogdm1zLWFscGhhLmM6MTIwNQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIkNvcnJ1cHQgRUdTRCByZWNvcmQ6IHNpemUgKCUjeCkgaXMgdG9vIHNtYWxsIgotK21zZ2lkICJjb3JydXB0IEVHU0QgcmVjb3JkOiBzaXplICglI3gpIGlzIHRvbyBzbWFsbCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxMzMzIHZtcy1hbHBoYS5jOjEzNDkgdm1zLWFscGhhLmM6MTM4OQotKyM6IHZtcy1hbHBoYS5jOjEzMzQgdm1zLWFscGhhLmM6MTM1MCB2bXMtYWxwaGEuYzoxMzkwCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiQ29ycnVwdCBFR1NEIHJlY29yZDogaXRzIHBzaW5keCBmaWVsZCBpcyB0b28gYmlnICglI2x4KSIKLSttc2dpZCAiY29ycnVwdCBFR1NEIHJlY29yZDogaXRzIHBzaW5keCBmaWVsZCBpcyB0b28gYmlnICglI2x4KSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxNDE4Ci0rIzogdm1zLWFscGhhLmM6MTQxOQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlVua25vd24gRUdTRCBzdWJ0eXBlICVkIgotK21zZ2lkICJ1bmtub3duIEVHU0Qgc3VidHlwZSAlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxNDUxCi0rIzogdm1zLWFscGhhLmM6MTQ1MgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlN0YWNrIG92ZXJmbG93ICglZCkgaW4gX2JmZF92bXNfcHVzaCIKLSttc2dpZCAic3RhY2sgb3ZlcmZsb3cgKCVkKSBpbiBfYmZkX3Ztc19wdXNoIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjE0NjQKLS1tc2dpZCAiU3RhY2sgdW5kZXJmbG93IGluIF9iZmRfdm1zX3BvcCIKLSsjOiB2bXMtYWxwaGEuYzoxNDY1Ci0rbXNnaWQgInN0YWNrIHVuZGVyZmxvdyBpbiBfYmZkX3Ztc19wb3AiCi0gbXNnc3RyICIiCi0gCi0gIy4gVGhlc2UgbmFtZXMgaGF2ZSBub3QgeWV0IGJlZW4gYWRkZWQgdG8gdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgotLSM6IHZtcy1hbHBoYS5jOjE3MDYKLSsjOiB2bXMtYWxwaGEuYzoxNzA3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAidW5rbm93biBFVElSIGNvbW1hbmQgJWQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTczNwotLW1zZ2lkICJDb3JydXB0IHZtcyB2YWx1ZSIKLSsjOiB2bXMtYWxwaGEuYzoxNzM4Ci0rbXNnaWQgImNvcnJ1cHQgdm1zIHZhbHVlIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjE4NjUKLS1tc2dpZCAiQ29ycnVwdCBFVElSIHJlY29yZCBlbmNvdW50ZXJlZCIKLSsjOiB2bXMtYWxwaGEuYzoxODY2Ci0rbXNnaWQgImNvcnJ1cHQgRVRJUiByZWNvcmQgZW5jb3VudGVyZWQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTkyMgotKyM6IHZtcy1hbHBoYS5jOjE5MjMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJiYWQgc2VjdGlvbiBpbmRleCBpbiAlcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxOTM1Ci0rIzogdm1zLWFscGhhLmM6MTkzNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInVuc3VwcG9ydGVkIFNUQSBjbWQgJXMiCi0gbXNnc3RyICIiCi1AQCAtNjE2MywxOTYxICs2MTYyLDE5MzIgQEAgbXNnc3RyICIiCi0gIy4gUm90YXRlLgotICMuIFJlZGVmaW5lIHN5bWJvbCB0byBjdXJyZW50IGxvY2F0aW9uLgotICMuIERlZmluZSBhIGxpdGVyYWwuCi0tIzogdm1zLWFscGhhLmM6MjExNSB2bXMtYWxwaGEuYzoyMTQ2IHZtcy1hbHBoYS5jOjIyMzcgdm1zLWFscGhhLmM6MjM5NQotKyM6IHZtcy1hbHBoYS5jOjIxMTYgdm1zLWFscGhhLmM6MjE0NyB2bXMtYWxwaGEuYzoyMjM4IHZtcy1hbHBoYS5jOjIzOTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIlczogbm90IHN1cHBvcnRlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoyMTIxCi0rIzogdm1zLWFscGhhLmM6MjEyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiVzOiBub3QgaW1wbGVtZW50ZWQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MjM3OQotKyM6IHZtcy1hbHBoYS5jOjIzODAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJpbnZhbGlkIHVzZSBvZiAlcyB3aXRoIGNvbnRleHRzIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjI0MTMKLSsjOiB2bXMtYWxwaGEuYzoyNDE0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAicmVzZXJ2ZWQgY21kICVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjI0OTcKLS1tc2dpZCAiQ29ycnVwdCBFRU9NIHJlY29yZCAtIHNpemUgaXMgdG9vIHNtYWxsIgotKyM6IHZtcy1hbHBoYS5jOjI0OTgKLSttc2dpZCAiY29ycnVwdCBFRU9NIHJlY29yZCAtIHNpemUgaXMgdG9vIHNtYWxsIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjI1MDYKLS1tc2dpZCAiT2JqZWN0IG1vZHVsZSBOT1QgZXJyb3ItZnJlZSAhXG4iCi0rIzogdm1zLWFscGhhLmM6MjUwNwotK21zZ2lkICJvYmplY3QgbW9kdWxlIG5vdCBlcnJvci1mcmVlICEiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MzgzMAotKyM6IHZtcy1hbHBoYS5jOjM4MzEKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJTRUNfUkVMT0Mgd2l0aCBubyByZWxvY3MgaW4gc2VjdGlvbiAlQSIKLSttc2dpZCAiU0VDX1JFTE9DIHdpdGggbm8gcmVsb2NzIGluIHNlY3Rpb24gJXBBIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjM4ODIgdm1zLWFscGhhLmM6NDA5NQotKyM6IHZtcy1hbHBoYS5jOjM4ODMgdm1zLWFscGhhLmM6NDA5NgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlNpemUgZXJyb3IgaW4gc2VjdGlvbiAlQSIKLSttc2dpZCAic2l6ZSBlcnJvciBpbiBzZWN0aW9uICVwQSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo0MDQxCi0tbXNnaWQgIlNwdXJpb3VzIEFMUEhBX1JfQlNSIHJlbG9jIgotKyM6IHZtcy1hbHBoYS5jOjQwNDIKLSttc2dpZCAic3B1cmlvdXMgQUxQSEFfUl9CU1IgcmVsb2MiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NDA4MgotKyM6IHZtcy1hbHBoYS5jOjQwODMKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJVbmhhbmRsZWQgcmVsb2NhdGlvbiAlcyIKLSttc2dpZCAidW5oYW5kbGVkIHJlbG9jYXRpb24gJXMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NDM3NQotKyM6IHZtcy1hbHBoYS5jOjQzNzYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ1bmtub3duIHNvdXJjZSBjb21tYW5kICVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjQ0MzYKLS1tc2dpZCAiRFNUX19LX1NFVF9MSU5VTV9JTkNSIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDQyCi0tbXNnaWQgIkRTVF9fS19TRVRfTElOVU1fSU5DUl9XIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDQ4Ci0tbXNnaWQgIkRTVF9fS19SRVNFVF9MSU5VTV9JTkNSIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDU0Ci0tbXNnaWQgIkRTVF9fS19CRUdfU1RNVF9NT0RFIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDYwCi0tbXNnaWQgIkRTVF9fS19FTkRfU1RNVF9NT0RFIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDg3Ci0tbXNnaWQgIkRTVF9fS19TRVRfUEMgbm90IGltcGxlbWVudGVkIgotLW1zZ3N0ciAiIgotLQotLSM6IHZtcy1hbHBoYS5jOjQ0OTMKLS1tc2dpZCAiRFNUX19LX1NFVF9QQ19XIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDk5Ci0tbXNnaWQgIkRTVF9fS19TRVRfUENfTCBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDUwNQotLW1zZ2lkICJEU1RfX0tfU0VUX1NUTVROVU0gbm90IGltcGxlbWVudGVkIgotKyM6IHZtcy1hbHBoYS5jOjQ0Mzcgdm1zLWFscGhhLmM6NDQ0MyB2bXMtYWxwaGEuYzo0NDQ5IHZtcy1hbHBoYS5jOjQ0NTUKLSsjOiB2bXMtYWxwaGEuYzo0NDYxIHZtcy1hbHBoYS5jOjQ0ODggdm1zLWFscGhhLmM6NDQ5NCB2bXMtYWxwaGEuYzo0NTAwCi0rIzogdm1zLWFscGhhLmM6NDUwNgotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVzIG5vdCBpbXBsZW1lbnRlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo0NTQ4Ci0rIzogdm1zLWFscGhhLmM6NDU0OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInVua25vd24gbGluZSBjb21tYW5kICVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjUwMDggdm1zLWFscGhhLmM6NTAyNiB2bXMtYWxwaGEuYzo1MDQxIHZtcy1hbHBoYS5jOjUwNTcKLS0jOiB2bXMtYWxwaGEuYzo1MDcwIHZtcy1hbHBoYS5jOjUwODIgdm1zLWFscGhhLmM6NTA5NQotKyM6IHZtcy1hbHBoYS5jOjUwMDkgdm1zLWFscGhhLmM6NTAyNyB2bXMtYWxwaGEuYzo1MDQyIHZtcy1hbHBoYS5jOjUwNTgKLSsjOiB2bXMtYWxwaGEuYzo1MDcxIHZtcy1hbHBoYS5jOjUwODMgdm1zLWFscGhhLmM6NTA5NgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlVua25vd24gcmVsb2MgJXMgKyAlcyIKLSttc2dpZCAidW5rbm93biByZWxvYyAlcyArICVzIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjUxNTAKLSsjOiB2bXMtYWxwaGEuYzo1MTUxCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiVW5rbm93biByZWxvYyAlcyIKLSttc2dpZCAidW5rbm93biByZWxvYyAlcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1MTYzCi0tbXNnaWQgIkludmFsaWQgc2VjdGlvbiBpbmRleCBpbiBFVElSIgotKyM6IHZtcy1hbHBoYS5jOjUxNjQKLSttc2dpZCAiaW52YWxpZCBzZWN0aW9uIGluZGV4IGluIEVUSVIiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTE3MgotLW1zZ2lkICJSZWxvY2F0aW9uIGZvciBub24tUkVMIHBzZWN0IgotKyM6IHZtcy1hbHBoYS5jOjUxNzMKLSttc2dpZCAicmVsb2NhdGlvbiBmb3Igbm9uLVJFTCBwc2VjdCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1MjE5Ci0rIzogdm1zLWFscGhhLmM6NTIyMAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlVua25vd24gc3ltYm9sIGluIGNvbW1hbmQgJXMiCi0rbXNnaWQgInVua25vd24gc3ltYm9sIGluIGNvbW1hbmQgJXMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTYyOQotKyM6IHZtcy1hbHBoYS5jOjU2MzAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJyZWxvYyAoJWQpIGlzICpVTktOT1dOKiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1NzQ1Ci0rIzogdm1zLWFscGhhLmM6NTc0NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgRU1IICV1IChsZW49JXUpOiAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc1MAotKyM6IHZtcy1hbHBoYS5jOjU3NTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBFcnJvcjogVGhlIGxlbmd0aCBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiBhbiBFTUggcmVjb3JkXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc2NwotKyM6IHZtcy1hbHBoYS5jOjU3NjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gIiAgIEVycm9yOiBUaGUgcmVjb3JkIGxlbmd0aCBpcyBsZXNzIHRoYW4gdGhlIHNpemUgb2YgYW4gRU1IX01IRCByZWNvcmRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1NzcwCi0rIzogdm1zLWFscGhhLmM6NTc3MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk1vZHVsZSBoZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1NzcxCi0rIzogdm1zLWFscGhhLmM6NTc3MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHN0cnVjdHVyZSBsZXZlbDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1NzcyCi0rIzogdm1zLWFscGhhLmM6NTc3MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG1heCByZWNvcmQgc2l6ZTogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1Nzc4Ci0rIzogdm1zLWFscGhhLmM6NTc3OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIEVycm9yOiBUaGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZ1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU3ODQKLSsjOiB2bXMtYWxwaGEuYzo1Nzg1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgRXJyb3I6IFRoZSBtb2R1bGUgbmFtZSBpcyB0b28gbG9uZ1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU3ODcKLSsjOiB2bXMtYWxwaGEuYzo1Nzg4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbW9kdWxlIG5hbWUgICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc5MQotKyM6IHZtcy1hbHBoYS5jOjU3OTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBFcnJvcjogVGhlIG1vZHVsZSB2ZXJzaW9uIGlzIG1pc3NpbmdcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1Nzk3Ci0rIzogdm1zLWFscGhhLmM6NTc5OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIEVycm9yOiBUaGUgbW9kdWxlIHZlcnNpb24gaXMgdG9vIGxvbmdcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODAwCi0rIzogdm1zLWFscGhhLmM6NTgwMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG1vZHVsZSB2ZXJzaW9uIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MDMKLSsjOiB2bXMtYWxwaGEuYzo1ODA0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgRXJyb3I6IFRoZSBjb21waWxlIGRhdGUgaXMgdHJ1bmNhdGVkXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgwNQotKyM6IHZtcy1hbHBoYS5jOjU4MDYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBjb21waWxlIGRhdGUgICA6ICUuMTdzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgxMAotKyM6IHZtcy1hbHBoYS5jOjU4MTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJMYW5ndWFnZSBQcm9jZXNzb3IgTmFtZVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MTEKLSsjOiB2bXMtYWxwaGEuYzo1ODEyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbGFuZ3VhZ2UgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MTUKLSsjOiB2bXMtYWxwaGEuYzo1ODE2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU291cmNlIEZpbGVzIEhlYWRlclxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MTYKLSsjOiB2bXMtYWxwaGEuYzo1ODE3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZmlsZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MjAKLSsjOiB2bXMtYWxwaGEuYzo1ODIxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiVGl0bGUgVGV4dCBIZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODIxCi0rIzogdm1zLWFscGhhLmM6NTgyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHRpdGxlOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgyNQotKyM6IHZtcy1hbHBoYS5jOjU4MjYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJDb3B5cmlnaHQgSGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgyNgotKyM6IHZtcy1hbHBoYS5jOjU4MjcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBjb3B5cmlnaHQ6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODMwCi0rIzogdm1zLWFscGhhLmM6NTgzMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInVuaGFuZGxlZCBlbWggc3VidHlwZSAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NDAKLSsjOiB2bXMtYWxwaGEuYzo1ODQxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBFRU9NIChsZW49JXUpOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NDUKLSsjOiB2bXMtYWxwaGEuYzo1ODQ2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgRXJyb3I6IFRoZSBsZW5ndGggaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgYW4gRUVPTSByZWNvcmRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODQ5Ci0rIzogdm1zLWFscGhhLmM6NTg1MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG51bWJlciBvZiBjb25kIGxpbmthZ2UgcGFpcnM6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg1MQotKyM6IHZtcy1hbHBoYS5jOjU4NTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBjb21wbGV0aW9uIGNvZGU6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg1NQotKyM6IHZtcy1hbHBoYS5jOjU4NTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICB0cmFuc2ZlciBhZGRyIGZsYWdzOiAweCUwMnhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODU2Ci0rIzogdm1zLWFscGhhLmM6NTg1NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHRyYW5zZmVyIGFkZHIgcHNlY3Q6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg1OAotKyM6IHZtcy1hbHBoYS5jOjU4NTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICB0cmFuc2ZlciBhZGRyZXNzICAgOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODY3Ci0rIzogdm1zLWFscGhhLmM6NTg2OAotIG1zZ2lkICIgV0VBSyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODY5Ci0rIzogdm1zLWFscGhhLmM6NTg3MAotIG1zZ2lkICIgREVGIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NzEKLSsjOiB2bXMtYWxwaGEuYzo1ODcyCi0gbXNnaWQgIiBVTkkiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg3MyB2bXMtYWxwaGEuYzo1ODk0Ci0rIzogdm1zLWFscGhhLmM6NTg3NCB2bXMtYWxwaGEuYzo1ODk1Ci0gbXNnaWQgIiBSRUwiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg3NQotKyM6IHZtcy1hbHBoYS5jOjU4NzYKLSBtc2dpZCAiIENPTU0iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg3NwotKyM6IHZtcy1hbHBoYS5jOjU4NzgKLSBtc2dpZCAiIFZFQ0VQIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NzkKLSsjOiB2bXMtYWxwaGEuYzo1ODgwCi0gbXNnaWQgIiBOT1JNIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4ODEKLSsjOiB2bXMtYWxwaGEuYzo1ODgyCi0gbXNnaWQgIiBRVkFMIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4ODgKLSsjOiB2bXMtYWxwaGEuYzo1ODg5Ci0gbXNnaWQgIiBQSUMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg5MAotKyM6IHZtcy1hbHBoYS5jOjU4OTEKLSBtc2dpZCAiIExJQiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODkyCi0rIzogdm1zLWFscGhhLmM6NTg5MwotIG1zZ2lkICIgT1ZSIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4OTYKLSsjOiB2bXMtYWxwaGEuYzo1ODk3Ci0gbXNnaWQgIiBHQkwiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg5OAotKyM6IHZtcy1hbHBoYS5jOjU4OTkKLSBtc2dpZCAiIFNIUiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTAwCi0rIzogdm1zLWFscGhhLmM6NTkwMQotIG1zZ2lkICIgRVhFIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5MDIKLSsjOiB2bXMtYWxwaGEuYzo1OTAzCi0gbXNnaWQgIiBSRCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTA0Ci0rIzogdm1zLWFscGhhLmM6NTkwNQotIG1zZ2lkICIgV1JUIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5MDYKLSsjOiB2bXMtYWxwaGEuYzo1OTA3Ci0gbXNnaWQgIiBWRUMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTkwOAotKyM6IHZtcy1hbHBoYS5jOjU5MDkKLSBtc2dpZCAiIE5PTU9EIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5MTAKLSsjOiB2bXMtYWxwaGEuYzo1OTExCi0gbXNnaWQgIiBDT00iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTkxMgotKyM6IHZtcy1hbHBoYS5jOjU5MTMKLSBtc2dpZCAiIDY0QiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTIxCi0rIzogdm1zLWFscGhhLmM6NTkyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgRUdTRCAobGVuPSV1KTpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTM0Ci0rIzogdm1zLWFscGhhLmM6NTkzNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgRUdTRCBlbnRyeSAlMnUgKHR5cGU6ICV1LCBsZW46ICV1KTogIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NDAgdm1zLWFscGhhLmM6NjE5MQotKyM6IHZtcy1hbHBoYS5jOjU5NDEgdm1zLWFscGhhLmM6NjE5MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIEVycm9yOiBsZW5ndGggbGFyZ2VyIHRoYW4gcmVtYWluaW5nIHNwYWNlIGluIHJlY29yZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NTIKLSsjOiB2bXMtYWxwaGEuYzo1OTUzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiUFNDIC0gUHJvZ3JhbSBzZWN0aW9uIGRlZmluaXRpb25cbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTUzIHZtcy1hbHBoYS5jOjU5NzAKLSsjOiB2bXMtYWxwaGEuYzo1OTU0IHZtcy1hbHBoYS5jOjU5NzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBhbGlnbm1lbnQgIDogMioqJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTU0IHZtcy1hbHBoYS5jOjU5NzEKLSsjOiB2bXMtYWxwaGEuYzo1OTU1IHZtcy1hbHBoYS5jOjU5NzIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBmbGFncyAgICAgIDogMHglMDR4IgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NTgKLSsjOiB2bXMtYWxwaGEuYzo1OTU5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgYWxsb2MgKGxlbik6ICV1ICgweCUwOHgpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk1OSB2bXMtYWxwaGEuYzo2MDE2IHZtcy1hbHBoYS5jOjYwNjUKLSsjOiB2bXMtYWxwaGEuYzo1OTYwIHZtcy1hbHBoYS5jOjYwMTcgdm1zLWFscGhhLmM6NjA2NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG5hbWUgICAgICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk2OQotKyM6IHZtcy1hbHBoYS5jOjU5NzAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTUFNDIC0gU2hhcmVkIEltYWdlIFByb2dyYW0gc2VjdGlvbiBkZWZcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTc1Ci0rIzogdm1zLWFscGhhLmM6NTk3NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGFsbG9jIChsZW4pICAgOiAldSAoMHglMDh4KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NzYKLSsjOiB2bXMtYWxwaGEuYzo1OTc3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgaW1hZ2Ugb2Zmc2V0ICA6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NzgKLSsjOiB2bXMtYWxwaGEuYzo1OTc5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgc3ltdmVjIG9mZnNldCA6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5ODAKLSsjOiB2bXMtYWxwaGEuYzo1OTgxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbmFtZSAgICAgICAgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTkzCi0rIzogdm1zLWFscGhhLmM6NTk5NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNZTSAtIEdsb2JhbCBzeW1ib2wgZGVmaW5pdGlvblxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5OTQgdm1zLWFscGhhLmM6NjA1NCB2bXMtYWxwaGEuYzo2MDc1IHZtcy1hbHBoYS5jOjYwOTQKLSsjOiB2bXMtYWxwaGEuYzo1OTk1IHZtcy1hbHBoYS5jOjYwNTUgdm1zLWFscGhhLmM6NjA3NiB2bXMtYWxwaGEuYzo2MDk1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZmxhZ3M6IDB4JTA0eCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTk3Ci0rIzogdm1zLWFscGhhLmM6NTk5OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHBzZWN0IG9mZnNldDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjAwMQotKyM6IHZtcy1hbHBoYS5jOjYwMDIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBjb2RlIGFkZHJlc3M6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMDMKLSsjOiB2bXMtYWxwaGEuYzo2MDA0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgcHNlY3QgaW5kZXggZm9yIGVudHJ5IHBvaW50IDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDA2IHZtcy1hbHBoYS5jOjYwODIgdm1zLWFscGhhLmM6NjEwMQotKyM6IHZtcy1hbHBoYS5jOjYwMDcgdm1zLWFscGhhLmM6NjA4MyB2bXMtYWxwaGEuYzo2MTAyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgcHNlY3QgaW5kZXggOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMDggdm1zLWFscGhhLmM6NjA4NCB2bXMtYWxwaGEuYzo2MTAzCi0rIzogdm1zLWFscGhhLmM6NjAwOSB2bXMtYWxwaGEuYzo2MDg1IHZtcy1hbHBoYS5jOjYxMDQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBuYW1lICAgICAgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDE1Ci0rIzogdm1zLWFscGhhLmM6NjAxNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNZTSAtIEdsb2JhbCBzeW1ib2wgcmVmZXJlbmNlXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjAyNwotKyM6IHZtcy1hbHBoYS5jOjYwMjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJJREMgLSBJZGVudCBDb25zaXN0ZW5jeSBjaGVja1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMjgKLSsjOiB2bXMtYWxwaGEuYzo2MDI5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZmxhZ3MgICAgICAgICA6IDB4JTA4eCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDMyCi0rIzogdm1zLWFscGhhLmM6NjAzMwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGlkIG1hdGNoICAgICAgOiAleFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMzQKLSsjOiB2bXMtYWxwaGEuYzo2MDM1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZXJyb3Igc2V2ZXJpdHk6ICV4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjAzNwotKyM6IHZtcy1hbHBoYS5jOjYwMzgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBlbnRpdHkgbmFtZSAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMzkKLSsjOiB2bXMtYWxwaGEuYzo2MDQwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgb2JqZWN0IG5hbWUgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDQyCi0rIzogdm1zLWFscGhhLmM6NjA0MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGJpbmFyeSBpZGVudCAgOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDQ1Ci0rIzogdm1zLWFscGhhLmM6NjA0NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGFzY2lpIGlkZW50ICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA1MwotKyM6IHZtcy1hbHBoYS5jOjYwNTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTWU1HIC0gVW5pdmVyc2FsIHN5bWJvbCBkZWZpbml0aW9uXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA1NwotKyM6IHZtcy1hbHBoYS5jOjYwNTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBzeW1ib2wgdmVjdG9yIG9mZnNldDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA1OQotKyM6IHZtcy1hbHBoYS5jOjYwNjAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBlbnRyeSBwb2ludDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA2MQotKyM6IHZtcy1hbHBoYS5jOjYwNjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBwcm9jIGRlc2NyIDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA2MwotKyM6IHZtcy1hbHBoYS5jOjYwNjQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBwc2VjdCBpbmRleDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDc0Ci0rIzogdm1zLWFscGhhLmM6NjA3NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNZTVYgLSBWZWN0b3JlZCBzeW1ib2wgZGVmaW5pdGlvblxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwNzgKLSsjOiB2bXMtYWxwaGEuYzo2MDc5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgdmVjdG9yICAgICAgOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDgwIHZtcy1hbHBoYS5jOjYwOTkKLSsjOiB2bXMtYWxwaGEuYzo2MDgxIHZtcy1hbHBoYS5jOjYxMDAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBwc2VjdCBvZmZzZXQ6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA5MwotKyM6IHZtcy1hbHBoYS5jOjYwOTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTWU1NIC0gR2xvYmFsIHN5bWJvbCBkZWZpbml0aW9uIHdpdGggdmVyc2lvblxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwOTcKLSsjOiB2bXMtYWxwaGEuYzo2MDk4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgdmVyc2lvbiBtYXNrOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MTA4Ci0rIzogdm1zLWFscGhhLmM6NjEwOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInVuaGFuZGxlZCBlZ3NkIGVudHJ5IHR5cGUgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MTQzCi0rIzogdm1zLWFscGhhLmM6NjE0NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBsaW5rYWdlIGluZGV4OiAldSwgcmVwbGFjZW1lbnQgaW5zbjogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjE0NwotKyM6IHZtcy1hbHBoYS5jOjYxNDgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgcHNlY3QgaWR4IDE6ICV1LCBvZmZzZXQgMTogMHglMDh4ICUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MTUyCi0rIzogdm1zLWFscGhhLmM6NjE1MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBwc2VjdCBpZHggMjogJXUsIG9mZnNldCAyOiAweCUwOHggJTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYxNTgKLSsjOiB2bXMtYWxwaGEuYzo2MTU5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIHBzZWN0IGlkeCAzOiAldSwgb2Zmc2V0IDM6IDB4JTA4eCAlMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjE2MwotKyM6IHZtcy1hbHBoYS5jOjYxNjQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgZ2xvYmFsIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MTc0Ci0rIzogdm1zLWFscGhhLmM6NjE3NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgJXMgKGxlbj0ldSsldSk6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjE5NgotKyM6IHZtcy1hbHBoYS5jOjYxOTcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAodHlwZTogJTN1LCBzaXplOiA0KyUzdSk6ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjAwCi0rIzogdm1zLWFscGhhLmM6NjIwMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQV9HQkwgKHN0YWNrIGdsb2JhbCkgJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMDQKLSsjOiB2bXMtYWxwaGEuYzo2MjA1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RBX0xXIChzdGFjayBsb25nd29yZCkgMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjIwOAotKyM6IHZtcy1hbHBoYS5jOjYyMDkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVEFfUVcgKHN0YWNrIHF1YWR3b3JkKSAweCUwOHggJTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMTMKLSsjOiB2bXMtYWxwaGEuYzo2MjE0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RBX1BRIChzdGFjayBwc2VjdCBiYXNlICsgb2Zmc2V0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMTUKLSsjOiB2bXMtYWxwaGEuYzo2MjE2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIHBzZWN0OiAldSwgb2Zmc2V0OiAweCUwOHggJTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMjEKLSsjOiB2bXMtYWxwaGEuYzo2MjIyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RBX0xJIChzdGFjayBsaXRlcmFsKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMjQKLSsjOiB2bXMtYWxwaGEuYzo2MjI1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RBX01PRCAoc3RhY2sgbW9kdWxlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMjcKLSsjOiB2bXMtYWxwaGEuYzo2MjI4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RBX0NLQVJHIChjb21wYXJlIHByb2NlZHVyZSBhcmd1bWVudClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjMxCi0rIzogdm1zLWFscGhhLmM6NjIzMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19CIChzdG9yZSBieXRlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMzQKLSsjOiB2bXMtYWxwaGEuYzo2MjM1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX1cgKHN0b3JlIHdvcmQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjIzNwotKyM6IHZtcy1hbHBoYS5jOjYyMzgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fTFcgKHN0b3JlIGxvbmd3b3JkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyNDAKLSsjOiB2bXMtYWxwaGEuYzo2MjQxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX1FXIChzdG9yZSBxdWFkd29yZClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjQ2Ci0rIzogdm1zLWFscGhhLmM6NjI0NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19JTU1SIChzdG9yZSBpbW1lZGlhdGUgcmVwZWF0KSAldSBieXRlc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyNTMKLSsjOiB2bXMtYWxwaGEuYzo2MjU0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX0dCTCAoc3RvcmUgZ2xvYmFsKSAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI1NwotKyM6IHZtcy1hbHBoYS5jOjYyNTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fQ0EgKHN0b3JlIGNvZGUgYWRkcmVzcykgJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyNjEKLSsjOiB2bXMtYWxwaGEuYzo2MjYyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX1JCIChzdG9yZSByZWxhdGl2ZSBicmFuY2gpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI2NAotKyM6IHZtcy1hbHBoYS5jOjYyNjUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fQUIgKHN0b3JlIGFic29sdXRlIGJyYW5jaClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjY3Ci0rIzogdm1zLWFscGhhLmM6NjI2OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19PRkYgKHN0b3JlIG9mZnNldCB0byBwc2VjdClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjczCi0rIzogdm1zLWFscGhhLmM6NjI3NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19JTU0gKHN0b3JlIGltbWVkaWF0ZSkgJXUgYnl0ZXNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjgwCi0rIzogdm1zLWFscGhhLmM6NjI4MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19HQkxfTFcgKHN0b3JlIGdsb2JhbCBsb25nd29yZCkgJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyODQKLSsjOiB2bXMtYWxwaGEuYzo2Mjg1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX09GRiAoc3RvcmUgTFAgd2l0aCBwcm9jZWR1cmUgc2lnbmF0dXJlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyODcKLSsjOiB2bXMtYWxwaGEuYzo2Mjg4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX0JSX0dCTCAoc3RvcmUgYnJhbmNoIGdsb2JhbCkgKnRvZG8qXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI5MAotKyM6IHZtcy1hbHBoYS5jOjYyOTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fQlJfUFMgKHN0b3JlIGJyYW5jaCBwc2VjdCArIG9mZnNldCkgKnRvZG8qXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI5NAotKyM6IHZtcy1hbHBoYS5jOjYyOTUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfTk9QIChuby1vcGVyYXRpb24pXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI5NwotKyM6IHZtcy1hbHBoYS5jOjYyOTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfQUREIChhZGQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMwMAotKyM6IHZtcy1hbHBoYS5jOjYzMDEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfU1VCIChzdWJ0cmFjdClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzAzCi0rIzogdm1zLWFscGhhLmM6NjMwNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9NVUwgKG11bHRpcGx5KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMDYKLSsjOiB2bXMtYWxwaGEuYzo2MzA3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX0RJViAoZGl2aWRlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMDkKLSsjOiB2bXMtYWxwaGEuYzo2MzEwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX0FORCAobG9naWNhbCBhbmQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMxMgotKyM6IHZtcy1hbHBoYS5jOjYzMTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfSU9SIChsb2dpY2FsIGluY2x1c2l2ZSBvcilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzE1Ci0rIzogdm1zLWFscGhhLmM6NjMxNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9FT1IgKGxvZ2ljYWwgZXhjbHVzaXZlIG9yKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMTgKLSsjOiB2bXMtYWxwaGEuYzo2MzE5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX05FRyAobmVnYXRlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMjEKLSsjOiB2bXMtYWxwaGEuYzo2MzIyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX0NPTSAoY29tcGxlbWVudClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzI0Ci0rIzogdm1zLWFscGhhLmM6NjMyNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9JTlNWIChpbnNlcnQgZmllbGQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMyNwotKyM6IHZtcy1hbHBoYS5jOjYzMjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfQVNIIChhcml0aG1ldGljIHNoaWZ0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMzAKLSsjOiB2bXMtYWxwaGEuYzo2MzMxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX1VTSCAodW5zaWduZWQgc2hpZnQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMzMwotKyM6IHZtcy1hbHBoYS5jOjYzMzQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfUk9UIChyb3RhdGUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMzNgotKyM6IHZtcy1hbHBoYS5jOjYzMzcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfU0VMIChzZWxlY3QpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMzOQotKyM6IHZtcy1hbHBoYS5jOjYzNDAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfUkVERUYgKHJlZGVmaW5lIHN5bWJvbCB0byBjdXJyIGxvY2F0aW9uKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNDIKLSsjOiB2bXMtYWxwaGEuYzo2MzQzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX1JFREVGIChkZWZpbmUgYSBsaXRlcmFsKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNDYKLSsjOiB2bXMtYWxwaGEuYzo2MzQ3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX0xQIChzdG9yZSBjb25kIGxpbmthZ2UgcGFpcilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzUwCi0rIzogdm1zLWFscGhhLmM6NjM1MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19MUF9QU0IgKHN0b3JlIGNvbmQgbGlua2FnZSBwYWlyICsgc2lnbmF0dXJlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNTIKLSsjOiB2bXMtYWxwaGEuYzo2MzUzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbGlua2FnZSBpbmRleDogJXUsIHByb2NlZHVyZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNTUKLSsjOiB2bXMtYWxwaGEuYzo2MzU2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgc2lnbmF0dXJlOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM1OAotKyM6IHZtcy1hbHBoYS5jOjYzNTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfR0JMIChzdG9yZSBjb25kIGdsb2JhbClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzYwCi0rIzogdm1zLWFscGhhLmM6NjM2MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGxpbmthZ2UgaW5kZXg6ICV1LCBnbG9iYWw6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzY0Ci0rIzogdm1zLWFscGhhLmM6NjM2NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19HQ0EgKHN0b3JlIGNvbmQgY29kZSBhZGRyZXNzKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNjYKLSsjOiB2bXMtYWxwaGEuYzo2MzY3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbGlua2FnZSBpbmRleDogJXUsIHByb2NlZHVyZSBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM3MAotKyM6IHZtcy1hbHBoYS5jOjYzNzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfUFMgKHN0b3JlIGNvbmQgcHNlY3QgKyBvZmZzZXQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM3MwotKyM6IHZtcy1hbHBoYS5jOjYzNzQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBsaW5rYWdlIGluZGV4OiAldSwgcHNlY3Q6ICV1LCBvZmZzZXQ6IDB4JTA4eCAlMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM4MAotKyM6IHZtcy1hbHBoYS5jOjYzODEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfTk9QX0dCTCAoc3RvcmUgY29uZCBOT1AgYXQgZ2xvYmFsIGFkZHIpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM4NAotKyM6IHZtcy1hbHBoYS5jOjYzODUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfTk9QX1BTIChzdG9yZSBjb25kIE5PUCBhdCBwc2VjdCArIG9mZnNldClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2Mzg4Ci0rIzogdm1zLWFscGhhLmM6NjM4OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19CU1JfR0JMIChzdG9yZSBjb25kIEJTUiBhdCBnbG9iYWwgYWRkcilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzkyCi0rIzogdm1zLWFscGhhLmM6NjM5MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19CU1JfUFMgKHN0b3JlIGNvbmQgQlNSIGF0IHBzZWN0ICsgb2Zmc2V0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzOTYKLSsjOiB2bXMtYWxwaGEuYzo2Mzk3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX0xEQV9HQkwgKHN0b3JlIGNvbmQgTERBIGF0IGdsb2JhbCBhZGRyKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MDAKLSsjOiB2bXMtYWxwaGEuYzo2NDAxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX0xEQV9QUyAoc3RvcmUgY29uZCBMREEgYXQgcHNlY3QgKyBvZmZzZXQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQwNAotKyM6IHZtcy1hbHBoYS5jOjY0MDUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfQk9IX0dCTCAoc3RvcmUgY29uZCBCT0ggYXQgZ2xvYmFsIGFkZHIpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQwOAotKyM6IHZtcy1hbHBoYS5jOjY0MDkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfQk9IX1BTIChzdG9yZSBjb25kIEJPSCBhdCBwc2VjdCArIG9mZnNldClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NDEzCi0rIzogdm1zLWFscGhhLmM6NjQxNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19OQkhfR0JMIChzdG9yZSBjb25kIG9yIGhpbnQgYXQgZ2xvYmFsIGFkZHIpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQxNwotKyM6IHZtcy1hbHBoYS5jOjY0MTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfTkJIX1BTIChzdG9yZSBjb25kIG9yIGhpbnQgYXQgcHNlY3QgKyBvZmZzZXQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQyMQotKyM6IHZtcy1hbHBoYS5jOjY0MjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJDVExfU0VUUkIgKHNldCByZWxvY2F0aW9uIGJhc2UpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQyNwotKyM6IHZtcy1hbHBoYS5jOjY0MjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJDVExfQVVHUkIgKGF1Z21lbnQgcmVsb2NhdGlvbiBiYXNlKSAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MzEKLSsjOiB2bXMtYWxwaGEuYzo2NDMyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQ1RMX0RGTE9DIChkZWZpbmUgbG9jYXRpb24pXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQzNAotKyM6IHZtcy1hbHBoYS5jOjY0MzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJDVExfU1RMT0MgKHNldCBsb2NhdGlvbilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NDM3Ci0rIzogdm1zLWFscGhhLmM6NjQzOAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkNUTF9TVEtETCAoc3RhY2sgZGVmaW5lZCBsb2NhdGlvbilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NDQwIHZtcy1hbHBoYS5jOjY4NjQgdm1zLWFscGhhLmM6Njk5MAotKyM6IHZtcy1hbHBoYS5jOjY0NDEgdm1zLWFscGhhLmM6Njg2NSB2bXMtYWxwaGEuYzo2OTkxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiKnVuaGFuZGxlZCpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NDcwIHZtcy1hbHBoYS5jOjY1MDkKLSsjOiB2bXMtYWxwaGEuYzo2NDcxIHZtcy1hbHBoYS5jOjY1MTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBHU1QgcmVjb3JkIGxlbmd0aFxuIgotIG1zZ3N0ciAiIgotIAotICMuIElsbC1mb3JtZWQuCi0tIzogdm1zLWFscGhhLmM6NjQ5MQotKyM6IHZtcy1hbHBoYS5jOjY0OTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgZmluZCBFTUggaW4gZmlyc3QgR1NUIHJlY29yZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY1MTcKLSsjOiB2bXMtYWxwaGEuYzo2NTE4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgR1NUIHJlY29yZCBoZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NTMwCi0rIzogdm1zLWFscGhhLmM6NjUzMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBjb3JydXB0ZWQgR1NUXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjUzOAotKyM6IHZtcy1hbHBoYS5jOjY1MzkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBHU1QgcmVjb3JkXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjU2NwotKyM6IHZtcy1hbHBoYS5jOjY1NjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgdW5oYW5kbGVkIEVPQkogcmVjb3JkIHR5cGUgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NTkxCi0rIzogdm1zLWFscGhhLmM6NjU5MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgYml0Y291bnQ6ICV1LCBiYXNlIGFkZHI6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY2MDUKLSsjOiB2bXMtYWxwaGEuYzo2NjA2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgYml0bWFwOiAweCUwOHggKGNvdW50OiAldSk6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjYxMgotKyM6IHZtcy1hbHBoYS5jOjY2MTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgJTA4eCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NjM4Ci0rIzogdm1zLWFscGhhLmM6NjYzOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgaW1hZ2UgJXUgKCV1IGVudHJpZXMpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjY0NAotKyM6IHZtcy1hbHBoYS5jOjY2NDUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBvZmZzZXQ6IDB4JTA4eCwgdmFsOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NjY2Ci0rIzogdm1zLWFscGhhLmM6NjY2NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgaW1hZ2UgJXUgKCV1IGVudHJpZXMpLCBvZmZzZXRzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY2NzMKLSsjOiB2bXMtYWxwaGEuYzo2Njc0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIDB4JTA4eCIKLSBtc2dzdHIgIiIKLSAKLSAjLiA2NCBiaXRzLgotLSM6IHZtcy1hbHBoYS5jOjY3OTUKLSsjOiB2bXMtYWxwaGEuYzo2Nzk2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiNjQgYml0cyAqdW5oYW5kbGVkKlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4MDAKLSsjOiB2bXMtYWxwaGEuYzo2ODAxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2xhc3M6ICV1LCBkdHlwZTogJXUsIGxlbmd0aDogJXUsIHBvaW50ZXI6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4MTEKLSsjOiB2bXMtYWxwaGEuYzo2ODEyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAibm9uLWNvbnRpZ3VvdXMgYXJyYXkgb2YgJXNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODE2Ci0rIzogdm1zLWFscGhhLmM6NjgxNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImRpbWN0OiAldSwgYWZsYWdzOiAweCUwMngsIGRpZ2l0czogJXUsIHNjYWxlOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4MjEKLSsjOiB2bXMtYWxwaGEuYzo2ODIyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiYXJzaXplOiAldSwgYTA6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4MjUKLSsjOiB2bXMtYWxwaGEuYzo2ODI2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU3RyaWRlczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODM1Ci0rIzogdm1zLWFscGhhLmM6NjgzNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkJvdW5kczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODQxCi0rIzogdm1zLWFscGhhLmM6Njg0MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlsldV06IExvd2VyOiAldSwgdXBwZXI6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg1MwotKyM6IHZtcy1hbHBoYS5jOjY4NTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ1bmFsaWduZWQgYml0LXN0cmluZyBvZiAlc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4NTgKLSsjOiB2bXMtYWxwaGEuYzo2ODU5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiYmFzZTogJXUsIHBvczogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODc5Ci0rIzogdm1zLWFscGhhLmM6Njg4MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInZmbGFnczogMHglMDJ4LCB2YWx1ZTogMHglMDh4ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODg1Ci0rIzogdm1zLWFscGhhLmM6Njg4NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIihubyB2YWx1ZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODg4Ci0rIzogdm1zLWFscGhhLmM6Njg4OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIihub3QgYWN0aXZlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4OTEKLSsjOiB2bXMtYWxwaGEuYzo2ODkyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiKG5vdCBhbGxvY2F0ZWQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg5NAotKyM6IHZtcy1hbHBoYS5jOjY4OTUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIoZGVzY3JpcHRvcilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODk4Ci0rIzogdm1zLWFscGhhLmM6Njg5OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIih0cmFpbGluZyB2YWx1ZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTAxCi0rIzogdm1zLWFscGhhLmM6NjkwMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIih2YWx1ZSBzcGVjIGZvbGxvd3MpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjkwNAotKyM6IHZtcy1hbHBoYS5jOjY5MDUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIoYXQgYml0IG9mZnNldCAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTA4Ci0rIzogdm1zLWFscGhhLmM6NjkwOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIihyZWc6ICV1LCBkaXNwOiAldSwgaW5kaXI6ICV1LCBraW5kOiAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjkxNQotKyM6IHZtcy1hbHBoYS5jOjY5MTYKLSBtc2dpZCAibGl0ZXJhbCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTE4Ci0rIzogdm1zLWFscGhhLmM6NjkxOQotIG1zZ2lkICJhZGRyZXNzIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5MjEKLSsjOiB2bXMtYWxwaGEuYzo2OTIyCi0gbXNnaWQgImRlc2MiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjkyNAotKyM6IHZtcy1hbHBoYS5jOjY5MjUKLSBtc2dpZCAicmVnIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5NDEKLSsjOiB2bXMtYWxwaGEuYzo2OTQyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAibGVuOiAlMnUsIGtpbmQ6ICUydSAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk0NwotKyM6IHZtcy1hbHBoYS5jOjY5NDgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJhdG9taWMsIHR5cGU9MHglMDJ4ICVzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk1MQotKyM6IHZtcy1hbHBoYS5jOjY5NTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJpbmRpcmVjdCwgZGVmaW5lZCBhdCAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTU1Ci0rIzogdm1zLWFscGhhLmM6Njk1NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInR5cGVkIHBvaW50ZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTU5Ci0rIzogdm1zLWFscGhhLmM6Njk2MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInBvaW50ZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTY3Ci0rIzogdm1zLWFscGhhLmM6Njk2OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImFycmF5LCBkaW06ICV1LCBiaXRtYXA6ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTc0Ci0rIzogdm1zLWFscGhhLmM6Njk3NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImFycmF5IGRlc2NyaXB0b3I6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk4MQotKyM6IHZtcy1hbHBoYS5jOjY5ODIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ0eXBlIHNwZWMgZm9yIGVsZW1lbnQ6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk4MwotKyM6IHZtcy1hbHBoYS5jOjY5ODQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ0eXBlIHNwZWMgZm9yIHN1YnNjcmlwdCAldTpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MDAxCi0rIzogdm1zLWFscGhhLmM6NzAwMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkRlYnVnIHN5bWJvbCB0YWJsZTpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MDEyCi0rIzogdm1zLWFscGhhLmM6NzAxMwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIERTVCBoZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MDE4Ci0rIzogdm1zLWFscGhhLmM6NzAxOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiB0eXBlOiAlM3UsIGxlbjogJTN1IChhdCAweCUwOHgpOiAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzAzMgotKyM6IHZtcy1hbHBoYS5jOjcwMzMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBEU1Qgc3ltYm9sXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzA3NQotKyM6IHZtcy1hbHBoYS5jOjcwNzYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJzdGFuZGFyZCBkYXRhOiAlc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcwNzggdm1zLWFscGhhLmM6NzE2NgotKyM6IHZtcy1hbHBoYS5jOjcwNzkgdm1zLWFscGhhLmM6NzE2NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzA4NQotKyM6IHZtcy1hbHBoYS5jOjcwODYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJtb2RiZWdcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MDg3Ci0rIzogdm1zLWFscGhhLmM6NzA4OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGZsYWdzOiAlZCwgbGFuZ3VhZ2U6ICV1LCBtYWpvcjogJXUsIG1pbm9yOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcwOTMgdm1zLWFscGhhLmM6NzM2NwotKyM6IHZtcy1hbHBoYS5jOjcwOTQgdm1zLWFscGhhLmM6NzM2OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG1vZHVsZSBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzA5NgotKyM6IHZtcy1hbHBoYS5jOjcwOTcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBjb21waWxlciAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxMDEKLSsjOiB2bXMtYWxwaGEuYzo3MTAyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAibW9kZW5kXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzEwOAotKyM6IHZtcy1hbHBoYS5jOjcxMDkKLSBtc2dpZCAicnRuYmVnXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzExMAotKyM6IHZtcy1hbHBoYS5jOjcxMTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgZmxhZ3M6ICV1LCBhZGRyZXNzOiAweCUwOHgsIHBkLWFkZHJlc3M6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxMTUKLSsjOiB2bXMtYWxwaGEuYzo3MTE2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIHJvdXRpbmUgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxMjMKLSsjOiB2bXMtYWxwaGEuYzo3MTI0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAicnRuZW5kOiBzaXplIDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxMzEKLSsjOiB2bXMtYWxwaGEuYzo3MTMyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAicHJvbG9nOiBia3B0IGFkZHJlc3MgMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE0MAotKyM6IHZtcy1hbHBoYS5jOjcxNDEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJlcGlsb2c6IGZsYWdzOiAldSwgY291bnQ6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE1MAotKyM6IHZtcy1hbHBoYS5jOjcxNTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJibGtiZWc6IGFkZHJlc3M6IDB4JTA4eCwgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxNTkKLSsjOiB2bXMtYWxwaGEuYzo3MTYwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiYmxrZW5kOiBzaXplOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTY1Ci0rIzogdm1zLWFscGhhLmM6NzE2NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInR5cHNwZWMgKGxlbjogJXUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE3MgotKyM6IHZtcy1hbHBoYS5jOjcxNzMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJzZXB0eXAsIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTgxCi0rIzogdm1zLWFscGhhLmM6NzE4MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInJlY2JlZzogbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxODMKLSsjOiB2bXMtYWxwaGEuYzo3MTg0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIGxlbjogJXUgYml0c1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxODgKLSsjOiB2bXMtYWxwaGEuYzo3MTg5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAicmVjZW5kXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE5MgotKyM6IHZtcy1hbHBoYS5jOjcxOTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJlbnVtYmVnLCBsZW46ICV1LCBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE5NgotKyM6IHZtcy1hbHBoYS5jOjcxOTcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJlbnVtZWx0LCBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzIwMAotKyM6IHZtcy1hbHBoYS5jOjcyMDEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJlbnVtZW5kXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzIwNQotKyM6IHZtcy1hbHBoYS5jOjcyMDYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJsYWJlbCwgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyMDcKLSsjOiB2bXMtYWxwaGEuYzo3MjA4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIGFkZHJlc3M6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyMTcKLSsjOiB2bXMtYWxwaGEuYzo3MjE4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZGlzY29udGlndW91cyByYW5nZSAobmJyOiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjIwCi0rIzogdm1zLWFscGhhLmM6NzIyMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBhZGRyZXNzOiAweCUwOHgsIHNpemU6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzIzMAotKyM6IHZtcy1hbHBoYS5jOjcyMzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJsaW5lIG51bSAgKGxlbjogJXUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzI0NwotKyM6IHZtcy1hbHBoYS5jOjcyNDgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJkZWx0YV9wY193ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzI1NAotKyM6IHZtcy1hbHBoYS5jOjcyNTUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJpbmNyX2xpbnVtKGIpOiArJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjYwCi0rIzogdm1zLWFscGhhLmM6NzI2MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImluY3JfbGludW1fdzogKyV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzI2NgotKyM6IHZtcy1hbHBoYS5jOjcyNjcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJpbmNyX2xpbnVtX2w6ICsldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyNzIKLSsjOiB2bXMtYWxwaGEuYzo3MjczCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAic2V0X2xpbmVfbnVtKHcpICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzI3NwotKyM6IHZtcy1hbHBoYS5jOjcyNzgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJzZXRfbGluZV9udW1fYiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyODIKLSsjOiB2bXMtYWxwaGEuYzo3MjgzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAic2V0X2xpbmVfbnVtX2wgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Mjg3Ci0rIzogdm1zLWFscGhhLmM6NzI4OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInNldF9hYnNfcGM6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyOTEKLSsjOiB2bXMtYWxwaGEuYzo3MjkyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZGVsdGFfcGNfbDogKzB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyOTYKLSsjOiB2bXMtYWxwaGEuYzo3Mjk3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAidGVybShiKTogMHglMDJ4IgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyOTgKLSsjOiB2bXMtYWxwaGEuYzo3Mjk5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgICAgICBwYzogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzMwMwotKyM6IHZtcy1hbHBoYS5jOjczMDQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ0ZXJtX3c6IDB4JTA0eCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzA1Ci0rIzogdm1zLWFscGhhLmM6NzMwNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBwYzogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzMxMQotKyM6IHZtcy1hbHBoYS5jOjczMTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJkZWx0YSBwYyArJS00ZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzE1Ci0rIzogdm1zLWFscGhhLmM6NzMxNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBwYzogMHglMDh4IGxpbmU6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczMjAKLSsjOiB2bXMtYWxwaGEuYzo3MzIxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgICp1bmhhbmRsZWQqIGNtZCAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczMzUKLSsjOiB2bXMtYWxwaGEuYzo3MzM2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAic291cmNlIChsZW46ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczNTAKLSsjOiB2bXMtYWxwaGEuYzo3MzUxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZGVjbGZpbGU6IGxlbjogJXUsIGZsYWdzOiAldSwgZmlsZWlkOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczNTUKLSsjOiB2bXMtYWxwaGEuYzo3MzU2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgcm1zOiBjZHQ6IDB4JTA4eCAlMDh4LCBlYms6IDB4JTA4eCwgZmZiOiAweCUwNHgsIHJmbzogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzY0Ci0rIzogdm1zLWFscGhhLmM6NzM2NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGZpbGVuYW1lICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzM3MwotKyM6IHZtcy1hbHBoYS5jOjczNzQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBzZXRmaWxlICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzM3OCB2bXMtYWxwaGEuYzo3MzgzCi0rIzogdm1zLWFscGhhLmM6NzM3OSB2bXMtYWxwaGEuYzo3Mzg0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgc2V0cmVjICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzM4OCB2bXMtYWxwaGEuYzo3MzkzCi0rIzogdm1zLWFscGhhLmM6NzM4OSB2bXMtYWxwaGEuYzo3Mzk0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgc2V0bG51bSAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczOTggdm1zLWFscGhhLmM6NzQwMwotKyM6IHZtcy1hbHBoYS5jOjczOTkgdm1zLWFscGhhLmM6NzQwNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGRlZmxpbmVzICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzQwNwotKyM6IHZtcy1hbHBoYS5jOjc0MDgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBmb3JtZmVlZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0MTEKLSsjOiB2bXMtYWxwaGEuYzo3NDEyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgKnVuaGFuZGxlZCogY21kICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzQyMwotKyM6IHZtcy1hbHBoYS5jOjc0MjQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIqdW5oYW5kbGVkKiBkc3QgdHlwZSAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0NTUKLSsjOiB2bXMtYWxwaGEuYzo3NDU2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRUlIRFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0NTkKLSsjOiB2bXMtYWxwaGEuYzo3NDYwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiRUlIRDogKHNpemU6ICV1LCBuYnIgYmxvY2tzOiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDYzCi0rIzogdm1zLWFscGhhLmM6NzQ2NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBtYWpvcmlkOiAldSwgbWlub3JpZDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDcxCi0rIzogdm1zLWFscGhhLmM6NzQ3MgotIG1zZ2lkICJleGVjdXRhYmxlIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0NzQKLSsjOiB2bXMtYWxwaGEuYzo3NDc1Ci0gbXNnaWQgImxpbmthYmxlIGltYWdlIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0ODEKLSsjOiB2bXMtYWxwaGEuYzo3NDgyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGltYWdlIHR5cGU6ICV1ICglcykiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzQ4NwotKyM6IHZtcy1hbHBoYS5jOjc0ODgKLSBtc2dpZCAibmF0aXZlIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0OTAKLSsjOiB2bXMtYWxwaGEuYzo3NDkxCi0gbXNnaWQgIkNMSSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDk3Ci0rIzogdm1zLWFscGhhLmM6NzQ5OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiwgc3VidHlwZTogJXUgKCVzKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1MDQKLSsjOiB2bXMtYWxwaGEuYzo3NTA1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIG9mZnNldHM6IGlzZDogJXUsIGFjdGl2OiAldSwgc3ltZGJnOiAldSwgaW1naWQ6ICV1LCBwYXRjaDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTA4Ci0rIzogdm1zLWFscGhhLmM6NzUwOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBmaXh1cCBpbmZvIHJ2YTogIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1MTAKLSsjOiB2bXMtYWxwaGEuYzo3NTExCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiLCBzeW1ib2wgdmVjdG9yIHJ2YTogIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1MTMKLSsjOiB2bXMtYWxwaGEuYzo3NTE0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotICJcbiIKLSAiIHZlcnNpb24gYXJyYXkgb2ZmOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1MTgKLSsjOiB2bXMtYWxwaGEuYzo3NTE5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGltZyBJL08gY291bnQ6ICV1LCBuYnIgY2hhbm5lbHM6ICV1LCByZXEgcHJpOiAlMDh4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1MjQKLSsjOiB2bXMtYWxwaGEuYzo3NTI1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGxpbmtlciBmbGFnczogJTA4eDoiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzU1NQotKyM6IHZtcy1hbHBoYS5jOjc1NTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgaWRlbnQ6IDB4JTA4eCwgc3lzdmVyOiAweCUwOHgsIG1hdGNoIGN0cmw6ICV1LCBzeW12ZWN0X3NpemU6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzU2MQotKyM6IHZtcy1hbHBoYS5jOjc1NjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgQlBBR0U6ICV1IgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1NjgKLSsjOiB2bXMtYWxwaGEuYzo3NTY5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiLCBleHQgZml4dXAgb2Zmc2V0OiAldSwgbm9fb3B0IHBzZWN0IG9mZjogJXUiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzU3MQotKyM6IHZtcy1hbHBoYS5jOjc1NzIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIsIGFsaWFzOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1NzkKLSsjOiB2bXMtYWxwaGEuYzo3NTgwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAic3lzdGVtIHZlcnNpb24gYXJyYXkgaW5mb3JtYXRpb246XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzU4MwotKyM6IHZtcy1hbHBoYS5jOjc1ODQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBFSUhWTiBoZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTkzCi0rIzogdm1zLWFscGhhLmM6NzU5NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIEVJSFZOIHZlcnNpb25cbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTk2Ci0rIzogdm1zLWFscGhhLmM6NzU5NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICUwMnUgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MDAKLSsjOiB2bXMtYWxwaGEuYzo3NjAxCi0gbXNnaWQgIkJBU0VfSU1BR0UgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MDMKLSsjOiB2bXMtYWxwaGEuYzo3NjA0Ci0gbXNnaWQgIk1FTU9SWV9NQU5BR0VNRU5UIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MDYKLSsjOiB2bXMtYWxwaGEuYzo3NjA3Ci0gbXNnaWQgIklPICAgICAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MDkKLSsjOiB2bXMtYWxwaGEuYzo3NjEwCi0gbXNnaWQgIkZJTEVTX1ZPTFVNRVMgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MTIKLSsjOiB2bXMtYWxwaGEuYzo3NjEzCi0gbXNnaWQgIlBST0NFU1NfU0NIRUQgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MTUKLSsjOiB2bXMtYWxwaGEuYzo3NjE2Ci0gbXNnaWQgIlNZU0dFTiAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MTgKLSsjOiB2bXMtYWxwaGEuYzo3NjE5Ci0gbXNnaWQgIkNMVVNURVJTX0xPQ0tNR1IgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MjEKLSsjOiB2bXMtYWxwaGEuYzo3NjIyCi0gbXNnaWQgIkxPR0lDQUxfTkFNRVMgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MjQKLSsjOiB2bXMtYWxwaGEuYzo3NjI1Ci0gbXNnaWQgIlNFQ1VSSVRZICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MjcKLSsjOiB2bXMtYWxwaGEuYzo3NjI4Ci0gbXNnaWQgIklNQUdFX0FDVElWQVRPUiAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MzAKLSsjOiB2bXMtYWxwaGEuYzo3NjMxCi0gbXNnaWQgIk5FVFdPUktTICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MzMKLSsjOiB2bXMtYWxwaGEuYzo3NjM0Ci0gbXNnaWQgIkNPVU5URVJTICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MzYKLSsjOiB2bXMtYWxwaGEuYzo3NjM3Ci0gbXNnaWQgIlNUQUJMRSAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2MzkKLSsjOiB2bXMtYWxwaGEuYzo3NjQwCi0gbXNnaWQgIk1JU0MgICAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NDIKLSsjOiB2bXMtYWxwaGEuYzo3NjQzCi0gbXNnaWQgIkNQVSAgICAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NDUKLSsjOiB2bXMtYWxwaGEuYzo3NjQ2Ci0gbXNnaWQgIlZPTEFUSUxFICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NDgKLSsjOiB2bXMtYWxwaGEuYzo3NjQ5Ci0gbXNnaWQgIlNIRUxMICAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NTEKLSsjOiB2bXMtYWxwaGEuYzo3NjUyCi0gbXNnaWQgIlBPU0lYICAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NTQKLSsjOiB2bXMtYWxwaGEuYzo3NjU1Ci0gbXNnaWQgIk1VTFRJX1BST0NFU1NJTkcgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NTcKLSsjOiB2bXMtYWxwaGEuYzo3NjU4Ci0gbXNnaWQgIkdBTEFYWSAgICAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NjAKLSsjOiB2bXMtYWxwaGEuYzo3NjYxCi0gbXNnaWQgIip1bmtub3duKiAgICAgICAgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2NzYgdm1zLWFscGhhLmM6Nzk1MQotKyM6IHZtcy1hbHBoYS5jOjc2Nzcgdm1zLWFscGhhLmM6Nzk1MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIEVJSEFcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Njc5Ci0rIzogdm1zLWFscGhhLmM6NzY4MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkltYWdlIGFjdGl2YXRpb246ICAoc2l6ZT0ldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjgyCi0rIzogdm1zLWFscGhhLmM6NzY4MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBGaXJzdCBhZGRyZXNzIDogMHglMDh4IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2ODYKLSsjOiB2bXMtYWxwaGEuYzo3Njg3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIFNlY29uZCBhZGRyZXNzOiAweCUwOHggMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzY5MAotKyM6IHZtcy1hbHBoYS5jOjc2OTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgVGhpcmQgYWRkcmVzcyA6IDB4JTA4eCAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Njk0Ci0rIzogdm1zLWFscGhhLmM6NzY5NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBGb3VydGggYWRkcmVzczogMHglMDh4IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2OTgKLSsjOiB2bXMtYWxwaGEuYzo3Njk5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIFNoYXJlZCBpbWFnZSAgOiAweCUwOHggMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzcwOQotKyM6IHZtcy1hbHBoYS5jOjc3MTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBFSUhJXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzcxMwotKyM6IHZtcy1hbHBoYS5jOjc3MTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJJbWFnZSBpZGVudGlmaWNhdGlvbjogKG1ham9yOiAldSwgbWlub3I6ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MTYKLSsjOiB2bXMtYWxwaGEuYzo3NzE3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGltYWdlIG5hbWUgICAgICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzcxOAotKyM6IHZtcy1hbHBoYS5jOjc3MTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgbGluayB0aW1lICAgICAgICA6ICVzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzcyMAotKyM6IHZtcy1hbHBoYS5jOjc3MjEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgaW1hZ2UgaWRlbnQgICAgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NzIyCi0rIzogdm1zLWFscGhhLmM6NzcyMwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBsaW5rZXIgaWRlbnQgICAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MjQKLSsjOiB2bXMtYWxwaGEuYzo3NzI1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGltYWdlIGJ1aWxkIGlkZW50OiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzczNAotKyM6IHZtcy1hbHBoYS5jOjc3MzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBFSUhTXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzczOAotKyM6IHZtcy1hbHBoYS5jOjc3MzkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJJbWFnZSBzeW1ib2wgJiBkZWJ1ZyB0YWJsZTogKG1ham9yOiAldSwgbWlub3I6ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3NDQKLSsjOiB2bXMtYWxwaGEuYzo3NzQ1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGRlYnVnIHN5bWJvbCB0YWJsZSA6IHZibjogJXUsIHNpemU6ICV1ICgweCV4KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3NDkKLSsjOiB2bXMtYWxwaGEuYzo3NzUwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGdsb2JhbCBzeW1ib2wgdGFibGU6IHZibjogJXUsIHJlY29yZHM6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzc1NAotKyM6IHZtcy1hbHBoYS5jOjc3NTUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgZGVidWcgbW9kdWxlIHRhYmxlIDogdmJuOiAldSwgc2l6ZTogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NzY3Ci0rIzogdm1zLWFscGhhLmM6Nzc2OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIEVJU0RcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Nzc4Ci0rIzogdm1zLWFscGhhLmM6Nzc3OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLSAiSW1hZ2Ugc2VjdGlvbiBkZXNjcmlwdG9yOiAobWFqb3I6ICV1LCBtaW5vcjogJXUsIHNpemU6ICV1LCBvZmZzZXQ6ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3ODYKLSsjOiB2bXMtYWxwaGEuYzo3Nzg3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIHNlY3Rpb246IGJhc2U6IDB4JTA4eCUwOHggc2l6ZTogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzc5MQotKyM6IHZtcy1hbHBoYS5jOjc3OTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgZmxhZ3M6IDB4JTA0eCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODI5Ci0rIzogdm1zLWFscGhhLmM6NzgzMAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiB2Ym46ICV1LCBwZmM6ICV1LCBtYXRjaGN0bDogJXUgdHlwZTogJXUgKCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODM1Ci0rIzogdm1zLWFscGhhLmM6NzgzNgotIG1zZ2lkICJOT1JNQUwiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzgzOAotKyM6IHZtcy1hbHBoYS5jOjc4MzkKLSBtc2dpZCAiU0hSRlhEIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc4NDEKLSsjOiB2bXMtYWxwaGEuYzo3ODQyCi0gbXNnaWQgIlBSVkZYRCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODQ0Ci0rIzogdm1zLWFscGhhLmM6Nzg0NQotIG1zZ2lkICJTSFJQSUMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg0NwotKyM6IHZtcy1hbHBoYS5jOjc4NDgKLSBtc2dpZCAiUFJWUElDIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc4NTAKLSsjOiB2bXMtYWxwaGEuYzo3ODUxCi0gbXNnaWQgIlVTUlNUQUNLIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc4NTYKLSsjOiB2bXMtYWxwaGEuYzo3ODU3Ci0gbXNnaWQgIilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODU5Ci0rIzogdm1zLWFscGhhLmM6Nzg2MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBpZGVudDogMHglMDh4LCBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg2OQotKyM6IHZtcy1hbHBoYS5jOjc4NzAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBETVRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODczCi0rIzogdm1zLWFscGhhLmM6Nzg3NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkRlYnVnIG1vZHVsZSB0YWJsZTpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODgyCi0rIzogdm1zLWFscGhhLmM6Nzg4MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIERNVCBoZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODg4Ci0rIzogdm1zLWFscGhhLmM6Nzg4OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBtb2R1bGUgb2Zmc2V0OiAweCUwOHgsIHNpemU6IDB4JTA4eCwgKCV1IHBzZWN0cylcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODk4Ci0rIzogdm1zLWFscGhhLmM6Nzg5OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIERNVCBwc2VjdFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5MDIKLSsjOiB2bXMtYWxwaGEuYzo3OTAzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBwc2VjdCBzdGFydDogMHglMDh4LCBsZW5ndGg6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzkxNQotKyM6IHZtcy1hbHBoYS5jOjc5MTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBEU1RcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTI1Ci0rIzogdm1zLWFscGhhLmM6NzkyNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIEdTVFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5MjkKLSsjOiB2bXMtYWxwaGEuYzo3OTMwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiR2xvYmFsIHN5bWJvbCB0YWJsZTpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTU4Ci0rIzogdm1zLWFscGhhLmM6Nzk1OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkltYWdlIGFjdGl2YXRvciBmaXh1cDogKG1ham9yOiAldSwgbWlub3I6ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5NjIKLSsjOiB2bXMtYWxwaGEuYzo3OTYzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBpYWZsaW5rIDogMHglMDh4ICUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTY2Ci0rIzogdm1zLWFscGhhLmM6Nzk2NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgZml4dXBsbms6IDB4JTA4eCAlMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk2OQotKyM6IHZtcy1hbHBoYS5jOjc5NzAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIHNpemUgOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5NzEKLSsjOiB2bXMtYWxwaGEuYzo3OTcyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBmbGFnczogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk3NgotKyM6IHZtcy1hbHBoYS5jOjc5NzcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIHFyZWxmaXhvZmY6ICU1dSwgbHJlbGZpeG9mZjogJTV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk4MQotKyM6IHZtcy1hbHBoYS5jOjc5ODIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIHFkb3RhZHJvZmY6ICU1dSwgbGRvdGFkcm9mZjogJTV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk4NgotKyM6IHZtcy1hbHBoYS5jOjc5ODcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGNvZGVhZHJvZmY6ICU1dSwgbHBmaXhvZmYgIDogJTV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk4OQotKyM6IHZtcy1hbHBoYS5jOjc5OTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGNoZ3BydG9mZiA6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5OTMKLSsjOiB2bXMtYWxwaGEuYzo3OTk0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBzaGxzdG9mZiAgOiAlNXUsIHNocmltZ2NudCA6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5OTYKLSsjOiB2bXMtYWxwaGEuYzo3OTk3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBzaGxleHRyYSAgOiAlNXUsIHBlcm1jdHggICA6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5OTkKLSsjOiB2bXMtYWxwaGEuYzo4MDAwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBiYXNlX3ZhIDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODAwMQotKyM6IHZtcy1hbHBoYS5jOjgwMDIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGxwcHNiZml4b2ZmOiAlNXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDA5Ci0rIzogdm1zLWFscGhhLmM6ODAxMAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBTaGFyZWFibGUgaW1hZ2VzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwMTQKLSsjOiB2bXMtYWxwaGEuYzo4MDE1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAldTogc2l6ZTogJXUsIGZsYWdzOiAweCUwMngsIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDIxCi0rIzogdm1zLWFscGhhLmM6ODAyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBxdWFkLXdvcmQgcmVsb2NhdGlvbiBmaXh1cHM6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODAyNgotKyM6IHZtcy1hbHBoYS5jOjgwMjcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgbG9uZy13b3JkIHJlbG9jYXRpb24gZml4dXBzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwMzEKLSsjOiB2bXMtYWxwaGEuYzo4MDMyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIHF1YWQtd29yZCAuYWRkcmVzcyByZWZlcmVuY2UgZml4dXBzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwMzYKLSsjOiB2bXMtYWxwaGEuYzo4MDM3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGxvbmctd29yZCAuYWRkcmVzcyByZWZlcmVuY2UgZml4dXBzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwNDEKLSsjOiB2bXMtYWxwaGEuYzo4MDQyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIENvZGUgQWRkcmVzcyBSZWZlcmVuY2UgRml4dXBzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwNDYKLSsjOiB2bXMtYWxwaGEuYzo4MDQ3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIExpbmthZ2UgUGFpcnMgUmVmZXJlbmNlIEZpeHVwczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDU1Ci0rIzogdm1zLWFscGhhLmM6ODA1NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBDaGFuZ2UgUHJvdGVjdGlvbiAoJXUgZW50cmllcyk6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODA2MQotKyM6IHZtcy1hbHBoYS5jOjgwNjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGJhc2U6IDB4JTA4eCAlMDh4LCBzaXplOiAweCUwOHgsIHByb3Q6IDB4JTA4eCAiCi0gbXNnc3RyICIiCi0gCi0gIy4gRklYTUU6IHdlIGRvIG5vdCB5ZXQgc3VwcG9ydCByZWxvY2F0YWJsZSBsaW5rLiAgSXQgaXMgbm90IG9idmlvdXMKLSAjLiBob3cgdG8gZG8gaXQgZm9yIGRlYnVnIGluZm9zLgotLSM6IHZtcy1hbHBoYS5jOjg5MDEKLSsjOiB2bXMtYWxwaGEuYzo4OTAyCi0gbXNnaWQgIiVQOiByZWxvY2F0YWJsZSBsaW5rIGlzIG5vdCBzdXBwb3J0ZWRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4OTcyCi0rIzogdm1zLWFscGhhLmM6ODk3MwotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVQOiBtdWx0aXBsZSBlbnRyeSBwb2ludHM6IGluIG1vZHVsZXMgJUIgYW5kICVCXG4iCi0rbXNnaWQgIiVQOiBtdWx0aXBsZSBlbnRyeSBwb2ludHM6IGluIG1vZHVsZXMgJXBCIGFuZCAlcEJcbiIKLSBtc2dzdHIgIiIKLSAKLSAjOiB2bXMtbGliLmM6MTQ0NQotQEAgLTg1OTQsNyArODU2NCw3IEBAIG1zZ3N0ciAiIgotICM6IHBlaWdlbi5jOjE5MDYgcGVpZ2VuLmM6MjEwMyBwZXBpZ2VuLmM6MTkwNiBwZXBpZ2VuLmM6MjEwMyBwZXg2NGlnZW4uYzoxOTA2Ci0gIzogcGV4NjRpZ2VuLmM6MjEwMwotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIldhcm5pbmcsIC5wZGF0YSBzZWN0aW9uIHNpemUgKCVsZCkgaXMgbm90IGEgbXVsdGlwbGUgb2YgJWRcbiIKLSttc2dpZCAid2FybmluZywgLnBkYXRhIHNlY3Rpb24gc2l6ZSAoJWxkKSBpcyBub3QgYSBtdWx0aXBsZSBvZiAlZFxuIgotIG1zZ3N0ciAiIgotIAotICM6IHBlaWdlbi5jOjE5MTAgcGVpZ2VuLmM6MjEwNyBwZXBpZ2VuLmM6MTkxMCBwZXBpZ2VuLmM6MjEwNyBwZXg2NGlnZW4uYzoxOTEwCi1AQCAtODc5NSw4MiArODc2NSw5MiBAQCBtc2dpZCAiIgotICJDaGFyYWN0ZXJpc3RpY3MgMHgleFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjI5ODkgcGVwaWdlbi5jOjI5ODkgcGV4NjRpZ2VuLmM6Mjk4OQotKyM6IHBlaWdlbi5jOjI5OTAgcGVwaWdlbi5jOjI5OTAgcGV4NjRpZ2VuLmM6Mjk5MAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBEYXRhIERpcmVjdG9yeSBzaXplICglbHgpIGV4Y2VlZHMgc3BhY2UgbGVmdCBpbiBzZWN0aW9uICglTHgpIgotK21zZ2lkICIiCi0rIiVwQjogRGF0YSBEaXJlY3Rvcnkgc2l6ZSAoJWx4KSBleGNlZWRzIHNwYWNlIGxlZnQgaW4gc2VjdGlvbiAoJTxQUkl4NjQ+KSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzozMDE5IHBlcGlnZW4uYzozMDE5IHBleDY0aWdlbi5jOjMwMTkKLS1tc2dpZCAiRmFpbGVkIHRvIHVwZGF0ZSBmaWxlIG9mZnNldHMgaW4gZGVidWcgZGlyZWN0b3J5IgotKyM6IHBlaWdlbi5jOjMwMjEgcGVwaWdlbi5jOjMwMjEgcGV4NjRpZ2VuLmM6MzAyMQotK21zZ2lkICJmYWlsZWQgdG8gdXBkYXRlIGZpbGUgb2Zmc2V0cyBpbiBkZWJ1ZyBkaXJlY3RvcnkiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6MzAyNSBwZXBpZ2VuLmM6MzAyNSBwZXg2NGlnZW4uYzozMDI1Ci0tbXNnaWQgIiVCOiBGYWlsZWQgdG8gcmVhZCBkZWJ1ZyBkYXRhIHNlY3Rpb24iCi0rIzogcGVpZ2VuLmM6MzAyNyBwZXBpZ2VuLmM6MzAyNyBwZXg2NGlnZW4uYzozMDI3Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiBmYWlsZWQgdG8gcmVhZCBkZWJ1ZyBkYXRhIHNlY3Rpb24iCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6Mzg0MSBwZXBpZ2VuLmM6Mzg0MSBwZXg2NGlnZW4uYzozODQxCi0rIzogcGVpZ2VuLmM6Mzg0MyBwZXBpZ2VuLmM6Mzg0MyBwZXg2NGlnZW4uYzozODQzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiLnJzcmMgbWVyZ2UgZmFpbHVyZTogZHVwbGljYXRlIHN0cmluZyByZXNvdXJjZTogJWQiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6Mzk3NiBwZXBpZ2VuLmM6Mzk3NiBwZXg2NGlnZW4uYzozOTc2Ci0rIzogcGVpZ2VuLmM6Mzk3OCBwZXBpZ2VuLmM6Mzk3OCBwZXg2NGlnZW4uYzozOTc4Ci0gbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IG11bHRpcGxlIG5vbi1kZWZhdWx0IG1hbmlmZXN0cyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzozOTk0IHBlcGlnZW4uYzozOTk0IHBleDY0aWdlbi5jOjM5OTQKLSsjOiBwZWlnZW4uYzozOTk2IHBlcGlnZW4uYzozOTk2IHBleDY0aWdlbi5jOjM5OTYKLSBtc2dpZCAiLnJzcmMgbWVyZ2UgZmFpbHVyZTogYSBkaXJlY3RvcnkgbWF0Y2hlcyBhIGxlYWYiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDAzNiBwZXBpZ2VuLmM6NDAzNiBwZXg2NGlnZW4uYzo0MDM2Ci0rIzogcGVpZ2VuLmM6NDAzOCBwZXBpZ2VuLmM6NDAzOCBwZXg2NGlnZW4uYzo0MDM4Ci0gbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGR1cGxpY2F0ZSBsZWFmIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjQwMzggcGVwaWdlbi5jOjQwMzggcGV4NjRpZ2VuLmM6NDAzOAotKyM6IHBlaWdlbi5jOjQwNDAgcGVwaWdlbi5jOjQwNDAgcGV4NjRpZ2VuLmM6NDA0MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGR1cGxpY2F0ZSBsZWFmOiAlcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0MTA0IHBlcGlnZW4uYzo0MTA0IHBleDY0aWdlbi5jOjQxMDQKLS1tc2dpZCAiLnJzcmMgbWVyZ2UgZmFpbHVyZTogZGlycyB3aXRoIGRpZmZlcmluZyBjaGFyYWN0ZXJpc3RpY3NcbiIKLSsjOiBwZWlnZW4uYzo0MTA2IHBlcGlnZW4uYzo0MTA2IHBleDY0aWdlbi5jOjQxMDYKLSttc2dpZCAiLnJzcmMgbWVyZ2UgZmFpbHVyZTogZGlycyB3aXRoIGRpZmZlcmluZyBjaGFyYWN0ZXJpc3RpY3MiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDExMSBwZXBpZ2VuLmM6NDExMSBwZXg2NGlnZW4uYzo0MTExCi0tbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGRpZmZlcmluZyBkaXJlY3RvcnkgdmVyc2lvbnNcbiIKLSsjOiBwZWlnZW4uYzo0MTEzIHBlcGlnZW4uYzo0MTEzIHBleDY0aWdlbi5jOjQxMTMKLSttc2dpZCAiLnJzcmMgbWVyZ2UgZmFpbHVyZTogZGlmZmVyaW5nIGRpcmVjdG9yeSB2ZXJzaW9ucyIKLSBtc2dzdHIgIiIKLSAKLSAjLiBDb3JydXB0ZWQgLnJzcmMgc2VjdGlvbiAtIGNhbm5vdCBtZXJnZS4KLS0jOiBwZWlnZW4uYzo0MjI4IHBlcGlnZW4uYzo0MjI4IHBleDY0aWdlbi5jOjQyMjgKLS1tc2dpZCAiJUI6IC5yc3JjIG1lcmdlIGZhaWx1cmU6IGNvcnJ1cHQgLnJzcmMgc2VjdGlvbiIKLSsjOiBwZWlnZW4uYzo0MjMwIHBlcGlnZW4uYzo0MjMwIHBleDY0aWdlbi5jOjQyMzAKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IC5yc3JjIG1lcmdlIGZhaWx1cmU6IGNvcnJ1cHQgLnJzcmMgc2VjdGlvbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0MjM2IHBlcGlnZW4uYzo0MjM2IHBleDY0aWdlbi5jOjQyMzYKLS1tc2dpZCAiJUI6IC5yc3JjIG1lcmdlIGZhaWx1cmU6IHVuZXhwZWN0ZWQgLnJzcmMgc2l6ZSIKLSsjOiBwZWlnZW4uYzo0MjM4IHBlcGlnZW4uYzo0MjM4IHBleDY0aWdlbi5jOjQyMzgKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IC5yc3JjIG1lcmdlIGZhaWx1cmU6IHVuZXhwZWN0ZWQgLnJzcmMgc2l6ZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0Mzc1IHBlcGlnZW4uYzo0Mzc1IHBleDY0aWdlbi5jOjQzNzUKLS1tc2dpZCAiJUI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5WzFdIGJlY2F1c2UgLmlkYXRhJDIgaXMgbWlzc2luZyIKLSsjOiBwZWlnZW4uYzo0Mzc3IHBlcGlnZW4uYzo0Mzc3IHBleDY0aWdlbi5jOjQzNzcKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5WzFdIGJlY2F1c2UgLmlkYXRhJDIgaXMgbWlzc2luZyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0Mzk1IHBlcGlnZW4uYzo0Mzk1IHBleDY0aWdlbi5jOjQzOTUKLS1tc2dpZCAiJUI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5WzFdIGJlY2F1c2UgLmlkYXRhJDQgaXMgbWlzc2luZyIKLSsjOiBwZWlnZW4uYzo0Mzk3IHBlcGlnZW4uYzo0Mzk3IHBleDY0aWdlbi5jOjQzOTcKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5WzFdIGJlY2F1c2UgLmlkYXRhJDQgaXMgbWlzc2luZyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0NDE2IHBlcGlnZW4uYzo0NDE2IHBleDY0aWdlbi5jOjQ0MTYKLS1tc2dpZCAiJUI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5WzEyXSBiZWNhdXNlIC5pZGF0YSQ1IGlzIG1pc3NpbmciCi0rIzogcGVpZ2VuLmM6NDQxOCBwZXBpZ2VuLmM6NDQxOCBwZXg2NGlnZW4uYzo0NDE4Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVsxMl0gYmVjYXVzZSAuaWRhdGEkNSBpcyBtaXNzaW5nIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjQ0MzYgcGVwaWdlbi5jOjQ0MzYgcGV4NjRpZ2VuLmM6NDQzNgotKyM6IHBlaWdlbi5jOjQ0MzggcGVwaWdlbi5jOjQ0MzggcGV4NjRpZ2VuLmM6NDQzOAotKyMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLS0iJUI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5W1BFX0lNUE9SVF9BRERSRVNTX1RBQkxFICgxMildIGJlY2F1c2UgLiIKLSsiJXBCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVtQRV9JTVBPUlRfQUREUkVTU19UQUJMRSAoMTIpXSBiZWNhdXNlIC4iCi0gImlkYXRhJDYgaXMgbWlzc2luZyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0NDc4IHBlcGlnZW4uYzo0NDc4IHBleDY0aWdlbi5jOjQ0NzgKLSsjOiBwZWlnZW4uYzo0NDgwIHBlcGlnZW4uYzo0NDgwIHBleDY0aWdlbi5jOjQ0ODAKLSsjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0tIiVCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVtQRV9JTVBPUlRfQUREUkVTU19UQUJMRSgxMildIGJlY2F1c2UgLiIKLSsiJXBCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVtQRV9JTVBPUlRfQUREUkVTU19UQUJMRSgxMildIGJlY2F1c2UgLiIKLSAiaWRhdGEkNiBpcyBtaXNzaW5nIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjQ1MDMgcGVwaWdlbi5jOjQ1MDMgcGV4NjRpZ2VuLmM6NDUwMwotLW1zZ2lkICIlQjogdW5hYmxlIHRvIGZpbGwgaW4gRGF0YURpY3Rpb25hcnlbOV0gYmVjYXVzZSBfX3Rsc191c2VkIGlzIG1pc3NpbmciCi0rIzogcGVpZ2VuLmM6NDUwNSBwZXBpZ2VuLmM6NDUwNSBwZXg2NGlnZW4uYzo0NTA1Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVs5XSBiZWNhdXNlIF9fdGxzX3VzZWQgaXMgbWlzc2luZyIKLSBtc2dzdHIgIiIKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsNSArMSw5IEBACi0gMjAxOC0wNC0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsgICAgICAgUFIgMjMxMTAKLSsgICAgICAgKiBwZVhYaWdlbi5jIChfYmZkX1hYX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogQ2hlY2sgZm9yCi0rICAgICAgIGEgbmVnYXRpdmUgUEVfREVCVUdfREFUQSBzaXplIGJlZm9yZSBpdGVyYXRpbmcgb3ZlciB0aGUgZGVidWcgZGF0YS4KLSsKLSAgICAgICAgUFIgMjMxMTMKLSAgICAgICAgKiBlbGYuYyAoaWdub3JlX3NlY3Rpb25fc3ltKTogQ2hlY2sgZm9yIHRoZSBvdXRwdXRfc2VjdGlvbiBwb2ludGVyCi0gICAgICAgIGJlaW5nIE5VTEwgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDUzNS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwNTM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYThmYmQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwNTM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSBkYjBjMzA5ZjQwMTFjYTk0YTRhYmM4NDU4ZTI3ZjM3MzRkYWI5MmFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNCBBcHIgMjAxOCAxNjo1NzowNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYW4gaWxsZWdhbCBtZW1vcnkgYWNjZXNzIHdoZW4gdHJ5aW5nIHRvIGNvcHkgYW4gRUxGCi0gYmluYXJ5IHdpdGggY29ycnVwdCBzZWN0aW9uIHN5bWJvbHMuCi0KLQlQUiAyMzExMwotCSogZWxmLmMgKGlnbm9yZV9zZWN0aW9uX3N5bSk6IENoZWNrIGZvciB0aGUgb3V0cHV0X3NlY3Rpb24gcG9pbnRlcgotCWJlaW5nIE5VTEwgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTgtMTA1MzUKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNCArKysrCi0gYmZkL2VsZi5jICAgICB8IDkgKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL2VsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZi5jCi0rKysgZ2l0L2JmZC9lbGYuYwotQEAgLTQwMjEsMTUgKzQwMjEsMjIgQEAgaWdub3JlX3NlY3Rpb25fc3ltIChiZmQgKmFiZmQsIGFzeW1ib2wgKgotIHsKLSAgIGVsZl9zeW1ib2xfdHlwZSAqdHlwZV9wdHI7Ci0gCi0rICBpZiAoc3ltID09IE5VTEwpCi0rICAgIHJldHVybiBGQUxTRTsKLSsKLSAgIGlmICgoc3ltLT5mbGFncyAmIEJTRl9TRUNUSU9OX1NZTSkgPT0gMCkKLSAgICAgcmV0dXJuIEZBTFNFOwotIAotKyAgaWYgKHN5bS0+c2VjdGlvbiA9PSBOVUxMKQotKyAgICByZXR1cm4gVFJVRTsKLSsKLSAgIHR5cGVfcHRyID0gZWxmX3N5bWJvbF9mcm9tIChhYmZkLCBzeW0pOwotICAgcmV0dXJuICgodHlwZV9wdHIgIT0gTlVMTAotIAkgICAmJiB0eXBlX3B0ci0+aW50ZXJuYWxfZWxmX3N5bS5zdF9zaG5keCAhPSAwCi0gCSAgICYmIGJmZF9pc19hYnNfc2VjdGlvbiAoc3ltLT5zZWN0aW9uKSkKLSAJICB8fCAhKHN5bS0+c2VjdGlvbi0+b3duZXIgPT0gYWJmZAotLQkgICAgICAgfHwgKHN5bS0+c2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPm93bmVyID09IGFiZmQKLSsJICAgICAgIHx8IChzeW0tPnNlY3Rpb24tPm91dHB1dF9zZWN0aW9uICE9IE5VTEwKLSsJCSAgICYmIHN5bS0+c2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24tPm93bmVyID09IGFiZmQKLSAJCSAgICYmIHN5bS0+c2VjdGlvbi0+b3V0cHV0X29mZnNldCA9PSAwKQotIAkgICAgICAgfHwgYmZkX2lzX2Fic19zZWN0aW9uIChzeW0tPnNlY3Rpb24pKSk7Ci0gfQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE4LTA0LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMzExMwotKyAgICAgICAqIGVsZi5jIChpZ25vcmVfc2VjdGlvbl9zeW0pOiBDaGVjayBmb3IgdGhlIG91dHB1dF9zZWN0aW9uIHBvaW50ZXIKLSsgICAgICAgYmVpbmcgTlVMTCBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4KLSsKLSAyMDE4LTA0LTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiAyMzA2NQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTczNTgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xNzM1OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTM1MDkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTczNTgucGF0Y2gKQEAgLTAsMCArMSwxNDQgQEAKK0Zyb20gMzA4MzgxMzI5OTdlNmEzY2ZlM2VjMTFjNThiMzJiMjJmNmY2YjEwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIwIFNlcCAyMDE4IDE1OjI5OjE3ICswOTMwCitTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAyMzY4NiwgdHdvIHNlZ21lbnQgZmF1bHRzIGluIG5tCisKK0ZpeGVzIHRoZSBidWdzIGV4cG9zZWQgYnkgdGhlIHRlc3RjYXNlcyBpbiB0aGUgUFIsIHBsdXMgdHdvIG1vcmUgYnVncworSSBub3RpY2VkIHdoZW4gbG9va2luZyBhdCBfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZS4KKworCVBSIDIzNjg2CisJKiBkd2FyZjIuYyAocmVhZF9zZWN0aW9uKTogRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1hbGxvYworCSIoYmZkX3NpemVfdHlwZSkgLTEiLgorCSogc3ltcy5jIChfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSk6IEJvdW5kcyBjaGVjaworCWZ1bmN0aW9uX25hbWUuICBCb3VuZHMgY2hlY2sgcmVsb2MgYWRkcmVzcy4gIEZvcm1hdHRpbmcuICBFbnN1cmUKKwkuc3RhYnN0ciB6ZXJvIHRlcm1pbmF0ZWQuCitDVkU6IENWRS0yMDE4LTE3MzU4IGFuZCBDVkUtMjAxOC0xNzM1OQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9DaGFuZ2VMb2cgfCAgOSArKysrKysrKysKKyBiZmQvZHdhcmYyLmMgIHwgIDkgKysrKysrKystCisgYmZkL3N5bXMuYyAgICB8IDIyICsrKysrKysrKysrKysrKystLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZworaW5kZXggMDRjMGMyYS4uZmVmNTQ3OSAxMDA2NDQKKy0tLSBhL2JmZC9DaGFuZ2VMb2cKKysrKyBiL2JmZC9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMTIgQEAKKysyMDE4LTA5LTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KKysKKysJUFIgMjM2ODYKKysJKiBkd2FyZjIuYyAocmVhZF9zZWN0aW9uKTogRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1hbGxvYworKwkiKGJmZF9zaXplX3R5cGUpIC0xIi4KKysJKiBzeW1zLmMgKF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lKTogQm91bmRzIGNoZWNrCisrCWZ1bmN0aW9uX25hbWUuICBCb3VuZHMgY2hlY2sgcmVsb2MgYWRkcmVzcy4gIEZvcm1hdHRpbmcuICBFbnN1cmUKKysJLnN0YWJzdHIgemVybyB0ZXJtaW5hdGVkLgorKworIDIwMTgtMDgtMTIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKyAKKyAJUFIgbGQvMjM0MjgKK2RpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKK2luZGV4IDNiMjg4NTUuLjc3YTczNjggMTAwNjQ0CistLS0gYS9iZmQvZHdhcmYyLmMKKysrKyBiL2JmZC9kd2FyZjIuYworQEAgLTUyNyw2ICs1MjcsNyBAQCByZWFkX3NlY3Rpb24gKGJmZCAqCSAgICAgIGFiZmQsCisgICBhc2VjdGlvbiAqbXNlYzsKKyAgIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSA9IHNlYy0+dW5jb21wcmVzc2VkX25hbWU7CisgICBiZmRfYnl0ZSAqY29udGVudHMgPSAqc2VjdGlvbl9idWZmZXI7CisrICBiZmRfc2l6ZV90eXBlIGFtdDsKKyAKKyAgIC8qIFRoZSBzZWN0aW9uIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZWFkLiAgKi8KKyAgIGlmIChjb250ZW50cyA9PSBOVUxMKQorQEAgLTU0OSw3ICs1NTAsMTMgQEAgcmVhZF9zZWN0aW9uIChiZmQgKgkgICAgICBhYmZkLAorICAgICAgICpzZWN0aW9uX3NpemUgPSBtc2VjLT5yYXdzaXplID8gbXNlYy0+cmF3c2l6ZSA6IG1zZWMtPnNpemU7CisgICAgICAgLyogUGFyYW5vaWEgLSBhbGxvYyBvbmUgZXh0cmEgc28gdGhhdCB3ZSBjYW4gbWFrZSBzdXJlIGEgc3RyaW5nCisgCSBzZWN0aW9uIGlzIE5VTCB0ZXJtaW5hdGVkLiAgKi8KKy0gICAgICBjb250ZW50cyA9IChiZmRfYnl0ZSAqKSBiZmRfbWFsbG9jICgqc2VjdGlvbl9zaXplICsgMSk7CisrICAgICAgYW10ID0gKnNlY3Rpb25fc2l6ZSArIDE7CisrICAgICAgaWYgKGFtdCA9PSAwKQorKwl7CisrCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX25vX21lbW9yeSk7CisrCSAgcmV0dXJuIEZBTFNFOworKwl9CisrICAgICAgY29udGVudHMgPSAoYmZkX2J5dGUgKikgYmZkX21hbGxvYyAoYW10KTsKKyAgICAgICBpZiAoY29udGVudHMgPT0gTlVMTCkKKyAJcmV0dXJuIEZBTFNFOworICAgICAgIGlmIChzeW1zCitkaWZmIC0tZ2l0IGEvYmZkL3N5bXMuYyBiL2JmZC9zeW1zLmMKK2luZGV4IDE4NzA3MWYuLmUwOTY0MGEgMTAwNjQ0CistLS0gYS9iZmQvc3ltcy5jCisrKysgYi9iZmQvc3ltcy5jCitAQCAtMTAzNSw2ICsxMDM1LDEwIEBAIF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCisgCQkJCQkgMCwgc3Ryc2l6ZSkpCisgCXJldHVybiBGQUxTRTsKKyAKKysgICAgICAvKiBTdGFiIHN0cmluZ3Mgb3VnaHQgdG8gYmUgbnVsIHRlcm1pbmF0ZWQuICBFbnN1cmUgdGhlIGxhc3Qgb25lCisrCSBpcywgdG8gcHJldmVudCBydW5uaW5nIG9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICAqLworKyAgICAgIGluZm8tPnN0cnNbc3Ryc2l6ZSAtIDFdID0gMDsKKysKKyAgICAgICAvKiBJZiB0aGlzIGlzIGEgcmVsb2NhdGFibGUgb2JqZWN0IGZpbGUsIHdlIGhhdmUgdG8gcmVsb2NhdGUKKyAJIHRoZSBlbnRyaWVzIGluIC5zdGFiLiAgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNpbXBsZSAzMiBiaXQKKyAJIHJlbG9jYXRpb25zIGFnYWluc3Qgc3ltYm9scyBkZWZpbmVkIGluIHRoaXMgb2JqZWN0IGZpbGUsIHNvCitAQCAtMTA3Myw3ICsxMDc3LDggQEAgX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUgKGJmZCAqYWJmZCwKKyAJCSAgfHwgci0+aG93dG8tPmJpdHNpemUgIT0gMzIKKyAJCSAgfHwgci0+aG93dG8tPnBjX3JlbGF0aXZlCisgCQkgIHx8IHItPmhvd3RvLT5iaXRwb3MgIT0gMAorLQkJICB8fCByLT5ob3d0by0+ZHN0X21hc2sgIT0gMHhmZmZmZmZmZikKKysJCSAgfHwgci0+aG93dG8tPmRzdF9tYXNrICE9IDB4ZmZmZmZmZmYKKysJCSAgfHwgci0+YWRkcmVzcyAqIGJmZF9vY3RldHNfcGVyX2J5dGUgKGFiZmQpICsgNCA+IHN0YWJzaXplKQorIAkJeworIAkJICBfYmZkX2Vycm9yX2hhbmRsZXIKKyAJCSAgICAoXygidW5zdXBwb3J0ZWQgLnN0YWIgcmVsb2NhdGlvbiIpKTsKK0BAIC0xMTk1LDcgKzEyMDAsOCBAQCBfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAorIAkJeworIAkJICBudWxfZnVuID0gc3RhYjsKKyAJCSAgbnVsX3N0ciA9IHN0cjsKKy0JCSAgaWYgKGZpbGVfbmFtZSA+PSAoY2hhciAqKSBpbmZvLT5zdHJzICsgc3Ryc2l6ZSB8fCBmaWxlX25hbWUgPCAoY2hhciAqKSBzdHIpCisrCQkgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUKKysJCSAgICAgIHx8IGZpbGVfbmFtZSA8IChjaGFyICopIHN0cikKKyAJCSAgICBmaWxlX25hbWUgPSBOVUxMOworIAkJICBpZiAoc3RhYiArIFNUQUJTSVpFICsgVFlQRU9GRiA8IGluZm8tPnN0YWJzICsgc3RhYnNpemUKKyAJCSAgICAgICYmICooc3RhYiArIFNUQUJTSVpFICsgVFlQRU9GRikgPT0gKGJmZF9ieXRlKSBOX1NPKQorQEAgLTEyMDYsNyArMTIxMiw4IEBAIF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCisgCQkgICAgICBkaXJlY3RvcnlfbmFtZSA9IGZpbGVfbmFtZTsKKyAJCSAgICAgIGZpbGVfbmFtZSA9ICgoY2hhciAqKSBzdHIKKyAJCQkJICAgKyBiZmRfZ2V0XzMyIChhYmZkLCBzdGFiICsgU1RSRFhPRkYpKTsKKy0JCSAgICAgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUgfHwgZmlsZV9uYW1lIDwgKGNoYXIgKikgc3RyKQorKwkJICAgICAgaWYgKGZpbGVfbmFtZSA+PSAoY2hhciAqKSBpbmZvLT5zdHJzICsgc3Ryc2l6ZQorKwkJCSAgfHwgZmlsZV9uYW1lIDwgKGNoYXIgKikgc3RyKQorIAkJCWZpbGVfbmFtZSA9IE5VTEw7CisgCQkgICAgfQorIAkJfQorQEAgLTEyMTcsNyArMTIyNCw4IEBAIF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCisgCSAgICAgIGZpbGVfbmFtZSA9IChjaGFyICopIHN0ciArIGJmZF9nZXRfMzIgKGFiZmQsIHN0YWIgKyBTVFJEWE9GRik7CisgCSAgICAgIC8qIFBSIDE3NTEyOiBmaWxlOiAwYzY4MGExZi4gICovCisgCSAgICAgIC8qIFBSIDE3NTEyOiBmaWxlOiA1ZGE4YWVjNC4gICovCistCSAgICAgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUgfHwgZmlsZV9uYW1lIDwgKGNoYXIgKikgc3RyKQorKwkgICAgICBpZiAoZmlsZV9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplCisrCQkgIHx8IGZpbGVfbmFtZSA8IChjaGFyICopIHN0cikKKyAJCWZpbGVfbmFtZSA9IE5VTEw7CisgCSAgICAgIGJyZWFrOworIAorQEAgLTEyMjYsNyArMTIzNCw4IEBAIF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCisgCSAgICAgIGZ1bmN0aW9uX25hbWUgPSAoY2hhciAqKSBzdHIgKyBiZmRfZ2V0XzMyIChhYmZkLCBzdGFiICsgU1RSRFhPRkYpOworIAkgICAgICBpZiAoZnVuY3Rpb25fbmFtZSA9PSAoY2hhciAqKSBzdHIpCisgCQljb250aW51ZTsKKy0JICAgICAgaWYgKGZ1bmN0aW9uX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUpCisrCSAgICAgIGlmIChmdW5jdGlvbl9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplCisrCQkgIHx8IGZ1bmN0aW9uX25hbWUgPCAoY2hhciAqKSBzdHIpCisgCQlmdW5jdGlvbl9uYW1lID0gTlVMTDsKKyAKKyAJICAgICAgbnVsX2Z1biA9IE5VTEw7CitAQCAtMTMzNSw3ICsxMzQ0LDggQEAgX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUgKGJmZCAqYWJmZCwKKyAJICBpZiAodmFsIDw9IG9mZnNldCkKKyAJICAgIHsKKyAJICAgICAgZmlsZV9uYW1lID0gKGNoYXIgKikgc3RyICsgYmZkX2dldF8zMiAoYWJmZCwgc3RhYiArIFNUUkRYT0ZGKTsKKy0JICAgICAgaWYgKGZpbGVfbmFtZSA+PSAoY2hhciAqKSBpbmZvLT5zdHJzICsgc3Ryc2l6ZSB8fCBmaWxlX25hbWUgPCAoY2hhciAqKSBzdHIpCisrCSAgICAgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUKKysJCSAgfHwgZmlsZV9uYW1lIDwgKGNoYXIgKikgc3RyKQorIAkJZmlsZV9uYW1lID0gTlVMTDsKKyAJICAgICAgKnBsaW5lID0gMDsKKyAJICAgIH0KKy0tIAorMi45LjMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE3MzYwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTczNjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VmMTBhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE3MzYwLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gY2Y5M2U5YzJjZjhmOGIyNTY2ZjhmYzg2ZTk2MTU5MmI1MWI1OTgwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIwIFNlcCAyMDE4IDE4OjIzOjE3ICswOTMwCitTdWJqZWN0OiBbUEFUQ0hdIFBSMjM2ODUsIGJ1ZmZlciBvdmVyZmxvdworCisJUFIgMjM2ODUKKwkqIHBlWFhpZ2VuLmMgKHBlX3ByaW50X2VkYXRhKTogQ29ycmVjdCBleHBvcnQgYWRkcmVzcyB0YWJsZQorCW92ZXJmbG93IGNoZWNrcy4gIENoZWNrIGRhdGFvZmYgYWdhaW5zdCBzZWN0aW9uIHNpemUgdG9vLgorCitDVkU6IENWRS0yMDE4LTE3MzYwCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmZkL0NoYW5nZUxvZyAgfCAgNiArKysrKysKKyBiZmQvcGVYWGlnZW4uYyB8IDExICsrKysrKy0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKK2luZGV4IGZlZjU0NzkuLjgxYjllNTYgMTAwNjQ0CistLS0gYS9iZmQvQ2hhbmdlTG9nCisrKysgYi9iZmQvQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDExIEBACisgMjAxOC0wOS0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisgCisrCVBSIDIzNjg1CisrCSogcGVYWGlnZW4uYyAocGVfcHJpbnRfZWRhdGEpOiBDb3JyZWN0IGV4cG9ydCBhZGRyZXNzIHRhYmxlCisrCW92ZXJmbG93IGNoZWNrcy4gIENoZWNrIGRhdGFvZmYgYWdhaW5zdCBzZWN0aW9uIHNpemUgdG9vLgorKworKzIwMTgtMDktMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorKworIAlQUiAyMzY4NgorIAkqIGR3YXJmMi5jIChyZWFkX3NlY3Rpb24pOiBFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gbWFsbG9jCisgCSIoYmZkX3NpemVfdHlwZSkgLTEiLgorZGlmZiAtLWdpdCBhL2JmZC9wZVhYaWdlbi5jIGIvYmZkL3BlWFhpZ2VuLmMKK2luZGV4IDU5OGYyY2EuLjE2NDVlZjQgMTAwNjQ0CistLS0gYS9iZmQvcGVYWGlnZW4uYworKysrIGIvYmZkL3BlWFhpZ2VuLmMKK0BAIC0xNjYxLDcgKzE2NjEsOCBAQCBwZV9wcmludF9lZGF0YSAoYmZkICogYWJmZCwgdm9pZCAqIHZmaWxlKQorIAorICAgICAgIGRhdGFvZmYgPSBhZGRyIC0gc2VjdGlvbi0+dm1hOworICAgICAgIGRhdGFzaXplID0gZXh0cmEtPkRhdGFEaXJlY3RvcnlbUEVfRVhQT1JUX1RBQkxFXS5TaXplOworLSAgICAgIGlmIChkYXRhc2l6ZSA+IHNlY3Rpb24tPnNpemUgLSBkYXRhb2ZmKQorKyAgICAgIGlmIChkYXRhb2ZmID4gc2VjdGlvbi0+c2l6ZQorKwkgIHx8IGRhdGFzaXplID4gc2VjdGlvbi0+c2l6ZSAtIGRhdGFvZmYpCisgCXsKKyAJICBmcHJpbnRmIChmaWxlLAorIAkJICAgXygiXG5UaGVyZSBpcyBhbiBleHBvcnQgdGFibGUgaW4gJXMsIGJ1dCBpdCBkb2VzIG5vdCBmaXQgaW50byB0aGF0IHNlY3Rpb25cbiIpLAorQEAgLTE3NzgsMTEgKzE3NzksMTEgQEAgcGVfcHJpbnRfZWRhdGEgKGJmZCAqIGFiZmQsIHZvaWQgKiB2ZmlsZSkKKyAJICBlZHQuYmFzZSk7CisgCisgICAvKiBQUiAxNzUxMjogSGFuZGxlIGNvcnJ1cHQgUEUgYmluYXJpZXMuICAqLworLSAgaWYgKGVkdC5lYXRfYWRkciArIChlZHQubnVtX2Z1bmN0aW9ucyAqIDQpIC0gYWRqID49IGRhdGFzaXplCisrICAvKiBQUiAxNzUxMiBmaWxlOiAxNDAtMTY1MDE4LTAuMDA0LiAgKi8KKysgIGlmIChlZHQuZWF0X2FkZHIgLSBhZGogPj0gZGF0YXNpemUKKyAgICAgICAvKiBQUiAxNzUxMjogZmlsZTogMDkyYjE4MjkgKi8KKy0gICAgICB8fCAoZWR0Lm51bV9mdW5jdGlvbnMgKiA0KSA8IGVkdC5udW1fZnVuY3Rpb25zCistICAgICAgLyogUFIgMTc1MTIgZmlsZTogMTQwLTE2NTAxOC0wLjAwNC4gICovCistICAgICAgfHwgZGF0YSArIGVkdC5lYXRfYWRkciAtIGFkaiA8IGRhdGEpCisrICAgICAgfHwgKGVkdC5udW1fZnVuY3Rpb25zICsgMSkgKiA0IDwgZWR0Lm51bV9mdW5jdGlvbnMKKysgICAgICB8fCBlZHQuZWF0X2FkZHIgLSBhZGogKyAoZWR0Lm51bV9mdW5jdGlvbnMgKyAxKSAqIDQgPiBkYXRhc2l6ZSkKKyAgICAgZnByaW50ZiAoZmlsZSwgXygiXHRJbnZhbGlkIEV4cG9ydCBBZGRyZXNzIFRhYmxlIHJ2YSAoMHglbHgpIG9yIGVudHJ5IGNvdW50ICgweCVseClcbiIpLAorIAkgICAgIChsb25nKSBlZHQuZWF0X2FkZHIsCisgCSAgICAgKGxvbmcpIGVkdC5udW1fZnVuY3Rpb25zKTsKKy0tIAorMi45LjMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4MzA5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTgzMDkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI0MGEzZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4MzA5LnBhdGNoCkBAIC0wLDAgKzEsMzA4IEBACitGcm9tIDA5MzBjYjMwMjFiODA3OGIzNGNmMjE2ZTc5ZWI4NjA4ZDAxNzg2NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMyBPY3QgMjAxOCAyMjowMzowMiArMTAzMAorU3ViamVjdDogW1BBVENIXSBfYmZkX2NsZWFyX2NvbnRlbnRzIGJvdW5kcyBjaGVja2luZworCitUaGlzIFBSIHNob3dzIGEgZnV6emVkIGJpbmFyeSB0cmlnZ2VyaW5nIGEgc2VnZmF1bHQgdmlhIGEgYmFkCityZWxvY2F0aW9uIGluIC5kZWJ1Z19saW5lLiAgSXQgdHVybnMgb3V0IHRoYXQgdW5saWtlIG5vcm1hbAorcmVsb2NhdGlvbnMgYXBwbGllZCB0byBhIHNlY3Rpb24sIHRoZSBsaW5rZXIgYXBwbGllcyB0aG9zZSB3aXRoCitzeW1ib2xzIGZyb20gZGlzY2FyZGVkIHNlY3Rpb25zIHZpYSBfYmZkX2NsZWFyX2NvbnRlbnRzIHdpdGhvdXQKK2NoZWNraW5nIHRoYXQgdGhlIHJlbG9jYXRpb24gaXMgd2l0aGluIHRoZSBzZWN0aW9uIGJvdW5kcy4gIFRoZSBzYW1lCit0aGluZyBub3cgaGFwcGVucyB3aGVuIHJlYWRpbmcgZGVidWcgc2VjdGlvbnMgc2luY2UgY29tbWl0CithNGNkOTQ3YWNhMjMsIHRoZSBQUjIzNDI1IGZpeC4KKworCVBSIDIzNzcwCisJUFIgMjM0MjUKKwkqIHJlbG9jLmMgKF9iZmRfY2xlYXJfY29udGVudHMpOiBSZXBsYWNlICJsb2NhdGlvbiIgcGFyYW0gd2l0aAorCSJidWYiIGFuZCAib2ZmIi4gIEJvdW5kcyBjaGVjayAib2ZmIi4gIFJldHVybiBzdGF0dXMuCisJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfZ2VuZXJpY19yZWxvY2F0ZV9zZWN0aW9uKTogVXBkYXRlCisJX2JmZF9jbGVhcl9jb250ZW50cyBjYWxsLgorCSogZWxmLWJmZC5oIChSRUxPQ19BR0FJTlNUX0RJU0NBUkRFRF9TRUNUSU9OKTogTGlrZXdpc2UuCisJKiBlbGYzMi1hcmMuYyAoZWxmX2FyY19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLW1ldGFnLmMgKG1ldGFnX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KKwkqIGVsZjMyLW5kczMyLmMgKG5kczMyX2VsZl9nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVudHMpOiBMaWtld2lzZS4KKwkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjMyLXZpc2l1bS5jICh2aXNpdW1fZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjY0LXBwYy5jIChwcGM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmNjQteDg2LTY0LmMgKihlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGxpYmJmZC1pbi5oIChfYmZkX2NsZWFyX2NvbnRlbnRzKTogVXBkYXRlIHByb3RvdHlwZS4KKwkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE4LTE4NjA1CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmZkL0NoYW5nZUxvZyAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyBiZmQvY29mZmxpbmsuYyAgICAgfCAgMiArLQorIGJmZC9lbGYtYmZkLmggICAgICB8ICAyICstCisgYmZkL2VsZjMyLWFyYy5jICAgIHwgIDIgKy0KKyBiZmQvZWxmMzItaTM4Ni5jICAgfCAgMiArLQorIGJmZC9lbGYzMi1tZXRhZy5jICB8ICAyICstCisgYmZkL2VsZjMyLW5kczMyLmMgIHwgIDggKysrKy0tLS0KKyBiZmQvZWxmMzItcHBjLmMgICAgfCAgMiArLQorIGJmZC9lbGYzMi12aXNpdW0uYyB8ICAyICstCisgYmZkL2VsZjY0LXBwYy5jICAgIHwgIDIgKy0KKyBiZmQvZWxmNjQteDg2LTY0LmMgfCAgMiArLQorIGJmZC9saWJiZmQtaW4uaCAgICB8ICA0ICsrLS0KKyBiZmQvbGliYmZkLmggICAgICAgfCAgNCArKy0tCisgYmZkL3JlbG9jLmMgICAgICAgIHwgMTkgKysrKysrKysrKysrKy0tLS0tLQorIDE0IGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKK2luZGV4IDY4YzFmZjY2NWIuLmU5Njk2ZWUzMTQgMTAwNjQ0CistLS0gYS9iZmQvQ2hhbmdlTG9nCisrKysgYi9iZmQvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDIzIEBACisrMjAxOC0xMC0xMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisrCisrCVBSIDIzNzcwCisrCVBSIDIzNDI1CisrCSogcmVsb2MuYyAoX2JmZF9jbGVhcl9jb250ZW50cyk6IFJlcGxhY2UgImxvY2F0aW9uIiBwYXJhbSB3aXRoCisrCSJidWYiIGFuZCAib2ZmIi4gIEJvdW5kcyBjaGVjayAib2ZmIi4gIFJldHVybiBzdGF0dXMuCisrCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2dlbmVyaWNfcmVsb2NhdGVfc2VjdGlvbik6IFVwZGF0ZQorKwlfYmZkX2NsZWFyX2NvbnRlbnRzIGNhbGwuCisrCSogZWxmLWJmZC5oIChSRUxPQ19BR0FJTlNUX0RJU0NBUkRFRF9TRUNUSU9OKTogTGlrZXdpc2UuCisrCSogZWxmMzItYXJjLmMgKGVsZl9hcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorKwkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorKwkqIGVsZjMyLW1ldGFnLmMgKG1ldGFnX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KKysJKiBlbGYzMi1uZHMzMi5jIChuZHMzMl9lbGZfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzKTogTGlrZXdpc2UuCisrCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorKwkqIGVsZjMyLXZpc2l1bS5jICh2aXNpdW1fZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKysJKiBlbGY2NC1wcGMuYyAocHBjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKysJKiBlbGY2NC14ODYtNjQuYyAqKGVsZl94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorKwkqIGxpYmJmZC1pbi5oIChfYmZkX2NsZWFyX2NvbnRlbnRzKTogVXBkYXRlIHByb3RvdHlwZS4KKysJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KKysKKyAyMDE4LTA5LTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KKyAKKyAJUFIgMjM2ODUKK2RpZmYgLS1naXQgYS9iZmQvY29mZmxpbmsuYyBiL2JmZC9jb2ZmbGluay5jCitpbmRleCAyZjczZjcyZTMxLi5iN2VhNjliN2Y5IDEwMDY0NAorLS0tIGEvYmZkL2NvZmZsaW5rLmMKKysrKyBiL2JmZC9jb2ZmbGluay5jCitAQCAtMzA4MCw3ICszMDgwLDcgQEAgX2JmZF9jb2ZmX2dlbmVyaWNfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAorICAgICAgIGlmIChzZWMgIT0gTlVMTCAmJiBkaXNjYXJkZWRfc2VjdGlvbiAoc2VjKSkKKyAJeworIAkgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJICAgICAgIGNvbnRlbnRzICsgKHJlbC0+cl92YWRkciAtIGlucHV0X3NlY3Rpb24tPnZtYSkpOworKwkJCSAgICAgICBjb250ZW50cywgcmVsLT5yX3ZhZGRyIC0gaW5wdXRfc2VjdGlvbi0+dm1hKTsKKyAJICBjb250aW51ZTsKKyAJfQorIAorZGlmZiAtLWdpdCBhL2JmZC9lbGYtYmZkLmggYi9iZmQvZWxmLWJmZC5oCitpbmRleCBjZjI1NmY3MGUwLi4zMzc0ZjQxMWY5IDEwMDY0NAorLS0tIGEvYmZkL2VsZi1iZmQuaAorKysrIGIvYmZkL2VsZi1iZmQuaAorQEAgLTI4MTEsNyArMjgxMSw3IEBAIGV4dGVybiBhc2VjdGlvbiBfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbjsKKyAgIHsJCQkJCQkJCQlcCisgICAgIGludCBpXzsJCQkJCQkJCVwKKyAgICAgX2JmZF9jbGVhcl9jb250ZW50cyAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwJCVwKKy0JCQkgY29udGVudHMgKyByZWxbaW5kZXhdLnJfb2Zmc2V0KTsJCVwKKysJCQkgY29udGVudHMsIHJlbFtpbmRleF0ucl9vZmZzZXQpOwkJXAorIAkJCQkJCQkJCVwKKyAgICAgaWYgKGJmZF9saW5rX3JlbG9jYXRhYmxlIChpbmZvKQkJCQkJXAorIAkmJiAoaW5wdXRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSkJCQlcCitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWFyYy5jIGIvYmZkL2VsZjMyLWFyYy5jCitpbmRleCA3YTFiMzA0MmFlLi4zMGY0N2E1YjIyIDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLWFyYy5jCisrKysgYi9iZmQvZWxmMzItYXJjLmMKK0BAIC0xNTQ5LDcgKzE1NDksNyBAQCBlbGZfYXJjX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqCQkJICBvdXRwdXRfYmZkLAorICAgICAgIGlmIChzZWMgIT0gTlVMTCAmJiBkaXNjYXJkZWRfc2VjdGlvbiAoc2VjKSkKKyAJeworIAkgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJICAgICAgIGNvbnRlbnRzICsgcmVsLT5yX29mZnNldCk7CisrCQkJICAgICAgIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0KTsKKyAJICByZWwtPnJfaW5mbyA9IDA7CisgCSAgcmVsLT5yX2FkZGVuZCA9IDA7CisgCitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLWkzODYuYyBiL2JmZC9lbGYzMi1pMzg2LmMKK2luZGV4IDQ5Nzk3ZGNiZmEuLjE3NzQ3MTc3N2QgMTAwNjQ0CistLS0gYS9iZmQvZWxmMzItaTM4Ni5jCisrKysgYi9iZmQvZWxmMzItaTM4Ni5jCitAQCAtMjE5Nyw3ICsyMTk3LDcgQEAgZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAorICAgICAgIGlmIChzZWMgIT0gTlVMTCAmJiBkaXNjYXJkZWRfc2VjdGlvbiAoc2VjKSkKKyAJeworIAkgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJICAgICAgIGNvbnRlbnRzICsgcmVsLT5yX29mZnNldCk7CisrCQkJICAgICAgIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0KTsKKyAJICB3cmVsLT5yX29mZnNldCA9IHJlbC0+cl9vZmZzZXQ7CisgCSAgd3JlbC0+cl9pbmZvID0gMDsKKyAJICB3cmVsLT5yX2FkZGVuZCA9IDA7CitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLW1ldGFnLmMgYi9iZmQvZWxmMzItbWV0YWcuYworaW5kZXggZWZlOTViZGRmZi4uN2Y5NjI0NmU1ZCAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi1tZXRhZy5jCisrKysgYi9iZmQvZWxmMzItbWV0YWcuYworQEAgLTEzOTYsNyArMTM5Niw3IEBAIG1ldGFnX2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvLAorIAkJCQkJICAgICAgcmVsLCByZWxlbmQsIGhvd3RvLCBjb250ZW50cykgXAorICAgewkJCQkJCQkJCVwKKyAgICAgX2JmZF9jbGVhcl9jb250ZW50cyAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwJCVwKKy0JCQkgY29udGVudHMgKyByZWwtPnJfb2Zmc2V0KTsJCQlcCisrCQkJIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0KTsJCQlcCisgCQkJCQkJCQkJXAorICAgICBpZiAoYmZkX2xpbmtfcmVsb2NhdGFibGUgKGluZm8pCQkJCQlcCisgCSYmIChpbnB1dF9zZWN0aW9uLT5mbGFncyAmIFNFQ19ERUJVR0dJTkcpKQkJCVwKK2RpZmYgLS1naXQgYS9iZmQvZWxmMzItbmRzMzIuYyBiL2JmZC9lbGYzMi1uZHMzMi5jCitpbmRleCAwZDg2ZTViODY1Li4xODRjZjMyMGY3IDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLW5kczMyLmMKKysrKyBiL2JmZC9lbGYzMi1uZHMzMi5jCitAQCAtMTI1ODIsMTQgKzEyNTgyLDE0IEBAIG5kczMyX2VsZl9nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVudHMgKGJmZCAqYWJmZCwKKyAJICBzeW1ib2wgPSAqKCpwYXJlbnQpLT5zeW1fcHRyX3B0cjsKKyAJICBpZiAoc3ltYm9sLT5zZWN0aW9uICYmIGRpc2NhcmRlZF9zZWN0aW9uIChzeW1ib2wtPnNlY3Rpb24pKQorIAkgICAgeworLQkgICAgICBiZmRfYnl0ZSAqcDsKKysJICAgICAgYmZkX3ZtYSBvZmY7CisgCSAgICAgIHN0YXRpYyByZWxvY19ob3d0b190eXBlIG5vbmVfaG93dG8KKyAJCT0gSE9XVE8gKDAsIDAsIDAsIDAsIEZBTFNFLCAwLCBjb21wbGFpbl9vdmVyZmxvd19kb250LCBOVUxMLAorIAkJCSAidW51c2VkIiwgRkFMU0UsIDAsIDAsIEZBTFNFKTsKKyAKKy0JICAgICAgcCA9IGRhdGEgKyAoKnBhcmVudCktPmFkZHJlc3MgKiBiZmRfb2N0ZXRzX3Blcl9ieXRlIChpbnB1dF9iZmQpOworLQkgICAgICBfYmZkX2NsZWFyX2NvbnRlbnRzICgoKnBhcmVudCktPmhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJCSAgIHApOworKwkgICAgICBvZmYgPSAoKnBhcmVudCktPmFkZHJlc3MgKiBiZmRfb2N0ZXRzX3Blcl9ieXRlIChpbnB1dF9iZmQpOworKwkgICAgICBfYmZkX2NsZWFyX2NvbnRlbnRzICgoKnBhcmVudCktPmhvd3RvLCBpbnB1dF9iZmQsCisrCQkJCSAgIGlucHV0X3NlY3Rpb24sIGRhdGEsIG9mZik7CisgCSAgICAgICgqcGFyZW50KS0+c3ltX3B0cl9wdHIgPSBiZmRfYWJzX3NlY3Rpb25fcHRyLT5zeW1ib2xfcHRyX3B0cjsKKyAJICAgICAgKCpwYXJlbnQpLT5hZGRlbmQgPSAwOworIAkgICAgICAoKnBhcmVudCktPmhvd3RvID0gJm5vbmVfaG93dG87CitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLXBwYy5jIGIvYmZkL2VsZjMyLXBwYy5jCitpbmRleCA2MWY3MGRlMTJlLi5jMzFlMjZlZmQ3IDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLXBwYy5jCisrKysgYi9iZmQvZWxmMzItcHBjLmMKK0BAIC04MjMyLDcgKzgyMzIsNyBAQCBwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKKyAJICAgIGhvd3RvID0gcHBjX2VsZl9ob3d0b190YWJsZVtyX3R5cGVdOworIAorIAkgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJICAgICAgIGNvbnRlbnRzICsgcmVsLT5yX29mZnNldCk7CisrCQkJICAgICAgIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0KTsKKyAJICB3cmVsLT5yX29mZnNldCA9IHJlbC0+cl9vZmZzZXQ7CisgCSAgd3JlbC0+cl9pbmZvID0gMDsKKyAJICB3cmVsLT5yX2FkZGVuZCA9IDA7CitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLXZpc2l1bS5jIGIvYmZkL2VsZjMyLXZpc2l1bS5jCitpbmRleCBlOGYxYzRjOWU0Li45NjEzNjZjZDg3IDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLXZpc2l1bS5jCisrKysgYi9iZmQvZWxmMzItdmlzaXVtLmMKK0BAIC02MjEsNyArNjIxLDcgQEAgdmlzaXVtX2VsZl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCisgCSAgICAgb3Igc2VjdGlvbnMgZGlzY2FyZGVkIGJ5IGEgbGlua2VyIHNjcmlwdCwgd2UganVzdCB3YW50IHRoZQorIAkgICAgIHNlY3Rpb24gY29udGVudHMgemVyb2VkLiAgQXZvaWQgYW55IHNwZWNpYWwgcHJvY2Vzc2luZy4gICovCisgCSAgX2JmZF9jbGVhcl9jb250ZW50cyAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKKy0JCQkgICAgICAgY29udGVudHMgKyByZWwtPnJfb2Zmc2V0KTsKKysJCQkgICAgICAgY29udGVudHMsIHJlbC0+cl9vZmZzZXQpOworIAorIAkgIHJlbC0+cl9pbmZvID0gMDsKKyAJICByZWwtPnJfYWRkZW5kID0gMDsKK2RpZmYgLS1naXQgYS9iZmQvZWxmNjQtcHBjLmMgYi9iZmQvZWxmNjQtcHBjLmMKK2luZGV4IGVhZGRlMTc2MTUuLjdjMzUzNGFjNjUgMTAwNjQ0CistLS0gYS9iZmQvZWxmNjQtcHBjLmMKKysrKyBiL2JmZC9lbGY2NC1wcGMuYworQEAgLTE0MDczLDcgKzE0MDczLDcgQEAgcHBjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKKyAJeworIAkgIF9iZmRfY2xlYXJfY29udGVudHMgKHBwYzY0X2VsZl9ob3d0b190YWJsZVtyX3R5cGVdLAorIAkJCSAgICAgICBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJICAgICAgIGNvbnRlbnRzICsgcmVsLT5yX29mZnNldCk7CisrCQkJICAgICAgIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0KTsKKyAJICB3cmVsLT5yX29mZnNldCA9IHJlbC0+cl9vZmZzZXQ7CisgCSAgd3JlbC0+cl9pbmZvID0gMDsKKyAJICB3cmVsLT5yX2FkZGVuZCA9IDA7CitkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LXg4Ni02NC5jIGIvYmZkL2VsZjY0LXg4Ni02NC5jCitpbmRleCBjM2E2YzMxZWQyLi40ZGNhYjQzNDc4IDEwMDY0NAorLS0tIGEvYmZkL2VsZjY0LXg4Ni02NC5jCisrKysgYi9iZmQvZWxmNjQteDg2LTY0LmMKK0BAIC0yNDkwLDcgKzI0OTAsNyBAQCBlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKKyAgICAgICBpZiAoc2VjICE9IE5VTEwgJiYgZGlzY2FyZGVkX3NlY3Rpb24gKHNlYykpCisgCXsKKyAJICBfYmZkX2NsZWFyX2NvbnRlbnRzIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCSAgICAgICBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworKwkJCSAgICAgICBjb250ZW50cywgcmVsLT5yX29mZnNldCk7CisgCSAgd3JlbC0+cl9vZmZzZXQgPSByZWwtPnJfb2Zmc2V0OworIAkgIHdyZWwtPnJfaW5mbyA9IDA7CisgCSAgd3JlbC0+cl9hZGRlbmQgPSAwOworZGlmZiAtLWdpdCBhL2JmZC9saWJiZmQtaW4uaCBiL2JmZC9saWJiZmQtaW4uaAoraW5kZXggZTUzYjI1NWRhZC4uZjZkOTU2NWYwMyAxMDA2NDQKKy0tLSBhL2JmZC9saWJiZmQtaW4uaAorKysrIGIvYmZkL2xpYmJmZC1pbi5oCitAQCAtNjk2LDggKzY5Niw4IEBAIGV4dGVybiBiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgX2JmZF9yZWxvY2F0ZV9jb250ZW50cworICAgKHJlbG9jX2hvd3RvX3R5cGUgKiwgYmZkICosIGJmZF92bWEsIGJmZF9ieXRlICopIEFUVFJJQlVURV9ISURERU47CisgCisgLyogQ2xlYXIgYSBnaXZlbiBsb2NhdGlvbiB1c2luZyBhIGdpdmVuIGhvd3RvLiAgKi8KKy1leHRlcm4gdm9pZCBfYmZkX2NsZWFyX2NvbnRlbnRzCistICAocmVsb2NfaG93dG9fdHlwZSAqLCBiZmQgKiwgYXNlY3Rpb24gKiwgYmZkX2J5dGUgKikgQVRUUklCVVRFX0hJRERFTjsKKytleHRlcm4gYmZkX3JlbG9jX3N0YXR1c190eXBlIF9iZmRfY2xlYXJfY29udGVudHMKKysgIChyZWxvY19ob3d0b190eXBlICosIGJmZCAqLCBhc2VjdGlvbiAqLCBiZmRfYnl0ZSAqLCBiZmRfdm1hKSBBVFRSSUJVVEVfSElEREVOOworIAorIC8qIExpbmsgc3RhYnMgaW4gc2VjdGlvbnMgaW4gdGhlIGZpcnN0IHBhc3MuICAqLworIAorZGlmZiAtLWdpdCBhL2JmZC9saWJiZmQuaCBiL2JmZC9saWJiZmQuaAoraW5kZXggYTg4NTFjODAyNi4uMTE4OWU2MzM1OCAxMDA2NDQKKy0tLSBhL2JmZC9saWJiZmQuaAorKysrIGIvYmZkL2xpYmJmZC5oCitAQCAtNzAxLDggKzcwMSw4IEBAIGV4dGVybiBiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgX2JmZF9yZWxvY2F0ZV9jb250ZW50cworICAgKHJlbG9jX2hvd3RvX3R5cGUgKiwgYmZkICosIGJmZF92bWEsIGJmZF9ieXRlICopIEFUVFJJQlVURV9ISURERU47CisgCisgLyogQ2xlYXIgYSBnaXZlbiBsb2NhdGlvbiB1c2luZyBhIGdpdmVuIGhvd3RvLiAgKi8KKy1leHRlcm4gdm9pZCBfYmZkX2NsZWFyX2NvbnRlbnRzCistICAocmVsb2NfaG93dG9fdHlwZSAqLCBiZmQgKiwgYXNlY3Rpb24gKiwgYmZkX2J5dGUgKikgQVRUUklCVVRFX0hJRERFTjsKKytleHRlcm4gYmZkX3JlbG9jX3N0YXR1c190eXBlIF9iZmRfY2xlYXJfY29udGVudHMKKysgIChyZWxvY19ob3d0b190eXBlICosIGJmZCAqLCBhc2VjdGlvbiAqLCBiZmRfYnl0ZSAqLCBiZmRfdm1hKSBBVFRSSUJVVEVfSElEREVOOworIAorIC8qIExpbmsgc3RhYnMgaW4gc2VjdGlvbnMgaW4gdGhlIGZpcnN0IHBhc3MuICAqLworIAorZGlmZiAtLWdpdCBhL2JmZC9yZWxvYy5jIGIvYmZkL3JlbG9jLmMKK2luZGV4IDhkYmI4ODk2ZDMuLjE2ODY3ODA2NjkgMTAwNjQ0CistLS0gYS9iZmQvcmVsb2MuYworKysrIGIvYmZkL3JlbG9jLmMKK0BAIC0xNjEzLDE2ICsxNjEzLDIyIEBAIF9iZmRfcmVsb2NhdGVfY29udGVudHMgKHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvLAorICAgIHJlbG9jYXRpb25zIGFnYWluc3QgZGlzY2FyZGVkIHN5bWJvbHMsIHRvIG1ha2UgaWdub3JhYmxlIGRlYnVnIG9yIHVud2luZAorICAgIGluZm9ybWF0aW9uIG1vcmUgb2J2aW91cy4gICovCisgCistdm9pZAorK2JmZF9yZWxvY19zdGF0dXNfdHlwZQorIF9iZmRfY2xlYXJfY29udGVudHMgKHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvLAorIAkJICAgICBiZmQgKmlucHV0X2JmZCwKKyAJCSAgICAgYXNlY3Rpb24gKmlucHV0X3NlY3Rpb24sCistCQkgICAgIGJmZF9ieXRlICpsb2NhdGlvbikKKysJCSAgICAgYmZkX2J5dGUgKmJ1ZiwKKysJCSAgICAgYmZkX3ZtYSBvZmYpCisgeworICAgaW50IHNpemU7CisgICBiZmRfdm1hIHggPSAwOworKyAgYmZkX2J5dGUgKmxvY2F0aW9uOworKworKyAgaWYgKCFiZmRfcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCBvZmYpKQorKyAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7CisgCisgICAvKiBHZXQgdGhlIHZhbHVlIHdlIGFyZSBnb2luZyB0byByZWxvY2F0ZS4gICovCisrICBsb2NhdGlvbiA9IGJ1ZiArIG9mZjsKKyAgIHNpemUgPSBiZmRfZ2V0X3JlbG9jX3NpemUgKGhvd3RvKTsKKyAgIHN3aXRjaCAoc2l6ZSkKKyAgICAgeworQEAgLTE2ODcsNiArMTY5Myw3IEBAIF9iZmRfY2xlYXJfY29udGVudHMgKHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvLAorICNlbmRpZgorICAgICAgIGJyZWFrOworICAgICB9CisrICByZXR1cm4gYmZkX3JlbG9jX29rOworIH0KKyAKKyAvKgorQEAgLTgyNzUsMTQgKzgyODIsMTQgQEAgYmZkX2dlbmVyaWNfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQsCisgCisgCSAgaWYgKHN5bWJvbC0+c2VjdGlvbiAmJiBkaXNjYXJkZWRfc2VjdGlvbiAoc3ltYm9sLT5zZWN0aW9uKSkKKyAJICAgIHsKKy0JICAgICAgYmZkX2J5dGUgKnA7CisrCSAgICAgIGJmZF92bWEgb2ZmOworIAkgICAgICBzdGF0aWMgcmVsb2NfaG93dG9fdHlwZSBub25lX2hvd3RvCisgCQk9IEhPV1RPICgwLCAwLCAwLCAwLCBGQUxTRSwgMCwgY29tcGxhaW5fb3ZlcmZsb3dfZG9udCwgTlVMTCwKKyAJCQkgInVudXNlZCIsIEZBTFNFLCAwLCAwLCBGQUxTRSk7CisgCistCSAgICAgIHAgPSBkYXRhICsgKCpwYXJlbnQpLT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoaW5wdXRfYmZkKTsKKy0JICAgICAgX2JmZF9jbGVhcl9jb250ZW50cyAoKCpwYXJlbnQpLT5ob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCQkgICBwKTsKKysJICAgICAgb2ZmID0gKCpwYXJlbnQpLT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoaW5wdXRfYmZkKTsKKysJICAgICAgX2JmZF9jbGVhcl9jb250ZW50cyAoKCpwYXJlbnQpLT5ob3d0bywgaW5wdXRfYmZkLAorKwkJCQkgICBpbnB1dF9zZWN0aW9uLCBkYXRhLCBvZmYpOworIAkgICAgICAoKnBhcmVudCktPnN5bV9wdHJfcHRyID0gYmZkX2Fic19zZWN0aW9uX3B0ci0+c3ltYm9sX3B0cl9wdHI7CisgCSAgICAgICgqcGFyZW50KS0+YWRkZW5kID0gMDsKKyAJICAgICAgKCpwYXJlbnQpLT5ob3d0byA9ICZub25lX2hvd3RvOworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODYwNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmM3MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDUucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSBhYjQxOWRkYmIyY2RkMTdjYTgzNjE4OTkwZjJjYWNmOTA0Y2UxZDYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjMgT2N0IDIwMTggMTg6Mjk6MjQgKzEwMzAKK1N1YmplY3Q6IFtQQVRDSF0gUFIyMzgwNCwgYnVmZmVyIG92ZXJmbG93IGluIHNlY19tZXJnZV9oYXNoX2xvb2t1cAorCisJUFIgMjM4MDQKKwkqIG1lcmdlLmMgKF9iZmRfYWRkX21lcmdlX3NlY3Rpb24pOiBEb24ndCBhdHRlbXB0IHRvIG1lcmdlCisJc2VjdGlvbnMgd2hlcmUgc2l6ZSBpcyBub3QgYSBtdWx0aXBsZSBvZiBlbnRzaXplLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE4LTE4NjA1CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCisgYmZkL21lcmdlLmMgICB8IDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCitpbmRleCAzMWZmM2Q2Li5kYTQyM2IxIDEwMDY0NAorLS0tIGEvYmZkL0NoYW5nZUxvZworKysrIGIvYmZkL0NoYW5nZUxvZworQEAgLTEsMyArMSw5IEBACisrMjAxOC0xMC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisrCisrCVBSIDIzODA0CisrCSogbWVyZ2UuYyAoX2JmZF9hZGRfbWVyZ2Vfc2VjdGlvbik6IERvbid0IGF0dGVtcHQgdG8gbWVyZ2UKKysJc2VjdGlvbnMgd2hlcmUgc2l6ZSBpcyBub3QgYSBtdWx0aXBsZSBvZiBlbnRzaXplLgorKworIDIwMTgtMTAtMTMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorIAorIAlQUiAyMzc3MAorZGlmZiAtLWdpdCBhL2JmZC9tZXJnZS5jIGIvYmZkL21lcmdlLmMKK2luZGV4IDc5MDQ1NTIuLjVlM2JiYTAgMTAwNjQ0CistLS0gYS9iZmQvbWVyZ2UuYworKysrIGIvYmZkL21lcmdlLmMKK0BAIC0zNzYsNiArMzc2LDkgQEAgX2JmZF9hZGRfbWVyZ2Vfc2VjdGlvbiAoYmZkICphYmZkLCB2b2lkICoqcHNpbmZvLCBhc2VjdGlvbiAqc2VjLAorICAgICAgIHx8IHNlYy0+ZW50c2l6ZSA9PSAwKQorICAgICByZXR1cm4gVFJVRTsKKyAKKysgIGlmIChzZWMtPnNpemUgJSBzZWMtPmVudHNpemUgIT0gMCkKKysgICAgcmV0dXJuIFRSVUU7CisrCisgICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNfUkVMT0MpICE9IDApCisgICAgIHsKKyAgICAgICAvKiBXZSBhcmVuJ3QgcHJlcGFyZWQgdG8gaGFuZGxlIHJlbG9jYXRpb25zIGluIG1lcmdlZCBzZWN0aW9ucy4gICovCistLSAKKzIuOS4zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODYwNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4NjA2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1Y2YzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODYwNi5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDQ1YTBlYWY3NzAyMjk2M2Q2MzlkNmQxOTg3MWRiYWI3Yjc5NzAzZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyMyBPY3QgMjAxOCAxOTowMjowNiArMTAzMAorU3ViamVjdDogW1BBVENIXSBQUjIzODA2LCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbWVyZ2Vfc3RyaW5ncworCisJUFIgMjM4MDYKKwkqIG1lcmdlLmMgKF9iZmRfYWRkX21lcmdlX3NlY3Rpb24pOiBEb24ndCBhdHRlbXB0IHRvIG1lcmdlCisJc2VjdGlvbnMgd2l0aCByaWRpY3Vsb3VzbHkgbGFyZ2UgYWxpZ25tZW50cy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC0xODYwNgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9DaGFuZ2VMb2cgfCAgNiArKysrKysKKyBiZmQvbWVyZ2UuYyAgIHwgMTUgKysrKysrKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKK2luZGV4IDFmM2ZjMWMuLmM1ZjdlYzcgMTAwNjQ0CistLS0gYS9iZmQvQ2hhbmdlTG9nCisrKysgYi9iZmQvQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDExIEBACisgMjAxOC0xMC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisgCisrCVBSIDIzODA2CisrCSogbWVyZ2UuYyAoX2JmZF9hZGRfbWVyZ2Vfc2VjdGlvbik6IERvbid0IGF0dGVtcHQgdG8gbWVyZ2UKKysJc2VjdGlvbnMgd2l0aCByaWRpY3Vsb3VzbHkgbGFyZ2UgYWxpZ25tZW50cy4KKysKKysyMDE4LTEwLTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KKysKKyAJUFIgMjM4MDQKKyAJKiBtZXJnZS5jIChfYmZkX2FkZF9tZXJnZV9zZWN0aW9uKTogRG9uJ3QgYXR0ZW1wdCB0byBtZXJnZQorIAlzZWN0aW9ucyB3aGVyZSBzaXplIGlzIG5vdCBhIG11bHRpcGxlIG9mIGVudHNpemUuCitkaWZmIC0tZ2l0IGEvYmZkL21lcmdlLmMgYi9iZmQvbWVyZ2UuYworaW5kZXggNWUzYmJhMC4uN2RlMGM4OCAxMDA2NDQKKy0tLSBhL2JmZC9tZXJnZS5jCisrKysgYi9iZmQvbWVyZ2UuYworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICBhcyB1c2VkIGluIEVMRiBTSEZfTUVSR0UuICAqLworIAorICNpbmNsdWRlICJzeXNkZXAuaCIKKysjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgImJmZC5oIgorICNpbmNsdWRlICJlbGYtYmZkLmgiCisgI2luY2x1ZGUgImxpYmJmZC5oIgorQEAgLTM4NSwxMiArMzg2LDE4IEBAIF9iZmRfYWRkX21lcmdlX3NlY3Rpb24gKGJmZCAqYWJmZCwgdm9pZCAqKnBzaW5mbywgYXNlY3Rpb24gKnNlYywKKyAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgfQorIAorLSAgYWxpZ24gPSBzZWMtPmFsaWdubWVudF9wb3dlcjsKKy0gIGlmICgoc2VjLT5lbnRzaXplIDwgKHVuc2lnbmVkKSAxIDw8IGFsaWduCisrI2lmbmRlZiBDSEFSX0JJVAorKyNkZWZpbmUgQ0hBUl9CSVQgOAorKyNlbmRpZgorKyAgaWYgKHNlYy0+YWxpZ25tZW50X3Bvd2VyID49IHNpemVvZiAoYWxpZ24pICogQ0hBUl9CSVQpCisrICAgIHJldHVybiBUUlVFOworKworKyAgYWxpZ24gPSAxdSA8PCBzZWMtPmFsaWdubWVudF9wb3dlcjsKKysgIGlmICgoc2VjLT5lbnRzaXplIDwgYWxpZ24KKyAgICAgICAgJiYgKChzZWMtPmVudHNpemUgJiAoc2VjLT5lbnRzaXplIC0gMSkpCisgCSAgIHx8ICEoc2VjLT5mbGFncyAmIFNFQ19TVFJJTkdTKSkpCistICAgICAgfHwgKHNlYy0+ZW50c2l6ZSA+ICh1bnNpZ25lZCkgMSA8PCBhbGlnbgorLQkgICYmIChzZWMtPmVudHNpemUgJiAoKCh1bnNpZ25lZCkgMSA8PCBhbGlnbikgLSAxKSkpKQorKyAgICAgIHx8IChzZWMtPmVudHNpemUgPiBhbGlnbgorKwkgICYmIChzZWMtPmVudHNpemUgJiAoYWxpZ24gLSAxKSkpKQorICAgICB7CisgICAgICAgLyogU2FuaXR5IGNoZWNrLiAgSWYgc3RyaW5nIGNoYXJhY3RlciBzaXplIGlzIHNtYWxsZXIgdGhhbgorIAkgYWxpZ25tZW50LCB0aGVuIHdlIHJlcXVpcmUgY2hhcmFjdGVyIHNpemUgdG8gYmUgYSBwb3dlcgorLS0gCisyLjkuMwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODYwNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODIyNWQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDcucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorRnJvbSAxMDJkZWY0ZGE4MjZiM2Q5ZTE2OTc0MTQyMWU1ZTY3ZTg3MzE5MDlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjMgT2N0IDIwMTggMTg6MzA6MjIgKzEwMzAKK1N1YmplY3Q6IFtQQVRDSF0gUFIyMzgwNSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGVsZl9saW5rX2lucHV0X2JmZAorCisJUFIgMjM4MDUKKwkqIGVsZmxpbmsuYyAoZWxmX2xpbmtfaW5wdXRfYmZkKTogRG9uJ3Qgc2VnZmF1bHQgb24gZmluZGluZworCVNUVF9UTFMgc3ltYm9scyB3aXRob3V0IGFueSBUTFMgc2VjdGlvbnMuICBJbnN0ZWFkLCBjaGFuZ2UgdGhlCisJc3ltYm9sIHR5cGUgdG8gU1RUX05PVFlQRS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC0xODYwNgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9DaGFuZ2VMb2cgfCAgNyArKysrKysrCisgYmZkL2VsZmxpbmsuYyB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKK2luZGV4IGRhNDIzYjEuLjFmM2ZjMWMgMTAwNjQ0CistLS0gYS9iZmQvQ2hhbmdlTG9nCisrKysgYi9iZmQvQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDEyIEBACisgMjAxOC0xMC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisgCisrCVBSIDIzODA1CisrCSogZWxmbGluay5jIChlbGZfbGlua19pbnB1dF9iZmQpOiBEb24ndCBzZWdmYXVsdCBvbiBmaW5kaW5nCisrCVNUVF9UTFMgc3ltYm9scyB3aXRob3V0IGFueSBUTFMgc2VjdGlvbnMuICBJbnN0ZWFkLCBjaGFuZ2UgdGhlCisrCXN5bWJvbCB0eXBlIHRvIFNUVF9OT1RZUEUuCisrCisrMjAxOC0xMC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisrCisgCVBSIDIzODA2CisgCSogbWVyZ2UuYyAoX2JmZF9hZGRfbWVyZ2Vfc2VjdGlvbik6IERvbid0IGF0dGVtcHQgdG8gbWVyZ2UKKyAJc2VjdGlvbnMgd2l0aCByaWRpY3Vsb3VzbHkgbGFyZ2UgYWxpZ25tZW50cy4KK2RpZmYgLS1naXQgYS9iZmQvZWxmbGluay5jIGIvYmZkL2VsZmxpbmsuYworaW5kZXggYzM4NzZjYi4uODc0NDBkYiAxMDA2NDQKKy0tLSBhL2JmZC9lbGZsaW5rLmMKKysrKyBiL2JmZC9lbGZsaW5rLmMKK0BAIC0xMDQ4OSw4ICsxMDQ4OSwxMSBAQCBlbGZfbGlua19pbnB1dF9iZmQgKHN0cnVjdCBlbGZfZmluYWxfbGlua19pbmZvICpmbGluZm8sIGJmZCAqaW5wdXRfYmZkKQorIAkgIGlmIChFTEZfU1RfVFlQRSAob3N5bS5zdF9pbmZvKSA9PSBTVFRfVExTKQorIAkgICAgeworIAkgICAgICAvKiBTVFRfVExTIHN5bWJvbHMgYXJlIHJlbGF0aXZlIHRvIFBUX1RMUyBzZWdtZW50IGJhc2UuICAqLworLQkgICAgICBCRkRfQVNTRVJUIChlbGZfaGFzaF90YWJsZSAoZmxpbmZvLT5pbmZvKS0+dGxzX3NlYyAhPSBOVUxMKTsKKy0JICAgICAgb3N5bS5zdF92YWx1ZSAtPSBlbGZfaGFzaF90YWJsZSAoZmxpbmZvLT5pbmZvKS0+dGxzX3NlYy0+dm1hOworKwkgICAgICBpZiAoZWxmX2hhc2hfdGFibGUgKGZsaW5mby0+aW5mbyktPnRsc19zZWMgIT0gTlVMTCkKKysJCW9zeW0uc3RfdmFsdWUgLT0gZWxmX2hhc2hfdGFibGUgKGZsaW5mby0+aW5mbyktPnRsc19zZWMtPnZtYTsKKysJICAgICAgZWxzZQorKwkJb3N5bS5zdF9pbmZvID0gRUxGX1NUX0lORk8gKEVMRl9TVF9CSU5EIChvc3ltLnN0X2luZm8pLAorKwkJCQkJICAgIFNUVF9OT1RZUEUpOworIAkgICAgfQorIAl9CisgCitAQCAtMTEwNDYsMTIgKzExMDQ5LDE3IEBAIGVsZl9saW5rX2lucHV0X2JmZCAoc3RydWN0IGVsZl9maW5hbF9saW5rX2luZm8gKmZsaW5mbywgYmZkICppbnB1dF9iZmQpCisgCQkJICAgICAgc3ltLnN0X3ZhbHVlICs9IG9zZWMtPnZtYTsKKyAJCQkgICAgICBpZiAoRUxGX1NUX1RZUEUgKHN5bS5zdF9pbmZvKSA9PSBTVFRfVExTKQorIAkJCQl7CisrCQkJCSAgc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUgKmh0YWIKKysJCQkJICAgID0gZWxmX2hhc2hfdGFibGUgKGZsaW5mby0+aW5mbyk7CisrCisgCQkJCSAgLyogU1RUX1RMUyBzeW1ib2xzIGFyZSByZWxhdGl2ZSB0byBQVF9UTFMKKyAJCQkJICAgICBzZWdtZW50IGJhc2UuICAqLworLQkJCQkgIEJGRF9BU1NFUlQgKGVsZl9oYXNoX3RhYmxlIChmbGluZm8tPmluZm8pCistCQkJCQkgICAgICAtPnRsc19zZWMgIT0gTlVMTCk7CistCQkJCSAgc3ltLnN0X3ZhbHVlIC09IChlbGZfaGFzaF90YWJsZSAoZmxpbmZvLT5pbmZvKQorLQkJCQkJCSAgIC0+dGxzX3NlYy0+dm1hKTsKKysJCQkJICBpZiAoaHRhYi0+dGxzX3NlYyAhPSBOVUxMKQorKwkJCQkgICAgc3ltLnN0X3ZhbHVlIC09IGh0YWItPnRsc19zZWMtPnZtYTsKKysJCQkJICBlbHNlCisrCQkJCSAgICBzeW0uc3RfaW5mbworKwkJCQkgICAgICA9IEVMRl9TVF9JTkZPIChFTEZfU1RfQklORCAoc3ltLnN0X2luZm8pLAorKwkJCQkJCSAgICAgU1RUX05PVFlQRSk7CisgCQkJCX0KKyAJCQkgICAgfQorIAorLS0gCisyLjkuMwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNjc1OS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTY3NTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZjQ5NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNjc1OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi1Gcm9tIDY0ZTIzNGQ0MTdkNTY4NWE0YWVjMGVkYzYxODExNGQ5OTkxYzAzMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDYgRmViIDIwMTggMTU6NDg6MjkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBhdHRlbXB0cyB0byBjYWxsIHN0cm5jcHkgd2l0aCBhIHplcm8tbGVuZ3RoIGZpZWxkIGJ5Ci0gY2hhY2tpbmcgdGhlIHNpemUgb2YgZGVidWdsaW5rIHNlY3Rpb25zLgotCi0JUFIgMjI3OTQKLQkqIG9wbmNscy5jIChiZmRfZ2V0X2RlYnVnX2xpbmtfaW5mb18xKTogQ2hlY2sgdGhlIHNpemUgb2YgdGhlCi0Jc2VjdGlvbiBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWFkIGl0IGluLgotCShiZmRfZ2V0X2FsdF9kZWJ1Z19saW5rX2luZm8pOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQWZmZWN0czogQmludXRpbHMgPD0gMi4zMAotQ1ZFOiBDVkUtMjAxOC02NzU5Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA3ICsrKysrKysKLSBiZmQvb3BuY2xzLmMgIHwgMjIgKysrKysrKysrKysrKysrKystLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvb3BuY2xzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvb3BuY2xzLmMKLSsrKyBnaXQvYmZkL29wbmNscy5jCi1AQCAtMTE3OSw2ICsxMTc5LDcgQEAgYmZkX2dldF9kZWJ1Z19saW5rX2luZm9fMSAoYmZkICphYmZkLCB2bwotICAgYmZkX2J5dGUgKmNvbnRlbnRzOwotICAgdW5zaWduZWQgaW50IGNyY19vZmZzZXQ7Ci0gICBjaGFyICpuYW1lOwotKyAgYmZkX3NpemVfdHlwZSBzaXplOwotIAotICAgQkZEX0FTU0VSVCAoYWJmZCk7Ci0gICBCRkRfQVNTRVJUIChjcmMzMl9vdXQpOwotQEAgLTExODgsNiArMTE4OSwxMiBAQCBiZmRfZ2V0X2RlYnVnX2xpbmtfaW5mb18xIChiZmQgKmFiZmQsIHZvCi0gICBpZiAoc2VjdCA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSsgIHNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCk7Ci0rCi0rICAvKiBQUiAyMjc5NDogTWFrZSBzdXJlIHRoYXQgdGhlIHNlY3Rpb24gaGFzIGEgcmVhc29uYWJsZSBzaXplLiAgKi8KLSsgIGlmIChzaXplIDwgOCB8fCBzaXplID49IGJmZF9nZXRfc2l6ZSAoYWJmZCkpCi0rICAgIHJldHVybiBOVUxMOwotKwotICAgaWYgKCFiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbiAoYWJmZCwgc2VjdCwgJmNvbnRlbnRzKSkKLSAgICAgewotICAgICAgIGlmIChjb250ZW50cyAhPSBOVUxMKQotQEAgLTExOTcsMTAgKzEyMDQsMTAgQEAgYmZkX2dldF9kZWJ1Z19saW5rX2luZm9fMSAoYmZkICphYmZkLCB2bwotIAotICAgLyogQ1JDIHZhbHVlIGlzIHN0b3JlZCBhZnRlciB0aGUgZmlsZW5hbWUsIGFsaWduZWQgdXAgdG8gNCBieXRlcy4gICovCi0gICBuYW1lID0gKGNoYXIgKikgY29udGVudHM7Ci0tICAvKiBQUiAxNzU5NzogYXZvaWQgcmVhZGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAgKi8KLS0gIGNyY19vZmZzZXQgPSBzdHJubGVuIChuYW1lLCBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCkpICsgMTsKLSsgIC8qIFBSIDE3NTk3OiBBdm9pZCByZWFkaW5nIG9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICAqLwotKyAgY3JjX29mZnNldCA9IHN0cm5sZW4gKG5hbWUsIHNpemUpICsgMTsKLSAgIGNyY19vZmZzZXQgPSAoY3JjX29mZnNldCArIDMpICYgfjM7Ci0tICBpZiAoY3JjX29mZnNldCArIDQgPiBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCkpCi0rICBpZiAoY3JjX29mZnNldCArIDQgPiBzaXplKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSAgICpjcmMzMiA9IGJmZF9nZXRfMzIgKGFiZmQsIGNvbnRlbnRzICsgY3JjX29mZnNldCk7Ci1AQCAtMTI2MSw2ICsxMjY4LDcgQEAgYmZkX2dldF9hbHRfZGVidWdfbGlua19pbmZvIChiZmQgKiBhYmZkLAotICAgYmZkX2J5dGUgKmNvbnRlbnRzOwotICAgdW5zaWduZWQgaW50IGJ1aWxkaWRfb2Zmc2V0OwotICAgY2hhciAqbmFtZTsKLSsgIGJmZF9zaXplX3R5cGUgc2l6ZTsKLSAKLSAgIEJGRF9BU1NFUlQgKGFiZmQpOwotICAgQkZEX0FTU0VSVCAoYnVpbGRpZF9sZW4pOwotQEAgLTEyNzEsNiArMTI3OSwxMCBAQCBiZmRfZ2V0X2FsdF9kZWJ1Z19saW5rX2luZm8gKGJmZCAqIGFiZmQsCi0gICBpZiAoc2VjdCA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSsgIHNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCk7Ci0rICBpZiAoc2l6ZSA8IDggfHwgc2l6ZSA+PSBiZmRfZ2V0X3NpemUgKGFiZmQpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSAgIGlmICghYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGFiZmQsIHNlY3QsICYgY29udGVudHMpKQotICAgICB7Ci0gICAgICAgaWYgKGNvbnRlbnRzICE9IE5VTEwpCi1AQCAtMTI4MCwxMSArMTI5MiwxMSBAQCBiZmRfZ2V0X2FsdF9kZWJ1Z19saW5rX2luZm8gKGJmZCAqIGFiZmQsCi0gCi0gICAvKiBCdWlsZElEIHZhbHVlIGlzIHN0b3JlZCBhZnRlciB0aGUgZmlsZW5hbWUuICAqLwotICAgbmFtZSA9IChjaGFyICopIGNvbnRlbnRzOwotLSAgYnVpbGRpZF9vZmZzZXQgPSBzdHJubGVuIChuYW1lLCBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCkpICsgMTsKLSsgIGJ1aWxkaWRfb2Zmc2V0ID0gc3RybmxlbiAobmFtZSwgc2l6ZSkgKyAxOwotICAgaWYgKGJ1aWxkaWRfb2Zmc2V0ID49IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0KSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0tICAqYnVpbGRpZF9sZW4gPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCkgLSBidWlsZGlkX29mZnNldDsKLSsgICpidWlsZGlkX2xlbiA9IHNpemUgLSBidWlsZGlkX29mZnNldDsKLSAgICpidWlsZGlkX291dCA9IGJmZF9tYWxsb2MgKCpidWlsZGlkX2xlbik7Ci0gICBtZW1jcHkgKCpidWlsZGlkX291dCwgY29udGVudHMgKyBidWlsZGlkX29mZnNldCwgKmJ1aWxkaWRfbGVuKTsKLSAKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTgtMDItMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIDIyNzk0Ci0rICAgICAgICogb3BuY2xzLmMgKGJmZF9nZXRfZGVidWdfbGlua19pbmZvXzEpOiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUKLSsgICAgICAgc2VjdGlvbiBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWFkIGl0IGluLgotKyAgICAgICAoYmZkX2dldF9hbHRfZGVidWdfbGlua19pbmZvKTogTGlrZXdpc2UuCi0rCi0gMjAxOC0wMi0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgSW1wb3J0IHBhdGNoIGZyb20gbWFpbmxpbmU6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC02ODcyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNjg3Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVmMzZjMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC02ODcyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBkODk1ZWY3N2ZmYzk0ZTAyZTc0ODg1NmMyYWI1NGY1YmI4Y2M4NjdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA5IEZlYiAyMDE4IDA5OjI4OjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEltcG9ydCBwYXRjaCBmcm9tIG1haW5saW5lIHRvIGZpeCBwb3NzaWJsZSBzZWctZmF1bHQgd2hpbHN0Ci0gcGFyc2luZyBjb3JydXB0IEVMRiBub3RlcyB3aXRoIGV4dHJhdmFnZW50IGFsaWdubWVudHMuCi0KLQlQUiAyMjc4OAotCSogZWxmLmMgKGVsZl9wYXJzZV9ub3Rlcyk6IFJlamVjdCBub3RlcyB3aXRoIGV4Y2Vzc3VpdmVseSBsYXJnZQotCWFsaWdubWVudHMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtNjg3MgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCA5ICsrKysrKysrKwotIGJmZC9lbGYuYyAgICAgfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnaXQvYmZkL2VsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZi5jCi0rKysgZ2l0L2JmZC9lbGYuYwotQEAgLTExMDIwLDYgKzExMDIwLDggQEAgZWxmX3BhcnNlX25vdGVzIChiZmQgKmFiZmQsIGNoYXIgKmJ1ZiwgcwotICAgICAgYWxpZ24gaXMgbGVzcyB0aGFuIDQsIHdlIHVzZSA0IGJ5dGUgYWxpZ25tZW50LiAgICovCi0gICBpZiAoYWxpZ24gPCA0KQotICAgICBhbGlnbiA9IDQ7Ci0rICBpZiAoYWxpZ24gIT0gNCAmJiBhbGlnbiAhPSA4KQotKyAgICByZXR1cm4gRkFMU0U7Ci0gCi0gICBwID0gYnVmOwotICAgd2hpbGUgKHAgPCBidWYgKyBzaXplKQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEyIEBACi0rMjAxOC0wMi0wOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgSW1wb3J0IHBhdGNoIGZyb20gbWFpbmxpbmU6Ci0rICAgICAgIDIwMTgtMDItMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIDIyNzg4Ci0rICAgICAgICogZWxmLmMgKGVsZl9wYXJzZV9ub3Rlcyk6IFJlamVjdCBub3RlcyB3aXRoIGV4Y2Vzc3VpdmVseSBsYXJnZQotKyAgICAgICBhbGlnbm1lbnRzLgotKwotIDIwMTgtMDMtMDEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIDIyOTA1CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03MjA4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzIwOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVmZWZlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03MjA4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBlYjc3ZjZhNDYyMTc5NTM2N2EzOWNkZDMwOTU3OTAzYWY5ZGJiODE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjcgSmFuIDIwMTggMDg6MTk6MzMgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyMjc0MSwgb2JqY29weSBzZWdmYXVsdCBvbiBmdXp6ZWQgQ09GRiBvYmplY3QKLQotCVBSIDIyNzQxCi0JKiBjb2ZmZ2VuLmMgKGNvZmZfcG9pbnRlcml6ZV9hdXgpOiBFbnN1cmUgYXV4ZW50IHRhZ25keCBpcyBpbgotCXJhbmdlIGJlZm9yZSBjb252ZXJ0aW5nIHRvIGEgc3ltYm9sIHRhYmxlIHBvaW50ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogIENWRS0yMDE4LTcyMDgKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiZmQvY29mZmdlbi5jIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9jb2ZmZ2VuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvY29mZmdlbi5jCi0rKysgZ2l0L2JmZC9jb2ZmZ2VuLmMKLUBAIC0xNTU1LDcgKzE1NTUsOCBAQCBjb2ZmX3BvaW50ZXJpemVfYXV4IChiZmQgKmFiZmQsCi0gICAgIH0KLSAgIC8qIEEgbmVnYXRpdmUgdGFnbmR4IGlzIG1lYW5pbmdsZXNzLCBidXQgdGhlIFNDTyAzLjJ2NCBjYyBjYW4KLSAgICAgIGdlbmVyYXRlIG9uZSwgc28gd2UgbXVzdCBiZSBjYXJlZnVsIHRvIGlnbm9yZSBpdC4gICovCi0tICBpZiAoYXV4ZW50LT51LmF1eGVudC54X3N5bS54X3RhZ25keC5sID4gMCkKLSsgIGlmICgodW5zaWduZWQgbG9uZykgYXV4ZW50LT51LmF1eGVudC54X3N5bS54X3RhZ25keC5sCi0rICAgICAgPCBvYmpfcmF3X3N5bWVudF9jb3VudCAoYWJmZCkpCi0gICAgIHsKLSAgICAgICBhdXhlbnQtPnUuYXV4ZW50Lnhfc3ltLnhfdGFnbmR4LnAgPQotIAl0YWJsZV9iYXNlICsgYXV4ZW50LT51LmF1eGVudC54X3N5bS54X3RhZ25keC5sOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE4LTAxLTI5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSsgICAgICAgUFIgMjI3NDEKLSsgICAgICAgKiBjb2ZmZ2VuLmMgKGNvZmZfcG9pbnRlcml6ZV9hdXgpOiBFbnN1cmUgYXV4ZW50IHRhZ25keCBpcyBpbgotKyAgICAgICByYW5nZSBiZWZvcmUgY29udmVydGluZyB0byBhIHN5bWJvbCB0YWJsZSBwb2ludGVyLgotKwotIDIwMTgtMDItMjggIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotICAgICAgICBQUiAyMjg4NwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzU2OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc1NjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNWIzMmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzU2OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gZWVmMTA0NjY0ZWZiNTI5NjVkODVhMjhiYzNmYzdjNzdlNTJlNDhlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMTA6MTM6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gcmVhZGluZyBjb3JydXB0IGR3YXJmMQotIGRlYnVnIGluZm9ybWF0aW9uLgotCi0JUFIgMjI4OTQKLQkqIGR3YXJmMS5jIChwYXJzZV9kaWUpOiBDaGVjayB0aGUgbGVuZ3RoIG9mIGZvcm0gYmxvY2tzIGJlZm9yZQotCWFkdmFuY2luZyB0aGUgZGF0YSBwb2ludGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTc1NjgKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmZkL2R3YXJmMS5jICB8IDE3ICsrKysrKysrKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9kd2FyZjEuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9kd2FyZjEuYwotKysrIGdpdC9iZmQvZHdhcmYxLmMKLUBAIC0yMTMsNiArMjEzLDcgQEAgcGFyc2VfZGllIChiZmQgKgkgICAgIGFiZmQsCi0gICAvKiBUaGVuIHRoZSBhdHRyaWJ1dGVzLiAgKi8KLSAgIHdoaWxlICh4cHRyICsgMiA8PSBhRGllUHRyRW5kKQotICAgICB7Ci0rICAgICAgdW5zaWduZWQgaW50ICAgYmxvY2tfbGVuOwotICAgICAgIHVuc2lnbmVkIHNob3J0IGF0dHI7Ci0gCi0gICAgICAgLyogUGFyc2UgdGhlIGF0dHJpYnV0ZSBiYXNlZCBvbiBpdHMgZm9ybS4gIFRoaXMgc2VjdGlvbgotQEAgLTI1NSwxMiArMjU2LDI0IEBAIHBhcnNlX2RpZSAoYmZkICoJICAgICBhYmZkLAotIAkgIGJyZWFrOwotIAljYXNlIEZPUk1fQkxPQ0syOgotIAkgIGlmICh4cHRyICsgMiA8PSBhRGllUHRyRW5kKQotLQkgICAgeHB0ciArPSBiZmRfZ2V0XzE2IChhYmZkLCB4cHRyKTsKLSsJICAgIHsKLSsJICAgICAgYmxvY2tfbGVuID0gYmZkX2dldF8xNiAoYWJmZCwgeHB0cik7Ci0rCSAgICAgIGlmICh4cHRyICsgYmxvY2tfbGVuID4gYURpZVB0ckVuZAotKwkJICB8fCB4cHRyICsgYmxvY2tfbGVuIDwgeHB0cikKLSsJCXJldHVybiBGQUxTRTsKLSsJICAgICAgeHB0ciArPSBibG9ja19sZW47Ci0rCSAgICB9Ci0gCSAgeHB0ciArPSAyOwotIAkgIGJyZWFrOwotIAljYXNlIEZPUk1fQkxPQ0s0OgotIAkgIGlmICh4cHRyICsgNCA8PSBhRGllUHRyRW5kKQotLQkgICAgeHB0ciArPSBiZmRfZ2V0XzMyIChhYmZkLCB4cHRyKTsKLSsJICAgIHsKLSsJICAgICAgYmxvY2tfbGVuID0gYmZkX2dldF8zMiAoYWJmZCwgeHB0cik7Ci0rCSAgICAgIGlmICh4cHRyICsgYmxvY2tfbGVuID4gYURpZVB0ckVuZAotKwkJICB8fCB4cHRyICsgYmxvY2tfbGVuIDwgeHB0cikKLSsJCXJldHVybiBGQUxTRTsKLSsJICAgICAgeHB0ciArPSBibG9ja19sZW47Ci0rCSAgICB9Ci0gCSAgeHB0ciArPSA0OwotIAkgIGJyZWFrOwotIAljYXNlIEZPUk1fU1RSSU5HOgotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtNCw3ICs0LDExIEBACi0gICAgICAgICogY29mZmdlbi5jIChjb2ZmX3BvaW50ZXJpemVfYXV4KTogRW5zdXJlIGF1eGVudCB0YWduZHggaXMgaW4KLSAgICAgICAgcmFuZ2UgYmVmb3JlIGNvbnZlcnRpbmcgdG8gYSBzeW1ib2wgdGFibGUgcG9pbnRlci4KLSAKLS0yMDE4LTAyLTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsyMDE4LTAyLTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMjg5NAotKyAgICAgICAqIGR3YXJmMS5jIChwYXJzZV9kaWUpOiBDaGVjayB0aGUgbGVuZ3RoIG9mIGZvcm0gYmxvY2tzIGJlZm9yZQotKyAgICAgICBhZHZhbmNpbmcgdGhlIGRhdGEgcG9pbnRlci4KLSAKLSAgICAgICAgUFIgMjI4OTUKLSAgICAgICAgUFIgMjI4OTMKLUBAIC0xNCw2ICsxOCw4IEBACi0gICAgICAgIHNpemUgaXMgaW52YWxpZC4KLSAgICAgICAgKHJlYWRfYXR0cmlidXRlX3ZhbHVlKTogQWRqdXN0IGludm9jYXRpb25zIG9mIHJlYWRfbl9ieXRlcy4KLSAKLSsyMDE4LTAyLTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSAgICAgICAgUFIgMjI4ODcKLSAgICAgICAgKiBhb3V0eC5oIChzd2FwX3N0ZF9yZWxvY19pbik6IENvcnJlY3Qgcl9pbmRleCBib3VuZCBjaGVjay4KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc1NjkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NTY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmMwZmQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc1NjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotRnJvbSAxMmM5NjM0MjFkMDQ1YTEyN2M0MTNhMDcyMjA2MmI5OTMyYzUwYWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAxMTo1MDo0OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBDYXRjaCBpbnRlZ2VyIG92ZXJmbG93cy91bmRlcmZsb3dzIHdoZW4gcGFyc2luZyBjb3JydXB0IERXQVJGCi0gRk9STSBibG9ja3MuCi0KLQlQUiAyMjg5NQotCVBSIDIyODkzCi0JKiBkd2FyZjIuYyAocmVhZF9uX2J5dGVzKTogUmVwbGFjZSBzaXplIHBhcmFtZXRlciB3aXRoIGR3YXJmX2Jsb2NrCi0JcG9pbnRlci4gIERyb3AgdW51c2VkIGFiZmQgcGFyYW1ldGVyLiAgQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2NrCi0JYmVmb3JlIGluaXRpYWxpc2luZyB0aGUgZGF0YSBmaWVsZC4gIFJldHVybiB0aGUgZW5kIHBvaW50ZXIgaWYgdGhlCi0Jc2l6ZSBpcyBpbnZhbGlkLgotCShyZWFkX2F0dHJpYnV0ZV92YWx1ZSk6IEFkanVzdCBpbnZvY2F0aW9ucyBvZiByZWFkX25fYnl0ZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtNzU2OQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgIDggKysrKysrKysKLSBiZmQvZHdhcmYyLmMgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvZHdhcmYyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZHdhcmYyLmMKLSsrKyBnaXQvYmZkL2R3YXJmMi5jCi1AQCAtNjIyLDE0ICs2MjIsMjQgQEAgcmVhZF84X2J5dGVzIChiZmQgKmFiZmQsIGJmZF9ieXRlICpidWYsCi0gfQotIAotIHN0YXRpYyBiZmRfYnl0ZSAqCi0tcmVhZF9uX2J5dGVzIChiZmQgKmFiZmQgQVRUUklCVVRFX1VOVVNFRCwKLS0JICAgICAgYmZkX2J5dGUgKmJ1ZiwKLS0JICAgICAgYmZkX2J5dGUgKmVuZCwKLS0JICAgICAgdW5zaWduZWQgaW50IHNpemUgQVRUUklCVVRFX1VOVVNFRCkKLS17Ci0tICBpZiAoYnVmICsgc2l6ZSA+IGVuZCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tICByZXR1cm4gYnVmOwotK3JlYWRfbl9ieXRlcyAoYmZkX2J5dGUgKiAgICAgICAgICAgYnVmLAotKwkgICAgICBiZmRfYnl0ZSAqICAgICAgICAgICBlbmQsCi0rCSAgICAgIHN0cnVjdCBkd2FyZl9ibG9jayAqIGJsb2NrKQotK3sKLSsgIHVuc2lnbmVkIGludCAgc2l6ZSA9IGJsb2NrLT5zaXplOwotKyAgYmZkX2J5dGUgKiAgICBibG9ja19lbmQgPSBidWYgKyBzaXplOwotKwotKyAgaWYgKGJsb2NrX2VuZCA+IGVuZCB8fCBibG9ja19lbmQgPCBidWYpCi0rICAgIHsKLSsgICAgICBibG9jay0+ZGF0YSA9IE5VTEw7Ci0rICAgICAgYmxvY2stPnNpemUgPSAwOwotKyAgICAgIHJldHVybiBlbmQ7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGJsb2NrLT5kYXRhID0gYnVmOwotKyAgICAgIHJldHVybiBibG9ja19lbmQ7Ci0rICAgIH0KLSB9Ci0gCi0gLyogU2NhbnMgYSBOVUwgdGVybWluYXRlZCBzdHJpbmcgc3RhcnRpbmcgYXQgQlVGLCByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGl0LgotQEAgLTExMjcsOCArMTEzNyw3IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChzdHJ1Y3QgYXR0cmlidXRlICoKLSAJcmV0dXJuIE5VTEw7Ci0gICAgICAgYmxrLT5zaXplID0gcmVhZF8yX2J5dGVzIChhYmZkLCBpbmZvX3B0ciwgaW5mb19wdHJfZW5kKTsKLSAgICAgICBpbmZvX3B0ciArPSAyOwotLSAgICAgIGJsay0+ZGF0YSA9IHJlYWRfbl9ieXRlcyAoYWJmZCwgaW5mb19wdHIsIGluZm9fcHRyX2VuZCwgYmxrLT5zaXplKTsKLS0gICAgICBpbmZvX3B0ciArPSBibGstPnNpemU7Ci0rICAgICAgaW5mb19wdHIgPSByZWFkX25fYnl0ZXMgKGluZm9fcHRyLCBpbmZvX3B0cl9lbmQsIGJsayk7Ci0gICAgICAgYXR0ci0+dS5ibGsgPSBibGs7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdfRk9STV9ibG9jazQ6Ci1AQCAtMTEzOCw4ICsxMTQ3LDcgQEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKgotIAlyZXR1cm4gTlVMTDsKLSAgICAgICBibGstPnNpemUgPSByZWFkXzRfYnl0ZXMgKGFiZmQsIGluZm9fcHRyLCBpbmZvX3B0cl9lbmQpOwotICAgICAgIGluZm9fcHRyICs9IDQ7Ci0tICAgICAgYmxrLT5kYXRhID0gcmVhZF9uX2J5dGVzIChhYmZkLCBpbmZvX3B0ciwgaW5mb19wdHJfZW5kLCBibGstPnNpemUpOwotLSAgICAgIGluZm9fcHRyICs9IGJsay0+c2l6ZTsKLSsgICAgICBpbmZvX3B0ciA9IHJlYWRfbl9ieXRlcyAoaW5mb19wdHIsIGluZm9fcHRyX2VuZCwgYmxrKTsKLSAgICAgICBhdHRyLT51LmJsayA9IGJsazsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBEV19GT1JNX2RhdGEyOgotQEAgLTExNzksOCArMTE4Nyw3IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChzdHJ1Y3QgYXR0cmlidXRlICoKLSAgICAgICBibGstPnNpemUgPSBfYmZkX3NhZmVfcmVhZF9sZWIxMjggKGFiZmQsIGluZm9fcHRyLCAmYnl0ZXNfcmVhZCwKLSAJCQkJCSBGQUxTRSwgaW5mb19wdHJfZW5kKTsKLSAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwotLSAgICAgIGJsay0+ZGF0YSA9IHJlYWRfbl9ieXRlcyAoYWJmZCwgaW5mb19wdHIsIGluZm9fcHRyX2VuZCwgYmxrLT5zaXplKTsKLS0gICAgICBpbmZvX3B0ciArPSBibGstPnNpemU7Ci0rICAgICAgaW5mb19wdHIgPSByZWFkX25fYnl0ZXMgKGluZm9fcHRyLCBpbmZvX3B0cl9lbmQsIGJsayk7Ci0gICAgICAgYXR0ci0+dS5ibGsgPSBibGs7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdfRk9STV9ibG9jazE6Ci1AQCAtMTE5MCw4ICsxMTk3LDcgQEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKgotIAlyZXR1cm4gTlVMTDsKLSAgICAgICBibGstPnNpemUgPSByZWFkXzFfYnl0ZSAoYWJmZCwgaW5mb19wdHIsIGluZm9fcHRyX2VuZCk7Ci0gICAgICAgaW5mb19wdHIgKz0gMTsKLS0gICAgICBibGstPmRhdGEgPSByZWFkX25fYnl0ZXMgKGFiZmQsIGluZm9fcHRyLCBpbmZvX3B0cl9lbmQsIGJsay0+c2l6ZSk7Ci0tICAgICAgaW5mb19wdHIgKz0gYmxrLT5zaXplOwotKyAgICAgIGluZm9fcHRyID0gcmVhZF9uX2J5dGVzIChpbmZvX3B0ciwgaW5mb19wdHJfZW5kLCBibGspOwotICAgICAgIGF0dHItPnUuYmxrID0gYmxrOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIERXX0ZPUk1fZGF0YTE6Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC02LDYgKzYsMTQgQEAKLSAKLSAyMDE4LTAyLTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSsgICAgICAgUFIgMjI4OTUKLSsgICAgICAgUFIgMjI4OTMKLSsgICAgICAgKiBkd2FyZjIuYyAocmVhZF9uX2J5dGVzKTogUmVwbGFjZSBzaXplIHBhcmFtZXRlciB3aXRoIGR3YXJmX2Jsb2NrCi0rICAgICAgIHBvaW50ZXIuICBEcm9wIHVudXNlZCBhYmZkIHBhcmFtZXRlci4gIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9jawotKyAgICAgICBiZWZvcmUgaW5pdGlhbGlzaW5nIHRoZSBkYXRhIGZpZWxkLiAgUmV0dXJuIHRoZSBlbmQgcG9pbnRlciBpZiB0aGUKLSsgICAgICAgc2l6ZSBpcyBpbnZhbGlkLgotKyAgICAgICAocmVhZF9hdHRyaWJ1dGVfdmFsdWUpOiBBZGp1c3QgaW52b2NhdGlvbnMgb2YgcmVhZF9uX2J5dGVzLgotKwotICAgICAgICBQUiAyMjg4NwotICAgICAgICAqIGFvdXR4LmggKHN3YXBfc3RkX3JlbG9jX2luKTogQ29ycmVjdCByX2luZGV4IGJvdW5kIGNoZWNrLgotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzY0Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc2NDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZWY0NmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzY0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMTE2YWNiMmMyNjhjODljODkxODY2NzNhN2M5MjYyMGQyMTgyNWIyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIyOjA5OjUwICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjI4ODcsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbgotIGFvdXRfMzJfc3dhcF9zdGRfcmVsb2Nfb3V0Ci0KLQlQUiAyMjg4NwotCSogYW91dHguaCAoc3dhcF9zdGRfcmVsb2NfaW4pOiBDb3JyZWN0IHJfaW5kZXggYm91bmQgY2hlY2suCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtNzY0MgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCA1ICsrKysrCi0gYmZkL2FvdXR4LmggICB8IDYgKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL2FvdXR4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvYW91dHguaAotKysrIGdpdC9iZmQvYW91dHguaAotQEAgLTIyODQsMTAgKzIyODQsMTIgQEAgTkFNRSAoYW91dCwgc3dhcF9zdGRfcmVsb2NfaW4pIChiZmQgKmFiZgotICAgaWYgKHJfYmFzZXJlbCkKLSAgICAgcl9leHRlcm4gPSAxOwotIAotLSAgaWYgKHJfZXh0ZXJuICYmIHJfaW5kZXggPiBzeW1jb3VudCkKLSsgIGlmIChyX2V4dGVybiAmJiByX2luZGV4ID49IHN5bWNvdW50KQotICAgICB7Ci0gICAgICAgLyogV2UgY291bGQgYXJyYW5nZSB0byByZXR1cm4gYW4gZXJyb3IsIGJ1dCBpdCBtaWdodCBiZSB1c2VmdWwKLS0JIHRvIHNlZSB0aGUgZmlsZSBldmVuIGlmIGl0IGlzIGJhZC4gICovCi0rCSB0byBzZWUgdGhlIGZpbGUgZXZlbiBpZiBpdCBpcyBiYWQuICBGSVhNRTogT2YgY291cnNlIHRoaXMKLSsJIG1lYW5zIHRoYXQgb2JqZHVtcCAtciAqZG9lc24ndCogc2VlIHRoZSBhY3R1YWwgcmVsb2MsIGFuZAotKwkgb2JqY29weSBzaWxlbnRseSB3cml0ZXMgYSBkaWZmZXJlbnQgcmVsb2MuICAqLwotICAgICAgIHJfZXh0ZXJuID0gMDsKLSAgICAgICByX2luZGV4ID0gTl9BQlM7Ci0gICAgIH0KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxOC0wMi0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rICAgICAgIFBSIDIyODg3Ci0rICAgICAgICogYW91dHguaCAoc3dhcF9zdGRfcmVsb2NfaW4pOiBDb3JyZWN0IHJfaW5kZXggYm91bmQgY2hlY2suCi0rCi0gMjAxOC0wMi0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgMjI3OTQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc2NDMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NjQzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTJkZWMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc2NDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBkMTFhZTk1ZWEzNDAzNTU5ZjA1MjkwM2FiMDUzZjQzYWQ3ODIxZTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxIE1hciAyMDE4IDE2OjE0OjA4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgaWxsZWdhbCBtZW1vcnkgYWNjZXNzZXMgdHJpZ2dlcmQgYnkgaW50Z2VyIG92ZXJmbG93Ci0gd2hlbiBwYXJzaW5nIGNvcnJ1cHQgRFdBUkYgaW5mb3JtYXRpb24gb24gYSAzMi1iaXQgaG9zdC4KLQotCVBSIDIyOTA1Ci0JKiBkd2FyZi5jIChkaXNwbGF5X2RlYnVnX3Jhbmdlcyk6IENoZWNrIHRoYXQgdGhlIG9mZnNldCBsb2FkZWQKLQlmcm9tIHRoZSByYW5nZV9lbnRyeSBzdHJ1Y3R1cmUgaXMgdmFsaWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtNzY0MwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8ICA2ICsrKysrKwotIGJpbnV0aWxzL2R3YXJmLmMgICB8IDE1ICsrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L2JpbnV0aWxzL2R3YXJmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9kd2FyZi5jCi0rKysgZ2l0L2JpbnV0aWxzL2R3YXJmLmMKLUBAIC0zODcsNiArMzg3LDkgQEAgcmVhZF91bGViMTI4ICh1bnNpZ25lZCBjaGFyICogZGF0YSwKLSAgICAgfQkJCQkJCQkJXAotICAgd2hpbGUgKDApCi0gCi0rLyogUmVhZCBBTU9VTlQgYnl0ZXMgZnJvbSBQVFIgYW5kIHN0b3JlIHRoZW0gaW4gVkFMIGFzIGFuIHVuc2lnbmVkIHZhbHVlLgotKyAgIENoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVhZCB3aWxsIG5vdCByZWFjaCBvciBwYXNzIEVORAotKyAgIGFuZCB0aGF0IFZBTCBpcyBiaWcgZW5vdWdoIHRvIGhvbGQgQU1PVU5UIGJ5dGVzLiAgKi8KLSAjZGVmaW5lIFNBRkVfQllURV9HRVQoVkFMLCBQVFIsIEFNT1VOVCwgRU5EKQlcCi0gICBkbwkJCQkJCVwKLSAgICAgewkJCQkJCVwKLUBAIC00MTUsNiArNDE4LDcgQEAgcmVhZF91bGViMTI4ICh1bnNpZ25lZCBjaGFyICogZGF0YSwKLSAgICAgfQkJCQkJCVwKLSAgIHdoaWxlICgwKQotIAotKy8qIExpa2UgU0FGRV9CWVRFX0dFVCwgYnV0IGFsc28gaW5jcmVtZW50cyBQVFIgYnkgQU1PVU5ULiAgKi8KLSAjZGVmaW5lIFNBRkVfQllURV9HRVRfQU5EX0lOQyhWQUwsIFBUUiwgQU1PVU5ULCBFTkQpCVwKLSAgIGRvCQkJCQkJCVwKLSAgICAgewkJCQkJCQlcCi1AQCAtNDIzLDYgKzQyNyw3IEBAIHJlYWRfdWxlYjEyOCAodW5zaWduZWQgY2hhciAqIGRhdGEsCi0gICAgIH0JCQkJCQkJXAotICAgd2hpbGUgKDApCi0gCi0rLyogTGlrZSBTQUZFX0JZVEVfR0VULCBidXQgcmVhZHMgYSBzaWduZWQgdmFsdWUuICAqLwotICNkZWZpbmUgU0FGRV9TSUdORURfQllURV9HRVQoVkFMLCBQVFIsIEFNT1VOVCwgRU5EKQlcCi0gICBkbwkJCQkJCQlcCi0gICAgIHsJCQkJCQkJXAotQEAgLTQ0MSw2ICs0NDYsNyBAQCByZWFkX3VsZWIxMjggKHVuc2lnbmVkIGNoYXIgKiBkYXRhLAotICAgICB9CQkJCQkJCVwKLSAgIHdoaWxlICgwKQotIAotKy8qIExpa2UgU0FGRV9TSUdORURfQllURV9HRVQsIGJ1dCBhbHNvIGluY3JlbWVudHMgUFRSIGJ5IEFNT1VOVC4gICovCi0gI2RlZmluZSBTQUZFX1NJR05FRF9CWVRFX0dFVF9BTkRfSU5DKFZBTCwgUFRSLCBBTU9VTlQsIEVORCkJXAotICAgZG8JCQkJCQkJCVwKLSAgICAgewkJCQkJCQkJXAotQEAgLTY1NDMsNiArNjU0OSw3IEBAIGRpc3BsYXlfZGVidWdfcmFuZ2VzX2xpc3QgKHVuc2lnbmVkIGNoYXIKLSAJYnJlYWs7Ci0gICAgICAgU0FGRV9TSUdORURfQllURV9HRVRfQU5EX0lOQyAoZW5kLCBzdGFydCwgcG9pbnRlcl9zaXplLCBmaW5pc2gpOwotIAotKyAgICAgIAotICAgICAgIHByaW50ZiAoIiAgICAlOC44bHggIiwgb2Zmc2V0KTsKLSAKLSAgICAgICBpZiAoYmVnaW4gPT0gMCAmJiBlbmQgPT0gMCkKLUBAIC02ODEwLDYgKzY4MTcsMTMgQEAgZGlzcGxheV9kZWJ1Z19yYW5nZXMgKHN0cnVjdCBkd2FyZl9zZWN0aQotIAkgIGNvbnRpbnVlOwotIAl9Ci0gCi0rICAgICAgaWYgKG5leHQgPCBzZWN0aW9uX2JlZ2luIHx8IG5leHQgPj0gZmluaXNoKQotKwl7Ci0rCSAgd2FybiAoXygiQ29ycnVwdCBvZmZzZXQgKCUjOC44bHgpIGluIHJhbmdlIGVudHJ5ICV1XG4iKSwKLSsJCSh1bnNpZ25lZCBsb25nKSBvZmZzZXQsIGkpOwotKwkgIGNvbnRpbnVlOwotKwl9Ci0rCi0gICAgICAgaWYgKGR3YXJmX2NoZWNrICE9IDAgJiYgaSA+IDApCi0gCXsKLSAJICBpZiAoc3RhcnQgPCBuZXh0KQotQEAgLTY4MjUsNiArNjgzOSw3IEBAIGRpc3BsYXlfZGVidWdfcmFuZ2VzIChzdHJ1Y3QgZHdhcmZfc2VjdGkKLSAJCSAgICAodW5zaWduZWQgbG9uZykgKG5leHQgLSBzZWN0aW9uX2JlZ2luKSwgc2VjdGlvbi0+bmFtZSk7Ci0gCSAgICB9Ci0gCX0KLSsKLSAgICAgICBzdGFydCA9IG5leHQ7Ci0gICAgICAgbGFzdF9zdGFydCA9IG5leHQ7Ci0gCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTgtMDMtMDEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIDIyOTA1Ci0rICAgICAgICogZHdhcmYuYyAoZGlzcGxheV9kZWJ1Z19yYW5nZXMpOiBDaGVjayB0aGF0IHRoZSBvZmZzZXQgbG9hZGVkCi0rICAgICAgIGZyb20gdGhlIHJhbmdlX2VudHJ5IHN0cnVjdHVyZSBpcyB2YWxpZC4KLSsKLSAyMDE4LTA1LTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiAyMjgwOQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtODk0NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTg5NDUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNDMxNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtODk0NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gOTVhNmQyMzU2NjE2NTIwODg1M2E2OGQ5Y2QzYzZlZWRjYTg0MGVjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgOCBNYXkgMjAxOCAxMjo1MTowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGEgbWVtb3J5IGV4aGF1c3Rpb24gZmFpbHVyZSB3aGVuIHJ1bm5pbmcgb2JqZHVtcCBvbiBhCi0gZnV6emVkIGlucHV0IGZpbGUgd2l0aCBjb3JydXB0IHN0cmluZyBhbmQgYXR0cmlidXRlIHNlY3Rpb25zLgotCi0JUFIgMjI4MDkKLQkqIGVsZi5jIChiZmRfZWxmX2dldF9zdHJfc2VjdGlvbik6IENoZWNrIGZvciBhbiBleGNlc3NpdmVseSBsYXJnZQotCXN0cmluZyBzZWN0aW9uLgotCSogZWxmLWF0dHJzLmMgKF9iZmRfZWxmX3BhcnNlX2F0dHJpYnV0ZXMpOiBJc3N1ZSBhbiBlcnJvciBpZiB0aGUKLQlhdHRyaWJ1dGUgc2VjdGlvbiBpcyBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4KLQotVXBzdGVyYW0tU3RhdHVzOiBCYWNrcG9ydAotQWZmZWN0czogQmludXRpbHMgPD0gMi4zMAotQ1ZFOiBDVkUtMjAxOC04OTQ1Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBrdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLS0tLQotIGJmZC9DaGFuZ2VMb2cgICB8IDggKysrKysrKysKLSBiZmQvZWxmLWF0dHJzLmMgfCA5ICsrKysrKysrKwotIGJmZC9lbGYuYyAgICAgICB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L2JmZC9lbGYtYXR0cnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYtYXR0cnMuYwotKysrIGdpdC9iZmQvZWxmLWF0dHJzLmMKLUBAIC00MzgsNiArNDM4LDE1IEBAIF9iZmRfZWxmX3BhcnNlX2F0dHJpYnV0ZXMgKGJmZCAqYWJmZCwgRWwKLSAgIC8qIFBSIDE3NTEyOiBmaWxlOiAyODQ0YTExZC4gICovCi0gICBpZiAoaGRyLT5zaF9zaXplID09IDApCi0gICAgIHJldHVybjsKLSsgIGlmIChoZHItPnNoX3NpemUgPiBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0rICAgIHsKLSsgICAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwotKyAgICAgIF9iZmRfZXJyb3JfaGFuZGxlciAoXygiJXBCOiBlcnJvcjogYXR0cmlidXRlIHNlY3Rpb24gJyVwQScgdG9vIGJpZzogJSNsbHgiKSwKLSsJCQkgIGFiZmQsIGhkci0+YmZkX3NlY3Rpb24sIChsb25nIGxvbmcpIGhkci0+c2hfc2l6ZSk7Ci0rICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgIGNvbnRlbnRzID0gKGJmZF9ieXRlICopIGJmZF9tYWxsb2MgKGhkci0+c2hfc2l6ZSArIDEpOwotICAgaWYgKCFjb250ZW50cykKLSAgICAgcmV0dXJuOwotSW5kZXg6IGdpdC9iZmQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLmMKLSsrKyBnaXQvYmZkL2VsZi5jCi1AQCAtMjk4LDYgKzI5OCw3IEBAIGJmZF9lbGZfZ2V0X3N0cl9zZWN0aW9uIChiZmQgKmFiZmQsIHVuc2kKLSAgICAgICAvKiBBbGxvY2F0ZSBhbmQgY2xlYXIgYW4gZXh0cmEgYnl0ZSBhdCB0aGUgZW5kLCB0byBwcmV2ZW50IGNyYXNoZXMKLSAJIGluIGNhc2UgdGhlIHN0cmluZyB0YWJsZSBpcyBub3QgdGVybWluYXRlZC4gICovCi0gICAgICAgaWYgKHNoc3RydGFic2l6ZSArIDEgPD0gMQotKwkgIHx8IHNoc3RydGFic2l6ZSA+IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKQotIAkgIHx8IGJmZF9zZWVrIChhYmZkLCBvZmZzZXQsIFNFRUtfU0VUKSAhPSAwCi0gCSAgfHwgKHNoc3RydGFiID0gKGJmZF9ieXRlICopIGJmZF9hbGxvYyAoYWJmZCwgc2hzdHJ0YWJzaXplICsgMSkpID09IE5VTEwpCi0gCXNoc3RydGFiID0gTlVMTDsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTgtMDUtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIDIyODA5Ci0rICAgICAgICogZWxmLmMgKGJmZF9lbGZfZ2V0X3N0cl9zZWN0aW9uKTogQ2hlY2sgZm9yIGFuIGV4Y2Vzc2l2ZWx5IGxhcmdlCi0rICAgICAgIHN0cmluZyBzZWN0aW9uLgotKyAgICAgICAqIGVsZi1hdHRycy5jIChfYmZkX2VsZl9wYXJzZV9hdHRyaWJ1dGVzKTogSXNzdWUgYW4gZXJyb3IgaWYgdGhlCi0rICAgICAgIGF0dHJpYnV0ZSBzZWN0aW9uIGlzIGxhcmdlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBmaWxlLgotKwotIDIwMTgtMDItMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlSZXZlcnQgMjAxOC0wMS0xNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgppbmRleCBjYzE1NWYwLi5mMWIwNWRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgpAQCAtMzYsNCArMzYsOCBAQAogCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKIAkJQklTT05fUEtHREFUQURJUj0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Jpc29uCiB9Citkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAorCQlCSVNPTl9QS0dEQVRBRElSPSR7ZGF0YWRpcn0vYmlzb24KK30KIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyLzAwMDEtRml4ZWQtTWlzc2luZy1kZWZhdWx0LXZhbHVlLWZvci1CT09UTE9HX0RFU1QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExODgxNGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyLzAwMDEtRml4ZWQtTWlzc2luZy1kZWZhdWx0LXZhbHVlLWZvci1CT09UTE9HX0RFU1QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDIyMjVhYjIwMzhiZmU1MGYxNmY5NzJlMzlkODliY2QwYmQ3NzY3ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmZmVuIFBhbmtyYXR6IDxrcmF0ejAwQGdteC5kZT4KLURhdGU6IFR1ZSwgOSBGZWIgMjAxNiAxMzo0OTo0MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZDogTWlzc2luZyBkZWZhdWx0IHZhbHVlIGZvciBCT09UTE9HX0RFU1QKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1CVUlMRExPR19ERVNUIHNlZW1zIHRvIGJlIGEgdHlwbyBvciBtaXgtdXAgd2hpY2ggd2FzIGludHJvZHVjZWQgd2l0aCAyODFkMWRmODA4ODRiZjI5NjljNTA5ZWM2MGVlOGE2NTkzNTI0ZmU4Ci0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+Ci0tLS0KLSBib290Y2hhcnRkLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYm9vdGNoYXJ0ZC5pbiBiL2Jvb3RjaGFydGQuaW4KLWluZGV4IGY1OGFiOWUuLjMwYWY2NzcgMTAwNzU1Ci0tLS0gYS9ib290Y2hhcnRkLmluCi0rKysgYi9ib290Y2hhcnRkLmluCi1AQCAtMzcsNyArMzcsNyBAQCBQQVRIPSIvc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbjokUEFUSCIKLSAKLSAjIERlZmF1bHRzLCBpbiBjYXNlIHdlIGNhbid0IGZpbmQgb3VyIGNvbmZpZ3VyYXRpb24KLSBTQU1QTEVfSFo9NTAKLS1CVUlMRExPR19ERVNUPS92YXIvbG9nL2Jvb3RjaGFydC50Z3oKLStCT09UTE9HX0RFU1Q9L3Zhci9sb2cvYm9vdGNoYXJ0LnRnegotIEFVVE9fUkVOREVSPSJubyIKLSBBVVRPX1JFTkRFUl9ESVI9Ii92YXIvbG9nIgotIEFVVE9fUkVOREVSX0ZPUk1BVD0icG5nIgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgppbmRleCBiM2M4ODliLi4zOTZkMGVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKQEAgLTkyLDEyICs5MiwxMiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veHJteC9ib290Y2hhcnQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jvb3RjaGFydGRfc3RvcC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29sbGVjdG9yLUFsbG9jYXRlLXNwYWNlLW9uLWhlYXAtZm9yLWNodW5rcy5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gIjQ4ZTAwNzEwNDg1NjRjNmFmNzVhYjk2OWU4NDJkNmRlYzgwOGRhMDkiCitTUkNSRVYgPSAiMzMxYWRhMDMxZjFkNjVmNmQ5MzRkOTE4Zjg5NmUxYzcwOGM2NGJmNyIKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCiAKIGluaGVyaXQgc3lzdGVtZCB1cGRhdGUtcmMuZCBweXRob24zbmF0aXZlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1BZGQtTERGTEFHUy13aGVuLWJ1aWxkaW5nLWxpYmJ0cmZzdXRpbC5zby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtQWRkLUxERkxBR1Mtd2hlbi1idWlsZGluZy1saWJidHJmc3V0aWwuc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThmY2ZjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtQWRkLUxERkxBR1Mtd2hlbi1idWlsZGluZy1saWJidHJmc3V0aWwuc28ucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBlZWNjNDhlY2FkMzU5Y2Q0ZmFiNjUwY2U0OWNmZTU3ZTk5ZDE4NTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE3IE1heSAyMDE4IDEyOjIxOjMxICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBMREZMQUdTIHdoZW4gYnVpbGRpbmcgbGliYnRyZnN1dGlsLnNvIGFuZCBweXRob24KKyBiaW5kaW5ncy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMTBmMGUzYjAuLjE2OTc3OTRjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNDAyLDcgKzQwMiw3IEBAIGxpYmJ0cmZzdXRpbC8lLm86IGxpYmJ0cmZzdXRpbC8lLmMKKyAKKyBsaWJidHJmc3V0aWwuc28uJChsaWJidHJmc3V0aWxfdmVyc2lvbik6ICQobGliYnRyZnN1dGlsX29iamVjdHMpCisgCUBlY2hvICIgICAgW0xEXSAgICAgJEAiCistCSQoUSkkKENDKSAkKExJQkJUUkZTVVRJTF9DRkxBR1MpICQobGliYnRyZnN1dGlsX29iamVjdHMpIFwKKysJJChRKSQoQ0MpICQoTElCQlRSRlNVVElMX0NGTEFHUykgJChMREZMQUdTKSAkKGxpYmJ0cmZzdXRpbF9vYmplY3RzKSBcCisgCQktc2hhcmVkIC1XbCwtc29uYW1lLGxpYmJ0cmZzdXRpbC5zby4kKGxpYmJ0cmZzdXRpbF9tYWpvcikgLW8gJEAKKyAKKyBsaWJidHJmc3V0aWwuYTogJChsaWJidHJmc3V0aWxfb2JqZWN0cykKK0BAIC00MTcsNyArNDE3LDcgQEAgaWZlcSAoJChQWVRIT05fQklORElOR1MpLDEpCisgbGliYnRyZnN1dGlsX3B5dGhvbjogbGliYnRyZnN1dGlsLnNvLiQobGliYnRyZnN1dGlsX21ham9yKSBsaWJidHJmc3V0aWwuc28gbGliYnRyZnN1dGlsL2J0cmZzdXRpbC5oCisgCUBlY2hvICIgICAgW1BZXSAgICAgbGliYnRyZnN1dGlsIgorIAkkKFEpY2QgbGliYnRyZnN1dGlsL3B5dGhvbjsgXAorLQkJQ0ZMQUdTPSBMREZMQUdTPSAkKFBZVEhPTikgc2V0dXAucHkgJChTRVRVUF9QWV9RKSBidWlsZF9leHQgLWkgYnVpbGQKKysJCUNGTEFHUz0gJChQWVRIT04pIHNldHVwLnB5ICQoU0VUVVBfUFlfUSkgYnVpbGRfZXh0IC1pIGJ1aWxkCisgCisgLlBIT05ZOiBsaWJidHJmc3V0aWxfcHl0aG9uCisgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODQ2ZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1BZGQtYS1wb3NzaWJpbGl0eS10by1zcGVjaWZ5LXdoZXJlLXB5dGhvbi1tb2R1bGVzLWFyLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gZDNhZGZjMjFjOWNjMjY0YmQxOTE3MjJmMTAyOTYzY2JjNDc5NDI1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBNYXkgMjAxOCAyMToyMDozNSArMDMwMAorU3ViamVjdDogW1BBVENIXSBBZGQgYSBwb3NzaWJpbGl0eSB0byBzcGVjaWZ5IHdoZXJlIHB5dGhvbiBtb2R1bGVzIGFyZQorIGluc3RhbGxlZAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWMgdG8gc29sdmUgbXVsdGlsaWIgdXNlIGNhc2VdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMTY5Nzc5NGMuLjhhYjM4ODE4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNjUxLDcgKzY1MSw3IEBAIGVuZGlmCisgaWZlcSAoJChQWVRIT05fQklORElOR1MpLDEpCisgaW5zdGFsbF9weXRob246IGxpYmJ0cmZzdXRpbF9weXRob24KKyAJJChRKWNkIGxpYmJ0cmZzdXRpbC9weXRob247IFwKKy0JCSQoUFlUSE9OKSBzZXR1cC5weSBpbnN0YWxsIC0tc2tpcC1idWlsZCAkKGlmICQoREVTVERJUiksLS1yb290ICQoREVTVERJUikpIC0tcHJlZml4ICQocHJlZml4KQorKwkJJChQWVRIT04pIHNldHVwLnB5IGluc3RhbGwgLS1za2lwLWJ1aWxkICQoaWYgJChERVNURElSKSwtLXJvb3QgJChERVNURElSKSkgLS1wcmVmaXggJChwcmVmaXgpIC0taW5zdGFsbC1saWI9JChQWVRIT05fU0lURVBBQ0tBR0VTX0RJUikKKyAKKyAuUEhPTlk6IGluc3RhbGxfcHl0aG9uCisgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkwNjc2Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGJjMzVjNGNhZWJiNTdjYzhiOTZjMzBjMjU0MzJiMTJjYThkYzE4ZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgNiBPY3QgMjAxNyAxNTowMzo0OSArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsIChtaXNzaW5nIGhlYWRlciBpbmNsdWRlIGZvciBkZXZfdCkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb252ZXJ0L3NvdXJjZS1mcy5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9jb252ZXJ0L3NvdXJjZS1mcy5oIGIvY29udmVydC9zb3VyY2UtZnMuaAotaW5kZXggMjNmMzM1Ni4uNmZkNzcwZiAxMDA2NDQKLS0tLSBhL2NvbnZlcnQvc291cmNlLWZzLmgKLSsrKyBiL2NvbnZlcnQvc291cmNlLWZzLmgKLUBAIC0yMCw2ICsyMCw3IEBACi0gI2luY2x1ZGUgImtlcm5jb21wYXQuaCIKLSAjaW5jbHVkZSA8bGludXgva2Rldl90Lmg+Ci0gI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2RlZmluZSBDT05WX0lNQUdFX1NVQlZPTF9PQkpFQ1RJRCBCVFJGU19GSVJTVF9GUkVFX09CSkVDVElECi0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEzLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEzLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMTU3ZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAotaW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCi1lYXN5IGFkbWluaXN0cmF0aW9uLiBcCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAotYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKLVJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLQotU1JDUkVWID0gImE3YTFlYTBmNGYyYTFkNmVlZWIzZDEwNmUwNjJjN2YxMDM0ZjE2ZDQiCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiV2FpdGluZyBmb3IgcmVzb2x1dGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20va2RhdmUvYnRyZnMtcHJvZ3MvaXNzdWVzLzEwOSIKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgotCW1rZGlyIC1wICR7U30vY29uZmlnCi0JY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KLX0KLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjE3LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjE3LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI1M2ZiYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTcuMS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCitpbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKK2Vhc3kgYWRtaW5pc3RyYXRpb24uIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCitidHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKK1NFQ1RJT04gPSAiYmFzZSIKK0RFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCisKK1NSQ1JFViA9ICI3ZmFhY2EwZDlmNzhmNzE2MmFlNjAzMjMxZjY5M2RkOGUxYWYyYTQxIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1MREZMQUdTLXdoZW4tYnVpbGRpbmctbGliYnRyZnN1dGlsLnNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaCBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcyBkaXN0dXRpbHMzLWJhc2UKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS16c3RkIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KKwlta2RpciAtcCAke1N9L2NvbmZpZworCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCit9CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBpbnN0YWxsX3B5dGhvbgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjlmMGYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIGNjYWNoZS5pbmMKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZGFlMzc5YTg1YmI2ZTlkNTk0NzczZTBhYTY0ODc2ZjYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZWU1OGRiN2NjZTg5MmZlYmRkYjk4OTMwOGRjNTY4ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTA1NzZhNmU5Mzg3NjBlYzgxMTM1MjNlNmZkMzgwMTQxMTE3MzAzZTkwNzY2Y2M0ODAyZTc3MDQyMmIzMGM2IgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICAgZmlsZTovLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2ggXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzMDkzNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy40LjIuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBjY2FjaGUuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5hZG9jO21kNT0yNzIyYWJlYWYxNzUwZGJmMTc1Yjk0OTExMTIzNzRlMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjllMDQ4Zjg4ZjM4OTcxMjU4NjRmOWE1ZTFhYmZiNzJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4YThiMTQzNjdkNjNkM2QzN2ZiNmMzM2NiYTYwZTFiN2ZjZDdhNjNkNjA4ZGY5N2M5NzcxYWUwZDIzNGZlZTIiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoCmluZGV4IDNmMDFjNjkuLjY4YzIzNzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3MWJkMDA4MmM2ZWRjZjczZjA1NGE4YTRmYTM0YmQ4ZGQ0ZGU3Y2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZGFiMjk5NWVkOGVlY2NkN2IwYWNkNzk2NjhiYzI4ZjNhMjQyN2Q1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDE2IFNlcCAyMDE1IDE5OjQ1OjQwIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRldi5tay5pbjogZml4IGZpbGUgbmFtZSB0b28gbG9uZwpAQCAtMTAsMTQgKzEwLDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGRldi5tay5pbiB8ICAgIDIgKy0KKyBkZXYubWsuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBjY2FjaGUtMy4zLjQvZGV2Lm1rLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY2NhY2hlLTMuMy40Lm9yaWcvZGV2Lm1rLmluCi0rKysgY2NhY2hlLTMuMy40L2Rldi5tay5pbgorZGlmZiAtLWdpdCBhL2Rldi5tay5pbiBiL2Rldi5tay5pbgoraW5kZXggOTFiMGE1Ny4uNTgzYWRlMCAxMDA2NDQKKy0tLSBhL2Rldi5tay5pbgorKysrIGIvZGV2Lm1rLmluCiBAQCAtMSw3ICsxLDcgQEAKICAjIEdOVSBtYWtlIHN5bnRheCByZWlnbnMgaW4gdGhpcyBmaWxlLgogIApAQCAtMjUsNSArMjYsNSBAQAogLWFsbF9jcHBmbGFncyArPSAtTUQgLU1QIC1NRiAuZGVwcy8kKHN1YnN0IC4uXywsJChzdWJzdCAvLF8sJDwpKS5kCiArYWxsX2NwcGZsYWdzICs9IC1NRCAtTVAgLU1GIC5kZXBzLyQoc3Vic3QgLi5fLCwkKHN1YnN0IC8sXywkKHN1YnN0ICQoc3JjZGlyKS8sLCQ8KSkpLmQKICAKKyBBMlggPSBhMngKICBBU0NJSURPQyA9IGFzY2lpZG9jCi0gQ1BQQ0hFQ0sgPSBjcHBjaGVjawpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvUmV2ZXJ0LUNyZWF0ZS1tYW4tcGFnZS1pbi10aGUtbWFrZS1pbnN0YWxsLWZyb20tZ2l0LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAyMDhiOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvUmV2ZXJ0LUNyZWF0ZS1tYW4tcGFnZS1pbi10aGUtbWFrZS1pbnN0YWxsLWZyb20tZ2l0LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOTRmYWJjZGRhNWM3ZTU0Y2NkYmMxZjBhZWNjYjI2Y2UzMGU2MTIyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxOCBKdWwgMjAxNiAxOTo1MzowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIkNyZWF0ZSBtYW4gcGFnZSBpbiB0aGUgbWFrZS1pbnN0YWxsLWZyb20tZ2l0LXJlcG8KLSBjYXNlIgotCi1UaGlzIHJldmVydHMgY29tbWl0IGI4Njc4NDkwMmQyOGRlZmQ1ZTQ3NWM4OTIyZGU1OTQ3ODdkZjQ1NDEuCi0KLVdlIGRvbnQnIGhhdmUgYXNjaWlkb2MsIHNvIHJldmVydCBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1Db3JlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggZDQ3NGYyYS4uYzZjZGMwNCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTc2LDcgKzc2LDcgQEAgY2NhY2hlJChFWEVFWFQpOiAkKGNjYWNoZV9vYmpzKSAkKGV4dHJhX2xpYnMpCi0gCSQoQ0MpICQoYWxsX2NmbGFncykgLW8gJEAgJChjY2FjaGVfb2JqcykgJChMREZMQUdTKSAkKGV4dHJhX2xpYnMpICQoTElCUykKLSAKLSAuUEhPTlk6IGluc3RhbGwKLS1pbnN0YWxsOiBhbGwgJChzcmNkaXIpL2NjYWNoZS4xCi0raW5zdGFsbDogYWxsCi0gCSQoaW5zdGFsbGNtZCkgLWQgJChERVNURElSKSQoYmluZGlyKQotIAkkKGluc3RhbGxjbWQpIC1tIDc1NSBjY2FjaGUkKEVYRUVYVCkgJChERVNURElSKSQoYmluZGlyKQotIAkkKGluc3RhbGxjbWQpIC1kICQoREVTVERJUikkKG1hbmRpcikvbWFuMQotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU1ZThiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotcmVxdWlyZSBjbWFrZS5pbmMKLWluaGVyaXQgbmF0aXZlCi0KLURFUEVORFMgKz0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSBleHBhdC1uYXRpdmUgeHotbmF0aXZlIHpsaWItbmF0aXZlIGN1cmwtbmF0aXZlIgotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2NtbGliYXJjaGl2ZS1kaXNhYmxlLWV4dDJmcy5wYXRjaCBcCi0iCi0KLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCi0KLSMgRGlzYWJsZSBjY21ha2Ugc2luY2Ugd2UgZG9uJ3QgZGVwZW5kIG9uIG5jdXJzZXMKLUNNQUtFX0VYVFJBQ09ORiA9ICJcCi0gICAgLURDTUFLRV9MSUJSQVJZX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgICAtREJVSUxEX0N1cnNlc0RpYWxvZz0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSSUVTPTEgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0pTT05DUFA9MCBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCQVJDSElWRT0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJSSEFTSD0wIFwKLSAgICAtREVOQUJMRV9BQ0w9MCAtREhBVkVfQUNMX0xJQkFDTF9IPTAgXAotICAgIC1ESEFWRV9TWVNfQUNMX0g9MCBcCi0iCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JJHtTfS9jb25maWd1cmUgLS12ZXJib3NlIC0tcHJlZml4PSR7cHJlZml4fSAtLSAke0NNQUtFX0VYVFJBQ09ORn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLWRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gInBlcmNlbnQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTEzOTBmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTIuMi5iYgpAQCAtMCwwICsxLDUwIEBACityZXF1aXJlIGNtYWtlLmluYworaW5oZXJpdCBuYXRpdmUKKworREVQRU5EUyArPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGV4cGF0LW5hdGl2ZSB4ei1uYXRpdmUgemxpYi1uYXRpdmUgY3VybC1uYXRpdmUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSBcCisgICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LURpc2FibGUtdXNlLW9mLWV4dDJmcy1leHQyX2ZzLmgtYnktY21ha2Utcy1pbnRlcm5hbC0ucGF0Y2ggXAorICAgICAgICAgICAgIgorCisKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCisKKyMgRGlzYWJsZSBjY21ha2Ugc2luY2Ugd2UgZG9uJ3QgZGVwZW5kIG9uIG5jdXJzZXMKK0NNQUtFX0VYVFJBQ09ORiA9ICJcCisgICAgLURDTUFLRV9MSUJSQVJZX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKKyAgICAtREJVSUxEX0N1cnNlc0RpYWxvZz0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSSUVTPTEgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0pTT05DUFA9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCQVJDSElWRT0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJSSEFTSD0wIFwKKyAgICAtREVOQUJMRV9BQ0w9MCAtREhBVkVfQUNMX0xJQkFDTF9IPTAgXAorICAgIC1ESEFWRV9TWVNfQUNMX0g9MCBcCisiCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisJJHtTfS9jb25maWd1cmUgLS12ZXJib3NlIC0tcHJlZml4PSR7cHJlZml4fSAtLSAke0NNQUtFX0VYVFJBQ09ORn0KK30KKworZG9fY29tcGlsZSgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKwkjIFRoZSBmb2xsb3dpbmcgY29kZXMgYXJlIGhlcmUgYmVjYXVzZSBlU0RLIG5lZWRzIHRvIHByb3ZpZGUgY29tcGF0aWJpbHR5CisJIyBmb3IgU0RLLiBUaGF0IGlzLCBlU0RLIGNvdWxkIGFsc28gYmUgdXNlZCBsaWtlIHRyYWRpdGlvbmFsIFNESy4KKwlta2RpciAtcCAke0R9JHtkYXRhZGlyfS9jbWFrZQorCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vT0VUb29sY2hhaW5Db25maWcuY21ha2UgJHtEfSR7ZGF0YWRpcn0vY21ha2UvCisJbWtkaXIgLXAgJHtEfSR7YmFzZV9wcmVmaXh9L2Vudmlyb25tZW50LXNldHVwLmQKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtY21ha2Uuc2ggJHtEfSR7YmFzZV9wcmVmaXh9L2Vudmlyb25tZW50LXNldHVwLmQvY21ha2Uuc2gKK30KKworZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKKworU1lTUk9PVF9ESVJTX05BVElWRSArPSAiJHtkYXRhZGlyfS9jbWFrZSAke2Jhc2VfcHJlZml4fS9lbnZpcm9ubWVudC1zZXR1cC5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCmluZGV4IDM5NGM5ZWIuLjA5ZTI4YjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKQEAgLTYsMjMgKzYsMTkgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3B1YmxpYy5raXR3YXJlLmNvbS9CdWcvbXlfdmlld19wYWdlLnBocCIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9NzliNWI3ODE5N2M3NGQ1YzVmOWM3Y2NhZGVlZTRlOGMgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9ZjYxZjVmODU5YmM1ZGRiYTJiMDUwZWIxMDMzNWUwMTMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL2NtYWtlLmg7bWQ1PTQ0OTRkZWUxODQyMTJmYzg5YzQ2OWMzYWNkNTU1YTE0O2JlZ2lubGluZT0xO2VuZGxpbmU9MyBcCiAgICAgICAgICAgICAgICAgICAgICIKIAogQ01BS0VfTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKIAogU1JDX1VSSSA9ICJodHRwczovL2NtYWtlLm9yZy9maWxlcy92JHtDTUFLRV9NQUpPUl9WRVJTSU9OfS9jbWFrZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcXQ0LWZhaWwtc2lsZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kQm9vc3QtQm9vc3QtMS42Ni4wLWRlcGVuZGVuY3ktYW5kLXJlbGVhc2UtdXBkYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEJvb3N0LUZpeC1pbmNvcnJlY3QtYWxwaGFiZXRpc2F0aW9uLW9mLWhlYWRlcnMtbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaCBcCisiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYzM4YzY3Mjk1Y2E2OTZhZWFmZDhjMDU5ZDc0OGIzOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzNhMWRjZjBiZTAzZTQwY2Y0ZjM0MWRkYTc5Yzk2ZmZiNmMzNWFlMzVmMmY5MTE4NDViNzJkYWIzNTU5Y2Y4IgorU1JDX1VSSVttZDVzdW1dID0gIjZlN2M1NTBjZmExYzJlMjE2YjM1OTAzZGM3MGQ4MGFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmOTc0ODU3OTllNTFhNzA3MGNjMTE0OTRmM2UwMjM0OWIwZmMzYTI0Y2MxMmIwODJlNzM3YmY2N2EwNTgxYTQiCiAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImNtYWtlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OTA3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA3MTA4NTcyM2Y4MDI4YjNlMWM0MDI5ZmMxYWJlMTI0M2FjNDlmZmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ29keSBQIFNjaGFmZXIgPGRldkBjb2R5cHMuY29tPgorRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxMTozNTowNSAtMDQwMAorU3ViamVjdDogW1BBVENIIDEvNV0gQ01ha2VEZXRlcm1pbmVTeXN0ZW06IHVzZSBvZSBlbnZpcm9ubWVudCB2YXJzIHRvIGxvYWQKKyBkZWZhdWx0IHRvb2xjaGFpbiBmaWxlIGluIHNkaworT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworUGFzc2luZyB0aGUgdG9vbGNoYWluIGJ5OgorCisgLSBzaGVsbCBhbGlhc2VzIGRvZXMgbm90IHdvcmsgaWYgY21ha2UgaXMgY2FsbGVkIGJ5IGEgc2NyaXB0CisgLSB1bmNvbmRpdGlvbmFsbHkgYnkgYSB3cmFwcGVyIHNjcmlwdCBjYXVzZXMgY21ha2UgdG8gYmVsaWV2ZSBpdCBpcworICAgY29uZmlndXJpbmcgdGhpbmdzIHdoZW4gaXQgaXMgbm90IChmb3IgZXhhbXBsZSwgYGNtYWtlIC0tYnVpbGRgIGJyZWFrcykuCisKK1RoZSBPRV9DTUFLRV9UT09MQ0hBSU5fRklMRSB2YXJpYWJsZSBpcyBvbmx5IHVzZWQgYXMgYSBkZWZhdWx0IGlmIG5vCit0b29sY2hhaW4gaXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCisKK1NldHRpbmcgdGhlIENNQUtFX1RPT0xDSEFJTl9GSUxFIGNtYWtlIHZhcmlhYmxlIGlzIG1hcmtlZCBhcyBjYWNoZWQKK2JlY2F1c2UgJy1EJyBvcHRpb25zIGFyZSBjYWNoZSBlbnRyaWVzIHRoZW1zZWx2ZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IENvZHkgUCBTY2hhZmVyIDxkZXZAY29keXBzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBNb2R1bGVzL0NNYWtlRGV0ZXJtaW5lU3lzdGVtLmNtYWtlIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DTWFrZURldGVybWluZVN5c3RlbS5jbWFrZSBiL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVTeXN0ZW0uY21ha2UKK2luZGV4IDYwMGQ1NTgwZS4uMzJkN2YxOTQ1IDEwMDY0NAorLS0tIGEvTW9kdWxlcy9DTWFrZURldGVybWluZVN5c3RlbS5jbWFrZQorKysrIGIvTW9kdWxlcy9DTWFrZURldGVybWluZVN5c3RlbS5jbWFrZQorQEAgLTgyLDYgKzgyLDEzIEBAIGVsc2UoKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihOT1QgREVGSU5FRCBDTUFLRV9UT09MQ0hBSU5fRklMRSkKKysgIGlmKERFRklORUQgRU5We09FX0NNQUtFX1RPT0xDSEFJTl9GSUxFfSkKKysgICAgc2V0KENNQUtFX1RPT0xDSEFJTl9GSUxFICIkRU5We09FX0NNQUtFX1RPT0xDSEFJTl9GSUxFfSIgQ0FDSEUgRklMRVBBVEggInRvb2xjaGFpbiBmaWxlIikKKysgICAgbWVzc2FnZShTVEFUVVMgIlRvb2xjaGFpbiBmaWxlIGRlZmF1bHRlZCB0byAnJHtDTUFLRV9UT09MQ0hBSU5fRklMRX0nIikKKysgIGVuZGlmKCkKKytlbmRpZigpCisrCisgIyBpZiBhIHRvb2xjaGFpbiBmaWxlIGlzIHVzZWQsIHRoZSB1c2VyIHdhbnRzIHRvIGNyb3NzIGNvbXBpbGUuCisgIyBpbiB0aGlzIGNhc2UgcmVhZCB0aGUgdG9vbGNoYWluIGZpbGUgYW5kIGtlZXAgdGhlIENNQUtFX0hPU1RfU1lTVEVNXyoKKyAjIHZhcmlhYmxlcyBhcm91bmQgc28gdGhleSBjYW4gYmUgdXNlZCBpbiBDTWFrZUxpc3RzLnR4dC4KKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRhNjBlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDQzM2EyZDQ5NWEyNDgxYzYzYjgyYzExYTMwZjdjNjQyZDZhYmU2M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+Ci1EYXRlOiBGcmksIDI5IERlYyAyMDE3IDE5OjU1OjQ5ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpbmRCb29zdDogQm9vc3QgMS42Ni4wIGRlcGVuZGVuY3kgYW5kIHJlbGVhc2UgdXBkYXRlCi0KLVJlbGVhc2Ugbm90ZXM6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2hpc3RvcnkvdmVyc2lvbl8xXzY2XzAuaHRtbAotCi0qIEFsbCBuZXcgbGlicmFyaWVzIGFyZSBoZWFkZXItb25seS4KLSogX0Jvb3N0X0NPTVBPTkVOVF9ERVBFTkRFTkNJRVMgaXMgdW5jaGFuZ2VkIGZyb20gMS42NS4xCi0qIF9Cb29zdF9GSUJFUl9DT01QSUxFUl9GRUFUVVJFUyBpcyB1bmNoYW5nZWQgZnJvbSAxLjY0LjAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW1lvY3RvIDEyNzYyXQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLQotLS0tCi0gTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCi0rKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCi1AQCAtNzk3LDcgKzc5Nyw3IEBAIGZ1bmN0aW9uKF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTIGMKLSAgICAgICBzZXQoX0Jvb3N0X1dBVkVfREVQRU5ERU5DSUVTIGZpbGVzeXN0ZW0gc3lzdGVtIHNlcmlhbGl6YXRpb24gdGhyZWFkIGNocm9ubyBkYXRlX3RpbWUgYXRvbWljKQotICAgICAgIHNldChfQm9vc3RfV1NFUklBTElaQVRJT05fREVQRU5ERU5DSUVTIHNlcmlhbGl6YXRpb24pCi0gICAgIGVuZGlmKCkKLS0gICAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjYwMCkKLSsgICAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjcwMCkKLSAgICAgICBtZXNzYWdlKFdBUk5JTkcgIk5ldyBCb29zdCB2ZXJzaW9uIG1heSBoYXZlIGluY29ycmVjdCBvciBtaXNzaW5nIGRlcGVuZGVuY2llcyBhbmQgaW1wb3J0ZWQgdGFyZ2V0cyIpCi0gICAgICAgc2V0KF9Cb29zdF9JTVBPUlRFRF9UQVJHRVRTIEZBTFNFKQotICAgICBlbmRpZigpCi1AQCAtOTMxLDggKzkzMSw4IEBAIGVuZGZ1bmN0aW9uKCkKLSAjIGAke0Jvb3N0X1JPT1R9L2xpYnMvZmliZXIvYnVpbGQvSmFtZmlsZS52MmAuCi0gIwotIGZ1bmN0aW9uKF9Cb29zdF9DT01QSUxFUl9GRUFUVVJFUyBjb21wb25lbnQgX3JldCkKLS0gICMgQm9vc3QgPj0gMS42MiBhbmQgPCAxLjY1Ci0tICBpZihOT1QgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2MjAwIEFORCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY1MDApCi0rICAjIEJvb3N0ID49IDEuNjIgYW5kIDwgMS42NwotKyAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjIwMCBBTkQgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NzAwKQotICAgICBzZXQoX0Jvb3N0X0ZJQkVSX0NPTVBJTEVSX0ZFQVRVUkVTCi0gICAgICAgICBjeHhfYWxpYXNfdGVtcGxhdGVzCi0gICAgICAgICBjeHhfYXV0b190eXBlCi1AQCAtMTAzOCw3ICsxMDM4LDcgQEAgZWxzZSgpCi0gICAjIF9Cb29zdF9DT01QT05FTlRfSEVBREVSUy4gIFNlZSB0aGUgaW5zdHJ1Y3Rpb25zIGF0IHRoZSB0b3Agb2YKLSAgICMgX0Jvb3N0X0NPTVBPTkVOVF9ERVBFTkRFTkNJRVMuCi0gICBzZXQoX0Jvb3N0X0tOT1dOX1ZFUlNJT05TICR7Qm9vc3RfQURESVRJT05BTF9WRVJTSU9OU30KLS0gICAgIjEuNjUuMSIgIjEuNjUuMCIgIjEuNjUiCi0rICAgICIxLjY2LjAiICIxLjY2IiAiMS42NS4xIiAiMS42NS4wIiAiMS42NSIKLSAgICAgIjEuNjQuMCIgIjEuNjQiICIxLjYzLjAiICIxLjYzIiAiMS42Mi4wIiAiMS42MiIgIjEuNjEuMCIgIjEuNjEiICIxLjYwLjAiICIxLjYwIgotICAgICAiMS41OS4wIiAiMS41OSIgIjEuNTguMCIgIjEuNTgiICIxLjU3LjAiICIxLjU3IiAiMS41Ni4wIiAiMS41NiIgIjEuNTUuMCIgIjEuNTUiCi0gICAgICIxLjU0LjAiICIxLjU0IiAiMS41My4wIiAiMS41MyIgIjEuNTIuMCIgIjEuNTIiICIxLjUxLjAiICIxLjUxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtRml4LWluY29ycmVjdC1hbHBoYWJldGlzYXRpb24tb2YtaGVhZGVycy1sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtRml4LWluY29ycmVjdC1hbHBoYWJldGlzYXRpb24tb2YtaGVhZGVycy1sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDVlZGE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUZpeC1pbmNvcnJlY3QtYWxwaGFiZXRpc2F0aW9uLW9mLWhlYWRlcnMtbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gYjFlOWY2NzEzNzczM2JjMTA5ZDM1NTQ1MGZjZDA2ZWRkYTQ3ODRjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJQYXVsIFwiVEJCbGVcIiBIYW1wc29uIiA8UGF1bC5IYW1wc29uQFBvYm94LmNvbT4KLURhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMjA6MDc6MzEgKzExMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzZdIEZpbmRCb29zdDogRml4IGluY29ycmVjdCBhbHBoYWJldGlzYXRpb24gb2YgaGVhZGVycyBsaXN0Ci0KLUFmZmVjdHMgY21ha2UgPCAzLjExLjAKLQotVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0Ci1bWW9jdG8gMTI3NjJdCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotCi0tLS0KLSBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCi0rKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCi1AQCAtODMxLDggKzgzMSw4IEBAIGZ1bmN0aW9uKF9Cb29zdF9DT01QT05FTlRfSEVBREVSUyBjb21wb24KLSAgIHNldChfQm9vc3RfQ09OVEFJTkVSX0hFQURFUlMgICAgICAgICAgICJib29zdC9jb250YWluZXIvY29udGFpbmVyX2Z3ZC5ocHAiKQotICAgc2V0KF9Cb29zdF9DT05URVhUX0hFQURFUlMgICAgICAgICAgICAgImJvb3N0L2NvbnRleHQvYWxsLmhwcCIpCi0gICBzZXQoX0Jvb3N0X0NPUk9VVElORV9IRUFERVJTICAgICAgICAgICAiYm9vc3QvY29yb3V0aW5lL2FsbC5ocHAiKQotLSAgc2V0KF9Cb29zdF9FWENFUFRJT05fSEVBREVSUyAgICAgICAgICAgImJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIikKLSAgIHNldChfQm9vc3RfREFURV9USU1FX0hFQURFUlMgICAgICAgICAgICJib29zdC9kYXRlX3RpbWUvZGF0ZS5ocHAiKQotKyAgc2V0KF9Cb29zdF9FWENFUFRJT05fSEVBREVSUyAgICAgICAgICAgImJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIikKLSAgIHNldChfQm9vc3RfRklCRVJfSEVBREVSUyAgICAgICAgICAgICAgICJib29zdC9maWJlci9hbGwuaHBwIikKLSAgIHNldChfQm9vc3RfRklMRVNZU1RFTV9IRUFERVJTICAgICAgICAgICJib29zdC9maWxlc3lzdGVtL3BhdGguaHBwIikKLSAgIHNldChfQm9vc3RfR1JBUEhfSEVBREVSUyAgICAgICAgICAgICAgICJib29zdC9ncmFwaC9hZGphY2VuY3lfbGlzdC5ocHAiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODMwMWM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItRmluZEJvb3N0LUltcGxlbWVudC1BcmNoaXRlY3R1cmUtYW5kLUFkZHJlc3MtTW9kZWwtdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1Gcm9tIGIwNDRmNjlhNDEzMTIzZjE1YTA1MDM0YzAwYThlMzc2Mzc2NGExZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+Ci1EYXRlOiBGcmksIDI5IERlYyAyMDE3IDIxOjUwOjU0ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi82XSBGaW5kQm9vc3Q6IEltcGxlbWVudCAiQXJjaGl0ZWN0dXJlIGFuZCBBZGRyZXNzIE1vZGVsIiB0YWcKLQotVGhpcyB0YWcgaXMgbmV3IGluIEJvb3N0IDEuNjYuMCwgYW5kIGlzIHByZXNlbnQgaW4gdGhlICd2ZXJzaW9uZWQnCi1saWJyYXJ5IGZpbGUgbmFtZSBsYXlvdXQuCi0KLUFmZmVjdHMgY21ha2UgPCAzLjExLjAKLQotVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0Ci1bWW9jdG8gMTI3NjJdCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotCi0tLS0KLSBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotQEAgLTEzODUsOCArMTM4NSwxMSBAQCBpZihCb29zdF9ERUJVRykKLSBlbmRpZigpCi0gCi0gIz09PT09PT09PT09PT09PT09PT09PT0KLS0jIFN5c3RlbWF0aWNhbGx5IGJ1aWxkIHVwIHRoZSBCb29zdCBBQkkgdGFnCi0tIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNDFfMC9tb3JlL2dldHRpbmdfc3RhcnRlZC93aW5kb3dzLmh0bWwjbGlicmFyeS1uYW1pbmcKLSsjIFN5c3RlbWF0aWNhbGx5IGJ1aWxkIHVwIHRoZSBCb29zdCBBQkkgdGFnIGZvciB0aGUgJ3RhZ2dlZCcgYW5kICd2ZXJzaW9uZWQnIGxheW91dHMKLSsjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL21vcmUvZ2V0dGluZ19zdGFydGVkL3dpbmRvd3MuaHRtbCNsaWJyYXJ5LW5hbWluZwotKyMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzY2XzAvYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHAKLSsjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL3Rvb2xzL2J1aWxkL3NyYy90b29scy9jb21tb24uamFtCi0rIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNjZfMC9ib29zdGNwcC5qYW0KLSBzZXQoIF9ib29zdF9SRUxFQVNFX0FCSV9UQUcgIi0iKQotIHNldCggX2Jvb3N0X0RFQlVHX0FCSV9UQUcgICAiLSIpCi0gIyBLZXkgICAgICAgVXNlIHRoaXMgbGlicmFyeSB3aGVuOgotQEAgLTE0MTgsMTEgKzE0MjEsNDAgQEAgaWYoQm9vc3RfVVNFX1NUTFBPUlQpCi0gICBzdHJpbmcoQVBQRU5EIF9ib29zdF9ERUJVR19BQklfVEFHICJwIikKLSBlbmRpZigpCi0gIyAgbiAgICAgICAgdXNpbmcgdGhlIFNUTHBvcnQgZGVwcmVjYXRlZCAibmF0aXZlIGlvc3RyZWFtcyIgZmVhdHVyZQotKyMgICAgICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBpbiAxLjQzLjAgYnV0IHN0aWxsIHByZXNlbnQgaW4KLSsjICAgICAgICAgICBib29zdC9jb25maWcvYXV0b19saW5rLmhwcAotIGlmKEJvb3N0X1VTRV9TVExQT1JUX0RFUFJFQ0FURURfTkFUSVZFX0lPU1RSRUFNUykKLSAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfQUJJX1RBRyAibiIpCi0gICBzdHJpbmcoQVBQRU5EIF9ib29zdF9ERUJVR19BQklfVEFHICJuIikKLSBlbmRpZigpCi0gCi0rIyAgLXg4NiAgICAgQXJjaGl0ZWN0dXJlIGFuZCBhZGRyZXNzIG1vZGVsIHRhZwotKyMgICAgICAgICAgIEZpcnN0IGNoYXJhY3RlciBpcyB0aGUgYXJjaGl0ZWN0dXJlLCB0aGVuIHdvcmQtc2l6ZSwgZWl0aGVyIDMyIG9yIDY0Ci0rIyAgICAgICAgICAgT25seSB1c2VkIGluICd2ZXJzaW9uZWQnIGxheW91dCwgYWRkZWQgaW4gQm9vc3QgMS42Ni4wCi0rc2V0KF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICIiKQotKyMge0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IGlzIG5vdCBjdXJyZW50bHkgc2V0IGZvciBhbGwgY29tcGlsZXJzCi0raWYoTk9UICJ4JHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSIgU1RSRVFVQUwgIngiIEFORCBOT1QgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NjAwKQotKyAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiLSIpCi0rICAjIFRoaXMgbmVlZHMgdG8gYmUga2VwdCBpbi1zeW5jIHdpdGggdGhlIHNlY3Rpb24gb2YgQ01ha2VQbGF0Zm9ybUlkLmguaW4KLSsgICMgaW5zaWRlICdkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChfTVNDX1ZFUiknCi0rICBpZigke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IFNUUkVRVUFMICJJQTY0IikKLSsgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiaSIpCi0rICBlbHNlaWYoJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBTVFJFUVVBTCAiWDg2IgotKyAgICAgICAgICAgIE9SICR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIng2NCIpCi0rICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIngiKQotKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gTUFUQ0hFUyAiXkFSTSIpCi0rICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgImEiKQotKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIk1JUFMiKQotKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICJtIikKLSsgIGVuZGlmKCkKLSsKLSsgIGlmKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgOCkKLSsgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiNjQiKQotKyAgZWxzZSgpCi0rICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIjMyIikKLSsgIGVuZGlmKCkKLStlbmRpZigpCi0rCi0gaWYoQm9vc3RfREVCVUcpCi0gICBtZXNzYWdlKFNUQVRVUyAiWyAke0NNQUtFX0NVUlJFTlRfTElTVF9GSUxFfToke0NNQUtFX0NVUlJFTlRfTElTVF9MSU5FfSBdICIKLSAgICAgIl9ib29zdF9SRUxFQVNFX0FCSV9UQUcgPSAke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9IikKLUBAIC0xNjE2LDIyICsxNjQ4LDIyIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKLSAgIHVuc2V0KF9ib29zdF9SRUxFQVNFX05BTUVTKQotICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCi0gICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCi0tICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30gKQotICAgZW5kZm9yZWFjaCgpCi0gICBsaXN0KEFQUEVORCBfYm9vc3RfUkVMRUFTRV9OQU1FUwotLSAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotKyAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0gICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9Ci0gICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9ICkKLSAgIGlmKF9ib29zdF9TVEFUSUNfUlVOVElNRV9XT1JLQVJPVU5EKQotICAgICBzZXQoX2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUcgIi1zJHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSIpCi0gICAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQotICAgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCi0tICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotKyAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotICAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30gKQotICAgICBlbmRmb3JlYWNoKCkKLSAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfTkFNRVMKLS0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfSApCi0gICBlbmRpZigpCi0gICBpZihCb29zdF9USFJFQURBUEkgQU5EICR7Q09NUE9ORU5UfSBTVFJFUVVBTCAidGhyZWFkIikKLUBAIC0xNjY2LDExICsxNjk4LDExIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKLSAgIHVuc2V0KF9ib29zdF9ERUJVR19OQU1FUykKLSAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQotICAgICBsaXN0KEFQUEVORCBfYm9vc3RfREVCVUdfTkFNRVMKLS0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfSApCi0gICBlbmRmb3JlYWNoKCkKLSAgIGxpc3QoQVBQRU5EIF9ib29zdF9ERUJVR19OQU1FUwotLSAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9Ci0gICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0KLSAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0gKQotQEAgLTE2NzgsMTEgKzE3MTAsMTEgQEAgZm9yZWFjaChDT01QT05FTlQgJHtCb29zdF9GSU5EX0NPTVBPTkVOVAotICAgICBzZXQoX2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHICItcyR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9IikKLSAgICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCi0gICAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCi0tICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0gICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30gKQotICAgICBlbmRmb3JlYWNoKCkKLSAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCi0tICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30gKQotICAgZW5kaWYoKQotICAgaWYoQm9vc3RfVEhSRUFEQVBJIEFORCAke0NPTVBPTkVOVH0gU1RSRVFVQUwgInRocmVhZCIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3ODhhZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaApAQCAtMCwwICsxLDEyMiBAQAorRnJvbSA3YTFmNGU3MjRmOWM2ODQ5OGY0MDEyNDRjMjkzOGU3ODRhMmU2ZmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6MDI6MTQgLTAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIGNtYWtlOiBQcmV2ZW50IHRoZSBkZXRlY3Rpb24gb2YgUXQ1CitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitDTWFrZSBkb2Vzbid0IGhhdmUgZGVwZW5kZW5jeSBvbiBxdDQvcXQ1LCBzbyB0aGVzZSB0ZXN0cyB1c3VhbGx5IGZhaWwKK2J1dCBzdGlsbCBjYW4gY2F1c2UgdW5kZXRlcm1pbmlzdGljIHJlc3VsdHMgb3IgYnVpbGQgZmFpbHVyZXMgKHdoZW4KK09FX1FNQUtFX1BBVEhfRVhURVJOQUxfSE9TVF9CSU5TIGlzIHVuZGVmaW5lZCBvciBuYXRpdmUgcW1ha2UgcmVtb3ZlZAord2hpbGUgcnVubmluZyB0aGUgdGVzdCBpbiBjbWFrZSkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBUZXN0cy9RdEF1dG9nZW4vQXV0b2dlblRlc3QuY21ha2UgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vTWFjT3NGVy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZSB8IDIgKy0KKyA3IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMzMwYjc0NzI5Li5lNzcwOWRlZTYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKKysrKyBiL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAorQEAgLTYsNyArNiw3IEBAIGlmKFBPTElDWSBDTVAwMDIwKQorICAgY21ha2VfcG9saWN5KFNFVCBDTVAwMDIwIE5FVykgIyBEcm9wIHdoZW4gQ01ha2UgPj0gMi44LjExIHJlcXVpcmVkCisgZW5kaWYoKQorIENNYWtlX09QVElPTkFMX0NPTVBPTkVOVChjbWFrZS1ndWkpCistZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpCisrI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUKQorIGlmIChRdDVXaWRnZXRzX0ZPVU5EKQorICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke1F0NVdpZGdldHNfSU5DTFVERV9ESVJTfSkKKyAgIGFkZF9kZWZpbml0aW9ucygke1F0NVdpZGdldHNfREVGSU5JVE9OU30pCitkaWZmIC0tZ2l0IGEvVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjhiNzI0ZWQ4Li42M2Y2YmI2ZDIgMTAwNjQ0CistLS0gYS9UZXN0cy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvQ01ha2VMaXN0cy50eHQKK0BAIC0xMzIyLDcgKzEzMjIsNyBAQCAke0NNYWtlX0JJTkFSWV9ESVJ9L2Jpbi9jbWFrZSAtRERJUj1kZXYgLVAgJHtDTWFrZV9TT1VSQ0VfRElSfS9VdGlsaXRpZXMvUmVsZWFzZQorICAgICBzZXQoQ01ha2VfVEVTVF9RdDUgMSkKKyAgIGVuZGlmKCkKKyAgIGlmKENNYWtlX1RFU1RfUXQ1KQorLSAgICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpCisrICAgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpCisgICBlbmRpZigpCisgICBpZihDTWFrZV9URVNUX1F0NSBBTkQgUXQ1V2lkZ2V0c19GT1VORCkKKyAgICAgYWRkX3N1YmRpcmVjdG9yeShRdDVBdXRvZ2VuKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKK2luZGV4IGFkNzQ5NjFkOS4uYTlkZDc0YjE1IDEwMDY0NAorLS0tIGEvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0CitAQCAtMywxMSArMywxMSBAQCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQorIHByb2plY3QoUXQ0QW5kNUF1dG9tb2MpCisgCisgaWYgKFFUX1JFVkVSU0VfRklORF9PUkRFUikKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorICAgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKKyBlbHNlKCkKKyAgIGZpbmRfcGFja2FnZShRdDQgUkVRVUlSRUQpCistICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKyBlbmRpZigpCisgCisgc2V0KENNQUtFX0FVVE9NT0MgT04pCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL0F1dG9nZW5UZXN0LmNtYWtlIGIvVGVzdHMvUXRBdXRvZ2VuL0F1dG9nZW5UZXN0LmNtYWtlCitpbmRleCA4YzBhMTRmY2EuLmU5OTIzYjIxYSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9BdXRvZ2VuVGVzdC5jbWFrZQorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL0F1dG9nZW5UZXN0LmNtYWtlCitAQCAtMjIsNyArMjIsNyBAQCBpZiAoUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDQpCisgICBlbmRtYWNybygpCisgCisgZWxzZWlmKFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQorLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisgCisgICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgICBzZXQoUVRfUVRHVUlfVEFSR0VUIFF0NTo6V2lkZ2V0cykKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW4vTWFjT3NGVy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlbi9NYWNPc0ZXL0NNYWtlTGlzdHMudHh0CitpbmRleCAyNmQyMDE5MjYuLmU0OGUxYzhkZSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9NYWNPc0ZXL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9nZW4vTWFjT3NGVy9DTWFrZUxpc3RzLnR4dAorQEAgLTIsNyArMiw3IEBAIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjEwKQorIHByb2plY3QoTWFjT3NGVykKKyBpbmNsdWRlKCIuLi9BdXRvZ2VuVGVzdC5jbWFrZSIpCisgCistZmluZF9wYWNrYWdlKFF0NVRlc3QgUkVRVUlSRUQpCisrI2ZpbmRfcGFja2FnZShRdDVUZXN0IFJFUVVJUkVEKQorIAorIHNldChDTUFLRV9DWFhfU1RBTkRBUkQgMTEpCisgc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L291dHB1dC9iaW4pCitkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAoraW5kZXggNjM3YzVjMmNiLi5jMDM3NmVmZmMgMTAwNjQ0CistLS0gYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKK0BAIC0yOTEsNyArMjkxLDcgQEAgYWRkX1J1bkNNYWtlX3Rlc3QoY29uZmlndXJlX2ZpbGUpCisgYWRkX1J1bkNNYWtlX3Rlc3QoQ1Rlc3RUaW1lb3V0QWZ0ZXJNYXRjaCkKKyAKKyBmaW5kX3BhY2thZ2UoUXQ0IFFVSUVUKQorLWZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKQorKyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKKyBpZiAoUVQ0X0ZPVU5EIEFORCBRdDVDb3JlX0ZPVU5EIEFORCBOT1QgUXQ1Q29yZV9WRVJTSU9OIFZFUlNJT05fTEVTUyA1LjEuMCkKKyAgIGFkZF9SdW5DTWFrZV90ZXN0KEluY29tcGF0aWJsZVF0KQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCitpbmRleCA0ZmNjZGM0MTguLmI3NmUxZTUzMSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCisrKysgYi9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQorQEAgLTEsNiArMSw2IEBACisgCisgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKKy1maW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgCisgYWRkX2V4ZWN1dGFibGUobWFpbmV4ZSBtYWluLmNwcCkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMobWFpbmV4ZSBRdDQ6OlF0Q29yZSBRdDU6OkNvcmUpCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLUZpbmRCb29zdC1TZWFyY2gtZm9yLXVwc3RyZWFtLXBhY2thZ2VkLWxpYnMtbmV4dC10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLUZpbmRCb29zdC1TZWFyY2gtZm9yLXVwc3RyZWFtLXBhY2thZ2VkLWxpYnMtbmV4dC10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNzhmNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBkNTZkZWZmN2QxMjdiMDMwNzM5YmQwMDM0NjA5ZDAwNDYxMjFkOGNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlBhdWwgXCJUQkJsZVwiIEhhbXBzb24iIDxQYXVsLkhhbXBzb25AUG9ib3guY29tPgotRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAyMjozODozNiArMTEwMAotU3ViamVjdDogW1BBVENIIDMvNl0gRmluZEJvb3N0OiBTZWFyY2ggZm9yIHVwc3RyZWFtLXBhY2thZ2VkIGxpYnMgbmV4dCB0bwotIGluY2x1ZGVzCi0KLVVwc3RyZWFtIHBhY2thZ2VzIEJvb3N0IGJpbmFyaWVzIGZvciBXaW5kb3dzIHdpdGggdGhlICdib29zdCcgZGlyZWN0b3J5Ci0odGhlIElOQ0xVREVfRElSKSBuZXh0IHRvIHRoZSBsaWItLi4uIGRpcmVjdG9yeSAodGhlIExJQlJBUllfRElSKS4KLQotQWZmZWN0cyBjbWFrZSA8IDMuMTEuMAotCi1VcHN0ZWFtLVN0YXR1czogQmFja3BvcnQKLVtZb2N0byAxMjc2Ml0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+Ci0KLS0tLQotIE1vZHVsZXMvRmluZEJvb3N0LmNtYWtlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLUluZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotQEAgLTE1MDIsNiArMTUwMiw3IEBAIGZvcmVhY2goYyBERUJVRyBSRUxFQVNFKQotICAgICAgICR7Qm9vc3RfSU5DTFVERV9ESVJ9L3N0YWdlL2xpYgotICAgICAgICkKLSAgICAgX0Jvb3N0X1VQREFURV9XSU5ET1dTX0xJQlJBUllfU0VBUkNIX0RJUlNfV0lUSF9QUkVCVUlMVF9QQVRIUyhfYm9vc3RfTElCUkFSWV9TRUFSQ0hfRElSU18ke2N9ICIke0Jvb3N0X0lOQ0xVREVfRElSfS8uLiIpCi0rICAgIF9Cb29zdF9VUERBVEVfV0lORE9XU19MSUJSQVJZX1NFQVJDSF9ESVJTX1dJVEhfUFJFQlVJTFRfUEFUSFMoX2Jvb3N0X0xJQlJBUllfU0VBUkNIX0RJUlNfJHtjfSAiJHtCb29zdF9JTkNMVURFX0RJUn0iKQotICAgICBpZiggQm9vc3RfTk9fU1lTVEVNX1BBVEhTICkKLSAgICAgICBsaXN0KEFQUEVORCBfYm9vc3RfTElCUkFSWV9TRUFSQ0hfRElSU18ke2N9IE5PX0NNQUtFX1NZU1RFTV9QQVRIIE5PX1NZU1RFTV9FTlZJUk9OTUVOVF9QQVRIKQotICAgICBlbHNlKCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1jbWFrZS1zdXBwb3J0LU9wZW5FbWJlZGRlZC1RdDQtdG9vbC1iaW5hcnktbmFtZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVjZjQ3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gYzc4M2NlZWVmNDg1YzIzZTEzYzNkOWYwNDE4NzE5Y2IwZTBiODZlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUaHUsIDEyIE1heSAyMDExIDE1OjM2OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBjbWFrZTogc3VwcG9ydCBPcGVuRW1iZWRkZWQgUXQ0IHRvb2wgYmluYXJ5IG5hbWVzCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitUaGUgRmluZFF0NCBtb2R1bGUgbG9va3MgZm9yIFF0NCBiaW5hcmllcyB0byBiZSBhYmxlIHRvIGdhdGhlciB0aGUKK3BhdGhzIHVzZWQgZm9yIGNvbXBpbGF0aW9uIGFuZCBhbHNvIHRvIGJlIHVzaW5nIGR1cmluZyBvdGhlciBwcm9jZXNzZXMKKyh0cmFuc2xhdGlvbiB1cGRhdGUsIHRyYW5zbGF0aW9uIGJpbmFyeSBnZW5lcmF0aW5nIGFuZCBsaWtlKSBob3dldmVyCitPcGVuRW1iZWRkZWQgaGFzIHJlbmFtZWQgdGhvc2UgdG8gYWxsb3cgb2xkIFFNYWtlIHRvIGJlIHVzZWQgaW4KK3BhcmFsbGVsIHdpdGggdGhlIGN1cnJlbnQgb25lLiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlCitPcGVuRW1iZWRkZWQgc3BlY2lmaWMgYmluYXJ5IG5hbWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorCitUaGUgcGF0Y2ggd2FzIHNsaWdodGx5IGFkYXB0ZWQgaW4gb3JkZXIgdG8gbWF0Y2ggY21ha2UgMy4yLjI6CitJbnN0ZWFkIG9mIGZpbmRfcHJvZ3JhbSwgX2ZpbmRfcXQ0X3Byb2dyYW0gaXMgbm93IHVzZWQuCisKK1NpZ25lZC1vZmYtYnk6IE1vcml0eiBCbHVtZSA8bW9yaXR6LmJsdW1lQGJtdy1jYXJpdC5kZT4KK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBNb2R1bGVzL0ZpbmRRdDQuY21ha2UgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFF0NC5jbWFrZSBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQoraW5kZXggODQ3YTc5OGFmLi43YWQ5ODE4NzkgMTAwNjQ0CistLS0gYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKKysrKyBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQorQEAgLTUxNyw3ICs1MTcsNyBAQCBlbmRmdW5jdGlvbigpCisgCisgc2V0KFFUNF9JTlNUQUxMRURfVkVSU0lPTl9UT09fT0xEIEZBTFNFKQorIAorLXNldChfUVQ0X1FNQUtFX05BTUVTIHFtYWtlIHFtYWtlNCBxbWFrZS1xdDQgcW1ha2UtbWFjKQorK3NldChfUVQ0X1FNQUtFX05BTUVTIHFtYWtlIHFtYWtlMiBxbWFrZTQgcW1ha2UtcXQ0IHFtYWtlLW1hYykKKyBfcXQ0X2ZpbmRfcW1ha2UoIiR7X1FUNF9RTUFLRV9OQU1FU30iIFFUX1FNQUtFX0VYRUNVVEFCTEUgUVRWRVJTSU9OKQorIAorIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAorQEAgLTExMzUsMTIgKzExMzUsMTIgQEAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECisgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9NT0NfRVhFQ1VUQUJMRSBRdDQ6Om1vYyBtb2MtcXQ0IG1vYzQgbW9jKQorICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfVUlDX0VYRUNVVEFCTEUgUXQ0Ojp1aWMgdWljLXF0NCB1aWM0IHVpYykKKyAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1VJQzNfRVhFQ1VUQUJMRSBRdDQ6OnVpYzMgdWljMykKKy0gIF9maW5kX3F0NF9wcm9ncmFtKFFUX1JDQ19FWEVDVVRBQkxFIFF0NDo6cmNjIHJjYykKKy0gIF9maW5kX3F0NF9wcm9ncmFtKFFUX0RCVVNDUFAyWE1MX0VYRUNVVEFCTEUgUXQ0OjpxZGJ1c2NwcDJ4bWwgcWRidXNjcHAyeG1sKQorLSAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfREJVU1hNTDJDUFBfRVhFQ1VUQUJMRSBRdDQ6OnFkYnVzeG1sMmNwcCBxZGJ1c3htbDJjcHApCisrICBfZmluZF9xdDRfcHJvZ3JhbShRVF9SQ0NfRVhFQ1VUQUJMRSBRdDQ6OnJjYyByY2M0IHJjYykKKysgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0RCVVNDUFAyWE1MX0VYRUNVVEFCTEUgUXQ0OjpxZGJ1c2NwcDJ4bWwgcWRidXNjcHAyeG1sNCBxZGJ1c2NwcDJ4bWwpCisrICBfZmluZF9xdDRfcHJvZ3JhbShRVF9EQlVTWE1MMkNQUF9FWEVDVVRBQkxFIFF0NDo6cWRidXN4bWwyY3BwIHFkYnVzeG1sMmNwcDQgcWRidXN4bWwyY3BwKQorICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTFVQREFURV9FWEVDVVRBQkxFIFF0NDo6bHVwZGF0ZSBsdXBkYXRlLXF0NCBsdXBkYXRlNCBsdXBkYXRlKQorICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTFJFTEVBU0VfRVhFQ1VUQUJMRSBRdDQ6OmxyZWxlYXNlIGxyZWxlYXNlLXF0NCBscmVsZWFzZTQgbHJlbGVhc2UpCistICBfZmluZF9xdDRfcHJvZ3JhbShRVF9RQ09MTEVDVElPTkdFTkVSQVRPUl9FWEVDVVRBQkxFIFF0NDo6cWNvbGxlY3Rpb25nZW5lcmF0b3IgcWNvbGxlY3Rpb25nZW5lcmF0b3ItcXQ0IHFjb2xsZWN0aW9uZ2VuZXJhdG9yKQorKyAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfUUNPTExFQ1RJT05HRU5FUkFUT1JfRVhFQ1VUQUJMRSBRdDQ6OnFjb2xsZWN0aW9uZ2VuZXJhdG9yIHFjb2xsZWN0aW9uZ2VuZXJhdG9yLXF0NCBxY29sbGVjdGlvbmdlbmVyYXRvciBxY29sbGVjdGlvbmdlbmVyYXRvcjQpCisgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9ERVNJR05FUl9FWEVDVVRBQkxFIFF0NDo6ZGVzaWduZXIgZGVzaWduZXItcXQ0IGRlc2lnbmVyNCBkZXNpZ25lcikKKyAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0xJTkdVSVNUX0VYRUNVVEFCTEUgUXQ0OjpsaW5ndWlzdCBsaW5ndWlzdC1xdDQgbGluZ3Vpc3Q0IGxpbmd1aXN0KQorIAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1OWM2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSA5NTE2ZmM0MjYwZjcwMWM2ZDlkYjBjMzQxYmIzNjQ4MDM2MmUxNzQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IFRodSwgNSBKdWwgMjAxOCAxMDoyNjo0OCAtMDMwMAorU3ViamVjdDogW1BBVENIIDQvNV0gRmFpbCBzaWxlbnRseSBpZiBzeXN0ZW0gUXQgaW5zdGFsbGF0aW9uIGlzIGJyb2tlbgorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworRml4ZXMgYSByZWdyZXNzaW9uIGluIGJlaGF2aW91ciBmcm9tIDIuOC4xMCB0byAyLjguMTEgcmVzdWx0aW5nIGluIHRoZQorZm9sbG93aW5nIGVycm9yIGlmIHRoZSBzeXN0ZW0gUXQgaW5zdGFsbGF0aW9uIGlzIGJyb2tlbjoKKworQ01ha2UgRXJyb3IgYXQgTW9kdWxlcy9GaW5kUXQ0LmNtYWtlOjEwMjggKHNldF9wcm9wZXJ0eSk6CisgIHNldF9wcm9wZXJ0eSBjb3VsZCBub3QgZmluZCBUQVJHRVQgUXQ0OjpRdENvcmUuICBQZXJoYXBzIGl0IGhhcyBub3QgeWV0CisgIGJlZW4gY3JlYXRlZC4KK0NhbGwgU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICBUZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dDo3OSAoZmluZF9wYWNrYWdlKQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CisKK1RoZSBwYXRjaCB3YXMgc2xpZ2h0bHkgYWRhcHRlZCBpbiBvcmRlciB0byBtYXRjaCBjbWFrZSAzLjIuMjoKK0Fub3RoZXIgc2V0X3Byb3BlcnR5IHdhcyBpbnRyb2R1Y2VkIHdoaWNoIGhhZCB0byBiZSBpbmNsdWRlZAord2l0aGluIHRoZSBpZihRVF9RVENPUkVfRk9VTkQpIHN0YXRlbWVudC4KKworU2lnbmVkLW9mZi1ieTogTW9yaXR6IEJsdW1lIDxtb3JpdHouYmx1bWVAYm13LWNhcml0LmRlPgorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIE1vZHVsZXMvRmluZFF0NC5jbWFrZSB8IDM5ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFF0NC5jbWFrZSBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQoraW5kZXggN2FkOTgxODc5Li44YjZmNDNjZGEgMTAwNjQ0CistLS0gYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKKysrKyBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQorQEAgLTk4NywyNSArOTg3LDI2IEBAIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAorICAgICBlbmRpZigpCisgICBlbmRtYWNybygpCisgCistCistICAjIFNldCBRVF94eXpfTElCUkFSWSB2YXJpYWJsZSBhbmQgYWRkCistICAjIGxpYnJhcnkgaW5jbHVkZSBwYXRoIHRvIFFUX0lOQ0xVREVTCistICBfUVQ0X0FESlVTVF9MSUJfVkFSUyhRdENvcmUpCistICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQorLSAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUworLSAgICAgICIke1FUX01LU1BFQ1NfRElSfS9kZWZhdWx0IgorLSAgICAgICR7UVRfSU5DTFVERV9ESVJ9CistICApCistICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQorLSAgICBJTlRFUkZBQ0VfQ09NUElMRV9ERUZJTklUSU9OUworLSAgICAgICQ8JDxOT1Q6JDxDT05GSUc6RGVidWc+PjpRVF9OT19ERUJVRz4KKy0gICkKKy0gIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgUFJPUEVSVFkKKy0gICAgSU5URVJGQUNFX1FUX01BSk9SX1ZFUlNJT04gNAorLSAgKQorLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKKy0gICAgQ09NUEFUSUJMRV9JTlRFUkZBQ0VfU1RSSU5HIFFUX01BSk9SX1ZFUlNJT04KKy0gICkKKysgIGlmKFFUX1FUQ09SRV9GT1VORCkKKysgICAgIyBTZXQgUVRfeHl6X0xJQlJBUlkgdmFyaWFibGUgYW5kIGFkZAorKyAgICAjIGxpYnJhcnkgaW5jbHVkZSBwYXRoIHRvIFFUX0lOQ0xVREVTCisrICAgIF9RVDRfQURKVVNUX0xJQl9WQVJTKFF0Q29yZSkKKysgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKKysgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUworKyAgICAgICAgIiR7UVRfTUtTUEVDU19ESVJ9L2RlZmF1bHQiCisrICAgICAgICAke1FUX0lOQ0xVREVfRElSfQorKyAgICApCisrICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCisrICAgICAgSU5URVJGQUNFX0NPTVBJTEVfREVGSU5JVElPTlMKKysgICAgICAgICQ8JDxOT1Q6JDxDT05GSUc6RGVidWc+PjpRVF9OT19ERUJVRz4KKysgICAgKQorKyAgICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIFBST1BFUlRZCisrICAgICAgSU5URVJGQUNFX1FUX01BSk9SX1ZFUlNJT04gNAorKyAgICApCisrICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCisrICAgICAgQ09NUEFUSUJMRV9JTlRFUkZBQ0VfU1RSSU5HIFFUX01BSk9SX1ZFUlNJT04KKysgICAgKQorKyAgZW5kaWYoKQorIAorICAgZm9yZWFjaChRVF9NT0RVTEUgJHtRVF9NT0RVTEVTfSkKKyAgICAgX1FUNF9BREpVU1RfTElCX1ZBUlMoJHtRVF9NT0RVTEV9KQorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNS1EaXNhYmxlLXVzZS1vZi1leHQyZnMtZXh0Ml9mcy5oLWJ5LWNtYWtlLXMtaW50ZXJuYWwtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNS1EaXNhYmxlLXVzZS1vZi1leHQyZnMtZXh0Ml9mcy5oLWJ5LWNtYWtlLXMtaW50ZXJuYWwtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzY2U4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA1LURpc2FibGUtdXNlLW9mLWV4dDJmcy1leHQyX2ZzLmgtYnktY21ha2Utcy1pbnRlcm5hbC0ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAwZGY4ZDQ2ZDE0YzM3MWYyMWMzMjc5NjZhNTUzYzRjMTg3YThhY2ZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IFRodSwgNSBKdWwgMjAxOCAxMDoyODowNCAtMDMwMAorU3ViamVjdDogW1BBVENIIDUvNV0gRGlzYWJsZSB1c2Ugb2YgZXh0MmZzL2V4dDJfZnMuaCBieSBjbWFrZSdzIGludGVybmFsCisgbGliYXJjaGl2ZSBjb3B5CitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitXZSBkb24ndCB3YW50IHRvIGFkZCBhIGRlcGVuZGVuY3kgb24gZTJmc3Byb2dzLW5hdGl2ZSBmb3IgY21ha2UtbmF0aXZlLAorYW5kIHdlIGRvbid0IHVzZSBDUGFjayBzbyBqdXN0IGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ10KKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dCB8IDggKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKK2luZGV4IDIwNmYzYzZhNS4uNjQyZmIwZGQ5IDEwMDY0NAorLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dAorKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dAorQEAgLTQwMCwxMiArNDAwLDggQEAgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJjb3B5ZmlsZS5oIiBIQVZFX0NPUFlGSUxFX0gpCisgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJkaXJlY3QuaCIgSEFWRV9ESVJFQ1RfSCkKKyBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImRsZmNuLmgiIEhBVkVfRExGQ05fSCkKKyBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImVycm5vLmgiIEhBVkVfRVJSTk9fSCkKKy1MQV9DSEVDS19JTkNMVURFX0ZJTEUoImV4dDJmcy9leHQyX2ZzLmgiIEhBVkVfRVhUMkZTX0VYVDJfRlNfSCkKKy0KKy1DSEVDS19DX1NPVVJDRV9DT01QSUxFUygiI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorLSNpbmNsdWRlIDxleHQyZnMvZXh0Ml9mcy5oPgorLWludCBtYWluKHZvaWQpIHsgcmV0dXJuIEVYVDJfSU9DX0dFVEZMQUdTOyB9IiBIQVZFX1dPUktJTkdfRVhUMl9JT0NfR0VURkxBR1MpCistCisrU0VUKEhBVkVfRVhUMkZTX0VYVDJfRlNfSCAwKQorK1NFVChIQVZFX1dPUktJTkdfRVhUMl9JT0NfR0VURkxBR1MgMCkKKyBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImZjbnRsLmgiIEhBVkVfRkNOVExfSCkKKyBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImdycC5oIiBIQVZFX0dSUF9IKQorIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiaW50dHlwZXMuaCIgSEFWRV9JTlRUWVBFU19IKQorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQppbmRleCBkYzg0NzdlLi44YTBmYjRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQpAQCAtMyw2ICszLDcgQEAKIHNldCggQ01BS0VfQ1hYX0ZMQUdTICRFTlZ7Q1hYRkxBR1N9ICBDQUNIRSBTVFJJTkcgIiIgRk9SQ0UgKQogc2V0KCBDTUFLRV9BU01fRkxBR1MgJHtDTUFLRV9DX0ZMQUdTfSBDQUNIRSBTVFJJTkcgIiIgRk9SQ0UgKQogc2V0KCBDTUFLRV9MREZMQUdTX0ZMQUdTICR7Q01BS0VfQ1hYX0ZMQUdTfSBDQUNIRSBTVFJJTkcgIiIgRk9SQ0UgKQorc2V0KCBDTUFLRV9TWVNST09UICRFTlZ7T0VDT1JFX1RBUkdFVF9TWVNST09UfSApCiAKIHNldCggQ01BS0VfRklORF9ST09UX1BBVEggJEVOVntPRUNPUkVfVEFSR0VUX1NZU1JPT1R9ICRFTlZ7T0VDT1JFX05BVElWRV9TWVNST09UfSApCiBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIX01PREVfUFJPR1JBTSBORVZFUiApCkBAIC0xMCw2ICsxMSw4IEBACiBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIX01PREVfSU5DTFVERSBPTkxZICkKIHNldCggQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9QQUNLQUdFIE9OTFkgKQogCitzZXQoQ01BS0VfRklORF9MSUJSQVJZX0NVU1RPTV9MSUJfU1VGRklYICIkRU5We09FX0NNQUtFX0ZJTkRfTElCUkFSWV9DVVNUT01fTElCX1NVRkZJWH0iKQorCiAjIFNldCBDTUFLRV9TWVNURU1fUFJPQ0VTU09SIGZyb20gdGhlIHN5c3Jvb3QgbmFtZSAoYXNzdW1pbmcgcHJvY2Vzc29yLWRpc3Ryby1vcykuCiBpZiAoJEVOVntTREtUQVJHRVRTWVNST09UfSBNQVRDSEVTICIvc3lzcm9vdHMvKFthLXpBLVowLTlfLV0rKS0uKy0uKyIpCiAgIHNldChDTUFLRV9TWVNURU1fUFJPQ0VTU09SICR7Q01BS0VfTUFUQ0hfMX0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiN2U5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLUZyb20gODc1YzExZGJmODdkMTI1OGFkN2QzNjk3YTQwZDYwNWQ1MDNlNTY3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjAyOjE0IC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBQcmV2ZW50IHRoZSBkZXRlY3Rpb24gb2YgUXQ1Ci1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1DTWFrZSBkb2Vzbid0IGhhdmUgZGVwZW5kZW5jeSBvbiBxdDQvcXQ1LCBzbyB0aGVzZSB0ZXN0cyB1c3VhbGx5IGZhaWwKLWJ1dCBzdGlsbCBjYW4gY2F1c2UgdW5kZXRlcm1pbmlzdGljIHJlc3VsdHMgb3IgYnVpbGQgZmFpbHVyZXMgKHdoZW4KLU9FX1FNQUtFX1BBVEhfRVhURVJOQUxfSE9TVF9CSU5TIGlzIHVuZGVmaW5lZCBvciBuYXRpdmUgcW1ha2UgcmVtb3ZlZAotd2hpbGUgcnVubmluZyB0aGUgdGVzdCBpbiBjbWFrZSkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gVGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBUZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICB8IDIgKy0KLSBUZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBUZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICB8IDIgKy0KLSBUZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICB8IDIgKy0KLSBUZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICB8IDQgKystLQotIFRlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dCAgICAgIHwgMiArLQotIFRlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgMiArLQotIFRlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQgICAgIHwgMiArLQotIFRlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIFRlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlIHwgMiArLQotIDEzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiMzg3OTdiY2EuLmI1ZmJmYzVmYSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAotKysrIGIvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0Ci1AQCAtNiw3ICs2LDcgQEAgaWYoUE9MSUNZIENNUDAwMjApCi0gICBjbWFrZV9wb2xpY3koU0VUIENNUDAwMjAgTkVXKSAjIERyb3Agd2hlbiBDTWFrZSA+PSAyLjguMTEgcmVxdWlyZWQKLSBlbmRpZigpCi0gQ01ha2VfT1BUSU9OQUxfQ09NUE9ORU5UKGNtYWtlLWd1aSkKLS1maW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCkKLSsjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpCi0gaWYgKFF0NVdpZGdldHNfRk9VTkQpCi0gICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UXQ1V2lkZ2V0c19JTkNMVURFX0RJUlN9KQotICAgYWRkX2RlZmluaXRpb25zKCR7UXQ1V2lkZ2V0c19ERUZJTklUT05TfSkKLWRpZmYgLS1naXQgYS9UZXN0cy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA1MzM3ODhhNDQuLjMyZWYwM2M1NSAxMDA2NDQKLS0tLSBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAotQEAgLTEyNjAsNyArMTI2MCw3IEBAICR7Q01ha2VfQklOQVJZX0RJUn0vYmluL2NtYWtlIC1ERElSPWRldiAtUCAke0NNYWtlX1NPVVJDRV9ESVJ9L1V0aWxpdGllcy9SZWxlYXNlCi0gICAgIHNldChDTWFrZV9URVNUX1F0NSAxKQotICAgZW5kaWYoKQotICAgaWYoQ01ha2VfVEVTVF9RdDUpCi0tICAgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkKLSsgICAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkKLSAgIGVuZGlmKCkKLSAgIGlmKENNYWtlX1RFU1RfUXQ1IEFORCBRdDVXaWRnZXRzX0ZPVU5EKQotICAgICBhZGRfdGVzdChOQU1FIFF0NUF1dG9nZW4gQ09NTUFORCAke0NNQUtFX0NURVNUX0NPTU1BTkR9Ci1kaWZmIC0tZ2l0IGEvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAotaW5kZXggYWQ3NDk2MWQ5Li5hOWRkNzRiMTUgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKLUBAIC0zLDExICszLDExIEBAIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMTIpCi0gcHJvamVjdChRdDRBbmQ1QXV0b21vYykKLSAKLSBpZiAoUVRfUkVWRVJTRV9GSU5EX09SREVSKQotLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCi0rICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCi0gICBmaW5kX3BhY2thZ2UoUXQ0IFJFUVVJUkVEKQotIGVsc2UoKQotICAgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKLS0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotIGVuZGlmKCkKLSAKLSBzZXQoQ01BS0VfQVVUT01PQyBPTikKLWRpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKLWluZGV4IGE1YzJkOTliMi4uMmQ2NDBlNGEzIDEwMDY0NAotLS0tIGEvVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKLUBAIC0xNCw3ICsxNCw3IEBAIGVsc2UoKQotICAgaWYgKE5PVCBRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKLSAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCi0gICBlbmRpZigpCi0tICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKLSsgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKLSAKLSAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCi0gICBzZXQoUVRfR1VJX1RBUkdFVCBRdDU6OldpZGdldHMpCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBkZmY5ZDBjNjYuLmM2ZThmYzNmNSAxMDA2NDQKLS0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjMsNyArMjMsNyBAQCBlbHNlKCkKLSAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCi0gICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQotICAgZW5kaWYoKQotLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0rICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0gCi0gICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCi0gCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMTE0ZDliYWMwLi4xNTdmZTBhYWEgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQKLUBAIC0xLDcgKzEsNyBAQAotIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjgpCi0gcHJvamVjdChtYWNvcy1mdy10ZXN0KQotIAotLWZpbmRfcGFja2FnZShRdDVUZXN0IFJFUVVJUkVEKQotKyNmaW5kX3BhY2thZ2UoUXQ1VGVzdCBSRVFVSVJFRCkKLSAKLSBzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEIDExKQotIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9vdXRwdXQvYmluKQotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKLWluZGV4IDgyMTdiOGRiZi4uODZiYjdiYzdmIDEwMDY0NAotLS0tIGEvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTAsNyArMTAsNyBAQCBlbHNlKCkKLSAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCi0gICBlbmRpZigpCi0gCi0tICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSsgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCi0gZW5kaWYoKQotIAotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKLWluZGV4IGU3MmMxOTEyZS4uZDdlNjg4NGNlIDEwMDY0NAotLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0Ci1AQCAtMiw3ICsyLDcgQEAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuOSkKLSBjbWFrZV9wb2xpY3koU0VUIENNUDAwNzEgTkVXKQotIHByb2plY3QoUXRBdXRvZ2VuUmVydW4pCi0gCi0tIyBUZWxsIGZpbmRfcGFja2FnZShRdDUpIHdoZXJlIHRvIGZpbmQgUXQuCi0rIyBUZWxsICNmaW5kX3BhY2thZ2UoUXQ1KSB3aGVyZSB0byBmaW5kIFF0LgotIGlmKFFUX1FNQUtFX0VYRUNVVEFCTEUpCi0gICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFF0X0JJTl9ESVIgIiR7UVRfUU1BS0VfRVhFQ1VUQUJMRX0iIFBBVEgpCi0gICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFF0X1BSRUZJWF9ESVIgIiR7UXRfQklOX0RJUn0iIFBBVEgpCi1AQCAtMjMsNyArMjMsNyBAQCBlbHNlKCkKLSAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCi0gICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQotICAgZW5kaWYoKQotLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0rICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0gCi0gICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCi0gCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiN2NjNWU5ZmYuLmUxZDEwOTk1MyAxMDA2NDQKLS0tLSBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0Ci1AQCAtOSw3ICs5LDcgQEAgc2V0KENNQUtFX0FVVE9NT0NfREVQRU5EX0ZJTFRFUlMKLSBpZiAoTk9UIFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQotICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCi0gZW5kaWYoKQotLWZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQotKyNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKLSAKLSBpZihRdDVfUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBBTkQgQ01BS0VfQ1hYX0NPTVBJTEVfT1BUSU9OU19QSUMpCi0gICBhZGRfZGVmaW5pdGlvbnMoJHtDTUFLRV9DWFhfQ09NUElMRV9PUFRJT05TX1BJQ30pCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAotaW5kZXggYmFmZDljZjQ4Li40M2VjOTMzZDIgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQKLUBAIC0xMCw3ICsxMCw3IEBAIGVsc2UoKQotICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKLSAgIGVuZGlmKCkKLSAKLS0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKLSBlbmRpZigpCi0gCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKLWluZGV4IDI5MTU5MmU3ZC4uNDBjZDUyODY4IDEwMDY0NAotLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAotQEAgLTksNyArOSw3IEBAIGVsc2UoKQotICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKLSAgIGVuZGlmKCkKLSAKLS0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKLSBlbmRpZigpCi0gCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotaW5kZXggMjkzMjVmZjBhLi5kMzBkMDFlNzggMTAwNjQ0Ci0tLS0gYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKLUBAIC0yNzQsNyArMjc0LDcgQEAgYWRkX1J1bkNNYWtlX3Rlc3QoY29uZmlndXJlX2ZpbGUpCi0gYWRkX1J1bkNNYWtlX3Rlc3QoQ1Rlc3RUaW1lb3V0QWZ0ZXJNYXRjaCkKLSAKLSBmaW5kX3BhY2thZ2UoUXQ0IFFVSUVUKQotLWZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKQotKyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKLSBpZiAoUVQ0X0ZPVU5EIEFORCBRdDVDb3JlX0ZPVU5EIEFORCBOT1QgUXQ1Q29yZV9WRVJTSU9OIFZFUlNJT05fTEVTUyA1LjEuMCkKLSAgIGFkZF9SdW5DTWFrZV90ZXN0KEluY29tcGF0aWJsZVF0KQotIGVuZGlmKCkKLWRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCi1pbmRleCA0ZmNjZGM0MTguLmI3NmUxZTUzMSAxMDA2NDQKLS0tLSBhL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCi0rKysgYi9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQotQEAgLTEsNiArMSw2IEBACi0gCi0gZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKLS1maW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSsjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCi0gCi0gYWRkX2V4ZWN1dGFibGUobWFpbmV4ZSBtYWluLmNwcCkKLSB0YXJnZXRfbGlua19saWJyYXJpZXMobWFpbmV4ZSBRdDQ6OlF0Q29yZSBRdDU6OkNvcmUpCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWxpYmFyY2hpdmUtZGlzYWJsZS1leHQyZnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWxpYmFyY2hpdmUtZGlzYWJsZS1leHQyZnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMzY3MTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRGlzYWJsZSB1c2Ugb2YgZXh0MmZzL2V4dDJfZnMuaCBieSBjbWFrZSdzIGludGVybmFsIGxpYmFyY2hpdmUgY29weQotCi1XZSBkb24ndCB3YW50IHRvIGFkZCBhIGRlcGVuZGVuY3kgb24gZTJmc3Byb2dzLW5hdGl2ZSBmb3IgY21ha2UtbmF0aXZlLAotYW5kIHdlIGRvbid0IHVzZSBDUGFjayBzbyBqdXN0IGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ10KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLS0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKLUBAIC0yMzcsMTIgKzIzNyw4IEBAIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiY29weWZpbGUuaCIgSEFWRV9DT1BZRklMRV9IKQotIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZGlyZWN0LmgiIEhBVkVfRElSRUNUX0gpCi0gTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJkbGZjbi5oIiBIQVZFX0RMRkNOX0gpCi0gTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJlcnJuby5oIiBIQVZFX0VSUk5PX0gpCi0tTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJleHQyZnMvZXh0Ml9mcy5oIiBIQVZFX0VYVDJGU19FWFQyX0ZTX0gpCi0tCi0tQ0hFQ0tfQ19TT1VSQ0VfQ09NUElMRVMoIiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLS0jaW5jbHVkZSA8ZXh0MmZzL2V4dDJfZnMuaD4KLS1pbnQgbWFpbih2b2lkKSB7IHJldHVybiBFWFQyX0lPQ19HRVRGTEFHUzsgfSIgSEFWRV9XT1JLSU5HX0VYVDJfSU9DX0dFVEZMQUdTKQotLQotK1NFVChIQVZFX0VYVDJGU19FWFQyX0ZTX0ggMCkKLStTRVQoSEFWRV9XT1JLSU5HX0VYVDJfSU9DX0dFVEZMQUdTIDApCi0gTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJmY250bC5oIiBIQVZFX0ZDTlRMX0gpCi0gTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJncnAuaCIgSEFWRV9HUlBfSCkKLSBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImludHR5cGVzLmgiIEhBVkVfSU5UVFlQRVNfSCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2Vudmlyb25tZW50LmQtY21ha2Uuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9lbnZpcm9ubWVudC5kLWNtYWtlLnNoCmluZGV4IDBlYjU2YjYuLjdiZGIxOWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2Vudmlyb25tZW50LmQtY21ha2Uuc2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvZW52aXJvbm1lbnQuZC1jbWFrZS5zaApAQCAtMSArMSwyIEBACi1hbGlhcyBjbWFrZT0iY21ha2UgLURDTUFLRV9UT09MQ0hBSU5fRklMRT0kT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zaGFyZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSIKK2V4cG9ydCBPRV9DTUFLRV9UT09MQ0hBSU5fRklMRT0iJE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3Ivc2hhcmUvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UiCitleHBvcnQgT0VfQ01BS0VfRklORF9MSUJSQVJZX0NVU1RPTV9MSUJfU1VGRklYPSJgZWNobyAkT0VDT1JFX0JBU0VMSUIgfCBzZWQgLWUgcy9saWIvL2AiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9xdDQtZmFpbC1zaWxlbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9xdDQtZmFpbC1zaWxlbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZmMyNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvcXQ0LWZhaWwtc2lsZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotRmFpbCBzaWxlbnRseSBpZiBzeXN0ZW0gUXQgaW5zdGFsbGF0aW9uIGlzIGJyb2tlbgotCi1GaXhlcyBhIHJlZ3Jlc3Npb24gaW4gYmVoYXZpb3VyIGZyb20gMi44LjEwIHRvIDIuOC4xMSByZXN1bHRpbmcgaW4gdGhlCi1mb2xsb3dpbmcgZXJyb3IgaWYgdGhlIHN5c3RlbSBRdCBpbnN0YWxsYXRpb24gaXMgYnJva2VuOgotCi1DTWFrZSBFcnJvciBhdCBNb2R1bGVzL0ZpbmRRdDQuY21ha2U6MTAyOCAoc2V0X3Byb3BlcnR5KToKLSAgc2V0X3Byb3BlcnR5IGNvdWxkIG5vdCBmaW5kIFRBUkdFVCBRdDQ6OlF0Q29yZS4gIFBlcmhhcHMgaXQgaGFzIG5vdCB5ZXQKLSAgYmVlbiBjcmVhdGVkLgotQ2FsbCBTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6Ci0gIFRlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0Ojc5IChmaW5kX3BhY2thZ2UpCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLQotVGhlIHBhdGNoIHdhcyBzbGlnaHRseSBhZGFwdGVkIGluIG9yZGVyIHRvIG1hdGNoIGNtYWtlIDMuMi4yOgotQW5vdGhlciBzZXRfcHJvcGVydHkgd2FzIGludHJvZHVjZWQgd2hpY2ggaGFkIHRvIGJlIGluY2x1ZGVkCi13aXRoaW4gdGhlIGlmKFFUX1FUQ09SRV9GT1VORCkgc3RhdGVtZW50LgotCi1TaWduZWQtb2ZmLWJ5OiBNb3JpdHogQmx1bWUgPG1vcml0ei5ibHVtZUBibXctY2FyaXQuZGU+Ci0tLS0KLSBNb2R1bGVzL0ZpbmRRdDQuY21ha2UgfCAzOSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IDY3MDQ3NjkuLjkwNDhlMzUgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLSsrKyBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQotQEAgLTEwMDAsMjUgKzEwMDAsMjYgQEAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECi0gICAgIGVuZGlmKCkKLSAgIGVuZG1hY3JvKCkKLSAKLS0KLS0gICMgU2V0IFFUX3h5el9MSUJSQVJZIHZhcmlhYmxlIGFuZCBhZGQKLS0gICMgbGlicmFyeSBpbmNsdWRlIHBhdGggdG8gUVRfSU5DTFVERVMKLS0gIF9RVDRfQURKVVNUX0xJQl9WQVJTKFF0Q29yZSkKLS0gIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCi0tICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTCi0tICAgICAgIiR7UVRfTUtTUEVDU19ESVJ9L2RlZmF1bHQiCi0tICAgICAgJHtRVF9JTkNMVURFX0RJUn0KLS0gICkKLS0gIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCi0tICAgIElOVEVSRkFDRV9DT01QSUxFX0RFRklOSVRJT05TCi0tICAgICAgJDwkPE5PVDokPENPTkZJRzpEZWJ1Zz4+OlFUX05PX0RFQlVHPgotLSAgKQotLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBQUk9QRVJUWQotLSAgICBJTlRFUkZBQ0VfUVRfTUFKT1JfVkVSU0lPTiA0Ci0tICApCi0tICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQotLSAgICBDT01QQVRJQkxFX0lOVEVSRkFDRV9TVFJJTkcgUVRfTUFKT1JfVkVSU0lPTgotLSAgKQotKyAgaWYoUVRfUVRDT1JFX0ZPVU5EKQotKyAgICAjIFNldCBRVF94eXpfTElCUkFSWSB2YXJpYWJsZSBhbmQgYWRkCi0rICAgICMgbGlicmFyeSBpbmNsdWRlIHBhdGggdG8gUVRfSU5DTFVERVMKLSsgICAgX1FUNF9BREpVU1RfTElCX1ZBUlMoUXRDb3JlKQotKyAgICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQotKyAgICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTCi0rICAgICAgICAiJHtRVF9NS1NQRUNTX0RJUn0vZGVmYXVsdCIKLSsgICAgICAgICR7UVRfSU5DTFVERV9ESVJ9Ci0rICAgICkKLSsgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKLSsgICAgICBJTlRFUkZBQ0VfQ09NUElMRV9ERUZJTklUSU9OUwotKyAgICAgICAgJDwkPE5PVDokPENPTkZJRzpEZWJ1Zz4+OlFUX05PX0RFQlVHPgotKyAgICApCi0rICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgUFJPUEVSVFkKLSsgICAgICBJTlRFUkZBQ0VfUVRfTUFKT1JfVkVSU0lPTiA0Ci0rICAgICkKLSsgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKLSsgICAgICBDT01QQVRJQkxFX0lOVEVSRkFDRV9TVFJJTkcgUVRfTUFKT1JfVkVSU0lPTgotKyAgICApCi0rICBlbmRpZigpCi0gCi0gICBmb3JlYWNoKFFUX01PRFVMRSAke1FUX01PRFVMRVN9KQotICAgICBfUVQ0X0FESlVTVF9MSUJfVkFSUygke1FUX01PRFVMRX0pCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2Uvc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NDE1NTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2Uvc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIDEwYjhiNTIzODY5MTI0ZDJmYzhjZDk4ZDllMDI4YzBiY2ZmZDYxYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogVGh1LCAxMiBNYXkgMjAxMSAxNTozNjowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gY21ha2U6IHN1cHBvcnQgT3BlbkVtYmVkZGVkIFF0NCB0b29sIGJpbmFyeSBuYW1lcwotCi1UaGUgRmluZFF0NCBtb2R1bGUgbG9va3MgZm9yIFF0NCBiaW5hcmllcyB0byBiZSBhYmxlIHRvIGdhdGhlciB0aGUKLXBhdGhzIHVzZWQgZm9yIGNvbXBpbGF0aW9uIGFuZCBhbHNvIHRvIGJlIHVzaW5nIGR1cmluZyBvdGhlciBwcm9jZXNzZXMKLSh0cmFuc2xhdGlvbiB1cGRhdGUsIHRyYW5zbGF0aW9uIGJpbmFyeSBnZW5lcmF0aW5nIGFuZCBsaWtlKSBob3dldmVyCi1PcGVuRW1iZWRkZWQgaGFzIHJlbmFtZWQgdGhvc2UgdG8gYWxsb3cgb2xkIFFNYWtlIHRvIGJlIHVzZWQgaW4KLXBhcmFsbGVsIHdpdGggdGhlIGN1cnJlbnQgb25lLiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlCi1PcGVuRW1iZWRkZWQgc3BlY2lmaWMgYmluYXJ5IG5hbWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotCi1UaGUgcGF0Y2ggd2FzIHNsaWdodGx5IGFkYXB0ZWQgaW4gb3JkZXIgdG8gbWF0Y2ggY21ha2UgMy4yLjI6Ci1JbnN0ZWFkIG9mIGZpbmRfcHJvZ3JhbSwgX2ZpbmRfcXQ0X3Byb2dyYW0gaXMgbm93IHVzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IE1vcml0eiBCbHVtZSA8bW9yaXR6LmJsdW1lQGJtdy1jYXJpdC5kZT4KLQotLS0tCi0gTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IGM2N2QwYmUuLjBjZjE2OWIgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLSsrKyBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQotQEAgLTUxNiw3ICs1MTYsNyBAQCBlbmRmdW5jdGlvbigpCi0gCi0gc2V0KFFUNF9JTlNUQUxMRURfVkVSU0lPTl9UT09fT0xEIEZBTFNFKQotIAotLXNldChfUVQ0X1FNQUtFX05BTUVTIHFtYWtlIHFtYWtlNCBxbWFrZS1xdDQgcW1ha2UtbWFjKQotK3NldChfUVQ0X1FNQUtFX05BTUVTIHFtYWtlIHFtYWtlMiBxbWFrZTQgcW1ha2UtcXQ0IHFtYWtlLW1hYykKLSBfcXQ0X2ZpbmRfcW1ha2UoIiR7X1FUNF9RTUFLRV9OQU1FU30iIFFUX1FNQUtFX0VYRUNVVEFCTEUgUVRWRVJTSU9OKQotIAotIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAotQEAgLTExNDIsMTIgKzExNDIsMTIgQEAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECi0gICBfZmluZF9xdDRfcHJvZ3JhbShRVF9NT0NfRVhFQ1VUQUJMRSBRdDQ6Om1vYyBtb2MtcXQ0IG1vYzQgbW9jKQotICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfVUlDX0VYRUNVVEFCTEUgUXQ0Ojp1aWMgdWljLXF0NCB1aWM0IHVpYykKLSAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1VJQzNfRVhFQ1VUQUJMRSBRdDQ6OnVpYzMgdWljMykKLS0gIF9maW5kX3F0NF9wcm9ncmFtKFFUX1JDQ19FWEVDVVRBQkxFIFF0NDo6cmNjIHJjYykKLS0gIF9maW5kX3F0NF9wcm9ncmFtKFFUX0RCVVNDUFAyWE1MX0VYRUNVVEFCTEUgUXQ0OjpxZGJ1c2NwcDJ4bWwgcWRidXNjcHAyeG1sKQotLSAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfREJVU1hNTDJDUFBfRVhFQ1VUQUJMRSBRdDQ6OnFkYnVzeG1sMmNwcCBxZGJ1c3htbDJjcHApCi0rICBfZmluZF9xdDRfcHJvZ3JhbShRVF9SQ0NfRVhFQ1VUQUJMRSBRdDQ6OnJjYyByY2M0IHJjYykKLSsgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0RCVVNDUFAyWE1MX0VYRUNVVEFCTEUgUXQ0OjpxZGJ1c2NwcDJ4bWwgcWRidXNjcHAyeG1sNCBxZGJ1c2NwcDJ4bWwpCi0rICBfZmluZF9xdDRfcHJvZ3JhbShRVF9EQlVTWE1MMkNQUF9FWEVDVVRBQkxFIFF0NDo6cWRidXN4bWwyY3BwIHFkYnVzeG1sMmNwcDQgcWRidXN4bWwyY3BwKQotICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTFVQREFURV9FWEVDVVRBQkxFIFF0NDo6bHVwZGF0ZSBsdXBkYXRlLXF0NCBsdXBkYXRlNCBsdXBkYXRlKQotICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTFJFTEVBU0VfRVhFQ1VUQUJMRSBRdDQ6OmxyZWxlYXNlIGxyZWxlYXNlLXF0NCBscmVsZWFzZTQgbHJlbGVhc2UpCi0tICBfZmluZF9xdDRfcHJvZ3JhbShRVF9RQ09MTEVDVElPTkdFTkVSQVRPUl9FWEVDVVRBQkxFIFF0NDo6cWNvbGxlY3Rpb25nZW5lcmF0b3IgcWNvbGxlY3Rpb25nZW5lcmF0b3ItcXQ0IHFjb2xsZWN0aW9uZ2VuZXJhdG9yKQotKyAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfUUNPTExFQ1RJT05HRU5FUkFUT1JfRVhFQ1VUQUJMRSBRdDQ6OnFjb2xsZWN0aW9uZ2VuZXJhdG9yIHFjb2xsZWN0aW9uZ2VuZXJhdG9yLXF0NCBxY29sbGVjdGlvbmdlbmVyYXRvciBxY29sbGVjdGlvbmdlbmVyYXRvcjQpCi0gICBfZmluZF9xdDRfcHJvZ3JhbShRVF9ERVNJR05FUl9FWEVDVVRBQkxFIFF0NDo6ZGVzaWduZXIgZGVzaWduZXItcXQ0IGRlc2lnbmVyNCBkZXNpZ25lcikKLSAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0xJTkdVSVNUX0VYRUNVVEFCTEUgUXQ0OjpsaW5ndWlzdCBsaW5ndWlzdC1xdDQgbGluZ3Vpc3Q0IGxpbmd1aXN0KQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEwLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkODFlZGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotcmVxdWlyZSBjbWFrZS5pbmMKLQotaW5oZXJpdCBjbWFrZQotCi1ERVBFTkRTICs9ICJjdXJsIGV4cGF0IHpsaWIgbGliYXJjaGl2ZSB4eiBuY3Vyc2VzIGJ6aXAyIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICBmaWxlOi8vT0VUb29sY2hhaW5Db25maWcuY21ha2UgXAotICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLWNtYWtlLnNoIgotCi0jIFN0cmlwICR7cHJlZml4fSBmcm9tICR7ZG9jZGlyfSwgc2V0IHJlc3VsdCBpbnRvIGRvY2Rpcl9zdHJpcHBlZAotcHl0aG9uICgpIHsKLSAgICBwcmVmaXg9ZC5nZXRWYXIoInByZWZpeCIpCi0gICAgZG9jZGlyPWQuZ2V0VmFyKCJkb2NkaXIiKQotCi0gICAgaWYgbm90IGRvY2Rpci5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgIGJiLmZhdGFsKCdkb2NkaXIgbXVzdCBjb250YWluIHByZWZpeCBhcyBpdHMgcHJlZml4JykKLQotICAgIGRvY2Rpcl9zdHJpcHBlZCA9IGRvY2RpcltsZW4ocHJlZml4KTpdCi0gICAgaWYgbGVuKGRvY2Rpcl9zdHJpcHBlZCkgPiAwIGFuZCBkb2NkaXJfc3RyaXBwZWRbMF0gPT0gJy8nOgotICAgICAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJfc3RyaXBwZWRbMTpdCi0KLSAgICBkLnNldFZhcigiZG9jZGlyX3N0cmlwcGVkIiwgZG9jZGlyX3N0cmlwcGVkKQotfQotCi1FWFRSQV9PRUNNQUtFPSIgXAotICAgIC1EQ01BS0VfRE9DX0RJUj0ke2RvY2Rpcl9zdHJpcHBlZH0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUklFUz0xIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9KU09OQ1BQPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlVWPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlJIQVNIPTAgXAotICAgIC1ES1dTWVNfQ0hBUl9JU19TSUdORUQ9MSBcCi0gICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCi0gICAgLURLV1NZU19MRlNfV09SS1M9MSBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9jbWFrZQotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vT0VUb29sY2hhaW5Db25maWcuY21ha2UgJHtEfSR7ZGF0YWRpcn0vY21ha2UvCi0KLSAgICBta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLWNtYWtlLnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvY21ha2Uuc2gKLX0KLQotRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSAke2RhdGFkaXJ9L2NtYWtlICR7ZGF0YWRpcn0vYWNsb2NhbCIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkb2NkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDQ1NzY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xMi4yLmJiCkBAIC0wLDAgKzEsNTMgQEAKK3JlcXVpcmUgY21ha2UuaW5jCisKK2luaGVyaXQgY21ha2UKKworREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKKyAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCBcCisgICAgZmlsZTovLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaCBcCisiCisKKyMgU3RyaXAgJHtwcmVmaXh9IGZyb20gJHtkb2NkaXJ9LCBzZXQgcmVzdWx0IGludG8gZG9jZGlyX3N0cmlwcGVkCitweXRob24gKCkgeworICAgIHByZWZpeD1kLmdldFZhcigicHJlZml4IikKKyAgICBkb2NkaXI9ZC5nZXRWYXIoImRvY2RpciIpCisKKyAgICBpZiBub3QgZG9jZGlyLnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgYmIuZmF0YWwoJ2RvY2RpciBtdXN0IGNvbnRhaW4gcHJlZml4IGFzIGl0cyBwcmVmaXgnKQorCisgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyW2xlbihwcmVmaXgpOl0KKyAgICBpZiBsZW4oZG9jZGlyX3N0cmlwcGVkKSA+IDAgYW5kIGRvY2Rpcl9zdHJpcHBlZFswXSA9PSAnLyc6CisgICAgICAgIGRvY2Rpcl9zdHJpcHBlZCA9IGRvY2Rpcl9zdHJpcHBlZFsxOl0KKworICAgIGQuc2V0VmFyKCJkb2NkaXJfc3RyaXBwZWQiLCBkb2NkaXJfc3RyaXBwZWQpCit9CisKK0VYVFJBX09FQ01BS0U9IiBcCisgICAgLURDTUFLRV9ET0NfRElSPSR7ZG9jZGlyX3N0cmlwcGVkfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSSUVTPTEgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0pTT05DUFA9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCUkhBU0g9MCBcCisgICAgLURLV1NZU19DSEFSX0lTX1NJR05FRD0xIFwKKyAgICAtREJVSUxEX0N1cnNlc0RpYWxvZz0wIFwKKyAgICAtREtXU1lTX0xGU19XT1JLUz0xIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2NtYWtlCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSAke0R9JHtkYXRhZGlyfS9jbWFrZS8KKworICAgIG1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtY21ha2Uuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9jbWFrZS5zaAorfQorCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059ICR7ZGF0YWRpcn0vY21ha2UgJHtkYXRhZGlyfS9hY2xvY2FsIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RvY2Rpcn0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jX2dpdC5iYgppbmRleCAzMTc2MTM2Li4yOTYwODExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jX2dpdC5iYgpAQCAtOSw4ICs5LDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtdGhlLXNoYXJlZC1saWJyYXJ5LnBhdGNoIFwKICAgICAgICAgICAgIgogCi1QViA9ICIwLjEwLjArZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiNzQ4ODkxZmY4ZWU1MjRjMmQzNzkyNmM2MDhjZDI3OTRmODgwMTNmMyIKK1BWID0gIjAuMTEuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI0MzRhNDBiYWJkZGU1N2FiNDA1ZTlhMTA4NWEzMGU5NTc1ZWEwYzkyIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yMSw3ICsyMSw3IEBACiAKIEVYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKICMgRGlyZWN0IGNyZWF0ZXJlcG8gdG8gcmVhZCBycG0gY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKQEAgLTI5LDMgKzI5LDggQEAKICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0KIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9jcmVhdGVyZXBvX2MgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTREtQQVRITkFUSVZFfSR7bGliZGlyX25hdGl2ZXNka30vcnBtCisgICAgICAgIHJtIC1yZiAke0R9L2V0YworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVza3RvcC1maWxlLXV0aWxzL2Rlc2t0b3AtZmlsZS11dGlscy1uYXRpdmVfMC4yMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlXzAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZGFhYmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVza3RvcC1maWxlLXV0aWxzL2Rlc2t0b3AtZmlsZS11dGlscy1uYXRpdmVfMC4yMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoICouZGVza3RvcCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvZGVza3RvcC1maWxlLXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1ERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2Rlc2t0b3AtZmlsZS11dGlscy9yZWxlYXNlcy9kZXNrdG9wLWZpbGUtdXRpbHMtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTk5MTMzZDUxY2M5YTQxYmZlYzE4NjQxNDkwNmI2ZjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmMwOTQwMzFiZGVjNDZjOWY2MjE3MDhmOTE5MDg0ZTFjYjUyOTRlMmM1YjFlNGM4ODNiM2U3MGNiODkwMzM4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbmF0aXZlCi0KLVMgPSAiJHtXT1JLRElSfS9kZXNrdG9wLWZpbGUtdXRpbHMtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfcHJvZ19FTUFDUz1ubyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHNfMC4yMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHNfMC4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDQ2ZjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVza3RvcC1maWxlLXV0aWxzL2Rlc2t0b3AtZmlsZS11dGlsc18wLjIzLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoICouZGVza3RvcCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvZGVza3RvcC1maWxlLXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy92YWxpZGF0b3IuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTI3O21kNT0yODFlMTExNGVlNmM0ODZhMWEwYTQyOTU5ODZiOTQxNiIKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS9yZWxlYXNlcy8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNTk5MTMzZDUxY2M5YTQxYmZlYzE4NjQxNDkwNmI2ZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmMwOTQwMzFiZGVjNDZjOWY2MjE3MDhmOTE5MDg0ZTFjYjUyOTRlMmM1YjFlNGM4ODNiM2U3MGNiODkwMzM4NSIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcHJvZ19FTUFDUz1ubyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXQvYXZvaWQtY2hlY2stdXNlci1icmVhay1jYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0L2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODExZmFhNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0L2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAxMDQ2NTkzYWFjYjc0ZmY4ODhhMGQ2OGMwZmY4OWIyMGM0YmM5ZWQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IE1heSAyMDE4IDE3OjE3OjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpZmZzdGF0OiBmaXggd3JvbmcgZXZhbHVhdGlvbiBvZiBDQworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCittNCBmdW5jdGlvbiBDRl9DQ19FTlZfRkxBR1MgY2hlY2tzIHdoZXRoZXIgdmFyaWFibGUgQ0MgY29udGFpbnMgb3B0aW9ucyAnLUknLCAnLVUnCithbmQgJy1EJy4gSXQgaXMgbm90IHN1aXRhYmxlIGZvciBvZSB0aGF0IG9wdGlvbiBzdWNoIGFzICctRF9GT1JUSUZZX1NPVVJDRT0yJyBtYXkKK2JlIGluY2x1ZGVkIGluIENDLiBBbmQgdGhlbiBDQyB3aWxsIGJlIHdyb25nbHkgZmlsdGVyZWQuCisKK1NvIGNvbW1lbnQgb3V0IENGX0NDX0VOVl9GTEFHUyBmcm9tIGZ1bmN0aW9uIENGX1BST0dfQ0MuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCistLS0KKyBhY2xvY2FsLm00IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKK2luZGV4IDkyODFhYTguLmRkNTdiN2EgMTAwNjQ0CistLS0gYS9hY2xvY2FsLm00CisrKysgYi9hY2xvY2FsLm00CitAQCAtMTIzOSw3ICsxMjM5LDcgQEAgQ0ZfR0NDX1ZFUlNJT04KKyBDRl9BQ1ZFUlNJT05fQ0hFQ0soMi41MiwKKyAJW0FDX1BST0dfQ0NfU1REQ10sCisgCVtDRl9BTlNJX0NDX1JFUURdKQorLUNGX0NDX0VOVl9GTEFHUworK2RubCBDRl9DQ19FTlZfRkxBR1MKKyBdKWRubAorIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBkbmwgQ0ZfUFJPR19HUk9GRiB2ZXJzaW9uOiAzIHVwZGF0ZWQ6IDIwMTgvMDEvMDcgMTM6MTY6MTkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGI3YjA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgdG8gcHJvZHVjZSBhIHN0YXRpc3RpY3MgYmFzZWQgb24gYSBkaWZmIgotREVTQ1JJUFRJT04gPSAiZGlmZnN0YXQgcmVhZHMgdGhlIG91dHB1dCBvZiBkaWZmIGFuZCBkaXNwbGF5cyBhIGhpc3RvZ3JhbSBvZiBcCi10aGUgaW5zZXJ0aW9ucywgZGVsZXRpb25zLCBhbmQgbW9kaWZpY2F0aW9ucyBwZXItZmlsZS4gSXQgaXMgdXNlZnVsIGZvciBcCi1yZXZpZXdpbmcgbGFyZ2UsIGNvbXBsZXggcGF0Y2ggZmlsZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpZmZzdGF0LyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2luc3RhbGwtc2g7ZW5kbGluZT00MjttZDU9YjM1NDk3MjZjMTAyMmJlZTA5YzE3NGM3MmEwY2E0YTUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImMwNDhhMzJkNTVkOGJkNjcyNGYzODJiYWY0MWYzMjVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1MzU5ZTBjMjcxODNmOTk3YjM2YzkyMDI1ODNiNWRjMmRmMzkwYzIwZTIyYTkyNjA2YWY0YmY3ODU2YTU1ZWUiCi0KLVMgPSAiJHtXT1JLRElSfS9kaWZmc3RhdC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2Q3Nzc5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlRvb2wgdG8gcHJvZHVjZSBhIHN0YXRpc3RpY3MgYmFzZWQgb24gYSBkaWZmIgorREVTQ1JJUFRJT04gPSAiZGlmZnN0YXQgcmVhZHMgdGhlIG91dHB1dCBvZiBkaWZmIGFuZCBkaXNwbGF5cyBhIGhpc3RvZ3JhbSBvZiBcCit0aGUgaW5zZXJ0aW9ucywgZGVsZXRpb25zLCBhbmQgbW9kaWZpY2F0aW9ucyBwZXItZmlsZS4gSXQgaXMgdXNlZnVsIGZvciBcCityZXZpZXdpbmcgbGFyZ2UsIGNvbXBsZXggcGF0Y2ggZmlsZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpZmZzdGF0LyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2luc3RhbGwtc2g7ZW5kbGluZT00MjttZDU9YjM1NDk3MjZjMTAyMmJlZTA5YzE3NGM3MmEwY2E0YTUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTFlMTA2YmIzNGNiMDk3NzUwZGI3ZGRjMGJhMWQ4ZmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2YwOTE4MzY0NGVkNzdhMTU2YjE1MzQ2YmJhZDRlODljOTM1NDNlMTQwYWRkOWRhYjE4NzQ3ZTMwNTIyNTkxZiIKKworUyA9ICIke1dPUktESVJ9L2RpZmZzdGF0LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0CisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgorCitMREZMQUdTICs9ICIke1RPT0xDSEFJTl9PUFRJT05TfSIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtciAke1N9L3Rlc3RpbmcgJHtEfSR7UFRFU1RfUEFUSH0KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MDQ2NDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGFyYWxsZWwgYnVpbGQgc3lzdGVtIgotREVTQ1JJUFRJT04gPSAiZGlzdGNjIGlzIGEgcGFyYWxsZWwgYnVpbGQgc3lzdGVtIHRoYXQgZGlzdHJpYnV0ZXMgXAotY29tcGlsYXRpb24gb2YgQy9DKysvT2JqQyBjb2RlIGFjcm9zcyBtYWNoaW5lcyBvbiBhIG5ldHdvcmsuIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJhdmFoaSBiaW51dGlscyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInBvcHQiCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywtLXdpdGhvdXQtZ3RrIC0td2l0aG91dC1nbm9tZSxndGsrIgotIyB1c2Ugc3lzdGVtIHBvcHQgYnkgZGVmYXVsdAotUEFDS0FHRUNPTkZJR1twb3B0XSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtcG9wdCwtLXdpdGgtaW5jbHVkZWQtcG9wdCxwb3B0IgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJhdmFoaS1kYWVtb24iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ha3VzdGVyL2Rpc3RjYy5naXQ7YnJhbmNoPSR7UFZ9IFwKLSAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlYnVpbGRkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS16ZXJvY29uZi1JbmNsdWRlLWZjbnRsLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Ntb24tZ25vbWUuZGVza3RvcCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXN0Y2MgXAotICAgICAgICAgICBmaWxlOi8vZGlzdGNjLnNlcnZpY2UiCi1TUkNSRVYgPSAiZDhiMThkZjNlOWRjYmU0ZjA5MmJlZDU2NTgzNWQzOTc1ZTk5NDMyYyIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtV2Vycm9yIFBZVEhPTj0nJyAtLWRpc2FibGUtcHVtcC1tb2RlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0taG9tZSAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1naWQgbm9ncm91cCBcCi0gICAgICAgICAgICAgICAgICAgICAgIGRpc3RjYyIKLQotSU5JVFNDUklQVF9OQU1FID0gImRpc3RjYyIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkaXN0Y2Muc2VydmljZSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICAjIEltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OiBjb21wcmVzcyB3L28gdGltZXN0YW1wcwotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgICJHWklQX0JJTj1nemlwIC1uIiBpbnN0YWxsCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGlzdGNjICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZGlzdGNjCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaXN0Y2Muc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIHNlZCAtaSAtZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGlzdGNjLnNlcnZpY2UKLSAgICAke0RFU0tUT1BJTlNUQUxMfQotfQotREVTS1RPUElOU1RBTEwgPSAiIgotREVTS1RPUElOU1RBTExfbGliYy1nbGliYyAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9kaXN0Y2MvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGlzdGNjbW9uLWdub21lLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vZGlzdGNjLwotfQotUEFDS0FHRVMgKz0gImRpc3RjYy1kaXN0bW9uLWdub21lIgotCi1GSUxFU18ke1BOfSA9ICIgJHtzeXNjb25mZGlyfSBcCi0JCSR7YmluZGlyfS9kaXN0Y2MgXAotICAgICR7YmluZGlyfS9sc2Rpc3RjYyBcCi0JCSR7YmluZGlyfS9kaXN0Y2NkIFwKLQkJJHtiaW5kaXJ9L2Rpc3RjY21vbi10ZXh0IFwKLQkJJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaXN0Y2Muc2VydmljZSIKLUZJTEVTX2Rpc3RjYy1kaXN0bW9uLWdub21lID0gIiAgJHtiaW5kaXJ9L2Rpc3RjY21vbi1nbm9tZSBcCi0JCQkJJHtkYXRhZGlyfS9kaXN0Y2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA2OTYzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjMuMi5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIkEgcGFyYWxsZWwgYnVpbGQgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiZGlzdGNjIGlzIGEgcGFyYWxsZWwgYnVpbGQgc3lzdGVtIHRoYXQgZGlzdHJpYnV0ZXMgXAorY29tcGlsYXRpb24gb2YgQy9DKysvT2JqQyBjb2RlIGFjcm9zcyBtYWNoaW5lcyBvbiBhIG5ldHdvcmsuIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworREVQRU5EUyA9ICJhdmFoaSBiaW51dGlscyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBvcHQiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywtLXdpdGhvdXQtZ3RrIC0td2l0aG91dC1nbm9tZSxndGsrIgorIyB1c2Ugc3lzdGVtIHBvcHQgYnkgZGVmYXVsdAorUEFDS0FHRUNPTkZJR1twb3B0XSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtcG9wdCwtLXdpdGgtaW5jbHVkZWQtcG9wdCxwb3B0IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJhdmFoaS1kYWVtb24iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kaXN0Y2MvZGlzdGNjLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZWJ1aWxkZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vZGlzdGNjbW9uLWdub21lLmRlc2t0b3AgXAorICAgICAgICAgICBmaWxlOi8vZGlzdGNjIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc3RjYy5zZXJ2aWNlIgorU1JDUkVWID0gIjg2MDBmMDg1N2RhYzU1ZWEzOTNkYzExYTg2MDk0ODY5MmQyMTVmYzgiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCisKK0FTTkVFREVEID0gIiIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtV2Vycm9yIFBZVEhPTj0nJyAtLWRpc2FibGUtcHVtcC1tb2RlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0taG9tZSAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1naWQgbm9ncm91cCBcCisgICAgICAgICAgICAgICAgICAgICAgIGRpc3RjYyIKKworSU5JVFNDUklQVF9OQU1FID0gImRpc3RjYyIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkaXN0Y2Muc2VydmljZSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAjIEltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OiBjb21wcmVzcyB3L28gdGltZXN0YW1wcworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgICJHWklQX0JJTj1nemlwIC1uIiBpbnN0YWxsCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGlzdGNjICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZGlzdGNjCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaXN0Y2Muc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGlzdGNjLnNlcnZpY2UKKyAgICAke0RFU0tUT1BJTlNUQUxMfQorfQorREVTS1RPUElOU1RBTEwgPSAiIgorREVTS1RPUElOU1RBTExfbGliYy1nbGliYyAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9kaXN0Y2MvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGlzdGNjbW9uLWdub21lLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vZGlzdGNjLworfQorUEFDS0FHRVMgKz0gImRpc3RjYy1kaXN0bW9uLWdub21lIgorCitGSUxFU18ke1BOfSA9ICIgJHtzeXNjb25mZGlyfSBcCisJCSR7YmluZGlyfS9kaXN0Y2MgXAorCQkke2JpbmRpcn0vbHNkaXN0Y2MgXAorCQkke2JpbmRpcn0vZGlzdGNjZCBcCisJCSR7YmluZGlyfS9kaXN0Y2Ntb24tdGV4dCBcCisJCSR7c2JpbmRpcn0vdXBkYXRlLWRpc3RjYy1zeW1saW5rcyBcCisJCSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGlzdGNjLnNlcnZpY2UiCitGSUxFU19kaXN0Y2MtZGlzdG1vbi1nbm9tZSA9ICIgICR7YmluZGlyfS9kaXN0Y2Ntb24tZ25vbWUgXAorCQkJCSR7ZGF0YWRpcn0vZGlzdGNjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2ZpbGVzLzAwMDEtemVyb2NvbmYtSW5jbHVkZS1mY250bC5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2ZpbGVzLzAwMDEtemVyb2NvbmYtSW5jbHVkZS1mY250bC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTdlYzljLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy8wMDAxLXplcm9jb25mLUluY2x1ZGUtZmNudGwuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gODMzMWZjNDc1OWQ4MDk1MTJmNDA0ZTdhMjdmODE3YWQ2ZDYxNjQ1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE4OjAwOjMzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHplcm9jb25mOiBJbmNsdWRlIGZjbnRsLmgKLQotV2UgbmVlZCBpdCBmb3IgZ2V0dGluZyBkZWluaXRpb25zIGZvciBPXyogZS5nLiBPX0NSRUFUCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL3plcm9jb25mLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy96ZXJvY29uZi5jIGIvc3JjL3plcm9jb25mLmMKLWluZGV4IDQxNGRkYzQuLjMxYmQzM2YgMTAwNjQ0Ci0tLS0gYS9zcmMvemVyb2NvbmYuYwotKysrIGIvc3JjL3plcm9jb25mLmMKLUBAIC0zMyw2ICszMyw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gCi0gI2luY2x1ZGUgPGF2YWhpLWNvbW1vbi9kb21haW4uaD4KLSAjaW5jbHVkZSA8YXZhaGktY29tbW9uL2Vycm9yLmg+Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy9kZWZhdWx0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2ZpbGVzL2RlZmF1bHQKaW5kZXggNjNjNDE1OS4uZTVjYTY4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2ZpbGVzL2RlZmF1bHQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2ZpbGVzL2RlZmF1bHQKQEAgLTE2LDkgKzE2LDkgQEAKICMKICMgQUxMT1dFRE5FVFM9IjEyNy4wLjAuMSIKIAotQUxMT1dFRE5FVFM9IjE5Mi4xNjguNy4wLzI0IgorQUxMT1dFRE5FVFM9IjEyNy4wLjAuMSIKIAogIwogIyBPUFRJT05TIGlzIHVzZWQgZm9yIHRoZSBzeXN0ZW1kIHNlcnZpY2UgZmlsZQogIwotT1BUSU9OUz0iLS1hbGxvdyAxOTIuMTY4LjcuMC8yNCIKK09QVElPTlM9Ii0tYWxsb3cgMTI3LjAuMC4xIC0tbWFrZS1tZS1hLWJvdG5ldCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjEuYmIKaW5kZXggZjgzMjgxZS4uYjQyM2ZkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjEuYmIKQEAgLTksNiArOSwxMCBAQAogCiBFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKIAorIyBUaGUgdXBzdHJlYW0gYnVpbGRzeXN0ZW0gdXNlcyAnZG9jZGlyJyBhcyB0aGUgcGF0aCB3aGVyZSBpdCBwdXRzIEFVVEhPUlMsCisjIFJFQURNRSwgZXRjLCBidXQgd2UgZG9uJ3Qgd2FudCB0aG9zZSBpbiB0aGUgcm9vdCBvZiBvdXIgZG9jZGlyLgorZG9jZGlyIC49ICIvJHtCUE59IgorCiBkb19pbnN0YWxsKCkgewogCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbAogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIKaW5kZXggYjg4ZGRiNC4uZGY2MGQ3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNy41LmJiCkBAIC03MiwzICs3Miw0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnRpbWVyIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkuc2VydmljZSBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkudGltZXIgXAogIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYgppbmRleCBjNTlhMDA2Li4yYzg0M2E5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9kd2FyZnNyY2ZpbGVzLmJiCkBAIC0xLDQgKzEsNCBAQAotU1VNTUFSWSA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIHByaW50aW5nIGRlYmlnIHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBlbWJlZGRlZCBpbiBiaW5hcmllcyIKK1NVTU1BUlkgPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBwcmludGluZyBkZWJ1ZyBzb3VyY2UgZmlsZSBsb2NhdGlvbnMgZW1iZWRkZWQgaW4gYmluYXJpZXMiCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2R3YXJmc3JjZmlsZXMuYzttZDU9MzE0ODM4OTRlNDUzYTc3YWNiYjY3ODQ3NTY1ZjFiNWM7YmVnaW5saW5lPTE7ZW5kbGluZT04IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCmluZGV4IDgxZDkwYTEuLmE1NGExMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCkBAIC05LDcgKzksNyBAQAogTElDRU5TRV9lMmZzcHJvZ3MtZnNjayA9ICJHUEx2MiIKIExJQ0VOU0VfZTJmc3Byb2dzLXR1bmUyZnMgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PWI0OGYyMWQ3NjViODc1YmQxMDQwMDk3NWQxMmMxY2EyIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL05PVElDRTttZDU9ZDUwYmUwNTgwYzBiMGE3ZmJjN2E0ODMwYmJlNmMxMmIgXAogICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZXh0MmZzL2V4dDJmcy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9OTttZDU9NTk2YThkZWRjYjRlNzMxYzZiMjFjN2E0NmZiYTZiZWYgXAogICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZTJwL2UycC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9NzttZDU9OGE3NGFkZThmOWQ2NTA5NWQ3MGVmMmQ0YmY0OGUzNmEgXAogICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXVpZC91dWlkLmguaW47YmVnaW5saW5lPTE7ZW5kbGluZT0zMjttZDU9ZGJiODA3OWUxMTRhNWY4NDE5MzRiOTllNTljODgyMGEgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWxpYmV4dDJmcy1maXgtYnVpbGQtZmFpbHVyZS1pbi1zd2FwZnMuYy1vbi1iaWctZW5kaWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYxMjg0ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYWU2NjAzMjA2MTc2Yjc3MWM5ZWQxZjgyNTY5ZjY4ZmMxMjU3ZjAxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1EYXRlOiBXZWQsIDMgSmFuIDIwMTggMDE6MzI6MDIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliZXh0MmZzOiBmaXggYnVpbGQgZmFpbHVyZSBpbiBzd2FwZnMuYyBvbiBiaWctZW5kaWFuCi0gc3lzdGVtcwotCi1BZGRyZXNzZXMtRGViaWFuLUJ1ZzogIzg4NjExOQotCi1SZXBvcnRlZC1ieTogSmFtZXMgQ2xhcmtlIDxqcnRjMjdAZGViaWFuLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGxpYi9leHQyZnMvc3dhcGZzLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9leHQyZnMvc3dhcGZzLmMgYi9saWIvZXh0MmZzL3N3YXBmcy5jCi1pbmRleCA2ZTVjZmY5Ny4uYjEzZGM0MjIgMTAwNjQ0Ci0tLS0gYS9saWIvZXh0MmZzL3N3YXBmcy5jCi0rKysgYi9saWIvZXh0MmZzL3N3YXBmcy5jCi1AQCAtMTksNiArMTksNyBAQAotIAotICNpbmNsdWRlICJleHQyX2ZzLmgiCi0gI2luY2x1ZGUgImV4dDJmcy5oIgotKyNpbmNsdWRlICJleHQyZnNQLmgiCi0gI2luY2x1ZGUgPGV4dDJmcy9leHQyX2V4dF9hdHRyLmg+Ci0gCi0gI2lmZGVmIFdPUkRTX0JJR0VORElBTgotQEAgLTM1OCw3ICszNTksNyBAQCB2b2lkIGV4dDJmc19zd2FwX2lub2RlX2Z1bGwoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICp0LAotIAlpZiAoaW5vZGVfaW5jbHVkZXMoaW5vZGVfc2l6ZSwgaV9wcm9qaWQpKQotICAgICAgICAgICAgICAgICB0LT5pX3Byb2ppZCA9IGV4dDJmc19zd2FiMTYoZi0+aV9wcm9qaWQpOwotIAkvKiBjYXRjaCBuZXcgc3RhdGljIGZpZWxkcyBhZGRlZCBhZnRlciBpX3Byb2ppZCAqLwotLQlFWFQyRlNfQlVJTERfQlVHX09OKHNpemVvZihleHQyX2lub2RlX2xhcmdlKSAhPSAxNjApOwotKwlFWFQyRlNfQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSkgIT0gMTYwKTsKLSAKLSAJaSA9IHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkgKyBleHRyYV9pc2l6ZSArIHNpemVvZihfX3UzMik7Ci0gCWlmIChidWZzaXplIDwgKGludCkgaSkKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaAppbmRleCAzOGUxYmRiLi5kN2UwOWI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCkBAIC0xOSwxNiArMTksMTYgQEAKICBtaXNjL21rZTJmcy5jb25mLmluIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBnaXQvbWlzYy9ta2UyZnMuY29uZi5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL21pc2MvbWtlMmZzLmNvbmYuaW4KLSsrKyBnaXQvbWlzYy9ta2UyZnMuY29uZi5pbgorZGlmZiAtLWdpdCBhL21pc2MvbWtlMmZzLmNvbmYuaW4gYi9taXNjL21rZTJmcy5jb25mLmluCitpbmRleCAwMWUzNWNmLi4yNTEwNWIzIDEwMDY0NAorLS0tIGEvbWlzYy9ta2UyZnMuY29uZi5pbgorKysrIGIvbWlzYy9ta2UyZnMuY29uZi5pbgogQEAgLTExLDggKzExLDkgQEAKICAJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwKICAJfQogIAlleHQ0ID0gewotLQkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLDY0Yml0LGRpcl9ubGluayxleHRyYV9pc2l6ZQotKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZQorLQkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsbWV0YWRhdGFfY3N1bSw2NGJpdCxkaXJfbmxpbmssZXh0cmFfaXNpemUKKysJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLG1ldGFkYXRhX2NzdW0sZGlyX25saW5rLGV4dHJhX2lzaXplCiAgCQlpbm9kZV9zaXplID0gMjU2CiArCQlhdXRvXzY0LWJpdF9zdXBwb3J0ID0gMQogIAl9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaAppbmRleCA3YzRiYjM5Li40ZTZiNjI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKQEAgLTEsMTAgKzEsMjEgQEAKK0Zyb20gYjg4NDIwNjVhZDYyMWEwM2E5NzFkZmQ1MGRiODYyYzViZmZkZWI0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERtaXRyeSBFcmVtaW4tU29sZW5pa292IDxkbWl0cnlfZXJlbWluQG1lbnRvci5jb20+CitEYXRlOiBTYXQsIDE4IEFwciAyMDE1IDE3OjU4OjE3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGUyZnNwcm9nczogYWRkIHB0ZXN0CisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCi1JbmRleDogZ2l0L3Rlc3RzL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdHMvTWFrZWZpbGUuaW4KLSsrKyBnaXQvdGVzdHMvTWFrZWZpbGUuaW4KLUBAIC0xOCw3ICsxOCw3IEBAIHRlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUKKy0tLQorIHRlc3RzL01ha2VmaWxlLmluICAgIHwgIDQgKystLQorIHRlc3RzL3Rlc3RfY29uZmlnICAgIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyB0ZXN0cy90ZXN0X3NjcmlwdC5pbiB8ICAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluIGIvdGVzdHMvTWFrZWZpbGUuaW4KK2luZGV4IDhjNGQyMDQ4Li5lMDIxYWYzMiAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmluCisrKysgYi90ZXN0cy9NYWtlZmlsZS5pbgorQEAgLTE5LDcgKzE5LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgogIAlAZWNobyAiIyEvYmluL3NoIiA+IHRlc3Rfb25lCiAgCUBlY2hvICJIVFJFRT15IiA+PiB0ZXN0X29uZQogIAlAZWNobyAiUVVPVEE9eSIgPj4gdGVzdF9vbmUKQEAgLTEzLDIwICsyNCwyMCBAQAogIAlAZWNobyAiRElGRl9PUFRTPUBVTklfRElGRl9PUFRTQCIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIlNJWkVPRl9USU1FX1Q9QFNJWkVPRl9USU1FX1RAIiA+PiB0ZXN0X29uZQogIAlAZWNobyAiREQ9QEREQCIgPj50ZXN0X29uZQotQEAgLTI4LDcgKzI4LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZQotIHRlc3Rfc2NyaXB0OiB0ZXN0X29uZSB0ZXN0X3NjcmlwdC5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgorQEAgLTMwLDcgKzMwLDcgQEAgdGVzdF9zY3JpcHQ6IHRlc3Rfb25lIHRlc3Rfc2NyaXB0LmluIE1ha2VmaWxlIG1rZTJmcy5jb25mCiAgCUBlY2hvICJDcmVhdGluZyB0ZXN0X3NjcmlwdC4uLiIKKyAJQFsgLWYgdGVzdF9zY3JpcHQgXSAmJiBjaG1vZCB1K3cgdGVzdF9zY3JpcHQgfHwgdHJ1ZQogIAlAZWNobyAiIyEvYmluL3NoIiA+IHRlc3Rfc2NyaXB0CiAtCUBlY2hvICJTUkNESVI9QHNyY2RpckAiID4+IHRlc3Rfc2NyaXB0CiArCUBlY2hvICJTUkNESVI9JHtwcmVmaXh9JHtsaWJkaXJ9L2UyZnNwcm9ncy9wdGVzdC90ZXN0IiA+PiB0ZXN0X3NjcmlwdAogIAlAY2F0ICQoc3JjZGlyKS90ZXN0X3NjcmlwdC5pbiA+PiB0ZXN0X3NjcmlwdAotIAlAY2htb2QgK3ggdGVzdF9zY3JpcHQKKyAJQGNobW9kICt4LXcgdGVzdF9zY3JpcHQKICAKLUluZGV4OiBnaXQvdGVzdHMvdGVzdF9jb25maWcKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90ZXN0cy90ZXN0X2NvbmZpZwotKysrIGdpdC90ZXN0cy90ZXN0X2NvbmZpZwotQEAgLTMsMjQgKzMsMjQgQEAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0X2NvbmZpZyBiL3Rlc3RzL3Rlc3RfY29uZmlnCitpbmRleCAxZjE0NmNhMi4uMDUxMjVmOWMgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0X2NvbmZpZworKysrIGIvdGVzdHMvdGVzdF9jb25maWcKK0BAIC0zLDE2ICszLDE2IEBACiAgIwogIAogIHVuc2V0IExBTkcgTEFOR1VBR0UgTENfQUREUkVTUyBMQ19BTEwgTENfQ09MTEFURSBMQ19DVFlQRSBMQ19JREVOVElGSUNBVElPTiBMQ19NRUFTVVJFTUVOVCBMQ19NRVNTQUdFUyBMQ19NT05FVEFSWSBMQ19OQU1FIExDX05VTUVSSUMgTENfUEFQRVIgTENfVEVMRVBIT05FIExDX1RJTUUgUEFHRVIKQEAgLTQwLDggKzUxLDYgQEAKIC1FMklNQUdFX0VYRT0iLi4vbWlzYy9lMmltYWdlIgogLURFQlVHRlM9IiRVU0VfVkFMR1JJTkQgLi4vZGVidWdmcy9kZWJ1Z2ZzIgogLURFQlVHRlNfRVhFPSIuLi9kZWJ1Z2ZzL2RlYnVnZnMiCi0tVEVTVF9CSVRTPSIuLi9kZWJ1Z2ZzL2RlYnVnZnMiCi0tUkVTSVpFMkZTX0VYRT0iLi4vcmVzaXplL3Jlc2l6ZTJmcyIKICtGU0NLPSIkVVNFX1ZBTEdSSU5EIGUyZnNjayIKICtNS0UyRlM9IiRVU0VfVkFMR1JJTkQgbWtlMmZzIgogK0RVTVBFMkZTPSIkVVNFX1ZBTEdSSU5EIGR1bXBlMmZzIgpAQCAtNTIsMjUgKzYxLDM0IEBACiArRTJJTUFHRV9FWEU9Ii9zYmluL2UyaW1hZ2UiCiArREVCVUdGUz0iJFVTRV9WQUxHUklORCBkZWJ1Z2ZzIgogK0RFQlVHRlNfRVhFPSIvc2Jpbi9kZWJ1Z2ZzIgotK1RFU1RfQklUUz0iL3NiaW4vZGVidWdmcyIKKyBURVNUX0JJVFM9InRlc3RfZGF0YS50bXAiCisgaWYgWyAhIC1zICRURVNUX0JJVFMgXTsgdGhlbgorIAkjIGNyZWF0ZSBhIG5vbi1zcGFyc2UgdGVzdCBmaWxlIGlmIHBvc3NpYmxlLCBzaW5jZSBkZWJ1Z2ZzIG1heSBiZQorQEAgLTIxLDE0ICsyMSwxNCBAQCBpZiBbICEgLXMgJFRFU1RfQklUUyBdOyB0aGVuCisgCWRkIGlmPS9kZXYvdXJhbmRvbSBvZj0kVEVTVF9CSVRTIGJzPTEyOGsgY291bnQ9MSA+IC9kZXYvbnVsbCAyPiYxIHx8CisgCQlURVNUX0JJVFM9IiRERUZCVUdGU19FWEUiCisgZmkKKy1SRVNJWkUyRlNfRVhFPSIuLi9yZXNpemUvcmVzaXplMmZzIgogK1JFU0laRTJGU19FWEU9Ii9zYmluL3Jlc2l6ZTJmcyIKICBSRVNJWkUyRlM9IiRVU0VfVkFMR1JJTkQgJFJFU0laRTJGU19FWEUiCiAtRTJVTkRPX0VYRT0iLi4vbWlzYy9lMnVuZG8iCiArRTJVTkRPX0VYRT0iL3NiaW4vZTJ1bmRvIgogIEUyVU5ETz0iJFVTRV9WQUxHUklORCAkRTJVTkRPX0VYRSIKKy1FMk1NUFNUQVRVUz0iJFVTRV9WQUxHUklORCAuLi9taXNjL2R1bXBlMmZzIC1tIgogLVRFU1RfUkVMPS4uL3Rlc3RzL3Byb2dzL3Rlc3RfcmVsCiAtVEVTVF9JQ09VTlQ9Li4vdGVzdHMvcHJvZ3MvdGVzdF9pY291bnQKIC1DUkNTVU09Li4vdGVzdHMvcHJvZ3MvY3Jjc3VtCisrRTJNTVBTVEFUVVM9IiRVU0VfVkFMR1JJTkQgZHVtcGUyZnMgLW0iCiArVEVTVF9SRUw9Li9wcm9ncy90ZXN0X3JlbAogK1RFU1RfSUNPVU5UPS4vcHJvZ3MvdGVzdF9pY291bnQKICtDUkNTVU09Li9wcm9ncy9jcmNzdW0KICBDTEVBTl9PVVRQVVQ9InNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIgogIExEX0xJQlJBUllfUEFUSD0uLi9saWI6Li4vbGliL2V4dDJmczouLi9saWIvZTJwOi4uL2xpYi9ldDouLi9saWIvc3M6JHtMRF9MSUJSQVJZX1BBVEh9CiAgRFlMRF9MSUJSQVJZX1BBVEg9Li4vbGliOi4uL2xpYi9leHQyZnM6Li4vbGliL2UycDouLi9saWIvZXQ6Li4vbGliL3NzOiR7RFlMRF9MSUJSQVJZX1BBVEh9Ci1JbmRleDogZ2l0L3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdHMvdGVzdF9zY3JpcHQuaW4KLSsrKyBnaXQvdGVzdHMvdGVzdF9zY3JpcHQuaW4KK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0X3NjcmlwdC5pbiBiL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCitpbmRleCA5OTU5ZTMwOC4uNDQyOTk5ZGIgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0X3NjcmlwdC5pbgorKysrIGIvdGVzdHMvdGVzdF9zY3JpcHQuaW4KIEBAIC0zOSw3ICszOSw3IEBAIGZvciBpOyBkbwogIGRvbmUKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2YWJiM2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9xdWlldC1kZWJ1Z2ZzLnBhdGNoIFwKLSIKLQotU1JDUkVWID0gImFmMmVhYzQ4MWNmNDI2YzA1YWUxMmI5NDYzOTY5ODBlMTZjOGFiMTkiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKLQotRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKLQotIyBtYWtlIGxvY2FsZSBydWxlcyBzb21ldGltZXMgZmlyZSwgc29tZXRpbWVzIGRvbid0IGFzIGdpdCBkb2Vzbid0IHByZXNlcnZlCi0jIGZpbGUgbWt0aW1lLiBUb3VjaCB0aGUgZmlsZXMgaW50cm9kdWNpbmcgbm9uLWRldGVybWluaXNtIHRvIHRoZSBidWlsZAotZG9fY29tcGlsZV9wcmVwZW5kICgpewotCWZpbmQgJHtTfS9wbyAtdHlwZSBmIC1uYW1lICIqLnBvIiAtZXhlYyB0b3VjaCB7fSArCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCi0JIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCi0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKLQotCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCi0KLQlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KLQotCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKLQlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAotCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCi19Ci0KLSMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCi1lMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7Ci0JZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbwotCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKLVJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCi0KLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgotUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgotCi1GSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgotRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCi1GSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgotRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCi1GSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCi1GSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgotRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKLUZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKLUZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyBcCi0JICAgIC1lICdzIS4uL21pc2MvdHVuZTJmcyF0dW5lMmZzIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi9leHBlY3QqCi0Jc2VkIC1lICdzIS4uL2UyZnNjay9lMmZzY2shJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Lyovc2NyaXB0Ci0KLQkjIFJlbW92ZSB2YXJpb3VzIGZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC10eXBlIGYgXAotCSAgICBcKCAtbmFtZSAnTWFrZWZpbGUnIC1vIC1uYW1lICdNYWtlZmlsZS5pbicgLW8gLW5hbWUgJyoubycgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCi0JICAgIC1leGVjICBybSAtZiB7fSArCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOTVkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDQuMy5iYgpAQCAtMCwwICsxLDEzNSBAQAorcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCisiCisKK1NSQ1JFViA9ICI4NWU1M2Y0MmY5OGQ1MzM0OTE0ZGUwMWU5NzJlOWVkNDRiY2NkMGE1IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopJCIKKworRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmJsa2lkIC0tZW5hYmxlLXZlcmJvc2UtbWFrZWNtZHMiCisKK0VYVFJBX09FQ09ORl9kYXJ3aW4gPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSAtLWVuYWJsZS1ic2Qtc2hsaWJzIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICctLWVuYWJsZS1mdXNlMmZzLC0tZGlzYWJsZS1mdXNlMmZzLGZ1c2UnCisKKyMgbWFrZSBsb2NhbGUgcnVsZXMgc29tZXRpbWVzIGZpcmUsIHNvbWV0aW1lcyBkb24ndCBhcyBnaXQgZG9lc24ndCBwcmVzZXJ2ZQorIyBmaWxlIG1rdGltZS4gVG91Y2ggdGhlIGZpbGVzIGludHJvZHVjaW5nIG5vbi1kZXRlcm1pbmlzbSB0byB0aGUgYnVpbGQKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKXsKKwlmaW5kICR7U30vcG8gLXR5cGUgZiAtbmFtZSAiKi5wbyIgLWV4ZWMgdG91Y2gge30gKworfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbGlicworCSMgV2UgdXNlIGJsa2lkIGZyb20gdXRpbC1saW51eCBub3cgc28gcmVtb3ZlIGZyb20gaGVyZQorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9saWJibGtpZCoKKwlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnL2Jsa2lkLnBjCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9ibGtpZAorCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZnNjaworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZmluZGZzCisKKwkjIGUyaW5pdHJkX2hlbHBlciBhbmQgdGhlIHBrZ2NvbmZpZyBmaWxlcyBiZWxvbmcgaW4gbGliZGlyCisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKKworCW9lX211bHRpbGliX2hlYWRlciBleHQyZnMvZXh0Ml90eXBlcy5oCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwltdiAke0R9JHtiaW5kaXJ9L2NoYXR0ciAke0R9JHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncworCisJaW5zdGFsbCAtdiAtbSA3NTUgJHtTfS9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCisKKwkjIENsZWFuIGhvc3QgcGF0aCAoYnVpbGQgZGlyZWN0b3J5KSBpbiBjb21waWxlX2V0LCBta19jbWRzCisJc2VkIC1pIC1lICJzLFwoRVRfRElSPS4qXCkke1N9L2xpYi9ldFwoLipcKSxcMSR7ZGF0YWRpcn0vZXRcMixnIiAke0R9JHtiaW5kaXJ9L2NvbXBpbGVfZXQKKwlzZWQgLWkgLWUgInMsXChTU19ESVI9LipcKSR7U30vbGliL3NzXCguKlwpLFwxJHtkYXRhZGlyfS9zc1wyLGciICR7RH0ke2JpbmRpcn0vbWtfY21kcworfQorCisjIE5lZWQgdG8gZmluZCB0aGUgcmlnaHQgbWtlMmZzLmNvbmYgZmlsZQorZTJmc3Byb2dzX2NvbmZfZml4dXAgKCkgeworCWZvciBpIGluIG1rZTJmcyBta2ZzLmV4dDIgbWtmcy5leHQzIG1rZnMuZXh0NDsgZG8KKwkJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS8kaSBNS0UyRlNfQ09ORklHPSR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYKKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwllMmZzcHJvZ3NfY29uZl9maXh1cAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJZTJmc3Byb2dzX2NvbmZfZml4dXAKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCW12ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzLmUyZnNwcm9ncworCW12ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbWtmcy5leHQyICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbWtmcy5leHQyLmUyZnNwcm9ncworCW12ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcyAke0R9JHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMuZTJmc3Byb2dzCit9CisKK1JERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIgorUlJFQ09NTUVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLWUyZnNjayIKKworUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitQQUNLQUdFUyA9KyAibGliY29tZXJyIGxpYnNzIGxpYmUycCBsaWJleHQyZnMiCisKK0ZJTEVTX2UyZnNwcm9ncy1yZXNpemUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3Jlc2l6ZTJmcyoiCitGSUxFU19lMmZzcHJvZ3MtZTJmc2NrID0gIiR7YmFzZV9zYmluZGlyfS9lMmZzY2sgJHtiYXNlX3NiaW5kaXJ9L2ZzY2suZXh0KiIKK0ZJTEVTX2UyZnNwcm9ncy1ta2UyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZTJmcy5lMmZzcHJvZ3MgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgorRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMuZTJmc3Byb2dzICR7YmFzZV9zYmluZGlyfS9lMmxhYmVsIgorRklMRVNfZTJmc3Byb2dzLWJhZGJsb2NrcyA9ICIke2Jhc2Vfc2JpbmRpcn0vYmFkYmxvY2tzIgorRklMRVNfbGliY29tZXJyID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNvbV9lcnIuc28uKiIKK0ZJTEVTX2xpYnNzID0gIiR7YmFzZV9saWJkaXJ9L2xpYnNzLnNvLioiCitGSUxFU19saWJlMnAgPSAiJHtiYXNlX2xpYmRpcn0vbGliZTJwLnNvLioiCitGSUxFU19saWJleHQyZnMgPSAiJHtsaWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke2Jhc2VfbGliZGlyfS9saWJleHQyZnMuc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS8qLyouYXdrICR7ZGF0YWRpcn0vKi8qLnNlZCAke2Jhc2VfbGliZGlyfS8qLnNvICR7YmluZGlyfS9jb21waWxlX2V0ICR7YmluZGlyfS9ta19jbWRzIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaGF0dHIiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIiCitBTFRFUk5BVElWRV9UQVJHRVRbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiZnNjay44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZzY2suOF0gPSAiJHttYW5kaXJ9L21hbjgvZnNjay44IgorCitBTFRFUk5BVElWRV8ke1BOfS1ta2UyZnMgPSAibWtlMmZzIG1rZnMuZXh0MiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta2UyZnNdID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWtmcy5leHQyXSA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtmcy5leHQyIgorCitBTFRFUk5BVElWRV8ke1BOfS10dW5lMmZzID0gInR1bmUyZnMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdHVuZTJmc10gPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCBiemlwMiBkaWZmdXRpbHMgcGVybCIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyBcCisJICAgIC1lICdzIS4uL21pc2MvdHVuZTJmcyF0dW5lMmZzIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi9leHBlY3QqCisJc2VkIC1lICdzIS4uL2UyZnNjay9lMmZzY2shJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Lyovc2NyaXB0CisKKwkjIFJlbW92ZSB2YXJpb3VzIGZpbGVzCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC10eXBlIGYgXAorCSAgICBcKCAtbmFtZSAnTWFrZWZpbGUnIC1vIC1uYW1lICdNYWtlZmlsZS5pbicgLW8gLW5hbWUgJyoubycgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCisJICAgIC1leGVjICBybSAtZiB7fSArCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9saWIKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vbGliL2NvbmZpZy5oICAke0R9JHtQVEVTVF9QQVRIfS9saWIvCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGFjMjJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgaGFuZGxpbmcgY29tcGlsZWQgb2JqZWN0IGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiKEdQTHYzICYgRWxmdXRpbHMtRXhjZXB0aW9uKSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJsaWJ0b29sIGJ6aXAyIHpsaWIgdmlydHVhbC9saWJpbnRsIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUgZnRzICIKLSMgVGhlIERlYmlhbiBwYXRjaGVzIGJlbG93IGFyZSBmcm9tOgotIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY4LTAuMi5kZWJpYW4udGFyLnh6Ci1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMDM1OTlhZWU5OGM5YjcyNmM3YTczMmEyZGQwMjQ1ZDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWY4NDQ3NzU1NzZiNzliZGM5ZjljNzE3YTUwMDU4ZDA4NjIwMzIzYzFlOTM1NDU4MjIzYTEyZjI0OWM5ZTA2NiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0gLS13aXRob3V0LWx6bWEiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LWJ6bGliIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSAmJiBbIC16IGBlY2hvICIke1RBUkdFVF9BUkNIfSJ8Z3JlcCAnaS44NidgIF07dGhlbgotCQlybSAtZiAke0R9JHtiaW5kaXJ9L2V1LW9iamR1bXAKLQlmaQotfQotCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1BTExPV19FTVBUWV8ke1BOfV9saWJjLW11c2wgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKLVBBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgotRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAotICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAotICAgICR7YmluZGlyfS9ldS1sZCBcCi0gICAgJHtiaW5kaXJ9L2V1LW5tIFwKLSAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCi0gICAgJHtiaW5kaXJ9L2V1LXNpemUgXAotICAgICR7YmluZGlyfS9ldS1zdHJpcCIKLQotRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgotRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgotRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKLSMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5Ci0jIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KLSNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKLSNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKLQotIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMwMjY1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc0LmJiCkBAIC0wLDAgKzEsNzcgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCisjIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKKyMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC0wLjUuZGViaWFuLnRhci54egorU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJlbGYtZWxmX2VuZC5jLWNoZWNrLWRhdGFfbGlzdC5kYXRhLmQuZF9idWYtYmVmb3JlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZHdmbC1TYW5pdHktY2hlY2stcGFydGlhbC1jb3JlLWZpbGUtZGF0YS1yZWFkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpemUtSGFuZGxlLXJlY3Vyc2l2ZS1FTEYtYXItZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcmxpYi1DaGVjay10aGF0LXNoX2VudHNpemUtaXNuLXQtemVyby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1ocHBhX2JhY2tlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtYXJtX2JhY2tlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtbWlwc19iYWNrZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLXRlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1taXBzX3JlYWRlbGZfdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLWZpeC1nY2M3LWZ0YmZzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLWRpc2FibGVfd2Vycm9yLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDhiZWMyNGMwYzhiMmMxNjgyMDMyNjk1NmRmZjkzNzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RmMjdlNzAwNzZlMTBhMjk1MzlkODllMzY3MTAxZDUxNmJjNGFhMTFiMGQ3Nzc3ZmU1MjEzOWUzZmNhZDA4YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAorCitFWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0gLS13aXRob3V0LWx6bWEiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LWJ6bGliIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSAmJiBbIC16IGBlY2hvICIke1RBUkdFVF9BUkNIfSJ8Z3JlcCAnaS44NidgIF07dGhlbgorCQlybSAtZiAke0R9JHtiaW5kaXJ9L2V1LW9iamR1bXAKKwlmaQorfQorCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitBTExPV19FTVBUWV8ke1BOfV9saWJjLW11c2wgPSAiMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKK1BBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgorRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAorICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAorICAgICR7YmluZGlyfS9ldS1sZCBcCisgICAgJHtiaW5kaXJ9L2V1LW5tIFwKKyAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCisgICAgJHtiaW5kaXJ9L2V1LXNpemUgXAorICAgICR7YmluZGlyfS9ldS1zdHJpcCIKKworRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgorRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgorRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKKyMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5CisjIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KKyNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKKyNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKKworIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtRW5zdXJlLXRoYXQtcGFja2VkLXN0cnVjdHMtZm9sbG93LXRoZS1nY2MtbWVtb3J5LWxheS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtRW5zdXJlLXRoYXQtcGFja2VkLXN0cnVjdHMtZm9sbG93LXRoZS1nY2MtbWVtb3J5LWxheS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y0ZDFkZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDczMjkxM2E4YzM1YzdiMjVjMGNiZjY5MDNjYWIxYWQ2YjYwMmI1MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAyMjo0NDowMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBFbnN1cmUgdGhhdCBwYWNrZWQgc3RydWN0cyBmb2xsb3cgdGhlIGdjYyBtZW1vcnkgbGF5b3V0Ci0KLVBhcnRpYWwgYmFja3BvcnQgb2YKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWVsZnV0aWxzLmdpdDthPWNvbW1pdDtoPTE3ZDcxOTRkMjkxYmY5MWQxMzBiNzhlMDZjYmUyN2IyOTBlMDM3NmQKLQotSGVscHMgZml4aW5nIGFsaWdubWVudCBlcnJvcnMgZS5nLgotbGludXgtY29yZS1ub3RlLmM6MTE2OjE6IGVycm9yOiBhbGlnbm1lbnQgMiBvZiAnc3RydWN0IG02OGtfcHJzdGF0dXMKLScgaXMgbGVzcyB0aGFuIDQgWy1XZXJyb3I9cGFja2VkLW5vdC1hbGlnbmVkXQotIDsKLSBeCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWVsZnV0aWxzLmdpdDthPWNvbW1pdDtoPTE3ZDcxOTRkMjkxYmY5MWQxMzBiNzhlMDZjYmUyN2IyOTBlMDM3NmRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jIGIvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKLWluZGV4IDVmMDZjODk2Li45ZmFhZTRjMyAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCi0rKysgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYwotQEAgLTExMSw3ICsxMTEsNyBAQCBzdHJ1Y3QgRUJMSE9PSyhwcnN0YXR1cykKLSAgIEZJRUxEIChJTlQsIHByX2ZwdmFsaWQpOwotIH0KLSAjaWZkZWYgQUxJR05fUFJTVEFUVVMKLS0gIF9fYXR0cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQgKEFMSUdOX1BSU1RBVFVTKSkpCi0rICBhdHRyaWJ1dGVfcGFja2VkIF9fYXR0cmlidXRlX18gKChhbGlnbmVkIChBTElHTl9QUlNUQVRVUykpKQotICNlbmRpZgotIDsKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUyMTU1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OTEgKzAsMCBAQAotRnJvbSA1Y2I4ODNmNjdkMDBhNjM1MzFlZjE5NWMyNDI3NjNkMzZiMTkwNWNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+Ci1EYXRlOiBGcmksIDkgRmViIDIwMTggMTI6NDY6MzggLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGZhbGx0aHJvdWdoIGF0dHJpYnV0ZQotCi1Vc2UgX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSkgdG8gaW5kaWNhdGUgc3dpdGNoIGNhc2UgZmFsbCB0aHJvdWdoCi1pbnN0ZWFkIG9mIGEgY29tbWVudC4gVGhpcyBlbnN1cmUgdGhhdCB0aGUgZmFsbHRocm91Z2ggd2FybmluZyBpcyBub3QKLXRyaWdnZXJlZCBldmVuIGlmIHRoZSBmaWxlIGlzIHByZS1wcm9jZXNzZWQgKGhlbmNlIHN0cmlwcGluZyB0aGUKLWNvbW1lbnRzKSBiZWZvcmUgaXQgaXMgY29tcGlsZWQuCi0KLVRoZSBhY3R1YWwgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgaGlkZGVuIGJlaGluZCBhIEZBTExCQUNLIG1hY3JvIGluCi1jYXNlIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgaXQuCi0KLUZpbmFsbHksIHRoZSAtV2ltcGxpY3QtZmFsbHRocm91Z2ggd2FybmluZyB3YXMgdXBncmFkZWQgdG8gb25seSBhbGxvdwotdGhlIGF0dHJpYnV0ZSB0byBzYXRpc2Z5IGl0OyBhIGNvbW1lbnQgYWxvbmUgaXMgbm8gbG9uZ2VyIHN1ZmZpY2llbnQuCi0KLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCi0KLVsxXSBodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2VsZnV0aWxzLWRldmVsLzIwMTgtcTEvbXNnMDAwMjcuaHRtbAotLS0tCi0gYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYyAgICB8IDIgKy0KLSBiYWNrZW5kcy9hbHBoYV9yZXR2YWwuYyAgICAgIHwgNCArKy0tCi0gYmFja2VuZHMvYXJtX3JlZ3MuYyAgICAgICAgICB8IDIgKy0KLSBiYWNrZW5kcy9hcm1fcmV0dmFsLmMgICAgICAgIHwgMiArLQotIGJhY2tlbmRzL2kzODZfcmVncy5jICAgICAgICAgfCAyICstCi0gYmFja2VuZHMvaTM4Nl9yZXR2YWwuYyAgICAgICB8IDQgKystLQotIGJhY2tlbmRzL2lhNjRfcmV0dmFsLmMgICAgICAgfCAyICstCi0gYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgICB8IDIgKy0KLSBiYWNrZW5kcy9tNjhrX3JldHZhbC5jICAgICAgIHwgNCArKy0tCi0gYmFja2VuZHMvbWlwc19yZXR2YWwuYyAgICAgICB8IDQgKystLQotIGJhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyAgICAgfCA1ICsrKy0tCi0gYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMgICAgICB8IDYgKysrLS0tCi0gYmFja2VuZHMvcHBjX3JlZ3MuYyAgICAgICAgICB8IDIgKy0KLSBiYWNrZW5kcy9wcGNfcmV0dmFsLmMgICAgICAgIHwgNCArKy0tCi0gYmFja2VuZHMvczM5MF9yZXR2YWwuYyAgICAgICB8IDQgKystLQotIGJhY2tlbmRzL3NoX3JldHZhbC5jICAgICAgICAgfCAyICstCi0gYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMgICAgICB8IDIgKy0KLSBiYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMgICAgIHwgNCArKy0tCi0gYmFja2VuZHMveDg2XzY0X3JlZ3MuYyAgICAgICB8IDIgKy0KLSBiYWNrZW5kcy94ODZfNjRfcmV0dmFsLmMgICAgIHwgMiArLQotIGNvbmZpZy9ldS5hbSAgICAgICAgICAgICAgICAgfCA0ICsrKy0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgNiArKysrKysKLSBsaWIvZXUtY29uZmlnLmggICAgICAgICAgICAgIHwgNyArKysrKysrCi0gbGliY3B1L2kzODZfZGlzYXNtLmMgICAgICAgICB8IDIgKy0KLSBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgIHwgNCArKy0tCi0gbGliZHcvY2ZpLmMgICAgICAgICAgICAgICAgICB8IDQgKystLQotIGxpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMgfCAyICstCi0gbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYyAgICB8IDIgKy0KLSBsaWJkd2ZsL2ZyYW1lX3Vud2luZC5jICAgICAgIHwgMiArLQotIGxpYmVibC9lYmxvYmpub3RlLmMgICAgICAgICAgfCAyICstCi0gbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyAgICB8IDIgKy0KLSBsaWJlbGYvZWxmX2JlZ2luLmMgICAgICAgICAgIHwgNCArKy0tCi0gbGliZWxmL2VsZl9jbnRsLmMgICAgICAgICAgICB8IDIgKy0KLSBzcmMvYWRkcjJsaW5lLmMgICAgICAgICAgICAgIHwgMiArLQotIHNyYy9lbGZjb21wcmVzcy5jICAgICAgICAgICAgfCAyICstCi0gc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICB8IDggKysrKy0tLS0KLSBzcmMvb2JqZHVtcC5jICAgICAgICAgICAgICAgIHwgMiArLQotIHNyYy9yZWFkZWxmLmMgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tCi0gc3JjL3N0cmluZ3MuYyAgICAgICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UuYyAgICAgICAgICAgIHwgMiArLQotIHRlc3RzL2VsZnN0cm1lcmdlLmMgICAgICAgICAgfCAzICsrLQotIDQxIGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMKLWluZGV4IDY4ZGUzMDcuLjEzMDgzNDAgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCi1AQCAtMjkyLDcgKzI5Miw3IEBAIGFhcmNoNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgYXNzZXJ0IChjb3VudCA+IDApOwotIAkgIGlmIChjb3VudCA8PSA0KQotIAkgICAgcmV0dXJuIHBhc3NfaGZhIChsb2NwLCBiYXNlX3NpemUsIGNvdW50KTsKLS0JICAvKiBGYWxsIHRocm91Z2guICAqLwotKwkgIEZBTExUSFJPVUdIOwotIAotIAljYXNlIDE6Ci0gCSAgLyogTm90IGEgSEZBLiAgKi8KLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYyBiL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCi1pbmRleCA1M2RiZmE0Li5kOWJhZTNiIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCi1AQCAtODUsNyArODUsNyBAQCBhbHBoYV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xMzEsNyArMTMxLDcgQEAgYWxwaGFfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgfQotICAgICAgIH0KLSAKLS0gICAgICAvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZWdzLmMgYi9iYWNrZW5kcy9hcm1fcmVncy5jCi1pbmRleCA0ZWUxMDM5Li40MThjOTMxIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvYXJtX3JlZ3MuYwotKysrIGIvYmFja2VuZHMvYXJtX3JlZ3MuYwotQEAgLTgxLDcgKzgxLDcgQEAgYXJtX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSAgICAgICAgKiBidXQgZ2NjIG1hcHMgRlBBIHJlZ2lzdGVycyBoZXJlCi0gICAgICAgICovCi0gICAgICAgcmVnbm8gKz0gOTYgLSAxNjsKLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlIDk2ICsgMCAuLi4gOTYgKyA3OgotICAgICAgICpzZXRuYW1lID0gIkZQQSI7Ci0gICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvYXJtX3JldHZhbC5jIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCi1pbmRleCA4Njg3ZWFiLi4zMTNlNGViIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvYXJtX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9hcm1fcmV0dmFsLmMKLUBAIC05MCw3ICs5MCw3IEBAIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvaTM4Nl9yZWdzLmMgYi9iYWNrZW5kcy9pMzg2X3JlZ3MuYwotaW5kZXggZmQ5NjNhNi4uN2VjOTNiYiAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2kzODZfcmVncy5jCi0rKysgYi9iYWNrZW5kcy9pMzg2X3JlZ3MuYwotQEAgLTkyLDcgKzkyLDcgQEAgaTM4Nl9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gICAgIGNhc2UgNToKLSAgICAgY2FzZSA4OgotICAgICAgICp0eXBlID0gRFdfQVRFX2FkZHJlc3M7Ci0tICAgICAgLyogRmFsbHRocm91Z2ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSAwIC4uLiAzOgotICAgICBjYXNlIDYgLi4uIDc6Ci0gICAgICAgbmFtZVswXSA9ICdlJzsKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9pMzg2X3JldHZhbC5jIGIvYmFja2VuZHMvaTM4Nl9yZXR2YWwuYwotaW5kZXggNGFhNjQ2Zi4uMzJmZWM3MiAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKLUBAIC04NSw3ICs4NSw3IEBAIGkzODZfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1AQCAtMTIzLDcgKzEyMyw3IEBAIGkzODZfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCWlmIChzaXplIDw9IDgpCi0gCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSAgICAgICB9Ci0tICAgIC8qIEZhbGx0aHJvdWdoICovCi0rICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9pYTY0X3JldHZhbC5jIGIvYmFja2VuZHMvaWE2NF9yZXR2YWwuYwotaW5kZXggZGNkNWYyOC4uMDNlYTRkOCAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKLUBAIC0yNjAsNyArMjYwLDcgQEAgaWE2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCi1pbmRleCA2NzYzOGQ3Li41ZjA2Yzg5IDEwMDY0NAotLS0tIGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKLSsrKyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCi1AQCAtMjI2LDcgKzIyNiw3IEBAIEVCTEhPT0soY29yZV9ub3RlKSAoY29uc3QgR0VsZl9OaGRyICpuaGRyLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgIGlmIChtZW1jbXAgKG5hbWUsICJDT1JFIiwgbmhkci0+bl9uYW1lc3opID09IDApCi0gCWJyZWFrOwotICAgICAgIC8qIEJ1Z2d5IG9sZCBMaW51eCBrZXJuZWxzIGRpZG4ndCB0ZXJtaW5hdGUgIkxJTlVYIi4gICovCi0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIHNpemVvZiAiTElOVVgiOgotICAgICAgIGlmIChtZW1jbXAgKG5hbWUsICJMSU5VWCIsIG5oZHItPm5fbmFtZXN6KSA9PSAwKQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL202OGtfcmV0dmFsLmMgYi9iYWNrZW5kcy9tNjhrX3JldHZhbC5jCi1pbmRleCBjNjhlZDAyLi5hNjUzYmEzIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvbTY4a19yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvbTY4a19yZXR2YWwuYwotQEAgLTkyLDcgKzkyLDcgQEAgbTY4a19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xMzUsNyArMTM1LDcgQEAgbTY4a19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJaWYgKHNpemUgPD0gOCkKLSAJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOwotICAgICAgIH0KLS0gICAgICAvKiBGYWxsdGhyb3VnaCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotaW5kZXggNTc0ODdiYi4uYzZlMWZmZSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKLUBAIC0zMDYsNyArMzA2LDcgQEAgbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotQEAgLTM4OSw3ICszODksNyBAQCBtaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAKLS0gICAgICAvKiBGYWxsdGhyb3VnaCB0byBoYW5kbGUgbGFyZ2UgdHlwZXMgKi8KLSsgICAgICBGQUxMVEhST1VHSDsgLyogRmFsbHRocm91Z2ggdG8gaGFuZGxlIGxhcmdlIHR5cGVzICovCi0gCi0gICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6Ci0gICAgIGxhcmdlOgotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotaW5kZXggZGY3ZWMzYS4uMWYxZTkxYSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCi1AQCAtMTE2LDcgKzExNiw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xNjcsNiArMTY3LDcgQEAgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCwgaW4KLSAKLSAJLyogRWxzZSBmYWxsIHRocm91Z2guICAqLwotICAgICAgIH0KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci1AQCAtMTg5LDcgKzE5MCw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCi0gICAgICAgICAqbG9jcCA9IGxvY19hZ2dyZWdhdGU7Ci0gICAgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7Ci0gI2VuZGlmCi0tCS8qIGZhbGwgdGhyb3VnaC4gICovCi0rCUZBTExUSFJPVUdIOwotICAgICAgIH0KLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jIGIvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKLWluZGV4IGEyNTE5ODMuLmViMWMxMWUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9wcGM2NF9yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKLUBAIC05Niw3ICs5Niw3IEBAIHBwYzY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotQEAgLTE0MSw3ICsxNDEsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICByZXR1cm4gbmxvY19pbnRyZWc7Ci0gCX0KLSAKLS0gICAgICAvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotICAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgotQEAgLTE2MSw3ICsxNjEsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICAgIHJldHVybiBubG9jX3ZteHJlZzsKLSAJICB9Ci0gICAgICAgfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX3N0cmluZ190eXBlOgotICAgICAgIGlmIChkd2FyZl9hZ2dyZWdhdGVfc2l6ZSAodHlwZWRpZSwgJnNpemUpID09IDAgJiYgc2l6ZSA8PSA4KQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19yZWdzLmMgYi9iYWNrZW5kcy9wcGNfcmVncy5jCi1pbmRleCBjMmQ1MDExLi40M2QyNTM0IDEwMDY0NAotLS0tIGEvYmFja2VuZHMvcHBjX3JlZ3MuYwotKysrIGIvYmFja2VuZHMvcHBjX3JlZ3MuYwotQEAgLTE0MCw3ICsxNDAsNyBAQCBwcGNfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotICAgICBjYXNlIDEwMDoKLSAgICAgICBpZiAoKmJpdHMgPT0gMzIpCi0gCXJldHVybiBzdHBjcHkgKG5hbWUsICJtcSIpICsgMSAtIG5hbWU7Ci0tICAgICAgLyogRmFsbHRocm91Z2ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSAxMDIgLi4uIDEwNzoKLSAgICAgICBuYW1lWzBdID0gJ3MnOwotICAgICAgIG5hbWVbMV0gPSAncCc7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvcHBjX3JldHZhbC5jIGIvYmFja2VuZHMvcHBjX3JldHZhbC5jCi1pbmRleCBiMTRhOTlmLi4zOWI0MmRhIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvcHBjX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9wcGNfcmV0dmFsLmMKLUBAIC0xMDgsNyArMTA4LDcgQEAgcHBjX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotQEAgLTE3Miw3ICsxNzIsNyBAQCBwcGNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgICAgIHJldHVybiBubG9jX2ludHJlZ3F1YWQ7Ci0gCSAgICB9Ci0gICAgICAgfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMgYi9iYWNrZW5kcy9zMzkwX3JldHZhbC5jCi1pbmRleCBhOTI3ZDQ2Li4yMDQzZjk4IDEwMDY0NAotLS0tIGEvYmFja2VuZHMvczM5MF9yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvczM5MF9yZXR2YWwuYwotQEAgLTg3LDcgKzg3LDcgQEAgczM5MF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xMjcsNyArMTI3LDcgQEAgczM5MF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICAgIHJldHVybiBzaXplIDw9IGFzaXplID8gbmxvY19pbnRyZWcgOiBubG9jX2ludHJlZ3BhaXI7Ci0gCSAgfQotICAgICAgIH0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9zaF9yZXR2YWwuYyBiL2JhY2tlbmRzL3NoX3JldHZhbC5jCi1pbmRleCBkNDRmMjYwLi4zM2Q3ZDk2IDEwMDY0NAotLS0tIGEvYmFja2VuZHMvc2hfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL3NoX3JldHZhbC5jCi1AQCAtODQsNyArODQsNyBAQCBzaF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYyBiL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCi1pbmRleCBlMWIxNzc1Li5mYjgxY2RjIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCi1AQCAtOTEsNyArOTEsNyBAQCBzcGFyY19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMgYi9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKLWluZGV4IGRiODFhMjAuLjdmN2QyNGIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL3RpbGVneF9yZXR2YWwuYwotQEAgLTc5LDcgKzc5LDcgQEAgdGlsZWd4X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotQEAgLTExMyw3ICsxMTMsNyBAQCB0aWxlZ3hfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgcmV0dXJuIG5sb2NfaW50cmVnOwotIAl9Ci0gCi0tICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy94ODZfNjRfcmVncy5jIGIvYmFja2VuZHMveDg2XzY0X3JlZ3MuYwotaW5kZXggODQzMDQ0MC4uZWY5ODdkYSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKLSsrKyBiL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKLUBAIC04Nyw3ICs4Nyw3IEBAIHg4Nl82NF9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gCi0gICAgIGNhc2UgNiAuLi4gNzoKLSAgICAgICAqdHlwZSA9IERXX0FURV9hZGRyZXNzOwotLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgMCAuLi4gNToKLSAgICAgICBuYW1lWzBdID0gJ3InOwotICAgICAgIG5hbWVbMV0gPSBiYXNlcmVnc1tyZWdub11bMF07Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jIGIvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCi1pbmRleCBiMzc5OWFlLi5mOTExNGNiIDEwMDY0NAotLS0tIGEvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy94ODZfNjRfcmV0dmFsLmMKLUBAIC0xMDAsNyArMTAwLDcgQEAgeDg2XzY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotZGlmZiAtLWdpdCBhL2NvbmZpZy9ldS5hbSBiL2NvbmZpZy9ldS5hbQotaW5kZXggOGZlMWUyNS4uYjZlYzU4MSAxMDA2NDQKLS0tLSBhL2NvbmZpZy9ldS5hbQotKysrIGIvY29uZmlnL2V1LmFtCi1AQCAtNjIsNyArNjIsOSBAQCBOVUxMX0RFUkVGRVJFTkNFX1dBUk5JTkc9Ci0gZW5kaWYKLSAKLSBpZiBIQVZFX0lNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkcKLS1JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HPS1XaW1wbGljaXQtZmFsbHRocm91Z2gKLSsjIFVzZSBzdHJpY3QgZmFsbHRocm91Z2guIE9ubHkgX19hdHRyaWJ1dGVfXygoZmFsbHRocm91Z2gpKSB3aWxsIHByZXZlbnQgdGhlCi0rIyB3YXJuaW5nCi0rSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0tV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTUKLSBlbHNlCi0gSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0KLSBlbmRpZgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWYxODU2ZC4uNjk4ZWZiYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzYwLDYgKzM2MCwxMiBAQCBDRkxBR1M9IiRvbGRfQ0ZMQUdTIl0pCi0gQU1fQ09ORElUSU9OQUwoSEFWRV9JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HLAotIAkgICAgICAgW3Rlc3QgIngkYWNfY3ZfaW1wbGljaXRfZmFsbHRocm91Z2giICE9ICJ4bm8iXSkKLSAKLSsjIEFzc3VtZSB0aGUgZmFsbHRocm91Z2ggYXR0cmlidXRlIGlzIHN1cHBvcnRlZCBpZiAtV2ltcGxpY3QtZmFsbHRocm91Z2ggaXMgc3VwcG9ydGVkCi0raWYgdGVzdCAiJGFjX2N2X2ltcGxpY2l0X2ZhbGx0aHJvdWdoIiA9ICJ5ZXMiOyB0aGVuCi0rCUFDX0RFRklORShbSEFWRV9GQUxMVEhST1VHSF0sIFsxXSwKLSsJCSAgW0RlZmluZWQgaWYgX19hdHRyaWJ1dGVfXygoZmFsbHRocm91Z2gpKSBpcyBzdXBwb3J0ZWRdKQotK2ZpCi0rCi0gZG5sIENoZWNrIGlmIHdlIGhhdmUgYXJncCBhdmFpbGFibGUgZnJvbSBvdXIgbGliYwotIEFDX0xJTktfSUZFTFNFKAotIAlbQUNfTEFOR19QUk9HUkFNKAotZGlmZiAtLWdpdCBhL2xpYi9ldS1jb25maWcuaCBiL2xpYi9ldS1jb25maWcuaAotaW5kZXggNDAwY2RjNi4uZThkNGVjMiAxMDA2NDQKLS0tLSBhL2xpYi9ldS1jb25maWcuaAotKysrIGIvbGliL2V1LWNvbmZpZy5oCi1AQCAtMTg2LDUgKzE4NiwxMiBAQCBhc20gKCIuc2VjdGlvbiBwcmVkaWN0X2RhdGEsIFwiYXdcIjsgLnByZXZpb3VzXG4iCi0gIyBkZWZpbmUgQ09NUEFUX1ZFUlNJT04obmFtZSwgdmVyc2lvbiwgcHJlZml4KSBlcnJvciAic2hvdWxkIHVzZSAjaWZkZWYgU1lNQk9MX1ZFUlNJT05JTkciCi0gI2VuZGlmCi0gCi0rI2lmbmRlZiBGQUxMVEhST1VHSAotKyMgaWZkZWYgSEFWRV9GQUxMVEhST1VHSAotKyMgIGRlZmluZSBGQUxMVEhST1VHSCBfX2F0dHJpYnV0ZV9fICgoZmFsbHRocm91Z2gpKQotKyMgZWxzZQotKyMgIGRlZmluZSBGQUxMVEhST1VHSCAoKHZvaWQpIDApCi0rIyBlbmRpZgotKyNlbmRpZgotIAotICNlbmRpZgkvKiBldS1jb25maWcuaCAqLwotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLWluZGV4IDYwZmQ2ZDQuLjgzN2EzYTggMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9kaXNhc20uYwotKysrIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLUBAIC04MTksNyArODE5LDcgQEAgaTM4Nl9kaXNhc20gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotIAkJCSAgICAgICsrcGFyYW1fc3RhcnQ7Ci0gCQkJICAgICAgYnJlYWs7Ci0gCQkJICAgIH0KLS0JCQkgIC8qIEZhbGx0aHJvdWdoICovCi0rCQkJICBGQUxMVEhST1VHSDsKLSAJCQlkZWZhdWx0OgotIAkJCSAgc3RyID0gIiI7Ci0gCQkJICBhc3NlcnQgKCEgIklOVkFMSUQgbm90IGhhbmRsZWQiKTsKLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9wYXJzZS5jIGIvbGliY3B1L2kzODZfcGFyc2UuYwotaW5kZXggZWYxYWMzNS4uNmZhN2NlMyAxMDA2NDQKLS0tLSBhL2xpYmNwdS9pMzg2X3BhcnNlLmMKLSsrKyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKLUBAIC0xMDQ3LDcgKzEwNDcsNyBAQCB5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0cikKLSAgICAgICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKLSAgICAgICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKLS0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgIGlmICh5eXJlcykKLSAgICAgICAgICAgICAgIHl5cmVzW3l5bl0gPSAqeXlwOwotQEAgLTIwNDIsNyArMjA0Miw3IEBAIHl5YWJvcnRsYWI6Ci0geXlleGhhdXN0ZWRsYWI6Ci0gICB5eWVycm9yIChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7Ci0gICB5eXJlc3VsdCA9IDI7Ci0tICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgRkFMTFRIUk9VR0g7Ci0gI2VuZGlmCi0gCi0geXlyZXR1cm46Ci1kaWZmIC0tZ2l0IGEvbGliZHcvY2ZpLmMgYi9saWJkdy9jZmkuYwotaW5kZXggZGFhODQ1Zi4uMzQxZTA1NSAxMDA2NDQKLS0tLSBhL2xpYmR3L2NmaS5jCi0rKysgYi9saWJkdy9jZmkuYwotQEAgLTEzOCw3ICsxMzgsNyBAQCBleGVjdXRlX2NmaSAoRHdhcmZfQ0ZJICpjYWNoZSwKLSAKLSAJY2FzZSBEV19DRkFfYWR2YW5jZV9sb2MxOgotIAkgIG9wZXJhbmQgPSAqcHJvZ3JhbSsrOwotLQkgIC8qIEZhbGx0aHJvdWdoICovCi0rCSAgRkFMTFRIUk9VR0g7Ci0gCWNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jICsgMCAuLi4gRFdfQ0ZBX2FkdmFuY2VfbG9jICsgQ0ZJX1BSSU1BUllfTUFYOgotIAlhZHZhbmNlX2xvYzoKLSAJICBsb2MgKz0gb3BlcmFuZCAqIGNpZS0+Y29kZV9hbGlnbm1lbnRfZmFjdG9yOwotQEAgLTMwMSw3ICszMDEsNyBAQCBleGVjdXRlX2NmaSAoRHdhcmZfQ0ZJICpjYWNoZSwKLSAKLSAJY2FzZSBEV19DRkFfcmVzdG9yZV9leHRlbmRlZDoKLSAJICBnZXRfdWxlYjEyOCAob3BlcmFuZCwgcHJvZ3JhbSwgZW5kKTsKLS0JICAvKiBGYWxsdGhyb3VnaCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAljYXNlIERXX0NGQV9yZXN0b3JlICsgMCAuLi4gRFdfQ0ZBX3Jlc3RvcmUgKyBDRklfUFJJTUFSWV9NQVg6Ci0gCi0gCSAgaWYgKHVubGlrZWx5IChhYmlfY2ZpKSAmJiBsaWtlbHkgKG9wY29kZSA9PSBEV19DRkFfcmVzdG9yZSkpCi1kaWZmIC0tZ2l0IGEvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYyBiL2xpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMKLWluZGV4IDM3ZThlOTEuLmQwMTU5ZmIgMTAwNjQ0Ci0tLS0gYS9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCi0rKysgYi9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCi1AQCAtNjIsNyArNjIsNyBAQCBkd2FyZl9mcmFtZV9yZWdpc3RlciAoRHdhcmZfRnJhbWUgKmZzLCBpbnQgcmVnbm8sIER3YXJmX09wICpvcHNfbWVtLAotICAgICAgIC8qIFVzZSB0aGUgZGVmYXVsdCBydWxlIGZvciByZWdpc3RlcnMgbm90IHlldCBtZW50aW9uZWQgaW4gQ0ZJLiAgKi8KLSAgICAgICBpZiAoZnMtPmNhY2hlLT5kZWZhdWx0X3NhbWVfdmFsdWUpCi0gCWdvdG8gc2FtZV92YWx1ZTsKLS0gICAgICAvKkZBTExUSFJPVUdIKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSByZWdfdW5kZWZpbmVkOgotICAgICAgIC8qIFRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSB1bmF2YWlsYWJsZS4gICovCi0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMKLWluZGV4IDY5NTBhMzcuLjNmYzkzODQgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCi0rKysgYi9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCi1AQCAtMTc0LDcgKzE3NCw3IEBAIF9fbGliZHdmbF9lbGZfYWRkcmVzc19yYW5nZSAoRWxmICplbGYsIEdFbGZfQWRkciBiYXNlLCBib29sIGFkZF9wX3ZhZGRyLAotICAgICAgIC8qIEFuIGFzc2lnbmVkIGJhc2UgYWRkcmVzcyBpcyBtZWFuaW5nbGVzcyBmb3IgdGhlc2UuICAqLwotICAgICAgIGJhc2UgPSAwOwotICAgICAgIGFkZF9wX3ZhZGRyID0gdHJ1ZTsKLS0gICAgICAvKiBGYWxsdGhyb3VnaC4gKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSBFVF9EWU46Ci0gICAgIGRlZmF1bHQ6OwotICAgICAgIHNpemVfdCBwaG51bTsKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jIGIvbGliZHdmbC9mcmFtZV91bndpbmQuYwotaW5kZXggNGRjOWM0My4uZWFlYTQ5NSAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKLSsrKyBiL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKLUBAIC00NDIsNyArNDQyLDcgQEAgZXhwcl9ldmFsIChEd2ZsX0ZyYW1lICpzdGF0ZSwgRHdhcmZfRnJhbWUgKmZyYW1lLCBjb25zdCBEd2FyZl9PcCAqb3BzLAotIAkgICAgfQotIAkgIGlmICh2YWwxID09IDApCi0gCSAgICBicmVhazsKLS0JICAvKiBGQUxMVEhSVSAqLwotKwkgIEZBTExUSFJPVUdIOwotIAljYXNlIERXX09QX3NraXA6OwotIAkgIER3YXJmX1dvcmQgb2Zmc2V0ID0gb3AtPm9mZnNldCArIDEgKyAyICsgKGludDE2X3QpIG9wLT5udW1iZXI7Ci0gCSAgY29uc3QgRHdhcmZfT3AgKmZvdW5kID0gYnNlYXJjaCAoKHZvaWQgKikgKHVpbnRwdHJfdCkgb2Zmc2V0LCBvcHMsIG5vcHMsCi1kaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9iam5vdGUuYyBiL2xpYmVibC9lYmxvYmpub3RlLmMKLWluZGV4IGY4MGExYTUuLmNhNGYxNTUgMTAwNjQ0Ci0tLS0gYS9saWJlYmwvZWJsb2Jqbm90ZS5jCi0rKysgYi9saWJlYmwvZWJsb2Jqbm90ZS5jCi1AQCAtMjIzLDcgKzIyMyw3IEBAIGVibF9vYmplY3Rfbm90ZSAoRWJsICplYmwsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IHR5cGUsCi0gCQlmcmVlIChidWYpOwotIAkgICAgICBicmVhazsKLSAJICAgIH0KLS0JICAvKiBGQUxMVEhST1VHSCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAotIAlkZWZhdWx0OgotIAkgIC8qIFVua25vd24gdHlwZS4gICovCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLWluZGV4IGE1MWJmNzAuLjUzNTE1MTggMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi0rKysgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi1AQCAtMjMyLDcgKzIzMiw3IEBAIF9fZWxmdzIoTElCRUxGQklUUyx1cGRhdGVudWxsX3dybG9jaykgKEVsZiAqZWxmLCBpbnQgKmNoYW5nZV9ib3AsIHNpemVfdCBzaG51bSkKLSAJCSAgICAgIF9fbGliZWxmX3NldGVycm5vIChFTEZfRV9HUk9VUF9OT1RfUkVMKTsKLSAJCSAgICAgIHJldHVybiAtMTsKLSAJCSAgICB9Ci0tCQkgIC8qIEZBTExUSFJPVUdIICovCi0rCQkgIEZBTExUSFJPVUdIOwotIAkJY2FzZSBTSFRfU1lNVEFCX1NITkRYOgotIAkJICBzaF9lbnRzaXplID0gZWxmX3R5cGVzaXplICgzMiwgRUxGX1RfV09SRCwgMSk7Ci0gCQkgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfYmVnaW4uYyBiL2xpYmVsZi9lbGZfYmVnaW4uYwotaW5kZXggNmY4NTAzOC4uNmRlMjA2YSAxMDA2NDQKLS0tLSBhL2xpYmVsZi9lbGZfYmVnaW4uYwotKysrIGIvbGliZWxmL2VsZl9iZWdpbi5jCi1AQCAtNTgyLDcgKzU4Miw3IEBAIHJlYWRfdW5tbWFwZWRfZmlsZSAoaW50IGZpbGRlcywgb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgbWF4c2l6ZSwgRWxmX0NtZCBjbWQsCi0gCQkJICAgICA/IHNpemVvZiAoRWxmMzJfRWhkcikgOiBzaXplb2YgKEVsZjY0X0VoZHIpKSkKLSAJcmV0dXJuIGZpbGVfcmVhZF9lbGYgKGZpbGRlcywgTlVMTCwgbWVtLmhlYWRlciwgb2Zmc2V0LCBtYXhzaXplLCBjbWQsCi0gCQkJICAgICAgcGFyZW50KTsKLS0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBkZWZhdWx0OgotICAgICAgIGJyZWFrOwotQEAgLTEwOTcsNyArMTA5Nyw3IEBAIGVsZl9iZWdpbiAoaW50IGZpbGRlcywgRWxmX0NtZCBjbWQsIEVsZiAqcmVmKQotIAkgIHJldHZhbCA9IE5VTEw7Ci0gCSAgYnJlYWs7Ci0gCX0KLS0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIEVMRl9DX1JFQUQ6Ci0gICAgIGNhc2UgRUxGX0NfUkVBRF9NTUFQOgotZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfY250bC5jIGIvbGliZWxmL2VsZl9jbnRsLmMKLWluZGV4IGFiMTNmZmIuLmZkNjgxNzggMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmX2NudGwuYwotKysrIGIvbGliZWxmL2VsZl9jbnRsLmMKLUBAIC02Miw3ICs2Miw3IEBAIGVsZl9jbnRsIChFbGYgKmVsZiwgRWxmX0NtZCBjbWQpCi0gCSAgcmVzdWx0ID0gLTE7Ci0gCSAgYnJlYWs7Ci0gCX0KLS0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIEVMRl9DX0ZERE9ORToKLSAgICAgICAvKiBNYXJrIHRoZSBmaWxlIGRlc2NyaXB0b3IgYXMgbm90IHVzYWJsZS4gICovCi1kaWZmIC0tZ2l0IGEvc3JjL2FkZHIybGluZS5jIGIvc3JjL2FkZHIybGluZS5jCi1pbmRleCBiYTQxNGE3Li40NDRlZTUyIDEwMDY0NAotLS0tIGEvc3JjL2FkZHIybGluZS5jCi0rKysgYi9zcmMvYWRkcjJsaW5lLmMKLUBAIC02MTgsNyArNjE4LDcgQEAgaGFuZGxlX2FkZHJlc3MgKGNvbnN0IGNoYXIgKnN0cmluZywgRHdmbCAqZHdmbCkKLSAJY2FzZSAxOgotIAkgIGFkZHIgPSAwOwotIAkgIGogPSBpOwotLQkgIC8qIEZhbGx0aHJvdWdoICovCi0rCSAgRkFMTFRIUk9VR0g7Ci0gCWNhc2UgMjoKLSAJICBpZiAoc3RyaW5nW2pdICE9ICdcMCcpCi0gCSAgICBicmVhazsKLWRpZmYgLS1naXQgYS9zcmMvZWxmY29tcHJlc3MuYyBiL3NyYy9lbGZjb21wcmVzcy5jCi1pbmRleCA4ZTBkNWM1Li4yNTM3OGE0IDEwMDY0NAotLS0tIGEvc3JjL2VsZmNvbXByZXNzLmMKLSsrKyBiL3NyYy9lbGZjb21wcmVzcy5jCi1AQCAtMTQ5LDcgKzE0OSw3IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSAJCSAgICBOXygiT25seSBvbmUgaW5wdXQgZmlsZSBhbGxvd2VkIHRvZ2V0aGVyIHdpdGggJy1vJyIpKTsKLSAgICAgICAvKiBXZSBvbmx5IHVzZSB0aGlzIGZvciBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgd2UgZG9uJ3QKLSAJIGFjdHVhbGx5IHdhbnQgdG8gY29uc3VtZSB0aGVtLiAgKi8KLS0gICAgICAvKiBGYWxsdGhyb3VnaCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiBBUkdQX0VSUl9VTktOT1dOOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKLWluZGV4IDUxZTUzYzIuLmRmMWIzYTAgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmbGludC5jCi0rKysgYi9zcmMvZWxmbGludC5jCi1AQCAtMTc2NCw3ICsxNzY0LDcgQEAgc2VjdGlvbiBbJTJkXSAnJXMnOiBlbnRyeSAlenU6IHBvaW50ZXIgZG9lcyBub3QgbWF0Y2ggYWRkcmVzcyBvZiBzZWN0aW9uIFslMmRdICcKLSAJICBpZiAoZHluLT5kX3RhZyA8IERUX0FERFJSTkdMTyB8fCBkeW4tPmRfdGFnID4gRFRfQUREUlJOR0hJKQotIAkgICAgLyogVmFsdWUgaXMgbm8gcG9pbnRlci4gICovCi0gCSAgICBicmVhazsKLS0JICAvKiBGQUxMVEhST1VHSCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAotIAljYXNlIERUX0FVWElMSUFSWToKLSAJY2FzZSBEVF9GSUxURVI6Ci1AQCAtMzk5Myw3ICszOTkzLDcgQEAgc2VjdGlvbiBbJTJ6dV0gJyVzJzogbWVyZ2UgZmxhZyBzZXQgYnV0IGVudHJ5IHNpemUgaXMgemVyb1xuIiksCi0gCSAgICBjYXNlIFNIVF9OT0JJVFM6Ci0gCSAgICAgIGlmIChpc19kZWJ1Z2luZm8pCi0gCQlicmVhazsKLS0JICAgICAgLyogRmFsbHRocm91Z2ggKi8KLSsJICAgICAgRkFMTFRIUk9VR0g7Ci0gCSAgICBkZWZhdWx0OgotIAkgICAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKLSBzZWN0aW9uIFslMnp1XSAnJXMnIGhhcyB1bmV4cGVjdGVkIHR5cGUgJWQgZm9yIGFuIGV4ZWN1dGFibGUgc2VjdGlvblxuIiksCi1AQCAtNDEzNyw3ICs0MTM3LDcgQEAgc2VjdGlvbiBbJTJ6dV0gJyVzJzogRUxGIGhlYWRlciBzYXlzIHRoaXMgaXMgdGhlIHNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZSBidXQKLSAJICAgIEVSUk9SIChnZXR0ZXh0ICgiXAotIHNlY3Rpb24gWyUyenVdICclcyc6IHJlbG9jYXRhYmxlIGZpbGVzIGNhbm5vdCBoYXZlIGR5bmFtaWMgc3ltYm9sIHRhYmxlc1xuIiksCi0gCQkgICBjbnQsIHNlY3Rpb25fbmFtZSAoZWJsLCBjbnQpKTsKLS0JICAvKiBGQUxMVEhST1VHSCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAljYXNlIFNIVF9TWU1UQUI6Ci0gCSAgY2hlY2tfc3ltdGFiIChlYmwsIGVoZHIsIHNoZHIsIGNudCk7Ci0gCSAgYnJlYWs7Ci1AQCAtNDMzNiw3ICs0MzM2LDcgQEAgc2VjdGlvbiBbJTJkXSAnJXMnOiB1bmtub3duIGNvcmUgZmlsZSBub3RlIHR5cGUgJSIgUFJJdTMyCi0gCSAgICBpZiAobmhkci5uX25hbWVzeiA9PSBzaXplb2YgIkxpbnV4IgotIAkJJiYgIW1lbWNtcCAoZGF0YS0+ZF9idWYgKyBuYW1lX29mZnNldCwgIkxpbnV4Iiwgc2l6ZW9mICJMaW51eCIpKQotIAkgICAgICBicmVhazsKLS0JICAgIC8qIEZhbGx0aHJvdWdoICovCi0rCSAgICBGQUxMVEhST1VHSDsKLSAJICBkZWZhdWx0OgotIAkgICAgaWYgKHNobmR4ID09IDApCi0gCSAgICAgIEVSUk9SIChnZXR0ZXh0ICgiXAotZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCi1pbmRleCA4NjBjZmFjLi4wZGQ5YTZhIDEwMDY0NAotLS0tIGEvc3JjL29iamR1bXAuYwotKysrIGIvc3JjL29iamR1bXAuYwotQEAgLTIyMyw3ICsyMjMsNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywKLSAJfQotICAgICAgIC8qIFdlIG9ubHkgdXNlIHRoaXMgZm9yIGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLCB3ZSBkb24ndAotIAkgYWN0dWFsbHkgd2FudCB0byBjb25zdW1lIHRoZW0uICAqLwotLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIEFSR1BfRVJSX1VOS05PV047Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9zcmMvcmVhZGVsZi5jIGIvc3JjL3JlYWRlbGYuYwotaW5kZXggMzQ2ZWNjZC4uNmEyN2U3ZSAxMDA2NDQKLS0tLSBhL3NyYy9yZWFkZWxmLmMKLSsrKyBiL3NyYy9yZWFkZWxmLmMKLUBAIC00NjUsNyArNDY1LDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCi0gCSAgcHJpbnRfc3RyaW5nX3NlY3Rpb25zID0gdHJ1ZTsKLSAJICBicmVhazsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgJ3gnOgotICAgICAgIGFkZF9kdW1wX3NlY3Rpb24gKGFyZywgZmFsc2UpOwotICAgICAgIGFueV9jb250cm9sX29wdGlvbiA9IHRydWU7Ci1AQCAtNjAyOSw3ICs2MDI5LDcgQEAgYXR0cl9jYWxsYmFjayAoRHdhcmZfQXR0cmlidXRlICphdHRycCwgdm9pZCAqYXJnKQotIAkJCWR3YXJmX2Zvcm1fbmFtZSAoZm9ybSksICh1aW50bWF4X3QpIG51bSk7Ci0gCSAgICAgIHJldHVybiBEV0FSRl9DQl9PSzsKLSAJICAgIH0KLS0JICAvKiBlbHNlIGZhbGx0aHJvdWdoICovCi0rCSAgRkFMTFRIUk9VR0g7Ci0gCi0gCS8qIFRoZXNlIGNhc2VzIGFsd2F5cyB0YWtlIGEgbG9jbGlzdHB0ciBhbmQgbm8gY29uc3RhbnQuICovCi0gCWNhc2UgRFdfQVRfbG9jYXRpb246Ci1AQCAtNjE5NSw3ICs2MTk1LDcgQEAgYXR0cl9jYWxsYmFjayAoRHdhcmZfQXR0cmlidXRlICphdHRycCwgdm9pZCAqYXJnKQotIAkgICAgICBwcmludF9ibG9jayAoYmxvY2subGVuZ3RoLCBibG9jay5kYXRhKTsKLSAJICAgICAgYnJlYWs7Ci0gCSAgICB9Ci0tCSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsJICBGQUxMVEhST1VHSDsKLSAKLSAJY2FzZSBEV19BVF9sb2NhdGlvbjoKLSAJY2FzZSBEV19BVF9kYXRhX2xvY2F0aW9uOgotQEAgLTkyMjcsNyArOTIyNyw3IEBAIGhhbmRsZV9hdXh2X25vdGUgKEVibCAqZWJsLCBFbGYgKmNvcmUsIEdFbGZfV29yZCBkZXNjc3osIEdFbGZfT2ZmIGRlc2NfcG9zKQotIAkJcHJpbnRmICgiICAgICVzXG4iLCBuYW1lKTsKLSAJCWJyZWFrOwotIAkgICAgICB9Ci0tCSAgICAvKiBGYWxsIHRocm91Z2ggKi8KLSsJICAgIEZBTExUSFJPVUdIOwotIAkgIGNhc2UgJ3gnOgkJLyogaGV4ICovCi0gCSAgY2FzZSAncCc6CQkvKiBhZGRyZXNzICovCi0gCSAgY2FzZSAncyc6CQkvKiBhZGRyZXNzIG9mIHN0cmluZyAqLwotZGlmZiAtLWdpdCBhL3NyYy9zdHJpbmdzLmMgYi9zcmMvc3RyaW5ncy5jCi1pbmRleCBkMjE0MzU2Li4wM2QwZjEzIDEwMDY0NAotLS0tIGEvc3JjL3N0cmluZ3MuYwotKysrIGIvc3JjL3N0cmluZ3MuYwotQEAgLTI0Niw3ICsyNDYsNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywKLSAJY2FzZSAnYic6Ci0gCWNhc2UgJ0InOgotIAkgIGJpZ19lbmRpYW4gPSB0cnVlOwotLQkgIC8qIEZBTExUSFJPVUdIICovCi0rCSAgRkFMTFRIUk9VR0g7Ci0gCi0gCWNhc2UgJ2wnOgotIAljYXNlICdMJzoKLWRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCi1pbmRleCAyMWFiZThhLi5mNWRkNzYxIDEwMDY0NAotLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKLSsrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCi1AQCAtMTI3LDcgKzEyNyw3IEBAIGNhbGxiYWNrX3ZlcmlmeSAocGlkX3QgdGlkLCB1bnNpZ25lZCBmcmFtZW5vLCBEd2FyZl9BZGRyIHBjLAotIAkgIGFzc2VydCAoc3ltbmFtZTIgPT0gTlVMTCB8fCBzdHJjbXAgKHN5bW5hbWUyLCAiam1wIikgIT0gMCk7Ci0gCSAgYnJlYWs7Ci0gCX0KLS0gICAgICAvKiBGQUxMVEhSVSAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlIDQ6Ci0gICAgICAgLyogU29tZSBzaW1wbGUgZnJhbWUgdW53aW5kZXJzIGdldCB0aGlzIHdyb25nIGFuZCB0aGluayBzaWd1c3IyCi0gCSBpcyBjYWxsaW5nIGl0c2VsZiBhZ2Fpbi4gQWxsb3cgaXQgYW5kIGp1c3QgcHJldGVuZCB0aGVyZSBpcwotZGlmZiAtLWdpdCBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMgYi90ZXN0cy9lbGZzdHJtZXJnZS5jCi1pbmRleCA4ZDViNTNjLi42MmM1NDlkIDEwMDY0NAotLS0tIGEvdGVzdHMvZWxmc3RybWVyZ2UuYwotKysrIGIvdGVzdHMvZWxmc3RybWVyZ2UuYwotQEAgLTU3OCw3ICs1NzgsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSAgICAgIGJyZWFrOwotIAotIAkgICAgY2FzZSBTSFRfRFlOQU1JQzoKLS0JICAgICAgLyogRmFsbHRocm91Z2guICBUaGVyZSBhcmUgc3RyaW5nIGluZGV4ZXMgaW4gaGVyZSwgYnV0Ci0rCSAgICAgIEZBTExUSFJPVUdIOwotKwkgICAgICAvKiBUaGVyZSBhcmUgc3RyaW5nIGluZGV4ZXMgaW4gaGVyZSwgYnV0Ci0gCQkgdGhleSAoc2hvdWxkKSBwb2ludCB0byBhIGFsbG9jYXRlZCBzdHJpbmcgdGFibGUsCi0gCQkgd2hpY2ggd2UgZG9uJ3QgYWx0ZXIuICAqLwotIAkgICAgZGVmYXVsdDoKLS0tIAotMi4xNC4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtYXJsaWItQ2hlY2stdGhhdC1zaF9lbnRzaXplLWlzbi10LXplcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWFybGliLUNoZWNrLXRoYXQtc2hfZW50c2l6ZS1pc24tdC16ZXJvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Y2Y3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWFybGliLUNoZWNrLXRoYXQtc2hfZW50c2l6ZS1pc24tdC16ZXJvLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYjUxODg0MWZiYzE0MzFkN2M1YmFhMDE2ZTM1ZjEwZmI2NDdiNTk1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgorRGF0ZTogVGh1LCAxOCBPY3QgMjAxOCAxOTowMTo1MiArMDIwMAorU3ViamVjdDogW1BBVENIXSBhcmxpYjogQ2hlY2sgdGhhdCBzaF9lbnRzaXplIGlzbid0IHplcm8uCisKK0EgYm9ndXMgRUxGIGZpbGUgY291bGQgaGF2ZSBzaF9lbnRzaXplIGFzIHplcm8uIERvbid0IGRpdmlkZSBieSB6ZXJvLAorYnV0IGp1c3QgYXNzdW1lIHRoZXJlIGFyZSBubyBzeW1ib2xzIGluIHRoZSBzZWN0aW9uLgorCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMzc4NgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KKworQ1ZFOiBDVkUtMjAxOC0xODUyMQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL3NvdXJjZXdhcmUub3JnL2dpdC9lbGZ1dGlscy5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYXJsaWIuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2FybGliLmMgYi9zcmMvYXJsaWIuYworaW5kZXggNzc4ZTA4Ny4uYTY1MjFlMyAxMDA2NDQKKy0tLSBhL3NyYy9hcmxpYi5jCisrKysgYi9zcmMvYXJsaWIuYworQEAgLTI1Miw2ICsyNTIsOSBAQCBhcmxpYl9hZGRfc3ltYm9scyAoRWxmICplbGYsIGNvbnN0IGNoYXIgKmFyZm5hbWUsIGNvbnN0IGNoYXIgKm1lbWJlcm5hbWUsCisgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAJY29udGludWU7CisgCisrICAgICAgaWYgKHNoZHItPnNoX2VudHNpemUgPT0gMCkKKysJY29udGludWU7CisrCisgICAgICAgaW50IG5zeW1zID0gc2hkci0+c2hfc2l6ZSAvIHNoZHItPnNoX2VudHNpemU7CisgICAgICAgZm9yIChpbnQgbmR4ID0gc2hkci0+c2hfaW5mbzsgbmR4IDwgbnN5bXM7ICsrbmR4KQorIAl7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKaW5kZXggMjhjNTdmMi4uNGM2MmRjNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDBhNjlhMjZjOWY3NDg3ZGFjYTkwMGRiODdjZDExOTU4NTdhNDYwM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM5YzZkMjQxNDY1MWRiZjE2M2RjNDk2M2MzYzNkNmY1Y2FjZWY4OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEwOjU3ICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggMS83XSBkc28gbGluayBjaGFuZ2UKQEAgLTM1LDEwICszNSwxMCBAQAogIGVuZGlmCiAgbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMzczNTA4NC4uNTI4NjE1ZCAxMDA2NDQKK2luZGV4IGI0NWVjZGMuLmRkMjU2ZmIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC00MDAsNyArNDAwLDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKK0BAIC00MzYsNyArNDM2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKICBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEgLWx6CiAgbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hCiAgZWxzZQpAQCAtNDgsNSArNDgsNSBAQAogIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KICBlbmRpZgogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCmluZGV4IGZiMGIwNjAuLmMzNDIwNTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3NjcyZTM2MzQ2ODI3MWI0YzYzZmY1ODc3MGM1YWFjMTVhYjhmNzIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3NDYyOTAxNmU3NjM0M2E0YmYzOTkxNWM5MTkyYjZiZjI2YTU3YzJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgNCBPY3QgMjAxNyAyMjozMDo0NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBsaWJhc20gbWF5IGxpbmsgd2l0aCBsaWJiejIgaWYgZm91bmQKQEAgLTksMTUgKzksMTQgQEAKIHwgL21udC9hL29lL2J1aWxkL3RtcC93b3JrL3Jpc2N2NjQtYmVjLWxpbnV4L2VsZnV0aWxzLzAuMTcwLXIwL3JlY2lwZS1zeXNyb290L3Vzci9saWIvbGliYnoyLnNvLjE6IGVycm9yIGFkZGluZyBzeW1ib2xzOiBEU08gbWlzc2luZyBmcm9tIGNvbW1hbmQgbGluZQogfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9NYWtlZmlsZS5hbSB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKyBzcmMvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBlMDNiYzMyLi45YjdlODUzIDEwMDY0NAoraW5kZXggOTMwNWI4NC4uOWI3ZTg1MyAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZS5hbQogKysrIGIvc3JjL01ha2VmaWxlLmFtCiBAQCAtMzksMTEgKzM5LDExIEBAIEVYVFJBX0RJU1QgKz0gbWFrZS1kZWJ1Zy1hcmNoaXZlLmluCkBAIC0zNSw1ICszNCw1IEBACiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwogIGVuZGlmCiAtLSAKLTIuMTQuMgorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJkd2ZsLVNhbml0eS1jaGVjay1wYXJ0aWFsLWNvcmUtZmlsZS1kYXRhLXJlYWRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJkd2ZsLVNhbml0eS1jaGVjay1wYXJ0aWFsLWNvcmUtZmlsZS1kYXRhLXJlYWRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNzRhOGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmR3ZmwtU2FuaXR5LWNoZWNrLXBhcnRpYWwtY29yZS1maWxlLWRhdGEtcmVhZHMucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSA4Y2JiMmY4ZGU4OWQ2NWNhNTJkNDI0MmYyMTNhNjIwNmI0OGQyYzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyIE5vdiAyMDE4IDE0OjIyOjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmR3Zmw6IFNhbml0eSBjaGVjayBwYXJ0aWFsIGNvcmUgZmlsZSBkYXRhIHJlYWRzLgorCitUaGVyZSB3ZXJlIHR3byBpc3N1ZXMgd2hlbiByZWFkaW5nIG5vdGUgZGF0YSBmcm9tIGEgY29yZSBmaWxlLgorV2UgZGlkbid0IGNoZWNrIGlmIHRoZSBkYXRhIHdlIGFscmVhZHkgaGFkIGluIGEgYnVmZmVyIHdhcyBiaWcKK2Vub3VnaC4gQW5kIGlmIHdlIGRpZCBnZXQgdGhlIGRhdGEsIHdlIHNob3VsZCBjaGVjayBpZiB3ZSBnb3QKK2V2ZXJ5dGhpbmcsIG9yIGp1c3QgYSBwYXJ0IG9mIHRoZSBkYXRhLgorCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMzc1MgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KKworQ1ZFOiBDVkUtMjAxOC0xODMxMAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL3NvdXJjZXdhcmUub3JnL2dpdC9lbGZ1dGlscy5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJkd2ZsL2R3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMgfCAxMyArKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMgYi9saWJkd2ZsL2R3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMKK2luZGV4IDM2ZTVjODIuLjg3NDk4ODQgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUuYworQEAgLTEsNSArMSw1IEBACisgLyogU25pZmYgb3V0IG1vZHVsZXMgZnJvbSBFTEYgaGVhZGVycyB2aXNpYmxlIGluIG1lbW9yeSBzZWdtZW50cy4KKy0gICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMiwgMjAxNCwgMjAxNSBSZWQgSGF0LCBJbmMuCisrICAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTIsIDIwMTQsIDIwMTUsIDIwMTggUmVkIEhhdCwgSW5jLgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGVsZnV0aWxzLgorIAorICAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitAQCAtMzAxLDcgKzMwMSwxMCBAQCBkd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdmbCwgaW50IG5keCwgY29uc3QgY2hhciAqbmFtZSwKKyAgIGlubGluZSBib29sIHJlYWRfcG9ydGlvbiAodm9pZCAqKmRhdGEsIHNpemVfdCAqZGF0YV9zaXplLAorIAkJCSAgICBHRWxmX0FkZHIgdmFkZHIsIHNpemVfdCBmaWxlc3opCisgICB7CistICAgIGlmICh2YWRkciAtIHN0YXJ0ICsgZmlsZXN6ID4gYnVmZmVyX2F2YWlsYWJsZQorKyAgICAvKiBDaGVjayB3aGV0aGVyIHdlIHdpbGwgaGF2ZSB0byByZWFkIHRoZSBzZWdtZW50IGRhdGEsIG9yIGlmIGl0CisrICAgICAgIGNhbiBiZSByZXR1cm5lZCBmcm9tIHRoZSBleGlzdGluZyBidWZmZXIuICAqLworKyAgICBpZiAoZmlsZXN6ID4gYnVmZmVyX2F2YWlsYWJsZQorKwl8fCB2YWRkciAtIHN0YXJ0ID4gYnVmZmVyX2F2YWlsYWJsZSAtIGZpbGVzegorIAkvKiBJZiB3ZSdyZSBpbiBzdHJpbmcgbW9kZSwgdGhlbiBkb24ndCBjb25zaWRlciB0aGUgYnVmZmVyIHdlIGhhdmUKKyAJICAgc3VmZmljaWVudCB1bmxlc3MgaXQgY29udGFpbnMgdGhlIHRlcm1pbmF0b3Igb2YgdGhlIHN0cmluZy4gICovCisgCXx8IChmaWxlc3ogPT0gMCAmJiBtZW1jaHIgKHZhZGRyIC0gc3RhcnQgKyBidWZmZXIsICdcMCcsCitAQCAtNDU5LDYgKzQ2MiwxMiBAQCBkd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZSAoRHdmbCAqZHdmbCwgaW50IG5keCwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgaWYgKHJlYWRfcG9ydGlvbiAoJmRhdGEsICZkYXRhX3NpemUsIHZhZGRyLCBmaWxlc3opKQorICAgICAgIHJldHVybjsKKyAKKysgICAgLyogZGF0YV9zaXplIHdpbGwgYmUgemVybyBpZiB3ZSBnb3QgZXZlcnl0aGluZyBmcm9tIHRoZSBpbml0aWFsCisrICAgICAgIGJ1ZmZlciwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIHNpemUgb2YgdGhlIG5ldyBidWZmZXIgdGhhdAorKyAgICAgICBjb3VsZCBiZSByZWFkLiAgKi8KKysgICAgaWYgKGRhdGFfc2l6ZSAhPSAwKQorKyAgICAgIGZpbGVzeiA9IGRhdGFfc2l6ZTsKKysKKyAgICAgYXNzZXJ0IChzaXplb2YgKEVsZjMyX05oZHIpID09IHNpemVvZiAoRWxmNjRfTmhkcikpOworIAorICAgICB2b2lkICpub3RlczsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJlbGYtZWxmX2VuZC5jLWNoZWNrLWRhdGFfbGlzdC5kYXRhLmQuZF9idWYtYmVmb3JlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJlbGYtZWxmX2VuZC5jLWNoZWNrLWRhdGFfbGlzdC5kYXRhLmQuZF9idWYtYmVmb3JlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZGI1MTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmVsZi1lbGZfZW5kLmMtY2hlY2stZGF0YV9saXN0LmRhdGEuZC5kX2J1Zi1iZWZvcmUucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAzMzkzYTJlNTQ0ODE4ZjBiZDE4ODdjMTNmMjhhNzZhZDYwYzJkZjk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE2IEF1ZyAyMDE4IDA5OjU4OjI2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmVsZi9lbGZfZW5kLmM6IGNoZWNrIGRhdGFfbGlzdC5kYXRhLmQuZF9idWYgYmVmb3JlIGZyZWUgaXQKKworVGhlIG9uZSB3aGljaCBhY3R1YWxseSBzYXZlcyB0aGUgZGF0YSBpcyBkYXRhX2xpc3QuZGF0YS5kLmRfYnVmLCBzbyBjaGVjayBpdAorYmVmb3JlIGZyZWUgcmF3ZGF0YV9iYXNlLgorCitUaGlzIGNhbiBmaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBwcmVsaW5rIGxpYnFiXzEuMC4zOgorcHJlbGluazogL3Vzci9saWIvbGlicWIuc28uMC4xOC4yOiBTeW1ib2wgc2VjdGlvbiBpbmRleCBvdXRzaWRlIG9mIHNlY3Rpb24gbnVtYmVycworCitUaGUgc2VnbWVudGF0aW9uIGZhdWx0IGhhcHBlbnMgd2hlbiBwcmVsaW5rIGNhbGwgZWxmX2VuZCgpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9lbGZ1dGlscy1kZXZlbC8yMDE4LXEzL21zZzAwMDg1Lmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGliZWxmL2VsZl9lbmQuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfZW5kLmMgYi9saWJlbGYvZWxmX2VuZC5jCitpbmRleCAxNjBmMGI4Li41MjgwYTcwIDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZl9lbmQuYworKysrIGIvbGliZWxmL2VsZl9lbmQuYworQEAgLTE2MCwxNCArMTYwLDE2IEBAIGVsZl9lbmQgKEVsZiAqZWxmKQorIAkJICAgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgcmVxdWlyZSBvdmVybHkgc3RyaW5nZW50CisgCQkgICBhbGlnbm1lbnQgdGhlIHJhdyBkYXRhIGJ1ZmZlciBpcyB0aGUgc2FtZSBhcyB0aGUKKyAJCSAgIG9uZSB1c2VkIGZvciBwcmVzZW50aW5nIHRvIHRoZSBjYWxsZXIuICAqLworLQkJaWYgKHNjbi0+ZGF0YV9iYXNlICE9IHNjbi0+cmF3ZGF0YV9iYXNlKQorKwkJaWYgKChzY24tPmRhdGFfYmFzZSAhPSBzY24tPnJhd2RhdGFfYmFzZSkKKysJCSAgICAmJiAoc2NuLT5kYXRhX2xpc3QuZGF0YS5kLmRfYnVmICE9IE5VTEwpKQorIAkJICBmcmVlIChzY24tPmRhdGFfYmFzZSk7CisgCisgCQkvKiBUaGUgc2VjdGlvbiBkYXRhIGlzIGFsbG9jYXRlZCBpZiB3ZSBjb3VsZG4ndCBtbWFwCisgCQkgICB0aGUgZmlsZS4gIE9yIGlmIHdlIGhhZCB0byBkZWNvbXByZXNzLiAgKi8KKy0JCWlmIChlbGYtPm1hcF9hZGRyZXNzID09IE5VTEwKKysJCWlmICgoZWxmLT5tYXBfYWRkcmVzcyA9PSBOVUxMCisgCQkgICAgfHwgc2NuLT5yYXdkYXRhX2Jhc2UgPT0gc2NuLT56ZGF0YV9iYXNlCisgCQkgICAgfHwgKHNjbi0+ZmxhZ3MgJiBFTEZfRl9NQUxMT0NFRCkgIT0gMCkKKysJCSAgICAmJiAoc2NuLT5kYXRhX2xpc3QuZGF0YS5kLmRfYnVmICE9IE5VTEwpKQorIAkJICBmcmVlIChzY24tPnJhd2RhdGFfYmFzZSk7CisgCisgCQkvKiBGcmVlIHRoZSBsaXN0IG9mIGRhdGEgYnVmZmVycyBmb3IgdGhlIHNlY3Rpb24uCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtc2l6ZS1IYW5kbGUtcmVjdXJzaXZlLUVMRi1hci1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtc2l6ZS1IYW5kbGUtcmVjdXJzaXZlLUVMRi1hci1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmVkODI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1zaXplLUhhbmRsZS1yZWN1cnNpdmUtRUxGLWFyLWZpbGVzLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNDQwZDM0ZDBlZTM3OTY0NDUzMjQ1ODk1ZDM4ZDdmYzMxYmNmM2Q3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgorRGF0ZTogVGh1LCAxOCBPY3QgMjAxOCAyMzoxNTo0OCArMDIwMAorU3ViamVjdDogW1BBVENIXSBzaXplOiBIYW5kbGUgcmVjdXJzaXZlIEVMRiBhciBmaWxlcy4KKworZXUtc2l6ZSBkaWRuJ3QgaGFuZGxlIGFuIEVMRiBhciBmaWxlIHRoYXQgY29udGFpbmVkIGFuIGFyIGZpbGUgaXRzZWxmCitjb3JyZWN0bHkuIGhhbmRsZV9hciB3b3VsZCByZWN1cnNpdmVseSBjYWxsIGl0c2VsZiBidXQgY2xvc2UgdGhlIEVMRgorZmlsZSBiZWZvcmUgcmV0dXJuaW5nLiBPbmx5IGNsb3NlIHRoZSBFTEYgZmlsZSBhdCB0aGUgdG9wLWxldmVsLgorCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMzc4NworCitTaWduZWQtb2ZmLWJ5OiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KKworQ1ZFOiBDVkUtMjAxOC0xODUyMAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL3NvdXJjZXdhcmUub3JnL2dpdC9lbGZ1dGlscy5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvc2l6ZS5jIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3NpemUuYyBiL3NyYy9zaXplLmMKK2luZGV4IDVmZjNmMmEuLmYwMWZkODggMTAwNjQ0CistLS0gYS9zcmMvc2l6ZS5jCisrKysgYi9zcmMvc2l6ZS5jCitAQCAtMzc0LDggKzM3NCwxMCBAQCBoYW5kbGVfYXIgKGludCBmZCwgRWxmICplbGYsIGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqZm5hbWUpCisgCUlOVEVSTkFMX0VSUk9SIChmbmFtZSk7CisgICAgIH0KKyAKKy0gIGlmICh1bmxpa2VseSAoZWxmX2VuZCAoZWxmKSAhPSAwKSkKKy0gICAgSU5URVJOQUxfRVJST1IgKGZuYW1lKTsKKysgIC8qIE9ubHkgY2xvc2UgRUxGIGhhbmRsZSBpZiB0aGlzIHdhcyBhICJ0b3AgbGV2ZWwiIGFyIGZpbGUuICAqLworKyAgaWYgKHByZWZpeCA9PSBOVUxMKQorKyAgICBpZiAodW5saWtlbHkgKGVsZl9lbmQgKGVsZikgIT0gMCkpCisrICAgICAgSU5URVJOQUxfRVJST1IgKGZuYW1lKTsKKyAKKyAgIHJldHVybiByZXN1bHQ7CisgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaAppbmRleCAyZjcxOGViLi44NmQyNmJkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU5ODY3MGY3YzdiNGM3M2ZiNjU1MzQ5NDk3MTZmZDhkMDQzOTYwZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDlmZDRiYjA1ZDNmMmI3ZWFmOWZlNDQxYmVlMjZkM2IxODc4ZDdjYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEzOjU5ICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggMi83XSBGaXggZWxmX2N2dF9ndW5oYXNoIGlmIGRlc3QgYW5kIHNyYyBhcmUgc2FtZS4KQEAgLTM4LDUgKzM4LDUgQEAKICAgIC8qIE5vdyB0aGUgNjQgYml0IHdvcmRzLiAgKi8KICAgIEVsZjY0X1h3b3JkICpkZXN0NjQgPSAoRWxmNjRfWHdvcmQgKikgJmRlc3QzMls0XTsKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2gKaW5kZXggN2M0OWZjZS4uZDFjOGU0MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1NjVkNTkzNWFiZjViNTg3NzNmOWM4Mzg1YzAwMTg5MjIxOTgwZDk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNGZiM2Y2NWVjMTg2ZGY1MjMxZGQwYzIxNzgwYTU1ZGNjMDNjODY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxNzoyMCArMDgwMAogU3ViamVjdDogW1BBVENIIDMvN10gZml4aGVhZGVyY2hlY2sKQEAgLTIxLDcgKzIxLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLWluZGV4IGQ4M2MwYjMuLmE1MWJmNzAgMTAwNjQ0CitpbmRleCAzZTllZjYxLi41MzUxNTE4IDEwMDY0NAogLS0tIGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYwogKysrIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYwogQEAgLTMzOSw4ICszMzksOCBAQCBfX2VsZncyKExJQkVMRkJJVFMsdXBkYXRlbnVsbF93cmxvY2spIChFbGYgKmVsZiwgaW50ICpjaGFuZ2VfYm9wLCBzaXplX3Qgc2hudW0pCkBAIC0zNiw1ICszNiw1IEBACiAgCQkgICAgICBfX2xpYmVsZl9zZXRlcnJubyAoRUxGX0VfSU5WQUxJRF9BTElHTik7CiAgCQkgICAgICByZXR1cm4gLTE7CiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaAppbmRleCBkODkzYWQ2Li5iZjNhNjQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiYjdlZDExOTUwMTAxNzk4YWFlODJmN2ZkYThiM2RjYjA1Zjc1NWM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkYmM4ODM0OWI5ZWVkNDI2OGRiOTUxZGYyYzNhODM4N2Y3NWEzMmU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNDowNiArMDgwMAogU3ViamVjdDogW1BBVENIIDQvN10gRGlzYWJsZSB0aGUgdGVzdCB0byBjb252ZXJ0IGV1Yy1qcApAQCAtNDAsNSArNDAsNSBAQAogIH1dXSldLAogICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCmluZGV4IDIyYTAxY2YuLmUyOTY2Y2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGRkNmRiZjZhZjM5NjUxOTM4MGY0OGMwZWYxY2U2Y2Y0ZGQ3N2Y2ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRkN2VhNjgxOTMyNTU2YWQ4ODFmNjg0MWRlOTBkMGJmZmY1NmY4ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjI1OjE2ICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggNS83XSBmaXggYSBzdGFjay11c2FnZSB3YXJuaW5nCkBAIC0xOCwxMCArMTgsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19pbml0cmVnLmMgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCi1pbmRleCA2OWQ2MjNiLi5kZTQxZGVjIDEwMDY0NAoraW5kZXggM2U0NDMyZi4uNTljMmQ5NyAxMDA2NDQKIC0tLSBhL2JhY2tlbmRzL3BwY19pbml0cmVnLmMKICsrKyBiL2JhY2tlbmRzL3BwY19pbml0cmVnLmMKLUBAIC05Myw3ICs5Myw3IEBAIHBwY19zZXRfaW5pdGlhbF9yZWdpc3RlcnNfdGlkIChwaWRfdCB0aWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorQEAgLTk0LDcgKzk0LDcgQEAgcHBjX3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90IHRpZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCiAgCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgY29uc3Qgc2l6ZV90IGdwcnMgPSBzaXplb2YgKHVzZXJfcmVncy5yLmdwcikgLyBzaXplb2YgKCp1c2VyX3JlZ3Muci5ncHIpOwpAQCAtMzEsNSArMzEsNSBAQAogICAgICBkd2FyZl9yZWdzW2dwcl0gPSB1c2VyX3JlZ3Muci5ncHJbZ3ByXTsKICAgIGlmICghIHNldGZ1bmMgKDAsIGdwcnMsIGR3YXJmX3JlZ3MsIGFyZykpCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaAppbmRleCA1ZjI5YTAzLi40MGI4NTQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlNTdhZDQ3ZmM4NTQ5MzUzY2E4MGMyM2I5YjRmMzhmMzFmZGUxM2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiNGVjMDU5NTNmNzhhZjI2YmNkN2RlNDVhNWJiYzVmMTM4ZDAyM2RhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNzozMCArMDgwMAogU3ViamVjdDogW1BBVENIIDYvN10gRml4IGJ1aWxkIG9uIGFhcmNoNjQvbXVzbApAQCAtNTcsNSArNTcsNSBAQAogICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgogIC8qIERlYWwgd2l0aCBvbGQgZ2xpYmMgZGVmaW5pbmcgdXNlcl9wdF9yZWdzIGluc3RlYWQgb2YgdXNlcl9yZWdzX3N0cnVjdC4gICovCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaAppbmRleCAyMjQ3NzA0Li5iYmE0MjBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSAxZTkxYzFkNGUzN2MwNWNmOTUwNThiNGIzYzNmMzUyZDcyODg2ZjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZWIxMDBiMmU1MWJlNWQ0NzNiMDc0OGEyMjNlMmU3ZjYxZWM2MDZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzozMTozOCArMDgwMAorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNToxNDoyOCArMDgwMAogU3ViamVjdDogW1BBVENIIDcvN10gRml4IGNvbnRyb2wgcGF0aCB3aGVyZSB3ZSBoYXZlIHN0ciBhcyB1bmluaXRpYWxpemVkCiAgc3RyaW5nCiAKQEAgLTIxLDcgKzIxLDcgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotUmViYXNlIHRvIDAuMTcwCitSZWJhc2UgdG8gMC4xNzIKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCkBAIC0yOSwxNyArMjksMTcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLWluZGV4IDgzMWFmYmUuLjYwZmQ2ZDQgMTAwNjQ0CitpbmRleCBhN2UwM2Y5Li44MzdhM2E4IDEwMDY0NAogLS0tIGEvbGliY3B1L2kzODZfZGlzYXNtLmMKICsrKyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCiBAQCAtODIxLDYgKzgyMSw3IEBAIGkzODZfZGlzYXNtIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKICAJCQkgICAgfQotIAkJCSAgLyogRmFsbHRocm91Z2ggKi8KKyAJCQkgIEZBTExUSFJPVUdIOwogIAkJCWRlZmF1bHQ6CiArCQkJICBzdHIgPSAiIjsKICAJCQkgIGFzc2VydCAoISAiSU5WQUxJRCBub3QgaGFuZGxlZCIpOwogIAkJCX0KICAJCSAgICB9CiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaAppbmRleCBhNDJjZTdiLi4wZjAxYTMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCkBAIC0xLDkwICsxLDMyIEBACi1Gcm9tIGVmMDk4MTc0NDY2OTE0OWEwMGRkMDQzOWE1NGRhYzMwZGU3YjU2YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIwN2JlMDVjNDRkYTVjNGMzMTE3OWEzNDY2MGUxNzYxNDVmZjhkNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDowNjoyNiArMDgwMAorRGF0ZTogTW9uLCAyIEp1bCAyMDE4IDA5OjUyOjIzICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBQcm92aWRlIGFsdGVybmF0aXZlcyBmb3IgZ2xpYmMgYXNzdW1wdGlvbnMgaGVscHMKICBjb21waWxpbmcgaXQgb24gbXVzbAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLVJlYmFzZSB0byAwLjE3MAorUmViYXNlIHRvIDAuMTc0CiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCiAgbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgICAgfCAgMSAtCi0gbGliL3N5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCi0gbGliL3htYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmFzbS9hc21fZW5kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJhc20vYXNtX25ld3Njbi5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliY3B1L2kzODZfZ2VuZGlzLmMgICAgICAgICAgICAgfCAgMiArLQotIGxpYmNwdS9pMzg2X2xleC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgICAgICB8ICAyICstCisgbGliL3N5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrKy0KICBsaWJkdy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8ICAzICsrLQotIGxpYmR3L2xpYmR3X2FsbG9jLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyB8ICAzICsrLQorIGxpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIHwgIDEgKwogIGxpYmR3ZmwvZHdmbF9lcnJvci5jICAgICAgICAgICAgIHwgIDQgKysrLQogIGxpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyAgIHwgIDEgKwotIGxpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYyAgICAgICAgIHwgIDIgKy0KICBsaWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jICAgICB8ICA5ICsrKysrKysrKwogIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyAgIHwgIDEgKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jICAgICAgICAgIHwgIDIgKy0KICBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCiAgbGliZWxmL2xpYmVsZi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiAgbGliZWxmL2xpYmVsZlAuaCAgICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL2FkZHIybGluZS5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9hci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYXJsaWIuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2FybGliMi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9lbGZjbXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvZWxmbGludC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2ZpbmR0ZXh0cmVsLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9ubS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvb2JqZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3JhbmxpYi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9yZWFkZWxmLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc2l6ZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3N0YWNrLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3Vuc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2FkZHJzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9hbGxyZWdzLmMgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYmFja3RyYWNlLWRhdGEuYyAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2JhY2t0cmFjZS1kd2FyZi5jICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYnVpbGRpZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2RlYnVnYWx0bGluay5jICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kZWJ1Z2xpbmsuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZGVsZXRlZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYWRkci1zZWN0LmMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgICB8ICAyICstCi0gdGVzdHMvZHdmbC1idWctZmQtbGVhay5jICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyAgICB8ICAyICstCi0gdGVzdHMvZHdmbGxpbmVzLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3Zmxtb2R0ZXN0LmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2Zsc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZWFybHktb2Zmc2NuLmMgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2VjcC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9maW5kLXByb2xvZ3Vlcy5jICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZnVuY3JldHZhbC5jICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Z1bmNzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9nZXRzcmNfZGllLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvbGluZTJhZGRyLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2xvd19oaWdoX3BjLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9tZDUtc2hhMS10ZXN0LmMgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvcmR3cm1tYXAuYyAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3NhcmlkeC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9zZWN0aW9uZHVtcC5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvdmFybG9jcy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3Zkc29zeW1zLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSA2OSBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKKyAxMiBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMmZmNDQ0ZTcuLjQxZjc3ZGY4IDEwMDY0NAoraW5kZXggMmZmNDQ0ZS4uNDFmNzdkZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQogQEAgLTI4LDcgKzI4LDcgQEAgcGtnaW5jbHVkZV9IRUFERVJTID0gdmVyc2lvbi5oCkBAIC05NiwyOCArMzgsOCBAQAogIAogIEVYVFJBX0RJU1QgPSBlbGZ1dGlscy5zcGVjIEdQRy1LRVkgTk9URVMgQ09OVFJJQlVUSU5HIFwKICAJICAgICBDT1BZSU5HIENPUFlJTkctR1BMVjIgQ09QWUlORy1MR1BMVjMKLWRpZmYgLS1naXQgYS9saWIvY29sb3IuYyBiL2xpYi9jb2xvci5jCi1pbmRleCBmNjIzODlkNS4uYTJhODRiNDYgMTAwNjQ0Ci0tLS0gYS9saWIvY29sb3IuYwotKysrIGIvbGliL2NvbG9yLmMKLUBAIC0zMiwxMyArMzIsMTQgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlICJsaWJldS5oIgotICNpbmNsdWRlICJjb2xvci5oIgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAKLSAvKiBQcm90b3R5cGUgZm9yIG9wdGlvbiBoYW5kbGVyLiAgKi8KLSBzdGF0aWMgZXJyb3JfdCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKTsKIGRpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAotaW5kZXggZGFjMmE1ZjUuLjQzMDE2ZmMzIDEwMDY0NAoraW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKIC0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKICsrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKIEBAIC0zMCw3ICszMCw2IEBACkBAIC0xMjksMTAgKzUxLDE5IEBACiAgI2luY2x1ZGUgPHN5c3RlbS5oPgogIAogZGlmZiAtLWdpdCBhL2xpYi9zeXN0ZW0uaCBiL2xpYi9zeXN0ZW0uaAotaW5kZXggOTIwMzMzNTUuLjFhNjAxMzE5IDEwMDY0NAoraW5kZXggMjkyMDgyYi4uMzA4YTc2MiAxMDA2NDQKIC0tLSBhL2xpYi9zeXN0ZW0uaAogKysrIGIvbGliL3N5c3RlbS5oCi1AQCAtNTAsNiArNTAsMTYgQEAKK0BAIC0zMCw3ICszMCw3IEBACisgI2RlZmluZSBMSUJfU1lTVEVNX0gJMQorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KK0BAIC01MSw2ICs1MSwxNiBAQAogICNlbHNlCiAgIyBlcnJvciAiVW5rbm93biBieXRlIG9yZGVyIgogICNlbmRpZgpAQCAtMTQ5LDg5ICs4MCwxMSBAQAogIAogICNpZm5kZWYgTUFYCiAgI2RlZmluZSBNQVgobSwgbikgKChtKSA8IChuKSA/IChuKSA6IChtKSkKLWRpZmYgLS1naXQgYS9saWIveG1hbGxvYy5jIGIvbGliL3htYWxsb2MuYwotaW5kZXggMGNkZTM4NGYuLjIxN2IwNTQxIDEwMDY0NAotLS0tIGEvbGliL3htYWxsb2MuYwotKysrIGIvbGliL3htYWxsb2MuYwotQEAgLTMwLDcgKzMwLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9lbmQuYyBiL2xpYmFzbS9hc21fZW5kLmMKLWluZGV4IGNlZDI0ZjUwLi40YWQ5MThjNCAxMDA2NDQKLS0tLSBhL2xpYmFzbS9hc21fZW5kLmMKLSsrKyBiL2xpYmFzbS9hc21fZW5kLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS9saWJhc20vYXNtX25ld3Njbi5jIGIvbGliYXNtL2FzbV9uZXdzY24uYwotaW5kZXggZGRiYjI1ZGYuLjc0YTU5OGQ5IDEwMDY0NAotLS0tIGEvbGliYXNtL2FzbV9uZXdzY24uYwotKysrIGIvbGliYXNtL2FzbV9uZXdzY24uYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9nZW5kaXMuYyBiL2xpYmNwdS9pMzg2X2dlbmRpcy5jCi1pbmRleCBhYWU1ZWFlNi4uNmQ3NjAxNjUgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9nZW5kaXMuYwotKysrIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2xleC5jIGIvbGliY3B1L2kzODZfbGV4LmMKLWluZGV4IGJhNWY0YWE1Li5iMWU0MTkxNiAxMDA2NDQKLS0tLSBhL2xpYmNwdS9pMzg2X2xleC5jCi0rKysgYi9saWJjcHUvaTM4Nl9sZXguYwotQEAgLTU3Nyw3ICs1NzcsNyBAQCBjaGFyICppMzg2X3RleHQ7Ci0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gCi0gI2luY2x1ZGUgPGxpYmV1Lmg+Ci1kaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfcGFyc2UuYyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKLWluZGV4IDZmYTdjZTNkLi5iYjI3MDA2MSAxMDA2NDQKLS0tLSBhL2xpYmNwdS9pMzg2X3BhcnNlLmMKLSsrKyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKLUBAIC0xMDcsNyArMTA3LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KIGRpZmYgLS1naXQgYS9saWJkdy9NYWtlZmlsZS5hbSBiL2xpYmR3L01ha2VmaWxlLmFtCi1pbmRleCBmZjhjMjkxZS4uODllNzkyYWEgMTAwNjQ0CitpbmRleCA3YTNkNTMyLi43YWMxMjQxIDEwMDY0NAogLS0tIGEvbGliZHcvTWFrZWZpbGUuYW0KICsrKyBiL2xpYmR3L01ha2VmaWxlLmFtCi1AQCAtMTA1LDcgKzEwNSw4IEBAIGFtX2xpYmR3X3BpY19hX09CSkVDVFMgPSAkKGxpYmR3X2FfU09VUkNFUzouYz0ub3MpCitAQCAtMTA4LDcgKzEwOCw4IEBAIGFtX2xpYmR3X3BpY19hX09CSkVDVFMgPSAkKGxpYmR3X2FfU09VUkNFUzouYz0ub3MpCiAgbGliZHdfc29fTElCUyA9IGxpYmR3X3BpYy5hIC4uL2xpYmR3ZWxmL2xpYmR3ZWxmX3BpYy5hIFwKICAJICAuLi9saWJkd2ZsL2xpYmR3ZmxfcGljLmEgLi4vbGliZWJsL2xpYmVibC5hCiAgbGliZHdfc29fREVQUyA9IC4uL2xpYi9saWJldS5hIC4uL2xpYmVsZi9saWJlbGYuc28KQEAgLTI0MSwyMSArOTQsOCBAQAogIGxpYmR3X3NvX1NPVVJDRVMgPQogIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwICQobGliZHdfc29fTElCUykgJChsaWJkd19zb19ERVBTKQogICMgVGhlIHJwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgbGliZWJsIGJlY2F1c2UgaXRzICRPUklHSU4gdXNlIHdpbGwKLWRpZmYgLS1naXQgYS9saWJkdy9saWJkd19hbGxvYy5jIGIvbGliZHcvbGliZHdfYWxsb2MuYwotaW5kZXggMjhhOGNmNmUuLjI5YWViM2Y3IDEwMDY0NAotLS0tIGEvbGliZHcvbGliZHdfYWxsb2MuYwotKysrIGIvbGliZHcvbGliZHdfYWxsb2MuYwotQEAgLTMxLDcgKzMxLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgImxpYmR3UC5oIgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKLWluZGV4IGVlMGMxNjQ2Li5iMDZhYjU5NiAxMDA2NDQKK2luZGV4IGNjNmMzZjYuLmIwNmFiNTkgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYwogKysrIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKIEBAIC0zMSw2ICszMSw3IEBACkBAIC0yNjYsMTcgKzEwNiw4IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgotQEAgLTk5LDcgKzEwMCw3IEBAIF9fbGliZHdmbF9vcGVuX2J5X2J1aWxkX2lkIChEd2ZsX01vZHVsZSAqbW9kLCBib29sIGRlYnVnLCBjaGFyICoqZmlsZV9uYW1lLAotIAl7Ci0gCSAgaWYgKCpmaWxlX25hbWUgIT0gTlVMTCkKLSAJICAgIGZyZWUgKCpmaWxlX25hbWUpOwotLQkgICpmaWxlX25hbWUgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIChuYW1lKTsKLSsJICAqZmlsZV9uYW1lID0gcmVhbHBhdGggKG5hbWUsIE5VTEwpOwotIAkgIGlmICgqZmlsZV9uYW1lID09IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgICpmaWxlX25hbWUgPSBuYW1lOwogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWNjLi5jMzQ1Nzk3YSAxMDA2NDQKK2luZGV4IDdiY2Y2MWMuLmMzNDU3OTcgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwogKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKIEBAIC0xNDAsNiArMTQwLDcgQEAgX19saWJkd2ZsX3NldGVycm5vIChEd2ZsX0Vycm9yIGVycm9yKQpAQCAtMjk4LDcgKzEyOSw3IEBACiAgICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKICAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotaW5kZXggOTc3NWFjZWQuLjUxMWM0YTZhIDEwMDY0NAoraW5kZXggYWY2ODM4YS4uYzA3OWQ2YSAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwogKysrIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCiBAQCAtMzUsNiArMzUsNyBAQApAQCAtMzA5LDIxICsxNDAsOCBAQAogICNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIJLyogRFdBUkZfRV8qIHZhbHVlcyBhcmUgaGVyZS4gICovCiAgI2luY2x1ZGUgIi4uL2xpYmVsZi9saWJlbGZQLmgiCiAgI2luY2x1ZGUgInN5c3RlbS5oIgotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYyBiL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotaW5kZXggNmQ1YTQyYTYuLjkyNjc3ODhkIDEwMDY0NAotLS0tIGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi0rKysgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKLUBAIC0zODksNyArMzg5LDcgQEAgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAoRHdmbF9Nb2R1bGUgKm1vZCwKLSAgICAgICAvKiBJZiBGSUxFX05BTUUgaXMgYSBzeW1saW5rLCB0aGUgZGVidWcgZmlsZSBtaWdodCBiZSBhc3NvY2lhdGVkCi0gCSB3aXRoIHRoZSBzeW1saW5rIHRhcmdldCBuYW1lIGluc3RlYWQuICAqLwotIAotLSAgICAgIGNoYXIgKmNhbm9uID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoZmlsZV9uYW1lKTsKLSsgICAgICBjaGFyICpjYW5vbiA9IHJlYWxwYXRoIChmaWxlX25hbWUsIE5VTEwpOwotICAgICAgIGlmIChjYW5vbiAhPSBOVUxMICYmIHN0cmNtcCAoZmlsZV9uYW1lLCBjYW5vbikpCi0gCWZkID0gZmluZF9kZWJ1Z2luZm9faW5fcGF0aCAobW9kLCBjYW5vbiwKLSAJCQkJICAgICBkZWJ1Z2xpbmtfZmlsZSwgZGVidWdsaW5rX2NyYywKIGRpZmYgLS1naXQgYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwotaW5kZXggZjg0OTEyOGQuLjZmMGFjYTFiIDEwMDY0NAoraW5kZXggZjg0OTEyOC4uNmYwYWNhMSAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKICsrKyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKIEBAIC0yOSw2ICsyOSwxNSBAQApAQCAtMzQzLDcgKzE2MSw3IEBACiAgI2RlZmluZSBjcmMzMiBfX2xpYmR3ZmxfY3JjMzIKICAjaW5jbHVkZSA8bGliZHdmbFAuaD4KIGRpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLWluZGV4IDlkMGZlZjJjLi45ZmMwOWI4OCAxMDA2NDQKK2luZGV4IDlkMGZlZjIuLjlmYzA5YjggMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKICsrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwogQEAgLTQwLDYgKzQwLDcgQEAKQEAgLTM1NCwyMSArMTcyLDggQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KLWRpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1pbmRleCA1MzcxMzk2My4uMmU2NmRmZGQgMTAwNjQ0Ci0tLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliZWxmUC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IDVjZjJiOTM0Li45OTBiM2FmYiAxMDA2NDQKK2luZGV4IDVkYzYzMmIuLjE0ZGExYjcgMTAwNjQ0CiAtLS0gYS9saWJlbGYvZWxmLmgKICsrKyBiL2xpYmVsZi9lbGYuaAogQEAgLTIxLDcgKzIxLDkgQEAKQEAgLTM4Miw5ICsxODcsOSBAQAogIAogIC8qIFN0YW5kYXJkIEVMRiB0eXBlcy4gICovCiAgCi1AQCAtMzcwNSw2ICszNzA3LDggQEAgZW51bQotICNkZWZpbmUgUl9CUEZfTk9ORQkJMAkvKiBObyByZWxvYyAqLwotICNkZWZpbmUgUl9CUEZfTUFQX0ZECQkxCS8qIE1hcCBmZCB0byBwb2ludGVyICovCitAQCAtMzkzNyw2ICszOTM5LDggQEAgZW51bQorICNkZWZpbmUgUl9NRVRBR19UTFNfTEVfSEkxNgk2MAorICNkZWZpbmUgUl9NRVRBR19UTFNfTEVfTE8xNgk2MQogIAogLV9fRU5EX0RFQ0xTCiArI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zOTMsNyArMTk4LDcgQEAKICAKICAjZW5kaWYJLyogZWxmLmggKi8KIGRpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmLmggYi9saWJlbGYvbGliZWxmLmgKLWluZGV4IDU0N2MwZjUwLi5kZDc4Nzk5ZSAxMDA2NDQKK2luZGV4IGQxMTM1OGMuLjRjZjkyNzIgMTAwNjQ0CiAtLS0gYS9saWJlbGYvbGliZWxmLmgKICsrKyBiL2xpYmVsZi9saWJlbGYuaAogQEAgLTI5LDYgKzI5LDcgQEAKQEAgLTQwNSw3ICsyMTAsNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAKIGRpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmUC5oIGIvbGliZWxmL2xpYmVsZlAuaAotaW5kZXggN2VlNjYyNWEuLjU4NDA4OTk3IDEwMDY0NAoraW5kZXggZWQyMTZjOC4uNDE1ZTZmNiAxMDA2NDQKIC0tLSBhL2xpYmVsZi9saWJlbGZQLmgKICsrKyBiL2xpYmVsZi9saWJlbGZQLmgKIEBAIC0zMiw2ICszMiw3IEBACkBAIC00MTYsNjE0ICsyMjEsNiBAQAogIAogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxzdGRib29sLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2FkZHIybGluZS5jIGIvc3JjL2FkZHIybGluZS5jCi1pbmRleCA0NDRlZTUyYy4uOTU5NmZhNjcgMTAwNjQ0Ci0tLS0gYS9zcmMvYWRkcjJsaW5lLmMKLSsrKyBiL3NyYy9hZGRyMmxpbmUuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmR3ZmwuaD4KLWRpZmYgLS1naXQgYS9zcmMvYXIuYyBiL3NyYy9hci5jCi1pbmRleCBlYzMyY2VlNS4uNGVmZDcyOWMgMTAwNjQ0Ci0tLS0gYS9zcmMvYXIuYwotKysrIGIvc3JjL2FyLmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS9zcmMvYXJsaWIuYyBiL3NyYy9hcmxpYi5jCi1pbmRleCBlMDgzOWFhYi4uMTE0MzY1OGYgMTAwNjQ0Ci0tLS0gYS9zcmMvYXJsaWIuYwotKysrIGIvc3JjL2FybGliLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2FybGliMi5jIGIvc3JjL2FybGliMi5jCi1pbmRleCA1NTNmYzU3Yi4uNDY0NDNkMGUgMTAwNjQ0Ci0tLS0gYS9zcmMvYXJsaWIyLmMKLSsrKyBiL3NyYy9hcmxpYjIuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmNtcC5jIGIvc3JjL2VsZmNtcC5jCi1pbmRleCA1MDQ2NDIwNy4uY2ZmMTgzZmEgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmY21wLmMKLSsrKyBiL3NyYy9lbGZjbXAuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKLWluZGV4IGRmMWIzYTAzLi42N2Q4ZDEzNCAxMDA2NDQKLS0tLSBhL3NyYy9lbGZsaW50LmMKLSsrKyBiL3NyYy9lbGZsaW50LmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxieXRlc3dhcC5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvZmluZHRleHRyZWwuYyBiL3NyYy9maW5kdGV4dHJlbC5jCi1pbmRleCA4ZjFlMjM5YS4uNzE0NjNhZjMgMTAwNjQ0Ci0tLS0gYS9zcmMvZmluZHRleHRyZWwuYwotKysrIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmR3Lmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL25tLmMgYi9zcmMvbm0uYwotaW5kZXggOTY5YzZkMzUuLjMxMTNjMDRjIDEwMDY0NAotLS0tIGEvc3JjL25tLmMKLSsrKyBiL3NyYy9ubS5jCi1AQCAtMjYsNyArMjYsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCi1pbmRleCAwZGQ5YTZhYS4uOWM4YmYxNDkgMTAwNjQ0Ci0tLS0gYS9zcmMvb2JqZHVtcC5jCi0rKysgYi9zcmMvb2JqZHVtcC5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3JhbmxpYi5jIGIvc3JjL3JhbmxpYi5jCi1pbmRleCBjYzBlZTIzMy4uYWU4NTFlNDAgMTAwNjQ0Ci0tLS0gYS9zcmMvcmFubGliLmMKLSsrKyBiL3NyYy9yYW5saWIuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCi1pbmRleCA2YTI3ZTdlMC4uNDc1OWE5NjUgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVhZGVsZi5jCi0rKysgYi9zcmMvcmVhZGVsZi5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9zaXplLmMgYi9zcmMvc2l6ZS5jCi1pbmRleCBhZDhkYmNiYi4uZmQ4M2JlMDYgMTAwNjQ0Ci0tLS0gYS9zcmMvc2l6ZS5jCi0rKysgYi9zcmMvc2l6ZS5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3N0YWNrLmMgYi9zcmMvc3RhY2suYwotaW5kZXggNmYyZmY2OWYuLjZkYTAyNDNkIDEwMDY0NAotLS0tIGEvc3JjL3N0YWNrLmMKLSsrKyBiL3NyYy9zdGFjay5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3NyYy9zdHJpbmdzLmMgYi9zcmMvc3RyaW5ncy5jCi1pbmRleCAwM2QwZjEzMy4uNWMzMTFjYmQgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaW5ncy5jCi0rKysgYi9zcmMvc3RyaW5ncy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCi1pbmRleCBjNzgzMGVjNi4uMGQ3ZjE0OGQgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaXAuYwotKysrIGIvc3JjL3N0cmlwLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxieXRlc3dhcC5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCi1pbmRleCA1MDc0OTA5My4uM2Q0Zjk1MjUgMTAwNjQ0Ci0tLS0gYS9zcmMvdW5zdHJpcC5jCi0rKysgYi9zcmMvdW5zdHJpcC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvYWRkcnNjb3Blcy5jIGIvdGVzdHMvYWRkcnNjb3Blcy5jCi1pbmRleCA3OTE1NjlmNS4uNTRmNDMxMWIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9hZGRyc2NvcGVzLmMKLSsrKyBiL3Rlc3RzL2FkZHJzY29wZXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2FsbHJlZ3MuYyBiL3Rlc3RzL2FsbHJlZ3MuYwotaW5kZXggMjg2ZjdlM2MuLmM5ZGUwODk3IDEwMDY0NAotLS0tIGEvdGVzdHMvYWxscmVncy5jCi0rKysgYi90ZXN0cy9hbGxyZWdzLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCi1pbmRleCBhMzg3ZDhmZi4uOTU1YzI3ZDEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCi0rKysgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKLWRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyBiL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi1pbmRleCAyZGM4YTlhMi4uMjRjYTdmYjAgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCi1pbmRleCBmNWRkNzYxZi4uYTkzYThmMDMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9iYWNrdHJhY2UuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpZmRlZiBfX2xpbnV4X18KLWRpZmYgLS1naXQgYS90ZXN0cy9idWlsZGlkLmMgYi90ZXN0cy9idWlsZGlkLmMKLWluZGV4IDg3YzE4NzczLi4yOTUzZTZiYiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2J1aWxkaWQuYwotKysrIGIvdGVzdHMvYnVpbGRpZC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihlbGYpCi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1pbmRleCA2ZDk3ZDUwMC4uZWU3ZTU1OWUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwotKysrIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3KQotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGVidWdsaW5rLmMgYi90ZXN0cy9kZWJ1Z2xpbmsuYwotaW5kZXggOTM1ZDEwMjkuLjc0MWNiODE0IDEwMDY0NAotLS0tIGEvdGVzdHMvZGVidWdsaW5rLmMKLSsrKyBiL3Rlc3RzL2RlYnVnbGluay5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGVsZXRlZC5jIGIvdGVzdHMvZGVsZXRlZC5jCi1pbmRleCA2YmUzNWJjMi4uMDE5MDcxMTMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kZWxldGVkLmMKLSsrKyBiL3Rlc3RzL2RlbGV0ZWQuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCi1pbmRleCAyMWU0NzBhMy4uMWVhMWUzYjIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCi0rKysgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKLWluZGV4IGFhODAzMGUxLi4wMmM4YmVmOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwotKysrIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi1AQCAtMjAsNyArMjAsNyBAQAotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyBiL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotaW5kZXggNjg5Y2RkNzkuLjU5NzNkYTM5IDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi0rKysgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyBiL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotaW5kZXggMWVlOTg5ZjguLmZkNjJlNjUzIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi0rKysgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAKLSBzdGF0aWMgY29uc3QgRHdmbF9DYWxsYmFja3MgY2FsbGJhY2tzID0KLSAgIHsKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCi1pbmRleCBhNGU5N2QzYy4uZjQ3MTU4N2MgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotKysrIGIvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbGluZXMuYyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCi1pbmRleCA5MDM3OWRkMi4uY2JkZjZjNGMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsbGluZXMuYwotKysrIGIvdGVzdHMvZHdmbGxpbmVzLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gaW50Ci0gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbW9kdGVzdC5jIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwotaW5kZXggMDAyN2Y5NmIuLmU2OGQzYmNhIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbG1vZHRlc3QuYwotKysrIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbHN5bXMuYyBiL3Rlc3RzL2R3ZmxzeW1zLmMKLWluZGV4IDQ5YWMzMzQ2Li5jZjA3ODMwMSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmxzeW1zLmMKLSsrKyBiL3Rlc3RzL2R3ZmxzeW1zLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotIHN0YXRpYyBjb25zdCBjaGFyICoKLWRpZmYgLS1naXQgYS90ZXN0cy9lYXJseS1vZmZzY24uYyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi1pbmRleCA5MjRjYjllZi4uNmY2MGQ1YTMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9lYXJseS1vZmZzY24uYwotKysrIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZWNwLmMgYi90ZXN0cy9lY3AuYwotaW5kZXggMzhhNjg1OWUuLjc0M2NlYTVkIDEwMDY0NAotLS0tIGEvdGVzdHMvZWNwLmMKLSsrKyBiL3Rlc3RzL2VjcC5jCi1AQCAtMjAsNyArMjAsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jIGIvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYwotaW5kZXggYmE4YWUzNzEuLjc2ZjVmMDQ3IDEwMDY0NAotLS0tIGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYwotKysrIGIvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3JldHZhbC5jIGIvdGVzdHMvZnVuY3JldHZhbC5jCi1pbmRleCA4ZDE5ZDExNy4uYzhhYWE5M2QgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mdW5jcmV0dmFsLmMKLSsrKyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3Njb3Blcy5jIGIvdGVzdHMvZnVuY3Njb3Blcy5jCi1pbmRleCA5YzkwMTg1OC4uZGJjY2I4OWUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mdW5jc2NvcGVzLmMKLSsrKyBiL3Rlc3RzL2Z1bmNzY29wZXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZ2V0c3JjX2RpZS5jIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCi1pbmRleCAwNTVhZWRlMC4uOWMzOTRkZDAgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9nZXRzcmNfZGllLmMKLSsrKyBiL3Rlc3RzL2dldHNyY19kaWUuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZi5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpbmUyYWRkci5jIGIvdGVzdHMvbGluZTJhZGRyLmMKLWluZGV4IGUwZDY1ZDNkLi45YmYwMDIzYiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpbmUyYWRkci5jCi0rKysgYi90ZXN0cy9saW5lMmFkZHIuYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gCi0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS90ZXN0cy9sb3dfaGlnaF9wYy5jIGIvdGVzdHMvbG93X2hpZ2hfcGMuYwotaW5kZXggZDBmNDMwMjMuLjhkYTRmYmRmIDEwMDY0NAotLS0tIGEvdGVzdHMvbG93X2hpZ2hfcGMuYwotKysrIGIvdGVzdHMvbG93X2hpZ2hfcGMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi1pbmRleCBkNTAzNTVlOS4uM2M0MWY0MGIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKLSsrKyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotICNpbmNsdWRlICJtZDUuaCIKLSAjaW5jbHVkZSAic2hhMS5oIgotZGlmZiAtLWdpdCBhL3Rlc3RzL3Jkd3JtbWFwLmMgYi90ZXN0cy9yZHdybW1hcC5jCi1pbmRleCA2ZjAyN2RmZS4uMWNlNWU2ZWQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9yZHdybW1hcC5jCi0rKysgYi90ZXN0cy9yZHdybW1hcC5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvc2FyaWR4LmMgYi90ZXN0cy9zYXJpZHguYwotaW5kZXggOGE0NTBkODIuLmIzODc4MDEzIDEwMDY0NAotLS0tIGEvdGVzdHMvc2FyaWR4LmMKLSsrKyBiL3Rlc3RzL3NhcmlkeC5jCi1AQCAtMTcsNyArMTcsNyBAQAotIAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9zZWN0aW9uZHVtcC5jIGIvdGVzdHMvc2VjdGlvbmR1bXAuYwotaW5kZXggMzAzM2ZlZGMuLjhlODg4ZGIzIDEwMDY0NAotLS0tIGEvdGVzdHMvc2VjdGlvbmR1bXAuYwotKysrIGIvdGVzdHMvc2VjdGlvbmR1bXAuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdmFybG9jcy5jIGIvdGVzdHMvdmFybG9jcy5jCi1pbmRleCBjM2ZiYTg5ZS4uZTA0M2VhMmMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy92YXJsb2NzLmMKLSsrKyBiL3Rlc3RzL3ZhcmxvY3MuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdmRzb3N5bXMuYyBiL3Rlc3RzL3Zkc29zeW1zLmMKLWluZGV4IGI4NzZjMTBiLi5hZmIyODIzMiAxMDA2NDQKLS0tLSBhL3Rlc3RzL3Zkc29zeW1zLmMKLSsrKyBiL3Rlc3RzL3Zkc29zeW1zLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2gKaW5kZXggZTAyOTFiNC4uOGM0OGY0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApAQCAtMSwzICsxLDYgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIEZyb20gNzdjYjRhNTNjMjcwZDU4NTRkM2FmMjRmMTk1NDdiYzNkZTgyNTIzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphbWVzIENvd2dpbGwgPGphbWVzNDEwQGNvd2dpbGwub3JnLnVrPgogRGF0ZTogTW9uLCA1IEphbiAyMDE1IDE1OjE2OjU4ICswMDAwCkBAIC04LDEwICsxMSw2IEBACiBrZXJuZWwgd2lsbCBub3QgbG9hZCBiaW5hcmllcyBjb250YWluaW5nIGl0KS4KIAogU2lnbmVkLW9mZi1ieTogSmFtZXMgQ293Z2lsbCA8amFtZXM0MTBAY293Z2lsbC5vcmcudWs+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCiAtLS0KICBiYWNrZW5kcy9taXBzX2luaXQuYyB8IDYgKy0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtYXJtX2JhY2tlbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1hcm1fYmFja2VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWQ4MTE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtYXJtX2JhY2tlbmQucGF0Y2gKQEAgLTAsMCArMSw2MjcgQEAKK0Zyb20gYTk1ZjM3MGJjMjY5MGMxNTBjNDZmMjE1NTQzZGUyNzg0Njk5MDBlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTU6NDI6MzkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJtX2JhY2tlbmQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KK2FybV9iYWNrZW5kLmRpZmYgYW5kIHJlYmFzZSB0byAwLjE3MgorCitodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLTAuNS5kZWJpYW4udGFyLnh6CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhY2tlbmRzL2FybV9pbml0LmMgICAgICAgICAgICAgICAgIHwgIDE4ICsrKystCisgYmFja2VuZHMvYXJtX3JlZ3MuYyAgICAgICAgICAgICAgICAgfCAxMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvYXJtX3JldHZhbC5jICAgICAgICAgICAgICAgfCAgNDMgKysrKysrKysrKystCisgYmFja2VuZHMvbGliZWJsX2FybS5oICAgICAgICAgICAgICAgfCAgIDkgKysrCisgbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKysrCisgdGVzdHMvcnVuLWFkZHJjZmkuc2ggICAgICAgICAgICAgICAgfCAgOTMgKysrKysrKysrKysrKysrKysrKysrKysrLQorIHRlc3RzL3J1bi1hbGxyZWdzLnNoICAgICAgICAgICAgICAgIHwgIDk1ICsrKysrKysrKysrKysrKysrKysrKysrKystCisgdGVzdHMvcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2ggfCAgMTEgKystCisgOCBmaWxlcyBjaGFuZ2VkLCA0MDAgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL2xpYmVibF9hcm0uaAorCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvYXJtX2luaXQuYyBiL2JhY2tlbmRzL2FybV9pbml0LmMKK2luZGV4IGYyYjFiMTEuLjFiNzFmMTYgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9hcm1faW5pdC5jCisrKysgYi9iYWNrZW5kcy9hcm1faW5pdC5jCitAQCAtMzUsMjAgKzM1LDMxIEBACisgI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9BUk1fCisgI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKyAKKysjaW5jbHVkZSAibGliZWJsX2FybS5oIgorKworIC8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIGFybV9yZWxvYy5kZWYuICAqLworICNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKKyAKKyAKKyBjb25zdCBjaGFyICoKKy1hcm1faW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorK2FybV9pbml0IChFbGYgKmVsZiwKKyAJICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgCSAgRWJsICplaCwKKyAJICBzaXplX3QgZWhsZW4pCisgeworKyAgaW50IHNvZnRfZmxvYXQgPSAwOworKworICAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCisgICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCisgICAgIHJldHVybiBOVUxMOworIAorKyAgaWYgKGVsZikgeworKyAgICBHRWxmX0VoZHIgZWhkcl9tZW07CisrICAgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWxmLCAmZWhkcl9tZW0pOworKyAgICBpZiAoZWhkciAmJiAoZWhkci0+ZV9mbGFncyAmIEVGX0FSTV9TT0ZUX0ZMT0FUKSkKKysgICAgICBzb2Z0X2Zsb2F0ID0gMTsKKysgIH0KKysKKyAgIC8qIFdlIGhhbmRsZSBpdC4gICovCisgICBlaC0+bmFtZSA9ICJBUk0iOworICAgYXJtX2luaXRfcmVsb2MgKGVoKTsKK0BAIC02MCw3ICs3MSwxMCBAQCBhcm1faW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorICAgSE9PSyAoZWgsIGNvcmVfbm90ZSk7CisgICBIT09LIChlaCwgYXV4dl9pbmZvKTsKKyAgIEhPT0sgKGVoLCBjaGVja19vYmplY3RfYXR0cmlidXRlKTsKKy0gIEhPT0sgKGVoLCByZXR1cm5fdmFsdWVfbG9jYXRpb24pOworKyAgaWYgKHNvZnRfZmxvYXQpCisrICAgIGVoLT5yZXR1cm5fdmFsdWVfbG9jYXRpb24gPSBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX3NvZnQ7CisrICBlbHNlCisrICAgIGVoLT5yZXR1cm5fdmFsdWVfbG9jYXRpb24gPSBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX2hhcmQ7CisgICBIT09LIChlaCwgYWJpX2NmaSk7CisgICBIT09LIChlaCwgY2hlY2tfcmVsb2NfdGFyZ2V0X3R5cGUpOworICAgSE9PSyAoZWgsIHN5bWJvbF90eXBlX25hbWUpOworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZWdzLmMgYi9iYWNrZW5kcy9hcm1fcmVncy5jCitpbmRleCBhNDZhNGM5Li40MThjOTMxIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYXJtX3JlZ3MuYworKysrIGIvYmFja2VuZHMvYXJtX3JlZ3MuYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPGR3YXJmLmg+CisgCisgI2RlZmluZSBCQUNLRU5EIGFybV8KK0BAIC03Niw2ICs3Nyw5IEBAIGFybV9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgMTYgKyAwIC4uLiAxNiArIDc6CisrICAgICAgLyogQUFEV0FSRiBzYXlzIHRoYXQgdGhlcmUgYXJlIG5vIHJlZ2lzdGVycyBpbiB0aGF0IHJhbmdlLAorKyAgICAgICAqIGJ1dCBnY2MgbWFwcyBGUEEgcmVnaXN0ZXJzIGhlcmUKKysgICAgICAgKi8KKyAgICAgICByZWdubyArPSA5NiAtIDE2OworICAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIDk2ICsgMCAuLi4gOTYgKyA3OgorQEAgLTg3LDExICs5MSwxMzkgQEAgYXJtX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAgICAgICBuYW1lbGVuID0gMjsKKyAgICAgICBicmVhazsKKyAKKysgICAgY2FzZSA2NCArIDAgLi4uIDY0ICsgOToKKysgICAgICAqc2V0bmFtZSA9ICJWRlAiOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7CisrICAgICAgbmFtZVswXSA9ICdzJzsKKysgICAgICBuYW1lWzFdID0gcmVnbm8gLSA2NCArICcwJzsKKysgICAgICBuYW1lbGVuID0gMjsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSA2NCArIDEwIC4uLiA2NCArIDMxOgorKyAgICAgICpzZXRuYW1lID0gIlZGUCI7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKKysgICAgICBuYW1lWzBdID0gJ3MnOworKyAgICAgIG5hbWVbMV0gPSAocmVnbm8gLSA2NCkgLyAxMCArICcwJzsKKysgICAgICBuYW1lWzJdID0gKHJlZ25vIC0gNjQpICUgMTAgKyAnMCc7CisrICAgICAgbmFtZWxlbiA9IDM7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgMTA0ICsgMCAuLi4gMTA0ICsgNzoKKysgICAgICAvKiBYWFggVE9ETzoKKysgICAgICAgKiBUaGlzIGNhbiBiZSBlaXRoZXIgaW50ZWwgd2lyZWxlc3MgTU1YIGdlbmVyYWwgcHVycG9zZS9jb250cm9sCisrICAgICAgICogcmVnaXN0ZXJzIG9yIHhzY2FsZSBhY2N1bXVsYXRvciwgd2hpY2ggaGF2ZSBkaWZmZXJlbnQgdXNhZ2UuCisrICAgICAgICogV2Ugb25seSBoYXZlIHRoZSBpbnRlbCB3aXJlbGVzcyBNTVggaGVyZSBub3cuCisrICAgICAgICogVGhlIG5hbWUgbmVlZHMgdG8gYmUgY2hhbmdlZCBmb3IgdGhlIHhzY2FsZSBhY2N1bXVsYXRvciB0b28uICovCisrICAgICAgKnNldG5hbWUgPSAiTU1YIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIG1lbWNweShuYW1lLCAid2NnciIsIDQpOworKyAgICAgIG5hbWVbNF0gPSByZWdubyAtIDEwNCArICcwJzsKKysgICAgICBuYW1lbGVuID0gNTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSAxMTIgKyAwIC4uLiAxMTIgKyA5OgorKyAgICAgICpzZXRuYW1lID0gIk1NWCI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgKmJpdHMgPSA2NDsKKysgICAgICBuYW1lWzBdID0gJ3cnOworKyAgICAgIG5hbWVbMV0gPSAncic7CisrICAgICAgbmFtZVsyXSA9IHJlZ25vIC0gMTEyICsgJzAnOworKyAgICAgIG5hbWVsZW4gPSAzOworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIDExMiArIDEwIC4uLiAxMTIgKyAxNToKKysgICAgICAqc2V0bmFtZSA9ICJNTVgiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOworKyAgICAgICpiaXRzID0gNjQ7CisrICAgICAgbmFtZVswXSA9ICd3JzsKKysgICAgICBuYW1lWzFdID0gJ3InOworKyAgICAgIG5hbWVbMl0gPSAnMSc7CisrICAgICAgbmFtZVszXSA9IHJlZ25vIC0gMTEyIC0gMTAgKyAnMCc7CisrICAgICAgbmFtZWxlbiA9IDQ7CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgMTI4OgorKyAgICAgICpzZXRuYW1lID0gInN0YXRlIjsKKyAgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKyAgICAgICByZXR1cm4gc3RwY3B5IChuYW1lLCAic3BzciIpICsgMSAtIG5hbWU7CisgCisrICAgIGNhc2UgMTI5OgorKyAgICAgICpzZXRuYW1lID0gInN0YXRlIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICByZXR1cm4gc3RwY3B5KG5hbWUsICJzcHNyX2ZpcSIpICsgMSAtIG5hbWU7CisrCisrICAgIGNhc2UgMTMwOgorKyAgICAgICpzZXRuYW1lID0gInN0YXRlIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICByZXR1cm4gc3RwY3B5KG5hbWUsICJzcHNyX2lycSIpICsgMSAtIG5hbWU7CisrCisrICAgIGNhc2UgMTMxOgorKyAgICAgICpzZXRuYW1lID0gInN0YXRlIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICByZXR1cm4gc3RwY3B5KG5hbWUsICJzcHNyX2FidCIpICsgMSAtIG5hbWU7CisrCisrICAgIGNhc2UgMTMyOgorKyAgICAgICpzZXRuYW1lID0gInN0YXRlIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICByZXR1cm4gc3RwY3B5KG5hbWUsICJzcHNyX3VuZCIpICsgMSAtIG5hbWU7CisrCisrICAgIGNhc2UgMTMzOgorKyAgICAgICpzZXRuYW1lID0gInN0YXRlIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICByZXR1cm4gc3RwY3B5KG5hbWUsICJzcHNyX3N2YyIpICsgMSAtIG5hbWU7CisrCisrICAgIGNhc2UgMTQ0IC4uLiAxNTA6CisrICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF91c3IiLCByZWdubyAtIDE0NCArIDgpICsgMTsKKysKKysgICAgY2FzZSAxNTEgLi4uIDE1NzoKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX2ZpcSIsIHJlZ25vIC0gMTUxICsgOCkgKyAxOworKworKyAgICBjYXNlIDE1OCAuLi4gMTU5OgorKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfaXJxIiwgcmVnbm8gLSAxNTggKyAxMykgKyAxOworKworKyAgICBjYXNlIDE2MCAuLi4gMTYxOgorKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfYWJ0IiwgcmVnbm8gLSAxNjAgKyAxMykgKyAxOworKworKyAgICBjYXNlIDE2MiAuLi4gMTYzOgorKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfdW5kIiwgcmVnbm8gLSAxNjIgKyAxMykgKyAxOworKworKyAgICBjYXNlIDE2NCAuLi4gMTY1OgorKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfc3ZjIiwgcmVnbm8gLSAxNjQgKyAxMykgKyAxOworKworKyAgICBjYXNlIDE5MiAuLi4gMTk5OgorKyAgICAgKnNldG5hbWUgPSAiTU1YIjsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOworKyAgICAgIG5hbWVbMF0gPSAndyc7CisrICAgICAgbmFtZVsxXSA9ICdjJzsKKysgICAgICBuYW1lWzJdID0gcmVnbm8gLSAxOTIgKyAnMCc7CisrICAgICAgbmFtZWxlbiA9IDM7CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgMjU2ICsgMCAuLi4gMjU2ICsgOToKKysgICAgICAvKiBYWFggVE9ETzogTmVvbiBhbHNvIHVzZXMgdGhvc2UgcmVnaXN0ZXJzIGFuZCBjYW4gY29udGFpbgorKyAgICAgICAqIGJvdGggZmxvYXQgYW5kIGludGVnZXJzICovCisgICAgICAgKnNldG5hbWUgPSAiVkZQIjsKKyAgICAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKKyAgICAgICAqYml0cyA9IDY0OworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYyBiL2JhY2tlbmRzL2FybV9yZXR2YWwuYworaW5kZXggMWMyOGYwMS4uMzEzZTRlYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCitAQCAtNDgsNiArNDgsMTMgQEAgc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19pbnRyZWdbXSA9CisgI2RlZmluZSBubG9jX2ludHJlZwkxCisgI2RlZmluZSBubG9jX2ludHJlZ3MobikJKDIgKiAobikpCisgCisrLyogZjEgICovIC8qIFhYWCBUT0RPOiBmMCBjYW4gYWxzbyBoYXZlIG51bWJlciA5NiBpZiBwcm9ncmFtIHdhcyBjb21waWxlZCB3aXRoIC1tYWJpPWFhcGNzICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzE2IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19mcHJlZyAgMQorKworIC8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQorICAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKKyAgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluIHIwLiAgKi8KK0BAIC01OCw4ICs2NSw5IEBAIHN0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfYWdncmVnYXRlW10gPQorICNkZWZpbmUgbmxvY19hZ2dyZWdhdGUgMQorIAorIAorLWludAorLWFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKytzdGF0aWMgaW50CisrYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCwKKysJCSAgICAgICAgICAgIGludCBzb2Z0X2Zsb2F0KQorIHsKKyAgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCisgICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KK0BAIC05OCw2ICsxMDYsMjEgQEAgYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgICAgZWxzZQorIAkgICAgICByZXR1cm4gLTE7CisgCSAgfQorKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCisrCSAgeworKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKKysJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKKysJCQkJICZhdHRyX21lbSksICZlbmNvZGluZykgIT0gMCkKKysJICAgICAgcmV0dXJuIC0xOworKworKwkgICAgaWYgKChlbmNvZGluZyA9PSBEV19BVEVfZmxvYXQpICYmICFzb2Z0X2Zsb2F0KQorKwkgICAgICB7CisrCQkqbG9jcCA9IGxvY19mcHJlZzsKKysJCWlmIChzaXplIDw9IDgpCisrCQkgIHJldHVybiBubG9jX2ZwcmVnOworKwkJZ290byBhZ2dyZWdhdGU7CisrCSAgICAgIH0KKysJICB9CisgCWlmIChzaXplIDw9IDE2KQorIAkgIHsKKyAJICBpbnRyZWc6CitAQCAtMTA2LDYgKzEyOSw3IEBAIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB9CisgCisgICAgICAgYWdncmVnYXRlOgorKwkvKiBYWFggVE9ETyBzb21ldGltZXMgYWdncmVnYXRlcyBhcmUgcmV0dXJuZWQgaW4gcjAgKC1tYWJpPWFhcGNzKSAqLworIAkqbG9jcCA9IGxvY19hZ2dyZWdhdGU7CisgCXJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKKyAgICAgICB9CitAQCAtMTI1LDMgKzE0OSwxOCBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLworICAgcmV0dXJuIC0yOworIH0KKysKKysvKiByZXR1cm4gbG9jYXRpb24gZm9yIC1tYWJpPWFwY3MtZ251IC1tc29mdC1mbG9hdCAqLworK2ludAorK2FybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fc29mdCAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorK3sKKysgICByZXR1cm4gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKGZ1bmN0eXBlZGllLCBsb2NwLCAxKTsKKyt9CisrCisrLyogcmV0dXJuIGxvY2F0aW9uIGZvciAtbWFiaT1hcGNzLWdudSAtbWhhcmQtZmxvYXQgKGN1cnJlbnQgZGVmYXVsdCkgKi8KKytpbnQKKythcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX2hhcmQgKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyt7CisrICAgcmV0dXJuIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMCk7CisrfQorKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2xpYmVibF9hcm0uaCBiL2JhY2tlbmRzL2xpYmVibF9hcm0uaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmMwMDc3MGMKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL2xpYmVibF9hcm0uaAorQEAgLTAsMCArMSw5IEBACisrI2lmbmRlZiBfTElCRUJMX0FSTV9ICisrI2RlZmluZSBfTElCRUJMX0FSTV9IIDEKKysKKysjaW5jbHVkZSA8bGliZHcuaD4KKysKKytleHRlcm4gaW50IGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fc29mdChEd2FyZl9EaWUgKiwgY29uc3QgRHdhcmZfT3AgKipsb2NwKTsKKytleHRlcm4gaW50IGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25faGFyZChEd2FyZl9EaWUgKiwgY29uc3QgRHdhcmZfT3AgKipsb2NwKTsKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKK2luZGV4IDZjOWY2MWUuLjZkODJmZWYgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmLmgKKysrKyBiL2xpYmVsZi9lbGYuaAorQEAgLTI2OTIsNiArMjY5Miw5IEBAIGVudW0KKyAjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjQJMHgwNDAwMDAwMAorICNkZWZpbmUgRUZfQVJNX0VBQklfVkVSNQkweDA1MDAwMDAwCisgCisrLyogRUlfT1NBQkkgdmFsdWVzICovCisrI2RlZmluZSBFTEZPU0FCSV9BUk1fQUVBQkkgICAgNjQgICAgICAvKiBDb250YWlucyBzeW1ib2wgdmVyc2lvbmluZy4gKi8KKysKKyAvKiBBZGRpdGlvbmFsIHN5bWJvbCB0eXBlcyBmb3IgVGh1bWIuICAqLworICNkZWZpbmUgU1RUX0FSTV9URlVOQwkJU1RUX0xPUFJPQyAvKiBBIFRodW1iIGZ1bmN0aW9uLiAgKi8KKyAjZGVmaW5lIFNUVF9BUk1fMTZCSVQJCVNUVF9ISVBST0MgLyogQSBUaHVtYiBsYWJlbC4gICovCitAQCAtMjcwOSwxMiArMjcxMiwxOSBAQCBlbnVtCisgCisgLyogUHJvY2Vzc29yIHNwZWNpZmljIHZhbHVlcyBmb3IgdGhlIFBoZHIgcF90eXBlIGZpZWxkLiAgKi8KKyAjZGVmaW5lIFBUX0FSTV9FWElEWAkJKFBUX0xPUFJPQyArIDEpCS8qIEFSTSB1bndpbmQgc2VnbWVudC4gICovCisrI2RlZmluZSBQVF9BUk1fVU5XSU5ECQlQVF9BUk1fRVhJRFgKKyAKKyAvKiBQcm9jZXNzb3Igc3BlY2lmaWMgdmFsdWVzIGZvciB0aGUgU2hkciBzaF90eXBlIGZpZWxkLiAgKi8KKyAjZGVmaW5lIFNIVF9BUk1fRVhJRFgJCShTSFRfTE9QUk9DICsgMSkgLyogQVJNIHVud2luZCBzZWN0aW9uLiAgKi8KKyAjZGVmaW5lIFNIVF9BUk1fUFJFRU1QVE1BUAkoU0hUX0xPUFJPQyArIDIpIC8qIFByZWVtcHRpb24gZGV0YWlscy4gICovCisgI2RlZmluZSBTSFRfQVJNX0FUVFJJQlVURVMJKFNIVF9MT1BST0MgKyAzKSAvKiBBUk0gYXR0cmlidXRlcyBzZWN0aW9uLiAgKi8KKyAKKysvKiBQcm9jZXNzb3Igc3BlY2lmaWMgdmFsdWVzIGZvciB0aGUgRHluIGRfdGFnIGZpZWxkLiAgKi8KKysjZGVmaW5lIERUX0FSTV9SRVNFUlZFRDEJKERUX0xPUFJPQyArIDApCisrI2RlZmluZSBEVF9BUk1fU1lNVEFCU1oJCShEVF9MT1BST0MgKyAxKQorKyNkZWZpbmUgRFRfQVJNX1BSRUVNVE1BQgkoRFRfTE9QUk9DICsgMikKKysjZGVmaW5lIERUX0FSTV9SRVNFUlZFRDIJKERUX0xPUFJPQyArIDMpCisrI2RlZmluZSBEVF9BUk1fTlVNCQk0CisgCisgLyogQUFyY2g2NCByZWxvY3MuICAqLworIAorQEAgLTMwMDcsNiArMzAxNyw3IEBAIGVudW0KKyAJCQkJCSAgIFRMUyBibG9jayAoTERSLCBTVFIpLiAgKi8KKyAjZGVmaW5lIFJfQVJNX1RMU19JRTEyR1AJMTExCS8qIDEyIGJpdCBHT1QgZW50cnkgcmVsYXRpdmUKKyAJCQkJCSAgIHRvIEdPVCBvcmlnaW4gKExEUikuICAqLworKy8qIDExMiAtIDEyNyBwcml2YXRlIHJhbmdlICovCisgI2RlZmluZSBSX0FSTV9NRV9UT08JCTEyOAkvKiBPYnNvbGV0ZS4gICovCisgI2RlZmluZSBSX0FSTV9USE1fVExTX0RFU0NTRVEJMTI5CisgI2RlZmluZSBSX0FSTV9USE1fVExTX0RFU0NTRVExNgkxMjkKK2RpZmYgLS1naXQgYS90ZXN0cy9ydW4tYWRkcmNmaS5zaCBiL3Rlc3RzL3J1bi1hZGRyY2ZpLnNoCitpbmRleCBmZDg5ZDAyLi40NjJkN2M1IDEwMDc1NQorLS0tIGEvdGVzdHMvcnVuLWFkZHJjZmkuc2gKKysrKyBiL3Rlc3RzL3J1bi1hZGRyY2ZpLnNoCitAQCAtMzU1NCw2ICszNTU0LDM4IEBAIGR3YXJmX2NmaV9hZGRyZnJhbWUgKC5laF9mcmFtZSk6IG5vIG1hdGNoaW5nIGFkZHJlc3MgcmFuZ2UKKyAJRlBBIHJlZzIxIChmNSk6IHVuZGVmaW5lZAorIAlGUEEgcmVnMjIgKGY2KTogdW5kZWZpbmVkCisgCUZQQSByZWcyMyAoZjcpOiB1bmRlZmluZWQKKysJVkZQIHJlZzY0IChzMCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNjUgKHMxKTogdW5kZWZpbmVkCisrCVZGUCByZWc2NiAoczIpOiB1bmRlZmluZWQKKysJVkZQIHJlZzY3IChzMyk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNjggKHM0KTogdW5kZWZpbmVkCisrCVZGUCByZWc2OSAoczUpOiB1bmRlZmluZWQKKysJVkZQIHJlZzcwIChzNik6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzEgKHM3KTogdW5kZWZpbmVkCisrCVZGUCByZWc3MiAoczgpOiB1bmRlZmluZWQKKysJVkZQIHJlZzczIChzOSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzQgKHMxMCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzUgKHMxMSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzYgKHMxMik6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzcgKHMxMyk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzggKHMxNCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzkgKHMxNSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODAgKHMxNik6IHVuZGVmaW5lZAorKwlWRlAgcmVnODEgKHMxNyk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODIgKHMxOCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODMgKHMxOSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODQgKHMyMCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODUgKHMyMSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODYgKHMyMik6IHVuZGVmaW5lZAorKwlWRlAgcmVnODcgKHMyMyk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODggKHMyNCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnODkgKHMyNSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnOTAgKHMyNik6IHVuZGVmaW5lZAorKwlWRlAgcmVnOTEgKHMyNyk6IHVuZGVmaW5lZAorKwlWRlAgcmVnOTIgKHMyOCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnOTMgKHMyOSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnOTQgKHMzMCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnOTUgKHMzMSk6IHVuZGVmaW5lZAorIAlGUEEgcmVnOTYgKGYwKTogdW5kZWZpbmVkCisgCUZQQSByZWc5NyAoZjEpOiB1bmRlZmluZWQKKyAJRlBBIHJlZzk4IChmMik6IHVuZGVmaW5lZAorQEAgLTM1NjIsNyArMzU5NCw2NiBAQCBkd2FyZl9jZmlfYWRkcmZyYW1lICguZWhfZnJhbWUpOiBubyBtYXRjaGluZyBhZGRyZXNzIHJhbmdlCisgCUZQQSByZWcxMDEgKGY1KTogdW5kZWZpbmVkCisgCUZQQSByZWcxMDIgKGY2KTogdW5kZWZpbmVkCisgCUZQQSByZWcxMDMgKGY3KTogdW5kZWZpbmVkCistCWludGVnZXIgcmVnMTI4IChzcHNyKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMDQgKHdjZ3IwKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMDUgKHdjZ3IxKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMDYgKHdjZ3IyKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMDcgKHdjZ3IzKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMDggKHdjZ3I0KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMDkgKHdjZ3I1KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTAgKHdjZ3I2KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTEgKHdjZ3I3KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTIgKHdyMCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTEzICh3cjEpOiB1bmRlZmluZWQKKysJTU1YIHJlZzExNCAod3IyKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTUgKHdyMyk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTE2ICh3cjQpOiB1bmRlZmluZWQKKysJTU1YIHJlZzExNyAod3I1KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTggKHdyNik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTE5ICh3cjcpOiB1bmRlZmluZWQKKysJTU1YIHJlZzEyMCAod3I4KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMjEgKHdyOSk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTIyICh3cjEwKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMjMgKHdyMTEpOiB1bmRlZmluZWQKKysJTU1YIHJlZzEyNCAod3IxMik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTI1ICh3cjEzKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMjYgKHdyMTQpOiB1bmRlZmluZWQKKysJTU1YIHJlZzEyNyAod3IxNSk6IHVuZGVmaW5lZAorKwlzdGF0ZSByZWcxMjggKHNwc3IpOiB1bmRlZmluZWQKKysJc3RhdGUgcmVnMTI5IChzcHNyX2ZpcSk6IHVuZGVmaW5lZAorKwlzdGF0ZSByZWcxMzAgKHNwc3JfaXJxKTogdW5kZWZpbmVkCisrCXN0YXRlIHJlZzEzMSAoc3Bzcl9hYnQpOiB1bmRlZmluZWQKKysJc3RhdGUgcmVnMTMyIChzcHNyX3VuZCk6IHVuZGVmaW5lZAorKwlzdGF0ZSByZWcxMzMgKHNwc3Jfc3ZjKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTQ0IChyOF91c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNDUgKHI5X3Vzcik6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE0NiAocjEwX3Vzcik6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE0NyAocjExX3Vzcik6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE0OCAocjEyX3Vzcik6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE0OSAocjEzX3Vzcik6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE1MCAocjE0X3Vzcik6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE1MSAocjhfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTUyIChyOV9maXEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTMgKHIxMF9maXEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTQgKHIxMV9maXEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTUgKHIxMl9maXEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTYgKHIxM19maXEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTcgKHIxNF9maXEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTggKHIxM19pcnEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTkgKHIxNF9pcnEpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNjAgKHIxM19hYnQpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNjEgKHIxNF9hYnQpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNjIgKHIxM191bmQpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNjMgKHIxNF91bmQpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNjQgKHIxM19zdmMpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNjUgKHIxNF9zdmMpOiB1bmRlZmluZWQKKysJTU1YIHJlZzE5MiAod2MwKTogdW5kZWZpbmVkCisrCU1NWCByZWcxOTMgKHdjMSk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTk0ICh3YzIpOiB1bmRlZmluZWQKKysJTU1YIHJlZzE5NSAod2MzKTogdW5kZWZpbmVkCisrCU1NWCByZWcxOTYgKHdjNCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTk3ICh3YzUpOiB1bmRlZmluZWQKKysJTU1YIHJlZzE5OCAod2M2KTogdW5kZWZpbmVkCisrCU1NWCByZWcxOTkgKHdjNyk6IHVuZGVmaW5lZAorIAlWRlAgcmVnMjU2IChkMCk6IHVuZGVmaW5lZAorIAlWRlAgcmVnMjU3IChkMSk6IHVuZGVmaW5lZAorIAlWRlAgcmVnMjU4IChkMik6IHVuZGVmaW5lZAorZGlmZiAtLWdpdCBhL3Rlc3RzL3J1bi1hbGxyZWdzLnNoIGIvdGVzdHMvcnVuLWFsbHJlZ3Muc2gKK2luZGV4IDdkZGQ0NTIuLmEzMWRiYTQgMTAwNzU1CistLS0gYS90ZXN0cy9ydW4tYWxscmVncy5zaAorKysrIGIvdGVzdHMvcnVuLWFsbHJlZ3Muc2gKK0BAIC0yNjcyLDcgKzI2NzIsMjggQEAgaW50ZWdlciByZWdpc3RlcnM6CisgCSAxMzogc3AgKHNwKSwgYWRkcmVzcyAzMiBiaXRzCisgCSAxNDogbHIgKGxyKSwgYWRkcmVzcyAzMiBiaXRzCisgCSAxNTogcGMgKHBjKSwgYWRkcmVzcyAzMiBiaXRzCistCTEyODogc3BzciAoc3BzciksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTQ0OiByOF91c3IgKHI4X3VzciksIHNpZ25lZCAzMiBiaXRzCisrCTE0NTogcjlfdXNyIChyOV91c3IpLCBzaWduZWQgMzIgYml0cworKwkxNDY6IHIxMF91c3IgKHIxMF91c3IpLCBzaWduZWQgMzIgYml0cworKwkxNDc6IHIxMV91c3IgKHIxMV91c3IpLCBzaWduZWQgMzIgYml0cworKwkxNDg6IHIxMl91c3IgKHIxMl91c3IpLCBzaWduZWQgMzIgYml0cworKwkxNDk6IHIxM191c3IgKHIxM191c3IpLCBzaWduZWQgMzIgYml0cworKwkxNTA6IHIxNF91c3IgKHIxNF91c3IpLCBzaWduZWQgMzIgYml0cworKwkxNTE6IHI4X2ZpcSAocjhfZmlxKSwgc2lnbmVkIDMyIGJpdHMKKysJMTUyOiByOV9maXEgKHI5X2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1MzogcjEwX2ZpcSAocjEwX2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1NDogcjExX2ZpcSAocjExX2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1NTogcjEyX2ZpcSAocjEyX2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1NjogcjEzX2ZpcSAocjEzX2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1NzogcjE0X2ZpcSAocjE0X2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1ODogcjEzX2lycSAocjEzX2lycSksIHNpZ25lZCAzMiBiaXRzCisrCTE1OTogcjE0X2lycSAocjE0X2lycSksIHNpZ25lZCAzMiBiaXRzCisrCTE2MDogcjEzX2FidCAocjEzX2FidCksIHNpZ25lZCAzMiBiaXRzCisrCTE2MTogcjE0X2FidCAocjE0X2FidCksIHNpZ25lZCAzMiBiaXRzCisrCTE2MjogcjEzX3VuZCAocjEzX3VuZCksIHNpZ25lZCAzMiBiaXRzCisrCTE2MzogcjE0X3VuZCAocjE0X3VuZCksIHNpZ25lZCAzMiBiaXRzCisrCTE2NDogcjEzX3N2YyAocjEzX3N2YyksIHNpZ25lZCAzMiBiaXRzCisrCTE2NTogcjE0X3N2YyAocjE0X3N2YyksIHNpZ25lZCAzMiBiaXRzCisgRlBBIHJlZ2lzdGVyczoKKyAJIDE2OiBmMCAoZjApLCBmbG9hdCA5NiBiaXRzCisgCSAxNzogZjEgKGYxKSwgZmxvYXQgOTYgYml0cworQEAgLTI2OTAsNyArMjcxMSw3MiBAQCBGUEEgcmVnaXN0ZXJzOgorIAkxMDE6IGY1IChmNSksIGZsb2F0IDk2IGJpdHMKKyAJMTAyOiBmNiAoZjYpLCBmbG9hdCA5NiBiaXRzCisgCTEwMzogZjcgKGY3KSwgZmxvYXQgOTYgYml0cworK01NWCByZWdpc3RlcnM6CisrCTEwNDogd2NncjAgKHdjZ3IwKSwgdW5zaWduZWQgMzIgYml0cworKwkxMDU6IHdjZ3IxICh3Y2dyMSksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTA2OiB3Y2dyMiAod2NncjIpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEwNzogd2NncjMgKHdjZ3IzKSwgdW5zaWduZWQgMzIgYml0cworKwkxMDg6IHdjZ3I0ICh3Y2dyNCksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTA5OiB3Y2dyNSAod2NncjUpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTExMDogd2NncjYgKHdjZ3I2KSwgdW5zaWduZWQgMzIgYml0cworKwkxMTE6IHdjZ3I3ICh3Y2dyNyksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTEyOiB3cjAgKHdyMCksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTEzOiB3cjEgKHdyMSksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTE0OiB3cjIgKHdyMiksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTE1OiB3cjMgKHdyMyksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTE2OiB3cjQgKHdyNCksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTE3OiB3cjUgKHdyNSksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTE4OiB3cjYgKHdyNiksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTE5OiB3cjcgKHdyNyksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTIwOiB3cjggKHdyOCksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTIxOiB3cjkgKHdyOSksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTIyOiB3cjEwICh3cjEwKSwgdW5zaWduZWQgNjQgYml0cworKwkxMjM6IHdyMTEgKHdyMTEpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTEyNDogd3IxMiAod3IxMiksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTI1OiB3cjEzICh3cjEzKSwgdW5zaWduZWQgNjQgYml0cworKwkxMjY6IHdyMTQgKHdyMTQpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTEyNzogd3IxNSAod3IxNSksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTkyOiB3YzAgKHdjMCksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTkzOiB3YzEgKHdjMSksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTk0OiB3YzIgKHdjMiksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTk1OiB3YzMgKHdjMyksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTk2OiB3YzQgKHdjNCksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTk3OiB3YzUgKHdjNSksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTk4OiB3YzYgKHdjNiksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTk5OiB3YzcgKHdjNyksIHVuc2lnbmVkIDMyIGJpdHMKKyBWRlAgcmVnaXN0ZXJzOgorKwkgNjQ6IHMwIChzMCksIGZsb2F0IDMyIGJpdHMKKysJIDY1OiBzMSAoczEpLCBmbG9hdCAzMiBiaXRzCisrCSA2NjogczIgKHMyKSwgZmxvYXQgMzIgYml0cworKwkgNjc6IHMzIChzMyksIGZsb2F0IDMyIGJpdHMKKysJIDY4OiBzNCAoczQpLCBmbG9hdCAzMiBiaXRzCisrCSA2OTogczUgKHM1KSwgZmxvYXQgMzIgYml0cworKwkgNzA6IHM2IChzNiksIGZsb2F0IDMyIGJpdHMKKysJIDcxOiBzNyAoczcpLCBmbG9hdCAzMiBiaXRzCisrCSA3MjogczggKHM4KSwgZmxvYXQgMzIgYml0cworKwkgNzM6IHM5IChzOSksIGZsb2F0IDMyIGJpdHMKKysJIDc0OiBzMTAgKHMxMCksIGZsb2F0IDMyIGJpdHMKKysJIDc1OiBzMTEgKHMxMSksIGZsb2F0IDMyIGJpdHMKKysJIDc2OiBzMTIgKHMxMiksIGZsb2F0IDMyIGJpdHMKKysJIDc3OiBzMTMgKHMxMyksIGZsb2F0IDMyIGJpdHMKKysJIDc4OiBzMTQgKHMxNCksIGZsb2F0IDMyIGJpdHMKKysJIDc5OiBzMTUgKHMxNSksIGZsb2F0IDMyIGJpdHMKKysJIDgwOiBzMTYgKHMxNiksIGZsb2F0IDMyIGJpdHMKKysJIDgxOiBzMTcgKHMxNyksIGZsb2F0IDMyIGJpdHMKKysJIDgyOiBzMTggKHMxOCksIGZsb2F0IDMyIGJpdHMKKysJIDgzOiBzMTkgKHMxOSksIGZsb2F0IDMyIGJpdHMKKysJIDg0OiBzMjAgKHMyMCksIGZsb2F0IDMyIGJpdHMKKysJIDg1OiBzMjEgKHMyMSksIGZsb2F0IDMyIGJpdHMKKysJIDg2OiBzMjIgKHMyMiksIGZsb2F0IDMyIGJpdHMKKysJIDg3OiBzMjMgKHMyMyksIGZsb2F0IDMyIGJpdHMKKysJIDg4OiBzMjQgKHMyNCksIGZsb2F0IDMyIGJpdHMKKysJIDg5OiBzMjUgKHMyNSksIGZsb2F0IDMyIGJpdHMKKysJIDkwOiBzMjYgKHMyNiksIGZsb2F0IDMyIGJpdHMKKysJIDkxOiBzMjcgKHMyNyksIGZsb2F0IDMyIGJpdHMKKysJIDkyOiBzMjggKHMyOCksIGZsb2F0IDMyIGJpdHMKKysJIDkzOiBzMjkgKHMyOSksIGZsb2F0IDMyIGJpdHMKKysJIDk0OiBzMzAgKHMzMCksIGZsb2F0IDMyIGJpdHMKKysJIDk1OiBzMzEgKHMzMSksIGZsb2F0IDMyIGJpdHMKKyAJMjU2OiBkMCAoZDApLCBmbG9hdCA2NCBiaXRzCisgCTI1NzogZDEgKGQxKSwgZmxvYXQgNjQgYml0cworIAkyNTg6IGQyIChkMiksIGZsb2F0IDY0IGJpdHMKK0BAIC0yNzIzLDYgKzI4MDksMTMgQEAgVkZQIHJlZ2lzdGVyczoKKyAJMjg1OiBkMjkgKGQyOSksIGZsb2F0IDY0IGJpdHMKKyAJMjg2OiBkMzAgKGQzMCksIGZsb2F0IDY0IGJpdHMKKyAJMjg3OiBkMzEgKGQzMSksIGZsb2F0IDY0IGJpdHMKKytzdGF0ZSByZWdpc3RlcnM6CisrCTEyODogc3BzciAoc3BzciksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTI5OiBzcHNyX2ZpcSAoc3Bzcl9maXEpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEzMDogc3Bzcl9pcnEgKHNwc3JfaXJxKSwgdW5zaWduZWQgMzIgYml0cworKwkxMzE6IHNwc3JfYWJ0IChzcHNyX2FidCksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTMyOiBzcHNyX3VuZCAoc3Bzcl91bmQpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEzMzogc3Bzcl9zdmMgKHNwc3Jfc3ZjKSwgdW5zaWduZWQgMzIgYml0cworIEVPRgorIAorICMgU2VlIHJ1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoIGZvciBpbnN0cnVjdGlvbnMgdG8gcmVnZW5lcmF0ZQorZGlmZiAtLWdpdCBhL3Rlc3RzL3J1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoIGIvdGVzdHMvcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2gKK2luZGV4IDg2MTcxYzQuLjAxODYxMmYgMTAwNzU1CistLS0gYS90ZXN0cy9ydW4tcmVhZGVsZi1taXhlZC1jb3Jlbm90ZS5zaAorKysrIGIvdGVzdHMvcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2gKK0BAIC0zMSwxMiArMzEsMTEgQEAgTm90ZSBzZWdtZW50IG9mIDg5MiBieXRlcyBhdCBvZmZzZXQgMHgyNzQ6CisgICAgIHBpZDogMTEwODcsIHBwaWQ6IDExMDYzLCBwZ3JwOiAxMTA4Nywgc2lkOiAxMTA2MworICAgICB1dGltZTogMC4wMDAwMDAsIHN0aW1lOiAwLjAxMDAwMCwgY3V0aW1lOiAwLjAwMDAwMCwgY3N0aW1lOiAwLjAwMDAwMAorICAgICBvcmlnX3IwOiAtMSwgZnB2YWxpZDogMQorLSAgICByMDogICAgICAgICAgICAgMSAgcjE6ICAgLTEwOTE2NzI1MDggIHIyOiAgIC0xMDkxNjcyNTAwCistICAgIHIzOiAgICAgICAgICAgICAwICByNDogICAgICAgICAgICAgMCAgcjU6ICAgICAgICAgICAgIDAKKy0gICAgcjY6ICAgICAgICAgMzM3MjggIHI3OiAgICAgICAgICAgICAwICByODogICAgICAgICAgICAgMAorLSAgICByOTogICAgICAgICAgICAgMCAgcjEwOiAgLTEyMjU3MDM0OTYgIHIxMTogIC0xMDkxNjcyODQ0CistICAgIHIxMjogICAgICAgICAgICAwICBzcDogICAgMHhiZWVlNjRmNCAgbHI6ICAgIDB4YjZkYzNmNDgKKy0gICAgcGM6ICAgIDB4MDAwMDg1MDAgIHNwc3I6ICAweDYwMDAwMDEwCisrICAgIHIwOiAgICAgICAgICAgIDEgIHIxOiAgLTEwOTE2NzI1MDggIHIyOiAgLTEwOTE2NzI1MDAgIHIzOiAgICAgICAgICAgIDAKKysgICAgcjQ6ICAgICAgICAgICAgMCAgcjU6ICAgICAgICAgICAgMCAgcjY6ICAgICAgICAzMzcyOCAgcjc6ICAgICAgICAgICAgMAorKyAgICByODogICAgICAgICAgICAwICByOTogICAgICAgICAgICAwICByMTA6IC0xMjI1NzAzNDk2ICByMTE6IC0xMDkxNjcyODQ0CisrICAgIHIxMjogICAgICAgICAgIDAgIHNwOiAgIDB4YmVlZTY0ZjQgIGxyOiAgIDB4YjZkYzNmNDggIHBjOiAgIDB4MDAwMDg1MDAKKysgICAgc3BzcjogIDB4NjAwMDAwMTAKKyAgIENPUkUgICAgICAgICAgICAgICAgIDEyNCAgUFJQU0lORk8KKyAgICAgc3RhdGU6IDAsIHNuYW1lOiBSLCB6b21iOiAwLCBuaWNlOiAwLCBmbGFnOiAweDAwNDAwNTAwCisgICAgIHVpZDogMCwgZ2lkOiAwLCBwaWQ6IDExMDg3LCBwcGlkOiAxMTA2MywgcGdycDogMTEwODcsIHNpZDogMTEwNjMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtZGlzYWJsZV93ZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1kaXNhYmxlX3dlcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjMyYjg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtZGlzYWJsZV93ZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA1ZDQ1NTY1ZTcxZGRhYjNkNzg0ODA3N2I2MWViMGNhNzNjMGJjYmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNjowMToxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBkaXNhYmxlIC1XZXJyb3IgYXMgaXQgdGVuZHMgdG8gYnJlYWsgd2l0aCBuZXcgZ2NjIHZlcnNpb25zCisKK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzg4NjAwNAorTGFzdC1VcGRhdGU6IDIwMTgtMDEtMDEKKworU2lnbmVkLW9mZi1ieTogSGVsbXV0IEdyb2huZSA8aGVsbXV0QHN1YmRpdmkuZGU+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCittZGlzYWJsZV93ZXJyb3IucGF0YyBhbmQgcmViYXNlIHRvIDAuMTcyCisKK2h0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAtMC41LmRlYmlhbi50YXIueHoKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlnL2V1LmFtIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy9ldS5hbSBiL2NvbmZpZy9ldS5hbQoraW5kZXggYzJjYzM0OS4uOTliMzY4ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZy9ldS5hbQorKysrIGIvY29uZmlnL2V1LmFtCitAQCAtNzMsNyArNzMsNiBAQCBBTV9DRkxBR1MgPSAtc3RkPWdudTk5IC1XYWxsIC1Xc2hhZG93IC1XZm9ybWF0PTIgXAorIAkgICAgLVdvbGQtc3R5bGUtZGVmaW5pdGlvbiAtV3N0cmljdC1wcm90b3R5cGVzIFwKKyAJICAgICQoTE9HSUNBTF9PUF9XQVJOSU5HKSAkKERVUExJQ0FURURfQ09ORF9XQVJOSU5HKSBcCisgCSAgICAkKE5VTExfREVSRUZFUkVOQ0VfV0FSTklORykgJChJTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HKSBcCistCSAgICAkKGlmICQoJCgqRilfbm9fV2Vycm9yKSwsLVdlcnJvcikgXAorIAkgICAgJChpZiAkKCQoKkYpX25vX1d1bnVzZWQpLCwtV3VudXNlZCAtV2V4dHJhKSBcCisgCSAgICAkKGlmICQoJCgqRilfbm9fV3N0YWNrX3VzYWdlKSwsJChTVEFDS19VU0FHRV9XQVJOSU5HKSkgXAorIAkgICAgJChpZiAkKCQoKkYpX25vX1dwYWNrZWRfbm90X2FsaWduZWQpLC1Xbm8tcGFja2VkLW5vdC1hbGlnbmVkLCkgXAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1maXgtZ2NjNy1mdGJmcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWZpeC1nY2M3LWZ0YmZzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODY5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1maXgtZ2NjNy1mdGJmcy5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDkxYzBhMGRhMmE4OTMyZjE2M2Q1N2RiNWQ5ZDg0N2JlZDY4MjI1MDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjU5OjU3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBnY2M3IGZ0YmZzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCitmaXgtZ2NjNy1mdGJmcy5kaWZmIGFuZCByZWJhc2UgdG8gMC4xNzIKKworaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC0wLjUuZGViaWFuLnRhci54egorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYWNrZW5kcy9taXBzX3JldHZhbC5jICAgfCAxICsKKyBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgfCAxICsKKyBzcmMvYXIuYyAgICAgICAgICAgICAgICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCitpbmRleCA1NzQ4N2JiLi5lNzk3M2E4IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvbWlwc19yZXR2YWwuYworKysrIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworQEAgLTM5MCw2ICszOTAsNyBAQCBtaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorICAgICAgICAgfQorIAorICAgICAgIC8qIEZhbGx0aHJvdWdoIHRvIGhhbmRsZSBsYXJnZSB0eXBlcyAqLworKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisgCisgICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6CisgICAgIGxhcmdlOgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworaW5kZXggZGY3ZWMzYS4uOTg4ZTFmZSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworKysrIGIvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCitAQCAtMTY3LDYgKzE2Nyw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCisgCisgCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KKyAgICAgICB9CisrICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKyAKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CitkaWZmIC0tZ2l0IGEvc3JjL2FyLmMgYi9zcmMvYXIuYworaW5kZXggODE4MTE1Yi4uYzc3ZTlmNCAxMDA2NDQKKy0tLSBhL3NyYy9hci5jCisrKysgYi9zcmMvYXIuYworQEAgLTEwNzMsNyArMTA3Myw3IEBAIGRvX29wZXJfZGVsZXRlIChjb25zdCBjaGFyICphcmZuYW1lLCBjaGFyICoqYXJndiwgaW50IGFyZ2MsCisgc3RhdGljIGJvb2wKKyBubzBwcmludCAoYm9vbCBvZm10LCBjaGFyICpidWYsIGludCBidWZzaXplLCBsb25nIGludCB2YWwpCisgeworLSAgY2hhciB0bXBidWZbYnVmc2l6ZSArIDFdOworKyAgY2hhciB0bXBidWZbYnVmc2l6ZSArIDEgKyA0XTsKKyAgIGludCByZXQgPSBzbnByaW50ZiAodG1wYnVmLCBzaXplb2YgKHRtcGJ1ZiksIG9mbXQgPyAiJS0qbG8iIDogIiUtKmxkIiwKKyAJCSAgICAgIGJ1ZnNpemUsIHZhbCk7CisgICBpZiAocmV0ID49IChpbnQpIHNpemVvZiAodG1wYnVmKSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtaHBwYV9iYWNrZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtaHBwYV9iYWNrZW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNWQ0ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1ocHBhX2JhY2tlbmQucGF0Y2gKQEAgLTAsMCArMSw4NDAgQEAKK0Zyb20gYzUxMGM2Yzg1MjMyNDZkZDc5YzZlYTI4ZDE2NDZiMTUzYzIzZTQ5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTU6Mzk6NDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaHBwYV9iYWNrZW5kCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCitocHBhX2JhY2tlbmQuZGlmZiBhbmQgcmViYXNlIHRvIDAuMTcyCisKK2h0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAtMC41LmRlYmlhbi50YXIueHoKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgICAgfCAgIDkgKy0KKyBiYWNrZW5kcy9saWJlYmxfcGFyaXNjLmggIHwgICA5ICsrCisgYmFja2VuZHMvcGFyaXNjX2luaXQuYyAgICB8ICA3MyArKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JlZ3MuYyAgICB8IDE1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZiB8IDEyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jICB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jICB8IDExMiArKysrKysrKysrKysrKysrKysrKysrKysKKyBsaWJlbGYvZWxmLmggICAgICAgICAgICAgIHwgIDExICsrKworIDggZmlsZXMgY2hhbmdlZCwgNzExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9wYXJpc2NfaW5pdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL3BhcmlzY19yZWdzLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCisKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9NYWtlZmlsZS5hbSBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCitpbmRleCA4MGFhMDBlLi4xZTRiOGU5IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KKysrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCitAQCAtMzMsMTYgKzMzLDE2IEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCisgCisgCisgbW9kdWxlcyA9IGkzODYgc2ggeDg2XzY0IGlhNjQgYWxwaGEgYXJtIGFhcmNoNjQgc3BhcmMgcHBjIHBwYzY0IHMzOTAgXAorLQkgIHRpbGVneCBtNjhrIGJwZiByaXNjdgorKwkgIHRpbGVneCBtNjhrIGJwZiByaXNjdiBwYXJpc2MKKyBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAorIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKKyAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCisgCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAorLQkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3Jpc2N2X3BpYy5hCisrCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcmlzY3ZfcGljLmEgXAorKwkgICAgIGxpYmVibF9wYXJpc2NfcGljLmEKKyBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQorIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCisgCistCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KKyBsaWJldSA9IC4uL2xpYi9saWJldS5hCitAQCAtMTM1LDYgKzEzNSw5IEBAIHJpc2N2X1NSQ1MgPSByaXNjdl9pbml0LmMgcmlzY3Zfc3ltYm9sLmMKKyBsaWJlYmxfcmlzY3ZfcGljX2FfU09VUkNFUyA9ICQocmlzY3ZfU1JDUykKKyBhbV9saWJlYmxfcmlzY3ZfcGljX2FfT0JKRUNUUyA9ICQocmlzY3ZfU1JDUzouYz0ub3MpCisgCisrcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYworK2xpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCisrYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCisgCisgbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKKyAJQHJtIC1mICQoQDouc289Lm1hcCkKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmggYi9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mNDczYjc5CistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKK0BAIC0wLDAgKzEsOSBAQAorKyNpZm5kZWYgX0xJQkVCTF9IUFBBX0gKKysjZGVmaW5lIF9MSUJFQkxfSFBQQV9IIDEKKysKKysjaW5jbHVkZSA8bGliZHcuaD4KKysKKytleHRlcm4gaW50IHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fMzIoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7CisrZXh0ZXJuIGludCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0KER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOworKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19pbml0LmMgYi9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjFlNDAxYworLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvcGFyaXNjX2luaXQuYworQEAgLTAsMCArMSw3MyBAQAorKy8qIEluaXRpYWxpemF0aW9uIG9mIFBBLVJJU0Mgc3BlY2lmaWMgYmFja2VuZCBsaWJyYXJ5LgorKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LCAyMDAyLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2RlZmluZSBCQUNLRU5ECQlwYXJpc2NfCisrI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9QQVJJU0NfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysjaW5jbHVkZSAibGliZWJsX3BhcmlzYy5oIgorKworKy8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIHBhcmlzY19yZWxvYy5kZWYuICAqLworKyNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKKysKKysKKytjb25zdCBjaGFyICoKKytwYXJpc2NfaW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorKyAgICAgR0VsZl9IYWxmIG1hY2hpbmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorKyAgICAgRWJsICplaCwKKysgICAgIHNpemVfdCBlaGxlbikKKyt7CisrICBpbnQgcGE2NCA9IDA7CisrCisrICAvKiBDaGVjayB3aGV0aGVyIHRoZSBFbGZfQkggb2JqZWN0IGhhcyBhIHN1ZmZpY2VudCBzaXplLiAgKi8KKysgIGlmIChlaGxlbiA8IHNpemVvZiAoRWJsKSkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBpZiAoZWxmKSB7CisrICAgIEdFbGZfRWhkciBlaGRyX21lbTsKKysgICAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7CisrICAgIGlmIChlaGRyICYmIChlaGRyLT5lX2ZsYWdzICYgRUZfUEFSSVNDX1dJREUpKQorKyAgICAgIHBhNjQgPSAxOworKyAgfQorKyAgLyogV2UgaGFuZGxlIGl0LiAgKi8KKysgIGVoLT5uYW1lID0gIlBBLVJJU0MiOworKyAgcGFyaXNjX2luaXRfcmVsb2MgKGVoKTsKKysgIEhPT0sgKGVoLCByZWxvY19zaW1wbGVfdHlwZSk7CisrICBIT09LIChlaCwgbWFjaGluZV9mbGFnX2NoZWNrKTsKKysgIEhPT0sgKGVoLCBzeW1ib2xfdHlwZV9uYW1lKTsKKysgIEhPT0sgKGVoLCBzZWdtZW50X3R5cGVfbmFtZSk7CisrICBIT09LIChlaCwgc2VjdGlvbl90eXBlX25hbWUpOworKyAgSE9PSyAoZWgsIHJlZ2lzdGVyX2luZm8pOworKyAgaWYgKHBhNjQpCisrICAgIGVoLT5yZXR1cm5fdmFsdWVfbG9jYXRpb24gPSBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0OworKyAgZWxzZQorKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8zMjsKKysKKysgIHJldHVybiBNT0RWRVJTSU9OOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmVncy5jIGIvYmFja2VuZHMvcGFyaXNjX3JlZ3MuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjM4OTVmOGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKK0BAIC0wLDAgKzEsMTU5IEBACisrLyogUmVnaXN0ZXIgbmFtZXMgYW5kIG51bWJlcnMgZm9yIFBBLVJJU0MgRFdBUkYuCisrICAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxkd2FyZi5oPgorKworKyNkZWZpbmUgQkFDS0VORCBwYXJpc2NfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKytzc2l6ZV90CisrcGFyaXNjX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsLCBpbnQgcmVnbm8sIGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAorKwkJICAgICBjb25zdCBjaGFyICoqcHJlZml4LCBjb25zdCBjaGFyICoqc2V0bmFtZSwKKysJCSAgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCisreworKyAgaW50IHBhNjQgPSAwOworKworKyAgaWYgKGVibC0+ZWxmKSB7CisrICAgIEdFbGZfRWhkciBlaGRyX21lbTsKKysgICAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlYmwtPmVsZiwgJmVoZHJfbWVtKTsKKysgICAgaWYgKGVoZHItPmVfZmxhZ3MgJiBFRl9QQVJJU0NfV0lERSkKKysgICAgICBwYTY0ID0gMTsKKysgIH0KKysKKysgIGludCBucmVncyA9IHBhNjQgPyAxMjcgOiAxMjg7CisrCisrICBpZiAobmFtZSA9PSBOVUxMKQorKyAgICByZXR1cm4gbnJlZ3M7CisrCisrICBpZiAocmVnbm8gPCAwIHx8IHJlZ25vID49IG5yZWdzIHx8IG5hbWVsZW4gPCA2KQorKyAgICByZXR1cm4gLTE7CisrCisrICAqcHJlZml4ID0gIiUiOworKworKyAgaWYgKHJlZ25vIDwgMzIpCisrICB7CisrICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgIGlmIChwYTY0KQorKyAgICB7CisrCSpiaXRzID0gNjQ7CisrICAgIH0KKysgICAgZWxzZQorKyAgICB7CisrICAgIAkqYml0cyA9IDMyOworKyAgICB9CisrICB9CisrICBlbHNlIGlmIChyZWdubyA9PSAzMikKKysgIHsKKysgICAgKnNldG5hbWUgPSAic3BlY2lhbCI7CisrICAgIGlmIChwYTY0KQorKyAgICB7CisrCSpiaXRzID0gNjsKKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysgICAgCSpiaXRzID0gNTsKKysgICAgfQorKyAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgIH0KKysgIGVsc2UKKysgIHsKKysgICAgKnNldG5hbWUgPSAiRlBVIjsKKysgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7CisrICAgIGlmIChwYTY0KQorKyAgICB7CisrCSpiaXRzID0gNjQ7CisrICAgIH0KKysgICAgZWxzZQorKyAgICB7CisrICAgIAkqYml0cyA9IDMyOworKyAgICB9CisrICB9CisrCisrICBpZiAocmVnbm8gPCAzMykgeworKyAgICBzd2l0Y2ggKHJlZ25vKQorKyAgICAgIHsKKysgICAgICBjYXNlIDAgLi4uIDk6CisrICAgICAgICBuYW1lWzBdID0gJ3InOworKyAgICAgICAgbmFtZVsxXSA9IHJlZ25vICsgJzAnOworKyAgICAgICAgbmFtZWxlbiA9IDI7CisrICAgICAgICBicmVhazsKKysgICAgICBjYXNlIDEwIC4uLiAzMToKKysgICAgICAgIG5hbWVbMF0gPSAncic7CisrICAgICAgICBuYW1lWzFdID0gcmVnbm8gLyAxMCArICcwJzsKKysgICAgICAgIG5hbWVbMl0gPSByZWdubyAlIDEwICsgJzAnOworKyAgICAgICAgbmFtZWxlbiA9IDM7CisrICAgICAgICBicmVhazsKKysgICAgICBjYXNlIDMyOgorKwkqcHJlZml4ID0gTlVMTDsKKysJbmFtZVswXSA9ICdTJzsKKysJbmFtZVsxXSA9ICdBJzsKKysJbmFtZVsyXSA9ICdSJzsKKysJbmFtZWxlbiA9IDM7CisrCWJyZWFrOworKyAgICAgIH0KKysgIH0KKysgIGVsc2UgeworKyAgICBpZiAocGE2NCAmJiAoKHJlZ25vIC0gNzIpICUgMikpIHsKKysgICAgICAqc2V0bmFtZSA9IE5VTEw7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgICAgc3dpdGNoIChyZWdubykKKysgICAgICB7CisrICAgICAgY2FzZSA3MiArIDAgLi4uIDcyICsgMTE6CisrICAgICAgICBuYW1lWzBdID0gJ2YnOworKwluYW1lWzFdID0gJ3InOworKyAgICAgICAgbmFtZVsyXSA9IChyZWdubyArIDggLSA3MikgLyAyICsgJzAnOworKyAgICAgICAgbmFtZWxlbiA9IDM7CisrICAgICAgICBpZiAoKHJlZ25vICsgOCAtIDcyKSAlIDIpIHsKKysJICBuYW1lWzNdID0gJ1InOworKwkgIG5hbWVsZW4rKzsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworKyAgICAgIGNhc2UgNzIgKyAxMiAuLi4gNzIgKyA1NToKKysgICAgICAgIG5hbWVbMF0gPSAnZic7CisrCW5hbWVbMV0gPSAncic7CisrICAgICAgICBuYW1lWzJdID0gKHJlZ25vICsgOCAtIDcyKSAvIDIgLyAxMCArICcwJzsKKysgICAgICAgIG5hbWVbM10gPSAocmVnbm8gKyA4IC0gNzIpIC8gMiAlIDEwICsgJzAnOworKyAgICAgICAgbmFtZWxlbiA9IDQ7CisrICAgICAgICBpZiAoKHJlZ25vICsgOCAtIDcyKSAlIDIpIHsKKysJICBuYW1lWzRdID0gJ1InOworKwkgIG5hbWVsZW4rKzsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworKyAgICAgIGRlZmF1bHQ6CisrICAgICAgICAqc2V0bmFtZSA9IE5VTEw7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgICB9CisrICB9CisrICBuYW1lW25hbWVsZW4rK10gPSAnXDAnOworKyAgcmV0dXJuIG5hbWVsZW47CisrfQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYgYi9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMWY4NzViYQorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgorQEAgLTAsMCArMSwxMjggQEAKKysvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBQQS1SSVNDLiAgLSotIEMgLSotCisrICAgQ29weXJpZ2h0IChDKSAyMDA1IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysvKgkgICAgTkFNRSwJCVJFTHxFWEVDfERZTgkqLworKworK1JFTE9DX1RZUEUgKE5PTkUsCQlFWEVDfERZTikKKytSRUxPQ19UWVBFIChESVIzMiwJCVJFTHxFWEVDfERZTikKKytSRUxPQ19UWVBFIChESVIyMUwsCQlSRUx8RVhFQ3xEWU4pCisrUkVMT0NfVFlQRSAoRElSMTdSLAkJUkVMKQorK1JFTE9DX1RZUEUgKERJUjE3RiwJCVJFTCkKKytSRUxPQ19UWVBFIChESVIxNFIsCQlSRUx8RFlOKQorK1JFTE9DX1RZUEUgKFBDUkVMMzIsCQlSRUwpCisrUkVMT0NfVFlQRSAoUENSRUwyMUwsCQlSRUwpCisrUkVMT0NfVFlQRSAoUENSRUwxN1IsCQlSRUwpCisrUkVMT0NfVFlQRSAoUENSRUwxN0YsCQlSRUwpCisrUkVMT0NfVFlQRSAoUENSRUwxNFIsCQlSRUx8RVhFQykKKytSRUxPQ19UWVBFIChEUFJFTDIxTCwJCVJFTCkKKytSRUxPQ19UWVBFIChEUFJFTDE0V1IsCQlSRUwpCisrUkVMT0NfVFlQRSAoRFBSRUwxNERSLCAgICAgICAgICBSRUwpCisrUkVMT0NfVFlQRSAoRFBSRUwxNFIsCQlSRUwpCisrUkVMT0NfVFlQRSAoR1BSRUwyMUwsCQkwKQorK1JFTE9DX1RZUEUgKEdQUkVMMTRSLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRjIxTCwJCVJFTCkKKytSRUxPQ19UWVBFIChMVE9GRjE0UiwJCVJFTCkKKytSRUxPQ19UWVBFIChETFRJTkQxNEYsCQkwKQorK1JFTE9DX1RZUEUgKFNFVEJBU0UsCQkwKQorK1JFTE9DX1RZUEUgKFNFQ1JFTDMyLAkJUkVMKQorK1JFTE9DX1RZUEUgKEJBU0VSRUwyMUwsCQkwKQorK1JFTE9DX1RZUEUgKEJBU0VSRUwxN1IsCQkwKQorK1JFTE9DX1RZUEUgKEJBU0VSRUwxNFIsCQkwKQorK1JFTE9DX1RZUEUgKFNFR0JBU0UsCQkwKQorK1JFTE9DX1RZUEUgKFNFR1JFTDMyLAkJUkVMKQorK1JFTE9DX1RZUEUgKFBMVE9GRjIxTCwJCTApCisrUkVMT0NfVFlQRSAoUExUT0ZGMTRSLAkJMCkKKytSRUxPQ19UWVBFIChQTFRPRkYxNEYsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIzMiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMjFMLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIxNFIsCTApCisrUkVMT0NfVFlQRSAoRlBUUjY0LAkJMCkKKytSRUxPQ19UWVBFIChQTEFCRUwzMiwJCVJFTHxEWU4pCisrUkVMT0NfVFlQRSAoUENSRUw2NCwJCTApCisrUkVMT0NfVFlQRSAoUENSRUwyMkMsCQkwKQorK1JFTE9DX1RZUEUgKFBDUkVMMjJGLAkJMCkKKytSRUxPQ19UWVBFIChQQ1JFTDE0V1IsCQkwKQorK1JFTE9DX1RZUEUgKFBDUkVMMTREUiwJCTApCisrUkVMT0NfVFlQRSAoUENSRUwxNkYsCQkwKQorK1JFTE9DX1RZUEUgKFBDUkVMMTZXRiwJCTApCisrUkVMT0NfVFlQRSAoUENSRUwxNkRGLAkJMCkKKytSRUxPQ19UWVBFIChESVI2NCwJCVJFTHxEWU4pCisrUkVMT0NfVFlQRSAoRElSMTRXUiwJCVJFTCkKKytSRUxPQ19UWVBFIChESVIxNERSLAkJUkVMKQorK1JFTE9DX1RZUEUgKERJUjE2RiwJCVJFTCkKKytSRUxPQ19UWVBFIChESVIxNldGLAkJUkVMKQorK1JFTE9DX1RZUEUgKERJUjE2REYsCQlSRUwpCisrUkVMT0NfVFlQRSAoR1BSRUw2NCwJCTApCisrUkVMT0NfVFlQRSAoR1BSRUwxNFdSLAkJMCkKKytSRUxPQ19UWVBFIChHUFJFTDE0RFIsCQkwKQorK1JFTE9DX1RZUEUgKEdQUkVMMTZGLAkJMCkKKytSRUxPQ19UWVBFIChHUFJFTDE2V0YsCQkwKQorK1JFTE9DX1RZUEUgKEdQUkVMMTZERiwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkY2NCwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkYxNFdSLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRjE0RFIsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGMTZGLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRjE2V0YsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGMTZERiwJCTApCisrUkVMT0NfVFlQRSAoU0VDUkVMNjQsCQkwKQorK1JFTE9DX1RZUEUgKEJBU0VSRUwxNFdSLAkwKQorK1JFTE9DX1RZUEUgKEJBU0VSRUwxNERSLAkwKQorK1JFTE9DX1RZUEUgKFNFR1JFTDY0LAkJMCkKKytSRUxPQ19UWVBFIChQTFRPRkYxNFdSLAkJMCkKKytSRUxPQ19UWVBFIChQTFRPRkYxNERSLAkJMCkKKytSRUxPQ19UWVBFIChQTFRPRkYxNkYsCQkwKQorK1JFTE9DX1RZUEUgKFBMVE9GRjE2V0YsCQkwKQorK1JFTE9DX1RZUEUgKFBMVE9GRjE2REYsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFI2NCwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTRXUiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTREUiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTZGLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIxNldGLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIxNkRGLAkwKQorK1JFTE9DX1RZUEUgKENPUFksCQlFWEVDKQorK1JFTE9DX1RZUEUgKElQTFQsCQlFWEVDfERZTikKKytSRUxPQ19UWVBFIChFUExULAkJMCkKKytSRUxPQ19UWVBFIChUUFJFTDMyLAkJRFlOKQorK1JFTE9DX1RZUEUgKFRQUkVMMjFMLAkJMCkKKytSRUxPQ19UWVBFIChUUFJFTDE0UiwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAyMUwsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAxNFIsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAxNEYsCTApCisrUkVMT0NfVFlQRSAoVFBSRUw2NCwJCTApCisrUkVMT0NfVFlQRSAoVFBSRUwxNFdSLAkJMCkKKytSRUxPQ19UWVBFIChUUFJFTDE0RFIsCQkwKQorK1JFTE9DX1RZUEUgKFRQUkVMMTZGLAkJMCkKKytSRUxPQ19UWVBFIChUUFJFTDE2V0YsCQkwKQorK1JFTE9DX1RZUEUgKFRQUkVMMTZERiwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFA2NCwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAxNFdSLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTREUiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9UUDE2RiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9UUDE2V0YsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAxNkRGLAkwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwJRFlOKQorK1JFTE9DX1RZUEUgKFRMU19EVFBNT0Q2NCwJRFlOKQorKworKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgICAgICAgMQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmRmN2VjM2EKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworQEAgLTAsMCArMSwyMTMgQEAKKysvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L1BBLVJJU0MgQUJJLgorKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8ZHdhcmYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQgcGFyaXNjXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrI2luY2x1ZGUgImxpYmVibF9wYXJpc2MuaCIKKysKKysvKiAlcjI4LCBvciBwYWlyICVyMjgsICVyMjkuICAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnMzJbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcyOCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcyOSB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICB9OworKworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjggfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjkgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfaW50cmVnCTEKKysjZGVmaW5lIG5sb2NfaW50cmVncGFpcgk0CisrCisrLyogJWZyNEwsIG9yIHBhaXIgJWZyNEwsICVmcjRSIG9uIHBhLTMyICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZzMyW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSA3MyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19mcHJlZzMyIDIKKysjZGVmaW5lIG5sb2NfZnByZWdwYWlyMzIgNAorKworKy8qICRmcjQgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDcyIH0sCisrICB9OworKyNkZWZpbmUgbmxvY19mcHJlZyAgMQorKworKyNpZiAwCisrLyogVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdHVyZSBhbmQgaXMgYWN0dWFsbHkgc3RvcmVkIGluIHN0YWNrIHNwYWNlCisrICAgcGFzc2VkIGluIGEgaGlkZGVuIGFyZ3VtZW50IGJ5IHRoZSBjYWxsZXIuIEFkZHJlc3Mgb2YgdGhlIGxvY2F0aW9uIGlzIHN0b3JlZAorKyAgIGluICVyMjggYmVmb3JlIGZ1bmN0aW9uIGNhbGwsIGJ1dCBpdCBtYXkgYmUgY2hhbmdlZCBieSBmdW5jdGlvbi4gKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2FnZ3JlZ2F0ZVtdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX2JyZWcyOCB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKKysjZW5kaWYKKysKKytzdGF0aWMgaW50CisrcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCwgaW50IHBhNjQpCisreworKyAgRHdhcmZfV29yZCByZWdzaXplID0gcGE2NCA/IDggOiA0OworKworKyAgLyogU3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24ncyB0eXBlLCBhbmQgZ2V0IHRoZSBEV19BVF90eXBlIGF0dHJpYnV0ZSwKKysgICAgIHdoaWNoIGlzIHRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUuICAqLworKworKyAgRHdhcmZfQXR0cmlidXRlIGF0dHJfbWVtOworKyAgRHdhcmZfQXR0cmlidXRlICphdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKGZ1bmN0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKyAgaWYgKGF0dHIgPT0gTlVMTCkKKysgICAgLyogVGhlIGZ1bmN0aW9uIGhhcyBubyByZXR1cm4gdmFsdWUsIGxpa2UgYSBgdm9pZCcgZnVuY3Rpb24gaW4gQy4gICovCisrICAgIHJldHVybiAwOworKworKyAgRHdhcmZfRGllIGRpZV9tZW07CisrICBEd2FyZl9EaWUgKnR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKyAgaW50IHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrCisrICAvKiBGb2xsb3cgdHlwZWRlZnMgYW5kIHF1YWxpZmllcnMgdG8gZ2V0IHRvIHRoZSBhY3R1YWwgdHlwZS4gICovCisrICB3aGlsZSAodGFnID09IERXX1RBR190eXBlZGVmCisrCSB8fCB0YWcgPT0gRFdfVEFHX2NvbnN0X3R5cGUgfHwgdGFnID09IERXX1RBR192b2xhdGlsZV90eXBlCisrCSB8fCB0YWcgPT0gRFdfVEFHX3Jlc3RyaWN0X3R5cGUpCisrICAgIHsKKysgICAgICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7CisrICAgICAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisrICAgICAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKysgICAgfQorKworKyAgc3dpdGNoICh0YWcpCisrICAgIHsKKysgICAgY2FzZSAtMToKKysgICAgICByZXR1cm4gLTE7CisrCisrICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6CisrICAgICAgaWYgKCEgZHdhcmZfaGFzYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSkpCisrCXsKKysJICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7CisrCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisrCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKysJfQorKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrCisrICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKysgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKKysgICAgY2FzZSBEV19UQUdfcG9pbnRlcl90eXBlOgorKyAgICBjYXNlIERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGU6CisrICAgICAgeworKyAgICAgICAgRHdhcmZfV29yZCBzaXplOworKwlpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplLAorKwkJCQkJICZhdHRyX21lbSksICZzaXplKSAhPSAwKQorKwkgIHsKKysJICAgIGlmICh0YWcgPT0gRFdfVEFHX3BvaW50ZXJfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZSkKKysJICAgICAgc2l6ZSA9IDQ7CisrCSAgICBlbHNlCisrCSAgICAgIHJldHVybiAtMTsKKysJICB9CisrCWlmICh0YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZSkKKysJICB7CisrCSAgICBEd2FyZl9Xb3JkIGVuY29kaW5nOworKwkgICAgaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2VuY29kaW5nLAorKwkJCQkJICAgICAmYXR0cl9tZW0pLCAmZW5jb2RpbmcpICE9IDApCisrCSAgICAgIHJldHVybiAtMTsKKysKKysJICAgIGlmIChlbmNvZGluZyA9PSBEV19BVEVfZmxvYXQpCisrCSAgICAgIHsKKysJCWlmIChwYTY0KSB7CisrCQkgICpsb2NwID0gbG9jX2ZwcmVnOworKwkJICBpZiAoc2l6ZSA8PSA4KQorKwkJICAgICAgcmV0dXJuIG5sb2NfZnByZWc7CisrCQl9CisrCQllbHNlIHsKKysJCSAgKmxvY3AgPSBsb2NfZnByZWczMjsKKysJCSAgaWYgKHNpemUgPD0gNCkKKysJCSAgICByZXR1cm4gbmxvY19mcHJlZzMyOworKwkJICBlbHNlIGlmIChzaXplIDw9IDgpCisrCQkgICAgcmV0dXJuIG5sb2NfZnByZWdwYWlyMzI7CisrCQl9CisrCQlnb3RvIGFnZ3JlZ2F0ZTsKKysJICAgICAgfQorKwkgIH0KKysJaWYgKHBhNjQpCisrCSAgKmxvY3AgPSBsb2NfaW50cmVnOworKwllbHNlCisrCSAgKmxvY3AgPSBsb2NfaW50cmVnMzI7CisrCWlmIChzaXplIDw9IHJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVnOworKwlpZiAoc2l6ZSA8PSAyICogcmVnc2l6ZSkKKysJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOworKworKwkvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCisrICAgICAgfQorKworKyAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKysgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKysgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKKysgICAgY2FzZSBEV19UQUdfYXJyYXlfdHlwZToKKysgICAgYWdncmVnYXRlOiB7CisrICAgICAgICBEd2FyZl9Xb3JkIHNpemU7CisrCWlmIChkd2FyZl9hZ2dyZWdhdGVfc2l6ZSAodHlwZWRpZSwgJnNpemUpICE9IDApCisrCSAgcmV0dXJuIC0xOworKwlpZiAocGE2NCkKKysgICAgICAgICAgKmxvY3AgPSBsb2NfaW50cmVnOworKwllbHNlCisrCSAgKmxvY3AgPSBsb2NfaW50cmVnMzI7CisrICAgICAgICBpZiAoc2l6ZSA8PSByZWdzaXplKQorKwkgIHJldHVybiBubG9jX2ludHJlZzsKKysgICAgICAgIGlmIChzaXplIDw9IDIgKiByZWdzaXplKQorKwkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7CisrI2lmIDAKKysJLyogdGhlcmUgc2hvdWxkIGJlIHNvbWUgd2F5IHRvIGtub3cgdGhpcyBsb2NhdGlvbi4uLiBCdXQgSSBkbyBub3Qgc2VlIGl0LiAqLworKyAgICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOworKyAgICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOworKyNlbmRpZgorKwkvKiBmYWxsIHRocm91Z2guICAqLworKyAgICAgIH0KKysgICAgfQorKworKyAgLyogWFhYIFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byByZXR1cm4gc3BlY2lmaWMgZXJyb3JzIGZyb20gZWJsIGNhbGxzLgorKyAgICAgVGhpcyB2YWx1ZSBtZWFucyB3ZSBkbyBub3QgdW5kZXJzdGFuZCB0aGUgdHlwZSwgYnV0IGl0IGlzIHdlbGwtZm9ybWVkCisrICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLworKyAgcmV0dXJuIC0yOworK30KKysKKytpbnQKKytwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzMyIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisreworKyAgcmV0dXJuIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMCk7CisrfQorKworK2ludAorK3BhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fNjQgKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyt7CisrICByZXR1cm4gcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKGZ1bmN0eXBlZGllLCBsb2NwLCAxKTsKKyt9CisrCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jIGIvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDExMWE3NgorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCitAQCAtMCwwICsxLDExMiBAQAorKy8qIFBBLVJJU0Mgc3BlY2lmaWMgc3ltYm9saWMgbmFtZSBoYW5kbGluZy4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPiwgMjAwMi4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxlbGYuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrI2RlZmluZSBCQUNLRU5ECQlwYXJpc2NfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKytjb25zdCBjaGFyICoKKytwYXJpc2Nfc2VnbWVudF90eXBlX25hbWUgKGludCBzZWdtZW50LCBjaGFyICpidWYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorKwkJCXNpemVfdCBsZW4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQorK3sKKysgIHN3aXRjaCAoc2VnbWVudCkKKysgICAgeworKyAgICBjYXNlIFBUX1BBUklTQ19BUkNIRVhUOgorKyAgICAgIHJldHVybiAiUEFSSVNDX0FSQ0hFWFQiOworKyAgICBjYXNlIFBUX1BBUklTQ19VTldJTkQ6CisrICAgICAgcmV0dXJuICJQQVJJU0NfVU5XSU5EIjsKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKysgICAgfQorKyAgcmV0dXJuIE5VTEw7CisrfQorKworKy8qIFJldHVybiBzeW1ib2xpYyByZXByZXNlbnRhdGlvbiBvZiBzeW1ib2wgdHlwZS4gICovCisrY29uc3QgY2hhciAqCisrcGFyaXNjX3N5bWJvbF90eXBlX25hbWUoaW50IHN5bWJvbCwgY2hhciAqYnVmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgc2l6ZV90IGxlbiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCisreworKwlpZiAoc3ltYm9sID09IFNUVF9QQVJJU0NfTUlMTElDT0RFKQorKwkgIHJldHVybiAiUEFSSVNDX01JTExJIjsKKysJcmV0dXJuIE5VTEw7CisrfQorKworKy8qIFJldHVybiBzeW1ib2xpYyByZXByZXNlbnRhdGlvbiBvZiBzZWN0aW9uIHR5cGUuICAqLworK2NvbnN0IGNoYXIgKgorK3BhcmlzY19zZWN0aW9uX3R5cGVfbmFtZSAoaW50IHR5cGUsCisrCQkJY2hhciAqYnVmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysJCQlzaXplX3QgbGVuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKKyt7CisrICBzd2l0Y2ggKHR5cGUpCisrICAgIHsKKysgICAgY2FzZSBTSFRfUEFSSVNDX0VYVDoKKysgICAgICByZXR1cm4gIlBBUklTQ19FWFQiOworKyAgICBjYXNlIFNIVF9QQVJJU0NfVU5XSU5EOgorKyAgICAgIHJldHVybiAiUEFSSVNDX1VOV0lORCI7CisrICAgIGNhc2UgU0hUX1BBUklTQ19ET0M6CisrICAgICAgcmV0dXJuICJQQVJJU0NfRE9DIjsKKysgICAgfQorKworKyAgcmV0dXJuIE5VTEw7CisrfQorKworKy8qIENoZWNrIHdoZXRoZXIgbWFjaGluZSBmbGFncyBhcmUgdmFsaWQuICAqLworK2Jvb2wKKytwYXJpc2NfbWFjaGluZV9mbGFnX2NoZWNrIChHRWxmX1dvcmQgZmxhZ3MpCisreworKyAgaWYgKGZsYWdzICZ+IChFRl9QQVJJU0NfVFJBUE5JTCB8IEVGX1BBUklTQ19FWFQgfCBFRl9QQVJJU0NfTFNCIHwKKysJRUZfUEFSSVNDX1dJREUgfCBFRl9QQVJJU0NfTk9fS0FCUCB8CisrCUVGX1BBUklTQ19MQVpZU1dBUCB8IEVGX1BBUklTQ19BUkNIKSkKKysgICAgcmV0dXJuIDA7CisrCisrICBHRWxmX1dvcmQgYXJjaCA9IGZsYWdzICYgRUZfUEFSSVNDX0FSQ0g7CisrCisrICByZXR1cm4gKChhcmNoID09IEVGQV9QQVJJU0NfMV8wKSB8fCAoYXJjaCA9PSBFRkFfUEFSSVNDXzFfMSkgfHwKKysgICAgICAoYXJjaCA9PSBFRkFfUEFSSVNDXzJfMCkpOworK30KKysKKysvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCisrRWxmX1R5cGUKKytwYXJpc2NfcmVsb2Nfc2ltcGxlX3R5cGUgKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IHR5cGUpCisreworKyAgc3dpdGNoICh0eXBlKQorKyAgICB7CisrICAgIGNhc2UgUl9QQVJJU0NfRElSNjQ6CisrICAgIGNhc2UgUl9QQVJJU0NfU0VDUkVMNjQ6CisrICAgICAgcmV0dXJuIEVMRl9UX1hXT1JEOworKyAgICBjYXNlIFJfUEFSSVNDX0RJUjMyOgorKyAgICBjYXNlIFJfUEFSSVNDX1NFQ1JFTDMyOgorKyAgICAgIHJldHVybiBFTEZfVF9XT1JEOworKyAgICBkZWZhdWx0OgorKyAgICAgIHJldHVybiBFTEZfVF9OVU07CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCitpbmRleCBmNzc0ODk4Li42YzlmNjFlIDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZi5oCisrKysgYi9saWJlbGYvZWxmLmgKK0BAIC0yMTUzLDE2ICsyMTUzLDI0IEBAIGVudW0KKyAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMTdGCTEyCS8qIDE3IGJpdHMgb2YgcmVsLiBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMTRSCTE0CS8qIFJpZ2h0IDE0IGJpdHMgb2YgcmVsLiBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX0RQUkVMMjFMCTE4CS8qIExlZnQgMjEgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLworKyNkZWZpbmUgUl9QQVJJU0NfRFBSRUwxNFdSCTE5CisrI2RlZmluZSBSX1BBUklTQ19EUFJFTDE0RFIJMjAKKyAjZGVmaW5lIFJfUEFSSVNDX0RQUkVMMTRSCTIyCS8qIFJpZ2h0IDE0IGJpdHMgb2YgcmVsLiBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX0dQUkVMMjFMCTI2CS8qIEdQLXJlbGF0aXZlLCBsZWZ0IDIxIGJpdHMuICAqLworICNkZWZpbmUgUl9QQVJJU0NfR1BSRUwxNFIJMzAJLyogR1AtcmVsYXRpdmUsIHJpZ2h0IDE0IGJpdHMuICAqLworICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYyMUwJMzQJLyogTFQtcmVsYXRpdmUsIGxlZnQgMjEgYml0cy4gICovCisgI2RlZmluZSBSX1BBUklTQ19MVE9GRjE0UgkzOAkvKiBMVC1yZWxhdGl2ZSwgcmlnaHQgMTQgYml0cy4gICovCisrI2RlZmluZSBSX1BBUklTQ19ETFRJTkQxNEYJMzkKKysjZGVmaW5lIFJfUEFSSVNDX1NFVEJBU0UJNDAKKyAjZGVmaW5lIFJfUEFSSVNDX1NFQ1JFTDMyCTQxCS8qIDMyIGJpdHMgc2VjdGlvbiByZWwuIGFkZHJlc3MuICAqLworKyNkZWZpbmUgUl9QQVJJU0NfQkFTRVJFTDIxTAk0MgorKyNkZWZpbmUgUl9QQVJJU0NfQkFTRVJFTDE3Ugk0MworKyNkZWZpbmUgUl9QQVJJU0NfQkFTRVJFTDE0Ugk0NgorICNkZWZpbmUgUl9QQVJJU0NfU0VHQkFTRQk0OAkvKiBObyByZWxvY2F0aW9uLCBzZXQgc2VnbWVudCBiYXNlLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX1NFR1JFTDMyCTQ5CS8qIDMyIGJpdHMgc2VnbWVudCByZWwuIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMjFMCTUwCS8qIFBMVCByZWwuIGFkZHJlc3MsIGxlZnQgMjEgYml0cy4gICovCisgI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNFIJNTQJLyogUExUIHJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCisrI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNEYJNTUKKyAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIzMgk1NwkvKiAzMiBiaXRzIExULXJlbC4gZnVuY3Rpb24gcG9pbnRlci4gKi8KKyAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIyMUwJNTgJLyogTFQtcmVsLiBmY3QgcHRyLCBsZWZ0IDIxIGJpdHMuICovCisgI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMTRSCTYyCS8qIExULXJlbC4gZmN0IHB0ciwgcmlnaHQgMTQgYml0cy4gKi8KK0BAIC0yMTcxLDYgKzIxNzksNyBAQCBlbnVtCisgI2RlZmluZSBSX1BBUklTQ19QTEFCRUwyMUwJNjYJLyogTGVmdCAyMSBiaXRzIG9mIGZkZXNjIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUExBQkVMMTRSCTcwCS8qIFJpZ2h0IDE0IGJpdHMgb2YgZmRlc2MgYWRkcmVzcy4gICovCisgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDY0CTcyCS8qIDY0IGJpdHMgUEMtcmVsLiBhZGRyZXNzLiAgKi8KKysjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMjJDCTczCisgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDIyRgk3NAkvKiAyMiBiaXRzIFBDLXJlbC4gYWRkcmVzcy4gICovCisgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0V1IJNzUJLyogUEMtcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMTREUgk3NgkvKiBQQyByZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLworQEAgLTIxOTYsNiArMjIwNSw4IEBAIGVudW0KKyAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMTZXRgkxMDIJLyogMTYgYml0cyBMVC1yZWwuIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNkRGCTEwMwkvKiAxNiBiaXRzIExULXJlbC4gYWRkcmVzcy4gICovCisgI2RlZmluZSBSX1BBUklTQ19TRUNSRUw2NAkxMDQJLyogNjQgYml0cyBzZWN0aW9uIHJlbC4gYWRkcmVzcy4gICovCisrI2RlZmluZSBSX1BBUklTQ19CQVNFUkVMMTRXUgkxMDcKKysjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwxNERSCTEwOAorICNkZWZpbmUgUl9QQVJJU0NfU0VHUkVMNjQJMTEyCS8qIDY0IGJpdHMgc2VnbWVudCByZWwuIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRXUgkxMTUJLyogUExULXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCisgI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNERSCTExNgkvKiBQTFQtcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtbWlwc19iYWNrZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtbWlwc19iYWNrZW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNGRhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1taXBzX2JhY2tlbmQucGF0Y2gKQEAgLTAsMCArMSw3MTggQEAKK0Zyb20gNTlmZmI4NmJkYTg0NWE2OGQzNjg2YWZhN2JjNzg0MTMxZGY2NzhmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTU6NDU6NTggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWlwc19iYWNrZW5kCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCittaXBzX2JhY2tlbmQuZGlmZiBhbmQgcmViYXNlIHRvIDAuMTcyCisKK2h0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAtMC41LmRlYmlhbi50YXIueHoKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFja2VuZHMvTWFrZWZpbGUuYW0gICAgfCAgIDggKy0KKyBiYWNrZW5kcy9taXBzX2luaXQuYyAgICB8ICA1OSArKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JlZ3MuYyAgICB8IDEwNCArKysrKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWxvYy5kZWYgfCAgNzkgKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZXR2YWwuYyAgfCAzMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19zeW1ib2wuYyAgfCAgNTIgKysrKysrKysKKyBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyB8ICAgMiArCisgNyBmaWxlcyBjaGFuZ2VkLCA2MjMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19pbml0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19yZWdzLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19yZXR2YWwuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3N5bWJvbC5jCisKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9NYWtlZmlsZS5hbSBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCitpbmRleCAxZTRiOGU5Li5lN2JjY2Y4IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KKysrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCitAQCAtMzMsMTMgKzMzLDEzIEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCisgCisgCisgbW9kdWxlcyA9IGkzODYgc2ggeDg2XzY0IGlhNjQgYWxwaGEgYXJtIGFhcmNoNjQgc3BhcmMgcHBjIHBwYzY0IHMzOTAgXAorLQkgIHRpbGVneCBtNjhrIGJwZiByaXNjdiBwYXJpc2MKKysJICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgcGFyaXNjIG1pcHMKKyBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAorIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKKyAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCisgCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAorIAkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3Jpc2N2X3BpYy5hIFwKKy0JICAgICBsaWJlYmxfcGFyaXNjX3BpYy5hCisrCSAgICAgbGliZWJsX3BhcmlzY19waWMuYSBsaWJlYmxfbWlwc19waWMuYQorIG5vaW5zdF9MSUJSQVJJRVMgPSAkKGxpYmVibF9waWMpCisgbm9pbnN0X0RBVEEgPSAkKGxpYmVibF9waWM6X3BpYy5hPS5zbykKKyAKK0BAIC0xMzksNiArMTM5LDEwIEBAIHBhcmlzY19TUkNTID0gcGFyaXNjX2luaXQuYyBwYXJpc2Nfc3ltYm9sLmMgcGFyaXNjX3JlZ3MuYyBwYXJpc2NfcmV0dmFsLmMKKyBsaWJlYmxfcGFyaXNjX3BpY19hX1NPVVJDRVMgPSAkKHBhcmlzY19TUkNTKQorIGFtX2xpYmVibF9wYXJpc2NfcGljX2FfT0JKRUNUUyA9ICQocGFyaXNjX1NSQ1M6LmM9Lm9zKQorIAorK21pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYworK2xpYmVibF9taXBzX3BpY19hX1NPVVJDRVMgPSAkKG1pcHNfU1JDUykKKythbV9saWJlYmxfbWlwc19waWNfYV9PQkpFQ1RTID0gJChtaXBzX1NSQ1M6LmM9Lm9zKQorKworIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpCisgCUBybSAtZiAkKEA6LnNvPS5tYXApCisgCSQoQU1fVl9hdCllY2hvICdFTEZVVElMU18kKFBBQ0tBR0VfVkVSU0lPTikgeyBnbG9iYWw6ICQqX2luaXQ7IGxvY2FsOiAqOyB9OycgXAorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfaW5pdC5jIGIvYmFja2VuZHMvbWlwc19pbml0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45NzVjMDRlCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX2luaXQuYworQEAgLTAsMCArMSw1OSBAQAorKy8qIEluaXRpYWxpemF0aW9uIG9mIG1pcHMgc3BlY2lmaWMgYmFja2VuZCBsaWJyYXJ5LgorKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNkZWZpbmUgQkFDS0VORAkJbWlwc18KKysjZGVmaW5lIFJFTE9DX1BSRUZJWAlSX01JUFNfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKysvKiBUaGlzIGRlZmluZXMgdGhlIGNvbW1vbiByZWxvYyBob29rcyBiYXNlZCBvbiBtaXBzX3JlbG9jLmRlZi4gICovCisrI2luY2x1ZGUgImNvbW1vbi1yZWxvYy5jIgorKworK2NvbnN0IGNoYXIgKgorK21pcHNfaW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorKyAgICAgR0VsZl9IYWxmIG1hY2hpbmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorKyAgICAgRWJsICplaCwKKysgICAgIHNpemVfdCBlaGxlbikKKyt7CisrICAvKiBDaGVjayB3aGV0aGVyIHRoZSBFbGZfQkggb2JqZWN0IGhhcyBhIHN1ZmZpY2VudCBzaXplLiAgKi8KKysgIGlmIChlaGxlbiA8IHNpemVvZiAoRWJsKSkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICAvKiBXZSBoYW5kbGUgaXQuICAqLworKyAgaWYgKG1hY2hpbmUgPT0gRU1fTUlQUykKKysgICAgZWgtPm5hbWUgPSAiTUlQUyBSMzAwMCBiaWctZW5kaWFuIjsKKysgIGVsc2UgaWYgKG1hY2hpbmUgPT0gRU1fTUlQU19SUzNfTEUpCisrICAgIGVoLT5uYW1lID0gIk1JUFMgUjMwMDAgbGl0dGxlLWVuZGlhbiI7CisrCisrICBtaXBzX2luaXRfcmVsb2MgKGVoKTsKKysgIEhPT0sgKGVoLCByZWxvY19zaW1wbGVfdHlwZSk7CisrICBIT09LIChlaCwgcmV0dXJuX3ZhbHVlX2xvY2F0aW9uKTsKKysgIEhPT0sgKGVoLCByZWdpc3Rlcl9pbmZvKTsKKysKKysgIHJldHVybiBNT0RWRVJTSU9OOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JlZ3MuYyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDRmODZjYgorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZWdzLmMKK0BAIC0wLDAgKzEsMTA0IEBACisrLyogUmVnaXN0ZXIgbmFtZXMgYW5kIG51bWJlcnMgZm9yIE1JUFMgRFdBUkYuCisrICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxkd2FyZi5oPgorKworKyNkZWZpbmUgQkFDS0VORCBtaXBzXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrc3NpemVfdAorK21pcHNfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCisrCQkgICAgaW50IHJlZ25vLCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKKysJCSAgICBjb25zdCBjaGFyICoqcHJlZml4LCBjb25zdCBjaGFyICoqc2V0bmFtZSwKKysJCSAgICBpbnQgKmJpdHMsIGludCAqdHlwZSkKKyt7CisrICBpZiAobmFtZSA9PSBOVUxMKQorKyAgICByZXR1cm4gNjY7CisrCisrICBpZiAocmVnbm8gPCAwIHx8IHJlZ25vID4gNjUgfHwgbmFtZWxlbiA8IDQpCisrICAgIHJldHVybiAtMTsKKysKKysgICpwcmVmaXggPSAiJCI7CisrCisrICBpZiAocmVnbm8gPCAzMikKKysgICAgeworKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIGlmIChyZWdubyA8IDMyICsgMTApCisrICAgICAgICB7CisrICAgICAgICAgIG5hbWVbMF0gPSByZWdubyArICcwJzsKKysgICAgICAgICAgbmFtZWxlbiA9IDE7CisrICAgICAgICB9CisrICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICBuYW1lWzBdID0gKHJlZ25vIC8gMTApICsgJzAnOworKyAgICAgICAgICBuYW1lWzFdID0gKHJlZ25vICUgMTApICsgJzAnOworKyAgICAgICAgICBuYW1lbGVuID0gMjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAocmVnbm8gPCA2NCkKKysgICAgeworKyAgICAgICpzZXRuYW1lID0gIkZQVSI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBuYW1lWzBdID0gJ2YnOworKyAgICAgIGlmIChyZWdubyA8IDMyICsgMTApCisrCXsKKysJICBuYW1lWzFdID0gKHJlZ25vIC0gMzIpICsgJzAnOworKwkgIG5hbWVsZW4gPSAyOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSAvIDEwICsgJzAnOworKwkgIG5hbWVbMl0gPSAocmVnbm8gLSAzMikgJSAxMCArICcwJzsKKysJICBuYW1lbGVuID0gMzsKKysJfQorKyAgICB9CisrICBlbHNlIGlmIChyZWdubyA9PSA2NCkKKysgICAgeworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIG5hbWVbMF0gPSAnaCc7CisrICAgICAgbmFtZVsxXSA9ICdpJzsKKysgICAgICBuYW1lbGVuID0gMjsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgbmFtZVswXSA9ICdsJzsKKysgICAgICBuYW1lWzFdID0gJ28nOworKyAgICAgIG5hbWVsZW4gPSAyOworKyAgICB9CisrCisrICBuYW1lW25hbWVsZW4rK10gPSAnXDAnOworKyAgcmV0dXJuIG5hbWVsZW47CisrfQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmIGIvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40NTc5OTcwCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZgorQEAgLTAsMCArMSw3OSBAQAorKy8qIExpc3QgdGhlIHJlbG9jYXRpb24gdHlwZXMgZm9yIG1pcHMuICAtKi0gQyAtKi0KKysgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKy8qIAkgICAgTkFNRSwJCVJFTHxFWEVDfERZTgkqLworKworK1JFTE9DX1RZUEUgKE5PTkUsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFICgxNiwgICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMzIsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFJFTDMyLCAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFICgyNiwgICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSEkxNiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKExPMTYsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHUFJFTDE2LCAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoTElURVJBTCwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVDE2LCAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChQQzE2LCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQ0FMTDE2LCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdQUkVMMzIsICAgICAgICAgICAgMCkKKysKKytSRUxPQ19UWVBFIChTSElGVDUsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoU0hJRlQ2LCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKDY0LCAgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfRElTUCwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX1BBR0UsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9PRlNULCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfSEkxNiwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0xPMTYsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNVQiwgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChJTlNFUlRfQSwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSU5TRVJUX0IsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKERFTEVURSwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChISUdIRVIsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSElHSEVTVCwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKENBTExfSEkxNiwgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChDQUxMX0xPMTYsICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoU0NOX0RJU1AsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFJFTDE2LCAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChBRERfSU1NRURJQVRFLCAgICAgIDApCisrUkVMT0NfVFlQRSAoUEpVTVAsICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFJFTEdPVCwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChKQUxSLCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUE1PRDMyLCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUwzMiwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQTU9ENjQsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUFJFTDY0LCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19HRCwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfTERNLCAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUFJFTF9ISTE2LCAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfTE8xNiwgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfR09UVFBSRUwsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX1RQUkVMMzIsICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTDY0LCAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfVFBSRUxfSEkxNiwgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX1RQUkVMX0xPMTYsICAgICAwKQorKworKyNkZWZpbmUgTk9fQ09QWV9SRUxPQyAxCisrI2RlZmluZSBOT19SRUxBVElWRV9SRUxPQyAxCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZXR2YWwuYyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42NTZjZDFmCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCitAQCAtMCwwICsxLDMyMSBAQAorKy8qIEZ1bmN0aW9uIHJldHVybiB2YWx1ZSBsb2NhdGlvbiBmb3IgTGludXgvbWlwcyBBQkkuCisrICAgQ29weXJpZ2h0IChDKSAyMDA1IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8ZHdhcmYuaD4KKysjaW5jbHVkZSA8ZWxmLmg+CisrCisrI2luY2x1ZGUgIi4uL2xpYmVibC9saWJlYmxQLmgiCisrI2luY2x1ZGUgIi4uL2xpYmR3L2xpYmR3UC5oIgorKworKyNkZWZpbmUgQkFDS0VORCBtaXBzXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrLyogVGhlIEFCSSBvZiB0aGUgZmlsZS4gIEFsc28gc2VlIEVGX01JUFNfQUJJMiBhYm92ZS4gKi8KKysjZGVmaW5lIEVGX01JUFNfQUJJCQkweDAwMDBGMDAwCisrCisrLyogVGhlIG9yaWdpbmFsIG8zMiBhYmkuICovCisrI2RlZmluZSBFX01JUFNfQUJJX08zMiAgICAgICAgICAweDAwMDAxMDAwCisrCisrLyogTzMyIGV4dGVuZGVkIHRvIHdvcmsgb24gNjQgYml0IGFyY2hpdGVjdHVyZXMgKi8KKysjZGVmaW5lIEVfTUlQU19BQklfTzY0ICAgICAgICAgIDB4MDAwMDIwMDAKKysKKysvKiBFQUJJIGluIDMyIGJpdCBtb2RlICovCisrI2RlZmluZSBFX01JUFNfQUJJX0VBQkkzMiAgICAgICAweDAwMDAzMDAwCisrCisrLyogRUFCSSBpbiA2NCBiaXQgbW9kZSAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJNjQgICAgICAgMHgwMDAwNDAwMAorKworKy8qIEFsbCB0aGUgcG9zc2libGUgTUlQUyBBQklzLiAqLworK2VudW0gbWlwc19hYmkKKysgIHsKKysgICAgTUlQU19BQklfVU5LTk9XTiA9IDAsCisrICAgIE1JUFNfQUJJX04zMiwKKysgICAgTUlQU19BQklfTzMyLAorKyAgICBNSVBTX0FCSV9ONjQsCisrICAgIE1JUFNfQUJJX082NCwKKysgICAgTUlQU19BQklfRUFCSTMyLAorKyAgICBNSVBTX0FCSV9FQUJJNjQsCisrICAgIE1JUFNfQUJJX0xBU1QKKysgIH07CisrCisrLyogRmluZCB0aGUgbWlwcyBBQkkgb2YgdGhlIGN1cnJlbnQgZmlsZSAqLworK2VudW0gbWlwc19hYmkgZmluZF9taXBzX2FiaShFbGYgKmVsZikKKyt7CisrICBHRWxmX0VoZHIgZWhkcl9tZW07CisrICBHRWxmX0VoZHIgKmVoZHIgPSBnZWxmX2dldGVoZHIgKGVsZiwgJmVoZHJfbWVtKTsKKysKKysgIGlmIChlaGRyID09IE5VTEwpCisrICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOworKworKyAgR0VsZl9Xb3JkIGVsZl9mbGFncyA9IGVoZHItPmVfZmxhZ3M7CisrCisrICAvKiBDaGVjayBlbGZfZmxhZ3MgdG8gc2VlIGlmIGl0IHNwZWNpZmllcyB0aGUgQUJJIGJlaW5nIHVzZWQuICAqLworKyAgc3dpdGNoICgoZWxmX2ZsYWdzICYgRUZfTUlQU19BQkkpKQorKyAgICB7CisrICAgIGNhc2UgRV9NSVBTX0FCSV9PMzI6CisrICAgICAgcmV0dXJuIE1JUFNfQUJJX08zMjsKKysgICAgY2FzZSBFX01JUFNfQUJJX082NDoKKysgICAgICByZXR1cm4gTUlQU19BQklfTzY0OworKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTMyOgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJMzI7CisrICAgIGNhc2UgRV9NSVBTX0FCSV9FQUJJNjQ6CisrICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkk2NDsKKysgICAgZGVmYXVsdDoKKysgICAgICBpZiAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJMikpCisrCXJldHVybiBNSVBTX0FCSV9OMzI7CisrICAgIH0KKysKKysgIC8qIEdDQyBjcmVhdGVzIGEgcHNldWRvLXNlY3Rpb24gd2hvc2UgbmFtZSBkZXNjcmliZXMgdGhlIEFCSS4gICovCisrICBzaXplX3Qgc2hzdHJuZHg7CisrICBpZiAoZWxmX2dldHNoZHJzdHJuZHggKGVsZiwgJnNoc3RybmR4KSA8IDApCisrICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOworKworKyAgY29uc3QgY2hhciAqbmFtZTsKKysgIEVsZl9TY24gKnNjbiA9IE5VTEw7CisrICB3aGlsZSAoKHNjbiA9IGVsZl9uZXh0c2NuIChlbGYsIHNjbikpICE9IE5VTEwpCisrICAgIHsKKysgICAgICBHRWxmX1NoZHIgc2hkcl9tZW07CisrICAgICAgR0VsZl9TaGRyICpzaGRyID0gZ2VsZl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7CisrICAgICAgaWYgKHNoZHIgPT0gTlVMTCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOworKworKyAgICAgIG5hbWUgPSBlbGZfc3RycHRyIChlbGYsIHNoc3RybmR4LCBzaGRyLT5zaF9uYW1lKSA/OiAiIjsKKysgICAgICBpZiAoc3RybmNtcCAobmFtZSwgIi5tZGVidWcuIiwgOCkgIT0gMCkKKysgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaTMyIikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmlOMzIiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX04zMjsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaTY0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9ONjQ7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmlPNjQiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmkzMiIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuZWFiaTY0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7CisrICAgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX1VOS05PV047CisrICAgIH0KKysKKysgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOworK30KKysKKyt1bnNpZ25lZCBpbnQKKyttaXBzX2FiaV9yZWdzaXplIChlbnVtIG1pcHNfYWJpIGFiaSkKKyt7CisrICBzd2l0Y2ggKGFiaSkKKysgICAgeworKyAgICBjYXNlIE1JUFNfQUJJX0VBQkkzMjoKKysgICAgY2FzZSBNSVBTX0FCSV9PMzI6CisrICAgICAgcmV0dXJuIDQ7CisrICAgIGNhc2UgTUlQU19BQklfTjMyOgorKyAgICBjYXNlIE1JUFNfQUJJX042NDoKKysgICAgY2FzZSBNSVBTX0FCSV9PNjQ6CisrICAgIGNhc2UgTUlQU19BQklfRUFCSTY0OgorKyAgICAgIHJldHVybiA4OworKyAgICBjYXNlIE1JUFNfQUJJX1VOS05PV046CisrICAgIGNhc2UgTUlQU19BQklfTEFTVDoKKysgICAgZGVmYXVsdDoKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorK30KKysKKysKKysvKiAkdjAgb3IgcGFpciAkdjAsICR2MSAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnX28zMltdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICB9OworKworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWczIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgIH07CisrI2RlZmluZSBubG9jX2ludHJlZwkxCisrI2RlZmluZSBubG9jX2ludHJlZ3BhaXIJNAorKworKy8qICRmMCAoZmxvYXQpLCBvciBwYWlyICRmMCwgJGYxIChkb3VibGUpLgorKyAqIGYyL2YzIGFyZSB1c2VkIGZvciBDT01QTEVYICg9IDIgZG91YmxlcykgcmV0dXJucyBpbiBGb3J0cmFuICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ19vMzJbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMzIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzUgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgfTsKKysKKysvKiAkZjAsIG9yIHBhaXIgJGYwLCAkZjIuICAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM0IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgIH07CisrI2RlZmluZSBubG9jX2ZwcmVnICAxCisrI2RlZmluZSBubG9jX2ZwcmVncGFpciA0CisrI2RlZmluZSBubG9jX2ZwcmVncXVhZCA4CisrCisrLyogVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdHVyZSBhbmQgaXMgYWN0dWFsbHkgc3RvcmVkIGluIHN0YWNrIHNwYWNlCisrICAgcGFzc2VkIGluIGEgaGlkZGVuIGFyZ3VtZW50IGJ5IHRoZSBjYWxsZXIuICBCdXQsIHRoZSBjb21waWxlcgorKyAgIGhlbHBmdWxseSByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoYXQgc3BhY2UgaW4gJHYwLiAgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2FnZ3JlZ2F0ZVtdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX2JyZWcyLCAubnVtYmVyID0gMCB9CisrICB9OworKyNkZWZpbmUgbmxvY19hZ2dyZWdhdGUgMQorKworK2ludAorK21pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisreworKyAgLyogRmlyc3QgZmluZCB0aGUgQUJJIHVzZWQgYnkgdGhlIGVsZiBvYmplY3QgKi8KKysgIGVudW0gbWlwc19hYmkgYWJpID0gZmluZF9taXBzX2FiaShmdW5jdHlwZWRpZS0+Y3UtPmRiZy0+ZWxmKTsKKysKKysgIC8qIFNvbWV0aGluZyB3ZW50IHNlcmlvdXNseSB3cm9uZyB3aGlsZSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgQUJJICovCisrICBpZiAoYWJpID09IE1JUFNfQUJJX0xBU1QpCisrICAgIHJldHVybiAtMTsKKysKKysgIC8qIFdlIGNvdWxkbid0IGlkZW50aWZ5IHRoZSBBQkksIGJ1dCB0aGUgZmlsZSBzZWVtcyB2YWxpZCAqLworKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9VTktOT1dOKQorKyAgICByZXR1cm4gLTI7CisrCisrICAvKiBDYW4ndCBoYW5kbGUgRUFCSSB2YXJpYW50cyAqLworKyAgaWYgKChhYmkgPT0gTUlQU19BQklfRUFCSTMyKSB8fCAoYWJpID09IE1JUFNfQUJJX0VBQkk2NCkpCisrICAgIHJldHVybiAtMjsKKysKKysgIHVuc2lnbmVkIGludCByZWdzaXplID0gbWlwc19hYmlfcmVnc2l6ZSAoYWJpKTsKKysgIGlmICghcmVnc2l6ZSkKKysgICAgcmV0dXJuIC0yOworKworKyAgLyogU3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24ncyB0eXBlLCBhbmQgZ2V0IHRoZSBEV19BVF90eXBlIGF0dHJpYnV0ZSwKKysgICAgIHdoaWNoIGlzIHRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUuICAqLworKworKyAgRHdhcmZfQXR0cmlidXRlIGF0dHJfbWVtOworKyAgRHdhcmZfQXR0cmlidXRlICphdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKGZ1bmN0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKyAgaWYgKGF0dHIgPT0gTlVMTCkKKysgICAgLyogVGhlIGZ1bmN0aW9uIGhhcyBubyByZXR1cm4gdmFsdWUsIGxpa2UgYSBgdm9pZCcgZnVuY3Rpb24gaW4gQy4gICovCisrICAgIHJldHVybiAwOworKworKyAgRHdhcmZfRGllIGRpZV9tZW07CisrICBEd2FyZl9EaWUgKnR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKyAgaW50IHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrCisrICAvKiBGb2xsb3cgdHlwZWRlZnMgYW5kIHF1YWxpZmllcnMgdG8gZ2V0IHRvIHRoZSBhY3R1YWwgdHlwZS4gICovCisrICB3aGlsZSAodGFnID09IERXX1RBR190eXBlZGVmCisrCSB8fCB0YWcgPT0gRFdfVEFHX2NvbnN0X3R5cGUgfHwgdGFnID09IERXX1RBR192b2xhdGlsZV90eXBlCisrCSB8fCB0YWcgPT0gRFdfVEFHX3Jlc3RyaWN0X3R5cGUpCisrICAgIHsKKysgICAgICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7CisrICAgICAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisrICAgICAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKysgICAgfQorKworKyAgc3dpdGNoICh0YWcpCisrICAgIHsKKysgICAgY2FzZSAtMToKKysgICAgICByZXR1cm4gLTE7CisrCisrICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6CisrICAgICAgaWYgKCEgZHdhcmZfaGFzYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSkpCisrCXsKKysJICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7CisrCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisrCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKysJfQorKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrCisrICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKysgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKKysgICAgY2FzZSBEV19UQUdfcG9pbnRlcl90eXBlOgorKyAgICBjYXNlIERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGU6CisrICAgICAgeworKyAgICAgICAgRHdhcmZfV29yZCBzaXplOworKwlpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplLAorKwkJCQkJICZhdHRyX21lbSksICZzaXplKSAhPSAwKQorKwkgIHsKKysJICAgIGlmICh0YWcgPT0gRFdfVEFHX3BvaW50ZXJfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZSkKKysJICAgICAgc2l6ZSA9IHJlZ3NpemU7CisrCSAgICBlbHNlCisrCSAgICAgIHJldHVybiAtMTsKKysJICB9CisrCWlmICh0YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZSkKKysJICB7CisrCSAgICBEd2FyZl9Xb3JkIGVuY29kaW5nOworKwkgICAgaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2VuY29kaW5nLAorKwkJCQkJICAgICAmYXR0cl9tZW0pLCAmZW5jb2RpbmcpICE9IDApCisrCSAgICAgIHJldHVybiAtMTsKKysKKysjZGVmaW5lIEFCSV9MT0MobG9jLCByZWdzaXplKSAoKHJlZ3NpemUpID09IDQgPyAobG9jICMjIF9vMzIpIDogKGxvYykpCisrCisrCSAgICBpZiAoZW5jb2RpbmcgPT0gRFdfQVRFX2Zsb2F0KQorKwkgICAgICB7CisrCQkqbG9jcCA9IEFCSV9MT0MobG9jX2ZwcmVnLCByZWdzaXplKTsKKysJCWlmIChzaXplIDw9IHJlZ3NpemUpCisrCQkgICAgcmV0dXJuIG5sb2NfZnByZWc7CisrCisrCQlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCisrICAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfZnByZWdwYWlyOworKworKwkJaWYgKHNpemUgPD0gNCpyZWdzaXplICYmIGFiaSA9PSBNSVBTX0FCSV9PMzIpCisrICAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfZnByZWdxdWFkOworKworKwkJZ290byBhZ2dyZWdhdGU7CisrCSAgICAgIH0KKysJICB9CisrCSpsb2NwID0gQUJJX0xPQyhsb2NfaW50cmVnLCByZWdzaXplKTsKKysJaWYgKHNpemUgPD0gcmVnc2l6ZSkKKysJICByZXR1cm4gbmxvY19pbnRyZWc7CisrCWlmIChzaXplIDw9IDIqcmVnc2l6ZSkKKysJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOworKworKwkvKiBFbHNlIGZhbGwgdGhyb3VnaC4gU2hvdWxkbid0IGhhcHBlbiB0aG91Z2ggKGF0IGxlYXN0IHdpdGggZ2NjKSAqLworKyAgICAgIH0KKysKKysgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6CisrICAgIGFnZ3JlZ2F0ZToKKysgICAgICAvKiBYWFggVE9ETzogQ2FuJ3QgaGFuZGxlIHN0cnVjdHVyZSByZXR1cm4gd2l0aCBvdGhlciBBQkkncyB5ZXQgOi0vICovCisrICAgICAgaWYgKChhYmkgIT0gTUlQU19BQklfTzMyKSAmJiAoYWJpICE9IE1JUFNfQUJJX082NCkpCisrICAgICAgICByZXR1cm4gLTI7CisrCisrICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOworKyAgICAgIHJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKKysgICAgfQorKworKyAgLyogWFhYIFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byByZXR1cm4gc3BlY2lmaWMgZXJyb3JzIGZyb20gZWJsIGNhbGxzLgorKyAgICAgVGhpcyB2YWx1ZSBtZWFucyB3ZSBkbyBub3QgdW5kZXJzdGFuZCB0aGUgdHlwZSwgYnV0IGl0IGlzIHdlbGwtZm9ybWVkCisrICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLworKyAgcmV0dXJuIC0yOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3N5bWJvbC5jIGIvYmFja2VuZHMvbWlwc19zeW1ib2wuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmJhNDY1ZmUKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKK0BAIC0wLDAgKzEsNTIgQEAKKysvKiBNSVBTIHNwZWNpZmljIHN5bWJvbGljIG5hbWUgaGFuZGxpbmcuCisrICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKyAgIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4sIDIwMDIuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8ZWxmLmg+CisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworKyNkZWZpbmUgQkFDS0VORAkJbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworKy8qIENoZWNrIGZvciB0aGUgc2ltcGxlIHJlbG9jIHR5cGVzLiAgKi8KKytFbGZfVHlwZQorK21pcHNfcmVsb2Nfc2ltcGxlX3R5cGUgKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IHR5cGUpCisreworKyAgc3dpdGNoICh0eXBlKQorKyAgICB7CisrICAgIGNhc2UgUl9NSVBTXzE2OgorKyAgICAgIHJldHVybiBFTEZfVF9IQUxGOworKyAgICBjYXNlIFJfTUlQU18zMjoKKysgICAgICByZXR1cm4gRUxGX1RfV09SRDsKKysgICAgY2FzZSBSX01JUFNfNjQ6CisrICAgICAgcmV0dXJuIEVMRl9UX1hXT1JEOworKyAgICBkZWZhdWx0OgorKyAgICAgIHJldHVybiBFTEZfVF9OVU07CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworaW5kZXggOGIwNjNmNC4uNTQwNWIwYyAxMDA2NDQKKy0tLSBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCisrKysgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworQEAgLTcyLDYgKzcyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdAorICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMsIDAsIDAgfSwKKyAgIHsgInNwYXJjIiwgImVsZl9zcGFyY3Y4cGx1cyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDMzJQTFVTLCAwLCAwIH0sCisgICB7ICJzMzkwIiwgImVibF9zMzkwIiwgInMzOTAiLCA0LCBFTV9TMzkwLCAwLCAwIH0sCisrICB7ICJtaXBzIiwgImVsZl9taXBzIiwgIm1pcHMiLCA0LCBFTV9NSVBTLCAwLCAwIH0sCisrICB7ICJtaXBzIiwgImVsZl9taXBzZWwiLCAibWlwc2VsIiwgNCwgRU1fTUlQU19SUzNfTEUsIDAsIDAgfSwKKyAKKyAgIHsgIm0zMiIsICJlbGZfbTMyIiwgIm0zMiIsIDMsIEVNX00zMiwgMCwgMCB9LAorICAgeyAibTY4ayIsICJlbGZfbTY4ayIsICJtNjhrIiwgNCwgRU1fNjhLLCBFTEZDTEFTUzMyLCBFTEZEQVRBMk1TQiB9LAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1taXBzX3JlYWRlbGZfdy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLW1pcHNfcmVhZGVsZl93LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYWIzZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1taXBzX3JlYWRlbGZfdy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGExODhlYTFhZGE2Yjk5MGI3MmI5MTI2NmFlMDJkYTA1OGRjZDk1MjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLdXJ0IFJvZWNreCA8a3VydEByb2Vja3guYmU+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjQ5OjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgcmVhZGVsZiAtdyBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24gb24gbWlwcworCitCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzY2MjA0MQorRm9yd2FyZGVkOiBub3QtbmVlZGVkCisKK1Vwc3RyZWFtcyB3YW50cyBhIGNoYW5nZSB3aGVyZSB0aGlzIGlzIGhhbmRsZWQgYnkgYSBob29rIHRoYXQgbmVlZHMKK3RvIGJlIGZpbGxlZCBpbiBieSB0aGUgYmFja2VuZCBmb3IgdGhlIGFyY2guCisKK1NpZ25lZC1vZmYtYnk6IEt1cnQgUm9lY2t4IDxrdXJ0QHJvZWNreC5iZT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KK21pcHNfcmVhZGVsZl93LnBhdGNoIGFuZCByZWJhc2UgdG8gMC4xNzIKKworaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC0wLjUuZGViaWFuLnRhci54egorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3JlYWRlbGYuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKK2luZGV4IGYxODU4OTcuLjBkYjE5N2MgMTAwNjQ0CistLS0gYS9zcmMvcmVhZGVsZi5jCisrKysgYi9zcmMvcmVhZGVsZi5jCitAQCAtMTA5NzksNyArMTA5NzksOCBAQCBwcmludF9kZWJ1ZyAoRHdmbF9Nb2R1bGUgKmR3Zmxtb2QsIEVibCAqZWJsLCBHRWxmX0VoZHIgKmVoZHIpCisgICAgICAgR0VsZl9TaGRyIHNoZHJfbWVtOworICAgICAgIEdFbGZfU2hkciAqc2hkciA9IGdlbGZfZ2V0c2hkciAoc2NuLCAmc2hkcl9tZW0pOworIAorLSAgICAgIGlmIChzaGRyICE9IE5VTEwgJiYgc2hkci0+c2hfdHlwZSA9PSBTSFRfUFJPR0JJVFMpCisrICAgICAgaWYgKHNoZHIgIT0gTlVMTCAmJiAoCisrCSAoc2hkci0+c2hfdHlwZSA9PSBTSFRfUFJPR0JJVFMpIHx8IChzaGRyLT5zaF90eXBlID09IFNIVF9NSVBTX0RXQVJGKSkpCisgCXsKKyAJICBzdGF0aWMgY29uc3Qgc3RydWN0CisgCSAgeworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS10ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS10ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRjNmY0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLXRlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIGZlNzYxM2EzYjlmMjQ0M2NjMTE5MTc4MjYzNDhkNDUyMWYyNjdjOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjQ4OjMzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzdWl0ZSBpZ25vcmUgZWxmbGludAorCitPbiBtYW55IGFyY2hpdGVjdHVyZXMgdGhpcyB0ZXN0IGZhaWxzIGJlY2F1c2UgYmluYXJpZXMvbGlicyBwcm9kdWNlZCBieQorYmludXRpbHMgZG9uJ3QgcGFzcyBlbGZsaW50LiBIb3dldmVyIGVsZnV0aWxzIHNob3VsZG4ndCBGVEJGUyBiZWNhdXNlIG9mIHRoaXMuCisKK1NvIHdlIHJ1biB0aGUgdGVzdHMgb24gYWxsIGFyY2hzIHRvIHNlZSB3aGF0IGJyZWFrcywgYnV0IGlmIGl0IGJyZWFrcyB3ZSBpZ25vcmUKK3RoZSByZXN1bHQgKGV4aXRjb2RlIDc3IG1lYW5zOiB0aGlzIHRlc3Qgd2FzIHNraXBwZWQpLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQordGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgYW5kIHJlYmFzZSB0byAwLjE3MgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoIHwgIDIgKy0KKyB0ZXN0cy90ZXN0LXN1YnIuc2ggICAgICAgIHwgMTUgKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoIGIvdGVzdHMvcnVuLWVsZmxpbnQtc2VsZi5zaAoraW5kZXggNThmYTdkMC4uODVkMjFhNSAxMDA3NTUKKy0tLSBhL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKKysrKyBiL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKK0BAIC0xOCw1ICsxOCw1IEBACisgCisgLiAkc3JjZGlyL3Rlc3Qtc3Vici5zaAorIAorLXRlc3RydW5fb25fc2VsZiAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKKyt0ZXN0cnVuX29uX3NlbGZfc2tpcCAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKKyB0ZXN0cnVuX29uX3NlbGZfY29tcHJlc3NlZCAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0LXN1YnIuc2ggYi90ZXN0cy90ZXN0LXN1YnIuc2gKK2luZGV4IDA5ZjQyOGQuLjI2ZjYxZjEgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0LXN1YnIuc2gKKysrKyBiL3Rlc3RzL3Rlc3Qtc3Vici5zaAorQEAgLTIwMSwzICsyMDEsMTggQEAgdGVzdHJ1bl9vbl9zZWxmX3F1aWV0KCkKKyAgICMgT25seSBleGl0IGlmIHNvbWV0aGluZyBmYWlsZWQKKyAgIGlmIHRlc3QgJGV4aXRfc3RhdHVzICE9IDA7IHRoZW4gZXhpdCAkZXhpdF9zdGF0dXM7IGZpCisgfQorKworKyMgU2FtZSBhcyB0ZXN0cnVuX29uX3NlbGYoKSwgYnV0IHNraXAgb24gZmFpbHVyZS4KKyt0ZXN0cnVuX29uX3NlbGZfc2tpcCgpCisreworKyAgZXhpdF9zdGF0dXM9MAorKworKyAgZm9yIGZpbGUgaW4gJHNlbGZfdGVzdF9maWxlczsgZG8KKysgICAgICB0ZXN0cnVuICQqICRmaWxlIFwKKysJICB8fCB7IGVjaG8gIioqKiBmYWlsdXJlIGluICQqICRmaWxlIjsgZXhpdF9zdGF0dXM9Nzc7IH0KKysgIGRvbmUKKysKKysgICMgT25seSBleGl0IGlmIHNvbWV0aGluZyBmYWlsZWQKKysgIGlmIHRlc3QgJGV4aXRfc3RhdHVzICE9IDA7IHRoZW4gZXhpdCAkZXhpdF9zdGF0dXM7IGZpCisrfQorKworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCmluZGV4IGIxNzQ5OGYuLjRiZGIxZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoCkBAIC0xLDEyICsxLDEyIEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiBGcm9tIGZkYWFiMThhNjVlZDI1Mjk2NTZiYWE2NGNiNjE2OWYzNGQ3ZTUwN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYW1lcyBDb3dnaWxsIDxqYW1lczQxMEBjb3dnaWxsLm9yZy51az4KIERhdGU6IE1vbiwgNSBKYW4gMjAxNSAxNToxNzowMSArMDAwMAogU3ViamVjdDogW1BBVENIIDIvM10gQWRkIHN1cHBvcnQgZm9yIG1pcHM2NCBhYmlzIGluIG1pcHNfcmV0dmFsLmMKIAogU2lnbmVkLW9mZi1ieTogSmFtZXMgQ293Z2lsbCA8amFtZXM0MTBAY293Z2lsbC5vcmcudWs+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgYmFja2VuZHMvbWlwc19yZXR2YWwuYyB8IDEwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaAppbmRleCAyYTVmODYyLi5kMjdjZTZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaApAQCAtMSwzICsxLDYgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIEZyb20gNTlkNGI4YzQ4ZTUwNDBhZjdlMDJiMzRlYjI2ZWE2MDJlYzgyYTM4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphbWVzIENvd2dpbGwgPGphbWVzNDEwQGNvd2dpbGwub3JnLnVrPgogRGF0ZTogTW9uLCA1IEphbiAyMDE1IDE1OjE3OjAyICswMDAwCkBAIC0xMiw5ICsxNSw2IEBACiBiZWZvcmUgbWFuaXB1bGF0aW5nIHJlbG9jYXRpb25zIHNvIHRoYXQgdGhlc2UgY2hhbmdlcyB0YWtlIGVmZmVjdC4KIAogU2lnbmVkLW9mZi1ieTogSmFtZXMgQ293Z2lsbCA8amFtZXM0MTBAY293Z2lsbC5vcmcudWs+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgbGliZWxmL2dlbGZfZ2V0cmVsLmMgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrLS0KICBsaWJlbGYvZ2VsZl9nZXRyZWxhLmMgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKystLQpAQCAtMjAzLDcgKzIwMyw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gYS9zcmMvc3RyaXAuYwogKysrIGIvc3JjL3N0cmlwLmMKLUBAIC01MzIsNiArNTMyLDIzIEBAIGhhbmRsZV9lbGYgKGludCBmZCwgRWxmICplbGYsIGNvbnN0IGNoYXIKK0BAIC01OTgsNiArNTk4LDIzIEBAIGhhbmRsZV9lbGYgKGludCBmZCwgRWxmICplbGYsIGNvbnN0IGNoYXIKICAgICAgICBnb3RvIGZhaWw7CiAgICAgIH0KICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2FybV9iYWNrZW5kLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZjRiMDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2FybV9iYWNrZW5kLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw2MDMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBiL2JhY2tlbmRzL2FybV9pbml0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2JhY2tlbmRzL2FybV9pbml0LmMKLSsrKyBiL2JhY2tlbmRzL2FybV9pbml0LmMKLUBAIC0zNSwyMCArMzUsMzEgQEAKLSAjZGVmaW5lIFJFTE9DX1BSRUZJWAlSX0FSTV8KLSAjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotIAotKyNpbmNsdWRlICJsaWJlYmxfYXJtLmgiCi0rCi0gLyogVGhpcyBkZWZpbmVzIHRoZSBjb21tb24gcmVsb2MgaG9va3MgYmFzZWQgb24gYXJtX3JlbG9jLmRlZi4gICovCi0gI2luY2x1ZGUgImNvbW1vbi1yZWxvYy5jIgotIAotIAotIGNvbnN0IGNoYXIgKgotLWFybV9pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rYXJtX2luaXQgKEVsZiAqZWxmLAotIAkgIEdFbGZfSGFsZiBtYWNoaW5lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSAJICBFYmwgKmVoLAotIAkgIHNpemVfdCBlaGxlbikKLSB7Ci0rICBpbnQgc29mdF9mbG9hdCA9IDA7Ci0rCi0gICAvKiBDaGVjayB3aGV0aGVyIHRoZSBFbGZfQkggb2JqZWN0IGhhcyBhIHN1ZmZpY2VudCBzaXplLiAgKi8KLSAgIGlmIChlaGxlbiA8IHNpemVvZiAoRWJsKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0rICBpZiAoZWxmKSB7Ci0rICAgIEdFbGZfRWhkciBlaGRyX21lbTsKLSsgICAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7Ci0rICAgIGlmIChlaGRyICYmIChlaGRyLT5lX2ZsYWdzICYgRUZfQVJNX1NPRlRfRkxPQVQpKQotKyAgICAgIHNvZnRfZmxvYXQgPSAxOwotKyAgfQotKwotICAgLyogV2UgaGFuZGxlIGl0LiAgKi8KLSAgIGVoLT5uYW1lID0gIkFSTSI7Ci0gICBhcm1faW5pdF9yZWxvYyAoZWgpOwotQEAgLTYwLDcgKzcxLDEwIEBAIGFybV9pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2UKLSAgIEhPT0sgKGVoLCBjb3JlX25vdGUpOwotICAgSE9PSyAoZWgsIGF1eHZfaW5mbyk7Ci0gICBIT09LIChlaCwgY2hlY2tfb2JqZWN0X2F0dHJpYnV0ZSk7Ci0tICBIT09LIChlaCwgcmV0dXJuX3ZhbHVlX2xvY2F0aW9uKTsKLSsgIGlmIChzb2Z0X2Zsb2F0KQotKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9zb2Z0OwotKyAgZWxzZQotKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9oYXJkOwotICAgSE9PSyAoZWgsIGFiaV9jZmkpOwotICAgSE9PSyAoZWgsIGNoZWNrX3JlbG9jX3RhcmdldF90eXBlKTsKLSAgIEhPT0sgKGVoLCBzeW1ib2xfdHlwZV9uYW1lKTsKLUluZGV4OiBiL2JhY2tlbmRzL2FybV9yZWdzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2JhY2tlbmRzL2FybV9yZWdzLmMKLSsrKyBiL2JhY2tlbmRzL2FybV9yZWdzLmMKLUBAIC0zMSw2ICszMSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotIAotICNkZWZpbmUgQkFDS0VORCBhcm1fCi1AQCAtNzYsNiArNzcsOSBAQCBhcm1fcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgMTYgKyAwIC4uLiAxNiArIDc6Ci0rICAgICAgLyogQUFEV0FSRiBzYXlzIHRoYXQgdGhlcmUgYXJlIG5vIHJlZ2lzdGVycyBpbiB0aGF0IHJhbmdlLAotKyAgICAgICAqIGJ1dCBnY2MgbWFwcyBGUEEgcmVnaXN0ZXJzIGhlcmUKLSsgICAgICAgKi8KLSAgICAgICByZWdubyArPSA5NiAtIDE2OwotICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0gICAgIGNhc2UgOTYgKyAwIC4uLiA5NiArIDc6Ci1AQCAtODcsMTEgKzkxLDEzOSBAQCBhcm1fcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfCi0gICAgICAgbmFtZWxlbiA9IDI7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2UgNjQgKyAwIC4uLiA2NCArIDk6Ci0rICAgICAgKnNldG5hbWUgPSAiVkZQIjsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotKyAgICAgIG5hbWVbMF0gPSAncyc7Ci0rICAgICAgbmFtZVsxXSA9IHJlZ25vIC0gNjQgKyAnMCc7Ci0rICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgNjQgKyAxMCAuLi4gNjQgKyAzMToKLSsgICAgICAqc2V0bmFtZSA9ICJWRlAiOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7Ci0rICAgICAgbmFtZVswXSA9ICdzJzsKLSsgICAgICBuYW1lWzFdID0gKHJlZ25vIC0gNjQpIC8gMTAgKyAnMCc7Ci0rICAgICAgbmFtZVsyXSA9IChyZWdubyAtIDY0KSAlIDEwICsgJzAnOwotKyAgICAgIG5hbWVsZW4gPSAzOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIDEwNCArIDAgLi4uIDEwNCArIDc6Ci0rICAgICAgLyogWFhYIFRPRE86Ci0rICAgICAgICogVGhpcyBjYW4gYmUgZWl0aGVyIGludGVsIHdpcmVsZXNzIE1NWCBnZW5lcmFsIHB1cnBvc2UvY29udHJvbAotKyAgICAgICAqIHJlZ2lzdGVycyBvciB4c2NhbGUgYWNjdW11bGF0b3IsIHdoaWNoIGhhdmUgZGlmZmVyZW50IHVzYWdlLgotKyAgICAgICAqIFdlIG9ubHkgaGF2ZSB0aGUgaW50ZWwgd2lyZWxlc3MgTU1YIGhlcmUgbm93LgotKyAgICAgICAqIFRoZSBuYW1lIG5lZWRzIHRvIGJlIGNoYW5nZWQgZm9yIHRoZSB4c2NhbGUgYWNjdW11bGF0b3IgdG9vLiAqLwotKyAgICAgICpzZXRuYW1lID0gIk1NWCI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBtZW1jcHkobmFtZSwgIndjZ3IiLCA0KTsKLSsgICAgICBuYW1lWzRdID0gcmVnbm8gLSAxMDQgKyAnMCc7Ci0rICAgICAgbmFtZWxlbiA9IDU7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgMTEyICsgMCAuLi4gMTEyICsgOToKLSsgICAgICAqc2V0bmFtZSA9ICJNTVgiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgICpiaXRzID0gNjQ7Ci0rICAgICAgbmFtZVswXSA9ICd3JzsKLSsgICAgICBuYW1lWzFdID0gJ3InOwotKyAgICAgIG5hbWVbMl0gPSByZWdubyAtIDExMiArICcwJzsKLSsgICAgICBuYW1lbGVuID0gMzsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAxMTIgKyAxMCAuLi4gMTEyICsgMTU6Ci0rICAgICAgKnNldG5hbWUgPSAiTU1YIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKLSsgICAgICAqYml0cyA9IDY0OwotKyAgICAgIG5hbWVbMF0gPSAndyc7Ci0rICAgICAgbmFtZVsxXSA9ICdyJzsKLSsgICAgICBuYW1lWzJdID0gJzEnOwotKyAgICAgIG5hbWVbM10gPSByZWdubyAtIDExMiAtIDEwICsgJzAnOwotKyAgICAgIG5hbWVsZW4gPSA0OwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIDEyODoKLSsgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7Ci0gICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0gICAgICAgcmV0dXJuIHN0cGNweSAobmFtZSwgInNwc3IiKSArIDEgLSBuYW1lOwotIAotKyAgICBjYXNlIDEyOToKLSsgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9maXEiKSArIDEgLSBuYW1lOwotKwotKyAgICBjYXNlIDEzMDoKLSsgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9pcnEiKSArIDEgLSBuYW1lOwotKwotKyAgICBjYXNlIDEzMToKLSsgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9hYnQiKSArIDEgLSBuYW1lOwotKwotKyAgICBjYXNlIDEzMjoKLSsgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl91bmQiKSArIDEgLSBuYW1lOwotKwotKyAgICBjYXNlIDEzMzoKLSsgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9zdmMiKSArIDEgLSBuYW1lOwotKwotKyAgICBjYXNlIDE0NCAuLi4gMTUwOgotKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfdXNyIiwgcmVnbm8gLSAxNDQgKyA4KSArIDE7Ci0rCi0rICAgIGNhc2UgMTUxIC4uLiAxNTc6Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF9maXEiLCByZWdubyAtIDE1MSArIDgpICsgMTsKLSsKLSsgICAgY2FzZSAxNTggLi4uIDE1OToKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX2lycSIsIHJlZ25vIC0gMTU4ICsgMTMpICsgMTsKLSsKLSsgICAgY2FzZSAxNjAgLi4uIDE2MToKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX2FidCIsIHJlZ25vIC0gMTYwICsgMTMpICsgMTsKLSsKLSsgICAgY2FzZSAxNjIgLi4uIDE2MzoKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX3VuZCIsIHJlZ25vIC0gMTYyICsgMTMpICsgMTsKLSsKLSsgICAgY2FzZSAxNjQgLi4uIDE2NToKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX3N2YyIsIHJlZ25vIC0gMTY0ICsgMTMpICsgMTsKLSsKLSsgICAgY2FzZSAxOTIgLi4uIDE5OToKLSsgICAgICpzZXRuYW1lID0gIk1NWCI7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKLSsgICAgICBuYW1lWzBdID0gJ3cnOwotKyAgICAgIG5hbWVbMV0gPSAnYyc7Ci0rICAgICAgbmFtZVsyXSA9IHJlZ25vIC0gMTkyICsgJzAnOwotKyAgICAgIG5hbWVsZW4gPSAzOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIDI1NiArIDAgLi4uIDI1NiArIDk6Ci0rICAgICAgLyogWFhYIFRPRE86IE5lb24gYWxzbyB1c2VzIHRob3NlIHJlZ2lzdGVycyBhbmQgY2FuIGNvbnRhaW4KLSsgICAgICAgKiBib3RoIGZsb2F0IGFuZCBpbnRlZ2VycyAqLwotICAgICAgICpzZXRuYW1lID0gIlZGUCI7Ci0gICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7Ci0gICAgICAgKmJpdHMgPSA2NDsKLUluZGV4OiBiL2JhY2tlbmRzL2FybV9yZXR2YWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvYmFja2VuZHMvYXJtX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9hcm1fcmV0dmFsLmMKLUBAIC00OCw2ICs0OCwxMyBAQCBzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KLSAjZGVmaW5lIG5sb2NfaW50cmVnCTEKLSAjZGVmaW5lIG5sb2NfaW50cmVncyhuKQkoMiAqIChuKSkKLSAKLSsvKiBmMSAgKi8gLyogWFhYIFRPRE86IGYwIGNhbiBhbHNvIGhhdmUgbnVtYmVyIDk2IGlmIHByb2dyYW0gd2FzIGNvbXBpbGVkIHdpdGggLW1hYmk9YWFwY3MgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMTYgfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2ZwcmVnICAxCi0rCi0gLyogVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdHVyZSBhbmQgaXMgYWN0dWFsbHkgc3RvcmVkIGluIHN0YWNrIHNwYWNlCi0gICAgcGFzc2VkIGluIGEgaGlkZGVuIGFyZ3VtZW50IGJ5IHRoZSBjYWxsZXIuICBCdXQsIHRoZSBjb21waWxlcgotICAgIGhlbHBmdWxseSByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoYXQgc3BhY2UgaW4gcjAuICAqLwotQEAgLTU4LDggKzY1LDkgQEAgc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9Ci0gI2RlZmluZSBubG9jX2FnZ3JlZ2F0ZSAxCi0gCi0gCi0taW50Ci0tYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotK3N0YXRpYyBpbnQKLSthcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLAotKwkJICAgICAgICAgICAgaW50IHNvZnRfZmxvYXQpCi0gewotICAgLyogU3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24ncyB0eXBlLCBhbmQgZ2V0IHRoZSBEV19BVF90eXBlIGF0dHJpYnV0ZSwKLSAgICAgIHdoaWNoIGlzIHRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUuICAqLwotQEAgLTk4LDYgKzEwNiwyMSBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1Ci0gCSAgICBlbHNlCi0gCSAgICAgIHJldHVybiAtMTsKLSAJICB9Ci0rCWlmICh0YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZSkKLSsJICB7Ci0rCSAgICBEd2FyZl9Xb3JkIGVuY29kaW5nOwotKwkgICAgaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2VuY29kaW5nLAotKwkJCQkgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQotKwkgICAgICByZXR1cm4gLTE7Ci0rCi0rCSAgICBpZiAoKGVuY29kaW5nID09IERXX0FURV9mbG9hdCkgJiYgIXNvZnRfZmxvYXQpCi0rCSAgICAgIHsKLSsJCSpsb2NwID0gbG9jX2ZwcmVnOwotKwkJaWYgKHNpemUgPD0gOCkKLSsJCSAgcmV0dXJuIG5sb2NfZnByZWc7Ci0rCQlnb3RvIGFnZ3JlZ2F0ZTsKLSsJICAgICAgfQotKwkgIH0KLSAJaWYgKHNpemUgPD0gMTYpCi0gCSAgewotIAkgIGludHJlZzoKLUBAIC0xMDYsNiArMTI5LDcgQEAgYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdQotIAkgIH0KLSAKLSAgICAgICBhZ2dyZWdhdGU6Ci0rCS8qIFhYWCBUT0RPIHNvbWV0aW1lcyBhZ2dyZWdhdGVzIGFyZSByZXR1cm5lZCBpbiByMCAoLW1hYmk9YWFwY3MpICovCi0gCSpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKLSAJcmV0dXJuIG5sb2NfYWdncmVnYXRlOwotICAgICAgIH0KLUBAIC0xMjUsMyArMTQ5LDE4IEBAIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnUKLSAgICAgIERXQVJGIGFuZCBtaWdodCBiZSB2YWxpZC4gICovCi0gICByZXR1cm4gLTI7Ci0gfQotKwotKy8qIHJldHVybiBsb2NhdGlvbiBmb3IgLW1hYmk9YXBjcy1nbnUgLW1zb2Z0LWZsb2F0ICovCi0raW50Ci0rYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9zb2Z0IChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0rewotKyAgIHJldHVybiBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoZnVuY3R5cGVkaWUsIGxvY3AsIDEpOwotK30KLSsKLSsvKiByZXR1cm4gbG9jYXRpb24gZm9yIC1tYWJpPWFwY3MtZ251IC1taGFyZC1mbG9hdCAoY3VycmVudCBkZWZhdWx0KSAqLwotK2ludAotK2FybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25faGFyZCAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotK3sKLSsgICByZXR1cm4gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKGZ1bmN0eXBlZGllLCBsb2NwLCAwKTsKLSt9Ci0rCi1JbmRleDogYi9saWJlbGYvZWxmLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2xpYmVsZi9lbGYuaAotKysrIGIvbGliZWxmL2VsZi5oCi1AQCAtMjU5Myw2ICsyNTkzLDkgQEAgZW51bQotICNkZWZpbmUgRUZfQVJNX0VBQklfVkVSNAkweDA0MDAwMDAwCi0gI2RlZmluZSBFRl9BUk1fRUFCSV9WRVI1CTB4MDUwMDAwMDAKLSAKLSsvKiBFSV9PU0FCSSB2YWx1ZXMgKi8KLSsjZGVmaW5lIEVMRk9TQUJJX0FSTV9BRUFCSSAgICA2NCAgICAgIC8qIENvbnRhaW5zIHN5bWJvbCB2ZXJzaW9uaW5nLiAqLwotKwotIC8qIEFkZGl0aW9uYWwgc3ltYm9sIHR5cGVzIGZvciBUaHVtYi4gICovCi0gI2RlZmluZSBTVFRfQVJNX1RGVU5DCQlTVFRfTE9QUk9DIC8qIEEgVGh1bWIgZnVuY3Rpb24uICAqLwotICNkZWZpbmUgU1RUX0FSTV8xNkJJVAkJU1RUX0hJUFJPQyAvKiBBIFRodW1iIGxhYmVsLiAgKi8KLUBAIC0yNjEwLDEyICsyNjEzLDE5IEBAIGVudW0KLSAKLSAvKiBQcm9jZXNzb3Igc3BlY2lmaWMgdmFsdWVzIGZvciB0aGUgUGhkciBwX3R5cGUgZmllbGQuICAqLwotICNkZWZpbmUgUFRfQVJNX0VYSURYCQkoUFRfTE9QUk9DICsgMSkJLyogQVJNIHVud2luZCBzZWdtZW50LiAgKi8KLSsjZGVmaW5lIFBUX0FSTV9VTldJTkQJCVBUX0FSTV9FWElEWAotIAotIC8qIFByb2Nlc3NvciBzcGVjaWZpYyB2YWx1ZXMgZm9yIHRoZSBTaGRyIHNoX3R5cGUgZmllbGQuICAqLwotICNkZWZpbmUgU0hUX0FSTV9FWElEWAkJKFNIVF9MT1BST0MgKyAxKSAvKiBBUk0gdW53aW5kIHNlY3Rpb24uICAqLwotICNkZWZpbmUgU0hUX0FSTV9QUkVFTVBUTUFQCShTSFRfTE9QUk9DICsgMikgLyogUHJlZW1wdGlvbiBkZXRhaWxzLiAgKi8KLSAjZGVmaW5lIFNIVF9BUk1fQVRUUklCVVRFUwkoU0hUX0xPUFJPQyArIDMpIC8qIEFSTSBhdHRyaWJ1dGVzIHNlY3Rpb24uICAqLwotIAotKy8qIFByb2Nlc3NvciBzcGVjaWZpYyB2YWx1ZXMgZm9yIHRoZSBEeW4gZF90YWcgZmllbGQuICAqLwotKyNkZWZpbmUgRFRfQVJNX1JFU0VSVkVEMQkoRFRfTE9QUk9DICsgMCkKLSsjZGVmaW5lIERUX0FSTV9TWU1UQUJTWgkJKERUX0xPUFJPQyArIDEpCi0rI2RlZmluZSBEVF9BUk1fUFJFRU1UTUFCCShEVF9MT1BST0MgKyAyKQotKyNkZWZpbmUgRFRfQVJNX1JFU0VSVkVEMgkoRFRfTE9QUk9DICsgMykKLSsjZGVmaW5lIERUX0FSTV9OVU0JCTQKLSAKLSAvKiBBQXJjaDY0IHJlbG9jcy4gICovCi0gCi1AQCAtMjkwOCw2ICsyOTE4LDcgQEAgZW51bQotIAkJCQkJICAgVExTIGJsb2NrIChMRFIsIFNUUikuICAqLwotICNkZWZpbmUgUl9BUk1fVExTX0lFMTJHUAkxMTEJLyogMTIgYml0IEdPVCBlbnRyeSByZWxhdGl2ZQotIAkJCQkJICAgdG8gR09UIG9yaWdpbiAoTERSKS4gICovCi0rLyogMTEyIC0gMTI3IHByaXZhdGUgcmFuZ2UgKi8KLSAjZGVmaW5lIFJfQVJNX01FX1RPTwkJMTI4CS8qIE9ic29sZXRlLiAgKi8KLSAjZGVmaW5lIFJfQVJNX1RITV9UTFNfREVTQ1NFUQkxMjkKLSAjZGVmaW5lIFJfQVJNX1RITV9UTFNfREVTQ1NFUTE2CTEyOQotSW5kZXg6IGIvYmFja2VuZHMvbGliZWJsX2FybS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9saWJlYmxfYXJtLmgKLUBAIC0wLDAgKzEsOSBAQAotKyNpZm5kZWYgX0xJQkVCTF9BUk1fSAotKyNkZWZpbmUgX0xJQkVCTF9BUk1fSCAxCi0rCi0rI2luY2x1ZGUgPGxpYmR3Lmg+Ci0rCi0rZXh0ZXJuIGludCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX3NvZnQoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7Ci0rZXh0ZXJuIGludCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX2hhcmQoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7Ci0rCi0rI2VuZGlmCi1JbmRleDogYi90ZXN0cy9ydW4tYWxscmVncy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdGVzdHMvcnVuLWFsbHJlZ3Muc2gKLSsrKyBiL3Rlc3RzL3J1bi1hbGxyZWdzLnNoCi1AQCAtMjY3Miw3ICsyNjcyLDI4IEBAIGludGVnZXIgcmVnaXN0ZXJzOgotIAkgMTM6IHNwIChzcCksIGFkZHJlc3MgMzIgYml0cwotIAkgMTQ6IGxyIChsciksIGFkZHJlc3MgMzIgYml0cwotIAkgMTU6IHBjIChwYyksIGFkZHJlc3MgMzIgYml0cwotLQkxMjg6IHNwc3IgKHNwc3IpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE0NDogcjhfdXNyIChyOF91c3IpLCBzaWduZWQgMzIgYml0cwotKwkxNDU6IHI5X3VzciAocjlfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTQ2OiByMTBfdXNyIChyMTBfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTQ3OiByMTFfdXNyIChyMTFfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTQ4OiByMTJfdXNyIChyMTJfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTQ5OiByMTNfdXNyIChyMTNfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTUwOiByMTRfdXNyIChyMTRfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTUxOiByOF9maXEgKHI4X2ZpcSksIHNpZ25lZCAzMiBiaXRzCi0rCTE1MjogcjlfZmlxIChyOV9maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTM6IHIxMF9maXEgKHIxMF9maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTQ6IHIxMV9maXEgKHIxMV9maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTU6IHIxMl9maXEgKHIxMl9maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTY6IHIxM19maXEgKHIxM19maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTc6IHIxNF9maXEgKHIxNF9maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTg6IHIxM19pcnEgKHIxM19pcnEpLCBzaWduZWQgMzIgYml0cwotKwkxNTk6IHIxNF9pcnEgKHIxNF9pcnEpLCBzaWduZWQgMzIgYml0cwotKwkxNjA6IHIxM19hYnQgKHIxM19hYnQpLCBzaWduZWQgMzIgYml0cwotKwkxNjE6IHIxNF9hYnQgKHIxNF9hYnQpLCBzaWduZWQgMzIgYml0cwotKwkxNjI6IHIxM191bmQgKHIxM191bmQpLCBzaWduZWQgMzIgYml0cwotKwkxNjM6IHIxNF91bmQgKHIxNF91bmQpLCBzaWduZWQgMzIgYml0cwotKwkxNjQ6IHIxM19zdmMgKHIxM19zdmMpLCBzaWduZWQgMzIgYml0cwotKwkxNjU6IHIxNF9zdmMgKHIxNF9zdmMpLCBzaWduZWQgMzIgYml0cwotIEZQQSByZWdpc3RlcnM6Ci0gCSAxNjogZjAgKGYwKSwgZmxvYXQgOTYgYml0cwotIAkgMTc6IGYxIChmMSksIGZsb2F0IDk2IGJpdHMKLUBAIC0yNjkwLDcgKzI3MTEsNzIgQEAgRlBBIHJlZ2lzdGVyczoKLSAJMTAxOiBmNSAoZjUpLCBmbG9hdCA5NiBiaXRzCi0gCTEwMjogZjYgKGY2KSwgZmxvYXQgOTYgYml0cwotIAkxMDM6IGY3IChmNyksIGZsb2F0IDk2IGJpdHMKLStNTVggcmVnaXN0ZXJzOgotKwkxMDQ6IHdjZ3IwICh3Y2dyMCksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTA1OiB3Y2dyMSAod2NncjEpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEwNjogd2NncjIgKHdjZ3IyKSwgdW5zaWduZWQgMzIgYml0cwotKwkxMDc6IHdjZ3IzICh3Y2dyMyksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTA4OiB3Y2dyNCAod2NncjQpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEwOTogd2NncjUgKHdjZ3I1KSwgdW5zaWduZWQgMzIgYml0cwotKwkxMTA6IHdjZ3I2ICh3Y2dyNiksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTExOiB3Y2dyNyAod2NncjcpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTExMjogd3IwICh3cjApLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExMzogd3IxICh3cjEpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExNDogd3IyICh3cjIpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExNTogd3IzICh3cjMpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExNjogd3I0ICh3cjQpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExNzogd3I1ICh3cjUpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExODogd3I2ICh3cjYpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTExOTogd3I3ICh3cjcpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTEyMDogd3I4ICh3cjgpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTEyMTogd3I5ICh3cjkpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTEyMjogd3IxMCAod3IxMCksIHVuc2lnbmVkIDY0IGJpdHMKLSsJMTIzOiB3cjExICh3cjExKSwgdW5zaWduZWQgNjQgYml0cwotKwkxMjQ6IHdyMTIgKHdyMTIpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTEyNTogd3IxMyAod3IxMyksIHVuc2lnbmVkIDY0IGJpdHMKLSsJMTI2OiB3cjE0ICh3cjE0KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMjc6IHdyMTUgKHdyMTUpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTE5Mjogd2MwICh3YzApLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5Mzogd2MxICh3YzEpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5NDogd2MyICh3YzIpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5NTogd2MzICh3YzMpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5Njogd2M0ICh3YzQpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5Nzogd2M1ICh3YzUpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5ODogd2M2ICh3YzYpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTE5OTogd2M3ICh3YzcpLCB1bnNpZ25lZCAzMiBiaXRzCi0gVkZQIHJlZ2lzdGVyczoKLSsJIDY0OiBzMCAoczApLCBmbG9hdCAzMiBiaXRzCi0rCSA2NTogczEgKHMxKSwgZmxvYXQgMzIgYml0cwotKwkgNjY6IHMyIChzMiksIGZsb2F0IDMyIGJpdHMKLSsJIDY3OiBzMyAoczMpLCBmbG9hdCAzMiBiaXRzCi0rCSA2ODogczQgKHM0KSwgZmxvYXQgMzIgYml0cwotKwkgNjk6IHM1IChzNSksIGZsb2F0IDMyIGJpdHMKLSsJIDcwOiBzNiAoczYpLCBmbG9hdCAzMiBiaXRzCi0rCSA3MTogczcgKHM3KSwgZmxvYXQgMzIgYml0cwotKwkgNzI6IHM4IChzOCksIGZsb2F0IDMyIGJpdHMKLSsJIDczOiBzOSAoczkpLCBmbG9hdCAzMiBiaXRzCi0rCSA3NDogczEwIChzMTApLCBmbG9hdCAzMiBiaXRzCi0rCSA3NTogczExIChzMTEpLCBmbG9hdCAzMiBiaXRzCi0rCSA3NjogczEyIChzMTIpLCBmbG9hdCAzMiBiaXRzCi0rCSA3NzogczEzIChzMTMpLCBmbG9hdCAzMiBiaXRzCi0rCSA3ODogczE0IChzMTQpLCBmbG9hdCAzMiBiaXRzCi0rCSA3OTogczE1IChzMTUpLCBmbG9hdCAzMiBiaXRzCi0rCSA4MDogczE2IChzMTYpLCBmbG9hdCAzMiBiaXRzCi0rCSA4MTogczE3IChzMTcpLCBmbG9hdCAzMiBiaXRzCi0rCSA4MjogczE4IChzMTgpLCBmbG9hdCAzMiBiaXRzCi0rCSA4MzogczE5IChzMTkpLCBmbG9hdCAzMiBiaXRzCi0rCSA4NDogczIwIChzMjApLCBmbG9hdCAzMiBiaXRzCi0rCSA4NTogczIxIChzMjEpLCBmbG9hdCAzMiBiaXRzCi0rCSA4NjogczIyIChzMjIpLCBmbG9hdCAzMiBiaXRzCi0rCSA4NzogczIzIChzMjMpLCBmbG9hdCAzMiBiaXRzCi0rCSA4ODogczI0IChzMjQpLCBmbG9hdCAzMiBiaXRzCi0rCSA4OTogczI1IChzMjUpLCBmbG9hdCAzMiBiaXRzCi0rCSA5MDogczI2IChzMjYpLCBmbG9hdCAzMiBiaXRzCi0rCSA5MTogczI3IChzMjcpLCBmbG9hdCAzMiBiaXRzCi0rCSA5MjogczI4IChzMjgpLCBmbG9hdCAzMiBiaXRzCi0rCSA5MzogczI5IChzMjkpLCBmbG9hdCAzMiBiaXRzCi0rCSA5NDogczMwIChzMzApLCBmbG9hdCAzMiBiaXRzCi0rCSA5NTogczMxIChzMzEpLCBmbG9hdCAzMiBiaXRzCi0gCTI1NjogZDAgKGQwKSwgZmxvYXQgNjQgYml0cwotIAkyNTc6IGQxIChkMSksIGZsb2F0IDY0IGJpdHMKLSAJMjU4OiBkMiAoZDIpLCBmbG9hdCA2NCBiaXRzCi1AQCAtMjcyMyw2ICsyODA5LDEzIEBAIFZGUCByZWdpc3RlcnM6Ci0gCTI4NTogZDI5IChkMjkpLCBmbG9hdCA2NCBiaXRzCi0gCTI4NjogZDMwIChkMzApLCBmbG9hdCA2NCBiaXRzCi0gCTI4NzogZDMxIChkMzEpLCBmbG9hdCA2NCBiaXRzCi0rc3RhdGUgcmVnaXN0ZXJzOgotKwkxMjg6IHNwc3IgKHNwc3IpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEyOTogc3Bzcl9maXEgKHNwc3JfZmlxKSwgdW5zaWduZWQgMzIgYml0cwotKwkxMzA6IHNwc3JfaXJxIChzcHNyX2lycSksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTMxOiBzcHNyX2FidCAoc3Bzcl9hYnQpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEzMjogc3Bzcl91bmQgKHNwc3JfdW5kKSwgdW5zaWduZWQgMzIgYml0cwotKwkxMzM6IHNwc3Jfc3ZjIChzcHNyX3N2YyksIHVuc2lnbmVkIDMyIGJpdHMKLSBFT0YKLSAKLSAjIFNlZSBydW4tcmVhZGVsZi1taXhlZC1jb3Jlbm90ZS5zaCBmb3IgaW5zdHJ1Y3Rpb25zIHRvIHJlZ2VuZXJhdGUKLUluZGV4OiBiL3Rlc3RzL3J1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS90ZXN0cy9ydW4tcmVhZGVsZi1taXhlZC1jb3Jlbm90ZS5zaAotKysrIGIvdGVzdHMvcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2gKLUBAIC0zMSwxMiArMzEsMTEgQEAgTm90ZSBzZWdtZW50IG9mIDg5MiBieXRlcyBhdCBvZmZzZXQgMHgyNwotICAgICBwaWQ6IDExMDg3LCBwcGlkOiAxMTA2MywgcGdycDogMTEwODcsIHNpZDogMTEwNjMKLSAgICAgdXRpbWU6IDAuMDAwMDAwLCBzdGltZTogMC4wMTAwMDAsIGN1dGltZTogMC4wMDAwMDAsIGNzdGltZTogMC4wMDAwMDAKLSAgICAgb3JpZ19yMDogLTEsIGZwdmFsaWQ6IDEKLS0gICAgcjA6ICAgICAgICAgICAgIDEgIHIxOiAgIC0xMDkxNjcyNTA4ICByMjogICAtMTA5MTY3MjUwMAotLSAgICByMzogICAgICAgICAgICAgMCAgcjQ6ICAgICAgICAgICAgIDAgIHI1OiAgICAgICAgICAgICAwCi0tICAgIHI2OiAgICAgICAgIDMzNzI4ICByNzogICAgICAgICAgICAgMCAgcjg6ICAgICAgICAgICAgIDAKLS0gICAgcjk6ICAgICAgICAgICAgIDAgIHIxMDogIC0xMjI1NzAzNDk2ICByMTE6ICAtMTA5MTY3Mjg0NAotLSAgICByMTI6ICAgICAgICAgICAgMCAgc3A6ICAgIDB4YmVlZTY0ZjQgIGxyOiAgICAweGI2ZGMzZjQ4Ci0tICAgIHBjOiAgICAweDAwMDA4NTAwICBzcHNyOiAgMHg2MDAwMDAxMAotKyAgICByMDogICAgICAgICAgICAxICByMTogIC0xMDkxNjcyNTA4ICByMjogIC0xMDkxNjcyNTAwICByMzogICAgICAgICAgICAwCi0rICAgIHI0OiAgICAgICAgICAgIDAgIHI1OiAgICAgICAgICAgIDAgIHI2OiAgICAgICAgMzM3MjggIHI3OiAgICAgICAgICAgIDAKLSsgICAgcjg6ICAgICAgICAgICAgMCAgcjk6ICAgICAgICAgICAgMCAgcjEwOiAtMTIyNTcwMzQ5NiAgcjExOiAtMTA5MTY3Mjg0NAotKyAgICByMTI6ICAgICAgICAgICAwICBzcDogICAweGJlZWU2NGY0ICBscjogICAweGI2ZGMzZjQ4ICBwYzogICAweDAwMDA4NTAwCi0rICAgIHNwc3I6ICAweDYwMDAwMDEwCi0gICBDT1JFICAgICAgICAgICAgICAgICAxMjQgIFBSUFNJTkZPCi0gICAgIHN0YXRlOiAwLCBzbmFtZTogUiwgem9tYjogMCwgbmljZTogMCwgZmxhZzogMHgwMDQwMDUwMAotICAgICB1aWQ6IDAsIGdpZDogMCwgcGlkOiAxMTA4NywgcHBpZDogMTEwNjMsIHBncnA6IDExMDg3LCBzaWQ6IDExMDYzCi1JbmRleDogYi90ZXN0cy9ydW4tYWRkcmNmaS5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdGVzdHMvcnVuLWFkZHJjZmkuc2gKLSsrKyBiL3Rlc3RzL3J1bi1hZGRyY2ZpLnNoCi1AQCAtMzU1NCw2ICszNTU0LDM4IEBAIGR3YXJmX2NmaV9hZGRyZnJhbWUgKC5laF9mcmFtZSk6IG5vIG1hdGMKLSAJRlBBIHJlZzIxIChmNSk6IHVuZGVmaW5lZAotIAlGUEEgcmVnMjIgKGY2KTogdW5kZWZpbmVkCi0gCUZQQSByZWcyMyAoZjcpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzY0IChzMCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNjUgKHMxKTogdW5kZWZpbmVkCi0rCVZGUCByZWc2NiAoczIpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzY3IChzMyk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNjggKHM0KTogdW5kZWZpbmVkCi0rCVZGUCByZWc2OSAoczUpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzcwIChzNik6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzEgKHM3KTogdW5kZWZpbmVkCi0rCVZGUCByZWc3MiAoczgpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzczIChzOSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzQgKHMxMCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzUgKHMxMSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzYgKHMxMik6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzcgKHMxMyk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzggKHMxNCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzkgKHMxNSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODAgKHMxNik6IHVuZGVmaW5lZAotKwlWRlAgcmVnODEgKHMxNyk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODIgKHMxOCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODMgKHMxOSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODQgKHMyMCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODUgKHMyMSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODYgKHMyMik6IHVuZGVmaW5lZAotKwlWRlAgcmVnODcgKHMyMyk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODggKHMyNCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnODkgKHMyNSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnOTAgKHMyNik6IHVuZGVmaW5lZAotKwlWRlAgcmVnOTEgKHMyNyk6IHVuZGVmaW5lZAotKwlWRlAgcmVnOTIgKHMyOCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnOTMgKHMyOSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnOTQgKHMzMCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnOTUgKHMzMSk6IHVuZGVmaW5lZAotIAlGUEEgcmVnOTYgKGYwKTogdW5kZWZpbmVkCi0gCUZQQSByZWc5NyAoZjEpOiB1bmRlZmluZWQKLSAJRlBBIHJlZzk4IChmMik6IHVuZGVmaW5lZAotQEAgLTM1NjIsNyArMzU5NCw2NiBAQCBkd2FyZl9jZmlfYWRkcmZyYW1lICguZWhfZnJhbWUpOiBubyBtYXRjCi0gCUZQQSByZWcxMDEgKGY1KTogdW5kZWZpbmVkCi0gCUZQQSByZWcxMDIgKGY2KTogdW5kZWZpbmVkCi0gCUZQQSByZWcxMDMgKGY3KTogdW5kZWZpbmVkCi0tCWludGVnZXIgcmVnMTI4IChzcHNyKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMDQgKHdjZ3IwKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMDUgKHdjZ3IxKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMDYgKHdjZ3IyKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMDcgKHdjZ3IzKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMDggKHdjZ3I0KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMDkgKHdjZ3I1KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTAgKHdjZ3I2KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTEgKHdjZ3I3KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTIgKHdyMCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTEzICh3cjEpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzExNCAod3IyKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTUgKHdyMyk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTE2ICh3cjQpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzExNyAod3I1KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTggKHdyNik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTE5ICh3cjcpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzEyMCAod3I4KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMjEgKHdyOSk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTIyICh3cjEwKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMjMgKHdyMTEpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzEyNCAod3IxMik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTI1ICh3cjEzKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMjYgKHdyMTQpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzEyNyAod3IxNSk6IHVuZGVmaW5lZAotKwlzdGF0ZSByZWcxMjggKHNwc3IpOiB1bmRlZmluZWQKLSsJc3RhdGUgcmVnMTI5IChzcHNyX2ZpcSk6IHVuZGVmaW5lZAotKwlzdGF0ZSByZWcxMzAgKHNwc3JfaXJxKTogdW5kZWZpbmVkCi0rCXN0YXRlIHJlZzEzMSAoc3Bzcl9hYnQpOiB1bmRlZmluZWQKLSsJc3RhdGUgcmVnMTMyIChzcHNyX3VuZCk6IHVuZGVmaW5lZAotKwlzdGF0ZSByZWcxMzMgKHNwc3Jfc3ZjKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTQ0IChyOF91c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNDUgKHI5X3Vzcik6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE0NiAocjEwX3Vzcik6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE0NyAocjExX3Vzcik6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE0OCAocjEyX3Vzcik6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE0OSAocjEzX3Vzcik6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE1MCAocjE0X3Vzcik6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE1MSAocjhfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTUyIChyOV9maXEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTMgKHIxMF9maXEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTQgKHIxMV9maXEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTUgKHIxMl9maXEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTYgKHIxM19maXEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTcgKHIxNF9maXEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTggKHIxM19pcnEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTkgKHIxNF9pcnEpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNjAgKHIxM19hYnQpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNjEgKHIxNF9hYnQpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNjIgKHIxM191bmQpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNjMgKHIxNF91bmQpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNjQgKHIxM19zdmMpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNjUgKHIxNF9zdmMpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzE5MiAod2MwKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxOTMgKHdjMSk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTk0ICh3YzIpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzE5NSAod2MzKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxOTYgKHdjNCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTk3ICh3YzUpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzE5OCAod2M2KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxOTkgKHdjNyk6IHVuZGVmaW5lZAotIAlWRlAgcmVnMjU2IChkMCk6IHVuZGVmaW5lZAotIAlWRlAgcmVnMjU3IChkMSk6IHVuZGVmaW5lZAotIAlWRlAgcmVnMjU4IChkMik6IHVuZGVmaW5lZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmY4NTJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDgwMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19pbml0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCi1AQCAtMCwwICsxLDczIEBACi0rLyogSW5pdGlhbGl6YXRpb24gb2YgUEEtUklTQyBzcGVjaWZpYyBiYWNrZW5kIGxpYnJhcnkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4sIDIwMDIuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjZGVmaW5lIEJBQ0tFTkQJCXBhcmlzY18KLSsjZGVmaW5lIFJFTE9DX1BSRUZJWAlSX1BBUklTQ18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKyNpbmNsdWRlICJsaWJlYmxfcGFyaXNjLmgiCi0rCi0rLyogVGhpcyBkZWZpbmVzIHRoZSBjb21tb24gcmVsb2MgaG9va3MgYmFzZWQgb24gcGFyaXNjX3JlbG9jLmRlZi4gICovCi0rI2luY2x1ZGUgImNvbW1vbi1yZWxvYy5jIgotKwotKwotK2NvbnN0IGNoYXIgKgotK3BhcmlzY19pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBFYmwgKmVoLAotKyAgICAgc2l6ZV90IGVobGVuKQotK3sKLSsgIGludCBwYTY0ID0gMDsKLSsKLSsgIC8qIENoZWNrIHdoZXRoZXIgdGhlIEVsZl9CSCBvYmplY3QgaGFzIGEgc3VmZmljZW50IHNpemUuICAqLwotKyAgaWYgKGVobGVuIDwgc2l6ZW9mIChFYmwpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIGlmIChlbGYpIHsKLSsgICAgR0VsZl9FaGRyIGVoZHJfbWVtOwotKyAgICBHRWxmX0VoZHIgKmVoZHIgPSBnZWxmX2dldGVoZHIgKGVsZiwgJmVoZHJfbWVtKTsKLSsgICAgaWYgKGVoZHIgJiYgKGVoZHItPmVfZmxhZ3MgJiBFRl9QQVJJU0NfV0lERSkpCi0rICAgICAgcGE2NCA9IDE7Ci0rICB9Ci0rICAvKiBXZSBoYW5kbGUgaXQuICAqLwotKyAgZWgtPm5hbWUgPSAiUEEtUklTQyI7Ci0rICBwYXJpc2NfaW5pdF9yZWxvYyAoZWgpOwotKyAgSE9PSyAoZWgsIHJlbG9jX3NpbXBsZV90eXBlKTsKLSsgIEhPT0sgKGVoLCBtYWNoaW5lX2ZsYWdfY2hlY2spOwotKyAgSE9PSyAoZWgsIHN5bWJvbF90eXBlX25hbWUpOwotKyAgSE9PSyAoZWgsIHNlZ21lbnRfdHlwZV9uYW1lKTsKLSsgIEhPT0sgKGVoLCBzZWN0aW9uX3R5cGVfbmFtZSk7Ci0rICBIT09LIChlaCwgcmVnaXN0ZXJfaW5mbyk7Ci0rICBpZiAocGE2NCkKLSsgICAgZWgtPnJldHVybl92YWx1ZV9sb2NhdGlvbiA9IHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fNjQ7Ci0rICBlbHNlCi0rICAgIGVoLT5yZXR1cm5fdmFsdWVfbG9jYXRpb24gPSBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzMyOwotKwotKyAgcmV0dXJuIE1PRFZFUlNJT047Ci0rfQotSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCi1AQCAtMCwwICsxLDE1OSBAQAotKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBQQS1SSVNDIERXQVJGLgotKyAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQgcGFyaXNjXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rCi0rc3NpemVfdAotK3BhcmlzY19yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCwgaW50IHJlZ25vLCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKLSsJCSAgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCi0rCQkgICAgIGludCAqYml0cywgaW50ICp0eXBlKQotK3sKLSsgIGludCBwYTY0ID0gMDsKLSsKLSsgIGlmIChlYmwtPmVsZikgewotKyAgICBHRWxmX0VoZHIgZWhkcl9tZW07Ci0rICAgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWJsLT5lbGYsICZlaGRyX21lbSk7Ci0rICAgIGlmIChlaGRyLT5lX2ZsYWdzICYgRUZfUEFSSVNDX1dJREUpCi0rICAgICAgcGE2NCA9IDE7Ci0rICB9Ci0rCi0rICBpbnQgbnJlZ3MgPSBwYTY0ID8gMTI3IDogMTI4OwotKwotKyAgaWYgKG5hbWUgPT0gTlVMTCkKLSsgICAgcmV0dXJuIG5yZWdzOwotKwotKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+PSBucmVncyB8fCBuYW1lbGVuIDwgNikKLSsgICAgcmV0dXJuIC0xOwotKwotKyAgKnByZWZpeCA9ICIlIjsKLSsKLSsgIGlmIChyZWdubyA8IDMyKQotKyAgewotKyAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICBpZiAocGE2NCkKLSsgICAgewotKwkqYml0cyA9IDY0OwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAJKmJpdHMgPSAzMjsKLSsgICAgfQotKyAgfQotKyAgZWxzZSBpZiAocmVnbm8gPT0gMzIpCi0rICB7Ci0rICAgICpzZXRuYW1lID0gInNwZWNpYWwiOwotKyAgICBpZiAocGE2NCkKLSsgICAgewotKwkqYml0cyA9IDY7Ci0rICAgIH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgIAkqYml0cyA9IDU7Ci0rICAgIH0KLSsgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICB9Ci0rICBlbHNlCi0rICB7Ci0rICAgICpzZXRuYW1lID0gIkZQVSI7Ci0rICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotKyAgICBpZiAocGE2NCkKLSsgICAgewotKwkqYml0cyA9IDY0OwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAJKmJpdHMgPSAzMjsKLSsgICAgfQotKyAgfQotKwotKyAgaWYgKHJlZ25vIDwgMzMpIHsKLSsgICAgc3dpdGNoIChyZWdubykKLSsgICAgICB7Ci0rICAgICAgY2FzZSAwIC4uLiA5OgotKyAgICAgICAgbmFtZVswXSA9ICdyJzsKLSsgICAgICAgIG5hbWVbMV0gPSByZWdubyArICcwJzsKLSsgICAgICAgIG5hbWVsZW4gPSAyOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSAxMCAuLi4gMzE6Ci0rICAgICAgICBuYW1lWzBdID0gJ3InOwotKyAgICAgICAgbmFtZVsxXSA9IHJlZ25vIC8gMTAgKyAnMCc7Ci0rICAgICAgICBuYW1lWzJdID0gcmVnbm8gJSAxMCArICcwJzsKLSsgICAgICAgIG5hbWVsZW4gPSAzOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSAzMjoKLSsJKnByZWZpeCA9IE5VTEw7Ci0rCW5hbWVbMF0gPSAnUyc7Ci0rCW5hbWVbMV0gPSAnQSc7Ci0rCW5hbWVbMl0gPSAnUic7Ci0rCW5hbWVsZW4gPSAzOwotKwlicmVhazsKLSsgICAgICB9Ci0rICB9Ci0rICBlbHNlIHsKLSsgICAgaWYgKHBhNjQgJiYgKChyZWdubyAtIDcyKSAlIDIpKSB7Ci0rICAgICAgKnNldG5hbWUgPSBOVUxMOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIHN3aXRjaCAocmVnbm8pCi0rICAgICAgewotKyAgICAgIGNhc2UgNzIgKyAwIC4uLiA3MiArIDExOgotKyAgICAgICAgbmFtZVswXSA9ICdmJzsKLSsJbmFtZVsxXSA9ICdyJzsKLSsgICAgICAgIG5hbWVbMl0gPSAocmVnbm8gKyA4IC0gNzIpIC8gMiArICcwJzsKLSsgICAgICAgIG5hbWVsZW4gPSAzOwotKyAgICAgICAgaWYgKChyZWdubyArIDggLSA3MikgJSAyKSB7Ci0rCSAgbmFtZVszXSA9ICdSJzsKLSsJICBuYW1lbGVuKys7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIDcyICsgMTIgLi4uIDcyICsgNTU6Ci0rICAgICAgICBuYW1lWzBdID0gJ2YnOwotKwluYW1lWzFdID0gJ3InOwotKyAgICAgICAgbmFtZVsyXSA9IChyZWdubyArIDggLSA3MikgLyAyIC8gMTAgKyAnMCc7Ci0rICAgICAgICBuYW1lWzNdID0gKHJlZ25vICsgOCAtIDcyKSAvIDIgJSAxMCArICcwJzsKLSsgICAgICAgIG5hbWVsZW4gPSA0OwotKyAgICAgICAgaWYgKChyZWdubyArIDggLSA3MikgJSAyKSB7Ci0rCSAgbmFtZVs0XSA9ICdSJzsKLSsJICBuYW1lbGVuKys7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAgICBkZWZhdWx0OgotKyAgICAgICAgKnNldG5hbWUgPSBOVUxMOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgfQotKyAgfQotKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKLSsgIHJldHVybiBuYW1lbGVuOwotK30KLUluZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgotQEAgLTAsMCArMSwxMjggQEAKLSsvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBQQS1SSVNDLiAgLSotIEMgLSotCi0rICAgQ29weXJpZ2h0IChDKSAyMDA1IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsvKgkgICAgTkFNRSwJCVJFTHxFWEVDfERZTgkqLwotKwotK1JFTE9DX1RZUEUgKE5PTkUsCQlFWEVDfERZTikKLStSRUxPQ19UWVBFIChESVIzMiwJCVJFTHxFWEVDfERZTikKLStSRUxPQ19UWVBFIChESVIyMUwsCQlSRUx8RVhFQ3xEWU4pCi0rUkVMT0NfVFlQRSAoRElSMTdSLAkJUkVMKQotK1JFTE9DX1RZUEUgKERJUjE3RiwJCVJFTCkKLStSRUxPQ19UWVBFIChESVIxNFIsCQlSRUx8RFlOKQotK1JFTE9DX1RZUEUgKFBDUkVMMzIsCQlSRUwpCi0rUkVMT0NfVFlQRSAoUENSRUwyMUwsCQlSRUwpCi0rUkVMT0NfVFlQRSAoUENSRUwxN1IsCQlSRUwpCi0rUkVMT0NfVFlQRSAoUENSRUwxN0YsCQlSRUwpCi0rUkVMT0NfVFlQRSAoUENSRUwxNFIsCQlSRUx8RVhFQykKLStSRUxPQ19UWVBFIChEUFJFTDIxTCwJCVJFTCkKLStSRUxPQ19UWVBFIChEUFJFTDE0V1IsCQlSRUwpCi0rUkVMT0NfVFlQRSAoRFBSRUwxNERSLCAgICAgICAgICBSRUwpCi0rUkVMT0NfVFlQRSAoRFBSRUwxNFIsCQlSRUwpCi0rUkVMT0NfVFlQRSAoR1BSRUwyMUwsCQkwKQotK1JFTE9DX1RZUEUgKEdQUkVMMTRSLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRjIxTCwJCVJFTCkKLStSRUxPQ19UWVBFIChMVE9GRjE0UiwJCVJFTCkKLStSRUxPQ19UWVBFIChETFRJTkQxNEYsCQkwKQotK1JFTE9DX1RZUEUgKFNFVEJBU0UsCQkwKQotK1JFTE9DX1RZUEUgKFNFQ1JFTDMyLAkJUkVMKQotK1JFTE9DX1RZUEUgKEJBU0VSRUwyMUwsCQkwKQotK1JFTE9DX1RZUEUgKEJBU0VSRUwxN1IsCQkwKQotK1JFTE9DX1RZUEUgKEJBU0VSRUwxNFIsCQkwKQotK1JFTE9DX1RZUEUgKFNFR0JBU0UsCQkwKQotK1JFTE9DX1RZUEUgKFNFR1JFTDMyLAkJUkVMKQotK1JFTE9DX1RZUEUgKFBMVE9GRjIxTCwJCTApCi0rUkVMT0NfVFlQRSAoUExUT0ZGMTRSLAkJMCkKLStSRUxPQ19UWVBFIChQTFRPRkYxNEYsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIzMiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMjFMLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIxNFIsCTApCi0rUkVMT0NfVFlQRSAoRlBUUjY0LAkJMCkKLStSRUxPQ19UWVBFIChQTEFCRUwzMiwJCVJFTHxEWU4pCi0rUkVMT0NfVFlQRSAoUENSRUw2NCwJCTApCi0rUkVMT0NfVFlQRSAoUENSRUwyMkMsCQkwKQotK1JFTE9DX1RZUEUgKFBDUkVMMjJGLAkJMCkKLStSRUxPQ19UWVBFIChQQ1JFTDE0V1IsCQkwKQotK1JFTE9DX1RZUEUgKFBDUkVMMTREUiwJCTApCi0rUkVMT0NfVFlQRSAoUENSRUwxNkYsCQkwKQotK1JFTE9DX1RZUEUgKFBDUkVMMTZXRiwJCTApCi0rUkVMT0NfVFlQRSAoUENSRUwxNkRGLAkJMCkKLStSRUxPQ19UWVBFIChESVI2NCwJCVJFTHxEWU4pCi0rUkVMT0NfVFlQRSAoRElSMTRXUiwJCVJFTCkKLStSRUxPQ19UWVBFIChESVIxNERSLAkJUkVMKQotK1JFTE9DX1RZUEUgKERJUjE2RiwJCVJFTCkKLStSRUxPQ19UWVBFIChESVIxNldGLAkJUkVMKQotK1JFTE9DX1RZUEUgKERJUjE2REYsCQlSRUwpCi0rUkVMT0NfVFlQRSAoR1BSRUw2NCwJCTApCi0rUkVMT0NfVFlQRSAoR1BSRUwxNFdSLAkJMCkKLStSRUxPQ19UWVBFIChHUFJFTDE0RFIsCQkwKQotK1JFTE9DX1RZUEUgKEdQUkVMMTZGLAkJMCkKLStSRUxPQ19UWVBFIChHUFJFTDE2V0YsCQkwKQotK1JFTE9DX1RZUEUgKEdQUkVMMTZERiwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkY2NCwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkYxNFdSLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRjE0RFIsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGMTZGLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRjE2V0YsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGMTZERiwJCTApCi0rUkVMT0NfVFlQRSAoU0VDUkVMNjQsCQkwKQotK1JFTE9DX1RZUEUgKEJBU0VSRUwxNFdSLAkwKQotK1JFTE9DX1RZUEUgKEJBU0VSRUwxNERSLAkwKQotK1JFTE9DX1RZUEUgKFNFR1JFTDY0LAkJMCkKLStSRUxPQ19UWVBFIChQTFRPRkYxNFdSLAkJMCkKLStSRUxPQ19UWVBFIChQTFRPRkYxNERSLAkJMCkKLStSRUxPQ19UWVBFIChQTFRPRkYxNkYsCQkwKQotK1JFTE9DX1RZUEUgKFBMVE9GRjE2V0YsCQkwKQotK1JFTE9DX1RZUEUgKFBMVE9GRjE2REYsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFI2NCwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTRXUiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTREUiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTZGLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIxNldGLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX0ZQVFIxNkRGLAkwKQotK1JFTE9DX1RZUEUgKENPUFksCQlFWEVDKQotK1JFTE9DX1RZUEUgKElQTFQsCQlFWEVDfERZTikKLStSRUxPQ19UWVBFIChFUExULAkJMCkKLStSRUxPQ19UWVBFIChUUFJFTDMyLAkJRFlOKQotK1JFTE9DX1RZUEUgKFRQUkVMMjFMLAkJMCkKLStSRUxPQ19UWVBFIChUUFJFTDE0UiwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAyMUwsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAxNFIsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAxNEYsCTApCi0rUkVMT0NfVFlQRSAoVFBSRUw2NCwJCTApCi0rUkVMT0NfVFlQRSAoVFBSRUwxNFdSLAkJMCkKLStSRUxPQ19UWVBFIChUUFJFTDE0RFIsCQkwKQotK1JFTE9DX1RZUEUgKFRQUkVMMTZGLAkJMCkKLStSRUxPQ19UWVBFIChUUFJFTDE2V0YsCQkwKQotK1JFTE9DX1RZUEUgKFRQUkVMMTZERiwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFA2NCwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAxNFdSLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTREUiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9UUDE2RiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9UUDE2V0YsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAxNkRGLAkwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwJRFlOKQotK1JFTE9DX1RZUEUgKFRMU19EVFBNT0Q2NCwJRFlOKQotKwotKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgICAgICAgMQotSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotQEAgLTAsMCArMSwyMTMgQEAKLSsvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L1BBLVJJU0MgQUJJLgotKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQgcGFyaXNjXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rI2luY2x1ZGUgImxpYmVibF9wYXJpc2MuaCIKLSsKLSsvKiAlcjI4LCBvciBwYWlyICVyMjgsICVyMjkuICAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnMzJbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWcyOCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWcyOSB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICB9OwotKwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjggfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjkgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgfTsKLSsjZGVmaW5lIG5sb2NfaW50cmVnCTEKLSsjZGVmaW5lIG5sb2NfaW50cmVncGFpcgk0Ci0rCi0rLyogJWZyNEwsIG9yIHBhaXIgJWZyNEwsICVmcjRSIG9uIHBhLTMyICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZzMyW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSA3MyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19mcHJlZzMyIDIKLSsjZGVmaW5lIG5sb2NfZnByZWdwYWlyMzIgNAotKwotKy8qICRmcjQgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDcyIH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19mcHJlZyAgMQotKwotKyNpZiAwCi0rLyogVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdHVyZSBhbmQgaXMgYWN0dWFsbHkgc3RvcmVkIGluIHN0YWNrIHNwYWNlCi0rICAgcGFzc2VkIGluIGEgaGlkZGVuIGFyZ3VtZW50IGJ5IHRoZSBjYWxsZXIuIEFkZHJlc3Mgb2YgdGhlIGxvY2F0aW9uIGlzIHN0b3JlZAotKyAgIGluICVyMjggYmVmb3JlIGZ1bmN0aW9uIGNhbGwsIGJ1dCBpdCBtYXkgYmUgY2hhbmdlZCBieSBmdW5jdGlvbi4gKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2FnZ3JlZ2F0ZVtdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX2JyZWcyOCB9LAotKyAgfTsKLSsjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKLSsjZW5kaWYKLSsKLStzdGF0aWMgaW50Ci0rcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCwgaW50IHBhNjQpCi0rewotKyAgRHdhcmZfV29yZCByZWdzaXplID0gcGE2NCA/IDggOiA0OwotKwotKyAgLyogU3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24ncyB0eXBlLCBhbmQgZ2V0IHRoZSBEV19BVF90eXBlIGF0dHJpYnV0ZSwKLSsgICAgIHdoaWNoIGlzIHRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUuICAqLwotKwotKyAgRHdhcmZfQXR0cmlidXRlIGF0dHJfbWVtOwotKyAgRHdhcmZfQXR0cmlidXRlICphdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKGZ1bmN0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKyAgaWYgKGF0dHIgPT0gTlVMTCkKLSsgICAgLyogVGhlIGZ1bmN0aW9uIGhhcyBubyByZXR1cm4gdmFsdWUsIGxpa2UgYSBgdm9pZCcgZnVuY3Rpb24gaW4gQy4gICovCi0rICAgIHJldHVybiAwOwotKwotKyAgRHdhcmZfRGllIGRpZV9tZW07Ci0rICBEd2FyZl9EaWUgKnR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKyAgaW50IHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rCi0rICAvKiBGb2xsb3cgdHlwZWRlZnMgYW5kIHF1YWxpZmllcnMgdG8gZ2V0IHRvIHRoZSBhY3R1YWwgdHlwZS4gICovCi0rICB3aGlsZSAodGFnID09IERXX1RBR190eXBlZGVmCi0rCSB8fCB0YWcgPT0gRFdfVEFHX2NvbnN0X3R5cGUgfHwgdGFnID09IERXX1RBR192b2xhdGlsZV90eXBlCi0rCSB8fCB0YWcgPT0gRFdfVEFHX3Jlc3RyaWN0X3R5cGUpCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rICAgICAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rICAgICAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsgICAgfQotKwotKyAgc3dpdGNoICh0YWcpCi0rICAgIHsKLSsgICAgY2FzZSAtMToKLSsgICAgICByZXR1cm4gLTE7Ci0rCi0rICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6Ci0rICAgICAgaWYgKCEgZHdhcmZfaGFzYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSkpCi0rCXsKLSsJICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsJfQotKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rCi0rICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLSsgICAgY2FzZSBEV19UQUdfcG9pbnRlcl90eXBlOgotKyAgICBjYXNlIERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGU6Ci0rICAgICAgewotKyAgICAgICAgRHdhcmZfV29yZCBzaXplOwotKwlpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplLAotKwkJCQkJICZhdHRyX21lbSksICZzaXplKSAhPSAwKQotKwkgIHsKLSsJICAgIGlmICh0YWcgPT0gRFdfVEFHX3BvaW50ZXJfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZSkKLSsJICAgICAgc2l6ZSA9IDQ7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHJldHVybiAtMTsKLSsJICB9Ci0rCWlmICh0YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZSkKLSsJICB7Ci0rCSAgICBEd2FyZl9Xb3JkIGVuY29kaW5nOwotKwkgICAgaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2VuY29kaW5nLAotKwkJCQkJICAgICAmYXR0cl9tZW0pLCAmZW5jb2RpbmcpICE9IDApCi0rCSAgICAgIHJldHVybiAtMTsKLSsKLSsJICAgIGlmIChlbmNvZGluZyA9PSBEV19BVEVfZmxvYXQpCi0rCSAgICAgIHsKLSsJCWlmIChwYTY0KSB7Ci0rCQkgICpsb2NwID0gbG9jX2ZwcmVnOwotKwkJICBpZiAoc2l6ZSA8PSA4KQotKwkJICAgICAgcmV0dXJuIG5sb2NfZnByZWc7Ci0rCQl9Ci0rCQllbHNlIHsKLSsJCSAgKmxvY3AgPSBsb2NfZnByZWczMjsKLSsJCSAgaWYgKHNpemUgPD0gNCkKLSsJCSAgICByZXR1cm4gbmxvY19mcHJlZzMyOwotKwkJICBlbHNlIGlmIChzaXplIDw9IDgpCi0rCQkgICAgcmV0dXJuIG5sb2NfZnByZWdwYWlyMzI7Ci0rCQl9Ci0rCQlnb3RvIGFnZ3JlZ2F0ZTsKLSsJICAgICAgfQotKwkgIH0KLSsJaWYgKHBhNjQpCi0rCSAgKmxvY3AgPSBsb2NfaW50cmVnOwotKwllbHNlCi0rCSAgKmxvY3AgPSBsb2NfaW50cmVnMzI7Ci0rCWlmIChzaXplIDw9IHJlZ3NpemUpCi0rCSAgcmV0dXJuIG5sb2NfaW50cmVnOwotKwlpZiAoc2l6ZSA8PSAyICogcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOwotKwotKwkvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgfQotKwotKyAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKLSsgICAgY2FzZSBEV19UQUdfYXJyYXlfdHlwZToKLSsgICAgYWdncmVnYXRlOiB7Ci0rICAgICAgICBEd2FyZl9Xb3JkIHNpemU7Ci0rCWlmIChkd2FyZl9hZ2dyZWdhdGVfc2l6ZSAodHlwZWRpZSwgJnNpemUpICE9IDApCi0rCSAgcmV0dXJuIC0xOwotKwlpZiAocGE2NCkKLSsgICAgICAgICAgKmxvY3AgPSBsb2NfaW50cmVnOwotKwllbHNlCi0rCSAgKmxvY3AgPSBsb2NfaW50cmVnMzI7Ci0rICAgICAgICBpZiAoc2l6ZSA8PSByZWdzaXplKQotKwkgIHJldHVybiBubG9jX2ludHJlZzsKLSsgICAgICAgIGlmIChzaXplIDw9IDIgKiByZWdzaXplKQotKwkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0rI2lmIDAKLSsJLyogdGhlcmUgc2hvdWxkIGJlIHNvbWUgd2F5IHRvIGtub3cgdGhpcyBsb2NhdGlvbi4uLiBCdXQgSSBkbyBub3Qgc2VlIGl0LiAqLwotKyAgICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOwotKyAgICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOwotKyNlbmRpZgotKwkvKiBmYWxsIHRocm91Z2guICAqLwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgLyogWFhYIFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byByZXR1cm4gc3BlY2lmaWMgZXJyb3JzIGZyb20gZWJsIGNhbGxzLgotKyAgICAgVGhpcyB2YWx1ZSBtZWFucyB3ZSBkbyBub3QgdW5kZXJzdGFuZCB0aGUgdHlwZSwgYnV0IGl0IGlzIHdlbGwtZm9ybWVkCi0rICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLwotKyAgcmV0dXJuIC0yOwotK30KLSsKLStpbnQKLStwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzMyIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0rewotKyAgcmV0dXJuIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMCk7Ci0rfQotKwotK2ludAotK3BhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fNjQgKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSt7Ci0rICByZXR1cm4gcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKGZ1bmN0eXBlZGllLCBsb2NwLCAxKTsKLSt9Ci0rCi1JbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCi1AQCAtMCwwICsxLDExMiBAQAotKy8qIFBBLVJJU0Mgc3BlY2lmaWMgc3ltYm9saWMgbmFtZSBoYW5kbGluZy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPiwgMjAwMi4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxlbGYuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rI2RlZmluZSBCQUNLRU5ECQlwYXJpc2NfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLStjb25zdCBjaGFyICoKLStwYXJpc2Nfc2VnbWVudF90eXBlX25hbWUgKGludCBzZWdtZW50LCBjaGFyICpidWYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotKwkJCXNpemVfdCBsZW4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQotK3sKLSsgIHN3aXRjaCAoc2VnbWVudCkKLSsgICAgewotKyAgICBjYXNlIFBUX1BBUklTQ19BUkNIRVhUOgotKyAgICAgIHJldHVybiAiUEFSSVNDX0FSQ0hFWFQiOwotKyAgICBjYXNlIFBUX1BBUklTQ19VTldJTkQ6Ci0rICAgICAgcmV0dXJuICJQQVJJU0NfVU5XSU5EIjsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIFJldHVybiBzeW1ib2xpYyByZXByZXNlbnRhdGlvbiBvZiBzeW1ib2wgdHlwZS4gICovCi0rY29uc3QgY2hhciAqCi0rcGFyaXNjX3N5bWJvbF90eXBlX25hbWUoaW50IHN5bWJvbCwgY2hhciAqYnVmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSsgICAgc2l6ZV90IGxlbiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCi0rewotKwlpZiAoc3ltYm9sID09IFNUVF9QQVJJU0NfTUlMTElDT0RFKQotKwkgIHJldHVybiAiUEFSSVNDX01JTExJIjsKLSsJcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIFJldHVybiBzeW1ib2xpYyByZXByZXNlbnRhdGlvbiBvZiBzZWN0aW9uIHR5cGUuICAqLwotK2NvbnN0IGNoYXIgKgotK3BhcmlzY19zZWN0aW9uX3R5cGVfbmFtZSAoaW50IHR5cGUsCi0rCQkJY2hhciAqYnVmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSsJCQlzaXplX3QgbGVuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKLSt7Ci0rICBzd2l0Y2ggKHR5cGUpCi0rICAgIHsKLSsgICAgY2FzZSBTSFRfUEFSSVNDX0VYVDoKLSsgICAgICByZXR1cm4gIlBBUklTQ19FWFQiOwotKyAgICBjYXNlIFNIVF9QQVJJU0NfVU5XSU5EOgotKyAgICAgIHJldHVybiAiUEFSSVNDX1VOV0lORCI7Ci0rICAgIGNhc2UgU0hUX1BBUklTQ19ET0M6Ci0rICAgICAgcmV0dXJuICJQQVJJU0NfRE9DIjsKLSsgICAgfQotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIENoZWNrIHdoZXRoZXIgbWFjaGluZSBmbGFncyBhcmUgdmFsaWQuICAqLwotK2Jvb2wKLStwYXJpc2NfbWFjaGluZV9mbGFnX2NoZWNrIChHRWxmX1dvcmQgZmxhZ3MpCi0rewotKyAgaWYgKGZsYWdzICZ+IChFRl9QQVJJU0NfVFJBUE5JTCB8IEVGX1BBUklTQ19FWFQgfCBFRl9QQVJJU0NfTFNCIHwKLSsJRUZfUEFSSVNDX1dJREUgfCBFRl9QQVJJU0NfTk9fS0FCUCB8Ci0rCUVGX1BBUklTQ19MQVpZU1dBUCB8IEVGX1BBUklTQ19BUkNIKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBHRWxmX1dvcmQgYXJjaCA9IGZsYWdzICYgRUZfUEFSSVNDX0FSQ0g7Ci0rCi0rICByZXR1cm4gKChhcmNoID09IEVGQV9QQVJJU0NfMV8wKSB8fCAoYXJjaCA9PSBFRkFfUEFSSVNDXzFfMSkgfHwKLSsgICAgICAoYXJjaCA9PSBFRkFfUEFSSVNDXzJfMCkpOwotK30KLSsKLSsvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCi0rRWxmX1R5cGUKLStwYXJpc2NfcmVsb2Nfc2ltcGxlX3R5cGUgKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IHR5cGUpCi0rewotKyAgc3dpdGNoICh0eXBlKQotKyAgICB7Ci0rICAgIGNhc2UgUl9QQVJJU0NfRElSNjQ6Ci0rICAgIGNhc2UgUl9QQVJJU0NfU0VDUkVMNjQ6Ci0rICAgICAgcmV0dXJuIEVMRl9UX1hXT1JEOwotKyAgICBjYXNlIFJfUEFSSVNDX0RJUjMyOgotKyAgICBjYXNlIFJfUEFSSVNDX1NFQ1JFTDMyOgotKyAgICAgIHJldHVybiBFTEZfVF9XT1JEOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBFTEZfVF9OVU07Ci0rICAgIH0KLSt9Ci1JbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCi1AQCAtMCwwICsxLDkgQEAKLSsjaWZuZGVmIF9MSUJFQkxfSFBQQV9ICi0rI2RlZmluZSBfTElCRUJMX0hQUEFfSCAxCi0rCi0rI2luY2x1ZGUgPGxpYmR3Lmg+Ci0rCi0rZXh0ZXJuIGludCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzMyKER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOwotK2V4dGVybiBpbnQgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl82NChEd2FyZl9EaWUgKiwgY29uc3QgRHdhcmZfT3AgKipsb2NwKTsKLSsKLSsjZW5kaWYKLUluZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTcwLm9yaWcvYmFja2VuZHMvTWFrZWZpbGUuYW0KLSsrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9NYWtlZmlsZS5hbQotQEAgLTMzLDEyICszMywxMiBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JCi0gCi0gCi0gbW9kdWxlcyA9IGkzODYgc2ggeDg2XzY0IGlhNjQgYWxwaGEgYXJtIGFhcmNoNjQgc3BhcmMgcHBjIHBwYzY0IHMzOTAgXAotLQkgIHRpbGVneCBtNjhrIGJwZgotKwkgIHRpbGVneCBtNjhrIGJwZiBwYXJpc2MKLSBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCi0gCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAotLQkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEKLSsJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKLSBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQotIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCi0gCi1AQCAtMTI0LDYgKzEyNCw5IEBAIGNwdV9icGYgPSAuLi9saWJjcHUvbGliY3B1X2JwZi5hCi0gbGliZWJsX2JwZl9waWNfYV9TT1VSQ0VTID0gJChicGZfU1JDUykKLSBhbV9saWJlYmxfYnBmX3BpY19hX09CSkVDVFMgPSAkKGJwZl9TUkNTOi5jPS5vcykKLSAKLStwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCi0rbGliZWJsX3BhcmlzY19waWNfYV9TT1VSQ0VTID0gJChwYXJpc2NfU1JDUykKLSthbV9saWJlYmxfcGFyaXNjX3BpY19hX09CSkVDVFMgPSAkKHBhcmlzY19TUkNTOi5jPS5vcykKLSAKLSBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQotIAlAcm0gLWYgJChAOi5zbz0ubWFwKQotSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2xpYmVsZi9lbGYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTcwLm9yaWcvbGliZWxmL2VsZi5oCi0rKysgZWxmdXRpbHMtMC4xNzAvbGliZWxmL2VsZi5oCi1AQCAtMjA1NiwxNiArMjA1NiwyNCBAQCBlbnVtCi0gI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE3RgkxMgkvKiAxNyBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0UgkxNAkvKiBSaWdodCAxNCBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19EUFJFTDIxTAkxOAkvKiBMZWZ0IDIxIGJpdHMgb2YgcmVsLiBhZGRyZXNzLiAgKi8KLSsjZGVmaW5lIFJfUEFSSVNDX0RQUkVMMTRXUgkxOQotKyNkZWZpbmUgUl9QQVJJU0NfRFBSRUwxNERSCTIwCi0gI2RlZmluZSBSX1BBUklTQ19EUFJFTDE0UgkyMgkvKiBSaWdodCAxNCBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19HUFJFTDIxTAkyNgkvKiBHUC1yZWxhdGl2ZSwgbGVmdCAyMSBiaXRzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX0dQUkVMMTRSCTMwCS8qIEdQLXJlbGF0aXZlLCByaWdodCAxNCBiaXRzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMjFMCTM0CS8qIExULXJlbGF0aXZlLCBsZWZ0IDIxIGJpdHMuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNFIJMzgJLyogTFQtcmVsYXRpdmUsIHJpZ2h0IDE0IGJpdHMuICAqLwotKyNkZWZpbmUgUl9QQVJJU0NfRExUSU5EMTRGCTM5Ci0rI2RlZmluZSBSX1BBUklTQ19TRVRCQVNFCTQwCi0gI2RlZmluZSBSX1BBUklTQ19TRUNSRUwzMgk0MQkvKiAzMiBiaXRzIHNlY3Rpb24gcmVsLiBhZGRyZXNzLiAgKi8KLSsjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwyMUwJNDIKLSsjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwxN1IJNDMKLSsjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwxNFIJNDYKLSAjZGVmaW5lIFJfUEFSSVNDX1NFR0JBU0UJNDgJLyogTm8gcmVsb2NhdGlvbiwgc2V0IHNlZ21lbnQgYmFzZS4gICovCi0gI2RlZmluZSBSX1BBUklTQ19TRUdSRUwzMgk0OQkvKiAzMiBiaXRzIHNlZ21lbnQgcmVsLiBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjIxTAk1MAkvKiBQTFQgcmVsLiBhZGRyZXNzLCBsZWZ0IDIxIGJpdHMuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRSCTU0CS8qIFBMVCByZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwotKyNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRGCTU1Ci0gI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMzIJNTcJLyogMzIgYml0cyBMVC1yZWwuIGZ1bmN0aW9uIHBvaW50ZXIuICovCi0gI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMjFMCTU4CS8qIExULXJlbC4gZmN0IHB0ciwgbGVmdCAyMSBiaXRzLiAqLwotICNkZWZpbmUgUl9QQVJJU0NfTFRPRkZfRlBUUjE0Ugk2MgkvKiBMVC1yZWwuIGZjdCBwdHIsIHJpZ2h0IDE0IGJpdHMuICovCi1AQCAtMjA3NCw2ICsyMDgyLDcgQEAgZW51bQotICNkZWZpbmUgUl9QQVJJU0NfUExBQkVMMjFMCTY2CS8qIExlZnQgMjEgYml0cyBvZiBmZGVzYyBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BMQUJFTDE0Ugk3MAkvKiBSaWdodCAxNCBiaXRzIG9mIGZkZXNjIGFkZHJlc3MuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfUENSRUw2NAk3MgkvKiA2NCBiaXRzIFBDLXJlbC4gYWRkcmVzcy4gICovCi0rI2RlZmluZSBSX1BBUklTQ19QQ1JFTDIyQwk3MwotICNkZWZpbmUgUl9QQVJJU0NfUENSRUwyMkYJNzQJLyogMjIgYml0cyBQQy1yZWwuIGFkZHJlc3MuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNFdSCTc1CS8qIFBDLXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0RFIJNzYJLyogUEMgcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KLUBAIC0yMDk5LDYgKzIxMDgsOCBAQCBlbnVtCi0gI2RlZmluZSBSX1BBUklTQ19MVE9GRjE2V0YJMTAyCS8qIDE2IGJpdHMgTFQtcmVsLiBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMTZERgkxMDMJLyogMTYgYml0cyBMVC1yZWwuIGFkZHJlc3MuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfU0VDUkVMNjQJMTA0CS8qIDY0IGJpdHMgc2VjdGlvbiByZWwuIGFkZHJlc3MuICAqLwotKyNkZWZpbmUgUl9QQVJJU0NfQkFTRVJFTDE0V1IJMTA3Ci0rI2RlZmluZSBSX1BBUklTQ19CQVNFUkVMMTREUgkxMDgKLSAjZGVmaW5lIFJfUEFSSVNDX1NFR1JFTDY0CTExMgkvKiA2NCBiaXRzIHNlZ21lbnQgcmVsLiBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0V1IJMTE1CS8qIFBMVC1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTREUgkxMTYJLyogUExULXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1MTNlZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZgpAQCAtMCwwICsxLDE0IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0gZWxmdXRpbHMtMC4xNjUub3JpZy90ZXN0cy9ydW4tc3RyaXAtc3RybWVyZ2Uuc2gKKysrKyBlbGZ1dGlscy0wLjE2NS90ZXN0cy9ydW4tc3RyaXAtc3RybWVyZ2Uuc2gKK0BAIC0zMCw3ICszMCw3IEBAIHJlbWVyZ2VkPXJlbWVyZ2VkLmVsZgorIHRlbXBmaWxlcyAkbWVyZ2VkICRzdHJpcHBlZCAkZGVidWdmaWxlICRyZW1lcmdlZAorIAorIGVjaG8gZWxmbGludCAkaW5wdXQKKy10ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0vc3JjL2VsZmxpbnQgLS1nbnUgJGlucHV0CisrdGVzdHJ1bl9vbl9zZWxmX3NraXAgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLWdudSAkaW5wdXQKKyBlY2hvIGVsZnN0cm1lcmdlCisgdGVzdHJ1biAke2Fic190b3BfYnVpbGRkaXJ9L3Rlc3RzL2VsZnN0cm1lcmdlIC1vICRtZXJnZWQgJGlucHV0CisgZWNobyBlbGZsaW50ICRtZXJnZWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTBlNTRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MTUgKzAsMCBAQAotRnJvbSA0NmQwZDBjYTcxODA5MzQ4NmVlZWVkZjFiNDQxMzRlOWUyOWI1NmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwOToxODo1OSArMDgwMAotU3ViamVjdDogW1BBVENIXSBtaXBzIGJhY2tlbmRzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotCi1SZWJhc2UgdG8gMC4xNzAKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA4ICstCi0gYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysrCi0gYmFja2VuZHMvbWlwc19yZWdzLmMgICAgfCAxMDQgKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmIHwgIDc5ICsrKysrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL21pcHNfc3ltYm9sLmMgIHwgIDUyICsrKysrKysrCi0gbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDIgKwotIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfaW5pdC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVncy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmV0dmFsLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19zeW1ib2wuYwotCi1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotaW5kZXggN2YxZjVkNC4uOTFiYWY2ZSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCi0rKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotQEAgLTMzLDEyICszMywxMiBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAotIAotIAotIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKLS0JICB0aWxlZ3ggbTY4ayBicGYgcGFyaXNjCi0rCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYyBtaXBzCi0gbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAotIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKLS0JICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKLSsJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEgbGliZWJsX21pcHNfcGljLmEKLSBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQotIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCi0gCi1AQCAtMTI4LDYgKzEyOCwxMCBAQCBwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCi0gbGliZWJsX3BhcmlzY19waWNfYV9TT1VSQ0VTID0gJChwYXJpc2NfU1JDUykKLSBhbV9saWJlYmxfcGFyaXNjX3BpY19hX09CSkVDVFMgPSAkKHBhcmlzY19TUkNTOi5jPS5vcykKLSAKLSttaXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMKLStsaWJlYmxfbWlwc19waWNfYV9TT1VSQ0VTID0gJChtaXBzX1NSQ1MpCi0rYW1fbGliZWJsX21pcHNfcGljX2FfT0JKRUNUUyA9ICQobWlwc19TUkNTOi5jPS5vcykKLSsKLSBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQotIAlAcm0gLWYgJChAOi5zbz0ubWFwKQotIAkkKEFNX1ZfYXQpZWNobyAnRUxGVVRJTFNfJChQQUNLQUdFX1ZFUlNJT04pIHsgZ2xvYmFsOiAkKl9pbml0OyBsb2NhbDogKjsgfTsnIFwKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX2luaXQuYyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTc1YzA0ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbWlwc19pbml0LmMKLUBAIC0wLDAgKzEsNTkgQEAKLSsvKiBJbml0aWFsaXphdGlvbiBvZiBtaXBzIHNwZWNpZmljIGJhY2tlbmQgbGlicmFyeS4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCi0rI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9NSVBTXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rCi0rLyogVGhpcyBkZWZpbmVzIHRoZSBjb21tb24gcmVsb2MgaG9va3MgYmFzZWQgb24gbWlwc19yZWxvYy5kZWYuICAqLwotKyNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKLSsKLStjb25zdCBjaGFyICoKLSttaXBzX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSsgICAgIEdFbGZfSGFsZiBtYWNoaW5lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSsgICAgIEVibCAqZWgsCi0rICAgICBzaXplX3QgZWhsZW4pCi0rewotKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCi0rICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyogV2UgaGFuZGxlIGl0LiAgKi8KLSsgIGlmIChtYWNoaW5lID09IEVNX01JUFMpCi0rICAgIGVoLT5uYW1lID0gIk1JUFMgUjMwMDAgYmlnLWVuZGlhbiI7Ci0rICBlbHNlIGlmIChtYWNoaW5lID09IEVNX01JUFNfUlMzX0xFKQotKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGxpdHRsZS1lbmRpYW4iOwotKwotKyAgbWlwc19pbml0X3JlbG9jIChlaCk7Ci0rICBIT09LIChlaCwgcmVsb2Nfc2ltcGxlX3R5cGUpOwotKyAgSE9PSyAoZWgsIHJldHVybl92YWx1ZV9sb2NhdGlvbik7Ci0rICBIT09LIChlaCwgcmVnaXN0ZXJfaW5mbyk7Ci0rCi0rICByZXR1cm4gTU9EVkVSU0lPTjsKLSt9Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZWdzLmMgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ0Zjg2Y2IKLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCi1AQCAtMCwwICsxLDEwNCBAQAotKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBNSVBTIERXQVJGLgotKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQgbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotK3NzaXplX3QKLSttaXBzX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotKwkJICAgIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCi0rCQkgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCi0rCQkgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCi0rewotKyAgaWYgKG5hbWUgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDY2OwotKwotKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+IDY1IHx8IG5hbWVsZW4gPCA0KQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICAqcHJlZml4ID0gIiQiOwotKwotKyAgaWYgKHJlZ25vIDwgMzIpCi0rICAgIHsKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQotKyAgICAgICAgewotKyAgICAgICAgICBuYW1lWzBdID0gcmVnbm8gKyAnMCc7Ci0rICAgICAgICAgIG5hbWVsZW4gPSAxOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgbmFtZVswXSA9IChyZWdubyAvIDEwKSArICcwJzsKLSsgICAgICAgICAgbmFtZVsxXSA9IChyZWdubyAlIDEwKSArICcwJzsKLSsgICAgICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJlZ25vIDwgNjQpCi0rICAgIHsKLSsgICAgICAqc2V0bmFtZSA9ICJGUFUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgbmFtZVswXSA9ICdmJzsKLSsgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQotKwl7Ci0rCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSArICcwJzsKLSsJICBuYW1lbGVuID0gMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgLyAxMCArICcwJzsKLSsJICBuYW1lWzJdID0gKHJlZ25vIC0gMzIpICUgMTAgKyAnMCc7Ci0rCSAgbmFtZWxlbiA9IDM7Ci0rCX0KLSsgICAgfQotKyAgZWxzZSBpZiAocmVnbm8gPT0gNjQpCi0rICAgIHsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBuYW1lWzBdID0gJ2gnOwotKyAgICAgIG5hbWVbMV0gPSAnaSc7Ci0rICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIG5hbWVbMF0gPSAnbCc7Ci0rICAgICAgbmFtZVsxXSA9ICdvJzsKLSsgICAgICBuYW1lbGVuID0gMjsKLSsgICAgfQotKwotKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKLSsgIHJldHVybiBuYW1lbGVuOwotK30KLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZiBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDU3OTk3MAotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKLUBAIC0wLDAgKzEsNzkgQEAKLSsvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBtaXBzLiAgLSotIEMgLSotCi0rICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsvKiAJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KLSsKLStSRUxPQ19UWVBFIChOT05FLCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoMTYsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKDMyLCAgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChSRUwzMiwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoMjYsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEhJMTYsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChMTzE2LCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR1BSRUwxNiwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKExJVEVSQUwsICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1QxNiwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoUEMxNiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKENBTEwxNiwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHUFJFTDMyLCAgICAgICAgICAgIDApCi0rCi0rUkVMT0NfVFlQRSAoU0hJRlQ1LCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFNISUZUNiwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICg2NCwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX0RJU1AsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9QQUdFLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfT0ZTVCwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX0hJMTYsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9MTzE2LCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChTVUIsICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSU5TRVJUX0EsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKElOU0VSVF9CLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChERUxFVEUsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSElHSEVSLCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEhJR0hFU1QsICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChDQUxMX0hJMTYsICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQ0FMTF9MTzE2LCAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFNDTl9ESVNQLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChSRUwxNiwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQUREX0lNTUVESUFURSwgICAgICAwKQotK1JFTE9DX1RZUEUgKFBKVU1QLCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChSRUxHT1QsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSkFMUiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQUkVMMzIsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUE1PRDY0LCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUw2NCwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfR0QsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0xETSwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfSEkxNiwgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0xPMTYsICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0dPVFRQUkVMLCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTDMyLCAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfVFBSRUw2NCwgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMX0hJMTYsICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9MTzE2LCAgICAgMCkKLSsKLSsjZGVmaW5lIE5PX0NPUFlfUkVMT0MgMQotKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgMQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjU2Y2QxZgotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotQEAgLTAsMCArMSwzMjEgQEAKLSsvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L21pcHMgQUJJLgotKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPGR3YXJmLmg+Ci0rI2luY2x1ZGUgPGVsZi5oPgotKwotKyNpbmNsdWRlICIuLi9saWJlYmwvbGliZWJsUC5oIgotKyNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIKLSsKLSsjZGVmaW5lIEJBQ0tFTkQgbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIFRoZSBBQkkgb2YgdGhlIGZpbGUuICBBbHNvIHNlZSBFRl9NSVBTX0FCSTIgYWJvdmUuICovCi0rI2RlZmluZSBFRl9NSVBTX0FCSQkJMHgwMDAwRjAwMAotKwotKy8qIFRoZSBvcmlnaW5hbCBvMzIgYWJpLiAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9PMzIgICAgICAgICAgMHgwMDAwMTAwMAotKwotKy8qIE8zMiBleHRlbmRlZCB0byB3b3JrIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmVzICovCi0rI2RlZmluZSBFX01JUFNfQUJJX082NCAgICAgICAgICAweDAwMDAyMDAwCi0rCi0rLyogRUFCSSBpbiAzMiBiaXQgbW9kZSAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJMzIgICAgICAgMHgwMDAwMzAwMAotKwotKy8qIEVBQkkgaW4gNjQgYml0IG1vZGUgKi8KLSsjZGVmaW5lIEVfTUlQU19BQklfRUFCSTY0ICAgICAgIDB4MDAwMDQwMDAKLSsKLSsvKiBBbGwgdGhlIHBvc3NpYmxlIE1JUFMgQUJJcy4gKi8KLStlbnVtIG1pcHNfYWJpCi0rICB7Ci0rICAgIE1JUFNfQUJJX1VOS05PV04gPSAwLAotKyAgICBNSVBTX0FCSV9OMzIsCi0rICAgIE1JUFNfQUJJX08zMiwKLSsgICAgTUlQU19BQklfTjY0LAotKyAgICBNSVBTX0FCSV9PNjQsCi0rICAgIE1JUFNfQUJJX0VBQkkzMiwKLSsgICAgTUlQU19BQklfRUFCSTY0LAotKyAgICBNSVBTX0FCSV9MQVNUCi0rICB9OwotKwotKy8qIEZpbmQgdGhlIG1pcHMgQUJJIG9mIHRoZSBjdXJyZW50IGZpbGUgKi8KLStlbnVtIG1pcHNfYWJpIGZpbmRfbWlwc19hYmkoRWxmICplbGYpCi0rewotKyAgR0VsZl9FaGRyIGVoZHJfbWVtOwotKyAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7Ci0rCi0rICBpZiAoZWhkciA9PSBOVUxMKQotKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKLSsKLSsgIEdFbGZfV29yZCBlbGZfZmxhZ3MgPSBlaGRyLT5lX2ZsYWdzOwotKwotKyAgLyogQ2hlY2sgZWxmX2ZsYWdzIHRvIHNlZSBpZiBpdCBzcGVjaWZpZXMgdGhlIEFCSSBiZWluZyB1c2VkLiAgKi8KLSsgIHN3aXRjaCAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJKSkKLSsgICAgewotKyAgICBjYXNlIEVfTUlQU19BQklfTzMyOgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9PNjQ6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKLSsgICAgY2FzZSBFX01JUFNfQUJJX0VBQkkzMjoKLSsgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOwotKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTY0OgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgaWYgKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSTIpKQotKwlyZXR1cm4gTUlQU19BQklfTjMyOwotKyAgICB9Ci0rCi0rICAvKiBHQ0MgY3JlYXRlcyBhIHBzZXVkby1zZWN0aW9uIHdob3NlIG5hbWUgZGVzY3JpYmVzIHRoZSBBQkkuICAqLwotKyAgc2l6ZV90IHNoc3RybmR4OwotKyAgaWYgKGVsZl9nZXRzaGRyc3RybmR4IChlbGYsICZzaHN0cm5keCkgPCAwKQotKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKLSsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBFbGZfU2NuICpzY24gPSBOVUxMOwotKyAgd2hpbGUgKChzY24gPSBlbGZfbmV4dHNjbiAoZWxmLCBzY24pKSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgR0VsZl9TaGRyIHNoZHJfbWVtOwotKyAgICAgIEdFbGZfU2hkciAqc2hkciA9IGdlbGZfZ2V0c2hkciAoc2NuLCAmc2hkcl9tZW0pOwotKyAgICAgIGlmIChzaGRyID09IE5VTEwpCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKLSsKLSsgICAgICBuYW1lID0gZWxmX3N0cnB0ciAoZWxmLCBzaHN0cm5keCwgc2hkci0+c2hfbmFtZSkgPzogIiI7Ci0rICAgICAgaWYgKHN0cm5jbXAgKG5hbWUsICIubWRlYnVnLiIsIDgpICE9IDApCi0rICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmkzMiIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTzMyOwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTjMyIikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9OMzI7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmk2NCIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTjY0OwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTzY0IikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpMzIiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmk2NCIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OwotKyAgICAgIGVsc2UKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKLSt9Ci0rCi0rdW5zaWduZWQgaW50Ci0rbWlwc19hYmlfcmVnc2l6ZSAoZW51bSBtaXBzX2FiaSBhYmkpCi0rewotKyAgc3dpdGNoIChhYmkpCi0rICAgIHsKLSsgICAgY2FzZSBNSVBTX0FCSV9FQUJJMzI6Ci0rICAgIGNhc2UgTUlQU19BQklfTzMyOgotKyAgICAgIHJldHVybiA0OwotKyAgICBjYXNlIE1JUFNfQUJJX04zMjoKLSsgICAgY2FzZSBNSVBTX0FCSV9ONjQ6Ci0rICAgIGNhc2UgTUlQU19BQklfTzY0OgotKyAgICBjYXNlIE1JUFNfQUJJX0VBQkk2NDoKLSsgICAgICByZXR1cm4gODsKLSsgICAgY2FzZSBNSVBTX0FCSV9VTktOT1dOOgotKyAgICBjYXNlIE1JUFNfQUJJX0xBU1Q6Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSt9Ci0rCi0rCi0rLyogJHYwIG9yIHBhaXIgJHYwLCAkdjEgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ19vMzJbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgfTsKLSsKLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19pbnRyZWcJMQotKyNkZWZpbmUgbmxvY19pbnRyZWdwYWlyCTQKLSsKLSsvKiAkZjAgKGZsb2F0KSwgb3IgcGFpciAkZjAsICRmMSAoZG91YmxlKS4KLSsgKiBmMi9mMyBhcmUgdXNlZCBmb3IgQ09NUExFWCAoPSAyIGRvdWJsZXMpIHJldHVybnMgaW4gRm9ydHJhbiAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdfbzMyW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM1IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgIH07Ci0rCi0rLyogJGYwLCBvciBwYWlyICRmMCwgJGYyLiAgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19mcHJlZyAgMQotKyNkZWZpbmUgbmxvY19mcHJlZ3BhaXIgNAotKyNkZWZpbmUgbmxvY19mcHJlZ3F1YWQgOAotKwotKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQotKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKLSsgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluICR2MC4gICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9icmVnMiwgLm51bWJlciA9IDAgfQotKyAgfTsKLSsjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKLSsKLStpbnQKLSttaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotK3sKLSsgIC8qIEZpcnN0IGZpbmQgdGhlIEFCSSB1c2VkIGJ5IHRoZSBlbGYgb2JqZWN0ICovCi0rICBlbnVtIG1pcHNfYWJpIGFiaSA9IGZpbmRfbWlwc19hYmkoZnVuY3R5cGVkaWUtPmN1LT5kYmctPmVsZik7Ci0rCi0rICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3Jvbmcgd2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIEFCSSAqLwotKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9MQVNUKQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICAvKiBXZSBjb3VsZG4ndCBpZGVudGlmeSB0aGUgQUJJLCBidXQgdGhlIGZpbGUgc2VlbXMgdmFsaWQgKi8KLSsgIGlmIChhYmkgPT0gTUlQU19BQklfVU5LTk9XTikKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgLyogQ2FuJ3QgaGFuZGxlIEVBQkkgdmFyaWFudHMgKi8KLSsgIGlmICgoYWJpID09IE1JUFNfQUJJX0VBQkkzMikgfHwgKGFiaSA9PSBNSVBTX0FCSV9FQUJJNjQpKQotKyAgICByZXR1cm4gLTI7Ci0rCi0rICB1bnNpZ25lZCBpbnQgcmVnc2l6ZSA9IG1pcHNfYWJpX3JlZ3NpemUgKGFiaSk7Ci0rICBpZiAoIXJlZ3NpemUpCi0rICAgIHJldHVybiAtMjsKLSsKLSsgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCi0rICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KLSsKLSsgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKLSsgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKLSsgIGlmIChhdHRyID09IE5VTEwpCi0rICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLwotKyAgICByZXR1cm4gMDsKLSsKLSsgIER3YXJmX0RpZSBkaWVfbWVtOwotKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSsgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOwotKwotKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLwotKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgotKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQotKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQotKyAgICB7Ci0rICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rICAgIH0KLSsKLSsgIHN3aXRjaCAodGFnKQotKyAgICB7Ci0rICAgIGNhc2UgLTE6Ci0rICAgICAgcmV0dXJuIC0xOwotKwotKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgotKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQotKwl7Ci0rCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rCX0KLSsgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKwotKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgotKyAgICAgIHsKLSsgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKLSsJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKLSsJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKLSsJICB7Ci0rCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCi0rCSAgICAgIHNpemUgPSByZWdzaXplOwotKwkgICAgZWxzZQotKwkgICAgICByZXR1cm4gLTE7Ci0rCSAgfQotKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCi0rCSAgewotKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKLSsJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKLSsJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQotKwkgICAgICByZXR1cm4gLTE7Ci0rCi0rI2RlZmluZSBBQklfTE9DKGxvYywgcmVnc2l6ZSkgKChyZWdzaXplKSA9PSA0ID8gKGxvYyAjIyBfbzMyKSA6IChsb2MpKQotKwotKwkgICAgaWYgKGVuY29kaW5nID09IERXX0FURV9mbG9hdCkKLSsJICAgICAgewotKwkJKmxvY3AgPSBBQklfTE9DKGxvY19mcHJlZywgcmVnc2l6ZSk7Ci0rCQlpZiAoc2l6ZSA8PSByZWdzaXplKQotKwkJICAgIHJldHVybiBubG9jX2ZwcmVnOwotKwotKwkJaWYgKHNpemUgPD0gMipyZWdzaXplKQotKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjsKLSsKLSsJCWlmIChzaXplIDw9IDQqcmVnc2l6ZSAmJiBhYmkgPT0gTUlQU19BQklfTzMyKQotKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncXVhZDsKLSsKLSsJCWdvdG8gYWdncmVnYXRlOwotKwkgICAgICB9Ci0rCSAgfQotKwkqbG9jcCA9IEFCSV9MT0MobG9jX2ludHJlZywgcmVnc2l6ZSk7Ci0rCWlmIChzaXplIDw9IHJlZ3NpemUpCi0rCSAgcmV0dXJuIG5sb2NfaW50cmVnOwotKwlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCi0rCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSsKLSsJLyogRWxzZSBmYWxsIHRocm91Z2guIFNob3VsZG4ndCBoYXBwZW4gdGhvdWdoIChhdCBsZWFzdCB3aXRoIGdjYykgKi8KLSsgICAgICB9Ci0rCi0rICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotKyAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotKyAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgotKyAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgotKyAgICBhZ2dyZWdhdGU6Ci0rICAgICAgLyogWFhYIFRPRE86IENhbid0IGhhbmRsZSBzdHJ1Y3R1cmUgcmV0dXJuIHdpdGggb3RoZXIgQUJJJ3MgeWV0IDotLyAqLwotKyAgICAgIGlmICgoYWJpICE9IE1JUFNfQUJJX08zMikgJiYgKGFiaSAhPSBNSVBTX0FCSV9PNjQpKQotKyAgICAgICAgcmV0dXJuIC0yOwotKwotKyAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKLSsgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7Ci0rICAgIH0KLSsKLSsgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KLSsgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAotKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KLSsgIHJldHVybiAtMjsKLSt9Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19zeW1ib2wuYyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYTQ2NWZlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCi1AQCAtMCwwICsxLDUyIEBACi0rLyogTUlQUyBzcGVjaWZpYyBzeW1ib2xpYyBuYW1lIGhhbmRsaW5nLgotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsgICBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LCAyMDAyLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGVsZi5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLSsvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCi0rRWxmX1R5cGUKLSttaXBzX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQotK3sKLSsgIHN3aXRjaCAodHlwZSkKLSsgICAgewotKyAgICBjYXNlIFJfTUlQU18xNjoKLSsgICAgICByZXR1cm4gRUxGX1RfSEFMRjsKLSsgICAgY2FzZSBSX01JUFNfMzI6Ci0rICAgICAgcmV0dXJuIEVMRl9UX1dPUkQ7Ci0rICAgIGNhc2UgUl9NSVBTXzY0OgotKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gRUxGX1RfTlVNOwotKyAgICB9Ci0rfQotZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLWluZGV4IDFmODE0NzcuLjUzNzEzOTYgMTAwNjQ0Ci0tLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC03Miw2ICs3Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKLSAgIHsgInNwYXJjIiwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCi0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAotICAgeyAiczM5MCIsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAotKyAgeyAibWlwcyIsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAotKyAgeyAibWlwcyIsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCi0gCi0gICB7ICJtMzIiLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKLSAgIHsgIm02OGsiLCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDkzMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbTogS3VydCBSb2Vja3ggPGt1cnRAcm9lY2t4LmJlPgotU3ViamVjdDogTWFrZSByZWFkZWxmIC13IG91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBtaXBzCi1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzY2MjA0MQotRm9yd2FyZGVkOiBub3QtbmVlZGVkCi0KLVVwc3RyZWFtcyB3YW50cyBhIGNoYW5nZSB3aGVyZSB0aGlzIGlzIGhhbmRsZWQgYnkgYSBob29rIHRoYXQgbmVlZHMKLXRvIGJlIGZpbGxlZCBpbiBieSB0aGUgYmFja2VuZCBmb3IgdGhlIGFyY2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogYi9zcmMvcmVhZGVsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9zcmMvcmVhZGVsZi5jCi0rKysgYi9zcmMvcmVhZGVsZi5jCi1AQCAtODM0Myw3ICs4MzQzLDggQEAgcHJpbnRfZGVidWcgKER3ZmxfTW9kdWxlICpkd2ZsbW9kLCBFYmwgKgotICAgICAgIEdFbGZfU2hkciBzaGRyX21lbTsKLSAgICAgICBHRWxmX1NoZHIgKnNoZHIgPSBnZWxmX2dldHNoZHIgKHNjbiwgJnNoZHJfbWVtKTsKLSAKLS0gICAgICBpZiAoc2hkciAhPSBOVUxMICYmIHNoZHItPnNoX3R5cGUgPT0gU0hUX1BST0dCSVRTKQotKyAgICAgIGlmIChzaGRyICE9IE5VTEwgJiYgKAotKwkgKHNoZHItPnNoX3R5cGUgPT0gU0hUX1BST0dCSVRTKSB8fCAoc2hkci0+c2hfdHlwZSA9PSBTSFRfTUlQU19EV0FSRikpKQotIAl7Ci0gCSAgc3RhdGljIGNvbnN0IHN0cnVjdAotIAkgIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNjE3ZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdHkgZm9yIG1vZGlmeWluZyBHUFQgZGlzayBwYXJ0aXRpb25pbmciCi1ERVNDUklQVElPTiA9ICJHUFQgZmRpc2sgaXMgYSBkaXNrIHBhcnRpdGlvbmluZyB0b29sIGxvb3NlbHkgbW9kZWxlZCBvbiBMaW51eCBmZGlzaywgYnV0IHVzZWQgZm9yIG1vZGlmeWluZyBHVUlEIFBhcnRpdGlvbiBUYWJsZSAoR1BUKSBkaXNrcy4gVGhlIHJlbGF0ZWQgRml4UGFydHMgdXRpbGl0eSBmaXhlcyBzb21lIGNvbW1vbiBwcm9ibGVtcyBvbiBNYXN0ZXIgQm9vdCBSZWNvcmQgKE1CUikgZGlza3MuIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLURFUEVORFMgPSAidXRpbC1saW51eCBwb3B0IG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke1BWfS8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDdiNjI1YTU4M2I2NmM4YzU4NDBiZTU5MjNmM2UzZmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODlmZDVhZWMzNWM0MDlkNjEwYTM2Y2I0OWM2NWI0NDIwNTg1NjVlZDg0MDQyZjc2N2JiYTYxNGI4ZmM5MWI1YyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ3B0ZmRpc2svZmlsZXMvZ3B0ZmRpc2svIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dwdGZkaXNrLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLUVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdDWFg9JHtDWFh9JyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGNnZGlzayAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBnZGlzayAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBzZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgZml4cGFydHMgJHtEfSR7c2JpbmRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDQzYzk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjQuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBtb2RpZnlpbmcgR1BUIGRpc2sgcGFydGl0aW9uaW5nIgorREVTQ1JJUFRJT04gPSAiR1BUIGZkaXNrIGlzIGEgZGlzayBwYXJ0aXRpb25pbmcgdG9vbCBsb29zZWx5IG1vZGVsZWQgb24gTGludXggZmRpc2ssIGJ1dCB1c2VkIGZvciBtb2RpZnlpbmcgR1VJRCBQYXJ0aXRpb24gVGFibGUgKEdQVCkgZGlza3MuIFRoZSByZWxhdGVkIEZpeFBhcnRzIHV0aWxpdHkgZml4ZXMgc29tZSBjb21tb24gcHJvYmxlbXMgb24gTWFzdGVyIEJvb3QgUmVjb3JkIChNQlIpIGRpc2tzLiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitERVBFTkRTID0gInV0aWwtbGludXgiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke1BWfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiNWVjYzNjNDQ5MTNiYjZiNTNkMzcwOGQxYWM3YWMyOTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjY2MzM5MWE2ODc2ZjE5YTNjZDkwMWQ4NjI0MjNhMTZlMmI1Y2VhYTJmNGEzYjliYjY4MWU2NGI5YzdiYTc4ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ3B0ZmRpc2svZmlsZXMvZ3B0ZmRpc2svIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dwdGZkaXNrLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdDWFg9JHtDWFh9JyBnZGlzayBmaXhwYXJ0cyAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgorCitQQUNLQUdFQ09ORklHID8/PSAibmN1cnNlcyBwb3B0IgorUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICJjZ2Rpc2ssLG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW3BvcHRdID0gInNnZGlzaywscG9wdCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgZm9yIGYgaW4gY2dkaXNrIHNnZGlzazsgZG8KKyAgICAgICAgaWYgWyAteCAkZiBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJGYgJHtEfSR7c2JpbmRpcn0KKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgaW5zdGFsbCAtbSAwNzU1IGdkaXNrICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IGZpeHBhcnRzICR7RH0ke3NiaW5kaXJ9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS8wMDAxLUFkZC1QLXByb21wdC1pbnRvLVVzYWdlLWluZm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTE2YjJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS8wMDAxLUFkZC1QLXByb21wdC1pbnRvLVVzYWdlLWluZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDA4YWJmOTQ0YjJiZmYyN2I2ZGQzMjVkZDE1YjQ4NjFjZWJlZjExM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdW5saW5nIFpoZW5nIDx6aGVuZ2p1bmxpbmdAaHVhd2VpLmNvbT4KLURhdGU6IFdlZCwgOCBBcHIgMjAxNSAwMzoyNjo1NyArMDAwMAotU3ViamVjdDogW1BBVENIXSBBZGQgLVAgcHJvbXB0IGludG8gVXNhZ2UgaW5mbwotCi1DdXJyZW50bHksIFVzYWdlIGluZm8gZG9lc24ndCBpbmNsdWRlIC1QIHByb21wdCwgYWRkIGl0OgotCi1yb290QGFybWE5ZWw6fiMgZmlsZQotVXNhZ2U6IGZpbGUgWy1iY0VoaWtMbE5ucHJzdnowXSBbLS1hcHBsZV0gWy0tbWltZS1lbmNvZGluZ10gWy0tbWltZS10eXBlXQotICAgICAgICAgICAgWy1lIHRlc3RuYW1lXSBbLUYgc2VwYXJhdG9yXSBbLWYgbmFtZWZpbGVdIFstbSBtYWdpY2ZpbGVzXQotICAgICAgICAgICAgWy1QIHBhcmFtZXRlcj1saW1pdHNdIGZpbGUgLi4uCi0gICAgICAgZmlsZSAtQyBbLW0gbWFnaWNmaWxlc10KLSAgICAgICBmaWxlIFstLWhlbHBdCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEp1bmxpbmcgWmhlbmcgPHpoZW5nanVubGluZ0BodWF3ZWkuY29tPgotLS0tCi0gc3JjL2ZpbGUuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZmlsZS5jIGIvc3JjL2ZpbGUuYwotaW5kZXggMmIxNWUyMS4uZTVhOTU3YiAxMDA2NDQKLS0tLSBhL3NyYy9maWxlLmMKLSsrKyBiL3NyYy9maWxlLmMKLUBAIC03Niw4ICs3Niw4IEBAIGludCBnZXRvcHRfbG9uZyhpbnQgYXJnYywgY2hhciAqIGNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpvcHRzdHJpbmcsIGNvbnN0IHN0cnVjCi0gIyBkZWZpbmUgVVNBR0UgIFwKLSAgICAgIlVzYWdlOiAlcyBbIiBGSUxFX0ZMQUdTIFwKLSAJIl0gWy0tYXBwbGVdIFstLWV4dGVuc2lvbl0gWy0tbWltZS1lbmNvZGluZ10gWy0tbWltZS10eXBlXVxuIiBcCi0tICAgICIgICAgICAgICAgICBbLWUgdGVzdG5hbWVdIFstRiBzZXBhcmF0b3JdIFstZiBuYW1lZmlsZV0gWy1tIG1hZ2ljZmlsZXNdICIgXAotLSAgICAiZmlsZSAuLi5cbiIgXAotKyAgICAiICAgICAgICAgICAgWy1lIHRlc3RuYW1lXSBbLUYgc2VwYXJhdG9yXSBbLWYgbmFtZWZpbGVdIFstbSBtYWdpY2ZpbGVzXVxuICIgXAotKyAgICAiICAgICAgICAgICAgWy1QIHBhcmFtZXRlcj1saW1pdHNdIGZpbGUgLi4uXG4iIFwKLSAgICAgIiAgICAgICAlcyAtQyBbLW0gbWFnaWNmaWxlc11cbiIgXAotICAgICAiICAgICAgICVzIFstLWhlbHBdXG4iCi0gCi0tLSAKLTEuOC4zLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxNTkyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgotREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAotb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi0jIHR3byBjbGF1c2UgQlNECi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTZhNzM4Mjg3MmVkYjY4ZDMzZTFhOTM5OGI2ZTAzMTg4IgotCi1ERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKLQotIyBCbGFja2xpc3QgYSBib2d1cyB0YWcgaW4gdXBzdHJlYW0gY2hlY2sKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIkZJTEUoP1A8cHZlcj4oPyE2XzIzKS4rKSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQgXAotICAgICAgICBmaWxlOi8vZGViaWFuLTc0MjI2Mi5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1QLXByb21wdC1pbnRvLVVzYWdlLWluZm8ucGF0Y2ggXAotICAgICAgICAiCi0KLVNSQ1JFViA9ICJkNDc0ZTM1NTEzOTQwZGJjYTAzOWI1MTBiNGRlNzA1YjQ0ZjViZDljIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgotCi1DRkxBR1NfYXBwZW5kID0gIiAtc3RkPWM5OSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi1QUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLSMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCi0jIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCi1iaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOTI5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKK29uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyB0d28gY2xhdXNlIEJTRAorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT02YTczODI4NzJlZGI2OGQzM2UxYTkzOThiNmUwMzE4OCIKKworREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCisKKyMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJGSUxFKD9QPHB2ZXI+KD8hNl8yMykuKykiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKKyAgICAgICAgZmlsZTovL2RlYmlhbi03NDIyNjIucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ1JFViA9ICIzMTVjZWYyZjY5OWRhM2MzMWE1NGJkM2M2YzYwNzA2ODBmYmFmMWY1IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmaWxlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZpbGVdID0gIiR7YmluZGlyfS9maWxlIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KKyMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KK2JpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwppbmRleCBkNGFhY2E0Li5jN2M4OGYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCkBAIC0zMiw3ICszMiw2IEBACiBTUkNfVVJJID0gIlwKICAgICAgICAgICAgJHtCQVNFVVJJfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1jOTktc25wcmludGYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKQEAgLTcyLDYgKzcxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwNDUtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNDctc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDktZ2NjLW92ZXJyaWRlLVRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uby1zc2UtZml4LXRlc3QtY2FzZS1mYWlsdXJlcy5wYXRjaCBcCiAgICAgICAgICAgICR7QkFDS1BPUlRTfSBcCkBAIC05NSwxMCArOTUsMTIgQEAKIEpBVkEgPSAiIgogCiBMVE8gPSAiLS1lbmFibGUtbHRvIgorU1NQID89ICItLWRpc2FibGUtbGlic3NwIgorU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgogCiBFWFRSQV9PRUNPTkZfQkFTRSA9ICJcCiAgICAgJHtMVE99IFwKLSAgICAtLWVuYWJsZS1saWJzc3AgXAorICAgICR7U1NQfSBcCiAgICAgLS1lbmFibGUtbGliaXRtIFwKICAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKICAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCkBAIC0xMjAsOSArMTIyLDEwIEBACiAgICAgLS13aXRoLXN5c3RlbS16bGliIFwKICAgICAtLWRpc2FibGUtbHRvIFwKICAgICAtLWRpc2FibGUtcGx1Z2luIFwKKyAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAogICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAogICAgIC0td2l0aG91dC1pc2wgXAotICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAorICAgIC0tZGlzYWJsZS1saWJzc3AgXAogIgogCiBFWFRSQV9PRUNPTkZfUEFUSFMgPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOC1jOTktc25wcmludGYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJkNTYyYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gNzMyZjEwZWVhZDYxODMwYThhZWUxYmYzOGNjZTg5MmRhMjVjMzViMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ5OjAzICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvNDddIGM5OS1zbnByaW50ZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotaW5kZXggNDM5Njk4OTJhYTIuLjEyMTQ4NDU3OTA5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCi0rKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLUBAIC0xNDQsNyArMTQ0LDcgQEAgbmFtZXNwYWNlIHN0ZAotICAgdXNpbmcgOjp2c3ByaW50ZjsKLSB9IC8vIG5hbWVzcGFjZSBzdGQKLSAKLS0jaWYgX0dMSUJDWFhfVVNFX0M5OV9TVERJTwotKyNpZiBfR0xJQkNYWF9VU0VfQzk5X1NURElPIHx8IGRlZmluZWQoX19VQ0xJQkNfXykKLSAKLSAjdW5kZWYgc25wcmludGYKLSAjdW5kZWYgdmZzY2FuZgotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0OS1nY2Mtb3ZlcnJpZGUtVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0OS1nY2Mtb3ZlcnJpZGUtVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNTNjOTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ5LWdjYy1vdmVycmlkZS1UQVJHRVRfTElCQ19QUk9WSURFU19TU1AucGF0Y2gKQEAgLTAsMCArMSwyMDQgQEAKK0Zyb20gOTgxNWJkOTc1NjFjNzc4ZWUwYmMwYzE3ZjI0NWU4OGU2NjU3MDExMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHNhbmRyYSA8c2FuZHJhQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KK0RhdGU6IFdlZCwgMSBOb3YgMjAxNyAwMjoxNDoxOSArMDAwMAorU3ViamVjdDogW1BBVENIXSAyMDE3LTEwLTMxICBTYW5kcmEgTG9vc2Vtb3JlICA8c2FuZHJhQGNvZGVzb3VyY2VyeS5jb20+CisKKwlnY2MvCisJKiBjb25maWd1cmUuYWMgKC0tZW5hYmxlLWxpYnNzcCk6IE5ldy4KKwkoZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwKTogQ2hlY2sgZm9yIGV4cGxpY2l0IHNldHRpbmcgYmVmb3JlCisJdHJ5aW5nIHRvIGRldGVybWluZSB0YXJnZXQtc3BlY2lmaWMgZGVmYXVsdC4gIEFkanVzdCBpbmRlbnRhdGlvbi4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCisJKiBkb2MvaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9uKTogRXhwYW5kIC0tZGlzYWJsZS1saWJzc3AKKwlkb2N1bWVudGF0aW9uLgorCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI1NDI4OCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvODIzMDQ5L10KKworIGdjYy9DaGFuZ2VMb2cgICAgICAgIHwgIDkgKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZSAgICAgICAgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKy0tLQorIGdjYy9jb25maWd1cmUuYWMgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0tCisgZ2NjL2RvYy9pbnN0YWxsLnRleGkgfCAgMyArKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK0luZGV4OiBnY2MtNy4zLjAvZ2NjL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy03LjMuMC5vcmlnL2djYy9jb25maWd1cmUuYWMKKysrKyBnY2MtNy4zLjAvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU3MTksMTAgKzU3MTksMjUgQEAgaWYgdGVzdCB4JGdjY19jdl9zb2xhcmlzX2NydHMgPSB4eWVzOyB0aAorICAgCSAgICBbRGVmaW5lIGlmIHRoZSBzeXN0ZW0tcHJvdmlkZWQgQ1JUcyBhcmUgcHJlc2VudCBvbiBTb2xhcmlzLl0pCisgZmkKKyAKKytBQ19BUkdfRU5BQkxFKGxpYnNzcCwKKytbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWxpYnNzcF0sIFtlbmFibGUgbGlua2luZyBhZ2FpbnN0IGxpYnNzcF0pXSwKKytbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorKyAgeWVzfG5vKQorKyAgICA7OworKyAgKikKKysgICAgQUNfTVNHX0VSUk9SKFt1bmtub3duIGxpYnNzcCBzZXR0aW5nICRlbmFibGV2YWxdKQorKyAgICA7OworK2VzYWNdLCBbXSkKKysKKyAjIFRlc3QgZm9yIHN0YWNrIHByb3RlY3RvciBzdXBwb3J0IGluIHRhcmdldCBDIGxpYnJhcnkuCisgQUNfQ0FDSEVfQ0hFQ0soX19zdGFja19jaGtfZmFpbCBpbiB0YXJnZXQgQyBsaWJyYXJ5LAorLSAgICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcCwKKy0gICAgICBbZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vCisrICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3AsCisrICBbZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vCisrICBpZiB0ZXN0ICJ4JGVuYWJsZV9saWJzc3AiID0gInhubyI7IHRoZW4KKysgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllcworKyAgZWxpZiB0ZXN0ICJ4JGVuYWJsZV9saWJzc3AiID0gInh5ZXMiOyB0aGVuCisrICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubworKyAgZWxzZQorICAgICBjYXNlICIkdGFyZ2V0IiBpbgorICAgICAgICAqLSotbXVzbCopCisgCSAjIEFsbCB2ZXJzaW9ucyBvZiBtdXNsIHByb3ZpZGUgc3RhY2sgcHJvdGVjdG9yCitAQCAtNTc1OSw4ICs1Nzc0LDkgQEAgQUNfQ0FDSEVfQ0hFQ0soX19zdGFja19jaGtfZmFpbCBpbiB0YXJnZQorIAkgQUNfQ0hFQ0tfRlVOQyhfX3N0YWNrX2Noa19mYWlsLFtnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzXSwKKyAgICAgICAgICAgIFtlY2hvICJubyBfX3N0YWNrX2Noa19mYWlsIG9uIHRoaXMgdGFyZ2V0Il0pCisgICAgICAgICA7OworLSAgKikgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vIDs7CistICAgIGVzYWNdKQorKyAgICAgICAqKSBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8gOzsKKysgICAgZXNhYworKyAgZmldKQorIAorIGlmIHRlc3QgeCRnY2NfY3ZfbGliY19wcm92aWRlc19zc3AgPSB4eWVzOyB0aGVuCisgICBBQ19ERUZJTkUoVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQLCAxLAorSW5kZXg6IGdjYy03LjMuMC9nY2MvZG9jL2luc3RhbGwudGV4aQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy03LjMuMC5vcmlnL2djYy9kb2MvaW5zdGFsbC50ZXhpCisrKysgZ2NjLTcuMy4wL2djYy9kb2MvaW5zdGFsbC50ZXhpCitAQCAtMTY1OCw3ICsxNjU4LDggQEAgbm90IGJlIGJ1aWx0LgorIAorIEBpdGVtIC0tZGlzYWJsZS1saWJzc3AKKyBTcGVjaWZ5IHRoYXQgdGhlIHJ1bi10aW1lIGxpYnJhcmllcyBmb3Igc3RhY2sgc21hc2hpbmcgcHJvdGVjdGlvbgorLXNob3VsZCBub3QgYmUgYnVpbHQuCisrc2hvdWxkIG5vdCBiZSBidWlsdCBvciBsaW5rZWQgYWdhaW5zdC4gIE9uIG1hbnkgdGFyZ2V0cyBsaWJyYXJ5IHN1cHBvcnQKKytpcyBwcm92aWRlZCBieSB0aGUgQyBsaWJyYXJ5IGluc3RlYWQuCisgCisgQGl0ZW0gLS1kaXNhYmxlLWxpYnF1YWRtYXRoCisgU3BlY2lmeSB0aGF0IHRoZSBHQ0MgcXVhZC1wcmVjaXNpb24gbWF0aCBsaWJyYXJ5IHNob3VsZCBub3QgYmUgYnVpbHQuCitJbmRleDogZ2NjLTcuMy4wL2djYy9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtNy4zLjAub3JpZy9nY2MvY29uZmlndXJlCisrKysgZ2NjLTcuMy4wL2djYy9jb25maWd1cmUKK0BAIC05NDAsNiArOTQwLDcgQEAgZW5hYmxlX2ZpeF9jb3J0ZXhfYTUzXzg0MzQxOQorIHdpdGhfZ2xpYmNfdmVyc2lvbgorIGVuYWJsZV9nbnVfdW5pcXVlX29iamVjdAorIGVuYWJsZV9saW5rZXJfYnVpbGRfaWQKKytlbmFibGVfbGlic3NwCisgZW5hYmxlX2RlZmF1bHRfc3NwCisgd2l0aF9sb25nX2RvdWJsZV8xMjgKKyB3aXRoX2djCitAQCAtMTY3OSw2ICsxNjgwLDcgQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24gb24gZ2xpYmMgc3lzdGVtcworICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlciB3aWxsIGFsd2F5cyBwYXNzIC0tYnVpbGQtaWQgdG8gbGlua2VyCisrICAtLWVuYWJsZS1saWJzc3AgICAgICAgICBlbmFibGUgbGlua2luZyBhZ2FpbnN0IGxpYnNzcAorICAgLS1lbmFibGUtZGVmYXVsdC1zc3AgICAgZW5hYmxlIFN0YWNrIFNtYXNoaW5nIFByb3RlY3Rpb24gYXMgZGVmYXVsdAorICAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwgKGFuZAorQEAgLTE4NDUwLDcgKzE4NDUyLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTg0MzYgImNvbmZpZ3VyZSIKKysjbGluZSAxODQ1NSAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xODU1Niw3ICsxODU1OCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDE4NTQyICJjb25maWd1cmUiCisrI2xpbmUgMTg1NjEgImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMjUyMzQsNiArMjUyMzYsNyBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1NQQVJDNV9WSVM0IDEiCisgCisgZmkKKyAKKysKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgZm9yIFNQQVJDNiBpbnN0cnVjdGlvbnMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBmb3IgU1BBUkM2IGluc3RydWN0aW9ucy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7Z2NjX2N2X2FzX3NwYXJjX3NwYXJjNitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtMjUyNzAsNiArMjUyNzMsNyBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1NQQVJDNiAxIiA+PmNvCisgCisgZmkKKyAKKysKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgZm9yIExFT04gaW5zdHJ1Y3Rpb25zIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgZm9yIExFT04gaW5zdHJ1Y3Rpb25zLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtnY2NfY3ZfYXNfc3BhcmNfbGVvbitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtMjg5NDcsNiArMjg5NTEsMTggQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TT0xBUklTX0NSVFMgMSIgPgorIAorIGZpCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnNzcCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfbGlic3NwK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnNzcDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorKyAgeWVzfG5vKQorKyAgICA7OworKyAgKikKKysgICAgYXNfZm5fZXJyb3IgInVua25vd24gbGlic3NwIHNldHRpbmcgJGVuYWJsZXZhbCIgIiRMSU5FTk8iIDUKKysgICAgOzsKKytlc2FjCisrZmkKKysKKysKKyAjIFRlc3QgZm9yIHN0YWNrIHByb3RlY3RvciBzdXBwb3J0IGluIHRhcmdldCBDIGxpYnJhcnkuCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBfX3N0YWNrX2Noa19mYWlsIGluIHRhcmdldCBDIGxpYnJhcnkiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIF9fc3RhY2tfY2hrX2ZhaWwgaW4gdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQorQEAgLTI4OTU0LDYgKzI4OTcwLDExIEBAIGlmIHRlc3QgIiR7Z2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwK3NldH0KKyAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisgZWxzZQorICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vCisrICBpZiB0ZXN0ICJ4JGVuYWJsZV9saWJzc3AiID0gInhubyI7IHRoZW4KKysgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllcworKyAgZWxpZiB0ZXN0ICJ4JGVuYWJsZV9saWJzc3AiID0gInh5ZXMiOyB0aGVuCisrICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubworKyAgZWxzZQorICAgICBjYXNlICIkdGFyZ2V0IiBpbgorICAgICAgICAqLSotbXVzbCopCisgCSAjIEFsbCB2ZXJzaW9ucyBvZiBtdXNsIHByb3ZpZGUgc3RhY2sgcHJvdGVjdG9yCitAQCAtMjkwMDEsOCArMjkwMjIsOSBAQCBlbHNlCisgZmkKKyAKKyAgICAgICAgIDs7CistICAqKSBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8gOzsKKysgICAgICAgKikgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vIDs7CisgICAgIGVzYWMKKysgIGZpCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcCIgPiY1CisgJGFzX2VjaG8gIiRnY2NfY3ZfbGliY19wcm92aWRlc19zc3AiID4mNjsgfQorQEAgLTI5MDM3LDE4ICsyOTA1OSwxNSBAQCBmaQorIAorIAorICMgVGVzdCBmb3IgPHN5cy9zZHQuaD4gb24gdGhlIHRhcmdldC4KKy0KKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5Li4uICIgPiY2OyB9CistaGF2ZV9zeXNfc2R0X2g9bm8KKysjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorKyNoYXZlX3N5c19zZHRfaD1ubworICNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKyAjICBoYXZlX3N5c19zZHRfaD15ZXMKKy0jCistIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorLSMKKysjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCisrIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCisgI2ZpCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1CistJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9CisrI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorIAorICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgorICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjZhNzc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIuaW5jCkBAIC0wLDAgKzEsMTI3IEBACityZXF1aXJlIGdjYy1jb21tb24uaW5jCisKKyMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQorCitQViA9ICI4LjIuMCIKKworIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKKworQklOViA9ICI4LjIuMCIKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTguMjoke0ZJTEVfRElSTkFNRX0vZ2NjLTguMi9iYWNrcG9ydDoiCisKK0RFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgorTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAorIgorCisjUkVMRUFTRSA9ICI4LjAuMS1SQy0yMDE4MDQyNyIKK0JBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgorI1NSQ1JFViA9ICJmN2NmNzk4YjczZmQxYTA3MDk4ZjlhNDkwZGVlYzFlMmEzNmUwYmVkIgorI0JBU0VVUkkgPz0gImdpdDovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2M7YnJhbmNoPWdjYy02LWJyYW5jaDtwcm90b2NvbD1naXQiCisjQkFTRVVSSSA/PSAiaHR0cDovL21pcnJvcnMuY29uY2VydHBhc3MuY29tL2djYy9zbmFwc2hvdHMvJHtSRUxFQVNFfS9nY2MtJHtSRUxFQVNFfS50YXIueHoiCisKK1NSQ19VUkkgPSAiXAorICAgICAgICAgICAke0JBU0VVUkl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1EaXNhYmxlLXNkdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1leHBvcnQtQ1BQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzUtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM4LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDAtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDEtQVJDLWZpeC1zcGVjLWdlbi5wYXRjaCBcCisgICAgICAgICAgICR7QkFDS1BPUlRTfSBcCisiCitCQUNLUE9SVFMgPSAiXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjRhYjI4MmY0MTQ2NzY0OTY0ODNiM2UxNzkzZDA3ODYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5NmMzYzA0YmEyNjEzZjg5MzI4Mzk3N2U2MDExYjIzNDVkMWNkMWFmOWFiZWFjNThlOTE2YjFhYWIzZTAwODAiCisKK1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCisjUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2dpdCIKKyNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UkVMRUFTRX0iCitCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCisKKyMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCitGT1JUUkFOID0gIiIKK0pBVkEgPSAiIgorCitMVE8gPSAiLS1lbmFibGUtbHRvIgorU1NQID89ICItLWRpc2FibGUtbGlic3NwIgorU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgorCitFWFRSQV9PRUNPTkZfQkFTRSA9ICJcCisgICAgJHtMVE99IFwKKyAgICAke1NTUH0gXAorICAgIC0tZW5hYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKKyAgICAtLXdpdGgtcHBsPW5vIFwKKyAgICAtLXdpdGgtY2xvb2c9bm8gXAorICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAorICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyIKKworRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLWRpc2FibGUtbGliZ29tcCBcCisgICAgLS1kaXNhYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0tZGlzYWJsZS1sdG8gXAorICAgIC0tZGlzYWJsZS1wbHVnaW4gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS1lbmFibGUtZGVjaW1hbC1mbG9hdD1ubyBcCisgICAgLS13aXRob3V0LWlzbCBcCisgICAgLS1kaXNhYmxlLWxpYnNzcCBcCisiCisKK0VYVFJBX09FQ09ORl9QQVRIUyA9ICJcCisgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCisgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCisgICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjNmZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYjc1MmZiMmI2ZDZmNmRhNjhkYTUzODZiOTZhYmYwZDc0Y2Q0YmJlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMzldIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA2OWM5OWU5OWNjYS4uNTE3ZmI3MDE5MmUgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTc1MTEsNyArNzUxMSw3IEBAIGZpCisgIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgorIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCisgCistRkxBR1NfRk9SX1RBUkdFVD0KKytGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgorIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgorICAqIiBuZXdsaWIgIiopCisgICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGExZWRjMzY5YTI3Li5mOGMyNTRmMWZhYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzEwMCw3ICszMTAwLDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwMy1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDMtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUxMzg5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDMtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTAsMCArMSwxOTQgQEAKK0Zyb20gNDhjNjcwZDI2NzhlMDMyM2Q4OGViNzIyMDVlMDM5ZjM5M2NhYmUwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjU5OjAwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMzldIGdjYzogcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbjogY29kZXNvdXJjZXJ5XQorLS0tCisgZ2NjL2NvbW1vbi5vcHQgICAgICB8ICA0ICsrKysKKyBnY2MvY29uZmlnLmluICAgICAgIHwgIDYgKysrKysrCisgZ2NjL2NvbmZpZ3VyZSAgICAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyBnY2MvY29uZmlndXJlLmFjICAgIHwgMTAgKysrKysrKysrKworIGdjYy9kb2MvaW52b2tlLnRleGkgfCAgOSArKysrKysrKysKKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDIgKysKKyBnY2MvaW5jcGF0aC5jICAgICAgIHwgMTkgKysrKysrKysrKysrKysrKysrKworIDcgZmlsZXMgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi5vcHQgYi9nY2MvY29tbW9uLm9wdAoraW5kZXggZDZlZjg1OTI4ZjMuLjdiMjllZmUzODgyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbW1vbi5vcHQKKysrKyBiL2djYy9jb21tb24ub3B0CitAQCAtNjc5LDYgKzY3OSwxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKKyBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZworIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCisgCisrV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCisrV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZworKworIFdzaGFkb3cKKyBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCisgV2FybiB3aGVuIG9uZSB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIuICBTYW1lIGFzIC1Xc2hhZG93PWdsb2JhbC4KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgoraW5kZXggNWJjY2I0MDgwMTYuLjFjNzg0YTgyNzZiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy5pbgorKysrIGIvZ2NjL2NvbmZpZy5pbgorQEAgLTE5NCw2ICsxOTQsMTIgQEAKKyAjZW5kaWYKKyAKKyAKKysvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCisrI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKKysjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysjZW5kaWYKKysKKysKKyAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCisgICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgorICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCA1YzM0NWNlMGZkNy4uY2FmZDA1ZmQxNTAgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtOTUzLDYgKzk1Myw3IEBAIHdpdGhfc3lzdGVtX3psaWIKKyBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCisgZW5hYmxlX2xpbmtfbXV0ZXgKKyBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKKytlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcworIGVuYWJsZV9wbHVnaW4KKyBlbmFibGVfaG9zdF9zaGFyZWQKKyBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAorQEAgLTE2OTYsNiArMTY5Nyw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQorKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCisgICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKKyAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCisgICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAorQEAgLTI5NzE1LDYgKzI5NzE4LDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzK3NldH0iID0gc2V0OyB0aGVuIDoKKyBmaQorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrZWxzZQorKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KKytmaQorKworK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysKKyskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIAorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA2NWRiZjFmMmY4MC4uZGQ1YjM4MTk1Y2UgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNjM0MSw2ICs2MzQxLDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCisgICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCisgCisrQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKKysgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKKysgICAgICAgICAgIFsxXSwKKysgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKKytmaQorKworICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIEFDX1NVQlNUKHN1YmRpcnMpCisgQUNfU1VCU1Qoc3JjZGlyKQorZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitpbmRleCAyNTUxNDlmY2ZiOC4uY2I3MWI2MGZlM2MgMTAwNjQ0CistLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitAQCAtMzAzLDYgKzMwMyw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KKyAtV3BhY2tlZCAgLVdwYWNrZWQtYml0ZmllbGQtY29tcGF0IC1XcGFja2VkLW5vdC1hbGlnbmVkIC1XcGFkZGVkIEBnb2wKKyAtV3BhcmVudGhlc2VzICAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCisgLVdwbGFjZW1lbnQtbmV3ICAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCisrLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKKyAtV3BvaW50ZXItYXJpdGggIC1XcG9pbnRlci1jb21wYXJlICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAorIC1Xbm8tcHJhZ21hcyAgLVdyZWR1bmRhbnQtZGVjbHMgIC1XcmVzdHJpY3QgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAorIC1XcmV0dXJuLXR5cGUgIC1Xc2VxdWVuY2UtcG9pbnQgIC1Xc2hhZG93ICAtV25vLXNoYWRvdy1pdmFyIEBnb2wKK0BAIC01NzEyLDYgKzU3MTMsMTQgQEAgbWFkZSB1cCBvZiBkYXRhIG9ubHkgYW5kIHRodXMgcmVxdWlyZXMgbm8gc3BlY2lhbCB0cmVhdG1lbnQuICBCdXQsIGZvcgorIG1vc3QgdGFyZ2V0cywgaXQgaXMgbWFkZSB1cCBvZiBjb2RlIGFuZCB0aHVzIHJlcXVpcmVzIHRoZSBzdGFjayB0byBiZQorIG1hZGUgZXhlY3V0YWJsZSBpbiBvcmRlciBmb3IgdGhlIHByb2dyYW0gdG8gd29yayBwcm9wZXJseS4KKyAKKytAaXRlbSAtV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAb3BpbmRleCBXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1JfSBvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbQorK2RpcmVjdG9yaWVzIHN1Y2ggYXMgQGZpbGV7L3Vzci9pbmNsdWRlfSB3aGVuIGNyb3NzIGNvbXBpbGluZy4gIFRoaXMKKytvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaAorK2RpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QgaGVhZGVycyBhbmQgbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0Cisrc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgorKworIEBpdGVtIC1XZmxvYXQtZXF1YWwKKyBAb3BpbmRleCBXZmxvYXQtZXF1YWwKKyBAb3BpbmRleCBXbm8tZmxvYXQtZXF1YWwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGE3MTZmNzA4MjU5Li4wMmIzY2QzOWZjMiAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTAzNyw2ICsxMDM3LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAorICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKKyAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSBcCisrICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisrICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisgICAgICV7c3RhdGljfG5vLXBpZXxzdGF0aWMtcGllOn0gJXtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAorICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiBDSEtQX1NQRUMgIiBcCisgICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAorZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCitpbmRleCBiMTFjNmE1NzkzOS4uZTNiN2EyMTk2NmYgMTAwNjQ0CistLS0gYS9nY2MvaW5jcGF0aC5jCisrKysgYi9nY2MvaW5jcGF0aC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJpbnRsLmgiCisgI2luY2x1ZGUgImluY3BhdGguaCIKKyAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgorKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKKyAKKyAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KKyAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCitAQCAtMzkzLDYgKzM5NCwyNiBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQorIAl9CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7CisgICAgIH0KKysKKysjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCisrICAgIHsKKysgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7CisrCisrICAgICAgIGZvciAocCA9IGhlYWRzW0lOQ19RVU9URV07IHA7IHAgPSBwLT5uZXh0KQorKyAgICAgICAgIHsKKysgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKKysgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCisrICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCisrICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7CisrICAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA1LWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwNS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjFiOTc2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwNS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIGFlM2ZlNmU1ZTUwOTM3ZGU2ZTQyMjNjYTkwODEwMTg3MzcyYThjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowODozMSArMDQwMAorU3ViamVjdDogW1BBVENIIDA1LzM5XSBnY2MtNC4zLjM6IFNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQKKworQmVmb3JlIGNvbW1pdHRpbmcsIEkgbm90aWNlZCB0aGF0IFBSLzMyMTYxIHdhcyBtYXJrZWQgYXMgYSBkdXAgb2YgUFIvMzIwMDksIGJ1dCBteSBwcmV2aW91cyBwYXRjaCBkaWQgbm90IGZpeCBpdC4KKworVGhpcyBhbHRlcm5hdGl2ZSBwYXRjaCBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBsZXRzIHlvdSBqdXN0IHVzZSBDRkxBR1NfRk9SX1RBUkdFVCB0byBzZXQgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIGZvciBsaWJnY2MuIFNpbmNlIGJvb3RzdHJhcHBlZCB0YXJnZXQgbGlicmFyaWVzIGFyZSBuZXZlciBjb21waWxlZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgZGlmZmVyZW50IGZsYWdzIGZvciBzdGFnZTEgYW5kIGxhdGVyIHN0YWdlcy4gQW5kIGl0IGFsc28gbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZSB0aGFuIENGTEFHU19GT1JfVEFSR0VULgorCitPdGhlciBjaGFuZ2VzIEkgaGFkIHRvIGRvIGluY2x1ZGU6CisKKy0gbW92aW5nIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IENGTEFHU19GT1JfVEFSR0VUIGZyb20gTWFrZWZpbGUuYW0gdG8gY29uZmlndXJlLmFjLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgQk9PVF9DRkxBR1MgYXJlIHN1YnN0aXR1dGVkIGludG8gQ0ZMQUdTX0ZPUl9UQVJHRVQgKHdoaWNoIGlzICItTzIgLWcgJChDRkxBR1MpIikgdmlhICQoQ0ZMQUdTKS4gSXQgaXMgYWxzbyBjbGVhbmVyIHRoaXMgd2F5IHRob3VnaC4KKworLSBwYXNzaW5nIHRoZSByaWdodCBDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgYXMgZXhwb3J0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisKK0kgYWxzbyBzdG9wcGVkIHBhc3NpbmcgTElCQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIHNpbmNlIHRoZXkgYXJlIHVudXNlZCBpbiB0aGUgd2hvbGUgc3JjIHRyZWUuIEFuZCBJIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYXMgSC1QIHJlbWluZGVkIG1lIHRvIGRvLgorCitCb290c3RyYXBwZWQvcmVndGVzdGVkIGk2ODYtcGMtbGludXgtZ251LCB3aWxsIGNvbW1pdCB0byA0LjQgc2hvcnRseS4gT2sgZm9yIDQuMz8KKworU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA1MTdmYjcwMTkyZS4uYWNkMmI5N2RmNDAgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTY3NzIsNiArNjc3MiwzOCBAQCBmaQorIAorIAorIAorKyMgRHVyaW5nIGdjYyBib290c3RyYXAsIGlmIHdlIHVzZSBzb21lIHJhbmRvbSBjYyBmb3Igc3RhZ2UxIHRoZW4gQ0ZMQUdTCisrIyBtaWdodCBiZSBlbXB0eSBvciAiLWciLiAgV2UgZG9uJ3QgcmVxdWlyZSBhIEMrKyBjb21waWxlciwgc28gQ1hYRkxBR1MKKysjIG1pZ2h0IGFsc28gYmUgZW1wdHkgKG9yICItZyIsIGlmIGEgbm9uLUdDQyBDKysgY29tcGlsZXIgaXMgaW4gdGhlIHBhdGgpLgorKyMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBUQVJHRVQgbGlicmFyaWVzICh3aGljaCB3ZSBrbm93IGFyZSBidWlsdCB3aXRoCisrIyBnY2MpIGFyZSBidWlsdCB3aXRoICItTzIgLWciLCBzbyBpbmNsdWRlIHRob3NlIG9wdGlvbnMgd2hlbiBzZXR0aW5nCisrIyBDRkxBR1NfRk9SX1RBUkdFVCBhbmQgQ1hYRkxBR1NfRk9SX1RBUkdFVC4KKytpZiB0ZXN0ICJ4JENGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENGTEFHU19GT1JfVEFSR0VUPSRDRkxBR1MKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDRkxBR1MiIDs7CisrICBlc2FjCisrICBjYXNlICIgJENGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENGTEFHUyIgOzsKKysgIGVzYWMKKytmaQorKworKworK2lmIHRlc3QgIngkQ1hYRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCisrICBDWFhGTEFHU19GT1JfVEFSR0VUPSRDWFhGTEFHUworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1PMiAiKikgOzsKKysgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDWFhGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgorKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKKysgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENYWEZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisgIyBIYW5kbGUgLS13aXRoLWhlYWRlcnM9WFhYLiAgSWYgdGhlIHZhbHVlIGlzIG5vdCAieWVzIiwgdGhlIGNvbnRlbnRzIG9mCisgIyB0aGUgbmFtZWQgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gJCh0b29sZGlyKS9zeXMtaW5jbHVkZS4KKyBpZiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4ICYmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHhubyA7IHRoZW4KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDYtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA2LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkY2U5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA2LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gODlhZjNiNzM5OTMxM2IzMzdmMDZjMTljYzJkNzg3YWExNmQyNzcxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMzldIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgorCitHQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQorbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cworY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KKworVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKK2FuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAorZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Citrbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCitwZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgorCitUaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAordGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCithbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQorZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbworYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCisKK1JQIDE1LzgvMTEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgfCAgNiArKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgfCAxMCArKystLS0tLS0tCisgZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IHwgIDUgKystLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAoraW5kZXggOGVhMGZhZmYzNjkuLjI2NmM2MDA4MDA0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAorQEAgLTMyLDcgKzMyLDUgQEAKKyAjCisgY29tbWE9LAorIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQorLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAoraW5kZXggYzAxN2I3ZDA0YzUuLjEyNjg5MmNmNDBiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorQEAgLTE3LDEwICsxNyw2IEBACisgIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAorLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0CistTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCistTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKKy0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKKy0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQorK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKysKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK2luZGV4IDBmYWEyYTAyZGY0Li4xM2ZkOGNhOTcxZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CitAQCAtMjYsMTAgKzI2LDkgQEAKKyAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KKyAKKyBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKKy1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCisrTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KKyBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAorLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKKytNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCisgCisgcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCisgCSQoQ09NUElMRSkgJDwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDctb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDctb3B0aW9uYWwtbGlic3RkYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjFlYTAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwNy1vcHRpb25hbC1saWJzdGRjLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGZiN2RmNjNlOTU0OGMyOWI3MDYwMWQ2NDJhMTg1MGZjNDU1Zjg1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAorU3ViamVjdDogW1BBVENIIDA3LzM5XSBvcHRpb25hbCBsaWJzdGRjCisKK2djYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKword2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKword2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKworb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKK2RyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgorCitBICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCitkbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgorCitSUCAyOS82LzEwCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKworIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCisgZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAoraW5kZXggNTAxMzUwMWIyMzIuLjYzMTJmMmM4ZjkwIDEwMDY0NAorLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0CisrKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK0BAIC0xOTAwLDYgKzE5MDAsMTAgQEAgbm9zdGRpbmMrKworIEMrKyBPYmpDKysKKyBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysuCisgCisrbm9zdGRsaWIrKworK0RyaXZlcgorK0RvIG5vdCBsaW5rIHN0YW5kYXJkIEMrKyBydW50aW1lIGxpYnJhcnkKKysKKyBvCisgQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFNlcGFyYXRlCisgOyBEb2N1bWVudGVkIGluIGNvbW1vbi5vcHQKK2RpZmYgLS1naXQgYS9nY2MvY3AvZysrc3BlYy5jIGIvZ2NjL2NwL2crK3NwZWMuYworaW5kZXggNDQzYTE3NDZkYTMuLmU5YjUxYmU2MmVmIDEwMDY0NAorLS0tIGEvZ2NjL2NwL2crK3NwZWMuYworKysrIGIvZ2NjL2NwL2crK3NwZWMuYworQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAorICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKKyAJeworIAljYXNlIE9QVF9ub3N0ZGxpYjoKKysJY2FzZSBPUFRfbm9zdGRsaWJfXzoKKyAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKKyAJICBsaWJyYXJ5ID0gLTE7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKK2luZGV4IGNiNzFiNjBmZTNjLi5iMGQ0ODFlM2EzMCAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0yMTEsNiArMjExLDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KKyAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKKyAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAorIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAorKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKKystZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAorKy1ub3N0ZGxpYisrIEBnb2wKKyAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKKyAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKKyAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yICAtV2xpdGVyYWwtc3VmZml4ICAtV211bHRpcGxlLWluaGVyaXRhbmNlIEBnb2wKK0BAIC01MDksNyArNTEyLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgorIC1zICAtc3RhdGljIC1zdGF0aWMtcGllIC1zdGF0aWMtbGliZ2NjICAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCisgLXN0YXRpYy1saWJhc2FuICAtc3RhdGljLWxpYnRzYW4gIC1zdGF0aWMtbGlibHNhbiAgLXN0YXRpYy1saWJ1YnNhbiBAZ29sCisgLXN0YXRpYy1saWJtcHggIC1zdGF0aWMtbGlibXB4d3JhcHBlcnMgQGdvbAorLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAorKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAorIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKKyAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19CisgCitAQCAtMTIzMzEsNiArMTIzMzQsMzMgQEAgbGlicmFyeSBzdWJyb3V0aW5lcy4KKyBjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKKyBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKKyAKKytAaXRlbSAtbm9zdGRsaWIrKworK0BvcGluZGV4IG5vc3RkbGliKysKKytEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KKytPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KKysKKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAorK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCisrd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKKytuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCisrKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCisrQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAorK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKKytJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCisrb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Cisrb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KKytUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCisrbGlicmFyeSBzdWJyb3V0aW5lcy4KKysoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCisrY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCisrR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCisrCisgQGl0ZW0gLXBpZQorIEBvcGluZGV4IHBpZQorIFByb2R1Y2UgYSBkeW5hbWljYWxseSBsaW5rZWQgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSBvbiB0YXJnZXRzCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCAwMmIzY2QzOWZjMi4uOGNkMjdhNWRhZDUgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEwNDcsNiArMTA0Nyw3IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAgICAgJShtZmxpYikgIiBTVEFDS19TUExJVF9TUEVDICJcCisgICAgICV7ZnByb2ZpbGUtYXJjc3xmcHJvZmlsZS1nZW5lcmF0ZSp8Y292ZXJhZ2U6LWxnY292fSAiIFNBTklUSVpFUl9TUEVDICIgXAorICAgICAleyFub3N0ZGxpYjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fVwKKysgICAgJXshbm9zdGRsaWIrKzp9XAorICAgICAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JUV9fSAle1QqfSAgXG4lKHBvc3RfbGluaykgfX19fX19IgorICNlbmRpZgorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwOC1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA4LWdjYy1kaXNhYmxlLU1BU0tfUkVMQVhfUElDX0NBTExTLWJpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzZiN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwOC1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSAxMWViOTdlZmNjYjkwYjgzMGM4NGVkMDc3YTI1YjFhMTVhZDMzMzViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTQ6MjAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8zOV0gZ2NjOiBkaXNhYmxlIE1BU0tfUkVMQVhfUElDX0NBTExTIGJpdAorCitUaGUgbmV3IGZlYXR1cmUgYWRkZWQgYWZ0ZXIgNC4zLjMKKyJodHRwOi8vd3d3LnB1YmJzLm5ldC8yMDA5MDkvZ2NjLzk0MDQ4LXBhdGNoLWFkZC1zdXBwb3J0LWZvci1ybWlwc2phbHIuaHRtbCIKK3dpbGwgY2F1c2UgY2MxcGx1cyBlYXQgdXAgYWxsIHRoZSBzeXN0ZW0gbWVtb3J5IHdoZW4gYnVpbGQgd2Via2l0LWd0ay4KK1RoZSBmdW5jdGlvbiBtaXBzX2dldF9waWNfY2FsbF9zeW1ib2wga2VlcHMgb24gcmVjdXJzaXZlbHkgY2FsbGluZyBpdHNlbGYuCitEaXNhYmxlIHRoaXMgZmVhdHVyZSB0byB3YWxrIGFzaWRlIHRoZSBidWcuCisKK1NpZ25lZC1vZmYtYnk6IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgNyAtLS0tLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDcgLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggY2FmZDA1ZmQxNTAuLjE5YmEwNTFkNjczIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI3NTUzLDEzICsyNzU1Myw2IEBAICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIGZvciBleHBsaWNpdCBKQUxSIHJlbG9jYXRpb24uLi4gIiA+JjY7CisgICAgICAgICBybSAtZiBjb25mdGVzdC4qCisgICAgICAgZmkKKyAgICAgZmkKKy0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KKy0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCistICAgICAgZWxzZQorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCistICAgICAgZmkKKy0gICAgZmkKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY1CisgJGFzX2VjaG8gIiRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IGRkNWIzODE5NWNlLi4wNjZkZmUxOWJiNiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC00Nzk4LDEzICs0Nzk4LDYgQEAgeDoKKyAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgICBmaQorICAgICBmaQorLSAgICBpZiB0ZXN0ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyA9IHllczsgdGhlbgorLSAgICAgIGlmIHRlc3QgeCR0YXJnZXRfY3B1X2RlZmF1bHQgPSB4OyB0aGVuCistICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19SRUxBWF9QSUNfQ0FMTFMKKy0gICAgICBlbHNlCistICAgICAgICB0YXJnZXRfY3B1X2RlZmF1bHQ9IigkdGFyZ2V0X2NwdV9kZWZhdWx0KXxNQVNLX1JFTEFYX1BJQ19DQUxMUyIKKy0gICAgICBmaQorLSAgICBmaQorICAgICBBQ19NU0dfUkVTVUxUKCRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYykKKyAKKyAgICAgQUNfQ0FDSEVfQ0hFQ0soW2xpbmtlciBmb3IgLmVoX2ZyYW1lIHBlcnNvbmFsaXR5IHJlbGF4YXRpb25dLAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwOS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwOS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmVjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA5LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBlMTlkMjU4NDdmMDhlZWI1ZWYyNmEwMzFmYTVlZmY3MzJiZmQwZDQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTY6MjggKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8zOV0gQ09MTEVDVF9HQ0NfT1BUSU9OUworCitUaGlzIHBhdGNoIGFkZHMgLS1zeXNyb290IGludG8gQ09MTEVDVF9HQ0NfT1BUSU9OUyB3aGljaCBpcyB1c2VkIHRvCitpbnZva2UgY29sbGVjdDIuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2djYy5jIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDhjZDI3YTVkYWQ1Li5kMzU1ZDY1NTgzYSAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtNDY3Nyw2ICs0Njc3LDE1IEBAIHNldF9jb2xsZWN0X2djY19vcHRpb25zICh2b2lkKQorIAkJc2l6ZW9mICgiQ09MTEVDVF9HQ0NfT1BUSU9OUz0iKSAtIDEpOworIAorICAgZmlyc3RfdGltZSA9IFRSVUU7CisrI2lmZGVmIEhBVkVfTERfU1lTUk9PVAorKyAgaWYgKHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkICYmIHRhcmdldF9zeXN0ZW1fcm9vdCkKKysgICAgeworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIictLXN5c3Jvb3Q9Iiwgc2l6ZW9mKCInLS1zeXNyb290PSIpLTEpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgdGFyZ2V0X3N5c3RlbV9yb290LHN0cmxlbih0YXJnZXRfc3lzdGVtX3Jvb3QpKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInIiwgMSk7CisrICAgICAgZmlyc3RfdGltZSA9IEZBTFNFOworKyAgICB9CisrI2VuZGlmCisgICBmb3IgKGkgPSAwOyAoaW50KSBpIDwgbl9zd2l0Y2hlczsgaSsrKQorICAgICB7CisgICAgICAgY29uc3QgY2hhciAqY29uc3QgKmFyZ3M7CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDEwLVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMC1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg1YjU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMC1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApAQCAtMCwwICsxLDk2IEBACitGcm9tIDI2NWNiODgzYzMxMGYzYmI3ZTQ5ZmQxM2I4MTM2MjQ3NmZiZWI2YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNzoyNSArMDQwMAorU3ViamVjdDogW1BBVENIIDEwLzM5XSBVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluCisgJHtCfQorCitVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluICR7Qn0sIHNvIHRoYXQKK3RoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAorZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1doaWxlIGNvbXBpbGluZyBnY2MtY3Jvc3NzZGstaW5pdGlhbC14ODZfNjQgb24gc29tZSBob3N0LCB0aGVyZSBpcworb2NjYXNpb25hbGx5IGZhaWx1cmUgdGhhdCB0ZXN0IHRoZSBleGlzdGFuY2Ugb2YgZGVmYXVsdC5oIGRvZXNuJ3QKK3dvcmssIHRoZSByZWFzb24gaXMgdG1faW5jbHVkZV9saXN0PScqKiBkZWZhdWx0cy5oJyByYXRoZXIgdGhhbgordG1faW5jbHVkZV9saXN0PScqKiAuL2RlZmF1bHRzLmgnCisKK1NvIHdlIGFkZCB0aGUgdGVzdCBjb25kaXRpb24gZm9yIHRoaXMgc2l0dWF0aW9uLgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KKyBnY2MvY29uZmlndXJlICAgIHwgNCArKy0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKystLQorIGdjYy9ta2NvbmZpZy5zaCAgfCA0ICsrLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggMjBiZWUwNDk0YjEuLjEzNjcxMzZiZmFjIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC01MzgsNyArNTM4LDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKKyBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACisgCisgeG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKKy10bWFrZV9maWxlPUB0bWFrZV9maWxlQAorK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQorIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACisgVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACisgVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCAxOWJhMDUxZDY3My4uYTU3NTgzOWMxYjIgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTIxNTgsOCArMTIxNTgsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisgICAgICAgIDs7CisgICAgIGRlZmF1bHRzLmggKQorLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgorLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKKyAgICAgICAgOzsKKyAgICAgKiApCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCAwNjZkZmUxOWJiNi4uNjc2MTE2YTZkOTYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTkyMiw4ICsxOTIyLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorICAgICAgICA7OworICAgICBkZWZhdWx0cy5oICkKKy0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKKy0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCisgICAgICAgIDs7CisgICAgICogKQorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKK2RpZmYgLS1naXQgYS9nY2MvbWtjb25maWcuc2ggYi9nY2MvbWtjb25maWcuc2gKK2luZGV4IDBmNzVjODYzYzBiLi42OGQ4ZDY2MTNjZiAxMDA2NDQKKy0tLSBhL2djYy9ta2NvbmZpZy5zaAorKysrIGIvZ2NjL21rY29uZmlnLnNoCitAQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgorICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KKyAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAorIAlmb3IgZmlsZSBpbiAiJEAiOyBkbworLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KKysJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCisgCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCisgCSAgICBlbHNlCisgCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCitAQCAtMTA2LDcgKzEwNiw3IEBAIGVzYWMKKyAKKyAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCisgaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgorLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKKysgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKKyBmaQorIAorICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTEtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDExLWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMGZiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDExLWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNzFjYmExODhkNDdiNmFlOWQ5Yjg3MjYxZWI0YmM5ZWI2OGFlMzU1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMzldIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgorCisqIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAordXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcworZGlyZWN0b3J5LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQoraW5kZXggOTFmY2U4ZmVjZDAuLjY3NDdmODZlYjk4IDEwMDc1NQorLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCisrKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK0BAIC0xMjg4Myw3ICsxMjg4Myw3IEBAIGVzYWMKKyAKKyAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQorICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQorLUZDPSIkR0ZPUlRSQU4iCisrI0ZDPSIkR0ZPUlRSQU4iCisgYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9CisgYWNfY29tcGlsZT0nJEZDIC1jICRGQ0ZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ID4mNScKKyBhY19saW5rPSckRkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRGQ0ZMQUdTICRMREZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKK2luZGV4IGJmNmQzNjM0ZGRhLi45ZGJlNDNjYzYxNiAxMDA2NDQKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitAQCAtMjUwLDcgKzI1MCw3IEBAIEFDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIEFDX1BST0dfRkMoZ2ZvcnRyYW4pCisgCisgIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIHRhcmdldHMKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTItY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDEyLWNwcC1ob25vci1zeXNyb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MWY5NmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDEyLWNwcC1ob25vci1zeXNyb290LnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gYjNlOGU3ZThhZTEwNmUzMjA3ZTllZGMzZDIzZGNjZTE0NjRiNzU1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIyOjAwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMzldIGNwcDogaG9ub3Igc3lzcm9vdC4KKworQ3VycmVudGx5LCBpZiB0aGUgZ2NjIHRvb2xjaGFpbiBpcyByZWxvY2F0ZWQgYW5kIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSwgdGhlbiB5b3UgdHJ5IGFuZCBjb21waWxlCitwcmVwcm9jZXNzZWQgc291cmNlICguaSBvciAuaWkgZmlsZXMpLCB0aGUgY29tcGlsZXIgd2lsbCB0cnkgYW5kIGFjY2VzcyB0aGUgYnVpbHRpbiBzeXNyb290IGxvY2F0aW9uCityYXRoZXIgdGhhbiB0aGUgLS1zeXNyb290IG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLiBJZiBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkgaXMKK3Blcm1pc3Npb24gZGVuaWVkICh1bnJlYWRhYmxlKSwgZ2NjIHdpbGwgZXJyb3IuCisKK1RoaXMgaGFwcGVucyB3aGVuIGNjYWNoZSBpcyBpbiB1c2UgZHVlIHRvIHRoZSBmYWN0IGl0IHVzZXMgcHJlcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4KKworVGhlIGZpeCBiZWxvdyBhZGRzICVJIHRvIHRoZSBjcHAtb3V0cHV0IHNwZWMgbWFjcm8gc28gdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBmb3IgLWlwcmVmaXgsCistaXN5c3RlbSwgLWlzeXNyb290IGhhcHBlbiBhbmQgdGhlIGNvcnJlY3Qgc3lzcm9vdCBpcyB1c2VkLgorCitbWU9DVE8gIzIwNzRdCisKK1JQIDIwMTIvMDQvMTMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY3AvbGFuZy1zcGVjcy5oIHwgMiArLQorIGdjYy9nY2MuYyAgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY3AvbGFuZy1zcGVjcy5oIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAoraW5kZXggZjA4MDJiODkxNWMuLmYzMjRkMjk5ODQ5IDEwMDY0NAorLS0tIGEvZ2NjL2NwL2xhbmctc3BlY3MuaAorKysrIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAorQEAgLTY0LDUgKzY0LDUgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIHsiLmlpIiwgIkBjKystY3BwLW91dHB1dCIsIDAsIDAsIDB9LAorICAgeyJAYysrLWNwcC1vdXRwdXQiLAorICAgICIleyFNOiV7IU1NOiV7IUU6XAorLSAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICUyXAorKyAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyXAorICAgICAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggZDM1NWQ2NTU4M2EuLjU3MGNkYzAwMDM0IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMzQzLDcgKzEzNDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBpbGVyIGRlZmF1bHRfY29tcGlsZXJzW10gPQorIAkJCQkJICAgJVd7byo6LS1vdXRwdXQtcGNoPSUqfX0lVn19fX19fX0iLCAwLCAwLCAwfSwKKyAgIHsiLmkiLCAiQGNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKKyAgIHsiQGNwcC1vdXRwdXQiLAorLSAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisrICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKKyAgIHsiLnMiLCAiQGFzc2VtYmxlciIsIDAsIDAsIDB9LAorICAgeyJAYXNzZW1ibGVyIiwKKyAgICAiJXshTToleyFNTToleyFFOiV7IVM6YXMgJShhc21fZGVidWcpICUoYXNtX29wdGlvbnMpICVpICVBIH19fX0iLCAwLCAwLCAwfSwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTMtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTMtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWY4ODA2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMy1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gMGYzNjI5OTc4Y2Q3Yzk4NjE0ZTg3ZDRmZDE5MGI4OTg2NDIyMTYzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvMzldIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCisKK01JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0CitzbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCistLS0KKyBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYworaW5kZXggODc0MWRkMWUzYjIuLjJmZmNiMzlkODVmIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy5nY2MKKysrKyBiL2djYy9jb25maWcuZ2NjCitAQCAtMjEzNywyOSArMjEzNywyOSBAQCBtaXBzKi0qLWxpbnV4KikJCQkJIyBMaW51eCBNSVBTLCBlaXRoZXIgZW5kaWFuLgorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHMzMgorIAkJCTs7CisgCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCisgCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3Qtc3QiCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHM2NG9jdGVvbiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0NQVV9TVFJJTkdfREVGQVVMVD1cXFwib2N0ZW9uXFxcIiIKKyAJCQl0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19TT0ZUX0ZMT0FUX0FCSQorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzaXNhNjRyNiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjYKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjIqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHIyCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHM2NCotKi1saW51eCogfCBtaXBzaXNhNjQqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCWVzYWMKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTQtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTQtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDNiYjlkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNC1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCkBAIC0wLDAgKzEsMjQ4IEBACitGcm9tIDUzZjFjMzgyYjEzNjZjNTYyMWM4ZWRlYWQ5Yzc2Njk1MGMyOTBmZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAorU3ViamVjdDogW1BBVENIIDE0LzM5XSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCisKK1RoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCityZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUiB3aGljaCBjYW4gYmUgc2V0IGluIGdlbmVyYXRlZCBoZWFkZXJzCitUaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiBvZiBoYXJkY29kZWQgbXVsdGlsaWIgaW4gZ2NjCitDaGFuZ2UgaXMgb25seSBmb3IgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGluIE9FIGluY2x1ZGluZworU0gsIHNwYXJjLCBhbHBoYSBmb3IgcG9zc2libGUgZnV0dXJlIHN1cHBvcnQgKGlmIGFueSkKKworUmVtb3ZlcyB0aGUgZG9faGVhZGVyZml4IHRhc2sgaW4gbWV0YWRhdGEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgIDQgKystLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oICAgfCAgMiArLQorIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgfCAgMiArLQorIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDE2ICsrKysrKy0tLS0tLS0tLS0KKyBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQorIDEyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKK2luZGV4IDM2Yjc0ZGMxOTkzLi4wMjM3MzU3OGFmOCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKK0BAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBFWFRSQV9TUEVDUyBcCisgeyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKyAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCisgI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCisgI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK2luZGV4IDg1ODVmZGUzZDQxLi5iM2FmNjhjYWM1NyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitAQCAtNjIsOCArNjIsOCBAQAorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCisgCisgI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKKyAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitpbmRleCBjZmNkOWNiMWE1Yy4uYTc5OGU5ODdlY2IgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKK0BAIC02MCw3ICs2MCw3IEBACisgCisgI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKKyAgICAle3N0YXRpYzotQnN0YXRpY30gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK2luZGV4IDY5Zjk3ZjE1YjBkLi43MWJjMzFkOTIzMSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAorQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCitpbmRleCBmMmQ5MTNlMzBhYy4uODcyNWYzM2Q4YTUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCitAQCAtMjcsOSArMjcsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAoraW5kZXggMmVhNGZmOTJjMWQuLjQ4N2IwYzA5MjNiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKK0BAIC04MSwxMCArODEsMTAgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHRhcmdldCB1c2luZyB0aGVtLCBvcgorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgYW5kIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgZm9yIHRhcmdldHMKKyAgICBzdXBwb3J0aW5nIGJvdGggMzItYml0IGFuZCA2NC1iaXQgY29tcGlsYXRpb24uICAqLworLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZHgzMi11Q2xpYmMuc28uMCIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUiAiL3N5c3RlbS9iaW4vbGlua2VyIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbGludXguaCBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitpbmRleCAyZGZkMGMxOGI5MC4uMTIwNTdjNTFiNWUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKK0BAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKKy0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKKy0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgCisgI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKKy0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCitpbmRleCBhYThhMjhkNWQuLmViZjk1NTFjOSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcmlzY3YvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCitAQCAtMjIsNyArMjIsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgorICAgICBHTlVfVVNFUl9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKCk7CQkJCVwKKyAgIH0gd2hpbGUgKDApCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgorIAorICNkZWZpbmUgTVVTTF9BQklfU1VGRklYIFwKKyAgICIle21hYmk9aWxwMzI6LXNmfSIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAoraW5kZXggOTBmZTY1NjYyNTUuLjU1Njk1ZGFkZDkxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK0BAIC00MjAsMTYgKzQyMCwxMSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICN1bmRlZglMSU5LX09TX0RFRkFVTFRfU1BFQworICNkZWZpbmUgTElOS19PU19ERUZBVUxUX1NQRUMgIiUobGlua19vc19saW51eCkiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIlKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliL2xkLnNvLjEiCistCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC5zby4xIgorICNpZmRlZiBMSU5VWDY0X0RFRkFVTFRfQUJJX0VMRnYyCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYxOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjE7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCisgI2Vsc2UKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMjsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjF9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCitAQCAtNDM3LDggKzQzMiw5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAorICAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisgCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysKKyAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCisgI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgXAorICAgIiV7bWdsaWJjOiIgRyAiOzole21tdXNsOiIgTSAiOzoiIFUgIn19IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAoraW5kZXggNmQyY2NkMDEyYmEuLmVjNzhhODljZTE1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK0BAIC02NCw3ICs2NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAiL2xpYi9sZC1tdXNsLXNoIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgTVVTTF9EWU5BTUlDX0xJTktFUl9GUCBcCisgICAiJXttZmRwaWM6LWZkcGljfS5zby4xIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAorICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIiV7bWZkcGljOl9mZDs6X2xpbnV4fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK2luZGV4IDlmYjAzYWYwZmU5Li40MDFmZGRiYmIyMiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitAQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOworICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmICBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK2luZGV4IGMxZmU0MjE2NWI3Li4yNmE3OWJmYTJlMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorQEAgLTg0LDggKzg0LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjaWZkZWYgU1BBUkNfQklfQVJDSAorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE1LWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmZmODQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAyZTc1YTE0Y2Q2MDIyN2UwMzY3OTAxODRmMGViNDAwYWJjM2M4NzBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNS8zOV0gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KKworVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCitidWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKKworaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAorCitUaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCitpdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAord291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCitUaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCiskKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDEzNjcxMzZiZmFjLi43MWE4Mjc1YzM5ZiAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtMzUzOCw3ICszNTM4LDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCisgIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKKyAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCisgCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCistCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKKysJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKKyAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAorIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKKyAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE2LURpc2FibGUtc2R0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNi1EaXNhYmxlLXNkdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTk3NTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNi1EaXNhYmxlLXNkdC5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSA0MjNkODdhYzQ3ZDIxZTM5OWQ3NTlkN2ZmM2I2MzhmMGM3MjFhN2RmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8zOV0gRGlzYWJsZSBzZHQuCisKK1dlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KK0l0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCitzZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKK2J1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgorCitSUCAyMDEyLzgvNworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitEaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KKyBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCBhNTc1ODM5YzFiMi4uODcyMzM4ZjI5YjYgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMjkyOTYsMTIgKzI5Mjk2LDEyIEBAIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQorIGhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0KKy0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMKKysjZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKKyAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggNjc2MTE2YTZkOTYuLjU1MDQ2ZTY4OTI2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU5NTcsMTUgKzU5NTcsMTUgQEAgZmkKKyBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKKyAKKyAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCistR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCistaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCistZmkKKy1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKysjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorKyNoYXZlX3N5c19zZHRfaD1ubworKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCisrIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCisrI2ZpCisrI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorIAorICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgorICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQoraW5kZXggYzlkYmFhMTM5ZDUuLmM2NGE3N2QxNTJiIDEwMDc1NQorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorQEAgLTIxNzg2LDExICsyMTc4NiwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKyBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisgCistICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCisgCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorIAorLSAgZmkKKysjICBmaQorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK2luZGV4IDBlZjk2MjcwYzljLi5hZmU1NWExYjIxNSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK0BAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCisgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCisgR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAorIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKKy1HTElCQ1hYX0NIRUNLX1NEVF9ICisrI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKKyAKKyAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KKyBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTctbGlidG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTctbGlidG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2FhMWNlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNy1saWJ0b29sLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYzhiMTFlOTZiMTE5MTBiMmQ0ZGY2YWU4MTA0NDY2ZTMzMDNkOTMzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTcvMzldIGxpYnRvb2wKKworbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAord2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgorCitUaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KK0FyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Citmb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgorCitmdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCit0byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KKworUlAgMjAxMi84LzI0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbHRtYWluLnNoIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA5NTAzZWM4NWQ3MC4uMDEyMWZiYTcwN2YgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgorIAorICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKKysgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCisrCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKKysJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrICAgICAgZmkKKyAKKyAgICAgICBvbGRsaWJzPQorICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTgtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTgtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDNjYzY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxOC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gN2RiYmE4NDRhNTliZGY2ZTdkNzI0ZjhiZmE3OTI3MjQ2Y2I3YWY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTgvMzldIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KKworVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKK21lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Cit0aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAorVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAorZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgorCitXZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK2luZGV4IGIzYWY2OGNhYzU3Li4zMzBiNmUxM2M1ZiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitAQCAtODgsMTAgKzg4LDE0IEBACisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKKyAgICIvbGliL2xkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgorIAorKy8qIEZvciBhcm12NCB3ZSBwYXNzIC0tZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSSAqLworKyN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQworKyNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCisrCisgLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KKyAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCisgI3VuZGVmICBMSU5LX1NQRUMKKy0jZGVmaW5lIExJTktfU1BFQyBFQUJJX0xJTktfU1BFQwkJCQkJXAorKyNkZWZpbmUgTElOS19TUEVDIFRBUkdFVF9GSVhfVjRCWF9TUEVDIEVBQklfTElOS19TUEVDCQkJXAorICAgTElOVVhfT1JfQU5EUk9JRF9MRCAoTElOVVhfVEFSR0VUX0xJTktfU1BFQywJCQkJXAorIAkJICAgICAgIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgIiAiIEFORFJPSURfTElOS19TUEVDKQorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxOS1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxOS1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NDkxODYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE5LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gMTE3MTQwYWNkM2MzODNmNjIwZmY3NTg5NDI3NjAwMWM3NDA1ZGNjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTkvMzldIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCisgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9CisKK1VzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggODcyMzM4ZjI5YjYuLmNmY2FkYzkzYTAxIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMTM4LDEwICsxMjEzOCwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTEyMTUyLDYgKzEyMTYyLDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDU1MDQ2ZTY4OTI2Li40NGI5MDQ3OGY1NSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTAyLDEwICsxOTAyLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTkxNiw2ICsxOTI2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIwLUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIwLUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTExZmU4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjAtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGE3MjY2MTExYTViYTJkMTQ2Yzk3OWU4NmZmODRmNmI4MDdjYTVmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAorU3ViamVjdDogW1BBVENIIDIwLzM5XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQorIGhvc3QgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDAxMjFmYmE3MDdmLi41MmJkYmRiNWY5YyAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNTYyOCw2ICs1NjI4LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCisrCSAgICAjIEluc3RlYWQgb2YgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoLAorKwkgICAgIyB1c2UgdGhlIHBhdGggdGhlIC5sYSBpcyBjb250YWluZWQgaW4uCisrCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBkaXI9IiRsaWJkaXIiCisgCSAgICBhYnNkaXI9IiRsaWJkaXIiCisgCSAgZmkKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjEtZXhwb3J0LUNQUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjEtZXhwb3J0LUNQUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTZiNDExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMS1leHBvcnQtQ1BQLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYzg1OTlmYzNiNTc4MWIzMTk3MDdjOWMwZjFiMGExZWY3Y2RkYjAyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjQwOjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMzldIGV4cG9ydCBDUFAKKworVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuCitidWlsZGluZyBnY2MtY3Jvc3MtY2FuYWRpYW4gZm9yIGEgbWluZ3cgdGFyZ2V0dGVkIHNkaywgdGhlIGZvbGxvd2luZyBjYW4gYmUgZm91bmQKK2luIGJ1aWxkLng4Nl82NC1wb2t5c2RrLW1pbmd3MzIuaTU4Ni1wb2t5LWxpbnV4L2J1aWxkLXg4Nl82NC1saW51eC9saWJpYmVydHkvY29uZmlnLmxvZzoKKworY29uZmlndXJlOjM2NDE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzCitjb25maWd1cmU6MzY2NjogZ2NjICAtYyAtaXN5c3RlbS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAgY29uZnRlc3QuYyA+JjUKK2NvbmZpZ3VyZTozNjY2OiAkPyA9IDAKK2NvbmZpZ3VyZTozNjk4OiByZXN1bHQ6IG5vCitjb25maWd1cmU6Mzc4NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKK2NvbmZpZ3VyZTozODU2OiByZXN1bHQ6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIKK2NvbmZpZ3VyZTozODc2OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyIGNvbmZ0ZXN0LmMKK2NvbmZpZ3VyZTozODc2OiAkPyA9IDAKKworTm90ZSB0aGlzIGlzIGEgKmJ1aWxkKiB0YXJnZXQgKGluIGJ1aWxkLXg4Nl82NC1saW51eCkgc28gaXQgc2hvdWxkIGJlCit1c2luZyB0aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMgoraGVhZGVycyBhcmUgdmVyeSBkaWZmZXJlbnQsIHVzaW5nIHRoZSB3cm9uZyBjcHAgaXMgYSByZWFsIHByb2JsZW0uIEl0IGlzIGxlYWtpbmcKK2ludG8gY29uZmlndXJlIHRocm91Z2ggdGhlIENQUCB2YXJpYWJsZS4gVWx0aW1hdGVseSB0aGlzIGxlYWRzIHRvIGJ1aWxkCitmYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KKworVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQKK2Vudmlyb25tZW50IHdoZW4gdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUKK3RoZSB2ZXJzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvCithdm9pZCB0aGUgcHJvYmxlbS4KKworUlAgMjIvMDgvMjAxMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAyYmY4M2I3MjI2NS4uMWFmNDU1ODAwODYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAorIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMi1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMi1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YzU4MWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIyLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSA1ZTJlZTQ2YzcyMGI2Y2UwM2ExOGRhNzBkZDRlMDkxN2MyNThhYjBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjE6NTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8zOV0gRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIKKyBvcHRpb25zLgorCitIYXJkIGNvZGluZyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB3aXRoIC4uL2xpYjY0IGlzIGNhdXNpbmcgcHJvYmxlbXMgb24KK3N5c3RlbXMgd2hlcmUgdGhlIGxpYmRpciBpcyBOT1Qgc2V0IHRvIC9saWI2NC4gIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUKK0FCSSwgYXMKK2xvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KKworV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlCitub3JtYWwgbGliZGlyLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAoraW5kZXggYjk4OTc3ODVhODkuLjdkMDZmMGQwZWRiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorQEAgLTIxLDggKzIxLDggQEAKKyBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KKyBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCisgCistQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKy1NVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKysjTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI01VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorIAorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCisrI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIzLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMy1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRkYTFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMy1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApAQCAtMCwwICsxLDk4IEBACitGcm9tIDczNzY2NDI0YTJmNzFiMTgxMGZiOGFmZGQ4NjMwMjg4NTVkODdlNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAorU3ViamVjdDogW1BBVENIIDIzLzM5XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAorCitUaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCitnY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKK2J1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0CitzeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCitmb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKK3BpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCitjb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKysKKyBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCisgZ2NjL2RlZmF1bHRzLmggICB8IDkgKysrKysrKysrCisgZ2NjL2djYy5jICAgICAgICB8IDcgLS0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggNzFhODI3NWMzOWYuLjVhZTY5M2ZiMDZjIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC02MTQsNiArNjE0LDcgQEAgbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAorIAorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBsaWJyYXJpZXMgZXRjLgorIGxpYnN1YmRpciA9ICQobGliZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCisrbGlic3ViZGlyX3RhcmdldCA9IGdjYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKKyAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgZXhlY3V0YWJsZXMKKyBsaWJleGVjc3ViZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggYWxsIHBsdWdpbiByZXNvdXJjZXMgYXJlIGluc3RhbGxlZAorQEAgLTI4NzAsNiArMjg3MSw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgorIAorIFBSRVBST0NFU1NPUl9ERUZJTkVTID0gXAorICAgLURHQ0NfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZVwiIFwKKysgIC1ER0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVD1cIiQobGlic3ViZGlyX3RhcmdldCkvaW5jbHVkZVwiIFwKKyAgIC1ERklYRURfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZS1maXhlZFwiIFwKKyAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSPVwiJChnY2NfZ3h4X2luY2x1ZGVfZGlyKVwiIFwKKyAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09UPSQoZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdCkgXAorZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCitpbmRleCBiMzZhOTc5ZDViYS4uZTJlMTg3ZGVkYWYgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5jCisrKysgYi9nY2MvY3BwZGVmYXVsdC5jCitAQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKyAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisrI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKKysgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KKysgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKysjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKyAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKK2luZGV4IDc4YTA4YTMzZjEyLi5jODg1MTI3NzY3NCAxMDA2NDQKKy0tLSBhL2djYy9kZWZhdWx0cy5oCisrKysgYi9nY2MvZGVmYXVsdHMuaAorQEAgLTE0NTEsNCArMTQ1MSwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAjZGVmaW5lIERXQVJGX0dOQVRfRU5DT0RJTkdTX0RFRkFVTFQgRFdBUkZfR05BVF9FTkNPRElOR1NfR0RCCisgI2VuZGlmCisgCisrLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCisrCisrI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKKysjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCisrI2VuZGlmCisrI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKKysjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgorKyNlbmRpZgorKworICNlbmRpZiAgLyogISBHQ0NfREVGQVVMVFNfSCAqLworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNTcwY2RjMDAwMzQuLjNmYjY0ZDQ1M2YxIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xNDY0LDEzICsxNDY0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKKyAKKyAvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KKyAKKy0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQorLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKKy0jZW5kaWYKKy0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgorLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCistI2VuZGlmCistCisgI2lmZGVmIENST1NTX0RJUkVDVE9SWV9TVFJVQ1RVUkUgIC8qIERvbid0IHVzZSB0aGVzZSBwcmVmaXhlcyBmb3IgYSBjcm9zcyBjb21waWxlci4gICovCisgI3VuZGVmIE1EX0VYRUNfUFJFRklYCisgI3VuZGVmIE1EX1NUQVJURklMRV9QUkVGSVgKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjQtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjQtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2I0N2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNTdiZWVmNjkzOTZmNmMxODcwMTRiOGU2MWNkYzk2NjIxODQ3OWQwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDExOjE3OjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMzldIGdjYyA0LjgrIHdvbid0IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKKworc2luY2UgdGhlICouUHBvIGZpbGVzIGRvbid0IGdldCBjcmVhdGVkIHVubGVzcyAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIGlzIHRydWUuCisKK1RoaXMgcGF0Y2ggZW5zdXJlcyB3ZSBvbmx5IHVzZSB0aG9zZSBjb21waWxlciBvcHRpb25zIHdoZW4gaXRzIGVuYWJsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyhQcm9ibGVtIHdhcyBhbHJlYWR5IHJlcG9ydGVkIHVwc3RyZWFtLCBhdHRhY2hlZCB0aGlzIHBhdGNoIHRoZXJlCitodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU1OTMwKQorCitSUAorMjAxMi8wOS8yMgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliYXRvbWljL01ha2VmaWxlLmFtIHwgMyArKy0KKyBsaWJhdG9taWMvTWFrZWZpbGUuaW4gfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmFtIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCitpbmRleCA4MDNiMjkyY2NlNS4uYjQ3ODQyZWI1OTAgMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQorQEAgLTEwMSw3ICsxMDEsOCBAQCBQQVRfUwkJPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCisgSUZVTkNfREVGCT0gLURJRlVOQ19BTFQ9JChQQVRfUykKKyBJRlVOQ19PUFQJPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKKyAKKy1NX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfVFJVRUBNX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTCQk9CisgTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQorIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKK2RpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuaW4gYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KK2luZGV4IGM4ZjM4YmU1ODM1Li40ZmFiN2NlYzNlYSAxMDA2NDQKKy0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitAQCAtMzM1LDcgKzMzNSw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQorIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCistTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9GQUxTRUBNX0RFUFMgPQorIE1fU0laRSA9IC1ETj0kKFBBVF9OKQorIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCisgTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI1LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI1LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhiMzViYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjUtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGZkOTZjOWIzNWM1OTJmMWJkZDMyYmM1YWU2NjkxNTc0NzNlNDQwNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzIE1hciAyMDE1IDA4OjIxOjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjUvMzldIERvbid0IHNlYXJjaCBob3N0IGRpcmVjdG9yeSBkdXJpbmcgInJlbGluayIgaWYKKyAkaW5zdF9wcmVmaXggaXMgcHJvdmlkZWQKKworaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2xpYnRvb2wtcGF0Y2hlcy8yMDExLTAxL21zZzAwMDI2Lmh0bWwKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA1MmJkYmRiNWY5Yy4uODJiY2VjMzlmMDUgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZmkKKyAJICAgIGVsc2UKKyAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KKysJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6CisgCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKy0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgorKworIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJY2FzZSAkbGliZGlyIGluCisgCQkgIFtcXC9dKikKKy0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2FiNWFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYzJlNDAwYWZlOGM1MTQzNTc4NTlmY2E4OGFmNGQzZTFmY2JmZTJmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE1OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMzldIFVzZSBTWVNURU1MSUJTX0RJUiByZXBsYWNlbWVudCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcKKyBiYXNlX2xpYmRpcgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggYmYxMzI3ZTk4Y2MuLjY0NDM2MTgzYmM4IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaWZuZGVmIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTVjZThhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBhMmNjMTc1NzY5ZmQ4MjU1NzUwZWFlY2FlNjRlM2QxZjljMzhkNDhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNy8zOV0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggNjQ0MzYxODNiYzguLmJhMTU2Njc2MDI2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTI0LDcgKzI0LDcgQEAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiAgQVNBTl9DQzFfU1BFQworICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI4LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjgtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NzNmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI4LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGE4YThhMDI3ODhmZjk4ZjI1M2NlMGIzM2FkY2IwZTY2MWQyNGIxZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDI4LzM5XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCisKKyogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCisgICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKKyAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KKyogRml4IGJhZCBSUEFUSCBpdXNzdWU6CisgIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCisgL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAorIFtycGF0aHNdCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQoraW5kZXggNmVjYjY2YjQzNjUuLjYzNGNjZTNjMmE5IDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCisrKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KK0BAIC0zNyw4ICszNyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorIAorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIAorIGlmIEVOQUJMRV9QTFVHSU4KKyBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCitkaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCitpbmRleCA0N2JlMTAwMjVhZC4uOGQ1NDgxZDg3YmQgMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgorQEAgLTMwMyw4ICszMDMsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIAorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKKyBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQorIHNoYXJlZF9zb3VyY2UgPSBjYWxsYmFja3MuY2MgY2FsbGJhY2tzLmhoIGNvbm5lY3Rpb24uY2MgY29ubmVjdGlvbi5oaCBcCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI5LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI5LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI3YmIwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjktaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApAQCAtMCwwICsxLDIxMyBAQAorRnJvbSAzYmI3NDQ5NWU0NWUwZTc5OGRhYWU1NTU2NDk3ZTY4OGI4ZmM0ZWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzozOTo1NCArMDAwMAorU3ViamVjdDogW1BBVENIIDI5LzM5XSBoYW5kbGUgc3lzcm9vdCBzdXBwb3J0IGZvciBuYXRpdmVzZGstZ2NjCisKK0JlaW5nIGFibGUgdG8gYnVpbGQgYSBuYXRpdmVzZGsgZ2NjIGlzIHVzZWZ1bCwgcGFydGljdWxhcmx5IGluIGNhc2VzCit3aGVyZSB0aGUgaG9zdCBjb21waWxlciBtYXkgYmUgb2YgYW4gaW5jb21wYXRpYmxlIHZlcnNpb24gKG9yIGEgMzIKK2JpdCBjb21waWxlciBpcyBuZWVkZWQpLgorCitTYWRseSwgYnVpbGRpbmcgbmF0aXZlc2RrLWdjYyBpcyBub3Qgc3RyYWlnaHQgZm9yd2FyZC4gV2UgaW5zdGFsbAorbmF0aXZlc2RrLWdjYyBpbnRvIGEgcmVsb2NhdGFibGUgbG9jYXRpb24gYW5kIHRoaXMgbWVhbnMgdGhhdCBpdHMKK2xpYnJhcnkgbG9jYXRpb25zIGNhbiBjaGFuZ2UuICJOb3JtYWwiIHN5c3Jvb3Qgc3VwcG9ydCBkb2Vzbid0IGhlbHAKK2luIHRoaXMgY2FzZSBzaW5jZSB0aGUgdmFsdWVzIG9mIHBhdGhzIGxpa2UgImxpYmRpciIgY2hhbmdlLCBub3QganVzdAorYmFzZSByb290IGRpcmVjdG9yeSBvZiB0aGUgc3lzdGVtLgorCitJbiBvcmRlciB0byBoYW5kbGUgdGhpcyB3ZSBkbyB0d28gdGhpbmdzOgorCithKSBBZGQgJXIgaW50byBzcGVjIGZpbGUgbWFya3VwIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbmplY3RlZCBwYXRocworICAgc3VjaCBhcyBTWVNURU1MSUJTX0RJUiAoc2VlIGdjY19tdWx0aWxpYl9zZXR1cCgpKS4KK2IpIEFkZCBvdGhlciBwYXRocyB3aGljaCBuZWVkIHJlbG9jYXRpb24gaW50byBhIC5nY2NyZWxvY3ByZWZpeCBzZWN0aW9uCisgICB3aGljaCB0aGUgcmVsb2NhdGlvbiBjb2RlIHdpbGwgbm90aWNlIGFuZCBhZGp1c3QgYXV0b21hdGljYWxseS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitSUCAyMDE1LzcvMjgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jcHBkZWZhdWx0LmMgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCisgZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKystLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKK2luZGV4IGUyZTE4N2RlZGFmLi4yZmFiYTJiMWQ2MyAxMDA2NDQKKy0tLSBhL2djYy9jcHBkZWZhdWx0LmMKKysrKyBiL2djYy9jcHBkZWZhdWx0LmMKK0BAIC0zNSw2ICszNSwzMCBAQAorICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAjZW5kaWYKKyAKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7CisrI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7CisrI2VuZGlmCisrCisgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKKyA9IElOQ0xVREVfREVGQVVMVFM7CitAQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorID0geworICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKKysgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgorICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKy0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCistICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCistICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAorKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAorKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KKy0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCisrICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAorICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQorIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLworICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKK0BAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICNlbmRpZgorICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgorICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KKy0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKysgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgorICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAorKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCisgICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLworLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCistICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisgI2VuZGlmCisgICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CisgICB9OworZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCitpbmRleCA0YTAxODZkMWNmMi4uMjllNWQ5ZGEwZGMgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5oCisrKysgYi9nY2MvY3BwZGVmYXVsdC5oCitAQCAtMzMsNyArMzMsOCBAQAorIAorIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKKyB7CistICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCisrICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKworICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQorIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLworICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDNmYjY0ZDQ1M2YxLi5jZDBjN2ZiZTk2MSAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMjQ4LDYgKzI0OCw4IEBAIEZJTEUgKnJlcG9ydF90aW1lc190b19maWxlID0gTlVMTDsKKyAjZW5kaWYKKyBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gREVGQVVMVF9UQVJHRVRfU1lTVEVNX1JPT1Q7CisgCisrc3RhdGljIGNoYXIgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNURU1MSUJTX0RJUjsKKysKKyAvKiBOb256ZXJvIG1lYW5zIHBhc3MgdGhlIHVwZGF0ZWQgdGFyZ2V0X3N5c3RlbV9yb290IHRvIHRoZSBjb21waWxlci4gICovCisgCisgc3RhdGljIGludCB0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZDsKK0BAIC01MTksNiArNTIxLDcgQEAgb3Igd2l0aCBjb25zdGFudCB0ZXh0IGluIGEgc2luZ2xlIGFyZ3VtZW50LgorICAlRyAgICAgcHJvY2VzcyBMSUJHQ0NfU1BFQyBhcyBhIHNwZWMuCisgICVSICAgICBPdXRwdXQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGFyZ2V0X3N5c3RlbV9yb290IGFuZAorICAgICAgICAgdGFyZ2V0X3N5c3Jvb3Rfc3VmZml4LgorKyAlciAgICAgT3V0cHV0IHRoZSBiYXNlIHBhdGggdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeAorICAlUyAgICAgcHJvY2VzcyBTVEFSVEZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgUyBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCisgICVFICAgICBwcm9jZXNzIEVOREZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgRSBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCisgICVDICAgICBwcm9jZXNzIENQUF9TUEVDIGFzIGEgc3BlYy4KK0BAIC0xNDg3LDEwICsxNDkwLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7CisgICAgZ2NjX2V4ZWNfcHJlZml4IGlzIHNldCBiZWNhdXNlLCBpbiB0aGF0IGNhc2UsIHdlIGtub3cgd2hlcmUgdGhlCisgICAgY29tcGlsZXIgaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdXNlIHBhdGhzIHJlbGF0aXZlIHRvIHRoYXQKKyAgICBsb2NhdGlvbiBpbnN0ZWFkLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfZXhlY19wcmVmaXggPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfbGliZXhlY19wcmVmaXggPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfYmluZGlyX3ByZWZpeCA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2V4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2JpbmRpcl9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKytzdGF0aWMgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7CisgCisgLyogRm9yIG5hdGl2ZSBjb21waWxlcnMsIHRoZXNlIGFyZSB3ZWxsLWtub3duIHBhdGhzIGNvbnRhaW5pbmcKKyAgICBjb21wb25lbnRzIHRoYXQgbWF5IGJlIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0uICBGb3IgY3Jvc3MKK0BAIC0xNDk4LDkgKzE1MDEsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX2V4ZWNfcHJlZml4ID0gTURfRVhFQ19QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXggPSBNRF9TVEFSVEZJTEVfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4XzEgPSBNRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMQorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzIKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCisgICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMjsKKyAKKyAvKiBBIHJlbGF0aXZlIHBhdGggdG8gYmUgdXNlZCBpbiBmaW5kaW5nIHRoZSBsb2NhdGlvbiBvZiB0b29scworQEAgLTU4NDksNiArNTg1MiwxMSBAQCBkb19zcGVjXzEgKGNvbnN0IGNoYXIgKnNwZWMsIGludCBpbnN3aXRjaCwgY29uc3QgY2hhciAqc29mdF9tYXRjaGVkX3BhcnQpCisgCSAgICAgIH0KKyAJICAgIGJyZWFrOworIAorKyAgICAgICAgICBjYXNlICdyJzoKKysgICAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgsCisrCQkgICAgICBzdHJsZW4gKHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgpKTsKKysgICAgICAgICAgICBicmVhazsKKysKKyAJICBjYXNlICdTJzoKKyAJICAgIHZhbHVlID0gZG9fc3BlY18xIChzdGFydGZpbGVfc3BlYywgMCwgTlVMTCk7CisgCSAgICBpZiAodmFsdWUgIT0gMCkKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzAtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzAtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzU2NmRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzMC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIGY1Y2M4Y2QwYzQ0MDkyZGM0ODcxMDZhZGUyN2UwMTFjMWY1ODRhZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzAvMzldIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKKyBtdWx0aWxpYi4KKworV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCis8c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCit3aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKK2NvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKK3RoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQorY28tZXhpc3Qgb24gdGFyZ2V0LgorCitXZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKK2ZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKKzx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCittaXBzNjQtcG9sa21sbGliMzItbGludXgKK2lzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KKworVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCitpczoKKworPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCit3aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCit3aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KKworVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0CitiaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6CisKKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi9saWIzMi8KKzxzeXNyb290Pi91c3IvbGliMzIvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworUlAgMjAxNS83LzMxCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGNkMGM3ZmJlOTYxLi5mNmYzYWEwNzdjOCAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMjUyNyw3ICsyNTI3LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKKyAgICAgICBpZiAocGF0aCA9PSBOVUxMKQorIAl7CisgCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7CistCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7CisrCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7CisgCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7CisgCX0KKyAKK0BAIC0yNTM5LDYgKzI1MzksMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKKyAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLworIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCisgCSAgICB7CisrCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQorKwkgICAgICAgIHsKKysJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7CisrCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47CisrCisrCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQorKwkJICAgIHsKKysJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7CisrCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47CisrCQkgICAgfQorKwkgICAgICAgICAgZWxzZQorKwkJICAgIHsKKysJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7CisrCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47CisrCQkgICAgfQorKworKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCisrCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCisrCSAgICAgICAgICAgIHsKKysJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7CisrCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOworKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKKysJCSAgICAgICAgICBicmVhazsKKysJICAgICAgICAgICAgfQorKwkgICAgICAgIH0KKysKKyAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKyAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOworIAkgICAgICBpZiAocmV0KQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzMS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzEtRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFiYzAwNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzEtRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gOTNiNGUxZDNhMGY4NDE3MTE4ZDFjNDhmY2QxY2U1MTk5NmUxNDIwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMS8zOV0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKKworV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKK0NGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQorQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCitXaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKK3RoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCisKK1RoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAorQ1BQLCBhbmQgR01QSU5DLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKworIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KKyBnY2MvY29uZmlndXJlICAgIHwgMiArLQorIGdjYy9jb25maWd1cmUuYWMgfCAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMWFmNDU1ODAwODYuLjg5NjY0NTNjMzJjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTUyLDYgKzE1Miw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisgCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKK0BAIC0xNjksNiArMTcwLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KKyBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAorIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKKyAKKyAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KK0BAIC0xODYsNiArMTkwLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACisgSE9TVF9FWFBPUlRTID0gXAorIAkkKEJBU0VfRVhQT1JUUykgXAorIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCisgCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorQEAgLTc1Myw2ICs3NTgsNyBAQCBCQVNFX0ZMQUdTX1RPX1BBU1MgPSBcCisgCSJDQ19GT1JfQlVJTEQ9JChDQ19GT1JfQlVJTEQpIiBcCisgCSJDRkxBR1NfRk9SX0JVSUxEPSQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJIkNYWF9GT1JfQlVJTEQ9JChDWFhfRk9SX0JVSUxEKSIgXAorKwkiQ1hYRkxBR1NfRk9SX0JVSUxEPSQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiRVhQRUNUPSQoRVhQRUNUKSIgXAorIAkiRkxFWD0kKEZMRVgpIiBcCisgCSJJTlNUQUxMPSQoSU5TVEFMTCkiIFwKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKK2luZGV4IGFiZDJiYzJmYjg5Li41ODIyYjI2MDQwNCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnRwbAorKysrIGIvTWFrZWZpbGUudHBsCitAQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCitAQCAtMTcxLDYgKzE3Miw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTg4LDYgKzE5Miw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDVhZTY5M2ZiMDZjLi4wMmVlMGFhNzJmNCAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtODAxLDcgKzgwMSw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACisgQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACisgQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQorIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCistCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKKysJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKKyAKKyAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCisgR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGNmY2FkYzkzYTAxLi4yZjZiNGY3MmVmMyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMTc5Nyw3ICsxMTc5Nyw3IEBAIGVsc2UKKyAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCisgCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAorLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKysJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAorIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCisgCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAorIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDQ0YjkwNDc4ZjU1Li45ZjhhNTFmYzliZCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xNzA4LDcgKzE3MDgsNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzMi1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzItbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRkOWQ1NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzItbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA5OWYzZTNiNDI3OTk2YWM1NzlkOTVlNjg0NDBhMGJkN2FmN2VmMGZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMiBGZWIgMjAxNiAxMDoyNjoxMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDMyLzM5XSBuaW9zMjogRGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIKKworU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitpbmRleCA0NzI5MTA1NjI2ZC4uMzYxODFlYjdiODUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgorIAorICN1bmRlZiBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzMtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzMtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWE2YjBhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzMy1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gODRiNTVhYjJmNjg3MTBhNTgzZDRlYzgxMGVhOGIzYjY4NTc2ZjhhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzMvMzldIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cworCit3aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bworbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCit0aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCitsaWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCitUQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECisgd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scworYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQord2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKK2J1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKworIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAoraW5kZXggNDg3YjBjMDkyM2IuLjQ3NjlkMDg5NTM4IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKK0BAIC0xODIsNiArMTgyLDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKKyAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAorICAgfQorKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKKysjdW5kZWYgTElOS19TU1BfU1BFQworKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCisrCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCisrCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgorKyNlbmRpZgorKworICNlbmRpZgorIAorICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCitpbmRleCAwMWI0MGM3NjJmNi4uZTdjNWU5MjIxNWMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCitAQCAtOTIsNiArOTIsMTYgQEAKKyAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQorICNlbmRpZgorIAorKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrI2VuZGlmCisrCisgI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQworICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCisgICAleyFzdGF0aWMtcGllOiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitpbmRleCA1NTY5NWRhZGQ5MS4uNjBmMWVlMjQ5ODUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorQEAgLTQ3Myw2ICs0NzMsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQorICNlbmRpZgorIAorKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrI2VuZGlmCisrCisgI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCisgICAleyFzdGF0aWMtcGllOiBcCisgICAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM0LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTY5ZWEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApAQCAtMCwwICsxLDEyNSBAQAorRnJvbSBmYWYzNWUyNjc0MDQ2MWZlMWExZGE1NDMzZDVhMDE2OWE2NjNlM2I1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgQXByIDIwMTYgMjA6MDM6MjggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzNC8zOV0gbGliZ2NjOiBBZGQga25vYiB0byB1c2UgbGRibC0xMjggb24gcHBjCisKK211c2wgZG9lcyBub3Qgc3VwcG9ydCBsZGJsIDEyOCBzbyB3ZSBjYW4gbm90IGFzc3VtZQordGhhdCBsaW51eCBhcyBhIHdob2xlIHN1cHBvcnRzIGxkYmwtMTI4IGJpdHMsIGluc3RlYWQKK2FjdCB1cG9uIGNvbmZpZ3VyZSBvcHRpb24gcGFzc2VkIHRvIGdjYyBhbmQgYXNzdW1lIG5vCitvbiBtdXNsIGFuZCB5ZXMgb3RoZXJ3aXNlIGlmIG5vIG9wdGlvbiBpcyBwYXNzZWQgc2luY2UKK2RlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGFzc3VtZSBsZGJsMTI4IGl0IGRvZXMgbm90CitjaGFuZ2UgdGhlIGRlZmF1bHRzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKKyBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KKyBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCisgbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL01ha2VmaWxlLmluIGIvbGliZ2NjL01ha2VmaWxlLmluCitpbmRleCBkZDhjZWU5OWZkMy4uYjVmNDc4YWYzODIgMTAwNjQ0CistLS0gYS9saWJnY2MvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmdjYy9NYWtlZmlsZS5pbgorQEAgLTQ4LDYgKzQ4LDcgQEAgdW53aW5kX2hlYWRlciA9IEB1bndpbmRfaGVhZGVyQAorIG1kX3Vud2luZF9oZWFkZXIgPSBAbWRfdW53aW5kX2hlYWRlckAKKyBzZnBfbWFjaGluZV9oZWFkZXIgPSBAc2ZwX21hY2hpbmVfaGVhZGVyQAorIHRocmVhZF9oZWFkZXIgPSBAdGhyZWFkX2hlYWRlckAKKyt3aXRoX2xkYmwxMjggPSBAd2l0aF9sZGJsMTI4QAorIAorIGhvc3Rfbm9uY2Fub25pY2FsID0gQGhvc3Rfbm9uY2Fub25pY2FsQAorIHJlYWxfaG9zdF9ub25jYW5vbmljYWwgPSBAcmVhbF9ob3N0X25vbmNhbm9uaWNhbEAKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAoraW5kZXggNGY2ZDRjNGE0ZDIuLmM1MGRkOTRhMmRhIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAorQEAgLTEsMyArMSw2IEBACisgU0hMSUJfTUFQRklMRVMgKz0gJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvbGliZ2NjLWdsaWJjLnZlcgorIAorLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjggLW1uby1taW5pbWFsLXRvYworK2lmZXEgKCQod2l0aF9sZGJsMTI4KSx5ZXMpCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOAorK2VuZGlmCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbW5vLW1pbmltYWwtdG9jCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZSBiL2xpYmdjYy9jb25maWd1cmUKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCBiMmYzZjg3MDg0NC4uZWQ4MDY1ODdjMTcKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUKKysrKyBiL2xpYmdjYy9jb25maWd1cmUKK0BAIC02MTksNiArNjE5LDcgQEAgYnVpbGRfdmVuZG9yCisgYnVpbGRfY3B1CisgYnVpbGQKKyB3aXRoX2FpeF9zb25hbWUKKyt3aXRoX2xkYmwxMjgKKyBlbmFibGVfdnRhYmxlX3ZlcmlmeQorIGVuYWJsZV9zaGFyZWQKKyBsaWJnY2NfdG9wZGlyCitAQCAtNjY4LDYgKzY2OSw3IEBAIHdpdGhfY3Jvc3NfaG9zdAorIHdpdGhfbGQKKyBlbmFibGVfc2hhcmVkCisgZW5hYmxlX3Z0YWJsZV92ZXJpZnkKKyt3aXRoX2xvbmdfZG91YmxlXzEyOAorIHdpdGhfYWl4X3NvbmFtZQorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworIHdpdGhfc2xpYmRpcgorQEAgLTEzMjksNiArMTMzMSw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAorICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCisgICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQorKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAorICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAorQEAgLTIyMTMsNiArMjIxNiwyMSBAQCBmaQorIAorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbG9uZy1kb3VibGUtMTI4IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKKytlbHNlCisrICBjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKysKKytmaQorKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHt3aXRoX2FpeF9zb25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9haXhfc29uYW1lOyBjYXNlICIke2hvc3R9OiR7ZW5hYmxlX3NoYXJlZH0iIGluCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK2luZGV4IGI1OWFhNzQ2YWZjLi40MjIyMGEyNjNjNSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK0BAIC03OCw2ICs3OCwxOCBAQCBBQ19BUkdfRU5BQkxFKHZ0YWJsZS12ZXJpZnksCisgW2VuYWJsZV92dGFibGVfdmVyaWZ5PW5vXSkKKyBBQ19TVUJTVChlbmFibGVfdnRhYmxlX3ZlcmlmeSkKKyAKKytBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCisrW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKKysgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCisrICAgICAgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAorK1tjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKytdKQorK0FDX1NVQlNUKHdpdGhfbGRibDEyOCkKKysKKyBBQ19BUkdfV0lUSChhaXgtc29uYW1lLAorIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCisgICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVhdKV0sCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzUtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDE2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDc3NWM3ZmFmY2JmZWJlZDJkNGJkOGE2YTAxMWYxOGY3MGYzYjU5ZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzUvMzldIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitpbmRleCA3ZTYwYjYyMWEyZC4uZWEyMmVkZTMzNjEgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAorIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKKyAKKyBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCistCSQoU0hMSUJfTERGTEFHUykgXAorKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAorIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKKyAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCisgCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZWYzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM2LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSBiN2ZhZWVkNjAyNjFkN2I3NWYyZGIzODIzOTI2ZGUxNjUwZWY2NGJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+CitEYXRlOiBTYXQsIDI0IE9jdCAyMDE1IDIwOjA5OjUzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzYvMzldIGxpYmdjY19zOiBVc2UgYWxpYXMgZm9yIF9fY3B1X2luZGljYXRvcl9pbml0IGluc3RlYWQgb2YKKyBzeW12ZXIKKworQWRhcHRlciBmcm9tCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNS0wNS9tc2cwMDg5OS5odG1sCisKK1RoaXMgZml4IHdhcyBkZWJhdGVkIGJ1dCBoYXNudCBiZWVuIGFwcGxpZWQgZ2NjIHVwc3RyZWFtIHNpbmNlCit0aGV5IGV4cGVjdCBtdXNsIHRvIHN1cHBvcnQgJ0AnIGluIHN5bWJvbCB2ZXJzaW9uaW5nIHdoaWNoIGlzCithIHN1bi9nbnUgdmVyc2lvbmluZyBleHRlbnRpb24uIFRoaXMgcGF0Y2ggaG93ZXZlciBhdm9pZHMgdGhlCituZWVkIGZvciB0aGUgJ0AnIHN5bWJvbHMgYXQgYWxsCisKK2xpYmdjYy9DaGFuZ2Vsb2c6CisKKzIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+CisKKwkqIGNvbmZpZy9pMzg2L2NwdWluZm8uYyAoX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwpOiBBZGQuCisJKF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wKTogUmVtb3ZlLgorCisJKiBjb25maWcvaTM4Ni90LWxpbnV4IChIT1NUX0xJQkdDQzJfQ0ZMQUdTKTogUmVtb3ZlIC1EVVNFX0VMRl9TWU1WRVIuCisKK2djYy9DaGFuZ2Vsb2c6CisKKzIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+CisKKwkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IE1ha2UgX19idWlsdGluX2NwdV9pbml0CisJY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbnN0ZWFkIG9mIF9fY3B1X2luZGljYXRvcl9pbml0LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK2luZGV4IDZhMjE0MWU0OGRiLi40NTVmY2NiZGQ1MCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKKysrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK0BAIC0zNjQ5MCwxMCArMzY0OTAsMTAgQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIHJ0eCBzdWJ0YXJnZXQsCisgICAgIHsKKyAgICAgY2FzZSBJWDg2X0JVSUxUSU5fQ1BVX0lOSVQ6CisgICAgICAgeworLQkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXQgaW4gbGliZ2NjLiAqLworKwkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW4gbGliZ2NjLmEuICovCisgCXRyZWUgY2FsbF9leHByLCBmbmRlY2wsIHR5cGU7CisgICAgICAgICB0eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsgCistCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIsIHR5cGUpOworKwlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwiLCB0eXBlKTsKKyAJY2FsbF9leHByID0gYnVpbGRfY2FsbF9leHByIChmbmRlY2wsIDApOyAKKyAJcmV0dXJuIGV4cGFuZF9leHByIChjYWxsX2V4cHIsIHRhcmdldCwgbW9kZSwgRVhQQU5EX05PUk1BTCk7CisgICAgICAgfQorZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCitpbmRleCA4Njk1M2RiMjc0My4uZTA0NzYyNzI4MTAgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCisrKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCitAQCAtNDgyLDcgKzQ4Miw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQorICAgcmV0dXJuIDA7CisgfQorIAorLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCistX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOworLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKKysjaWZuZGVmIFNIQVJFRAorK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKKysgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4CitpbmRleCA4NTA2YTYzNTc5MC4uNTY0Mjk2Zjc4OGUgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKK0BAIC0zLDUgKzMsNSBAQAorICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKKyBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCisgCistSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIgJChDRVRfRkxBR1MpCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwICQoQ0VUX0ZMQUdTKQorIENSVFNUVUZGX1RfQ0ZMQUdTICs9ICQoQ0VUX0ZMQUdTKQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGE3ZjQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSA2MDJhYmFhYjE1ZmZiNjBiZjE3OTcxODdhNzFiNDg1MDQyYzU2MzYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBGZWIgMjAxNyAxMjo1NjowMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDM3LzM5XSBzeW5jIGdjYyBzdGRkZWYuaCB3aXRoIG11c2wKKworbXVzbCBkZWZpbmVzIHB0cmRpZmZfdCBzaXplX3QgYW5kIHdjaGFyX3QKK3NvIGRvbnQgZGVmaW5lIHRoZW0gaGVyZSBpZiBtdXNsIGlzIGRlZmluaW5pbmcgdGhlbQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGdjYy9naW5jbHVkZS9zdGRkZWYuaCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCitpbmRleCAzMWI5NmE3ZTVlMS4uNDM4YTNjZTdjNTYgMTAwNjQ0CistLS0gYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKKysrKyBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAorQEAgLTEzNCw2ICsxMzQsNyBAQCBfVFlQRV93Y2hhcl90OworICNpZm5kZWYgX19faW50X3B0cmRpZmZfdF9oCisgI2lmbmRlZiBfR0NDX1BUUkRJRkZfVAorICNpZm5kZWYgX1BUUkRJRkZfVF9ERUNMQVJFRCAvKiBEcmFnb25GbHkgKi8KKysjaWZuZGVmIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNkZWZpbmUgX1BUUkRJRkZfVAorICNkZWZpbmUgX1RfUFRSRElGRl8KKyAjZGVmaW5lIF9UX1BUUkRJRkYKK0BAIC0xNDMsMTAgKzE0NCwxMiBAQCBfVFlQRV93Y2hhcl90OworICNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCisgI2RlZmluZSBfR0NDX1BUUkRJRkZfVAorICNkZWZpbmUgX1BUUkRJRkZfVF9ERUNMQVJFRAorKyNkZWZpbmUgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCisgI2lmbmRlZiBfX1BUUkRJRkZfVFlQRV9fCisgI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGxvbmcgaW50CisgI2VuZGlmCisgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKysjZW5kaWYgLyogX19ERUZJTkVEX3B0cmRpZmZfdCAqLworICNlbmRpZiAvKiBfUFRSRElGRl9UX0RFQ0xBUkVEICovCisgI2VuZGlmIC8qIF9HQ0NfUFRSRElGRl9UICovCisgI2VuZGlmIC8qIF9fX2ludF9wdHJkaWZmX3RfaCAqLworQEAgLTE4NCw2ICsxODcsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNpZm5kZWYgX0dDQ19TSVpFX1QKKyAjaWZuZGVmIF9TSVpFVF8KKyAjaWZuZGVmIF9fc2l6ZV90CisrI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1NJWkVfVAorQEAgLTIwMCw2ICsyMDQsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNkZWZpbmUgX19faW50X3NpemVfdF9oCisgI2RlZmluZSBfR0NDX1NJWkVfVAorICNkZWZpbmUgX1NJWkVUXworKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2lmIChkZWZpbmVkIChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDUpKSBcCisgICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKKyAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQorQEAgLTIzNSw2ICsyNDAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjZW5kaWYgLyogX1NJWkVfVCAqLworICNlbmRpZiAvKiBfX1NJWkVfVF9fICovCisgI2VuZGlmIC8qIF9fc2l6ZV90X18gKi8KKysjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLworICN1bmRlZglfX25lZWRfc2l6ZV90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfc2l6ZV90LiAgKi8KKyAKK0BAIC0yNjQsNiArMjcwLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2lmbmRlZiBfX19pbnRfd2NoYXJfdF9oCisgI2lmbmRlZiBfX0lOVF9XQ0hBUl9UX0gKKyAjaWZuZGVmIF9HQ0NfV0NIQVJfVAorKyNpZm5kZWYgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLworICNkZWZpbmUgX193Y2hhcl90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19XQ0hBUl9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9XQ0hBUl9UCitAQCAtMjc5LDYgKzI4Niw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNkZWZpbmUgX19JTlRfV0NIQVJfVF9ICisgI2RlZmluZSBfR0NDX1dDSEFSX1QKKyAjZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVECisrI2RlZmluZSBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgCisgLyogT24gQlNELzM4NiAxLjEsIGF0IGxlYXN0LCBtYWNoaW5lL2Fuc2kuaCBkZWZpbmVzIF9CU0RfV0NIQVJfVF8KKyAgICBpbnN0ZWFkIG9mIF9XQ0hBUl9UXywgYW5kIF9CU0RfUlVORV9UXyAod2hpY2gsIHVubGlrZSB0aGUgb3RoZXIKK0BAIC0zNDQsNiArMzUyLDcgQEAgdHlwZWRlZiBfX1dDSEFSX1RZUEVfXyB3Y2hhcl90OworICNlbmRpZgorICNlbmRpZiAvKiBfX1dDSEFSX1RfXyAqLworICNlbmRpZiAvKiBfX3djaGFyX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfd2NoYXJfdCBtdXNsICovCisgI3VuZGVmCV9fbmVlZF93Y2hhcl90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfd2NoYXJfdC4gICovCisgCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM4LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM4LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI0ZDJhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzgtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDAwNjk0ODQ5NjMyZGVlMjM3NDE5MjVjNjEwNGRmMTM0ZjZiZmY3NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAyMjozMToyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDM4LzM5XSBmaXggc2VnbWVudGF0aW9uIGZhdWx0IGluIHByZWNvbXBpbGVkIGhlYWRlciBnZW5lcmF0aW9uCisKK1ByZXZlbnQgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hpY2ggb2NjdXJzIHdoZW4gdXNpbmcgaW5jb3JyZWN0CitzdHJ1Y3R1cmUgdHJ5aW5nIHRvIGFjY2VzcyBuYW1lIG9mIHNvbWUgbmFtZWQgb3BlcmF0b3JzLCBzdWNoIGFzCitDUFBfTk9ULCBDUFBfQU5EIGV0Yy4gInRva2VuLT52YWwubm9kZS5zcGVsbGluZyIgY2Fubm90IGJlIHVzZWQgaW4KK3Rob3NlIGNhc2VzLCBhcyBpcyBtYXkgbm90IGJlIGluaXRpYWxpemVkIGF0IGFsbC4KKworW1lPQ1RPICMxMTczOF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliY3BwL2xleC5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYworaW5kZXggMzdjMzY1YTM1NjAuLjYzNDgwMDQ4ZGI2IDEwMDY0NAorLS0tIGEvbGliY3BwL2xleC5jCisrKysgYi9saWJjcHAvbGV4LmMKK0BAIC0zMjc5LDExICszMjc5LDI3IEBAIGNwcF9zcGVsbF90b2tlbiAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0IGNwcF90b2tlbiAqdG9rZW4sCisgICAgIHNwZWxsX2lkZW50OgorICAgICBjYXNlIFNQRUxMX0lERU5UOgorICAgICAgIGlmIChmb3JzdHJpbmcpCistCXsKKy0JICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorLQkJICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CistCSAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworLQl9CisrICAgICAgICB7CisrICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorKyAgICAgICAgICAgICAgICAgICAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOworKyAgICAgICAgICAgICAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAvKiBOQU1FRF9PUCwgY2Fubm90IHVzZSBub2RlLnNwZWxsaW5nICovCisrICAgICAgICAgIGlmICh0b2tlbi0+ZmxhZ3MgJiBOQU1FRF9PUCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBjcHBfbmFtZWRfb3BlcmF0b3IybmFtZSAodG9rZW4tPnR5cGUpOworKyAgICAgICAgICAgICAgaWYgKHN0cikKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3RyKTsKKysgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdHIsIGxlbik7CisrICAgICAgICAgICAgICAgICAgYnVmZmVyICs9IGxlbjsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAgICAgIGVsc2UKKyAJYnVmZmVyID0gX2NwcF9zcGVsbF9pZGVudF91Y25zIChidWZmZXIsIHRva2VuLT52YWwubm9kZS5ub2RlKTsKKyAgICAgICBicmVhazsKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzktRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzktRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzUxNjMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzOS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCkBAIC0wLDAgKzEsMjU4IEBACitGcm9tIGQxNTFhNjJjMjUyNzQ5NjQzYzg1MGEwOGQxMzM1MzIxZTViNzVkNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSQUdIVU5BVEggTE9MVVIgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KK0RhdGU6IFdlZCwgNiBEZWMgMjAxNyAyMjo1MjoyNiAtMDgwMAorU3ViamVjdDogW1BBVENIIDM5LzM5XSBGaXggZm9yIHRlc3RzdWl0ZSBmYWlsdXJlCisKKzIwMTctMTEtMTYgIFJhZ2h1bmF0aCBMb2x1ciAgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KKworCSogZ2NjLmRnL3ByNTYyNzUuYzogSWYgU1NFIGlzIGRpc2FibGVkLCBlbnN1cmUgdGhhdAorCSItbWZwbWF0aCIgaXMgbm90IHNldCB0byB1c2UgU1NFLiBTZXQgIi1tZnBtYXRoPTM4NyIuCisJKiBnY2MuZGcvcHI2ODMwNi5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjgzMDYtMi5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjgzMDYtMy5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjk2MzQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvaXNhLTE0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmM6IExpa2V3aXNlCisKK0lmIC1XYWxsLCAtV2Vycm9yIGFyZSB1c2VkIGR1cmluZyBjb21waWxhdGlvbiB2YXJpb3VzIHRlc3QgY2FzZXMgZmFpbAordG8gY29tcGlsZS4KKworSWYgU1NFIGlzIGRpc2FibGVkLCBiZSBzdXJlIHRvIC1tZnBtYXRoPTM4NyB0byByZXNvbHZlIHRoaXMuCisKK1RoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCitUaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgICAgICAgICAgfCAxICsKKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jICAgICAgfCAyICstCisgMTcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKK2luZGV4IGI5MDFiYjJiMTk5Li5hNGY2Yzk1ZTFhMSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KKyAKKyB0eXBlZGVmIGxvbmcgbG9uZyB2MnR3IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMiAqIHNpemVvZiAobG9uZyBsb25nKSkpKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCitpbmRleCA0NjcyZWJlNzk4Ny4uMmEzNjhjNDg0YjYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAKKyBzdHJ1Y3QgeworICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYworaW5kZXggZjVhOGMxMDJjZjguLmRmMzM5MGM2NGMyIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisgLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tYWx0aXZlYyAtbW5vLXZzeCIgeyB0YXJnZXQgcG93ZXJwYyotKi0qIH0gfSAqLworIAorIGV4dGVybiB2b2lkIGZuMigpOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYworaW5kZXggNTRlNWI0MGYyMjEuLjA4MTMzODllMmMxIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAKKyBlbnVtIHBvd2VycGNfcG1jX3R5cGUgeyBQUENfUE1DX0lCTSB9OworIHN0cnVjdCB7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCitpbmRleCA2MGE1NjE0OTQ2My4uYmNjMjNmOWNjZDYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLWRjZSAtZnNjaGVkdWxlLWluc25zIC1mbm8tdHJlZS12cnAgLWZjb21wYXJlLWRlYnVnIC1Xbm8tcHNhYmkiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzY2hlZHVsaW5nIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworaW5kZXggNjlmZGU1N2JmMDYuLjdmMWYxYzAzZWRmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYWJpPXN5c3YiIHsgdGFyZ2V0ICotKi1taW5ndyogfSB9ICovCisgCisgZG91YmxlIGZvbyh2b2lkKSB7IHJldHVybiAwOyB9CS8qIHsgZGctZXJyb3IgIlNTRSBkaXNhYmxlZCIgfSAqLworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYworaW5kZXggZWE4OTZiN2ViZmQuLmJmMTU1NjliODI2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKK0BAIC0xLDYgKzEsNyBAQAorIC8qIFRlc3Qgd2hldGhlciBhbGwgb2YgdGhlIDY0LWJpdCBmdW5jdGlvbiBzcGVjaWZpYyBvcHRpb25zIGFyZSBhY2NlcHRlZAorICAgIHdpdGhvdXQgZXJyb3IuICAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWZwbWF0aD0zODciIH0gKi8KKyAKKyAjaW5jbHVkZSAiZnVuY3NwZWMtNTYuaW5jIgorIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYworaW5kZXggM2ZiZGM4ODFkZGEuLjZiNGQ5ZDEyNTJhIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODciIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCitpbmRleCA1ZDQ5ZTZlNzdmZS4uMWRlMmRiOTJiZGQgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gcnVuIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYworaW5kZXggZmExNzY5YjYyZmIuLmY3OWZiMTI3MjZmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHN0cnVjdCBBCisgeyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCitpbmRleCAyZTg5ZmY3ZDgxZC4uNjMzOWJmNmI3MzYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81MzQyNSAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KKyAKKyB0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYworaW5kZXggNjFmNjI4M2RiZTkuLjJjNWE1NWYwYWMzIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCisgCisgdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKK2luZGV4IDIzMzY2ZDA5MDlkLi45ODEwZTNhYmI3NiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKyAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBtYXliZV94MzIgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmciIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OworIHR5cGVkZWYgdWludDMyX3QgRWxmMzJfV29yZDsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKK2luZGV4IDk2MDA2YjNlMzM4Li40Mjg3ZTQ1MzhiZiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTk2NDQgKi8KKyAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyAvKiBUaGlzIHRlc3QgdXNlcyBfX2J1aWx0aW5fdHJhcCAoKSBpbnN0ZWFkIG9mIGUuZy4gYWJvcnQsCisgICAgYmVjYXVzZSBkdWUgdG8gLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyBpdCBzaG91bGQgbm90IGNhbGwKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKK2luZGV4IGJmYjhjNDcwM2ViLi5lZDA0Y2YxODFmMyAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHZvaWQgZm9vICgpCisgeworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKK2luZGV4IDRlMTEyYzg4ZDA3Li5iY2ZiMzk2YTY4ZCAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgcnRsLW9wdGltaXphdGlvbi83MDQ2NyAqLworIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB2b2lkIGZvbyAodW5zaWduZWQgbG9uZyBsb25nICopOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCitpbmRleCA2Y2RhMTUzNDMxMS4uMjZlMzdmNWI4YmEgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UiIH0gICovCisrLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UgLW1mcG1hdGg9Mzg3IiB9ICAqLworICNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCisgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCisgCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDQwLVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwNDAtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZmEwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDQwLVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDhmYjhmNzczZTExN2VlNzBiZTAwYmIwZGE1ZjM0M2ZlMTEwZGE1YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA2IEp1biAyMDE4IDEyOjEwOjIyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNDAvNDBdIFJlLWludHJvZHVjZSBzcGUgY29tbWFuZGxpbmUgb3B0aW9ucworCitUaGlzIHNob3VsZCBlbnN1cmUgdGhhdCB3ZSBrZWVwIGFjY2VwdGluZworc3BlIG9wdGlvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTUEUgcG9ydCBpcyByZW1vdmVkIGZyb20gcnM2MDAgcG9ydF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKK2luZGV4IGFjZThhNDc3NTUwLi5kNmE4ZjgyNWQ4OCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKK0BAIC0zNjUsNiArMzY1LDE4IEBAIG1kZWJ1Zz0KKyBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkCisgLW1kZWJ1Zz0JRW5hYmxlIGRlYnVnIG91dHB1dC4KKyAKKyttc3BlCisrVGFyZ2V0IFZhcihyczYwMDBfc3BlKSBTYXZlCisrR2VuZXJhdGUgU1BFIFNJTUQgaW5zdHJ1Y3Rpb25zIG9uIEU1MDAuCisrCisrbWFiaT1zcGUKKytUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpKSBTYXZlCisrVXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCisrCisrbWFiaT1uby1zcGUKKytUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpLCAwKQorK0RvIG5vdCB1c2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KKysKKyBtYWJpPWFsdGl2ZWMKKyBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9hbHRpdmVjX2FiaSkgU2F2ZQorIFVzZSB0aGUgQWx0aVZlYyBBQkkgZXh0ZW5zaW9ucy4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwNDEtQVJDLWZpeC1zcGVjLWdlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwNDEtQVJDLWZpeC1zcGVjLWdlbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmQ1ZTQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDA0MS1BUkMtZml4LXNwZWMtZ2VuLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gODkyMTQyMzc5YzZiOTlmZThjM2ViZGZlMGI3OWUyYTQzNTIyOGMxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGNsYXppc3MgPGNsYXppc3NAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogTW9uLCAxNyBTZXAgMjAxOCAwODo1MjoxMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBbQVJDXSBVcGRhdGUgTElOS19FSF9TUEVDIGxpbmtlciBzcGVjLgorCitXaXRoIG5vIHRyYWlsaW5nIHNwYWNlIGluIExJTktfRUhfU1BFQyBsaW5rZXIgc3BlYyBnZXRzIGdlbmVyYXRlZCBhczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisleyFyOi0tYnVpbGQtaWR9IC0tZWgtZnJhbWUtaGRyJXtoKn0gLi4uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitvciBldmVuIHdvcnNlIGlmIGhhc2ggc3R5bGUgaXMgYWRkZWQ6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJXshcjotLWJ1aWxkLWlkfSAtLWVoLWZyYW1lLWhkci0taGFzaC1zdHlsZT1zeXN2ICV7aCp9IC4uLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPjgtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm93IGlmIHRoYXQgc3BlYyBpcyByZWFsbHkgdXNlZCBieSBMRCB0aGVuIGl0IGZhaWxzIGluZXZpdGFibHkKK3NheWluZyB0aGF0IGl0IGRvZXNuJ3Qga25vdyBvcHRpb24gIi0tZWgtZnJhbWUtaGRyLS1oYXNoLXN0eWxlPXN5c3YiLgorCisyMDE4LTA5LTE3ICBBbGV4ZXkgQnJvZGtpbiAgPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KKworCSogY29uZmlnL2FyYy9saW51eC5oIChMSU5LX0VIX1NQRUMpOiBBZGQgbWlzc2luZyBzcGFjZS4KKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjY0MzYxIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorCitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2NjLmdudS5vcmcvZ2l0Lz9wPWdjYy5naXQ7YT1jb21taXQ7aD04OTIxNDIzNzljNmJdCistLS0KKyBnY2MvY29uZmlnL2FyYy9saW51eC5oIHwgMiArLQorIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9hcmMvbGludXguaAoraW5kZXggOTZkNTQ4ZWFlMzQxLi42MmViZTRkZTBmYzcgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FyYy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2FyYy9saW51eC5oCitAQCAtOTgsNyArOTgsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIFNpZ25hbGl6ZSB0aGF0IGJlY2F1c2Ugd2UgaGF2ZSBmZGUtZ2xpYmMsIHdlIGRvbid0IG5lZWQgYWxsIEMgc2hhcmVkIGxpYnMKKyAgICBsaW5rZWQgYWdhaW5zdCAtbGdjY19zLiAgKi8KKyAjdW5kZWYgTElOS19FSF9TUEVDCistI2RlZmluZSBMSU5LX0VIX1NQRUMgIi0tZWgtZnJhbWUtaGRyIgorKyNkZWZpbmUgTElOS19FSF9TUEVDICItLWVoLWZyYW1lLWhkciAiCisgI2VuZGlmCisgCisgI3VuZGVmIFNVQlRBUkdFVF9DUFBfU1BFQwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCmluZGV4IGFhM2I1M2UuLjAwZmVjMGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICBpZiBkLmdldFZhcignVFJBTlNMQVRFRF9UQVJHRVRfQVJDSCcpIGluIFsgJ3Bvd2VycGMnLCAncG93ZXJwYzY0JyBdIGFuZCBkLmdldFZhcignVENMSUJDJykgaW4gWyAnZ2xpYmMnIF06CiAgICAgICAgIHJldHVybiAiLS13aXRoLWxvbmctZG91YmxlLTEyOCIKICAgICBlbHNlOgotICAgICAgICByZXR1cm4gIi0td2l0aG91dC1sb25nLWRvdWJsZS0xMjgiCisgICAgICAgIHJldHVybiAiLS13aXRob3V0LWxvbmctZG91YmxlLTEyOCBsaWJnY2NfY3ZfcG93ZXJwY19mbG9hdDEyOD1ubyIKICAgICByZXR1cm4gIiIKIAogZGVmIGdldF9nY2NfbXVsdGlhcmNoX3NldHRpbmcoYmIsIGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCBiZGQ2ZjdlLi4yZjMyZDM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMTYwLDExICsxNjAsNiBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiCiAKLUVYVFJBX09FQ09ORiArPSAiXAotICAgIC0td2l0aC1tcGZyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xheW91dF9leGVjX3ByZWZpeH0gXAotICAgIC0td2l0aC1tcGM9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGF5b3V0X2V4ZWNfcHJlZml4fSBcCi0iCi0KIEVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1iYXJlbWV0YWwgPSAiIC0td2l0aG91dC1oZWFkZXJzIgogRVhUUkFfT0VDT05GX3JlbW92ZV9saWJjLWJhcmVtZXRhbCA9ICItLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IgogRVhUUkFfT0VDT05GX3JlbW92ZV9saWJjLWJhcmVtZXRhbCA9ICItLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNTNjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzguMi5iYgpAQCAtMCwwICsxLDUgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBnY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCisKKworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzczZTVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzguMi5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXyR7UFZ9LmJiCityZXF1aXJlIGdjYy1jcm9zcy1pbml0aWFsLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwppbmRleCAxZTE4NGE2Li44OWIxOTY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwpAQCAtMjgsMTMgKzI4LDEzIEBACiAiCiAKIEVYVFJBX09FQ09ORiArPSAiXAotICAgIC0td2l0aC1tcGZyPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0gXAogICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCiAiCiAKIERFUEVORFNfcmVtb3ZlX2xpYmMtYmFyZW1ldGFsIDo9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWZvci1nY2MiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtYmFyZW1ldGFsID0gIiAtLXdpdGhvdXQtaGVhZGVycyIKIEVYVFJBX09FQ09ORl9yZW1vdmVfbGliYy1iYXJlbWV0YWwgPSAiLS1lbmFibGUtdGhyZWFkcz1wb3NpeCIKK0VYVFJBX09FQ09ORl9yZW1vdmVfbGliYy1uZXdsaWIgPSAiLS1lbmFibGUtdGhyZWFkcz1wb3NpeCIKIAogRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKICAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3Qke3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0M2NjYTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzguMi5iYgpAQCAtMCwwICsxLDMgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBnY2MtY3Jvc3MuaW5jCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF84LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOTBlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfOC4yLmJiCkBAIC0wLDAgKzEsMyBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF8ke1BWfS5iYgorcmVxdWlyZSBnY2MtY3Jvc3NzZGstaW5pdGlhbC5pbmMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka184LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGE2YzRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka184LjIuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc18ke1BWfS5iYgorcmVxdWlyZSBnY2MtY3Jvc3NzZGsuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwppbmRleCA3NjI5ZmE1Li45ZTdlN2M1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTE3LDEzICsxNywxNiBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eHN0ZGJhc2UgPSAiIC0tZW5hYmxlLWNsb2NhbGU9Z251IgogCiBSVU5USU1FTElCSVRNID0gImxpYml0bSIKK1JVTlRJTUVMSUJJVE1fYXJjID0gIiIKIFJVTlRJTUVMSUJJVE1fbWlwc2FyY2ggPSAiIgogUlVOVElNRUxJQklUTV9uaW9zMiA9ICIiCiBSVU5USU1FTElCSVRNX21pY3JvYmxhemUgPSAiIgogUlVOVElNRUxJQklUTV9yaXNjdjMyID0gIiIKIFJVTlRJTUVMSUJJVE1fcmlzY3Y2NCA9ICIiCitSVU5USU1FTElCU1NQID89ICIiCitSVU5USU1FTElCU1NQX21pbmd3MzIgPz0gImxpYnNzcCIKIAotUlVOVElNRVRBUkdFVCA9ICJsaWJzc3AgbGlic3RkYysrLXYzIGxpYmdvbXAgbGliYXRvbWljICR7UlVOVElNRUxJQklUTX0gXAorUlVOVElNRVRBUkdFVCA9ICIke1JVTlRJTUVMSUJTU1B9IGxpYnN0ZGMrKy12MyBsaWJnb21wIGxpYmF0b21pYyAke1JVTlRJTUVMSUJJVE19IFwKICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0ZPUlRSQU4nLCBbJyxmb3J0cmFuJywnLGY3NyddLCAnbGlicXVhZG1hdGgnLCAnJywgZCl9IFwKICIKIFJVTlRJTUVUQVJHRVRfYXBwZW5kX3g4NiA9ICIgbGlibXB4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV84LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjN2E3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV84LjIuYmIKQEAgLTAsMCArMSwxMiBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCityZXF1aXJlIGdjYy1ydW50aW1lLmluYworCisjIERpc2FibGUgaWZ1bmNzIGZvciBsaWJhdG9taWMgb24gYXJtIGNvbmZsaWN0cyAtbWFyY2gvLW1jcHUKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiBsaWJhdF9jdl9oYXZlX2lmdW5jPW5vICIKKworRklMRVNfbGliZ29tcC1kZXYgKz0gIlwKKyAgICAke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9pbmNsdWRlL29wZW5hY2MuaCBcCisiCisKKyMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY2dCBmYWlscworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwppbmRleCAzYjdlMDAyLi5lNWU4NDUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKQEAgLTk0LDYgKzk0LDcgQEAKIEZJTEVTX2xpYmxzYW4tZGV2ICs9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYmxzYW4uc28gXAogICAgICR7bGliZGlyfS9saWJsc2FuLmxhIFwKKyAgICAke2xpYmRpcn0vbGlibHNhbl9wcmVpbml0Lm8gXAogIgogRklMRVNfbGlibHNhbi1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJsc2FuLmEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc184LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYzcwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOC4yLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCityZXF1aXJlIGdjYy1zYW5pdGl6ZXJzLmluYworCisjIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgYXJtdjV0IGZhaWxzIHdpdGgKKyMgc2FuaXRpemVyX2xpbnV4LnM6NTc0OTogRXJyb3I6IGxvIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBsZHIgaXAsW3NwXSwjOCcKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV84LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV84LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg5MGZhMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzguMi5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlLmluYworCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYwppbmRleCBiNmUzMWY1Li5iYzIyMzZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCkBAIC05LDEzICs5LDE3IEBACiAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGludXhzdGRiYXNlID0gIiAtLWVuYWJsZS1jbG9jYWxlPWdudSIKIAotIyBBUk12NisgYWRkcyBhdG9taWMgaW5zdHJ1Y3Rpb25zIHRoYXQgYWZmZWN0IHRoZSBBQkkgaW4gbGlicmFyaWVzIGJ1aWx0Ci0jIHdpdGggVFVORV9DQ0FSR1MgaW4gZ2NjLXJ1bnRpbWUuICBNYWtlIHRoZSBjb21waWxlciBkZWZhdWx0IHRvIGEKLSMgY29tcGF0aWJsZSBhcmNoaXRlY3R1cmUuICBhcm12NiBhbmQgYXJtdjdhIGNvdmVyIHRoZSBtaW5pbXVtIHR1bmUKLSMgZmVhdHVyZXMgdXNlZCBpbiBPRS4KLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjYgPSAiIC0td2l0aC1hcmNoPWFybXY2IgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N2EgPSAiIC0td2l0aC1hcmNoPWFybXY3LWEiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3dmUgPSAiIC0td2l0aC1hcmNoPWFybXY3LWEiCisjIENvbmZpZ3VyZSBnY2MgcnVubmluZyBvbiB0aGUgdGFyZ2V0IHRvIGRlZmF1bHQgdG8gYW4gYXJjaGl0ZWN0dXJlIHdoaWNoIHdpbGwKKyMgYmUgY29tcGF0aWJsZSB3aXRoIHRoYXQgb2YgZ2NjLXJ1bnRpbWUgKHdoaWNoIGlzIGNyb3NzIGNvbXBpbGVkIHRvIGJlIHRhcmdldAorIyBzcGVjaWZpYykuIEZvciBleGFtcGxlLCBmb3IgQVJNLCBBUk12NisgYWRkcyBhdG9taWMgaW5zdHJ1Y3Rpb25zIHRoYXQgbWF5CisjIGFmZmVjdCB0aGUgQUJJIGluIHRoZSBnY2MtcnVudGltZSBsaWJzLiBTaW5jZSB3ZSBjYW4ndCByZWx5IG9uIGdjYyBvbiB0aGUKKyMgdGFyZ2V0IHRvIGFsd2F5cyBiZSBwYXNzZWQgLW1hcmNoIGV0YywgaXRzIGJ1aWx0LWluIGRlZmF1bHQgbmVlZHMgdG8gYmUgc2FmZS4KKworQVJNRlBBUkNIRVhUID89ICIiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjYgPSAiIC0td2l0aC1hcmNoPWFybXY2JHtBUk1GUEFSQ0hFWFR9IgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N2EgPSAiIC0td2l0aC1hcmNoPWFybXY3LWEke0FSTUZQQVJDSEVYVH0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3dmUgPSAiIC0td2l0aC1hcmNoPWFybXY3dmUke0FSTUZQQVJDSEVYVH0iCiAKICMgbGliY2MxIHJlcXVyZXMgZ2NjX2N2X29iamR1bXAgd2hlbiBjcm9zcyBidWlsZCwgYnV0IGdjY19jdl9vYmpkdW1wIGlzCiAjIHNldCBpbiBzdWJkaXIgZ2NjLCBzbyBzdWJkaXIgbGliY2MxIGNhbid0IHVzZSBpdCwgZXhwb3J0IGl0IGhlcmUgdG8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY184LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q5MzU5MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOC4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBnY2MtdGFyZ2V0LmluYworCisjIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgYXJtdjV0IGZhaWxzIHdpdGgKKyMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQzODooLnRleHQudW5saWtlbHkrMHgyZmEpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQVJNX1RITV9DQUxMIGFnYWluc3Qgc3ltYm9sIGBmYW5jeV9hYm9ydChjaGFyIGNvbnN0KiwgaW50LCBjaGFyIGNvbnN0KiknIGRlZmluZWQgaW4gLmdsdWVfNyBzZWN0aW9uIGluIGxpbmtlciBzdHVicworIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDQyOigudGV4dC51bmxpa2VseSsweDMxOCk6IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0FSTUZQQVJDSEVYVF9hcm12NiA9ICIke0AnK2ZwJyBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdoYXJkJyBlbHNlICcnfSIKK0FSTUZQQVJDSEVYVF9hcm12N2EgPSAiJHtAJytmcCcgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnaGFyZCcgZWxzZSAnJ30iCitBUk1GUEFSQ0hFWFRfYXJtdjd2ZSA9ICIke0AnK2ZwJyBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdoYXJkJyBlbHNlICcnfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWNvbW1vbi5pbmMKaW5kZXggODQ4YTQ3Ni4uZDk1OTU2NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtY29tbW9uLmluYwpAQCAtNDcsOCArNDcsMTMgQEAKIGRvX2luc3RhbGxfYXBwZW5kX2xpYmMtYmFyZW1ldGFsICgpIHsKIAlybWRpciAke0R9JHtiYXNlX2xpYmRpcn0KIH0KK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbmV3bGliICgpIHsKKwlybWRpciAke0R9JHtiYXNlX2xpYmRpcn0KK30KIAorIyBObyBycG0gcGFja2FnZSBpcyBhY3R1YWxseSBjcmVhdGVkIGJ1dCAtZGV2IGRlcGVuZHMgb24gaXQsIGF2b2lkIGRuZiBlcnJvcgogUkRFUEVORFNfJHtQTn0tZGV2X2xpYmMtYmFyZW1ldGFsID0gIiIKK1JERVBFTkRTXyR7UE59LWRldl9saWJjLW5ld2xpYiA9ICIiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzY5OGMyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzguMi5iYgpAQCAtMCwwICsxLDUgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBsaWJnY2MtaW5pdGlhbC5pbmMKKworIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjZ0IGZhaWxzCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY184LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEyMTBhMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOC4yLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCityZXF1aXJlIGxpYmdjYy5pbmMKKworIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjZ0IGZhaWxzCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl84LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZGQ4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOC4yLmJiCkBAIC0wLDAgKzEsMyBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCityZXF1aXJlIGxpYmdmb3J0cmFuLmluYworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLjEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTUyOTliLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLjEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2RiL2dkYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2RiLUZpeC1pYTY0LWRlZmluaW5nLVRSQVBfSFdCS1BULWJlZm9yZS1pbmNsdWRpbmctZy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDhjYWM1MjdlNmYzMDE4Yjg2NWVjZTAyMWU5NzIzYWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RiZDVmOTNlMzZiYTI4MTVhZDBlZmFiMDMwZGNkMGM3YjIxMWQ3YjM1M2E0MGE1M2Y0YzAyZDdkNTYyOTVlMyIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYjAwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMi5pbmMKQEAgLTAsMCArMSwyMyBAQAorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisJCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisJCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2RiL2dkYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNWE0OWRiZmYwMGQ5YTg3ZmJlMTE0ZDE0YjMxMDFjMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjM2E0NDFhMjljN2M4OTcyMGI3MzRlNWE5YzYyODljMGEwNmJlN2UwYzc2ZWY1MzhmN2JiY2VmMzg5MzQ3YzM5IgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKaW5kZXggMDM5NTc3Yi4uZmE2NDkzOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYwpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiR05VIGRlYnVnZ2VyIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi8iCiBTRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJleHBhdCB6bGliIG5jdXJzZXMgdmlydHVhbC9saWJpY29udiAke0xUVE5HVVNUfSIKK0RFUEVORFMgPSAiZXhwYXQgemxpYiBuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYgJHtMVFROR1VTVH0gYmlzb24tbmF0aXZlIgogCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9hYXJjaDY0ID0gIiIKQEAgLTIwLDcgKzIwLDcgQEAKIAogRVhQQVQgPSAiLS13aXRoLWV4cGF0IC0td2l0aC1saWJleHBhdC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSIKIAotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nZGJ0ayAtLWRpc2FibGUtdHVpIC0tZGlzYWJsZS14IC0tZGlzYWJsZS13ZXJyb3IgXAorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nZGJ0ayAtLWRpc2FibGUteCAtLWRpc2FibGUtd2Vycm9yIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtY3Vyc2VzIC0tZGlzYWJsZS1tdWx0aWxpYiAtLWRpc2FibGUtc2ltIFwKICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbHptYSAtLXdpdGhvdXQtZ3VpbGUgXAogICAgICAgICAgICAgICAgICR7R0RCUFJPUFJFRklYfSAke0VYUEFUfSBcCkBAIC0zNiw2ICszNiw4IEBACiBQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtc3lzdGVtLXJlYWRsaW5lLC0td2l0aG91dC1zeXN0ZW0tcmVhZGxpbmUscmVhZGxpbmUiCiBQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1dPUktESVJ9L3B5dGhvbiwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbjMscHl0aG9uMyBweXRob24zLWNvZGVjcyIKIFBBQ0tBR0VDT05GSUdbYmFiZWx0cmFjZV0gPSAiLS13aXRoLWJhYmVsdHJhY2UsLS13aXRob3V0LWJhYmVsdHJhY2UsYmFiZWx0cmFjZSIKKyMgbmN1cnNlcyBpcyBhbHJlYWR5IGEgaGFyZCBERVBFTkRTLCBidXQgd291bGQgYmUgYWRkZWQgaGVyZSBpZiBpdCB3ZXJlbid0CitQQUNLQUdFQ09ORklHW3R1aV0gPSAiLS1lbmFibGUtdHVpLC0tZGlzYWJsZS10dWkiCiAKIEdEQlBST1BSRUZJWCA9ICItLXByb2dyYW0tcHJlZml4PScnIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaAppbmRleCA0ZjA2ZDQ2Li4yYzg3ODNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2gKQEAgLTEsMzAgKzEsMjkgQEAKLUZyb20gOTFkYTA0NThiMzMzMjQ5ZWI5YzJmNGMxZjFlNTNmYTRiYzA4NWNjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNmFlMGZiOWI0OTA0N2NlZjMzODI2MmUzMDI3M2Y2MzEzOWZkMTI2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE5IEphbiAyMDE2IDE4OjE4OjUyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIG1vZGVfdAorU3ViamVjdDogW1BBVENIIDAxLzExXSBpbmNsdWRlIHN5cy90eXBlcy5oIGZvciBtb2RlX3QKIAogbW9kZV90IGlzIHVzZWQgaW4gdGFyZ2V0LmgsIHNvIHdlIG5lZWQgdG8gaW5jbHVkZSBzeXMvdHlwZXMuaCB0byBnZXQgdGhlCiBkZWZpbnRpb24KIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQogIGdkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmggfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmggYi9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCi1pbmRleCAzY2MyYmM0YmFiLi5lNmIxOWIwNmI5IDEwMDY0NAoraW5kZXggZmNlNTRlMDVhZC4uMjc4Y2VlNzhhOCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgKICsrKyBiL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgInRhcmdldC93YWl0c3RhdHVzLmgiCitAQCAtMjksNiArMjksNyBAQAogICNpbmNsdWRlICJtZW0tYnJlYWsuaCIKICAjaW5jbHVkZSAiYnRyYWNlLWNvbW1vbi5oIgorICNpbmNsdWRlIDx2ZWN0b3I+CiArI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIAogIHN0cnVjdCBlbWl0X29wczsKICBzdHJ1Y3QgYnVmZmVyOwogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAppbmRleCA4M2M0ZGRlLi42MDQ3OWU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDljZTYxZjk3Yjc3NTg3OTRmMDY4OTRlOTM0ZmJiMjU2ZmY2MjE2M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIwMjA5ZjI4MjcxNmJlZDJjMjMwYzdiNDk2ZmJjYzdhZjUwM2QwY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIG1ha2UgbWFuIGluc3RhbGwgcmVsYXRpdmUgdG8gREVTVERJUgorU3ViamVjdDogW1BBVENIIDAyLzExXSBtYWtlIG1hbiBpbnN0YWxsIHJlbGF0aXZlIHRvIERFU1RESVIKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTExLDcgKzExLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4gYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCi1pbmRleCAzOTQ0OTU2YjVkLi5hYTM1NWU4MzQ3IDEwMDY0NAoraW5kZXggMjI3ZTRjZmJjMi4uOGMzNDU3ZTBiZCAxMDA2NDQKIC0tLSBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KICsrKyBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KIEBAIC0zNSw3ICszNSw3IEBAIHRvb2xkaXIgPSAkKGxpYmRpcikvJCh0YXJnZXRfYWxpYXMpCkBAIC0yNCw1ICsyNCw1IEBACiAgaW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAogIAogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKaW5kZXggNmY3OTU1Yi4uY2Y1NGM3NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gY2EwZWYwNmI3MzIwOTEyZGYzNTBlNzMwZTYzZjliYWZkYWE2ZWE3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjE0YTU3ZDkwZTFjZGQ4MTQ0Y2RhNGM4ODgyYmQxZGI0NGQyNmRhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDIzIE1hciAyMDE2IDA2OjMwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTBdIG1pcHMtbGludXgtbmF0OiBEZWZpbmUgX0FCSU8zMiBpZiBub3QgZGVmaW5lZAorU3ViamVjdDogW1BBVENIIDAzLzExXSBtaXBzLWxpbnV4LW5hdDogRGVmaW5lIF9BQklPMzIgaWYgbm90IGRlZmluZWQKIAogVGhpcyBoZWxwcyBidWlsZGluZyBnZGIgb24gbWlwczY0IG9uIG11c2wsIHNpbmNlCiBtdXNsIGRvZXMgbm90IHByb3ZpZGUgc2dpZGVmcy5oIHRoaXMgZGVmaW5lIGlzCkBAIC05LDI5ICs5LDI3IEBACiBjYXNlIGdjYyBlbWl0cyBpdCBhcyBidWlsdC1pbiBkZWZpbmUgYW5kIGhlbmNlCiBpdCB3b3JrcyBvayBmb3IgbWlwczMyCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisgZ2RiL21pcHMtbGludXgtbmF0LmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCA4MDQxZDg0YmU3Li5mMmRmMWI5OTA3IDEwMDY0NAoraW5kZXggMzI4MzVjMTZiMi4uNjhhNzU4N2FmMiAxMDA2NDQKIC0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCiArKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotQEAgLTQ3LDYgKzQ3LDExIEBACitAQCAtNDEsNiArNDEsMTAgQEAKKyAjaWZuZGVmIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEKICAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKICAjZW5kaWYKLSAKICsvKiBtdXNsIGRvZXMgbm90IGRlZmluZSBhbmQgcmVsaWVzIG9uIGNvbXBpbGVyIGJ1aWx0LWluIG1hY3JvcyBmb3IgaXQgICAqLwogKyNpZm5kZWYgX0FCSU8zMgogKyNkZWZpbmUgX0FCSU8zMiAxCiArI2VuZGlmCi0rCi0gLyogQXNzdW1lIHRoYXQgd2UgaGF2ZSBQVFJBQ0VfR0VUUkVHUyBldCBhbC4gc3VwcG9ydC4gIElmIHdlIGRvIG5vdCwKLSAgICB3ZSdsbCBjbGVhciB0aGlzIGFuZCB1c2UgUFRSQUNFX1BFRUtVU0VSIGluc3RlYWQuICAqLwotIHN0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfcmVnc2V0cyA9IDE7CisgCisgY2xhc3MgbWlwc19saW51eF9uYXRfdGFyZ2V0IGZpbmFsIDogcHVibGljIGxpbnV4X25hdF90cmFkX3RhcmdldAorIHsKIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaAppbmRleCAzNTdkYjI1Li5iYmUwMDIwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMGY2ZDcxMTE4Y2E5MTQwMDJmY2FkNzhkMmM4YTUxODIyM2QwNmJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWRkNWM0NDQ3NGIwMWQ4NGRlNjBmYWRlZDk2MGZlZjRhMGE4N2U0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE4OjMyOjE0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTBdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMKK1N1YmplY3Q6IFtQQVRDSCAwNC8xMV0gcHBjL3B0cmFjZTogRGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzIG9uICFHTElCQwogIHN5c3RlbXMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC0xMyw3ICsxMyw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi1pbmRleCAzM2E5ZmViMTJjLi4xYTkxNDFmYWVmIDEwMDY0NAoraW5kZXggNDc0MjhjMTUyOS4uODQxYTVlMDJiOSAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCiArKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwogQEAgLTIxLDcgKzIxLDEzIEBACkBAIC0yOCwxMCArMjgsMTAgQEAKICsjIHVuZGVmIHB0X3JlZ3MKICsjZW5kaWYKICAKLSAjaW5jbHVkZSAibmF0L3BwYy1saW51eC5oIgotICNpbmNsdWRlICJsaW51eC1wcGMtdGRlc2MuaCIKKyAjaW5jbHVkZSAiYXJjaC9wcGMtbGludXgtY29tbW9uLmgiCisgI2luY2x1ZGUgImFyY2gvcHBjLWxpbnV4LXRkZXNjLmgiCiBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9wcGMtbGludXguaCBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKLWluZGV4IDU4MzdlYTE3NjcuLjcyMzM5MjkxOTIgMTAwNjQ0CitpbmRleCAzZDRkNGZkYzU2Li41YjkzYWY4ZDNhIDEwMDY0NAogLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAogKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAogQEAgLTE4LDcgKzE4LDEzIEBACkBAIC00OSw1ICs0OSw1IEBACiAgCiAgLyogVGhpcyBzb21ldGltZXMgaXNuJ3QgZGVmaW5lZC4gICovCiAtLSAKLTIuMTMuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKaW5kZXggY2IxYjdhYi4uZjg0MGNhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDYwYWM2OGY2MDE4ODVlYTY0ODAyMjlhNWM4YTg5YTAyNTdkYTM3NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIxNTQ4NmI1M2E3YTZkZmNhMDY0Y2QyZTkxOTZhOWRlNmVkNmYwYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjMxOjEyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KK1N1YmplY3Q6IFtQQVRDSCAwNS8xMV0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgogCiBnZGIgKDcuNC0xfmN2czIwMTExMTE3LjIpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKICAuCkBAIC0xNSwzNSArMTUsMzUgQEAKIC0tLQogIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAgZ2RiL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnZGIvc2gtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnZGIvc2gtdGRlcC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTQgKystLQotIGdkYi9zaC10ZGVwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysrCisgZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MyArKy0KKyBnZGIvc2gtdGRlcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIHwgICA1ICsKICBnZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jICAgICAgICAgfCAgIDMgKy0KICBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyAgICAgfCAgIDMgKwogIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKICBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKwotIDExIGZpbGVzIGNoYW5nZWQsIDYxOCBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKyAxMSBmaWxlcyBjaGFuZ2VkLCA2MTcgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDhiZTczYmE0MjMuLmUyODdmZjZhMmUgMTAwNjQ0CitpbmRleCBjNzZhNGU0Mzk0Li45MjFmZGFkYjQ5IDEwMDY0NAogLS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0yNjM4LDYgKzI2MzgsOCBAQCBBTExERVBGSUxFUyA9IFwKK0BAIC0yMzI2LDYgKzIzMjYsOCBAQCBBTExERVBGSUxFUyA9IFwKKyAJc2gtbmJzZC1uYXQuYyBcCiAgCXNoLW5ic2QtdGRlcC5jIFwKICAJc2gtdGRlcC5jIFwKLSAJc2g2NC10ZGVwLmMgXAogKwlzaC1saW51eC10ZGVwLmMgXAogKwlzaC1saW51eC1uYXQuYyBcCiAgCXNvbDItdGRlcC5jIFwKICAJc29saWItYWl4LmMgXAogIAlzb2xpYi1zcHUuYyBcCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCBkNzRmZDA0OTM0Li5iZTEyZGUxNDQ2IDEwMDY0NAoraW5kZXggMjNhMmYxNjM5OS4uMzlhODg2ZWM1MyAxMDA2NDQKIC0tLSBhL2dkYi9jb25maWd1cmUuaG9zdAogKysrIGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1AQCAtMTUwLDYgKzE1MCw3IEBAIHBvd2VycGMqLSotbGludXgqKQlnZGJfaG9zdD1saW51eCA7OworQEAgLTE1Myw2ICsxNTMsNyBAQCByaXNjdiotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7CiAgCiAgczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwogIApAQCAtNTIsNyArNTIsNyBAQAogIAkJCWdkYl9ob3N0PW5ic2QgOzsKICBzaCotKi1vcGVuYnNkKikJCWdkYl9ob3N0PW5ic2QgOzsKIGRpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYwotaW5kZXggYzVjNzQ1ZDIxOC4uODRlNTM5YWFkMyAxMDA2NDQKK2luZGV4IGRiOTM5Njc5MTAuLjQxMDljNTQ5ZTggMTAwNjQ0CiAtLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCiArKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCiBAQCAtMTgsMTQgKzE4LDM3IEBACkBAIC02MDAsNyArNjAwLDcgQEAKICAKICAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKLWluZGV4IDJjMmIyNjg0N2QuLjE0ZjUyODFlZDQgMTAwNjQ0CitpbmRleCBmZTY0Y2Y5NzlhLi40NDE3MTE0Y2QwIDEwMDY0NAogLS0tIGEvZ2RiL3NoLXRkZXAuYwogKysrIGIvZ2RiL3NoLXRkZXAuYwogQEAgLTIxLDYgKzIxLDkgQEAKQEAgLTYxMywxNSArNjEzLDcgQEAKICAjaW5jbHVkZSAiZnJhbWUuaCIKICAjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgogICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLUBAIC0zNSw2ICszOCw3IEBACi0gI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAiZmxvYXRmb3JtYXQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgImRvdWJsZXN0LmgiCi0gI2luY2x1ZGUgIm9zYWJpLmgiCi0gI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotQEAgLTY4LDIzICs3Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7CitAQCAtNjYsMjMgKzY5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNoX2NjX2VudW1bXSA9IHsKICAKICBzdGF0aWMgY29uc3QgY2hhciAqc2hfYWN0aXZlX2NhbGxpbmdfY29udmVudGlvbiA9IHNoX2NjX2djYzsKICAKQEAgLTY0NSw3ICs2MzcsNyBAQAogIHN0YXRpYyBpbnQKICBzaF9pc19yZW5lc2FzX2NhbGxpbmdfY29udmVudGlvbiAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSkKICB7Ci1AQCAtMTA1Miw3ICsxMDM5LDcgQEAgc2hfdHJlYXRfYXNfZmx0X3AgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTEwNTAsNyArMTAzNiw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICAgcmV0dXJuIDA7CiAgICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCiAgICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KQEAgLTY1NCw3ICs2NDYsNyBAQAogICAgICByZXR1cm4gMTsKICAgIC8qIE90aGVyd2lzZSBpdCdzIG5vdCB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KICAgIHJldHVybiAwOwotQEAgLTExMDIsNyArMTA4OSw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTExMDAsNyArMTA4Niw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBsYXN0LiAgKi8KICAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQogICAgICB7CkBAIC02NjMsNyArNjU1LDcgQEAKICAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKICAKLUBAIC0xODI4LDcgKzE4MTUsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAorQEAgLTE4MzQsNyArMTgyMCw3IEBAIHNoX2R3YXJmMl9mcmFtZV9pbml0X3JlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0sCiAgICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19VTkRFRklORUQ7CiAgfQogIApAQCAtNjcyLDcgKzY2NCw3IEBACiAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCiAgewogICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLUBAIC0xODU1LDcgKzE4NDIsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKK0BAIC0xODYxLDcgKzE4NDcsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKICAgIHJldHVybiBjYWNoZTsKICB9CiAgCkBAIC02ODEsNyArNjczLDcgQEAKICBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotQEAgLTE5MjIsOSArMTkwOSw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCitAQCAtMTkyOCw5ICsxOTE0LDkgQEAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKICAgIHJldHVybiBjYWNoZTsKICB9CiAgCkBAIC02OTQsNyArNjg2LDcgQEAKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKICAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPSBzaF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci1AQCAtMTkzOCw3ICsxOTI1LDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCitAQCAtMTk0NCw3ICsxOTMwLDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCiAgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIEZyb2IgcmVnbnVtIHNvIHRoYXQgd2UgcHVsbCB0aGUgdmFsdWUgZnJvbQogICAgICAgdGhlIGNvcnJlY3QgcGxhY2UuICAqLwogICAgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpCkBAIC03MDMsNyArNjk1LDcgQEAKICAKICAgIGlmIChyZWdudW0gPCBTSF9OVU1fUkVHUyAmJiBjYWNoZS0+c2F2ZWRfcmVnc1tyZWdudW1dICE9IC0xKQogICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwKLUBAIC0yMjQ3LDggKzIyMzQsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIyNTUsOCArMjI0MSw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKICBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogIHsKQEAgLTcxMSw5ICs3MDMsOSBAQAogICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcDsKICsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwogIAotICAgLyogU0g1IGlzIGhhbmRsZWQgZW50aXJlbHkgaW4gc2g2NC10ZGVwLmMuICAqLwotICAgaWYgKGluZm8uYmZkX2FyY2hfaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9zaDUpCi1AQCAtMjI2NCw2ICsyMjUxLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCisgICAvKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLCB1c2UgaXQuICAqLworICAgYXJjaGVzID0gZ2RiYXJjaF9saXN0X2xvb2t1cF9ieV9pbmZvIChhcmNoZXMsICZpbmZvKTsKK0BAIC0yMjY4LDYgKzIyNTQsMTggQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKICAgIHRkZXAgPSBYQ05FVyAoc3RydWN0IGdkYmFyY2hfdGRlcCk7CiAgICBnZGJhcmNoID0gZ2RiYXJjaF9hbGxvYyAoJmluZm8sIHRkZXApOwogIApAQCAtNzMyLDcgKzcyNCw3IEBACiAgICBzZXRfZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDIgKiBUQVJHRVRfQ0hBUl9CSVQpOwogICAgc2V0X2dkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CiAgICBzZXRfZ2RiYXJjaF9sb25nX2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7Ci1AQCAtMjQxOCwxMCArMjQxNywxMSBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorQEAgLTI0MjIsMTAgKzI0MjAsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKICAgICAgICBicmVhazsKICAgICAgfQogIApAQCAtNzQ2LDcgKzczOCw3IEBACiAgICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfZnJhbWVfdW53aW5kKTsKICAKIGRpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5oIGIvZ2RiL3NoLXRkZXAuaAotaW5kZXggZDE1ZWYwNTBlMC4uYzQ2NDJjZWZhNCAxMDA2NDQKK2luZGV4IDU5YWNkMzViODguLmJlM2Y5OThkODQgMTAwNjQ0CiAtLS0gYS9nZGIvc2gtdGRlcC5oCiArKysgYi9nZGIvc2gtdGRlcC5oCiBAQCAtMjEsNiArMjEsMTIgQEAKQEAgLTgyOSw3ICs4MjEsNyBAQAogICAgICAgd2hlcmUgZWFjaCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgaXMgc3RvcmVkIGluc2lkZSB0aGUgYXNzb2NpYXRlZAogICAgICAgY29yZSBmaWxlIHNlY3Rpb24uICAqLwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotaW5kZXggZTA3ZTU1NDNmMi4uZjVlNjBlMTAwMiAxMDA2NDQKK2luZGV4IDk4NzlmMGNhNDcuLmNiYzBlNGQ1ZjcgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAogQEAgLTExNiw2ICsxMTYsMTEgQEAgc3dpdGNoIC1nbG9iIC0tIFtpc3RhcmdldF0gewpAQCAtOTE4LDUgKzkxMCw1IEBACiAgc3RhdGljIGludCBjb3VudCA9IDA7CiAgCiAtLSAKLTIuMTMuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKaW5kZXggOGIxMzk1OC4uOWFlM2VlNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDVjOTJlYmQ1ZTExN2U0Y2YxMThjOTg0MTcxZTA3MDNkZmNmYjhjZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDVmZGQ0MmFjYWE5NjViZTdjNDIwYTNmMmJhMTJiNzdlYTUwM2M1OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA2LzEwXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMV0gRG9udCBkaXNhYmxlIGxpYnJlYWRsaW5lLmEgd2hlbiB1c2luZyAtLWRpc2FibGUtc3RhdGljCiAKIElmIGdkYiBpcyBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXN0YXRpYyB0aGVuIHRoaXMgaXMgZHV0aWZ1bGx5IHBhc3NlZCB0bwogcmVhZGxpbmUgd2hpY2ggdGhlbiBkaXNhYmxlcyBsaWJyZWFkbGluZS5hLCB3aGljaCBjYXVzZXMgYSBwcm9ibGVtIHdoZW4gZ2RiCkBAIC0xOSw3ICsxOSw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5kZWYgYi9NYWtlZmlsZS5kZWYKLWluZGV4IDBkMTNmMDM3ZDAuLjhiY2Q4NmUxM2YgMTAwNjQ0CitpbmRleCA3NTA2M2I2ZDEyLi5jMjdiYmU0ZDI4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuZGVmCiArKysgYi9NYWtlZmlsZS5kZWYKIEBAIC0xMDUsNyArMTA1LDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7CkBAIC0zMyw3ICszMyw3IEBACiAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gc2ltOyB9OwogIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHRleGluZm87IG5vX2luc3RhbGw9IHRydWU7IH07CiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggM2FjYjgzYjhkZS4uZTM0ODkwNzEyOCAxMDA2NDQKK2luZGV4IDc4MTRmZTc0NWYuLjNiMGRjN2NiYjAgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5pbgogKysrIGIvTWFrZWZpbGUuaW4KIEBAIC0yNTQ3MCw3ICsyNTQ3MCw3IEBAIGNvbmZpZ3VyZS1yZWFkbGluZToKQEAgLTQ2LDUgKzQ2LDUgQEAKICBAZW5kaWYgcmVhZGxpbmUKICAKIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCmluZGV4IDMzYjRjMzAuLjgwOGY0YmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDEyYTBiOGQ4MWUxZmRhNmJhOThhYmRjZThkNmYwOWY5NTU1ZWJjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ2ZTEyZDUyZjljZWY3ZjVlNjMxNTAwM2NlYWEyMzZmNmNjNzcyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIHVzZSA8YXNtL3NnaWRlZnMuaD4KK1N1YmplY3Q6IFtQQVRDSCAwNy8xMV0gdXNlIDxhc20vc2dpZGVmcy5oPgogCiBCdWlsZCBmaXggZm9yIE1JUFMgd2l0aCBtdXNsIGxpYmMKIApAQCAtMTksNyArMTksNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotaW5kZXggZjJkZjFiOTkwNy4uZDI0NjY0Y2I1NiAxMDA2NDQKK2luZGV4IDY4YTc1ODdhZjIuLjJiNzcyMjEzNzIgMTAwNjQ0CiAtLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYwogKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKIEBAIC0zMSw3ICszMSw3IEBACkBAIC0zMiw1ICszMiw1IEBACiAgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KICAjaW5jbHVkZSAiaW5mLXB0cmFjZS5oIgogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKaW5kZXggNGY2NGRlYS4uZDMyMzUyYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDNmMjQwYjM4ZWVkN2NkMDhmNmM1MGVhODk2NTcyZjEzMjdiNDM3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDk3ODc4YjI3MmJkN2M0OTkzZjQyMDU5ODNhZThiN2VjZGRiY2Y4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjMxOjQwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTBdIFVzZSBleG9ydGVkIGRlZmluaXRpb25zIG9mIFNJR1JUTUlOCitTdWJqZWN0OiBbUEFUQ0ggMDgvMTFdIFVzZSBleG9ydGVkIGRlZmluaXRpb25zIG9mIFNJR1JUTUlOCiAKIERlZmluZSBXX1NUT1BDT0RFIGlmIG5vdCBkZWZpbmVkIGFscmVhZHkKIApAQCAtMjAsMTAgKzIwLDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLWluZGV4IDhiMjkyNDVjM2QuLmY0MjRhZTk3MTEgMTAwNjQ0CitpbmRleCA2NDAxNWU3NTIwLi5hY2Y5NTBjMzhiIDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiArKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC01MDIxLDYgKzUwMjEsNiBAQCBsaW5fdGhyZWFkX2dldF90aHJlYWRfc2lnbmFscyAoc2lnc2V0X3QgKnNldCkKK0BAIC00NzI0LDYgKzQ3MjQsNiBAQCBsaW5fdGhyZWFkX2dldF90aHJlYWRfc2lnbmFscyAoc2lnc2V0X3QgKnNldCkKICAgIC8qIE5QVEwgcmVzZXJ2ZXMgdGhlIGZpcnN0IHR3byBSVCBzaWduYWxzLCBidXQgZG9lcyBub3QgcHJvdmlkZSBhbnkKICAgICAgIHdheSBmb3IgdGhlIGRlYnVnZ2VyIHRvIHF1ZXJ5IHRoZSBzaWduYWwgbnVtYmVycyAtIGZvcnR1bmF0ZWx5CiAgICAgICB0aGV5IGRvbid0IGNoYW5nZS4gICovCkBAIC0zMyw3ICszMyw3IEBACiArICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4gKyAxKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1uYXQuaCBiL2dkYi9uYXQvbGludXgtbmF0LmgKLWluZGV4IDdkZDE4ZmVmZmYuLjM1MTM3YWIzNGYgMTAwNjQ0CitpbmRleCBhOTBhMTI0ZDNhLi40ZjNlNjgxOTYyIDEwMDY0NAogLS0tIGEvZ2RiL25hdC9saW51eC1uYXQuaAogKysrIGIvZ2RiL25hdC9saW51eC1uYXQuaAogQEAgLTkwLDQgKzkwLDggQEAgZXh0ZXJuIHZvaWQgbGludXhfc3RvcF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKQEAgLTQ2LDUgKzQ2LDUgQEAKICsKICAjZW5kaWYgLyogTElOVVhfTkFUX0ggKi8KIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAppbmRleCAwYzEwM2VmLi5iYzRiYzI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gM2Y1NDAzNmI4OTEwNTQwNzJiM2U0M2VhOGRhYWE1N2FhMzY3YjJlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmE2ZmZhNDYxZmU3ODFkNDRkNmRjYmMwZmJkNTY5MjM3YjQ1MGZkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTBdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKK1N1YmplY3Q6IFtQQVRDSCAwOS8xMV0gQ2hhbmdlIG9yZGVyIG9mIENGTEFHUwogCiBMZXRzIHVzIG92ZXJyaWRlIFdlcnJvciBpZiBuZWVkIGJlCiAKQEAgLTEzLDEwICsxMywxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLWluZGV4IDAxZGZkYzBiODkuLmY2YWViZWY0NjQgMTAwNjQ0CitpbmRleCBmMmY4YTA4NGJkLi45NTI4ZGIxMzY0IDEwMDY0NAogLS0tIGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotQEAgLTE0MCw3ICsxNDAsNyBAQCBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0BAIC0xNDMsNyArMTQzLDcgQEAgQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACiAgSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAke0NYWEZMQUdTfSAke0dMT0JBTF9DRkxBR1N9IFwKICAJJHtQUk9GSUxFX0NGTEFHU30gJHtJTkNMVURFX0NGTEFHU30gJHtDUFBGTEFHU30KICBJTlRFUk5BTF9XQVJOX0NGTEFHUyA9ICR7SU5URVJOQUxfQ0ZMQUdTX0JBU0V9ICQoV0FSTl9DRkxBR1MpCkBAIC0yNiw1ICsyNiw1IEBACiAgIyBMREZMQUdTIGlzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3Igc2V0dGluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKICAjIHdoZW4gcnVubmluZyBtYWtlLgogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaAppbmRleCBjOTUwNzEwLi44MDlkNTJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNlYWQwZGQxNDM1MjFiMGJhNjljOWU3NTNiYzRhMjM2Zjk0NDVhZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDE5YjU4MTA1NmMxNzA5ZjdkMjg3MmNkNzZiOTc3NTQyYTBmZTYxNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxMCBNYXkgMjAxNiAwODo0NzowNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEwLzEwXSByZXNvbHZlIHJlc3RyaWN0IGtleXdvcmQgY29uZmxpY3QKK1N1YmplY3Q6IFtQQVRDSCAxMC8xMV0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0CiAKIEdDQyBkZXRlY3RzIHRoYXQgd2UgY2FsbCAncmVzdHJpY3QnIGFzIHBhcmFtIG5hbWUgaW4gZnVuY3Rpb24KIHNpZ25hdHVyZXMgYW5kIGNvbXBsYWlucyBzaW5jZSBib3RoIHBhcmFtcyBhcmUgY2FsbGVkICdyZXN0cmljdCcKQEAgLTE1LDcgKzE1LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCBiL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKLWluZGV4IGQ1MzVhNmE0OGIuLjdjMzRkNWExYWEgMTAwNjQ0CitpbmRleCBiNGEwZTQ5YzUwLi5kMjJjZWE5YWFmIDEwMDY0NAogLS0tIGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAogKysrIGIvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAogQEAgLTkzLDIwICs5MywyMCBAQCBzdHJ1Y3QgdGltZXZhbApAQCAtNDQsNSArNDQsNSBAQAogIF9HTF9DWFhBTElBU1dBUk4gKGdldHRpbWVvZmRheSk7CiAgIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZTAyNWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGIxOTg1NTk1ZTQ2NzIxYmIxNjhhYzM4ZjRjODQxYTkxNWNjMmY3OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZb3Vzb25nIFpob3UgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgTWFyIDIwMTcgMTA6MzY6MDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGUgUE9TSVggZG9jdW1lbnQgc2F5cworCisgICAgVGhlIHB0aHJlYWRfc2lnbWFzaygpIGFuZCBzaWdwcm9jbWFzaygpIGZ1bmN0aW9ucyBzaGFsbCBmYWlsIGlmOgorCisgICAgW0VJTlZBTF0KKyAgICBUaGUgdmFsdWUgb2YgdGhlIGhvdyBhcmd1bWVudCBpcyBub3QgZXF1YWwgdG8gb25lIG9mIHRoZSBkZWZpbmVkIHZhbHVlcy4KKworYW5kIHRoaXMgaXMgaG93IG11c2wtbGliYyBpcyBjdXJyZW50bHkgZG9pbmcuICBGaXggdGhlIGNhbGwgdG8gYmUgc2FmZQorYW5kIGNvcnJlY3QKKworIFsxXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvcHRocmVhZF9zaWdtYXNrLmh0bWwKKworZ2RiL0NoYW5nZUxvZzoKKzIwMTctMDMtMjQgIFlvdXNvbmcgWmhvdSAgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KKworICAgICogY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgKHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSk6CisgICAgRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtub3QgYXV0aG9yLCBjaGVycnktcGlja2VkIGZyb20gTEVERSBodHRwczovL2J1Z3MubGVkZS1wcm9qZWN0Lm9yZy9pbmRleC5waHA/ZG89ZGV0YWlscyZ0YXNrX2lkPTYzNyZvcGVuZWRmcm9tPS0xJTJCd2Vla10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKK2luZGV4IDViYjY2MzIxYmIuLjY1OTdkZWNiYzYgMTAwNjQ0CistLS0gYS9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKKysrKyBiL2dkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYworQEAgLTQxLDcgKzQxLDcgQEAgc2F2ZV9vcmlnaW5hbF9zaWduYWxzX3N0YXRlIChib29sIHF1aWV0KQorICAgaW50IGk7CisgICBpbnQgcmVzOworIAorLSAgcmVzID0gc2lncHJvY21hc2sgKDAsICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOworKyAgcmVzID0gc2lncHJvY21hc2sgKFNJR19CTE9DSywgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7CisgICBpZiAocmVzID09IC0xKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lICgoInNpZ3Byb2NtYXNrIikpOworIAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThhM2NlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi1Gcm9tIDNlMWU0MDEwNTNlYTVmMDJhOWU5YzY1YWJkZGQzMWEwM2JhYTFiZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZYW8gUWkgPHlhby5xaUBsaW5hcm8ub3JnPgotRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxMjo1NzoyNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBVbmJyZWFrIEdEQnNlcnZlciBidWlsZCBmb3IgeDMyCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVdoZW4gSSB2ZXJpZnkgbXkgdGFyZ2V0IGRlc2NyaXB0aW9uIGNoYW5nZXMsIEkgYnVpbGQgR0RCIGFuZCBHREJzZXJ2ZXIgZm9yCi14MzIsIGJ1dCBpdCBmYWlsZWQuCi0KLS8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYwotLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmM6IEluIGZ1bmN0aW9uIOKAmGNvbnN0IHRhcmdldF9kZXNjKiBnZXRfaXBhX3RkZXNjKGludCnigJk6Ci0uLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzoxODQ6MTA6IGVycm9yOiDigJhYODZfVERFU0NfQVZYNTEy4oCZIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQotICAgICBjYXNlIFg4Nl9UREVTQ19BVlg1MTI6Ci0gICAgICAgICAgXgotLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmM6MTg1OjE0OiBlcnJvcjog4oCYdGRlc2NfeDMyX2F2eDUxMl9saW51eOKAmSB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKLSAgICAgICByZXR1cm4gdGRlc2NfeDMyX2F2eDUxMl9saW51eDsKLSAgICAgICAgICAgICAgXgotLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmM6IEluIGZ1bmN0aW9uIOKAmHZvaWQgaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCgp4oCZOgotLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmM6MjgyOjM2OiBlcnJvcjog4oCYaW5pdF9yZWdpc3RlcnNfeDMyX2F2eDUxMl9saW51eOKAmSB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKLSAgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdng1MTJfbGludXggKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0KLWlwYV94MzJfbGludXhfcmVnb2JqIHVzZSB0byBiZSB0aGVyZSwgYnV0IHJlbW92ZWQgYnkKLTIyMDQ5NDI1Y2U0MDMyNDEzOWJlODJkOWE2ZWM1MThjNDZiNjU4MTUgYnkgbWlzdGFrZS4KLQotZ2RiL2dkYnNlcnZlcjoKLQotMjAxNy0wOC0wNCAgWWFvIFFpICA8eWFvLnFpQGxpbmFyby5vcmc+Ci0KLSAgICAgICAgKiBjb25maWd1cmUuc3J2IChpcGFfeDMyX2xpbnV4X3JlZ29iaik6IE5ldy4KLSAgICAgICAgKiBsaW51eC1hbWQ2NC1pcGEuYyAoZ2V0X2lwYV90ZGVzYyk6IFVzZSBYODZfVERFU0NfQVZYX0FWWDUxMgotICAgICAgICBpbnN0ZWFkIG9mIFg4Nl9UREVTQ19BVlg1MTIuCi0gICAgICAgIChpbml0aWFsaXplX2xvd190cmFjZXBvaW50KTogQ2FsbAotICAgICAgICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2F2eDUxMl9saW51eC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWJpbnV0aWxzLWdkYi5naXQ7YT1jb21taXRkaWZmO2g9ZjAyZmQ3NzQ1ZDAwM2Q2NWZkM2I5ODE2MThlMDdiODc0YjcyMWQ3OV0KLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCA4ICsrKysrKysrCi0gZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2ICAgICB8IDEgKwotIGdkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMgfCA2ICsrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggNGFjMmQ2My4uYjViODIyOCAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rIDIwMTctMDgtMDQgIFlhbyBRaSAgPHlhby5xaUBsaW5hcm8ub3JnPgotKwotKwkqIGNvbmZpZ3VyZS5zcnYgKGlwYV94MzJfbGludXhfcmVnb2JqKTogTmV3LgotKwkqIGxpbnV4LWFtZDY0LWlwYS5jIChnZXRfaXBhX3RkZXNjKTogVXNlIFg4Nl9UREVTQ19BVlhfQVZYNTEyCi0rCWluc3RlYWQgb2YgWDg2X1RERVNDX0FWWDUxMi4KLSsJKGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQpOiBDYWxsCi0rCWluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfYXZ4NTEyX2xpbnV4LgotKwotIDIwMTctMDQtMTMgIEFuZHJldyBKZW5uZXIgIDxhbmRyZXdAY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBjb25maWcuc3ViOiBTeW5jIHdpdGggbWFzdGVyIHZlcnNpb24gaW4gY29uZmlnIHByb2plY3QuCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2IGIvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2Ci1pbmRleCBkMDBkOWUyLi41Njk1MWM4IDEwMDY0NAotLS0tIGEvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2Ci0rKysgYi9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYKLUBAIC0zMSw2ICszMSw3IEBAIHNydl9hbWQ2NF9saW51eF9yZWdvYmo9ImFtZDY0LWxpbnV4Lm8gYW1kNjQtYXZ4LWxpbnV4Lm8gYW1kNjQtYXZ4LWF2eDUxMi1saW51eC5vCi0gCi0gaXBhX2kzODZfbGludXhfcmVnb2JqPSJpMzg2LWxpbnV4LWlwYS5vIGkzODYtYXZ4LWxpbnV4LWlwYS5vICBpMzg2LWF2eC1tcHgtbGludXgtaXBhLm8gaTM4Ni1hdngtYXZ4NTEyLWxpbnV4LWlwYS5vIGkzODYtYXZ4LW1weC1hdng1MTItcGt1LWxpbnV4LWlwYS5vIGkzODYtbXB4LWxpbnV4LWlwYS5vIGkzODYtbW14LWxpbnV4LWlwYS5vIgotIGlwYV9hbWQ2NF9saW51eF9yZWdvYmo9ImFtZDY0LWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1saW51eC1pcGEubyBhbWQ2NC1hdngtbXB4LWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1hdng1MTItbGludXgtaXBhLm8gYW1kNjQtYXZ4LW1weC1hdng1MTItcGt1LWxpbnV4LWlwYS5vIGFtZDY0LW1weC1saW51eC1pcGEubyIKLStpcGFfeDMyX2xpbnV4X3JlZ29iaj0ieDMyLWxpbnV4LWlwYS5vIHgzMi1hdngtbGludXgtaXBhLm8geDMyLWF2eC1hdng1MTItbGludXgtaXBhLm8iCi0gaXBhX3BwY19saW51eF9yZWdvYmo9InBvd2VycGMtMzJsLWlwYS5vIHBvd2VycGMtYWx0aXZlYzMybC1pcGEubyBwb3dlcnBjLWNlbGwzMmwtaXBhLm8gcG93ZXJwYy12c3gzMmwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtMzJsLWlwYS5vIHBvd2VycGMtaXNhMjA1LWFsdGl2ZWMzMmwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtdnN4MzJsLWlwYS5vIHBvd2VycGMtZTUwMGwtaXBhLm8gcG93ZXJwYy02NGwtaXBhLm8gcG93ZXJwYy1hbHRpdmVjNjRsLWlwYS5vIHBvd2VycGMtY2VsbDY0bC1pcGEubyBwb3dlcnBjLXZzeDY0bC1pcGEubyBwb3dlcnBjLWlzYTIwNS02NGwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtYWx0aXZlYzY0bC1pcGEubyBwb3dlcnBjLWlzYTIwNS12c3g2NGwtaXBhLm8iCi0gCi0gc3J2X2kzODZfMzJiaXRfeG1sZmlsZXM9ImkzODYvMzJiaXQtY29yZS54bWwgaTM4Ni8zMmJpdC1zc2UueG1sIGkzODYvMzJiaXQtYXZ4LnhtbCBpMzg2LzMyYml0LWF2eDUxMi54bWwgaTM4Ni8zMmJpdC1tcHgueG1sIGkzODYvMzJiaXQtcGtleXMueG1sIgotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCi1pbmRleCA2N2YzNmMyLi42ODMzMzliIDEwMDY0NAotLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYwotQEAgLTE4MSw4ICsxODEsOCBAQCBnZXRfaXBhX3RkZXNjIChpbnQgaWR4KQotICAgICAgIHJldHVybiB0ZGVzY194MzJfbGludXg7Ci0gICAgIGNhc2UgWDg2X1RERVNDX0FWWDoKLSAgICAgICByZXR1cm4gdGRlc2NfeDMyX2F2eF9saW51eDsKLS0gICAgY2FzZSBYODZfVERFU0NfQVZYNTEyOgotLSAgICAgIHJldHVybiB0ZGVzY194MzJfYXZ4NTEyX2xpbnV4OwotKyAgICBjYXNlIFg4Nl9UREVTQ19BVlhfQVZYNTEyOgotKyAgICAgIHJldHVybiB0ZGVzY194MzJfYXZ4X2F2eDUxMl9saW51eDsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBicmVhazsKLSAgICAgfQotQEAgLTI3OSw3ICsyNzksNyBAQCBpbml0aWFsaXplX2xvd190cmFjZXBvaW50ICh2b2lkKQotICNpZiBkZWZpbmVkIF9fSUxQMzJfXwotICAgaW5pdF9yZWdpc3RlcnNfeDMyX2xpbnV4ICgpOwotICAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9saW51eCAoKTsKLS0gIGluaXRfcmVnaXN0ZXJzX3gzMl9hdng1MTJfbGludXggKCk7Ci0rICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2F2eDUxMl9saW51eCAoKTsKLSAjZWxzZQotICAgaW5pdF9yZWdpc3RlcnNfYW1kNjRfbGludXggKCk7Ci0gICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9hdnhfbGludXggKCk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZ2RiLUZpeC1pYTY0LWRlZmluaW5nLVRSQVBfSFdCS1BULWJlZm9yZS1pbmNsdWRpbmctZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZ2RiLUZpeC1pYTY0LWRlZmluaW5nLVRSQVBfSFdCS1BULWJlZm9yZS1pbmNsdWRpbmctZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY5N2RlNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL2dkYi1GaXgtaWE2NC1kZWZpbmluZy1UUkFQX0hXQktQVC1iZWZvcmUtaW5jbHVkaW5nLWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGIwMzNhOTY2MzA1M2VlZDg3Y2I1NzIzOTcxNzY3NDdiODhlOWE2OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW1lcyBDbGFya2UgPGpydGMyN0BqcnRjMjcuY29tPgotRGF0ZTogRnJpLCAxOSBKYW4gMjAxOCAxNzoyMjo0OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBnZGI6IEZpeCBpYTY0IGRlZmluaW5nIFRSQVBfSFdCS1BUIGJlZm9yZSBpbmNsdWRpbmcKLSBnZGJfd2FpdC5oCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLU9uIGlhNjQsIGdkYl93YWl0LmggZXZlbnR1YWxseSBpbmNsdWRlcyBzaWdpbmZvLWNvbnN0cy1hcmNoLmgsIHdoaWNoCi1jb250YWlucyBhbiBlbnVtIHdpdGggVFJBUF9IV0JLUFQsIGFsb25nIHdpdGggYSAjZGVmaW5lLiBUaHVzIHdlIGNhbm5vdAotZGVmaW5lIFRSQVBfSFdCS1BUIHRvIDQgYmVmb3JlaGFuZCwgYW5kIHNvIGdkYl93YWl0LmggbXVzdCBiZSBpbmNsdWRlZAotZWFybGllcjsgaW5jbHVkZSBpdCBmcm9tIGxpbnV4LXB0cmFjZS5oIHNvIGl0IGNhbiBuZXZlciBjb21lIGFmdGVyd2FyZHMuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLQkqIG5hdC9saW51eC1wdHJhY2UuYzogUmVtb3ZlIHVubmVjZXNzYXJ5IHJlaW5jbHVzaW9uIG9mCi0JZ2RiX3B0cmFjZS5oLCBhbmQgbW92ZSBpbmNsdWRpbmcgZ2RiX3dhaXQuaCAuLi4KLQkqIG5hdC9saW51eC1wdHJhY2UuaDogLi4uIHRvIGhlcmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1iaW51dGlscy1nZGIuZ2l0O2E9Y29tbWl0O2g9NWE2YzMyOTZhN2E5MDY5NGFkNDA0MmY2MjU2ZjNkYTZkNGZhNGVlOF0KLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIETDrWF6IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgotLS0tCi0gZ2RiL25hdC9saW51eC1wdHJhY2UuYyB8IDIgLS0KLSBnZGIvbmF0L2xpbnV4LXB0cmFjZS5oIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtcHRyYWNlLmMgYi9nZGIvbmF0L2xpbnV4LXB0cmFjZS5jCi1pbmRleCAzMjY1YjE2Li41NTljMmRlIDEwMDY0NAotLS0tIGEvZ2RiL25hdC9saW51eC1wdHJhY2UuYwotKysrIGIvZ2RiL25hdC9saW51eC1wdHJhY2UuYwotQEAgLTIxLDggKzIxLDYgQEAKLSAjaW5jbHVkZSAibGludXgtcHJvY2ZzLmgiCi0gI2luY2x1ZGUgImxpbnV4LXdhaXRwaWQuaCIKLSAjaW5jbHVkZSAiYnVmZmVyLmgiCi0tI2luY2x1ZGUgImdkYl93YWl0LmgiCi0tI2luY2x1ZGUgImdkYl9wdHJhY2UuaCIKLSAjaWZkZWYgSEFWRV9TWVNfUFJPQ0ZTX0gKLSAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgotICNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtcHRyYWNlLmggYi9nZGIvbmF0L2xpbnV4LXB0cmFjZS5oCi1pbmRleCA1OTU0OTQ1Li42ZmFhODliIDEwMDY0NAotLS0tIGEvZ2RiL25hdC9saW51eC1wdHJhY2UuaAotKysrIGIvZ2RiL25hdC9saW51eC1wdHJhY2UuaAotQEAgLTIxLDYgKzIxLDcgQEAKLSBzdHJ1Y3QgYnVmZmVyOwotIAotICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgotKyNpbmNsdWRlICJnZGJfd2FpdC5oIgotIAotICNpZmRlZiBfX1VDTElCQ19fCi0gI2lmICEoZGVmaW5lZChfX1VDTElCQ19IQVNfTU1VX18pIHx8IGRlZmluZWQoX19BUkNIX0hBU19NTVVfXykpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWZlN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi9nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgcHJvYmxlbSB3YXMgY3JlYXRlZCBieSB0aGUgdXBzdHJlYW0gY29tbWl0IDc4NzA4YjdjOGMKK0FmdGVyIGFwcGx5aW5nIHRoZSBjb21taXQsIGl0IHdpbGwgc2VuZCBTSUdJTlQgdG8gdGhlIHByb2Nlc3MgZ3JvdXAoLXNpZ25hbF9waWQpLgorQnV0IGlmIHdlIHVzZSBnZGJzZXJ2ZXIgc2VuZCBTSUdJTlQsIGFuZCB0aGUgYXR0YWNoZWQgcHJvY2VzcyBpcyBub3QgYSBwcm9jZXNzCitncm91cCBsZWFkZXIsIHRoZW4gdGhlICJraWxsICgtc2lnbmFsX3BpZCwgU0lHSU5UKSIgcmV0dXJucyBlcnJvciBhbmQgZmFpbHMgIHRvCitpbnRlcnJ1cHQgdGhlIGF0dGFjaGVkIHByb2Nlc3MuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODk0NV0KKworQXV0aG9yOiBKb3NoIEdhbworU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGdkYi04LjIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi04LjIub3JpZy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCisrKysgZ2RiLTguMi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCitAQCAtNTk0MCw5ICs1OTQwLDcgQEAgbGludXhfbG9va191cF9zeW1ib2xzICh2b2lkKQorIHN0YXRpYyB2b2lkCisgbGludXhfcmVxdWVzdF9pbnRlcnJ1cHQgKHZvaWQpCisgeworLSAgLyogU2VuZCBhIFNJR0lOVCB0byB0aGUgcHJvY2VzcyBncm91cC4gIFRoaXMgYWN0cyBqdXN0IGxpa2UgdGhlIHVzZXIKKy0gICAgIHR5cGVkIGEgXkMgb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLiAgKi8KKy0gIGtpbGwgKC1zaWduYWxfcGlkLCBTSUdJTlQpOworKyAga2lsbCAoc2lnbmFsX3BpZCwgU0lHSU5UKTsKKyB9CisgCisgLyogQ29weSBMRU4gYnl0ZXMgZnJvbSBpbmZlcmlvcidzIGF1eGlsaWFyeSB2ZWN0b3Igc3RhcnRpbmcgYXQgT0ZGU0VUCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTQ4NGY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA1Njg5M2E2MWFhNGYwMjcwZmE4ZDExOTdiOTg0ODI0N2Y5MGZjZTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI0IE1hciAyMDE3IDEwOjM2OjAzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwKLQotVGhlIFBPU0lYIGRvY3VtZW50IHNheXMKLQotICAgIFRoZSBwdGhyZWFkX3NpZ21hc2soKSBhbmQgc2lncHJvY21hc2soKSBmdW5jdGlvbnMgc2hhbGwgZmFpbCBpZjoKLQotICAgIFtFSU5WQUxdCi0gICAgVGhlIHZhbHVlIG9mIHRoZSBob3cgYXJndW1lbnQgaXMgbm90IGVxdWFsIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCB2YWx1ZXMuCi0KLWFuZCB0aGlzIGlzIGhvdyBtdXNsLWxpYmMgaXMgY3VycmVudGx5IGRvaW5nLiAgRml4IHRoZSBjYWxsIHRvIGJlIHNhZmUKLWFuZCBjb3JyZWN0Ci0KLSBbMV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3B0aHJlYWRfc2lnbWFzay5odG1sCi0KLWdkYi9DaGFuZ2VMb2c6Ci0yMDE3LTAzLTI0ICBZb3Vzb25nIFpob3UgIDx5c3pob3U0dGVjaEBnbWFpbC5jb20+Ci0KLSAgICAqIGNvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIChzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUpOgotICAgIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwuCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbm90IGF1dGhvciwgY2hlcnJ5LXBpY2tlZCBmcm9tIExFREUgaHR0cHM6Ly9idWdzLmxlZGUtcHJvamVjdC5vcmcvaW5kZXgucGhwP2RvPWRldGFpbHMmdGFza19pZD02Mzcmb3BlbmVkZnJvbT0tMSUyQndlZWtdCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0gZ2RiL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSArKysrKwotIGdkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIGIvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi1pbmRleCBkMTFhOWFlLi43MzQzMzVjIDEwMDY0NAotLS0tIGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi0rKysgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLUBAIC00MSw3ICs0MSw3IEBAIHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSAodm9pZCkKLSAgIGludCBpOwotICAgaW50IHJlczsKLSAKLS0gIHJlcyA9IHNpZ3Byb2NtYXNrICgwLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKLSsgIHJlcyA9IHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOwotICAgaWYgKHJlcyA9PSAtMSkKLSAgICAgcGVycm9yX3dpdGhfbmFtZSAoKCJzaWdwcm9jbWFzayIpKTsKLSAKLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOGZlZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLXJlcXVpcmUgZ2RiLmluYwotcmVxdWlyZSBnZGItJHtQVn0uaW5jCi0KLWluaGVyaXQgcHl0aG9uMy1kaXIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9bm8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLQkJY2F0ID4gJHtXT1JLRElSfS9weXRob24gPDwgRU9GCi0jIS9iaW4vc2gKLWNhc2UgIlwkMiIgaW4KLQktLWluY2x1ZGVzKSBlY2hvICItSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9LyIgOzsKLQktLWxkZmxhZ3MpIGVjaG8gIi1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSfS8uLiAtV2wsLXJwYXRoLCR7bGliZGlyfS8uLiAtbHB0aHJlYWQgLWxkbCAtbHV0aWwgLWxtIC1scHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfSIgOzsKLQktLWV4ZWMtcHJlZml4KSBlY2hvICIke2V4ZWNfcHJlZml4fSIgOzsKLQkqKSBleGl0IDEgOzsKLWVzYWMKLWV4aXQgMAotRU9GCi0JCWNobW9kICt4ICR7V09SS0RJUn0vcHl0aG9uCi0JZmkKLX0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHJwbF9nZXR0aW1lb2ZkYXk9Z2V0dGltZW9mZGF5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmVhYzg0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjIuYmIKQEAgLTAsMCArMSwyOSBAQAorcmVxdWlyZSBnZGIuaW5jCityZXF1aXJlIGdkYi0ke1BWfS5pbmMKKworaW5oZXJpdCBweXRob24zLWRpcgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3M9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9bm8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KKwkJY2F0ID4gJHtXT1JLRElSfS9weXRob24gPDwgRU9GCisjIS9iaW4vc2gKK2Nhc2UgIlwkMiIgaW4KKwktLWluY2x1ZGVzKSBlY2hvICItSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9LyIgOzsKKwktLWxkZmxhZ3MpIGVjaG8gIi1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSfS8uLiAtV2wsLXJwYXRoLCR7bGliZGlyfS8uLiAtbHB0aHJlYWQgLWxkbCAtbHV0aWwgLWxtIC1scHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfSIgOzsKKwktLWV4ZWMtcHJlZml4KSBlY2hvICIke2V4ZWNfcHJlZml4fSIgOzsKKwkqKSBleGl0IDEgOzsKK2VzYWMKK2V4aXQgMAorRU9GCisJCWNobW9kICt4ICR7V09SS0RJUn0vcHl0aG9uCisJZmkKK30KK0NQUEZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EcnBsX2dldHRpbWVvZmRheT1nZXR0aW1lb2ZkYXkgLURycGxfc3RhdD1zdGF0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2ZpbGVzL0NWRS0yMDE4LTExMjMzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2ZpbGVzL0NWRS0yMDE4LTExMjMzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDQ2OGNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9maWxlcy9DVkUtMjAxOC0xMTIzMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gMDE0MjgxZTYyYjc5MjBhNmQ3MTBhODUwODllMDBjYTAxMmIwNzQ0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEplZmYgS2luZyA8cGVmZkBwZWZmLm5ldD4KLURhdGU6IFN1biwgMTMgTWF5IDIwMTggMTI6MDk6NDIgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gaXNfbnRmc19kb3RnaXQ6IHVzZSBhIHNpemVfdCBmb3IgdHJhdmVyc2luZyBzdHJpbmcKLQotV2Ugd2FsayB0aHJvdWdoIHRoZSAibmFtZSIgc3RyaW5nIHVzaW5nIGFuIGludCwgd2hpY2ggY2FuCi13cmFwIHRvIGEgbmVnYXRpdmUgdmFsdWUgYW5kIGNhdXNlIHVzIHRvIHJlYWQgcmFuZG9tIG1lbW9yeQotYmVmb3JlIG91ciBhcnJheSAoZS5nLiwgYnkgY3JlYXRpbmcgYSB0cmVlIHdpdGggYSBuYW1lID4yR0IsCi1zaW5jZSAiaW50IiBpcyBzdGlsbCAzMiBiaXRzIGV2ZW4gb24gbW9zdCA2NC1iaXQgcGxhdGZvcm1zKS4KLVdvcnNlLCB0aGlzIGlzIGVhc3kgdG8gdHJpZ2dlciBkdXJpbmcgdGhlIGZzY2tfdHJlZSgpIGNoZWNrLAotd2hpY2ggaXMgc3VwcG9zZWQgdG8gYmUgcHJvdGVjdGluZyB1cyBmcm9tIG1hbGljaW91cwotZ2FyYmFnZS4KLQotTm90ZSBvbmUgYml0IG9mIHRyaWNraW5lc3MgaW4gdGhlIGV4aXN0aW5nIGNvZGU6IHdlCi1zb21ldGltZXMgYXNzaWduIC0xIHRvICJsZW4iIGF0IHRoZSBlbmQgb2YgdGhlIGxvb3AsIGFuZAotdGhlbiByZWx5IG9uIHRoZSAibGVuKysiIGluIHRoZSBmb3ItbG9vcCdzIGluY3JlbWVudCB0byB0YWtlCi1pdCBiYWNrIHRvIDAuIFRoaXMgaXMgc3RpbGwgbGVnYWwgd2l0aCBhIHNpemVfdCwgc2luY2UKLWFzc2lnbmluZyAtMSB3aWxsIHR1cm4gaW50byBTSVpFX01BWCwgd2hpY2ggdGhlbiB3cmFwcwotYXJvdW5kIHRvIDAgb24gaW5jcmVtZW50LgotCi1TaWduZWQtb2ZmLWJ5OiBKZWZmIEtpbmcgPHBlZmZAcGVmZi5uZXQ+Ci1DVkU6IENWRS0yMDE4LTExMjMzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0aHViLmNvbS9naXQvZ2l0L2NvbW1pdC8xMWE5ZjRkODA3YTBkNzFkYzZlZmY1MWJiODdiYWY0Y2EyY2NjZjFkXQotU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KLS0tLQotIHBhdGguYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BhdGguYyBiL3BhdGguYwotaW5kZXggZGE4YjY1NTczLi5kMzFjNzk1ZmYgMTAwNjQ0Ci0tLS0gYS9wYXRoLmMKLSsrKyBiL3BhdGguYwotQEAgLTEzMDUsNyArMTMwNSw3IEBAIHN0YXRpYyBpbnQgb25seV9zcGFjZXNfYW5kX3BlcmlvZHMoY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90IGxlbiwgc2l6ZV90IHNraXApCi0gCi0gaW50IGlzX250ZnNfZG90Z2l0KGNvbnN0IGNoYXIgKm5hbWUpCi0gewotLQlpbnQgbGVuOwotKwlzaXplX3QgbGVuOwotIAotIAlmb3IgKGxlbiA9IDA7IDsgbGVuKyspCi0gCQlpZiAoIW5hbWVbbGVuXSB8fCBuYW1lW2xlbl0gPT0gJ1xcJyB8fCBpc19kaXJfc2VwKG5hbWVbbGVuXSkpIHsKLS0tIAotMi4xOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9maWxlcy9DVkUtMjAxOC0xMTIzNS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9maWxlcy9DVkUtMjAxOC0xMTIzNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI3MmVhYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZmlsZXMvQ1ZFLTIwMTgtMTEyMzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotRnJvbSAwMzgzYmJiOTAxNTg5OGNiYzc5YWJkN2I2NDMxNjQ4NGQ3NzEzYjQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmVmZiBLaW5nIDxwZWZmQHBlZmYubmV0PgotRGF0ZTogTW9uLCAzMCBBcHIgMjAxOCAwMzoyNToyNSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBzdWJtb2R1bGUtY29uZmlnOiB2ZXJpZnkgc3VibW9kdWxlIG5hbWVzIGFzIHBhdGhzCi0KLVN1Ym1vZHVsZSAibmFtZXMiIGNvbWUgZnJvbSB0aGUgdW50cnVzdGVkIC5naXRtb2R1bGVzIGZpbGUsCi1idXQgd2UgYmxpbmRseSBhcHBlbmQgdGhlbSB0byAkR0lUX0RJUi9tb2R1bGVzIHRvIGNyZWF0ZSBvdXIKLW9uLWRpc2sgcmVwbyBwYXRocy4gVGhpcyBtZWFucyB5b3UgY2FuIGRvIGJhZCB0aGluZ3MgYnkKLXB1dHRpbmcgIi4uLyIgaW50byB0aGUgbmFtZSAoYW1vbmcgb3RoZXIgdGhpbmdzKS4KLQotTGV0J3Mgc2FuaXR5LWNoZWNrIHRoZXNlIG5hbWVzIHRvIGF2b2lkIGJ1aWxkaW5nIGEgcGF0aCB0aGF0Ci1jYW4gYmUgZXhwbG9pdGVkLiBUaGVyZSBhcmUgdHdvIG1haW4gZGVjaXNpb25zOgotCi0gIDEuIFdoYXQgc2hvdWxkIHRoZSBhbGxvd2VkIHN5bnRheCBiZT8KLQotICAgICBJdCdzIHRlbXB0aW5nIHRvIHJldXNlIHZlcmlmeV9wYXRoKCksIHNpbmNlIHN1Ym1vZHVsZQotICAgICBuYW1lcyB0eXBpY2FsbHkgY29tZSBmcm9tIGluLXJlcG8gcGF0aHMuIEJ1dCB0aGVyZSBhcmUKLSAgICAgdHdvIHJlYXNvbnMgbm90IHRvOgotCi0gICAgICAgYS4gSXQncyB0ZWNobmljYWxseSBtb3JlIHN0cmljdCB0aGFuIHdoYXQgd2UgbmVlZCwgYXMKLSAgICAgICAgICB3ZSByZWFsbHkgY2FyZSBvbmx5IGFib3V0IGJyZWFraW5nIG91dCBvZiB0aGUKLSAgICAgICAgICAkR0lUX0RJUi9tb2R1bGVzLyBoaWVyYXJjaHkuICBFLmcuLCBoYXZpbmcgYQotICAgICAgICAgIHN1Ym1vZHVsZSBuYW1lZCAiZm9vLy5naXQiIGlzbid0IGFjdHVhbGx5Ci0gICAgICAgICAgZGFuZ2Vyb3VzLCBhbmQgaXQncyBwb3NzaWJsZSB0aGF0IHNvbWVib2R5IGhhcwotICAgICAgICAgIG1hbnVhbGx5IGdpdmVuIHN1Y2ggYSBmdW5ueSBuYW1lLgotCi0gICAgICAgYi4gU2luY2Ugd2UnbGwgZXZlbnR1YWxseSB1c2UgdGhpcyBjaGVja2luZyBsb2dpYyBpbgotICAgICAgICAgIGZzY2sgdG8gcHJldmVudCBkb3duc3RyZWFtIHJlcG9zaXRvcmllcywgaXQgc2hvdWxkCi0gICAgICAgICAgYmUgY29uc2lzdGVudCBhY3Jvc3MgcGxhdGZvcm1zLiBCZWNhdXNlCi0gICAgICAgICAgdmVyaWZ5X3BhdGgoKSByZWxpZXMgb24gaXNfZGlyX3NlcCgpLCBpdCB3b3VsZG4ndAotICAgICAgICAgIGJsb2NrICJmb29cLi5cYmFyIiBvbiBhIG5vbi1XaW5kb3dzIG1hY2hpbmUuCi0KLSAgMi4gV2hlcmUgc2hvdWxkIHdlIGVuZm9yY2UgaXQ/IFRoZXNlIGRheXMgbW9zdCBvZiB0aGUKLSAgICAgLmdpdG1vZHVsZXMgcmVhZHMgZ28gdGhyb3VnaCBzdWJtb2R1bGUtY29uZmlnLmMsIHNvCi0gICAgIEkndmUgcHV0IGl0IHRoZXJlIGluIHRoZSByZWFkaW5nIHN0ZXAuIFRoYXQgc2hvdWxkCi0gICAgIGNvdmVyIGFsbCBvZiB0aGUgQyBjb2RlLgotCi0gICAgIFdlIGFsc28gY29uc3RydWN0IHRoZSBuYW1lIGZvciAiZ2l0IHN1Ym1vZHVsZSBhZGQiCi0gICAgIGluc2lkZSB0aGUgZ2l0LXN1Ym1vZHVsZS5zaCBzY3JpcHQuIFRoaXMgaXMgcHJvYmFibHkKLSAgICAgbm90IGEgYmlnIGRlYWwgZm9yIHNlY3VyaXR5IHNpbmNlIHRoZSBuYW1lIGlzIGNvbWluZwotICAgICBmcm9tIHRoZSB1c2VyIGFueXdheSwgYnV0IGl0IHdvdWxkIGJlIHBvbGl0ZSB0byByZW1pbmQKLSAgICAgdGhlbSBpZiB0aGUgbmFtZSB0aGV5IHBpY2sgaXMgaW52YWxpZCAoYW5kIHdlIG5lZWQgdG8KLSAgICAgZXhwb3NlIHRoZSBuYW1lLWNoZWNrZXIgdG8gdGhlIHNoZWxsIGFueXdheSBmb3Igb3VyCi0gICAgIHRlc3Qgc2NyaXB0cykuCi0KLSAgICAgVGhpcyBwYXRjaCBpc3N1ZXMgYSB3YXJuaW5nIHdoZW4gcmVhZGluZyAuZ2l0bW9kdWxlcwotICAgICBhbmQganVzdCBpZ25vcmVzIHRoZSByZWxhdGVkIGNvbmZpZyBlbnRyeSBjb21wbGV0ZWx5LgotICAgICBUaGlzIHdpbGwgZ2VuZXJhbGx5IGVuZCB1cCBwcm9kdWNpbmcgYSBzZW5zaWJsZSBlcnJvciwKLSAgICAgYXMgaXQgd29ya3MgdGhlIHNhbWUgYXMgYSAuZ2l0bW9kdWxlcyBmaWxlIHdoaWNoIGlzCi0gICAgIG1pc3NpbmcgYSBzdWJtb2R1bGUgZW50cnkgKHNvICJzdWJtb2R1bGUgdXBkYXRlIiB3aWxsCi0gICAgIGJhcmYsIGJ1dCAiZ2l0IGNsb25lIC0tcmVjdXJzZS1zdWJtb2R1bGVzIiB3aWxsIHByaW50Ci0gICAgIGFuIGVycm9yIGJ1dCBub3QgYWJvcnQgdGhlIGNsb25lLgotCi0gICAgIFRoZXJlIGlzIG9uZSBtaW5vciBvZGRpdHksIHdoaWNoIGlzIHRoYXQgd2UgcHJpbnQgdGhlCi0gICAgIHdhcm5pbmcgb25jZSBwZXIgbWFsZm9ybWVkIGNvbmZpZyBrZXkgKHNpbmNlIHRoYXQncyBob3cKLSAgICAgdGhlIGNvbmZpZyBzdWJzeXN0ZW0gZ2l2ZXMgdXMgdGhlIGVudHJpZXMpLiBTbyBpbiB0aGUKLSAgICAgbmV3IHRlc3QsIGZvciBleGFtcGxlLCB0aGUgdXNlciB3b3VsZCBzZWUgdGhyZWUKLSAgICAgd2FybmluZ3MuIFRoYXQncyBPSywgc2luY2UgdGhlIGludGVudCBpcyB0aGF0IHRoaXMgY2FzZQotICAgICBzaG91bGQgbmV2ZXIgY29tZSB1cCBvdXRzaWRlIG9mIG1hbGljaW91cyByZXBvc2l0b3JpZXMKLSAgICAgKGFuZCB0aGVuIGl0IG1pZ2h0IGV2ZW4gYmVuZWZpdCB0aGUgdXNlciB0byBzZWUgdGhlCi0gICAgIG1lc3NhZ2UgbXVsdGlwbGUgdGltZXMpLgotCi1DcmVkaXQgZm9yIGZpbmRpbmcgdGhpcyB2dWxuZXJhYmlsaXR5IGFuZCB0aGUgcHJvb2Ygb2YKLWNvbmNlcHQgZnJvbSB3aGljaCB0aGUgdGVzdCBzY3JpcHQgd2FzIGFkYXB0ZWQgZ29lcyB0bwotRXRpZW5uZSBTdGFsbWFucy4KLQotQ1ZFOiBDVkUtMjAxOC0xMTIzNQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2dpdHN0ZXIvZ2l0L2NvbW1pdC8wMzgzYmJiOTAxNTg5OGNiYzc5YWJkN2I2NDMxNjQ4NGQ3NzEzYjQ0I2RpZmYtMTc3MmI5NTE3NzZkMTY0N2NhMzFhMjI1NmY3ZmU4OGZdCi0KLVNpZ25lZC1vZmYtYnk6IEplZmYgS2luZyA8cGVmZkBwZWZmLm5ldD4KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGJ1aWx0aW4vc3VibW9kdWxlLS1oZWxwZXIuYyB8IDI0ICsrKysrKysrKysrKysrCi0gZ2l0LXN1Ym1vZHVsZS5zaCAgICAgICAgICAgIHwgIDUgKysrCi0gc3VibW9kdWxlLWNvbmZpZy5jICAgICAgICAgIHwgMzEgKysrKysrKysrKysrKysrKysrCi0gc3VibW9kdWxlLWNvbmZpZy5oICAgICAgICAgIHwgIDcgKysrKysKLSB0L3Q3NDE1LXN1Ym1vZHVsZS1uYW1lcy5zaCAgfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNzU1IHQvdDc0MTUtc3VibW9kdWxlLW5hbWVzLnNoCi0KLWRpZmYgLS1naXQgYS9idWlsdGluL3N1Ym1vZHVsZS0taGVscGVyLmMgYi9idWlsdGluL3N1Ym1vZHVsZS0taGVscGVyLmMKLWluZGV4IGNiYjE3YTkwMi4uYjRiNGQyOWQ4IDEwMDY0NAotLS0tIGEvYnVpbHRpbi9zdWJtb2R1bGUtLWhlbHBlci5jCi0rKysgYi9idWlsdGluL3N1Ym1vZHVsZS0taGVscGVyLmMKLUBAIC0xNDgwLDYgKzE0ODAsMjkgQEAgc3RhdGljIGludCBpc19hY3RpdmUoaW50IGFyZ2MsIGNvbnN0IGNoYQotIAlyZXR1cm4gIWlzX3N1Ym1vZHVsZV9hY3RpdmUodGhlX3JlcG9zaXRvcnksIGFyZ3ZbMV0pOwotIH0KLSAKLSsvKgotKyAqIEV4aXQgbm9uLXplcm8gaWYgYW55IG9mIHRoZSBzdWJtb2R1bGUgbmFtZXMgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSBpcwotKyAqIGludmFsaWQuIElmIG5vIG5hbWVzIGFyZSBnaXZlbiwgZmlsdGVyIHN0ZGluIHRvIHByaW50IG9ubHkgdmFsaWQgbmFtZXMKLSsgKiAod2hpY2ggaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciB0ZXN0aW5nKS4KLSsgKi8KLStzdGF0aWMgaW50IGNoZWNrX25hbWUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCi0rewotKwlpZiAoYXJnYyA+IDEpIHsKLSsJCXdoaWxlICgqKythcmd2KSB7Ci0rCQkJaWYgKGNoZWNrX3N1Ym1vZHVsZV9uYW1lKCphcmd2KSA8IDApCi0rCQkJCXJldHVybiAxOwotKwkJfQotKwl9IGVsc2UgewotKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLSsJCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzdGRpbikgIT0gRU9GKSB7Ci0rCQkJaWYgKCFjaGVja19zdWJtb2R1bGVfbmFtZShidWYuYnVmKSkKLSsJCQkJcHJpbnRmKCIlc1xuIiwgYnVmLmJ1Zik7Ci0rCQl9Ci0rCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLSsJfQotKwlyZXR1cm4gMDsKLSt9Ci0rCi0gI2RlZmluZSBTVVBQT1JUX1NVUEVSX1BSRUZJWCAoMTw8MCkKLSAKLSBzdHJ1Y3QgY21kX3N0cnVjdCB7Ci1AQCAtMTUwMiw2ICsxNTI1LDcgQEAgc3RhdGljIHN0cnVjdCBjbWRfc3RydWN0IGNvbW1hbmRzW10gPSB7Ci0gCXsicHVzaC1jaGVjayIsIHB1c2hfY2hlY2ssIDB9LAotIAl7ImFic29yYi1naXQtZGlycyIsIGFic29yYl9naXRfZGlycywgU1VQUE9SVF9TVVBFUl9QUkVGSVh9LAotIAl7ImlzLWFjdGl2ZSIsIGlzX2FjdGl2ZSwgMH0sCi0rCXsiY2hlY2stbmFtZSIsIGNoZWNrX25hbWUsIDB9LAotIH07Ci0gCi0gaW50IGNtZF9zdWJtb2R1bGVfX2hlbHBlcihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKLWRpZmYgLS1naXQgYS9naXQtc3VibW9kdWxlLnNoIGIvZ2l0LXN1Ym1vZHVsZS5zaAotaW5kZXggYzBkMGU5YTRjLi45Mjc1MGI5ZTIgMTAwNzU1Ci0tLS0gYS9naXQtc3VibW9kdWxlLnNoCi0rKysgYi9naXQtc3VibW9kdWxlLnNoCi1AQCAtMjI5LDYgKzIyOSwxMSBAQCBVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCBpdC4iID4mCi0gCQlzbV9uYW1lPSIkc21fcGF0aCIKLSAJZmkKLSAKLSsJaWYgISBnaXQgc3VibW9kdWxlLS1oZWxwZXIgY2hlY2stbmFtZSAiJHNtX25hbWUiCi0rCXRoZW4KLSsJCWRpZSAiJChldmFsX2dldHRleHQgIickc21fbmFtZScgaXMgbm90IGEgdmFsaWQgc3VibW9kdWxlIG5hbWUiKSIKLSsJZmkKLSsKLSAJIyBwZXJoYXBzIHRoZSBwYXRoIGV4aXN0cyBhbmQgaXMgYWxyZWFkeSBhIGdpdCByZXBvLCBlbHNlIGNsb25lIGl0Ci0gCWlmIHRlc3QgLWUgIiRzbV9wYXRoIgotIAl0aGVuCi1kaWZmIC0tZ2l0IGEvc3VibW9kdWxlLWNvbmZpZy5jIGIvc3VibW9kdWxlLWNvbmZpZy5jCi1pbmRleCA0ZjU4NDkxZGQuLmRlNTQzNTFjNiAxMDA2NDQKLS0tLSBhL3N1Ym1vZHVsZS1jb25maWcuYwotKysrIGIvc3VibW9kdWxlLWNvbmZpZy5jCi1AQCAtMTkwLDYgKzE5MCwzMSBAQCBzdGF0aWMgc3RydWN0IHN1Ym1vZHVsZSAqY2FjaGVfbG9va3VwX25hCi0gCXJldHVybiBOVUxMOwotIH0KLSAKLStpbnQgY2hlY2tfc3VibW9kdWxlX25hbWUoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rCS8qIERpc2FsbG93IGVtcHR5IG5hbWVzICovCi0rCWlmICghKm5hbWUpCi0rCQlyZXR1cm4gLTE7Ci0rCi0rCS8qCi0rCSAqIExvb2sgZm9yICcuLicgYXMgYSBwYXRoIGNvbXBvbmVudC4gQ2hlY2sgYm90aCAnLycgYW5kICdcXCcgYXMKLSsJICogc2VwYXJhdG9ycyByYXRoZXIgdGhhbiBpc19kaXJfc2VwKCksIGJlY2F1c2Ugd2Ugd2FudCB0aGUgbmFtZSBydWxlcwotKwkgKiB0byBiZSBjb25zaXN0ZW50IGFjcm9zcyBwbGF0Zm9ybXMuCi0rCSAqLwotKwlnb3RvIGluX2NvbXBvbmVudDsgLyogYWx3YXlzIHN0YXJ0IGluc2lkZSBjb21wb25lbnQgKi8KLSsJd2hpbGUgKCpuYW1lKSB7Ci0rCQljaGFyIGMgPSAqbmFtZSsrOwotKwkJaWYgKGMgPT0gJy8nIHx8IGMgPT0gJ1xcJykgewotK2luX2NvbXBvbmVudDoKLSsJCQlpZiAobmFtZVswXSA9PSAnLicgJiYgbmFtZVsxXSA9PSAnLicgJiYKLSsJCQkgICAgKCFuYW1lWzJdIHx8IG5hbWVbMl0gPT0gJy8nIHx8IG5hbWVbMl0gPT0gJ1xcJykpCi0rCQkJCXJldHVybiAtMTsKLSsJCX0KLSsJfQotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0gc3RhdGljIGludCBuYW1lX2FuZF9pdGVtX2Zyb21fdmFyKGNvbnN0IGNoYXIgKnZhciwgc3RydWN0IHN0cmJ1ZiAqbmFtZSwKLSAJCQkJICBzdHJ1Y3Qgc3RyYnVmICppdGVtKQotIHsKLUBAIC0yMDEsNiArMjI2LDEyIEBAIHN0YXRpYyBpbnQgbmFtZV9hbmRfaXRlbV9mcm9tX3Zhcihjb25zdAotIAkJcmV0dXJuIDA7Ci0gCi0gCXN0cmJ1Zl9hZGQobmFtZSwgc3Vic2VjdGlvbiwgc3Vic2VjdGlvbl9sZW4pOwotKwlpZiAoY2hlY2tfc3VibW9kdWxlX25hbWUobmFtZS0+YnVmKSA8IDApIHsKLSsJCXdhcm5pbmcoXygiaWdub3Jpbmcgc3VzcGljaW91cyBzdWJtb2R1bGUgbmFtZTogJXMiKSwgbmFtZS0+YnVmKTsKLSsJCXN0cmJ1Zl9yZWxlYXNlKG5hbWUpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSAJc3RyYnVmX2FkZHN0cihpdGVtLCBrZXkpOwotIAotIAlyZXR1cm4gMTsKLWRpZmYgLS1naXQgYS9zdWJtb2R1bGUtY29uZmlnLmggYi9zdWJtb2R1bGUtY29uZmlnLmgKLWluZGV4IGQ0MzRlY2RiNC4uMTAzY2M3OWRkIDEwMDY0NAotLS0tIGEvc3VibW9kdWxlLWNvbmZpZy5oCi0rKysgYi9zdWJtb2R1bGUtY29uZmlnLmgKLUBAIC00OCw0ICs0OCwxMSBAQCBleHRlcm4gY29uc3Qgc3RydWN0IHN1Ym1vZHVsZSAqc3VibW9kdWxlCi0gCQkJCQkJICAgIGNvbnN0IGNoYXIgKmtleSk7Ci0gZXh0ZXJuIHZvaWQgc3VibW9kdWxlX2ZyZWUodm9pZCk7Ci0gCi0rLyoKLSsgKiBSZXR1cm5zIDAgaWYgdGhlIG5hbWUgaXMgc3ludGFjdGljYWxseSBhY2NlcHRhYmxlIGFzIGEgc3VibW9kdWxlICJuYW1lIgotKyAqIChlLmcuLCB0aGF0IG1heSBiZSBmb3VuZCBpbiB0aGUgc3Vic2VjdGlvbiBvZiBhIC5naXRtb2R1bGVzIGZpbGUpIGFuZCAtMQotKyAqIG90aGVyd2lzZS4KLSsgKi8KLStpbnQgY2hlY2tfc3VibW9kdWxlX25hbWUoY29uc3QgY2hhciAqbmFtZSk7Ci0rCi0gI2VuZGlmIC8qIFNVQk1PRFVMRV9DT05GSUdfSCAqLwotZGlmZiAtLWdpdCBhL3QvdDc0MTUtc3VibW9kdWxlLW5hbWVzLnNoIGIvdC90NzQxNS1zdWJtb2R1bGUtbmFtZXMuc2gKLW5ldyBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCAwMDAwMDAwMDAuLjc1ZmEwNzFjNgotLS0tIC9kZXYvbnVsbAotKysrIGIvdC90NzQxNS1zdWJtb2R1bGUtbmFtZXMuc2gKLUBAIC0wLDAgKzEsNzYgQEAKLSsjIS9iaW4vc2gKLSsKLSt0ZXN0X2Rlc2NyaXB0aW9uPSdjaGVjayBoYW5kbGluZyBvZiAuLiBpbiBzdWJtb2R1bGUgbmFtZXMKLSsKLStFeGVyY2lzZSB0aGUgbmFtZS1jaGVja2luZyBmdW5jdGlvbiBvbiBhIHZhcmlldHkgb2YgbmFtZXMsIGFuZCB0aGVuIGdpdmUgYQotK3JlYWwtd29ybGQgc2V0dXAgdGhhdCBjb25maXJtcyB3ZSBjYXRjaCB0aGlzIGluIHByYWN0aWNlLgotKycKLSsuIC4vdGVzdC1saWIuc2gKLSsKLSt0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBuYW1lcycgJwotKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCi0rCXZhbGlkCi0rCXZhbGlkL3dpdGgvcGF0aHMKLSsJRU9GCi0rCi0rCWdpdCBzdWJtb2R1bGUtLWhlbHBlciBjaGVjay1uYW1lID5hY3R1YWwgPDwtXEVPRiAmJgotKwl2YWxpZAotKwl2YWxpZC93aXRoL3BhdGhzCi0rCi0rCS4uL2ZvbwotKwkvLi4vZm9vCi0rCS4uXGZvbwotKwlcLi5cZm9vCi0rCWZvby8uLgotKwlmb28vLi4vCi0rCWZvb1wuLgotKwlmb29cLi5cCi0rCWZvby8uLi9iYXIKLSsJRU9GCi0rCi0rCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKLSsnCi0rCi0rdGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGlubm9jZW50IHN1YnJlcG8nICcKLSsJZ2l0IGluaXQgaW5ub2NlbnQgJiYKLSsJZ2l0IC1DIGlubm9jZW50IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGZvbwotKycKLSsKLSt0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgYWRkIHJlZnVzZXMgaW52YWxpZCBuYW1lcycgJwotKwl0ZXN0X211c3RfZmFpbCBcCi0rCQlnaXQgc3VibW9kdWxlIGFkZCAtLW5hbWUgLi4vLi4vbW9kdWxlcy9ldmlsICIkUFdEL2lubm9jZW50IiBldmlsCi0rJwotKwotK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBldmlsIHN1Ym1vZHVsZScgJwotKwlnaXQgc3VibW9kdWxlIGFkZCAiJFBXRC9pbm5vY2VudCIgZXZpbCAmJgotKwotKwlta2RpciBtb2R1bGVzICYmCi0rCWNwIC1yIC5naXQvbW9kdWxlcy9ldmlsIG1vZHVsZXMgJiYKLSsJd3JpdGVfc2NyaXB0IG1vZHVsZXMvZXZpbC9ob29rcy9wb3N0LWNoZWNrb3V0IDw8LVxFT0YgJiYKLSsJZWNobyA+JjIgIlJVTk5JTkcgUE9TVCBDSEVDS09VVCIKLSsJRU9GCi0rCi0rCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLmV2aWwudXBkYXRlIGNoZWNrb3V0ICYmCi0rCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgLS1yZW5hbWUtc2VjdGlvbiBcCi0rCQlzdWJtb2R1bGUuZXZpbCBzdWJtb2R1bGUuLi4vLi4vbW9kdWxlcy9ldmlsICYmCi0rCWdpdCBhZGQgbW9kdWxlcyAmJgotKwlnaXQgY29tbWl0IC1hbSBldmlsCi0rJwotKwotKyMgVGhpcyBzdGVwIHNlZW1zIGxpa2UgaXQgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgc2luY2UgdGhlIHBheWxvYWQgaXMKLSsjIGNvbnRhaW5lZCBlbnRpcmVseSBpbiB0aGUgZXZpbCBzdWJtb2R1bGUuIEJ1dCBkdWUgdG8gdGhlIHZhZ2FyaWVzIG9mIHRoZQotKyMgc3VibW9kdWxlIGNvZGUsIGNoZWNraW5nIG91dCB0aGUgZXZpbCBtb2R1bGUgd2lsbCBmYWlsIHVubGVzcyAiLmdpdC9tb2R1bGVzIgotKyMgZXhpc3RzLiBBZGRpbmcgYW5vdGhlciBzdWJtb2R1bGUgKHdpdGggYSBuYW1lIHRoYXQgc29ydHMgYmVmb3JlICJldmlsIikgaXMgYW4KLSsjIGVhc3kgd2F5IHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBjYXNlIGluIHRoZSB2aWN0aW0gY2xvbmUuCi0rdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIG90aGVyIHN1Ym1vZHVsZScgJwotKwlnaXQgc3VibW9kdWxlIGFkZCAiJFBXRC9pbm5vY2VudCIgYW5vdGhlci1tb2R1bGUgJiYKLSsJZ2l0IGFkZCBhbm90aGVyLW1vZHVsZSAmJgotKwlnaXQgY29tbWl0IC1hbSBhbm90aGVyCi0rJwotKwotK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIGV2aWwgc3VwZXJwcm9qZWN0JyAnCi0rCWdpdCBjbG9uZSAtLXJlY3Vyc2Utc3VibW9kdWxlcyAuIHZpY3RpbSA+b3V0cHV0IDI+JjEgJiYKLSsJISBncmVwICJSVU5OSU5HIFBPU1QgQ0hFQ0tPVVQiIG91dHB1dAotKycKLSsKLSt0ZXN0X2RvbmUKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKaW5kZXggODYwM2MwNC4uMjZhMjJhYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTcsOSArNyw3IEBACiBQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnaXQtcmVwbGFjZW1lbnQtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvc2NtL2dpdC9naXQtJHtQVn0udGFyLmd6O25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgICR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvc2NtL2dpdC9naXQtbWFucGFnZXMtJHtQVn0udGFyLmd6O25hbWU9bWFucGFnZXMgXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTEyMzUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTEyMzMucGF0Y2giCisgICAgICAgICAgICR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvc2NtL2dpdC9naXQtbWFucGFnZXMtJHtQVn0udGFyLmd6O25hbWU9bWFucGFnZXMiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQtJHtQVn0iCiAKQEAgLTU0LDEzICs1Miw2IEBACiAJICAgICAgIC1lICdzIyR7bGliZGlyfS9wZXJsLW5hdGl2ZS8jJHtsaWJkaXJ9LyMnIFwKIAkgICAgJHtAZC5nZXRWYXIoIlBFUkxUT09MUyIpLnJlcGxhY2UoJyAvJyxkLmdldFZhcignRCcpICsgJy8nKX0KIAotCSMgJHtsaWJkaXJ9IGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUsIHBlcmwtbmF0aXZlIGZpbGVzIGFyZSBhbHdheXMKLQkjIGluc3RhbGxlZCB0byAvdXNyL2xpYiBvbiBib3RoIDMyLzY0IGJpdHMgdGFyZ2V0cy4KLQotCW1rZGlyIC1wICR7RH0ke2xpYmRpcn0KLQltdiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3BlcmwtbmF0aXZlL3BlcmwgJHtEfSR7bGliZGlyfQotCXJtZGlyIC1wICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvcGVybC1uYXRpdmUgfHwgdHJ1ZQotCiAJaWYgWyAhICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnY3Zzc2VydmVyJywgZCl9IiBdOyB0aGVuCiAJCSMgT25seSBpbnN0YWxsIHRoZSBnaXQgY3Zzc2VydmVyIGNvbW1hbmQgaWYgZXhwbGljaXRseSByZXF1ZXN0ZWQKIAkJIyBhcyBpdCByZXF1aXJlcyB0aGUgREJJIFBlcmwgbW9kdWxlLCB3aGljaCBkb2VzIG5vdCBleGlzdCBpbgpAQCAtNzQsOCArNjUsNyBAQAogCQkjIGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGFzIHRoZXkgcmVxdWlyZSB0aGUgU1ZOOjpDb3JlIFBlcmwKIAkJIyBtb2R1bGUsIHdoaWNoIGRvZXMgbm90IGV4aXN0IGluIE9FLUNvcmUuCiAJCXJtIC1yICR7RH0ke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1zdm4gXAotCQkgICAgICAke0R9JHtsaWJkaXJ9L3Blcmwvc2l0ZV9wZXJsLyovR2l0L1NWTioKLQkJc2VkIC1pIC1lICcvU1ZOL2QnICR7RH0ke2xpYmRpcn0vcGVybC9zaXRlX3BlcmwvKi9hdXRvL0dpdC8ucGFja2xpc3QKKwkJICAgICAgJHtEfSR7ZGF0YWRpcn0vcGVybDUvR2l0L1NWTioKIAlmaQogfQogCkBAIC0xMjYsNyArMTE2LDcgQEAKIEZJTEVTXyR7UE59LXBlcmx0b29scyArPSAiIFwKICAgICAke1BFUkxUT09MU30gXAogICAgICR7bGliZGlyfS9wZXJsIFwKLSAgICAke2RhdGFkaXJ9L3BlcmwgXAorICAgICR7ZGF0YWRpcn0vcGVybDUgXAogIgogCiBSREVQRU5EU18ke1BOfS1wZXJsdG9vbHMgPSAiJHtQTn0gcGVybCBwZXJsLW1vZHVsZS1maWxlLXBhdGggZmluZHV0aWxzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRjNGViYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiMzc0NjdkYThlNzllNzJmMjg1OThkNjY3ZjIxOWY3NWUiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI1NmNmYTQ4YWYyYjI4OWJiYTE3MmNhMGE0N2MyOWYwMDgzZjU4NDZjZjQ3NTk5NzhiNzA5ODhlNGYwN2ZjOWZkIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjU1ODc0MDdmM2MyODQ0NmFmMTJmZGUzZjMxMzFiYTM0IgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImQ0OTllODI1ZjQyOWQ3Njg2MmJlNDE1ZjU3OWMyMGNjMjZiMDQ2NTczYTNhMzkyMzdhY2FmOTY4MmNiNzFiZTciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyOTYwYzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTguMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjliNjJjMjY3ZDg3OGY2Y2IwMmY4YWJjNTlhOTk1MjVkIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiNWM3MTBjODY2ZDhjOWJhM2IzZTA2Mjc1NWUwZTlkMGVmNGY2NjU3NTJiZDY0ODEwZTNlYjlmMWIwZjBlYjA3NiIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICJlZjMyYTQ1OWE0YTA4YTNiOGU4MzdhMzFjOTI1Yzg0OCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJkMDViZmFiMmRjNDVkZTRmNmU3ZDYxY2ExNzMwNzFkNjkwMjkwNWE0OTYzZjdhYzNjYmNhNjA4YzBkNDU5MmM5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTViMTQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVmVuZG9yIFBhY2thZ2UgTWFuYWdlbWVudCBmb3IgR29sYW5nIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nbGlkZS5zaCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT01NDkwNWNmODk0ZjhjYzQxNmE5MmY0ZmMzNTBjMzViMiIKLQotR09fSU1QT1JUID0gImdpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUiCi1TUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSIKLVNSQ1JFViA9ICI2Nzc5MGIzZGJlZGU3MmNmZGM1NGFhNTNiZTQ3MDYzMjJjOTQ5OWUwIgotCi1pbmhlcml0IGdvCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EzMmZhMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCitTUkNSRVYgPSAiOWVmNmNhMzEzYjMyMDAwNzk4NjFmMmRlNGU1NjdiMWQyMjA4MWQxOSIKKworaW5oZXJpdCBnbworCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIGZvciB4ODYgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0KKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMS8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9pNTg2LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS91c3IvYmluL2dsaWRlJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKKworIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfS1wdGVzdAorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMzLworIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nbGlkZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2RlcGVuZGVuY3kvZGVwZW5kZW5jeS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3JlcG8vcmVwby50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL21pcnJvcnMvbWlycm9ycy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NmZy9jZmcudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nb2RlcC9zdHJpcC9zdHJpcC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3BhdGgvcGF0aC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3RyZWUvdHJlZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3V0aWwvdXRpbC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2FjdGlvbi9hY3Rpb24udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jYWNoZS9jYWNoZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy9tdXNsLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvbXVzbC1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTQ3NDM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy9tdXNsLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1zdXBwb3J0IG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogZ251LWNvbmZpZy0yMDEyMDgxNC9jb25maWcuc3ViCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251LWNvbmZpZy0yMDEyMDgxNC5vcmlnL2NvbmZpZy5zdWIJMjAxMi0wOS0xOCAwMjoyNzo0NS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBnbnUtY29uZmlnLTIwMTIwODE0L2NvbmZpZy5zdWIJMjAxNC0wMy0yNiAwMDozNDoxOS45NTU5OTY3MDkgLTA3MDAKLUBAIC0xMjMsNiArMTIzLDcgQEAKLSBtYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKLSBjYXNlICRtYXliZV9vcyBpbgotICAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBcCi0rICBsaW51eC1tdXNsKiB8IFwKLSAgIGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKLSAgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCi0gICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCi1AQCAtMTM2NSw2ICsxMzY2LDcgQEAKLSAJICAgICAgfCAtY3lnd2luKiB8IC1tc3lzKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAotIAkgICAgICB8IC1taW5ndzMyKiB8IC1taW5ndzY0KiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LWFuZHJvaWQqIFwKLSAJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKLSsJICAgICAgfCAtbGludXgtbXVzbCogXAotIAkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCi0gCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCi0gCSAgICAgIHwgLW9wZW5zdGVwKiB8IC1vc2tpdCogfCAtY29uaXgqIHwgLXB3MzIqIHwgLW5vbnN0b3B1eCogXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDQyOGI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiZ251LWNvbmZpZ2l6ZSIKLURFU0NSSVBUSU9OID0gIlRvb2wgdGhhdCBpbnN0YWxscyB0aGUgR05VIGNvbmZpZy5ndWVzcyAvIGNvbmZpZy5zdWIgaW50byBhIGRpcmVjdG9yeSB0cmVlIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWcuZ3Vlc3M7ZW5kbGluZT0zOTttZDU9Yjc5YTQ2NjM0NzVmNGQ3MjQ4NDY0NjMyNzc4MTdlMGQiCi0KLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgotCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0ke1BWfS50YXIuYnoyIFwKLQkgICBmaWxlOi8vbXVzbC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dudS1jb25maWdpemUuaW4iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiY2ZjYTVhMmJiMzllZGFkNGFhZTVhNjVlZmM4NDA5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NGY5OWE4ZTc2ZjNlOGU0ZmVjMGJiNWFkNDc2MmY4ZTQ0MzY2MTY4NTU0Y2U2NmNiODVhZmJlMmVkM2VmZDhiIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9nbnUtY29uZmlnIFwKLQkJICAgJHtEfSR7YmluZGlyfQotCWNhdCAke1dPUktESVJ9L2dudS1jb25maWdpemUuaW4gfCBcCi0JCXNlZCAtZSAncyxAZ251LWNvbmZpZ2RpckAsJHtkYXRhZGlyfS9nbnUtY29uZmlnLGcnIFwKLQkJICAgIC1lICdzLEBhdXRvbTR0ZV9wZXJsbGliZGlyQCwke2RhdGFkaXJ9L2F1dG9jb25mLGcnID4gJHtEfSR7YmluZGlyfS9nbnUtY29uZmlnaXplCi0JIyBJbiB0aGUgbmF0aXZlIGNhc2Ugd2Ugd2FudCB0aGUgc3lzdGVtIHBlcmwgYXMgcGVybC1uYXRpdmUgY2FuJ3QgaGF2ZSBidWlsdCB5ZXQKLQlpZiBbICIke1BOfSIgIT0gImdudS1jb25maWctbmF0aXZlIiAtYSAiJHtQTn0iICE9ICJuYXRpdmVzZGstZ251LWNvbmZpZyIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJ3MsL3Vzci9iaW4vZW52LCR7YmluZGlyfS9lbnYsZycgJHtEfSR7YmluZGlyfS9nbnUtY29uZmlnaXplCi0JZmkKLQljaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9nbnUtY29uZmlnaXplCi0JaW5zdGFsbCAtbSAwNjQ0IGNvbmZpZy5ndWVzcyBjb25maWcuc3ViICR7RH0ke2RhdGFkaXJ9L2dudS1jb25maWcvCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vZ251LWNvbmZpZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKaW5kZXggOGRlODEzOC4uNDc0NWYxOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC0yLDE0ICsyLDE0IEBACiBERVNDUklQVElPTiA9ICJUb29sIHRoYXQgaW5zdGFsbHMgdGhlIEdOVSBjb25maWcuZ3Vlc3MgLyBjb25maWcuc3ViIGludG8gYSBkaXJlY3RvcnkgdHJlZSIKIFNFQ1RJT04gPSAiZGV2ZWwiCiBMSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1hdXRvY29uZi1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWcuZ3Vlc3M7YmVnaW5saW5lPTc7ZW5kbGluZT0yNzttZDU9OWJhYzhiMTc0M2MyMjQwYWUwN2NjZTZlNTQ2YWMyZjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWcuZ3Vlc3M7YmVnaW5saW5lPTc7ZW5kbGluZT0yNzttZDU9Yjc1ZDQyZjU5ZjcwNmVhNTZkNmE4ZTAwMjE2ZmNhNmEiCiAKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCi1TUkNSRVYgPSAiYjU3NmZhODdjMTQwYjgyNDQ2NmVmMTYzOGU5NDVlODdkYzVjMDM0MyIKLVBWID0gIjIwMTUwNzI4K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjMwZDUzZmM0MjhlYTQyYWY5ZDZmNGQzNTVkYjAwMjJlMzkxOGE4MjQiCitQViA9ICIyMDE4MDcxMytnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jb25maWcuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2dudS1jb25maWdpemUuaW4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGYwZmM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLUdPX0JBU0VWRVJTSU9OID0gIjEuMTAiCi1HT19NSU5PUiA9ICIuMyIKLVBWIC49ICIke0dPX01JTk9SfSIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCi0KLVNSQ19VUklbbWFpbi5tZDVzdW1dID0gImQxNWRmYjI2NDEwNWM1ZTg0ZmJlMzNmNGE0YWE1MDIxIgotU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiNTY3YjFjYzY2Yzk3MDRkMWMwMTljNTBiZWY5NDYyNzJlOTExZWM2YmFmMjQ0MzEwZjg3ZjRlNjc4YmUxNTVmMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmIzM2IwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDdhN2RlNDYxMjlmYTY4NTlmYjYzMTEwOTZlYjlmNTRjNTNjN2ZlMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAwODo0OTozMyAtMDgwMAotU3ViamVjdDogW1BBVENIIDEvOV0gYWxsb3cgQ0MgYW5kIENYWCB0byBoYXZlIG11bHRpcGxlIHdvcmRzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCA2MDNmN2I1MDYwLi5mODkxMTIzZjljIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC04MiwxMSArODIsMTEgQEAgZnVuYyBNa0VudigpIFtdY2ZnLkVudlZhciB7Ci0gCi0gCWNjIDo9IGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgewotLQkJY2MgPSBlbnZbMF0KLSsJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQotIAl9Ci0gCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKLSAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgewotLQkJY3h4ID0gZW52WzBdCi0rCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogY3h4fSkKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZjM3YTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotRnJvbSA4YjJmZWFlZTgxZDdhMTZhZGM1OWU2MWQwNmMxZTczMTRkM2E1NDA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IE1vbiwgMTkgRmViIDIwMTggMDg6NTA6NTkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIGNtZC9nbzogbWFrZSBjb250ZW50LWJhc2VkIGhhc2ggZ2VuZXJhdGlvbiBsZXNzIHBlZGFudGljCi0KLUdvIDEuMTAncyBidWlsZCB0b29sIG5vdyB1c2VzIGNvbnRlbnQtYmFzZWQgaGFzaGVzIHRvCi1kZXRlcm1pbmUgd2hlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGJ1aWx0IG9yIHJlLWJ1aWx0LgotVGhpcyBzYW1lIG1lY2hhbmlzbSBpcyB1c2VkIHRvIG1haW50YWluIGEgYnVpbHQtYXJ0aWZhY3QKLWNhY2hlIGZvciBzcGVlZGluZyB1cCBidWlsZHMuCi0KLUhvd2V2ZXIsIHRoZSBoYXNoZXMgaXQgZ2VuZXJhdGVzIGluY2x1ZGUgaW5mb3JtYXRpb24gdGhhdAotZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBPRSwgbm9yIHdpdGggdXNpbmcgYSBzaGFyZWQgcnVudGltZQotbGlicmFyeS4KLQotRmlyc3QsIGl0IGVtYmVkcyBwYXRoIG5hbWVzIHRvIHNvdXJjZSBmaWxlcywgdW5sZXNzCi1idWlsZGluZyB3aXRoaW4gR09ST09ULiAgVGhpcyBwcmV2ZW50cyB0aGUgYnVpbGRpbmcKLW9mIGEgcGFja2FnZSBpbiBHT1BBVEggZm9yIGxhdGVyIHN0YWdpbmcgaW50byBHT1JPT1QuCi0KLVRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLUdPUEFUSF9PTUlUX0lOX0FDVElPTklELiAgSWYgcHJlc2VudCwgcGF0aCBuYW1lCi1lbWJlZGRpbmcgaXMgZGlzYWJsZWQuCi0KLVNlY29uZCwgaWYgY2dvIGlzIGVuYWJsZWQsIHRoZSBidWlsZCBJRCBmb3IgY2dvLXJlbGF0ZWQKLXBhY2thZ2VzIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQKLXZhcmlhYmxlcyBmb3IgaW52b2tpbmcgdGhlIGNvbXBpbGVyIChDQywgQ1hYLCBGQykgYW5kCi1hbnkgQ0dPX3h4RkxBR1MgdmFyaWFibGVzLiAgT25seSBpZiB0aGUgc2V0dGluZ3MgdXNlZAotZHVyaW5nIGEgY29tcGlsYXRpb24gZXhhY3RseSBtYXRjaCwgY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIsCi10aGUgdmFsdWVzIHVzZWQgZm9yIGNvbXBpbGluZyBydW50aW1lL2NnbyBvciBhbnkgb3RoZXIKLWNnby1lbmFibGVkIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQsIHdpbGwgdGhlIHRvb2wKLWRlY2lkZSB0aGF0IHRoZSBpbXBvcnRlZCBwYWNrYWdlIGlzIHVwLXRvLWRhdGUuCi0KLVRoaXMgaXMgZG9uZSB0byBoZWxwIGVuc3VyZSBjb3JyZWN0bmVzcywgYnV0IGlzIG92ZXJseQotc2ltcGxpc3RpYyBhbmQgZWZmZWN0aXZlbHkgcHJldmVudHMgdGhlIHJldXNlIG9mIGJ1aWx0Ci1hcnRpZmFjdHMgdGhhdCB1c2UgY2dvIChvciBzaGFyZWQgcnVudGltZSwgd2hpY2ggaW5jbHVkZXMKLXJ1bnRpbWUvY2dvKS4KLQotVGhpcyBwYXRjaCBmaWx0ZXJzIG91dCBhbGwgY29tcGlsZXIgZmxhZ3MgZXhjZXB0IHRob3NlCi1iZWdpbm5pbmcgd2l0aCAnLW0nLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIHJlc3RvcmVkCi1ieSBzZXR0aW5nIHRoZSBDR09fUEVEQU5USUMgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IGY4OTExMjNmOWMuLmViYWNmYmZkYmMgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTExMyw3ICsxMTMsNyBAQCBmdW5jIGZpbmRFbnYoZW52IFtdY2ZnLkVudlZhciwgbmFtZSBzdHJpbmcpIHN0cmluZyB7Ci0gZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgewotIAl2YXIgYiB3b3JrLkJ1aWxkZXIKLSAJYi5Jbml0KCkKLS0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKLSsJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KLSAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1pbmRleCBjNGMxNTAwZWIyLi5iMGY2YjQ1NjQ3IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtMTczLDYgKzE3Myw4IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIERvKHJvb3QgKkFjdGlvbikgewotIAl3Zy5XYWl0KCkKLSB9Ci0gCi0rdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKLSsKLSAvLyBidWlsZEFjdGlvbklEIGNvbXB1dGVzIHRoZSBhY3Rpb24gSUQgZm9yIGEgYnVpbGQgYWN0aW9uLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCXAgOj0gYS5QYWNrYWdlCi1AQCAtMTg5LDcgKzE5MSw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCS8vIGJ1dCBpdCBkb2VzIG5vdCBoaWRlIHRoZSBleGFjdCB2YWx1ZSBvZiAkR09QQVRILgotIAkvLyBJbmNsdWRlIHRoZSBmdWxsIGRpciBpbiB0aGF0IGNhc2UuCi0gCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KLS0JaWYgIXAuR29yb290ICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7Ci0rCWlmICFwLkdvcm9vdCAmJiAhb21pdEdvcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCi0gCX0KLSAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKLUBAIC0xOTcsMTMgKzE5OSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAlmbXQuRnByaW50ZihoLCAib21pdGRlYnVnICV2IHN0YW5kYXJkICV2IGxvY2FsICV2IHByZWZpeCAlcVxuIiwgcC5JbnRlcm5hbC5PbWl0RGVidWcsIHAuU3RhbmRhcmQsIHAuSW50ZXJuYWwuTG9jYWwsIHAuSW50ZXJuYWwuTG9jYWxQcmVmaXgpCi0gCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0gCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCi0tCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBfLCBfIDo9IGIuQ0ZsYWdzKHApCi0tCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncykKLSsJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIF8sIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKLSsJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncykKLSAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQotIAkJfQotIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCi0gCQl9Ci0gCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPwotIAl9Ci1AQCAtMTczMSwzMyArMTczMywzMyBAQCB2YXIgKAotIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCi0gZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCi1AQCAtMTc2NiwxMSArMTc2OCwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLSAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKLSAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgotIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKLSAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKLSAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQotIAl9Ci0rCWlmIGZpbHRlcmVkIHsKLSsJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQotKwl9Ci0gCXJldHVybiBjb21waWxlcgotIH0KLSAKLUBAIC0xOTIwLDggKzE5MjUsMjMgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgewotIAlyZXR1cm4gc3RyaW5ncy5GaWVsZHModikKLSB9Ci0gCi0rdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgotKwotK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgewotKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKLSsJaWYgIWZpbHRlckZsYWdzIHsKLSsJCXJldHVybiBmbGFncwotKwl9Ci0rCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKLSsJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKLSsJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKLSsJCX0KLSsJfQotKwlyZXR1cm4gbmV3ZmxhZ3MKLSt9Ci0rCi0gLy8gQ0ZsYWdzIHJldHVybnMgdGhlIGZsYWdzIHRvIHVzZSB3aGVuIGludm9raW5nIHRoZSBDLCBDKysgb3IgRm9ydHJhbiBjb21waWxlcnMsIG9yIGNnby4KLS1mdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0rZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSwgZmlsdGVyZWQgYm9vbCkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotIAlkZWZhdWx0cyA6PSAiLWcgLU8yIgotIAotIAlpZiBjcHBmbGFncywgZXJyID0gYnVpbGRGbGFncygiQ1BQRkxBR1MiLCAiIiwgcC5DZ29DUFBGTEFHUywgY2hlY2tDb21waWxlckZsYWdzKTsgZXJyICE9IG5pbCB7Ci1AQCAtMTkzOSw2ICsxOTU5LDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsCi0gCWlmIGxkZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkxERkxBR1MiLCBkZWZhdWx0cywgcC5DZ29MREZMQUdTLCBjaGVja0xpbmtlckZsYWdzKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4KLSAJfQotKwlpZiBmaWx0ZXJlZCB7Ci0rCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCi0rCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKLSsJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKLSsJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQotKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKLSsJfQotIAotIAlyZXR1cm4KLSB9Ci1AQCAtMTk1NCw3ICsxOTgxLDcgQEAgdmFyIGNnb1JlID0gcmVnZXhwLk11c3RDb21waWxlKGBbL1xcOl1gKQotIAotIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJcCA6PSBhLlBhY2thZ2UKLS0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gbmlsLCBuaWwsIGVycgotIAl9Ci1AQCAtMjMwNiw3ICsyMzMzLDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAKLSAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7Ci0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKLSsJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gIiIsICIiLCBlcnIKLSAJfQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOGZlNjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gYWNkMTc5YjQ5ZjFmYzhkNmY3ZjY5ZTU2OWZiNGE1NjAzOWM3MjVhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA1OjI0OjIwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMy85XSBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKLQotdG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KLSBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA2ICsrKysrLQotIHNyYy9nby9idWlsZC9idWlsZC5nbyAgICAgICAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotaW5kZXggNDllZDgwMDMzZS4uYWZjNjE1YjVjMiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1AQCAtMjIwLDcgKzIyMCw5IEBAIGZ1bmMgeGluaXQoKSB7Ci0gCXdvcmtkaXIgPSB4d29ya2RpcigpCi0gCXhhdGV4aXQocm13b3JrZGlyKQotIAotLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSsJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgewotKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCX0KLSB9Ci0gCi0gLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1pbmRleCAxZGU0ZjBkYzc5Li40ZjYwMTBkNjYwIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KLUBAIC05Niw3ICs5NiwxMSBAQCBmdW5jIGluaXQoKSB7Ci0gCS8vIGFzIHRoZSB0b29sIGRpcmVjdG9yeSBkb2VzIG5vdCBtb3ZlIGJhc2VkIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSAJLy8gVGhpcyBtYXRjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBUb29sRGlyIGluIGdvL2J1aWxkLAotIAkvLyBleGNlcHQgZm9yIHVzaW5nIEdPUk9PVCByYXRoZXIgdGhhbiBydW50aW1lLkdPUk9PVCgpLgotLQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7Ci0rCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguQ2xlYW4ocykKLSsJfSBlbHNlIHsKLSsJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJfQotIH0KLSAKLSBmdW5jIGZpbmRHT1JPT1QoKSBzdHJpbmcgewotZGlmZiAtLWdpdCBhL3NyYy9nby9idWlsZC9idWlsZC5nbyBiL3NyYy9nby9idWlsZC9idWlsZC5nbwotaW5kZXggNjhmYjQyMzk4My4uODFiMWIzMjI3MCAxMDA2NDQKLS0tLSBhL3NyYy9nby9idWlsZC9idWlsZC5nbwotKysrIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi1AQCAtMTU5NCw3ICsxNTk0LDcgQEAgZnVuYyBpbml0KCkgewotIH0KLSAKLSAvLyBUb29sRGlyIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBidWlsZCB0b29scy4KLS12YXIgVG9vbERpciA9IGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSt2YXIgVG9vbERpciA9IGVudk9yKCJHT1RPT0xESVIiLCBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpKQotIAotIC8vIElzTG9jYWxJbXBvcnQgcmVwb3J0cyB3aGV0aGVyIHRoZSBpbXBvcnQgcGF0aCBpcwotIC8vIGEgbG9jYWwgaW1wb3J0IHBhdGgsIGxpa2UgIi4iLCAiLi4iLCAiLi9mb28iLCBvciAiLi4vZm9vIi4KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyM2NhOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDg1MjUyZjBiZDg3NDMyMjNlYjc3OGVkYmU5ZmIzMWRmZjE3YTIzZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNjoyNjoxMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDQvOV0gbGQ6IGFkZCBzb25hbWUgdG8gc2hhcmVhYmxlIG9iamVjdHMKLQotc28gdGhhdCBPRSdzIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgaGFuZGxpbmcKLWNhbiBmaW5kIHRoZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLWluZGV4IDZkY2FmNjQxMjIuLjExY2JiOGE4YmIgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi1AQCAtMTEzNCw2ICsxMTM0LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQkJfQotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJCQlpZiBjdHh0LkhlYWRUeXBlICE9IG9iamFiaS5Id2luZG93cyB7Ci0gCQkJCS8vIFBhc3MgLXogbm9kZWxldGUgdG8gbWFyayB0aGUgc2hhcmVkIGxpYnJhcnkgYXMKLSAJCQkJLy8gbm9uLWNsb3NlYWJsZTogYSBkbGNsb3NlIHdpbGwgZG8gbm90aGluZy4KLUBAIC0xMTQ1LDYgKzExNDYsOCBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJfQotIAkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0rCi0gCWNhc2UgQnVpbGRNb2RlUGx1Z2luOgotIAkJaWYgY3R4dC5IZWFkVHlwZSA9PSBvYmphYmkuSGRhcndpbiB7Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLWR5bmFtaWNsaWIiKQotQEAgLTExNTMsNiArMTE1Niw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJCX0KLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0gCQl9Ci0gCX0KLSAKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YTkzOTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDE2MTI0ZDg0NjQ4ZjRkZmRmYTQ3MzhjNTY2MGI1NDAwYjMwYmY5ZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNjozMjo0NSAtMDgwMAotU3ViamVjdDogW1BBVENIIDUvOV0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kCi0gZ29fYm9vdHN0cmFwCi0KLWZvciBoYW5kbGluZyBPRSBjcm9zcy1jYW5hZGlhbiBidWlsZHMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCi1pbmRleCA5M2E1YzQzZDExLi4zYTYzNjgyYmM0IDEwMDc1NQotLS0tIGEvc3JjL21ha2UuYmFzaAotKysrIGIvc3JjL21ha2UuYmFzaAotQEAgLTE2Miw3ICsxNjIsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgotIAlleGl0IDEKLSBmaQotIHJtIC1mIGNtZC9kaXN0L2Rpc3QKLS1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiBHT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLSAKLSAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCi0gZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCi1AQCAtMTkzLDcgKzE5Myw3IEBAIGZpCi0gIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgotICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgotICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0gcm0gLWYgLi9jbWQvZGlzdC9kaXN0Ci0gCi0gIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZlNjk5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi1Gcm9tIDJmMDdhZjM0Njk3YzYxZGVjZGNmYTViMTE0MzQ0NTFmYmNmMzc3MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDowMzo0OCAtMDgwMAotU3ViamVjdDogW1BBVENIIDYvOV0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKLQotQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQotYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKLQotIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7Ci0gICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93Ci0gICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KLSAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCi0gICBidWlsdC4KLQotIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKLSAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZwotICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCi0gICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgotCi0gLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCi0gICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKLSAgIHNoYXJlZCBydW50aW1lKS4KLQotTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQotanVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKLXRoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgotbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bwotYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLW1vcmUgZGlzdCBjbGVhbnVwCi0tLS0KLSBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gfCAxNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1pbmRleCBhZmM2MTViNWMyLi4zNjI2MjY2NWIyIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi0rKysgYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC0zOCw2ICszOCw3IEBAIHZhciAoCi0gCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCi0gCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCi0gCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCi0rCWJ1aWxkX3Rvb2xkaXIJIHN0cmluZwotIAlvbGRnb29zICAgICAgICAgIHN0cmluZwotIAlvbGRnb2FyY2ggICAgICAgIHN0cmluZwotIAlleGUgICAgICAgICAgICAgIHN0cmluZwotQEAgLTQ5LDYgKzUwLDcgQEAgdmFyICgKLSAKLSAJcmVidWlsZGFsbCAgIGJvb2wKLSAJZGVmYXVsdGNsYW5nIGJvb2wKLSsJY3Jvc3NCdWlsZCAgIGJvb2wKLSAKLSAJdmZsYWcgaW50IC8vIHZlcmJvc2l0eQotICkKLUBAIC0yMjMsNiArMjI1LDggQEAgZnVuYyB4aW5pdCgpIHsKLSAJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgewotIAkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0gCX0KLSsJYnVpbGRfdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIiwgZ29yb290KQotKwotIH0KLSAKLSAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKLUBAIC0yNTIsNyArMjU2LDYgQEAgZnVuYyBjb21waWxlckVudihlbnZOYW1lLCBkZWYgc3RyaW5nKSBtYXBbc3RyaW5nXXN0cmluZyB7Ci0gCQlpZiBnb2hvc3RvcyAhPSBnb29zIHx8IGdvaG9zdGFyY2ggIT0gZ29hcmNoIHsKLSAJCQltW2dvaG9zdG9zKyIvIitnb2hvc3RhcmNoXSA9IG1bIiJdCi0gCQl9Ci0tCQltWyIiXSA9IGVudgotIAl9Ci0gCi0gCWZvciBfLCBnb29zIDo9IHJhbmdlIG9rZ29vcyB7Ci1AQCAtNDc5LDggKzQ4MiwxMCBAQCBmdW5jIHNldHVwKCkgewotIAkvLyBXZSBrZWVwIGl0IGluIHBrZy8sIGp1c3QgbGlrZSB0aGUgb2JqZWN0IGRpcmVjdG9yeSBhYm92ZS4KLSAJaWYgcmVidWlsZGFsbCB7Ci0gCQl4cmVtb3ZlYWxsKHRvb2xkaXIpCi0rCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCX0KLSAJeG1rZGlyYWxsKHRvb2xkaXIpCi0rCXhta2RpcmFsbChidWlsZF90b29sZGlyKQotIAotIAkvLyBSZW1vdmUgdG9vbCBiaW5hcmllcyBmcm9tIGJlZm9yZSB0aGUgdG9vbC9nb2hvc3Rvc19nb2hvc3RhcmNoCi0gCXhyZW1vdmVhbGwocGF0aGYoIiVzL2Jpbi90b29sIiwgZ29yb290KSkKLUBAIC0xMTMwLDExICsxMTM1LDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAotIAl2YXIgbm9CYW5uZXIgYm9vbAotIAl2YXIgZGVidWcgYm9vbAotKwl2YXIgaG9zdE9ubHkgYm9vbAotKwl2YXIgdGFyZ2V0T25seSBib29sCi0rCXZhciB0b0J1aWxkID0gW11zdHJpbmcgeyAic3RkIiwgImNtZCIgfQotKwotIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKLSAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQotIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKLSsJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKLSsJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKLSAKLS0JeGZsYWdwYXJzZSgwKQotKwl4ZmxhZ3BhcnNlKC0xKQotKwotKwlpZiAoaG9zdE9ubHkgJiYgdGFyZ2V0T25seSkgewotKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCX0KLSsJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKLSsJaWYgZmxhZy5OQXJnKCkgPiAwIHsKLSsJCWlmIGNyb3NzQnVpbGQgewotKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQotKwkJfSBlbHNlIHsKLSsJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCQl9Ci0rCX0KLSAKLSAJaWYgZGVidWcgewotIAkJLy8gY21kL2J1aWxkaWQgaXMgdXNlZCBpbiBkZWJ1ZyBtb2RlLgotQEAgLTExODIsOCArMTIwNSwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAotLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93Ci0tCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0Ci0rCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCi0rCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgotKwlpZiAhIGNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKLSsJfQotIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKLSAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCi0gCWlmIGRlYnVnIHsKLUBAIC0xMjEyLDcgKzEyNDAsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQotLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQotKwl9IGVsc2UgewotKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJfQotIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKLSAJaWYgZGVidWcgewotIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotQEAgLTEyNDksNDUgKzEyODEsODIgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0gCi0tCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKLS0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCi0rCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCi0rCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQotKwkJCXhyZW1vdmUoZikKLSsJCX0KLSsJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKLSsJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlpZiBob3N0T25seSB7Ci0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKLSsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgewotKwkJCWdvb3MgPSBvbGRnb29zCi0rCQkJZ29hcmNoID0gb2xkZ29hcmNoCi0rCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLSsJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLSsJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKLSAJCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCX0gZWxzZSB7Ci0tCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0tCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0rCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9IGVsc2UgewotKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0rCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0rCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0tCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwkJaWYgZGVidWcgewotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLSsJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0rCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSAJCX0KLS0JCWdvb3MgPSBvbGRnb29zCi0tCQlnb2FyY2ggPSBvbGRnb2FyY2gKLS0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0tCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLS0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0tCX0KLS0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0tCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLS0JY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotLQlpZiBkZWJ1ZyB7Ci0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0tCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLS0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0gCX0KLSAKLSAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KLUBAIC0xMzA1LDcgKzEzNzQsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAKLSAJLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgotLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bwotKwkvLyBrZWVwIGl0LgotKwlpZiAhIGNyb3NzQnVpbGQgewotKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCi0rCX0KLSAKLSAJLy8gUHJpbnQgdHJhaWxpbmcgYmFubmVyIHVubGVzcyBpbnN0cnVjdGVkIG90aGVyd2lzZS4KLSAJaWYgIW5vQmFubmVyIHsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI0Mjc2Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSBmOThhYTI4Nzk0MTQxNzIyNmE2ZTRmNzg3NTlmOGE1ZTE5NzMyY2RlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IEZyaSwgMiBNYXIgMjAxOCAwNjowMDoyMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDcvOV0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0Ci0KLVRoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKLXN0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCi1iZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCi1saWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKLXRoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKLXNldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgotCi1UaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQotaW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCi1lbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gfCAgMyArKysKLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gIHwgIDUgKysrKysKLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLWluZGV4IDlmMWY4ZjhhNTAuLmEzODI4ODA0NzQgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi1AQCAtNTYzLDYgKzU2Myw5IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGFkZFRyYW5zaXRpdmVMaW5rRGVwcyhhLCBhMSAqQWN0aW9uLCBzaGxpYiBzdHJpbmcpIHsKLSAJCQlpZiBwMSA9PSBuaWwgfHwgcDEuU2hsaWIgPT0gIiIgfHwgaGF2ZVNobGliW2ZpbGVwYXRoLkJhc2UocDEuU2hsaWIpXSB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfQotKwkJCWlmIGdvUm9vdFByZWNpb3VzICYmIChwMS5TdGFuZGFyZCB8fCBwMS5Hb3Jvb3QpIHsKLSsJCQkJY29udGludWUKLSsJCQl9Ci0gCQkJaGF2ZVNobGliW2ZpbGVwYXRoLkJhc2UocDEuU2hsaWIpXSA9IHRydWUKLSAJCQkvLyBUT0RPKHJzYyk6IFRoZSB1c2Ugb2YgTW9kZUluc3RhbGwgaGVyZSBpcyBzdXNwZWN0LCBidXQgaWYgd2Ugb25seSBkbyBNb2RlQnVpbGQsCi0gCQkJLy8gd2UnbGwgZW5kIHVwIGJ1aWxkaW5nIGFuIG92ZXJhbGwgbGlicmFyeSBvciBleGVjdXRhYmxlIHRoYXQgZGVwZW5kcyBhdCBydW50aW1lCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1pbmRleCA1N2I3YjAwODc5Li5lMmJhOTU0MjBlIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLUBAIC0xNDMsNiArMTQzLDcgQEAgU2VlIGFsc286IGdvIGluc3RhbGwsIGdvIGdldCwgZ28gY2xlYW4uCi0gfQotIAotIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCi0rdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCi0gCi0gZnVuYyBpbml0KCkgewotIAkvLyBicmVhayBpbml0IGN5Y2xlCi1AQCAtMTU2LDYgKzE1NywxMCBAQCBmdW5jIGluaXQoKSB7Ci0gCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQpCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kSW5zdGFsbCkKLSsKLSsJaWYgeCA6PSBvcy5HZXRlbnYoIkdPUk9PVF9PVkVSUklERSIpOyB4ICE9ICIiIHsKLSsJCWdvUm9vdFByZWNpb3VzID0gZmFsc2UKLSsJfQotIH0KLSAKLSAvLyBOb3RlIHRoYXQgZmxhZ3MgY29uc3VsdGVkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggYjBmNmI0NTY0Ny4uYzhmMjY2YThhZCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTM3MSw2ICszNzEsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7Ci0gCQlyZXR1cm4gZm10LkVycm9yZigibWlzc2luZyBvciBpbnZhbGlkIGJpbmFyeS1vbmx5IHBhY2thZ2UiKQotIAl9Ci0gCi0rCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgewotKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKLSsJCWlmIGVyciA9PSBuaWwgewotKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0Ci0rCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0Ci0rCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQotKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCi0rCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJCWlmIGIuQ29tcHV0ZVN0YWxlT25seSB7Ci0rCQkJYS5QYWNrYWdlLlN0YWxlID0gdHJ1ZQotKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCi0rCQkJcmV0dXJuIG5pbAotKwkJfQotKwl9Ci0rCi0gCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gZXJyCi0gCX0KLUBAIC0xMDk3LDYgKzExMTQsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdGlvbikgKGVyciBlcnJvcikgewotIAkJcmV0dXJuIG5pbAotIAl9Ci0gCi0rCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgewotKwkJcCA6PSBhLlBhY2thZ2UKLSsJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgewotKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCi0rCQkJcmV0dXJuIGVycgotKwkJfQotKwl9Ci0rCi0gCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gZXJyCi0gCX0KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOC1jbWQtaW50ZXJuYWwtb2JqLWFybTY0LWZpeC1icmFuY2gtdG9vLWZhci13aXRoLVRCWi1sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNzU0MTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIDQxYjkwZWQ3YWYxMGEwNzFjY2ZlZWRlNmE0MjllMGQ4MDUxODQzNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVycnkgWmhhbmcgPGNoZXJyeXl6QGdvb2dsZS5jb20+Ci1EYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDEwOjMxOjM5IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvaW50ZXJuYWwvb2JqL2FybTY0OiBmaXggYnJhbmNoLXRvby1mYXIgd2l0aCBUQlogbGlrZQotIGluc3RydWN0aW9ucwotCi1UaGUgY29tcGlsZXIgbm93IGVtaXRzIFRCWiBsaWtlIGluc3RydWN0aW9ucywgYnV0IHRoZSBhc3NlbWJsZXIncwotdG9vLWZhci1icmFuY2ggcGF0Y2ggY29kZSBkaWRuJ3QgaW5jbHVkZSB0aGF0IGNhc2UuIEFkZCBpdC4KLQotRml4ZXMgIzIzODg5LgotCi1DaGFuZ2UtSWQ6IEliNzVmOTI1MGM2NjBiOWZiNjUyODM1ZmJjODMyNjNhNWQ1MDczZGM1Ci0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvICAgICB8IDExICsrKysrKysrKy0tCi0gc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28gfCAgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbTcuZ28KLWluZGV4IGNhODEyMzhjOTMuLmIxZWU1NTI0ODkgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCi0rKysgYi9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCi1AQCAtNjk2LDkgKzY5NiwxNiBAQCBmdW5jIHNwYW43KGN0eHQgKm9iai5MaW5rLCBjdXJzeW0gKm9iai5MU3ltLCBuZXdwcm9nIG9iai5Qcm9nQWxsb2MpIHsKLSAJCQlvID0gYy5vcGxvb2socCkKLSAKLSAJCQkvKiB2ZXJ5IGxhcmdlIGJyYW5jaGVzICovCi0tCQkJaWYgKG8udHlwZV8gPT0gNyB8fCBvLnR5cGVfID09IDM5KSAmJiBwLlBjb25kICE9IG5pbCB7IC8vIDc6IEJFUSBhbmQgbGlrZSwgMzk6IENCWiBhbmQgbGlrZQotKwkJCWlmIChvLnR5cGVfID09IDcgfHwgby50eXBlXyA9PSAzOSB8fCBvLnR5cGVfID09IDQwKSAmJiBwLlBjb25kICE9IG5pbCB7IC8vIDc6IEJFUSBhbmQgbGlrZSwgMzk6IENCWiBhbmQgbGlrZSwgNDA6IFRCWiBhbmQgbGlrZQotIAkJCQlvdHh0IDo9IHAuUGNvbmQuUGMgLSBwYwotLQkJCQlpZiBvdHh0IDw9IC0oMTw8MTgpKzEwIHx8IG90eHQgPj0gKDE8PDE4KS0xMCB7Ci0rCQkJCXZhciB0b29mYXIgYm9vbAotKwkJCQlzd2l0Y2ggby50eXBlXyB7Ci0rCQkJCWNhc2UgNywgMzk6IC8vIGJyYW5jaCBpbnN0cnVjdGlvbiBlbmNvZGVzIDE5IGJpdHMKLSsJCQkJCXRvb2ZhciA9IG90eHQgPD0gLSgxPDwyMCkrMTAgfHwgb3R4dCA+PSAoMTw8MjApLTEwCi0rCQkJCWNhc2UgNDA6IC8vIGJyYW5jaCBpbnN0cnVjdGlvbiBlbmNvZGVzIDE0IGJpdHMKLSsJCQkJCXRvb2ZhciA9IG90eHQgPD0gLSgxPDwxNSkrMTAgfHwgb3R4dCA+PSAoMTw8MTUpLTEwCi0rCQkJCX0KLSsJCQkJaWYgdG9vZmFyIHsKLSAJCQkJCXEgOj0gYy5uZXdwcm9nKCkKLSAJCQkJCXEuTGluayA9IHAuTGluawotIAkJCQkJcC5MaW5rID0gcQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KLWluZGV4IDM2OWM0OGY1MTAuLjNlMGM5YzEzYTYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc21fdGVzdC5nbwotKysrIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KLUBAIC01Miw2ICs1Miw3IEBAIGZ1bmMgVGVzdExhcmdlKHQgKnRlc3RpbmcuVCkgewotIC8vIGdlbiBnZW5lcmF0ZXMgYSB2ZXJ5IGxhcmdlIHByb2dyYW0sIHdpdGggYSB2ZXJ5IGZhciBjb25kaXRpb25hbCBicmFuY2guCi0gZnVuYyBnZW4oYnVmICpieXRlcy5CdWZmZXIpIHsKLSAJZm10LkZwcmludGxuKGJ1ZiwgIlRFWFQgZihTQiksMCwkMC0wIikKLSsJZm10LkZwcmludGxuKGJ1ZiwgIlRCWiAkNSwgUjAsIGxhYmVsIikKLSAJZm10LkZwcmludGxuKGJ1ZiwgIkNCWiBSMCwgbGFiZWwiKQotIAlmbXQuRnByaW50bG4oYnVmLCAiQkVRIGxhYmVsIikKLSAJZm9yIGkgOj0gMDsgaSA8IDE8PDE5OyBpKysgewotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmIwMGIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIGY1NzVkODVjNGJkOWIyOTAzMjIzZDZjMGRjYzM4YTEyNzc1ZDU4MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU3VuLCAxOCBGZWIgMjAxOCAwODoyNDowNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDkvOV0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCi0KLVJld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCi1tdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvICB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyAgICB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvICB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28gICB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbyB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvICB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvICB8IDIgKy0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbyAgICB8IDIgKy0KLSA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi1pbmRleCA4N2U4MDkxNjZhLi5mNTIyYTYzMDM0IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbwotQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCi0gCQlUTFNJRXRvTEU6ICAgICAgICB0bHNJRXRvTEUsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLXg4Ni02NC5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogICAiL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KLWluZGV4IGRhMTZmOTIzNDUuLmZkMTQ5NDBlZGUgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KLUBAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQotKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KLWluZGV4IDZiMzg2YWQ3MzcuLjk5ODYzNzEyY2MgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotaW5kZXggYzVkMzQ1MWMzOS4uZmQ4NWU2MzY4ZCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1AQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLWluZGV4IDgzOTc0ZTViNTYuLjA5NzIyNGY2ZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCi1pbmRleCAyNzNkOWI0MmNiLi5hNTAzYWJlOGVhIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0gCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KLWluZGV4IDlhYzdlYjgyMTcuLjM4MjVmZjdhYmUgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCi0gCi0gCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4Ci0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotaW5kZXggNmE3NDRkYzA0ZS4uZDgxZjM5MjU0OSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCi0rCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMmU0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLmluYwpAQCAtMCwwICsxLDIzIEBACityZXF1aXJlIGdvLWNvbW1vbi5pbmMKKworR09fQkFTRVZFUlNJT04gPSAiMS4xMSIKK0dPX01JTk9SID0gIi4xIgorUFYgLj0gIiR7R09fTUlOT1J9IgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVkNDk1MGVjYjdiMjZkMmM1ZTRlN2I0ZTBkZDc0NzA3IgorCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIFwKKyIKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiZWI5ZTk3OTIyNDcxNDM3MDVhN2FhY2VhOTM5OGNkZTAiCitTUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICI1NThmOGMxNjlhZTIxNWUyNWI4MTQyMTU5NmU4ZGU3NTcyYmQzYmE4MjRiNzlhZGQyMmZiYTZlMjg0ZGIxMTE3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0Mjg1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA3Y2M1MTlhYTVmODRjZjhmYzdhYzhjMTBmYzY5YWE4MDQwMzMwZWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IE1vbiwgMTkgRmViIDIwMTggMDg6NDk6MzMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWxsb3cgQ0MgYW5kIENYWCB0byBoYXZlIG11bHRpcGxlIHdvcmRzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CisKKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK2luZGV4IGFmYWRiYWQuLmNlZGJmYmYgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTg1LDExICs4NSwxMSBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAKKyAJY2MgOj0gY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ0MiKSk7IGxlbihlbnYpID4gMCB7CistCQljYyA9IGVudlswXQorKwkJY2MgPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCisgCX0KKyAJY3h4IDo9IGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKQorIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDWFgiKSk7IGxlbihlbnYpID4gMCB7CistCQljeHggPSBlbnZbMF0KKysJCWN4eCA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKKyAJfQorIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjY30pCisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNYWCIsIFZhbHVlOiBjeHh9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmI4NTYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKQEAgLTAsMCArMSwyMTggQEAKK0Zyb20gNDdkYjY5ZTIwZWQ2NmZiNjJiMDFhZmZkODNkODI5NjU0YjgyOTg5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjUwOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtZC9nbzogbWFrZSBjb250ZW50LWJhc2VkIGhhc2ggZ2VuZXJhdGlvbiBsZXNzIHBlZGFudGljCisKK0dvIDEuMTAncyBidWlsZCB0b29sIG5vdyB1c2VzIGNvbnRlbnQtYmFzZWQgaGFzaGVzIHRvCitkZXRlcm1pbmUgd2hlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGJ1aWx0IG9yIHJlLWJ1aWx0LgorVGhpcyBzYW1lIG1lY2hhbmlzbSBpcyB1c2VkIHRvIG1haW50YWluIGEgYnVpbHQtYXJ0aWZhY3QKK2NhY2hlIGZvciBzcGVlZGluZyB1cCBidWlsZHMuCisKK0hvd2V2ZXIsIHRoZSBoYXNoZXMgaXQgZ2VuZXJhdGVzIGluY2x1ZGUgaW5mb3JtYXRpb24gdGhhdAorZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBPRSwgbm9yIHdpdGggdXNpbmcgYSBzaGFyZWQgcnVudGltZQorbGlicmFyeS4KKworRmlyc3QsIGl0IGVtYmVkcyBwYXRoIG5hbWVzIHRvIHNvdXJjZSBmaWxlcywgdW5sZXNzCitidWlsZGluZyB3aXRoaW4gR09ST09ULiAgVGhpcyBwcmV2ZW50cyB0aGUgYnVpbGRpbmcKK29mIGEgcGFja2FnZSBpbiBHT1BBVEggZm9yIGxhdGVyIHN0YWdpbmcgaW50byBHT1JPT1QuCisKK1RoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK0dPUEFUSF9PTUlUX0lOX0FDVElPTklELiAgSWYgcHJlc2VudCwgcGF0aCBuYW1lCitlbWJlZGRpbmcgaXMgZGlzYWJsZWQuCisKK1NlY29uZCwgaWYgY2dvIGlzIGVuYWJsZWQsIHRoZSBidWlsZCBJRCBmb3IgY2dvLXJlbGF0ZWQKK3BhY2thZ2VzIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlcyBmb3IgaW52b2tpbmcgdGhlIGNvbXBpbGVyIChDQywgQ1hYLCBGQykgYW5kCithbnkgQ0dPX3h4RkxBR1MgdmFyaWFibGVzLiAgT25seSBpZiB0aGUgc2V0dGluZ3MgdXNlZAorZHVyaW5nIGEgY29tcGlsYXRpb24gZXhhY3RseSBtYXRjaCwgY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIsCit0aGUgdmFsdWVzIHVzZWQgZm9yIGNvbXBpbGluZyBydW50aW1lL2NnbyBvciBhbnkgb3RoZXIKK2Nnby1lbmFibGVkIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQsIHdpbGwgdGhlIHRvb2wKK2RlY2lkZSB0aGF0IHRoZSBpbXBvcnRlZCBwYWNrYWdlIGlzIHVwLXRvLWRhdGUuCisKK1RoaXMgaXMgZG9uZSB0byBoZWxwIGVuc3VyZSBjb3JyZWN0bmVzcywgYnV0IGlzIG92ZXJseQorc2ltcGxpc3RpYyBhbmQgZWZmZWN0aXZlbHkgcHJldmVudHMgdGhlIHJldXNlIG9mIGJ1aWx0CithcnRpZmFjdHMgdGhhdCB1c2UgY2dvIChvciBzaGFyZWQgcnVudGltZSwgd2hpY2ggaW5jbHVkZXMKK3J1bnRpbWUvY2dvKS4KKworVGhpcyBwYXRjaCBmaWx0ZXJzIG91dCBhbGwgY29tcGlsZXIgZmxhZ3MgZXhjZXB0IHRob3NlCitiZWdpbm5pbmcgd2l0aCAnLW0nLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIHJlc3RvcmVkCitieSBzZXR0aW5nIHRoZSBDR09fUEVEQU5USUMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CisKKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK2luZGV4IGNlZGJmYmYuLjU3NjNhMGQgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTEyOCw3ICsxMjgsNyBAQCBmdW5jIEV4dHJhRW52VmFycygpIFtdY2ZnLkVudlZhciB7CisgZnVuYyBFeHRyYUVudlZhcnNDb3N0bHkoKSBbXWNmZy5FbnZWYXIgeworIAl2YXIgYiB3b3JrLkJ1aWxkZXIKKyAJYi5Jbml0KCkKKy0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKKysJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KKyAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitpbmRleCAxMmUxNTI3Li5lNDFiZmFjIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMTc0LDYgKzE3NCw4IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIERvKHJvb3QgKkFjdGlvbikgeworIAl3Zy5XYWl0KCkKKyB9CisgCisrdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKKysKKyAvLyBidWlsZEFjdGlvbklEIGNvbXB1dGVzIHRoZSBhY3Rpb24gSUQgZm9yIGEgYnVpbGQgYWN0aW9uLgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7CisgCXAgOj0gYS5QYWNrYWdlCitAQCAtMTkwLDcgKzE5Miw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7CisgCS8vIGJ1dCBpdCBkb2VzIG5vdCBoaWRlIHRoZSBleGFjdCB2YWx1ZSBvZiAkR09QQVRILgorIAkvLyBJbmNsdWRlIHRoZSBmdWxsIGRpciBpbiB0aGF0IGNhc2UuCisgCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KKy0JaWYgIXAuR29yb290ICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7CisrCWlmICFwLkdvcm9vdCAmJiAhb21pdEdvcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCisgCX0KKyAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKK0BAIC0yMDEsMTMgKzIwMywxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAl9CisgCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7CisgCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCistCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHApCistCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKKysJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKKysJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKKyAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7CistCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCisrCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQorIAkJfQorIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgeworLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCisrCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCisgCQl9CisgCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPworIAl9CitAQCAtMjA5NiwzMyArMjA5OCwzMyBAQCB2YXIgKAorIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisgZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCisgZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCisrZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKKytmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQorIH0KKyAKKyAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCitAQCAtMjEzMSwxMSArMjEzMywxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKyAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKKyAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgorIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKKyAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKKyAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQorIAl9CisrCWlmIGZpbHRlcmVkIHsKKysJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQorKwl9CisgCXJldHVybiBjb21waWxlcgorIH0KKyAKK0BAIC0yMjg1LDggKzIyOTAsMjMgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgeworIAlyZXR1cm4gc3RyaW5ncy5GaWVsZHModikKKyB9CisgCisrdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgorKworK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgeworKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKKysJaWYgIWZpbHRlckZsYWdzIHsKKysJCXJldHVybiBmbGFncworKwl9CisrCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKKysJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKKysJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKKysJCX0KKysJfQorKwlyZXR1cm4gbmV3ZmxhZ3MKKyt9CisrCisgLy8gQ0ZsYWdzIHJldHVybnMgdGhlIGZsYWdzIHRvIHVzZSB3aGVuIGludm9raW5nIHRoZSBDLCBDKysgb3IgRm9ydHJhbiBjb21waWxlcnMsIG9yIGNnby4KKy1mdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7CisrZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSwgZmlsdGVyZWQgYm9vbCkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworIAlkZWZhdWx0cyA6PSAiLWcgLU8yIgorIAorIAlpZiBjcHBmbGFncywgZXJyID0gYnVpbGRGbGFncygiQ1BQRkxBR1MiLCAiIiwgcC5DZ29DUFBGTEFHUywgY2hlY2tDb21waWxlckZsYWdzKTsgZXJyICE9IG5pbCB7CitAQCAtMjMwNCw2ICsyMzI0LDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsCisgCWlmIGxkZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkxERkxBR1MiLCBkZWZhdWx0cywgcC5DZ29MREZMQUdTLCBjaGVja0xpbmtlckZsYWdzKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4KKyAJfQorKwlpZiBmaWx0ZXJlZCB7CisrCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCisrCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKKysJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKKysJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQorKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKKysJfQorIAorIAlyZXR1cm4KKyB9CitAQCAtMjMxOSw3ICsyMzQ2LDcgQEAgdmFyIGNnb1JlID0gcmVnZXhwLk11c3RDb21waWxlKGBbL1xcOl1gKQorIAorIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJcCA6PSBhLlBhY2thZ2UKKy0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gbmlsLCBuaWwsIGVycgorIAl9CitAQCAtMjY3OSw3ICsyNzA2LDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAKKyAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgorIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7CistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKKysJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gIiIsICIiLCBlcnIKKyAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZjYTQwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA1YzMyYzM4YmYxOWIyNGYwYWFkZDc4MDEyZDE3ZmY1Y2FhODIxNTFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDU6MjQ6MjAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWxsb3cgR09UT09MRElSIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGVudmlyb25tZW50CisKK3RvIGFsbG93IGZvciBzcGxpdCBob3N0L3RhcmdldCBidWlsZCByb290cworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA3ICsrKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCisrKysgZ28vc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitAQCAtMjI4LDcgKzIyOCw5IEBAIGZ1bmMgeGluaXQoKSB7CisgCXdvcmtkaXIgPSB4d29ya2RpcigpCisgCXhhdGV4aXQocm13b3JrZGlyKQorIAorLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKysJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCX0KKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitJbmRleDogZ28vc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KKysrKyBnby9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC0xMTYsNyArMTE2LDExIEBAIGZ1bmMgaW5pdCgpIHsKKyAJCS8vIHZhcmlhYmxlcy4gVGhpcyBtYXRjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBUb29sRGlyIGluCisgCQkvLyBnby9idWlsZCwgZXhjZXB0IGZvciB1c2luZyBHT1JPT1QgcmF0aGVyIHRoYW4KKyAJCS8vIHJ1bnRpbWUuR09ST09ULgorLQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorKwkJaWYgcyA6PSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyBzICE9ICIiIHsKKysJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguQ2xlYW4ocykKKysJCX0gZWxzZSB7CisrCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorKwkJfQorIAl9CisgfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDRhMzNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA1NWViOGM5NWE4OWYzMmFlYzE2Yjc3NjRlNzhlOGNmNzUxNjlkYzgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MjY6MTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGQ6IGFkZCBzb25hbWUgdG8gc2hhcmVhYmxlIG9iamVjdHMKKworc28gdGhhdCBPRSdzIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgaGFuZGxpbmcKK2NhbiBmaW5kIHRoZW0uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CisKKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworaW5kZXggMjIwYWFiMy4uNzAzOTI1ZiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMTM1LDYgKzExMzUsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKKyAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcworIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorQEAgLTExNDYsNiArMTE0Nyw4IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKysKKyAJY2FzZSBCdWlsZE1vZGVQbHVnaW46CisgCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTE1NCw2ICsxMTU3LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2U4ZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSAxYmYxNWFhOGZiNzczNjA0YjI1MjRjZmRhYjQ5M2ZhNGQ4ZmE5Mjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MzI6NDUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kIGdvX2Jvb3RzdHJhcAorCitmb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCistLS0KKyBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCA3ODg4MmQ5Li4yNTk0M2QwIDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTE2Myw3ICsxNjMsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgorIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKytDQz0iJHtCVUlMRF9DQzotJHtDQ319IiBHT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKyAKKyAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCisgZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCitAQCAtMTk0LDcgKzE5NCw3IEBAIGZpCisgIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgorICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgorICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgorLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKKytDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCisgcm0gLWYgLi9jbWQvZGlzdC9kaXN0CisgCisgIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzBkNWRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwyODIgQEAKK0Zyb20gZmUwZmNhZjQzZWYzYWFiODE1NDFkYWQyYTcxYjQ2MjU0ZGM0Y2Y2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDEwOjAzOjQ4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCisKK0NoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KK2FuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6CisKKyAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOworICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdworICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCisgICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQorICAgYnVpbHQuCisKKyAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCisgICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKKyAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJworICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KKworIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAorICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCisgICBzaGFyZWQgcnVudGltZSkuCisKK05vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKK2p1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCit0aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKK2xpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KK2J1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCittb3JlIGRpc3QgY2xlYW51cAorCistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gfCAxNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCisrKysgZ28vc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitAQCAtMzksNiArMzksNyBAQCB2YXIgKAorIAlnb2xkZmxhZ3MgICAgICAgIHN0cmluZworIAl3b3JrZGlyICAgICAgICAgIHN0cmluZworIAl0b29sZGlyICAgICAgICAgIHN0cmluZworKwlidWlsZF90b29sZGlyCSBzdHJpbmcKKyAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKKyAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKKyAJZXhlICAgICAgICAgICAgICBzdHJpbmcKK0BAIC01MCw2ICs1MSw3IEBAIHZhciAoCisgCisgCXJlYnVpbGRhbGwgICBib29sCisgCWRlZmF1bHRjbGFuZyBib29sCisrCWNyb3NzQnVpbGQgICBib29sCisgCisgCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKKyApCitAQCAtMjMxLDYgKzIzMyw4IEBAIGZ1bmMgeGluaXQoKSB7CisgCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKyAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAl9CisrCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKKysKKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitAQCAtMjYwLDcgKzI2NCw2IEBAIGZ1bmMgY29tcGlsZXJFbnYoZW52TmFtZSwgZGVmIHN0cmluZykgbWEKKyAJCWlmIGdvaG9zdG9zICE9IGdvb3MgfHwgZ29ob3N0YXJjaCAhPSBnb2FyY2ggeworIAkJCW1bZ29ob3N0b3MrIi8iK2dvaG9zdGFyY2hdID0gbVsiIl0KKyAJCX0KKy0JCW1bIiJdID0gZW52CisgCX0KKyAKKyAJZm9yIF8sIGdvb3MgOj0gcmFuZ2Ugb2tnb29zIHsKK0BAIC00ODcsOCArNDkwLDEwIEBAIGZ1bmMgc2V0dXAoKSB7CisgCS8vIFdlIGtlZXAgaXQgaW4gcGtnLywganVzdCBsaWtlIHRoZSBvYmplY3QgZGlyZWN0b3J5IGFib3ZlLgorIAlpZiByZWJ1aWxkYWxsIHsKKyAJCXhyZW1vdmVhbGwodG9vbGRpcikKKysJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKKyAJfQorIAl4bWtkaXJhbGwodG9vbGRpcikKKysJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCisgCS8vIFJlbW92ZSB0b29sIGJpbmFyaWVzIGZyb20gYmVmb3JlIHRoZSB0b29sL2dvaG9zdG9zX2dvaG9zdGFyY2gKKyAJeHJlbW92ZWFsbChwYXRoZigiJXMvYmluL3Rvb2wiLCBnb3Jvb3QpKQorQEAgLTExNTUsMTEgKzExNjAsMjkgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCisgCXZhciBub0Jhbm5lciBib29sCisgCXZhciBkZWJ1ZyBib29sCisrCXZhciBob3N0T25seSBib29sCisrCXZhciB0YXJnZXRPbmx5IGJvb2wKKysJdmFyIHRvQnVpbGQgPSBbXXN0cmluZyB7ICJzdGQiLCAiY21kIiB9CisrCisgCWZsYWcuQm9vbFZhcigmcmVidWlsZGFsbCwgImEiLCByZWJ1aWxkYWxsLCAicmVidWlsZCBhbGwiKQorIAlmbGFnLkJvb2xWYXIoJmRlYnVnLCAiZCIsIGRlYnVnLCAiZW5hYmxlIGRlYnVnZ2luZyBvZiBib290c3RyYXAgcHJvY2VzcyIpCisgCWZsYWcuQm9vbFZhcigmbm9CYW5uZXIsICJuby1iYW5uZXIiLCBub0Jhbm5lciwgImRvIG5vdCBwcmludCBiYW5uZXIiKQorKwlmbGFnLkJvb2xWYXIoJmhvc3RPbmx5LCAiaG9zdC1vbmx5IiwgaG9zdE9ubHksICJidWlsZCBvbmx5IGhvc3QgYmluYXJpZXMsIG5vdCB0YXJnZXQiKQorKwlmbGFnLkJvb2xWYXIoJnRhcmdldE9ubHksICJ0YXJnZXQtb25seSIsIHRhcmdldE9ubHksICJidWlsZCBvbmx5IHRhcmdldCBiaW5hcmllcywgbm90IGhvc3QiKQorIAorLQl4ZmxhZ3BhcnNlKDApCisrCXhmbGFncGFyc2UoLTEpCisrCisrCWlmIChob3N0T25seSAmJiB0YXJnZXRPbmx5KSB7CisrCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJfQorKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQorKwlpZiBmbGFnLk5BcmcoKSA+IDAgeworKwkJaWYgY3Jvc3NCdWlsZCB7CisrCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCisrCQl9IGVsc2UgeworKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJCX0KKysJfQorIAorIAlpZiBkZWJ1ZyB7CisgCQkvLyBjbWQvYnVpbGRpZCBpcyB1c2VkIGluIGRlYnVnIG1vZGUuCitAQCAtMTIwNyw4ICsxMjMwLDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJeHByaW50ZigiXG4iKQorIAl9CisgCistCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKKy0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKKysJLy8gRm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzL2Nyb3NzLWNhbmFkaWFuIGJ1aWxkcywgd2UgZG9uJ3QKKysJLy8gd2FudCB0byBiZSBzZXR0aW5nIHRoZXNlIGZsYWdzIHVudGlsIGFmdGVyIHdlIGhhdmUgY29tcGlsZWQKKysJLy8gdGhlIHRvb2xjaGFpbiB0aGF0IHJ1bnMgb24gdGhlIGJ1aWxkIGhvc3QuCisrCWlmICEgY3Jvc3NCdWlsZCB7CisrCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93CisrCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQorKwl9CisgCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQorIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKKyAJaWYgZGVidWcgeworQEAgLTEyMzcsNyArMTI2NSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCistCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCisrCX0gZWxzZSB7CisrCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwl9CisgCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQorIAlpZiBkZWJ1ZyB7CisgCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCitAQCAtMTI3NCw1MCArMTMwNiw4NCBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKyAKKy0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggeworLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKKysJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKKysJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgeworKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCisrCQkJeHJlbW92ZShmKQorKwkJfQorKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQorKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKKysJCWlmIGhvc3RPbmx5IHsKKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQorKworKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7CisrCQkJZ29vcyA9IG9sZGdvb3MKKysJCQlnb2FyY2ggPSBvbGRnb2FyY2gKKysJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQorIAkJfQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJfSBlbHNlIHsKKy0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCistCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKy0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKysKKysJCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKysJCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKysJCX0gZWxzZSB7CisrCQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KKysJCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKysJCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKyAKKy0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCistCQl9CistCQlnb29zID0gb2xkZ29vcworLQkJZ29hcmNoID0gb2xkZ29hcmNoCistCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorLQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCistCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorLQl9CistCXRhcmdldHMgOj0gW11zdHJpbmd7InN0ZCIsICJjbWQifQorLQlpZiBnb29zID09ICJqcyIgJiYgZ29hcmNoID09ICJ3YXNtIiB7CistCQkvLyBTa2lwIHRoZSBjbWQgdG9vbHMgZm9yIGpzL3dhc20uIFRoZXkncmUgbm90IHVzYWJsZS4KKy0JCXRhcmdldHMgPSB0YXJnZXRzWzoxXQorLQl9CistCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShjbWRHbywgdGFyZ2V0cy4uLikKKy0JaWYgZGVidWcgeworLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQorLQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCistCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQorKwkJaWYgZGVidWcgeworKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisrCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKysJCX0KKyAJfQorIAorIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgorQEAgLTEzMzUsNyArMTQwMSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAorIAkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCistCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCisrCS8vIGtlZXAgaXQuCisrCWlmICEgY3Jvc3NCdWlsZCB7CisrCQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKKysJfQorIAorIAkvLyBQcmludCB0cmFpbGluZyBiYW5uZXIgdW5sZXNzIGluc3RydWN0ZWQgb3RoZXJ3aXNlLgorIAlpZiAhbm9CYW5uZXIgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMTdlNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKQEAgLTAsMCArMSwxMDYgQEAKK0Zyb20gN2NjNjBiMzg4N2JlMmQ1Njc0YjlmNWQ0MjJkMDIyOTc2Y2YyMDVlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBGcmksIDIgTWFyIDIwMTggMDY6MDA6MjAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0CisKK1RoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKK3N0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCitiZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCitsaWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKK3RoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKK3NldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgorCitUaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQoraW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCitlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKworLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbyB8ICAzICsrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyAgfCAgNSArKysrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCisKK0luZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCisrKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworQEAgLTYwMCw2ICs2MDAsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoCisgCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0geworIAkJCQljb250aW51ZQorIAkJCX0KKysJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7CisrCQkJCWNvbnRpbnVlCisrCQkJfQorIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCisgCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAorIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQorSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTQ3LDYgKzE0Nyw3IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgorIH0KKyAKKyBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQorK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQorIAorIGZ1bmMgaW5pdCgpIHsKKyAJLy8gYnJlYWsgaW5pdCBjeWNsZQorQEAgLTE2MCw2ICsxNjEsMTAgQEAgZnVuYyBpbml0KCkgeworIAorIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQorIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCisrCisrCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7CisrCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCisrCX0KKyB9CisgCisgLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQorSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtNDQwLDYgKzQ0MCwyMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZChhICpBY3Rpb24pIChlcnIKKyAJCXJldHVybiBmbXQuRXJyb3JmKCJtb2R1bGUgcmVxdWlyZXMgR28gJXMiLCBwLk1vZHVsZS5Hb1ZlcnNpb24pCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgKGEuUGFja2FnZS5TdGFuZGFyZCB8fCBhLlBhY2thZ2UuR29yb290KSB7CisrCQlfLCBlcnIgOj0gb3MuU3RhdChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJaWYgZXJyID09IG5pbCB7CisrCQkJYS5idWlsdCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLlRhcmdldCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLmJ1aWxkSUQgPSBiLmZpbGVIYXNoKGEuUGFja2FnZS5UYXJnZXQpCisrCQkJYS5QYWNrYWdlLlN0YWxlID0gZmFsc2UKKysJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAiR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwkJYS5QYWNrYWdlLlN0YWxlID0gdHJ1ZQorKwkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIm1pc3Npbmcgb3IgaW52YWxpZCBHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKKysJCWlmIGIuSXNDbWRMaXN0IHsKKysJCQlyZXR1cm4gbmlsCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQorQEAgLTE0MzUsNiArMTQ1MiwxNCBAQCBmdW5jIEJ1aWxkSW5zdGFsbEZ1bmMoYiAqQnVpbGRlciwgYSAqQWN0CisgCQlyZXR1cm4gbmlsCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgYS5QYWNrYWdlICE9IG5pbCB7CisrCQlwIDo9IGEuUGFja2FnZQorKwkJaWYgcC5TdGFuZGFyZCB8fCBwLkdvcm9vdCB7CisrCQkJZXJyIDo9IGZtdC5FcnJvcmYoImF0dGVtcHRpbmcgdG8gaW5zdGFsbCBwYWNrYWdlICVzIGludG8gcmVhZC1vbmx5IEdPUk9PVCIsIHAuSW1wb3J0UGF0aCkKKysJCQlyZXR1cm4gZXJyCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNjczNzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSwxMjggQEAKK0Zyb20gMzVlYTRiZTM0ZTk0OTEyYjAwODM3ZTBmN2M3Mzg1ZjJlOThmZTc2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTdW4sIDE4IEZlYiAyMDE4IDA4OjI0OjA1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAorCitSZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK2ZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgorbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyAgICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28gICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbyB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbyAgICB8IDIgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitpbmRleCA4N2U4MDkxLi5mNTIyYTYzIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCQlUTFNJRXRvTEU6ICAgICAgICB0bHNJRXRvTEUsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLXg4Ni02NC5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK2luZGV4IDc4OGJlNjguLjFkMmI5MGUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK0BAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQorKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KK2luZGV4IDQwNWQyMmQuLmIxMTU2NTkgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworaW5kZXggYzVkMzQ1MS4uZmQ4NWU2MyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitAQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK2luZGV4IDgzOTc0ZTUuLjA5NzIyNGYgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCitpbmRleCAyNzNkOWI0Li5hNTAzYWJlIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCisgCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KK2luZGV4IDlhYzdlYjguLjM4MjVmZjcgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCisgCisgCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4CisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworaW5kZXggNmE3NDRkYy4uZDgxZjM5MiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCisrCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDQ0ZjIzMGIuLjZkOWFhNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKQEAgLTEsOSArMSw5IEBACiBpbmhlcml0IGNyb3NzCiAKLVBST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIgorUFJPVklERVMgPSAidmlydHVhbC8ke1RVTkVfUEtHQVJDSH0tZ28iCiBERVBFTkRTID0gImdvLW5hdGl2ZSIKIAotUE4gPSAiZ28tY3Jvc3MtJHtUQVJHRVRfQVJDSH0iCitQTiA9ICJnby1jcm9zcy0ke1RVTkVfUEtHQVJDSH0iCiAKIGV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgogZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjExLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MmU2MzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJEZXBlbmRlbmN5IG1hbmFnZW1lbnQgdG9vbCBmb3IgR29sYW5nIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9kZXAiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9MWJhZDMxNTY0Nzc1MWZhYjAwMDc4MTJmNzBkNDJjMGQiCi0KLUdPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCi1TUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaDtwYXRjaGRpcj1zcmMvZ2l0aHViLmNvbS9nb2xhbmcvZGVwIFwKLSAgICAgICAgICAiCi0KLSMgUG9pbnRzIHRvIDAuNC4xIHRhZwotU1JDUkVWID0gIjM3ZDllYTBhYzE2ZjBlMGEwNWFmYzNiNjBlMWFjOGMzNjRiNmMzMjkiCi0KLWluaGVyaXQgZ28KLQotR09fSU5TVEFMTCA9ICIke0dPX0lNUE9SVH0vY21kL2RlcCIKLQotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZjMjE4NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuMC5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkRlcGVuZGVuY3kgbWFuYWdlbWVudCB0b29sIGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT0xYmFkMzE1NjQ3NzUxZmFiMDAwNzgxMmY3MGQ0MmMwZCIKKworR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2RlcCIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoO3BhdGNoZGlyPXNyYy9naXRodWIuY29tL2dvbGFuZy9kZXAgXAorICAgICAgICAgICIKKworIyBQb2ludHMgdG8gMC41LjAgdGFnCitTUkNSRVYgPSAiMjI0YTU2NGFiZTI5NjY3MGI2OTJmZTA4YmI2M2EzZTRjNGFkNzk3OCIKKworaW5oZXJpdCBnbworCitHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9jbWQvZGVwIgorCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBmb3IgeDg2IGVuZHMgd2l0aCB0ZXh0cmVsIGluICR7UE59CisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODU2MzAvCisjIEVSUk9SOiBRQSBJc3N1ZTogRUxGIGJpbmFyeSAnL3dvcmsvaTU4Ni1vZS1saW51eC9nby1kZXAvMC40LjEtcjAvcGFja2FnZXMtc3BsaXQvZ28tZGVwL3Vzci9iaW4vZGVwJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKKworIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfS1wdGVzdAorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMyLworIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ28tZGVwLzAuNC4xLXIwL3BhY2thZ2VzLXNwbGl0L2dvLWRlcC1wdGVzdC91c3IvbGliL2dvLWRlcC9wdGVzdC9naXRodWIuY29tL2dvbGFuZy9kZXAvY21kL2RlcC9kZXAudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXSAgCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAidGV4dHJlbCIKKworIyBGb3IgY29tcGlsaW5nIHB0ZXN0IG9uIG1pcHMgYW5kIG1pcHM2NCwgdGhlIGN1cnJlbnQgZ28tZGVwIHZlcnNpb24gZmFpbHMgd2l0aCB0aGUgZ28gMS4xMSB0b29sY2hhaW4uCisjIGVycm9yIG1lc3NhZ2U6IHZldCBjb25maWcgbm90IGZvdW5kCitQVEVTVF9FTkFCTEVEX21pcHMgPSAiMCIKK1BURVNUX0VOQUJMRURfbWlwczY0ID0gIjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYwppbmRleCBiNzZmYjA4Li4yMDc3MDg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKQEAgLTEsNyArMSwzIEBACi0jIFVzZSBpbW1lZGlhdGUgYXNzaW5nbWVudCBoZXJlIHRvIGdldCB0aGUgb3JpZ2luYWwgKC91c3IvbGliKQotIyBpbnN0ZWFkIG9mIHRoZSBvbmUgcmV3cml0dGVuIGJ5IG5hdGl2ZS5iYmNsYXNzLgotbm9uc3RhZ2luZ19saWJkaXIgOj0gIiR7bGliZGlyfSIKLQogaW5oZXJpdCBuYXRpdmUKIAogU1JDX1VSSV9hcHBlbmQgPSAiIGh0dHBzOi8vZGwuZ29vZ2xlLmNvbS9nby9nbzEuNC1ib290c3RyYXAtMjAxNzEwMDMudGFyLmd6O25hbWU9Ym9vdHN0cmFwO3N1YmRpcj1nbzEuNCIKQEAgLTIwLDcgKzE2LDcgQEAKIH0KIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09ST09UX0ZJTkFMPSIke25vbnN0YWdpbmdfbGliZGlyfS9nbyIKKwlleHBvcnQgR09ST09UX0ZJTkFMPSIke2xpYmRpcl9uYXRpdmV9L2dvIgogCWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQPSIke1dPUktESVJ9L2dvMS40L2dvIgogCiAJY2Qgc3JjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKaW5kZXggMDA0MWU4YS4uYzIxOWFhMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTEsNCArMSw0IEBACi1ERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIGdvLW5hdGl2ZSIKK0RFUEVORFMgPSAidmlydHVhbC8ke1RVTkVfUEtHQVJDSH0tZ28gZ28tbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjExLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwppbmRleCAyOWExMzQ0Li5jMjI5YWIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKQEAgLTEsNCArMSw0IEBACi1ERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIGdvLW5hdGl2ZSIKK0RFUEVORFMgPSAidmlydHVhbC8ke1RVTkVfUEtHQVJDSH0tZ28gZ28tbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsgZ28tbmF0aXZlIgogCiBleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjExLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIKaW5kZXggZWM1YTMxNC4uN2RhNzg5NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgpAQCAtMTUsMyArMTUsMTAgQEAKIAkuL21ha2UuYmFzaAogCWNkICR7Qn0KIH0KKworIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfQorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjM0LworIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ28vMS45LjctcjAvcGFja2FnZXMtc3BsaXQvZ28vdXNyL2xpYi9nby9iaW4vZ28nIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dvLzEuOS43LXIwL3BhY2thZ2VzLXNwbGl0L2dvL3Vzci9saWIvZ28vcGtnL3Rvb2wvbGludXhfYXJtNjQvdHJhY2UnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dvLzEuOS43LXIwL3BhY2thZ2VzLXNwbGl0L2dvL3Vzci9saWIvZ28vcGtnL3Rvb2wvbGludXhfYXJtNjQvcHByb2YnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0KK0lOU0FORV9TS0lQXyR7UE59ICs9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZDZkMzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvZ3JhbSBmb3IgY3JlYXRpbmcgc2ltcGxlIG1hbiBwYWdlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1ERVBFTkRTID0gImF1dG9jb25mLW5hdGl2ZSBhdXRvbWFrZS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFjODg2MDYzYzllMGFiNDYzOTA2ZGU4MDQ1OTZhYTJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYTYwYjI1MTlmZGJlOTdmNDYzZmUyZGY2NmE2MTg4ZDE4YjUxNGJmZDQ0MTI3ZDk4NWYwMjM0ZWUyNDYxYjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG5hdGl2ZQotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW5scyIKLQotIyBXZSBkb24ndCB3YW50IHRvIHJlY29uZmlndXJlIHRoaW5ncyBhcyBpdCB3b3VsZCByZXF1aXJlICdwZXJsbmF0aXZlJyB0byBiZQotIyB1c2VkLgotZG9fY29uZmlndXJlKCkgewotCW9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcGVybAotCXNlZCAtaSAtZSAiMXM6IyEuKjojISAvdXNyL2Jpbi9lbnYgcGVybDoiICR7RH0ke2JpbmRpcn0vaGVscDJtYW4KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NGQzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny42LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiUHJvZ3JhbSBmb3IgY3JlYXRpbmcgc2ltcGxlIG1hbiBwYWdlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitERVBFTkRTID0gImF1dG9jb25mLW5hdGl2ZSBhdXRvbWFrZS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjc0MjQ5MDFlNmVjYThhZjM3MmQyYWQ2MmJlNWNmNjU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5MWIwMjk1YjcyYTYzOGU0YTU2NGY2NDNlNGU2ZDE5Mjg3NzkxMzFmNjI4YzAwZjM1NmMxM2JmMzM2ZGU0NmYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG5hdGl2ZQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW5scyIKKworIyBXZSBkb24ndCB3YW50IHRvIHJlY29uZmlndXJlIHRoaW5ncyBhcyBpdCB3b3VsZCByZXF1aXJlICdwZXJsbmF0aXZlJyB0byBiZQorIyB1c2VkLgorZG9fY29uZmlndXJlKCkgeworCW9lX3J1bmNvbmYKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcGVybAorCXNlZCAtaSAtZSAiMXM6IyEuKjojISAvdXNyL2Jpbi9lbnYgcGVybDoiICR7RH0ke2JpbmRpcn0vaGVscDJtYW4KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc180LjAuYmIKaW5kZXggMDFhYzQ3Zi4uZmUzMjQ3ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc180LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc180LjAuYmIKQEAgLTE0LDYgKzE0LDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkOTJhMjg4ZDcwZjMwNmQzODk1ZTNhN2U5YzE0YzlhYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjYwZGFmNmYwMTFkZTBhY2I2MWRlNTdkYmE2MmYyMDU0YmIzOWYxOTk2MWQ2N2UwYzkxNjEwZjA3MWNhNDAzIgogCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKwogRVhUUkFfT0VNQUtFID0gImJpbmRpcj0ke2JpbmRpcn0gc2JpbmRpcj0ke3NiaW5kaXJ9IFwKICAgICAgICAgICAgICAgICBpbmNkaXI9JHtpbmNsdWRlZGlyfSBsaWJkaXI9JHtsaWJkaXJ9IFwKICAgICAgICAgICAgICAgICBtYW5kaXI9JHttYW5kaXJ9IFwKQEAgLTM0LDMgKzM2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAogICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1mY250bCBwZXJsLW1vZHVsZS1zdHJpY3QgcGVybC1tb2R1bGUtdmFycyBcCiAgICAgICAgICAgICAgICAgICAgICAgIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpMmNkZXRlY3QgaTJjZHVtcCBpMmNnZXQgaTJjc2V0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2kyY2RldGVjdF0gPSAiJHtzYmluZGlyfS9pMmNkZXRlY3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaTJjZHVtcF0gPSAiJHtzYmluZGlyfS9pMmNkdW1wIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2kyY2dldF0gPSAiJHtzYmluZGlyfS9pMmNnZXQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaTJjc2V0XSA9ICIke3NiaW5kaXJ9L2kyY3NldCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLXNldHVwLnNoCmluZGV4IDA0ODA4MjYuLjI1MjUwYjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1zZXR1cC5zaApAQCAtMjAsMTEgKzIwLDYgQEAKICMgU09GVFdBUkUuCiAjCiAKLSMgU2V0dXAgZW52aXJvbm1lbnQKLWZvciBlbnZfc2V0dXBfc2NyaXB0IGluIGBscyAkMS9lbnZpcm9ubWVudC1zZXR1cC0qYDsgZG8KLQkuICRlbnZfc2V0dXBfc2NyaXB0Ci1kb25lCi0KICMgSUNFQ0NfUEFUSCB3aWxsIGhhdmUgYmVlbiBmb3VuZCBpY2VjYy1lbnYuc2gKIGlmIFsgLXogIiRJQ0VDQ19QQVRIIiBdOyB0aGVuCiAgICAgZXhpdCAwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY29uLW5hbWluZy11dGlscy9pY29uLW5hbWluZy11dGlsc18wLjguOTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY29uLW5hbWluZy11dGlscy9pY29uLW5hbWluZy11dGlsc18wLjguOTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMzU2YjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNvbi1uYW1pbmctdXRpbHMvaWNvbi1uYW1pbmctdXRpbHNfMC44LjkwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmFibGVzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggY3VycmVudCBkZXNrdG9wIGljb24gdGhlbWVzIgotREVTQ1JJUFRJT04gPSAiQSBQZXJsIHNjcmlwdCB1c2VkIGZvciBtYWludGFpbmluZyBiYWNrd2FyZHMgXAotY29tcGF0aWJpbGl0eSB3aXRoIGN1cnJlbnQgZGVza3RvcCBpY29uIHRoZW1lcywgd2hpbGUgbWlncmF0aW5nIHRvIHRoZSBcCi1uYW1lcyBzcGVjaWZpZWQgaW4gdGhlIEljb24gTmFtaW5nIFNwZWNpZmljYXRpb24uIFRoZSBJY29uIE5hbWluZyBcCi1VdGlsaXRpZXMgbWFwIHRoZSBpY29uIG5hbWVzIHVzZWQgYnkgdGhlIEdOT01FIGFuZCBLREUgZGVza3RvcHMgdG8gdGhlIFwKLWljb24gbmFtZXMgcHJvcG9zZWQgaW4gdGhlIEljb24gTmFtaW5nIFNwZWNpZmljYXRpb24sIGFuZCBnZW5lcmF0ZSB0aGUgXAotaWNvbiBmaWxlcyBhcHByb3ByaWF0ZSB0byB0aGUgZGVza3RvcCBlbnZpcm9ubWVudCB5b3UgdXNlLiBUaGUgSWNvbiBcCi1OYW1pbmcgU3BlY2lmaWNhdGlvbiBwcm92aWRlcyBhIHN0YW5kYXJkIGxpc3Qgb2YgY29tbW9uIGljb24gY29udGV4dHMgXAotYW5kIG5hbWVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gbWFrZSBpY29uIHRoZW1lcyB3b3JrIGluIGEgZGVza3RvcCBcCi1lbnZpcm9ubWVudCBvciBhcHBsaWNhdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIG5hbWluZyBzcGVjaWZpY2F0aW9uLiAiCi1MSUNFTlNFID0gIkdQTHYyIgotREVQRU5EUyA9ICJsaWJ4bWwtc2ltcGxlLXBlcmwtbmF0aXZlIgotUFIgPSAicjUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly90YW5nby5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvaWNvbi1uYW1pbmctdXRpbHMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjJjNWM3YTQxOGU1ZWIzMjY4ZjY1ZTIxOTkzMjc3ZmJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0NGFiMjE5OWVkOGM2YTU1Y2UzNmZkNGZjZDhiODAyMWE1ZTIxZjViYWIwMjhjMGE3Y2RjZjUyYTU5MDJlMWMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGFsbGFyY2ggcGVybG5hdGl2ZQotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCSMgTWFrZSBzdXJlIHdlIHVzZSBvdXIgbmF0aXZlcGVybCB3cmFwcGVyLgotCXNlZCAtaSAtZSAiMXM6IyEuKjojIS91c3IvYmluL2VudiBuYXRpdmVwZXJsOiIgJHtTfS9pY29uLW5hbWUtbWFwcGluZy5wbC5pbgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kdGRzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxMGU2OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy4xLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgorREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgorCitTUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjA0OTY5YWQ1OWNjMzdiZGRkODM3NDFhMDhiOThmMzUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4N2U2MDhkNGQzZjdiZmRkMzZlZjc4ZDU2ZDUzYzc0ZTY2YWIyNzhkMzE4YjcxZTYwMDJhMzY5ZDM2ZjQ4NzMiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImpzb24tYy0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorIyBqc29uLWMgcmVsZWFzZXMgcGFnZSBpcyBmZXRjaGluZyB0aGUgbGlzdCBvZiByZWxlYXNlcyBpbiBzb21lIHdlaXJkIFhNTCBmb3JtYXQKKyMgZnJvbSBodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzIGFuZCBwcm9jZXNzZXMgaXQgd2l0aCBqYXZhc2NyaXB0IDotLworI1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzL2luZGV4Lmh0bWwiCitSRUNJUEVfVVBTVFJFQU1fVkVSU0lPTiA9ICIwLjEzLjEiCitSRUNJUEVfVVBTVFJFQU1fREFURSA9ICJNYXIgMDQsIDIwMTgiCitDSEVDS19EQVRFID0gIk1heSAwMiwgMjAxOCIKKworUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1yZHJhbmQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCisgICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYzMTlkZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkMgYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW5pcHVsYXRlIEpTT04gZGF0YSIKLURFU0NSSVBUSU9OID0gIkpTT04tQyBpbXBsZW1lbnRzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9iamVjdCBtb2RlbCB0aGF0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGNvbnN0cnVjdCBKU09OIG9iamVjdHMgaW4gQy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vanNvbi1jL2pzb24tYy93aWtpIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZTU0YjYwZmJiYzM1MTIzYmExOTNmZWE4ZWUyMTZmMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxMWZjNWQ5MGM3NzM3NWU1ZmM4NDAxZThiOWVmYmYyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzE2NzgwYmU5YWQxNmM0MmQ3YzI2YjAxNWE3ODRmZDVkZjRiMDkwOWZlZjBhYmE1MWNmYjEzZTQ5MmFjMjRkIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJqc29uLWMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLSMganNvbi1jIHJlbGVhc2VzIHBhZ2UgaXMgZmV0Y2hpbmcgdGhlIGxpc3Qgb2YgcmVsZWFzZXMgaW4gc29tZSB3ZWlyZCBYTUwgZm9ybWF0Ci0jIGZyb20gaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcyBhbmQgcHJvY2Vzc2VzIGl0IHdpdGggamF2YXNjcmlwdCA6LS8KLSNVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy9pbmRleC5odG1sIgotUkVDSVBFX1VQU1RSRUFNX1ZFUlNJT04gPSAiMC4xMyIKLVJFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkRlYyAwNywgMjAxNyIKLUNIRUNLX0RBVEUgPSAiSmFuIDMxLCAyMDE4IgotCi1SUFJPVklERVNfJHtQTn0gPSAibGlianNvbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXJkcmFuZCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBDbGVhbiB1cCBhdXRvY29uZiBjcnVmdCB0aGF0IHNob3VsZCBub3QgYmUgaW4gdGhlIHRhcmJhbGwKLSAgICBybSAtZiAke1N9L2NvbmZpZy5zdGF0dXMKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sLWNyb3NzXzIuNC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sLWNyb3NzXzIuNC42LmJiCmluZGV4IGIyNjgzMTAuLjUyMmJmM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC1jcm9zc18yLjQuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wtY3Jvc3NfMi40LjYuYmIKQEAgLTEzLDExICsxMywxOSBAQAogCXJtIC1mICR7U1RBR0lOR19EQVRBRElSfS9hY2xvY2FsL2x0Ki5tNAogfQogCisjCisjIGNjYWNoZSBtYXkgb3IgbWF5IG5vdCBiZSBJTkhFUklURUQsIHdlIHJlbW92ZSByZWZlcmVuY2VzIHRvIGl0IHNvIHRoZSBzc3RhdGUKKyMgYXJ0ZWZhY3Qgd29ya3Mgb24gYSBtYWNoaW5lIHdoZXJlIGl0cyBub3QgcHJlc2VudC4gbGlidG9vbC1jcm9zcyBpc24ndCB1c2VkCisjIGhlYXZpbHkgc28gYW55IHBlcmZvcm1hbmNlIGlzc3VlIGlzIG1pbm9yLgorIyBGaW5kIHJlZmVyZW5jZXMgdG8gTFRDQz0iY2NhY2hlIHh4eC1nY2MiIGFuZCBDQz0iY2NhY2hlIHh4eC1nY2MiCisjCiBkb19pbnN0YWxsICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwogCWluc3RhbGwgLW0gMDc1NSAke0hPU1RfU1lTfS1saWJ0b29sICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LyR7SE9TVF9TWVN9LWxpYnRvb2wKIAlzZWQgLWUgJ3NAXlwocHJlZGVwX29iamVjdHM9IlwpLipAXDEiQCcgXAogCSAgICAtZSAnc0BeXChwb3N0ZGVwX29iamVjdHM9IlwpLipAXDEiQCcgXAorCSAgICAtZSAnc0BeQ0M9ImNjYWNoZS5AQ0M9IkAnIFwKKwkgICAgLWUgJ3NAXkxUQ0M9ImNjYWNoZS5ATFRDQz0iQCcgXAogCSAgICAtaSAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8ke0hPU1RfU1lTfS1saWJ0b29sCiAJc2VkIC1pICcvXmFyY2hpdmVfY21kcz0vcy9cLW5vc3RkbGliLy9nJyAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8ke0hPU1RfU1lTfS1saWJ0b29sCiAJc2VkIC1pICcvXmFyY2hpdmVfZXhwc3ltX2NtZHM9L3MvXC1ub3N0ZGxpYi8vZycgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vJHtIT1NUX1NZU30tbGlidG9vbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sL211bHRpbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sL211bHRpbGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxOGYwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wvbXVsdGlsaWIucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorV2l0aG91dCB0aGlzIHBhdGNoIC91c3IvYmluL2xpYnRvb2xpemUgaXMgZGlmZmVyZW50IGZvciBlYWNoIG11bHRpbGliCitzaW5jZSB0aGVpciBob3N0LXRyaXBsZXRzIGFyZSBkaWZmZXJlbnQsIGRlc3BpdGUgdGhlcmUgYmVpbmcgbm8gZGlmZmVyZW5jZSBpbgordGhlIGZ1bmN0aW9uYWxpdHkgb2YgbGlidG9vbGl6ZSBpdHNlbGYuCisKK1VnbHksIGJ1dCBqdXN0IHBhdGNoIHRoaXMgb3V0LiBUaGlzIGZpeGVzIGlzc3VlcyB3aGVyZSBsaWJ0b29sIGFuZAorbGliWFgtbGlidG9vbCBjb3VsZG4ndCBiZSBpbnN0YWxsZWQgaW50byB0aGUgc2FtZSBzeXN0ZW0uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorUlAgMjAxOC83LzMwCisKK0luZGV4OiBsaWJ0b29sLTIuNC42L2xpYnRvb2xpemUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ0b29sLTIuNC42Lm9yaWcvbGlidG9vbGl6ZS5pbgorKysrIGxpYnRvb2wtMi40LjYvbGlidG9vbGl6ZS5pbgorQEAgLTExMyw3ICsxMTMsNyBAQCBZb3UgbXVzdCAnY2QnIHRvIHRoZSB0b3AgZGlyZWN0b3J5IG9mIHlvCisgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCisgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorIAorLSAgICAgICBob3N0LXRyaXBsZXQ6ICAgQGhvc3RfdHJpcGxldEAKKysgICAgICAgaG9zdC10cmlwbGV0ICAgIDxyZWRhY3RlZD4KKyAgICAgICAgdmVyc2lvbjogICAgICAgICRwcm9nbmFtZSAoR05VIEBQQUNLQUdFQCkgQFZFUlNJT05ACisgICAgICAgIGF1dG9tYWtlOiAgICAgICBgKCRBVVRPTUFLRSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYAorICAgICAgICBhdXRvY29uZjogICAgICAgYCgkQVVUT0NPTkYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgppbmRleCBiMDI2MjBiLi5mNWZkZDAwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sXzIuNC42LmJiCkBAIC0xLDUgKzEsNyBAQAogcmVxdWlyZSBsaWJ0b29sLSR7UFZ9LmluYwogCitTUkNfVVJJICs9ICJmaWxlOi8vbXVsdGlsaWIucGF0Y2giCisKIFJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgogCiAjCkBAIC0yNiwzICsyOCw3IEBACiAgICAgICAgICAgICAtZSAic0Ake0hPU1RUT09MU19ESVJ9L0BAZyIgXAogICAgICAgICAgICAgLWkgJHtEfSR7YmluZGlyfS9saWJ0b29sCiB9CisKK2luaGVyaXQgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2xpYnRvb2wiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1EaXNhYmxlLWdlbmVyYXRpbmctYS1uYXRpdmUtbGx2bS1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1EaXNhYmxlLWdlbmVyYXRpbmctYS1uYXRpdmUtbGx2bS1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MDllNGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA3Zjc3NDNjZTIzM2ZjZDczNWVjNTgwYzc1MjcwNDEzNDkzNjU4YWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTkgQXByIDIwMTggMTg6MDg6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBnZW5lcmF0aW5nIGEgbmF0aXZlIGxsdm0tY29uZmlnCi0KLU9wZW5FbWJlZGRlZCBhbHJlYWR5IGJ1aWxkcyB0aGlzIGFzIHBhcnQgb2YgbGx2bS1uYXRpdmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0IHwgMTYgLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0IGIvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQKLWluZGV4IDI1Zjk5Y2VjOTc4Li5jNDVlOWI2NDJhOCAxMDA2NDQKLS0tLSBhL3Rvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0Ci0rKysgYi90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dAotQEAgLTYzLDE5ICs2MywzIEBAIGVuZGlmKCkKLSAKLSAjIEFkZCB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgZ2VuZXJhdGlvbiBzdGVwLgotIGFkZF9maWxlX2RlcGVuZGVuY2llcygke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbGx2bS1jb25maWcuY3BwICR7QlVJTERWQVJJQUJMRVNfT0JKUEFUSH0pCi0tCi0taWYoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCi0tICBzZXQoJHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEUgIiR7TExWTV9OQVRJVkVfQlVJTER9L2Jpbi9sbHZtLWNvbmZpZyIpCi0tICBzZXQoJHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEUgJHske3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRX0gUEFSRU5UX1NDT1BFKQotLQotLSAgYWRkX2N1c3RvbV9jb21tYW5kKE9VVFBVVCAiJHske3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRX0iCi0tICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4gLS10YXJnZXQgbGx2bS1jb25maWcgLS1jb25maWcgJDxDT05GSUdVUkFUSU9OPgotLSAgICBERVBFTkRTICR7TExWTV9OQVRJVkVfQlVJTER9L0NNYWtlQ2FjaGUudHh0Ci0tICAgIFdPUktJTkdfRElSRUNUT1JZICR7TExWTV9OQVRJVkVfQlVJTER9Ci0tICAgIENPTU1FTlQgIkJ1aWxkaW5nIG5hdGl2ZSBsbHZtLWNvbmZpZy4uLiIKLS0gICAgVVNFU19URVJNSU5BTCkKLS0gIGFkZF9jdXN0b21fdGFyZ2V0KCR7cHJvamVjdH1OYXRpdmVMTFZNQ29uZmlnIERFUEVORFMgJHske3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRX0pCi0tICBhZGRfZGVwZW5kZW5jaWVzKCR7cHJvamVjdH1OYXRpdmVMTFZNQ29uZmlnIENPTkZJR1VSRV9MTFZNX05BVElWRSkKLS0KLS0gIGFkZF9kZXBlbmRlbmNpZXMobGx2bS1jb25maWcgJHtwcm9qZWN0fU5hdGl2ZUxMVk1Db25maWcpCi0tZW5kaWYoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCi0tLSAKLTIuMTcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoCmluZGV4IDIxZDJmODEuLjZhOTI4MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZjhlYTc2N2FmZGFhNDQwYzYzNjgwNDA2MzBlMWIzZWE2YTA5NzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhZWNjZjE2ZWFjY2RkODBlNGQ1ZWNhYTUxNjczY2U0YjJiYWMxMTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CiBEYXRlOiBGcmksIDE5IE1heSAyMDE3IDAwOjIyOjU3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBsbHZtOiBhbGxvdyBlbnYgb3ZlcnJpZGUgb2YgZXhlIHBhdGgKQEAgLTgsMTYgKzgsMTkgQEAKIHRoYW4gZnJvbSB0aGUgbmF0aXZlIHN5c3Jvb3QuIFRodXMgcHJvdmlkZSBhbiBlbnYgb3ZlcnJpZGUgZm9yIGNhbGxpbmcKIGxsdm0tY29uZmlnIGZyb20gYSB0YXJnZXQgc3lzcm9vdC4KIAorVG8gbGV0IGl0IHdvcmsgaW4gbXVsdGlsaWIgZW52aXJvbm1lbnQsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIGtub2IgdG8gc3VwcGx5CittdWx0aWxpYiBkaXJuYW1lIGFzIHdlbGwKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKwogU2lnbmVkLW9mZi1ieTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHRvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcCB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKyB0b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgfCAxNyArKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgYi90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKLWluZGV4IDA4YjA5NmFmYjA1Li5kOGQ3NzQyNzQ0ZSAxMDA2NDQKK2luZGV4IDA4YjA5NmFmYjA1Li4zNjBjYzVhYmY0ZSAxMDA2NDQKIC0tLSBhL3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAogKysrIGIvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCiBAQCAtMjI1LDYgKzIyNSwxMyBAQCBUeXBpY2FsIGNvbXBvbmVudHM6XG5cCkBAIC0zNCw2ICszNywzNiBAQAogICAgLy8gVGhpcyBqdXN0IG5lZWRzIHRvIGJlIHNvbWUgc3ltYm9sIGluIHRoZSBiaW5hcnk7IEMrKyBkb2Vzbid0CiAgICAvLyBhbGxvdyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgOjptYWluIGhvd2V2ZXIuCiAgICB2b2lkICpQID0gKHZvaWQgKikoaW50cHRyX3QpR2V0RXhlY3V0YWJsZVBhdGg7CitAQCAtMzA2LDEyICszMTMsMjAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgICBzdGQ6OnN0cmluZyBBY3RpdmVQcmVmaXgsIEFjdGl2ZUJpbkRpciwgQWN0aXZlSW5jbHVkZURpciwgQWN0aXZlTGliRGlyLAorICAgICAgICAgICAgICAgQWN0aXZlQ01ha2VEaXI7CisgICBzdGQ6OnN0cmluZyBBY3RpdmVJbmNsdWRlT3B0aW9uOworKyAgLy8gSGFjayBmb3IgWW9jdG86IHdlIG5lZWQgdG8gb3ZlcnJpZGUgdGhlIG11bHRpbGliIHBhdGggd2hlbiB3ZSBhcmUgdXNpbmcKKysgIC8vIGxsdm0tY29uZmlnIGZyb20gd2l0aGluIGEgdGFyZ2V0IHN5c3Jvb3QuCisrICBzdGQ6OnN0cmluZyBNdWx0aWxpYmRpciA9IHN0ZDo6Z2V0ZW52KCJZT0NUT19BTFRFUk5BVEVfTVVMVElMSUJfTkFNRSIpOworKyAgaWYgKE11bHRpbGliZGlyLmVtcHR5KCkpIHsKKysgICAgTXVsdGlsaWJkaXIgPSAiL2xpYiIgTExWTV9MSUJESVJfU1VGRklYOworKyAgfQorKworICAgaWYgKElzSW5EZXZlbG9wbWVudFRyZWUpIHsKKyAgICAgQWN0aXZlSW5jbHVkZURpciA9IHN0ZDo6c3RyaW5nKExMVk1fU1JDX1JPT1QpICsgIi9pbmNsdWRlIjsKKyAgICAgQWN0aXZlUHJlZml4ID0gQ3VycmVudEV4ZWNQcmVmaXg7CisgCisgICAgIC8vIENNYWtlIG9yZ2FuaXplcyB0aGUgcHJvZHVjdHMgZGlmZmVyZW50bHkgdGhhbiBhIG5vcm1hbCBwcmVmaXggc3R5bGUKKyAgICAgLy8gbGF5b3V0LgorKworICAgICBzd2l0Y2ggKERldmVsb3BtZW50VHJlZUxheW91dCkgeworICAgICBjYXNlIENNYWtlU3R5bGU6CisgICAgICAgQWN0aXZlQmluRGlyID0gQWN0aXZlT2JqUm9vdCArICIvYmluIjsKK0BAIC0zMzYsNyArMzUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgICAgIFNtYWxsU3RyaW5nPDI1Nj4gcGF0aChTdHJpbmdSZWYoTExWTV9UT09MU19JTlNUQUxMX0RJUikpOworICAgICBzeXM6OmZzOjptYWtlX2Fic29sdXRlKEFjdGl2ZVByZWZpeCwgcGF0aCk7CisgICAgIEFjdGl2ZUJpbkRpciA9IHBhdGguc3RyKCk7CistICAgIEFjdGl2ZUxpYkRpciA9IEFjdGl2ZVByZWZpeCArICIvbGliIiArIExMVk1fTElCRElSX1NVRkZJWDsKKysgICAgQWN0aXZlTGliRGlyID0gQWN0aXZlUHJlZml4ICsgTXVsdGlsaWJkaXI7CisgICAgIEFjdGl2ZUNNYWtlRGlyID0gQWN0aXZlTGliRGlyICsgIi9jbWFrZS9sbHZtIjsKKyAgICAgQWN0aXZlSW5jbHVkZU9wdGlvbiA9ICItSSIgKyBBY3RpdmVJbmNsdWRlRGlyOworICAgfQogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgppbmRleCBjYjNiYmE2Li43Mjc4NzYzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKQEAgLTE5LDE0ICsxOSwxMyBAQAogTExWTV9SRUxFQVNFID0gIiR7UFZ9IgogTExWTV9ESVIgPSAibGx2bSR7TExWTV9SRUxFQVNFfSIKIAotU1JDUkVWID0gIjA4OWQ0YzBjNDkwNjg3ZGI2Yzc1ZjFkMDc0ZTk5YzRkNDI5MzZhNTAiCitTUkNSRVYgPSAiNTEzNmRmNGQwODlhMDg2YjcwZDQ1MjE2MGFkNTQ1MTg2MTI2OTQ5OCIKIFBWID0gIjYuMCIKIEJSQU5DSCA9ICJyZWxlYXNlXzYwIgotUEFUQ0hfVkVSU0lPTiA9ICIwIgorUEFUQ0hfVkVSU0lPTiA9ICIxIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xsdm0tbWlycm9yL2xsdm0uZ2l0O2JyYW5jaD0ke0JSQU5DSH07cHJvdG9jb2w9aHR0cCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaCBcCiAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTQ1LDE0ICs0NCwxMyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkNhbm5vdCBtYXAgJyVzJyB0byBhIHN1cHBvcnRlZCBMTFZNIGFyY2hpdGVjdHVyZSIgJSBhKQogCi1kZWYgZ2V0X2xsdm1fdGFyZ2V0X2FyY2goYmIsIGQpOgotICAgIHJldHVybiBnZXRfbGx2bV9hcmNoKGJiLCBkLCAnVEFSR0VUX0FSQ0gnKQorZGVmIGdldF9sbHZtX2hvc3RfYXJjaChiYiwgZCk6CisgICAgcmV0dXJuIGdldF9sbHZtX2FyY2goYmIsIGQsICdIT1NUX0FSQ0gnKQorCiAjCiAjIERlZmF1bHQgdG8gYnVpbGQgYWxsIE9FLUNvcmUgc3VwcG9ydGVkIHRhcmdldCBhcmNoZXMgKHVzZXIgb3ZlcnJpZGFibGUpLgogIwotTExWTV9UQVJHRVRTID89ICIke0BnZXRfbGx2bV90YXJnZXRfYXJjaChiYiwgZCl9IgotTExWTV9UQVJHRVRTX3ByZXBlbmRfeDg2ID0gIkFNREdQVTsiCi1MTFZNX1RBUkdFVFNfcHJlcGVuZF94ODYtNjQgPSAiQU1ER1BVOyIKK0xMVk1fVEFSR0VUUyA/PSAiQU1ER1BVOyR7QGdldF9sbHZtX2hvc3RfYXJjaChiYiwgZCl9IgogCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjR0ID0gImFybSIKQEAgLTY1LDE3ICs2MywxOSBAQAogICAgICAgICAgICAgICAgICAgLURMTFZNX0VOQUJMRV9GRkk9T04gXAogICAgICAgICAgICAgICAgICAgLURGRklfSU5DTFVERV9ESVI9JChwa2ctY29uZmlnIC0tdmFyaWFibGU9aW5jbHVkZWRpciBsaWJmZmkpIFwKICAgICAgICAgICAgICAgICAgIC1ETExWTV9PUFRJTUlaRURfVEFCTEVHRU49T04gXAotICAgICAgICAgICAgICAgICAgLURMTFZNX1RBUkdFVFNfVE9fQlVJTEQ9IiR7TExWTV9UQVJHRVRTfSIgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX1RBUkdFVFNfVE9fQlVJTEQ9JyR7TExWTV9UQVJHRVRTfScgXAogICAgICAgICAgICAgICAgICAgLUcgTmluamEiCiAKIEVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCiAgICAgICAgICAgICAgICAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HOkJPT0w9T04gXAogICAgICAgICAgICAgICAgICAgLURMTFZNX1RBQkxFR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLXRibGdlbiR7UFZ9IFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9DT05GSUdfUEFUSD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS1jb25maWcke1BWfSBcCiAgICAgICAgICAgICAgICAgICIKIAogRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIlwKICAgICAgICAgICAgICAgICAgIC1EQ01BS0VfQ1JPU1NDT01QSUxJTkc6Qk9PTD1PTiBcCiAgICAgICAgICAgICAgICAgICAtRExMVk1fVEFCTEVHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2xsdm0tdGJsZ2VuJHtQVn0gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0NPTkZJR19QQVRIPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLWNvbmZpZyR7UFZ9IFwKICAgICAgICAgICAgICAgICAgIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2ZiM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24uaW5jCkBAIC0wLDAgKzEsMjggQEAKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXNvbmJ1aWxkLmNvbSIKK1NVTU1BUlkgPSAiQSBoaWdoIHBlcmZvcm1hbmNlIGJ1aWxkIHN5c3RlbSIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vbWVzb24tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ3RrZG9jLWZpeC1pc3N1ZXMtdGhhdC1hcmlzZS13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1MaW5rZXItcnVsZXMtbW92ZS1jcm9zc19hcmdzLWluLWZyb250LW9mLW91dHB1dF9hcmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naS1mbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ndGtkb2MtZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTJkOGFmZDkyMTc1MTI2MWUzNjE1MTY0MzQ2NGVmZDMzOTQxNjJmNjllZmJlOGNkNTNlMGE2NmIxY2YzOTVlYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMWJkYTM1MTlkOGMwZWIzNDM4MjY3MjY4YTc4MDg1ZSIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly8wMDAyLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzIgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIm5pbmphIHB5dGhvbjMtY29yZSBweXRob24zLW1vZHVsZXMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BvbGtpdC0xIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZkZDIzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBkODBkMDJhM2NhNmUyMWZhM2QwNTVjODhjMDUyMzRjMmViNGRiMTI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CitEYXRlOiBUaHUsIDI2IEp1bCAyMDE4IDE2OjMyOjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgYnVpbGRpbmcgYWxsYXJjaCByZWNpcGVzIGFnYWluCisKK1RoaXMgcmVnaXN0ZXJzICJhbGxhcmNoIiBhcyBhIGtub3duIENQVSBmYW1pbHkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKy0tLQorIG1lc29uYnVpbGQvZW52aXJvbm1lbnQucHkgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkgYi9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5CitpbmRleCBhMDU4MGEyLi43MTJiMWU4IDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQorKysrIGIvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQorQEAgLTczLDYgKzczLDcgQEAgZnJvbSAuY29tcGlsZXJzIGltcG9ydCAoCisgYnVpbGRfZmlsZW5hbWUgPSAnbWVzb24uYnVpbGQnCisgCisga25vd25fY3B1X2ZhbWlsaWVzID0gKAorKyAgICAnYWxsYXJjaCcsCisgICAgICdhYXJjaDY0JywKKyAgICAgJ2FybScsCisgICAgICdlMmsnLAorLS0gCisyLjEyLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmluZGV4IDE5MTJlOTQuLjdmZmQ2YzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtZ3RrZG9jLWZpeC1pc3N1ZXMtdGhhdC1hcmlzZS13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGM1NjkyY2FjOWM1NTU2NjQyODEzNzdhODJiZjhiMWU0NjkzNGY0MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNhYzRlNThjNTQ5NGJkN2U2MDNhMzI1YjViNWMyYjgwNzU4NDlmZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNjoxNjo0MSArMDMwMAotU3ViamVjdDogW1BBVENIIDEvM10gZ3RrZG9jOiBmaXggaXNzdWVzIHRoYXQgYXJpc2Ugd2hlbiBjcm9zcy1jb21waWxpbmcKK1N1YmplY3Q6IFtQQVRDSF0gZ3RrZG9jOiBmaXggaXNzdWVzIHRoYXQgYXJpc2Ugd2hlbiBjcm9zcy1jb21waWxpbmcKIAogU3BlY2lmaWNhbGx5OgogMSkgTWFrZSBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgd3JhcHBlciBmb3IgZXhlY3V0aW5nIGJpbmFyaWVzCkBAIC0yMSwxMCArMjEsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKLWluZGV4IDU2NzY1YTUuLjRmN2ZlMzAgMTAwNjQ0CitpbmRleCBjYjY5NjQxLi43MjdlYjZhIDEwMDY0NAogLS0tIGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CiArKysgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKLUBAIC03NjksNiArNzY5LDEwIEBAIFRoaXMgd2lsbCBiZWNvbWUgYSBoYXJkIGVycm9yIGluIHRoZSBmdXR1cmUuJycnKQorQEAgLTc5Miw2ICs3OTIsMTAgQEAgVGhpcyB3aWxsIGJlY29tZSBhIGhhcmQgZXJyb3IgaW4gdGhlIGZ1dHVyZS4nJycpCiAgICAgICAgICAgICAgICAgICctLW1vZGU9JyArIG1vZGVdCiAgICAgICAgICBpZiBuYW1lc3BhY2U6CiAgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0tbmFtZXNwYWNlPScgKyBuYW1lc3BhY2UpCkBAIC0zNSw1MyArMzUsMjggQEAKICAgICAgICAgIGFyZ3MgKz0gc2VsZi5fdW5wYWNrX2FyZ3MoJy0taHRtbGFyZ3M9JywgJ2h0bWxfYXJncycsIGt3YXJncykKICAgICAgICAgIGFyZ3MgKz0gc2VsZi5fdW5wYWNrX2FyZ3MoJy0tc2NhbmFyZ3M9JywgJ3NjYW5fYXJncycsIGt3YXJncykKICAgICAgICAgIGFyZ3MgKz0gc2VsZi5fdW5wYWNrX2FyZ3MoJy0tc2Nhbm9ianNhcmdzPScsICdzY2Fub2Jqc19hcmdzJywga3dhcmdzKQotQEAgLTc5NiwxNCArODAwLDIyIEBAIFRoaXMgd2lsbCBiZWNvbWUgYSBoYXJkIGVycm9yIGluIHRoZSBmdXR1cmUuJycnKQotICAgICAgICAgICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICdHaXIgaW5jbHVkZSBkaXJzIHNob3VsZCBiZSBpbmNsdWRlX2RpcmVjdG9yaWVzKCkuJykKLSAgICAgICAgIGNmbGFncy51cGRhdGUoZ2V0X2luY2x1ZGVfYXJncyhpbmNfZGlycykpCi0rCi0rICAgICAgICBjcm9zc19jX2FyZ3MgPSAiICIuam9pbihzdGF0ZS5lbnZpcm9ubWVudC5jcm9zc19pbmZvLmNvbmZpZ1sicHJvcGVydGllcyJdLmdldCgnY19hcmdzJywgIiIpKQotKyAgICAgICAgY3Jvc3NfbGlua19hcmdzID0gIiAiLmpvaW4oc3RhdGUuZW52aXJvbm1lbnQuY3Jvc3NfaW5mby5jb25maWdbInByb3BlcnRpZXMiXS5nZXQoJ2NfbGlua19hcmdzJywgIiIpKQotKwotICAgICAgICAgaWYgY2ZsYWdzOgotLSAgICAgICAgICAgIGFyZ3MgKz0gWyctLWNmbGFncz0lcycgJSAnICcuam9pbihjZmxhZ3MpXQotKyAgICAgICAgICAgIGFyZ3MgKz0gWyctLWNmbGFncz0lcyAlcycgJSAoY3Jvc3NfY19hcmdzLCcgJy5qb2luKGNmbGFncykpXQotICAgICAgICAgaWYgbGRmbGFnczoKLS0gICAgICAgICAgICBhcmdzICs9IFsnLS1sZGZsYWdzPSVzJyAlICcgJy5qb2luKGxkZmxhZ3MpXQotKyAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkZmxhZ3M9JXMgJXMnICUgKGNyb3NzX2xpbmtfYXJncywgJyAnLmpvaW4obGRmbGFncykpXQotICAgICAgICAgY29tcGlsZXIgPSBzdGF0ZS5lbnZpcm9ubWVudC5jb3JlZGF0YS5jb21waWxlcnMuZ2V0KCdjJykKLS0gICAgICAgIGlmIGNvbXBpbGVyOgotKyAgICAgICAgY3Jvc3NfY29tcGlsZXIgPSBzdGF0ZS5lbnZpcm9ubWVudC5jb3JlZGF0YS5jcm9zc19jb21waWxlcnMuZ2V0KCdjJykKLSsgICAgICAgIGlmIGNvbXBpbGVyIGFuZCBub3Qgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKLSAgICAgICAgICAgICBhcmdzICs9IFsnLS1jYz0lcycgJSAnICcuam9pbihjb21waWxlci5nZXRfZXhlbGlzdCgpKV0KLSAgICAgICAgICAgICBhcmdzICs9IFsnLS1sZD0lcycgJSAnICcuam9pbihjb21waWxlci5nZXRfbGlua2VyX2V4ZWxpc3QoKSldCi0rICAgICAgICBlbGlmIGNyb3NzX2NvbXBpbGVyIGFuZCBzdGF0ZS5lbnZpcm9ubWVudC5pc19jcm9zc19idWlsZCgpOgotKyAgICAgICAgICAgIGFyZ3MgKz0gWyctLWNjPSVzJyAlICcgJy5qb2luKGNyb3NzX2NvbXBpbGVyLmdldF9leGVsaXN0KCkpXQotKyAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkPSVzJyAlICcgJy5qb2luKGNyb3NzX2NvbXBpbGVyLmdldF9saW5rZXJfZXhlbGlzdCgpKV0KLSAKLSAgICAgICAgIHJldHVybiBhcmdzCi0gCiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weSBiL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKLWluZGV4IDQ0MDZiMjguLmI4NDY4MjcgMTAwNjQ0CitpbmRleCA5NDhkYzVhLi45YzViZDE5IDEwMDY0NAogLS0tIGEvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weQogKysrIGIvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weQotQEAgLTQ0LDEzICs0NCwxNCBAQCBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1oZWFkZXJzJywgZGVzdD0naWdub3JlX2hlYWRlcnMnLCBkZWZhdWx0PScnKQorQEAgLTQ1LDYgKzQ1LDcgQEAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pZ25vcmUtaGVhZGVycycsIGRlc3Q9J2lnbm9yZV9oZWFkZXJzJywgZGVmYXVsdD0nJykKICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5hbWVzcGFjZScsIGRlc3Q9J25hbWVzcGFjZScsIGRlZmF1bHQ9JycpCiAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tb2RlJywgZGVzdD0nbW9kZScsIGRlZmF1bHQ9JycpCiAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbnN0YWxsZGlyJywgZGVzdD0naW5zdGFsbF9kaXInKQogK3BhcnNlci5hZGRfYXJndW1lbnQoJy0tZ3RrZG9jLWV4ZS13cmFwcGVyJywgZGVzdD0nZ3RrZG9jX2V4ZV93cmFwcGVyJykKICAKLSBkZWYgZ3RrZG9jX3J1bl9jaGVjayhjbWQsIGN3ZCk6Ci0gICAgICMgUHV0IHN0ZGVyciBpbnRvIHN0ZG91dCBzaW5jZSB3ZSB3YW50IHRvIHByaW50IGl0IG91dCBhbnl3YXkuCisgZGVmIGd0a2RvY19ydW5fY2hlY2soY21kLCBjd2QsIGxpYnJhcnlfcGF0aHM9Tm9uZSk6CisgICAgIGlmIGxpYnJhcnlfcGF0aHMgaXMgTm9uZToKK0BAIC02NCw3ICs2NSw3IEBAIGRlZiBndGtkb2NfcnVuX2NoZWNrKGNtZCwgY3dkLCBsaWJyYXJ5X3BhdGhzPU5vbmUpOgogICAgICAjIFRoaXMgcHJlc2VydmVzIHRoZSBvcmRlciBvZiBtZXNzYWdlcy4KLSAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShjbWQsIGN3ZD1jd2QsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVClbMDoyXQorICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKGNtZCwgY3dkPWN3ZCwgZW52PWVudiwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKVswOjJdCiAgICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgogLSAgICAgICAgZXJyX21zZyA9IFsieyFyfSBmYWlsZWQgd2l0aCBzdGF0dXMgezpkfSIuZm9ybWF0KGNtZFswXSwgcC5yZXR1cm5jb2RlKV0KICsgICAgICAgIGVycl9tc2cgPSBbInshcn0gZmFpbGVkIHdpdGggc3RhdHVzIHs6ZH0iLmZvcm1hdChjbWQsIHAucmV0dXJuY29kZSldCiAgICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICAgZXJyX21zZy5hcHBlbmQob3V0KQogICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ1xuJy5qb2luKGVycl9tc2cpKQotQEAgLTU4LDcgKzU5LDcgQEAgZGVmIGd0a2RvY19ydW5fY2hlY2soY21kLCBjd2QpOgorQEAgLTc0LDcgKzc1LDcgQEAgZGVmIGd0a2RvY19ydW5fY2hlY2soY21kLCBjd2QsIGxpYnJhcnlfcGF0aHM9Tm9uZSk6CiAgZGVmIGJ1aWxkX2d0a2RvYyhzb3VyY2Vfcm9vdCwgYnVpbGRfcm9vdCwgZG9jX3N1YmRpciwgc3JjX3N1YmRpcnMsCiAgICAgICAgICAgICAgICAgICBtYWluX2ZpbGUsIG1vZHVsZSwKICAgICAgICAgICAgICAgICAgIGh0bWxfYXJncywgc2Nhbl9hcmdzLCBmaXh4cmVmX2FyZ3MsIG1rZGJfYXJncywKQEAgLTkwLDcgKzY1LDcgQEAKICAgICAgICAgICAgICAgICAgIGh0bWxfYXNzZXRzLCBjb250ZW50X2ZpbGVzLCBpZ25vcmVfaGVhZGVycywgbmFtZXNwYWNlLAogICAgICAgICAgICAgICAgICAgZXhwYW5kX2NvbnRlbnRfZmlsZXMsIG1vZGUpOgogICAgICBwcmludCgiQnVpbGRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgJXMiICUgbW9kdWxlKQotQEAgLTExMSw2ICsxMTIsOSBAQCBkZWYgYnVpbGRfZ3RrZG9jKHNvdXJjZV9yb290LCBidWlsZF9yb290LCBkb2Nfc3ViZGlyLCBzcmNfc3ViZGlycywKK0BAIC0xMzUsNiArMTM2LDkgQEAgZGVmIGJ1aWxkX2d0a2RvYyhzb3VyY2Vfcm9vdCwgYnVpbGRfcm9vdCwgZG9jX3N1YmRpciwgc3JjX3N1YmRpcnMsCiAgICAgIGlmIGdvYmplY3RfdHlwZXNmaWxlOgogICAgICAgICAgc2Nhbm9ianNfY21kID0gWydndGtkb2Mtc2NhbmdvYmonXSArIHNjYW5vYmpzX2FyZ3MgKyBbJy0tdHlwZXM9JyArIGdvYmplY3RfdHlwZXNmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbW9kdWxlPScgKyBtb2R1bGUsCkBAIC05OSw4ICs3NCw4IEBACiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZD0nICsgbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jZmxhZ3M9JyArIGNmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWxkZmxhZ3M9JyArIGxkZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZD0nICsgbGRdCi1AQCAtMjA3LDYgKzIxMSw3IEBAIGRlZiBydW4oYXJncyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1jYz0nICsgY2MsCitAQCAtMjM4LDYgKzI0Miw3IEBAIGRlZiBydW4oYXJncyk6CiAgICAgICAgICBta2RiYXJncywKICAgICAgICAgIG9wdGlvbnMuZ29iamVjdF90eXBlc2ZpbGUsCiAgICAgICAgICBzY2Fub2Jqc2FyZ3MsCkBAIC0xMDgsNiArODMsMyBAQAogICAgICAgICAgb3B0aW9ucy5sZCwKICAgICAgICAgIG9wdGlvbnMuY2MsCiAgICAgICAgICBvcHRpb25zLmxkZmxhZ3MsCi0tLSAKLTIuMTUuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNTZhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDJlODU1M2ZjMDFlNjJlYmM0ZmFhMjQwYmYyMDk4NGE4YTBhYzczODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAzIEp1bCAyMDE4IDEzOjU5OjA5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgQ1BVIGZhbWlseSB3YXJuaW5ncyBmYXRhbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tCisgbWVzb25idWlsZC9lbnZpcm9ubWVudC5weSB8IDYgKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkgYi9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5CitpbmRleCBkMjlhNzdmLi4yNjdhY2Y5IDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQorKysrIGIvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQorQEAgLTIzOSw5ICsyMzksNyBAQCBkZWYgZGV0ZWN0X2NwdV9mYW1pbHkoY29tcGlsZXJzKToKKyAgICAgICAgIHJldHVybiAneDg2XzY0JworIAorICAgICBpZiB0cmlhbCBub3QgaW4ga25vd25fY3B1X2ZhbWlsaWVzOgorLSAgICAgICAgbWxvZy53YXJuaW5nKCdVbmtub3duIENQVSBmYW1pbHkgeyFyfSwgcGxlYXNlIHJlcG9ydCB0aGlzIGF0ICcKKy0gICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzL25ldyB3aXRoIHRoZScKKy0gICAgICAgICAgICAgICAgICAgICAnb3V0cHV0IG9mIGB1bmFtZSAtYWAgYW5kIGBjYXQgL3Byb2MvY3B1aW5mb2AnLmZvcm1hdCh0cmlhbCkpCisrICAgICAgICByYWlzZSBFbnZpcm9ubWVudEV4Y2VwdGlvbignVW5rbm93biBDUFUgZmFtaWx5ICVzLCBzZWUgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NZXNvbi9Vbmtub3duQ1BVIGZvciBkaXJlY3Rpb25zLicgJSB0cmlhbCkKKyAKKyAgICAgcmV0dXJuIHRyaWFsCisgCitAQCAtMTAxNCw3ICsxMDEyLDcgQEAgY2xhc3MgQ3Jvc3NCdWlsZEluZm86CisgICAgICAgICAgICAgICAgICAgICByYWlzZSBFbnZpcm9ubWVudEV4Y2VwdGlvbignTWFsZm9ybWVkIHZhbHVlIGluIGNyb3NzIGZpbGUgdmFyaWFibGUgJXMuJyAlIGVudHJ5KQorIAorICAgICAgICAgICAgICAgICBpZiBlbnRyeSA9PSAnY3B1X2ZhbWlseScgYW5kIHJlcyBub3QgaW4ga25vd25fY3B1X2ZhbWlsaWVzOgorLSAgICAgICAgICAgICAgICAgICAgbWxvZy53YXJuaW5nKCdVbmtub3duIENQVSBmYW1pbHkgJXMsIHBsZWFzZSByZXBvcnQgdGhpcyBhdCBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvbmV3JyAlIHZhbHVlKQorKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW52aXJvbm1lbnRFeGNlcHRpb24oJ1Vua25vd24gQ1BVIGZhbWlseSAlcywgc2VlIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTWVzb24vVW5rbm93bkNQVSBmb3IgZGlyZWN0aW9ucy4nICUgdmFsdWUpCisgCisgICAgICAgICAgICAgICAgIGlmIHNlbGYub2tfdHlwZShyZXMpOgorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdbc11bZW50cnldID0gcmVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2gKaW5kZXggZGVkNDJkMS4uZjMyMjY3ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRldGVybWluZS1nLWlyLXNjYW5uZXItYW5kLWctaS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOTcyNjY3ZTBkNzg5YTY5NjlhNWQ3OTI0OTQwNGYzNTM5Zjg5MTgxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGI4NjBjYjhhMjJhZTg3NmI2MDg4OTM5ZGJhYmNhMjE2YmMyOTQzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjE4OjQ3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBnb2JqZWN0LWludHJvc3BlY3Rpb246IGRldGVybWluZSBnLWlyLXNjYW5uZXIgYW5kCitTdWJqZWN0OiBbUEFUQ0hdIGdvYmplY3QtaW50cm9zcGVjdGlvbjogZGV0ZXJtaW5lIGctaXItc2Nhbm5lciBhbmQKICBnLWlyLWNvbXBpbGVyIHBhdGhzIGZyb20gcGtnY29uZmlnCiAKIERvIG5vdCBoYXJkY29kZSB0aGUgbmFtZSBvZiB0aG9zZSBiaW5hcmllczsgZ29iamVjdC1pbnRyb3NwZWN0aW9uCkBAIC0xNiwxOSArMTYsMTkgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5Ci1pbmRleCA0ZjdmZTMwLi45NjEwY2Y2IDEwMDY0NAoraW5kZXggYjI5YmFiOS4uZGM0YzQwMSAxMDA2NDQKIC0tLSBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQogKysrIGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5Ci1AQCAtMzkwLDggKzM5MCw2IEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CitAQCAtMzkzLDggKzM5Myw2IEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CiAgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ0dpciB0YWtlcyBvbmUgYXJndW1lbnQnKQogICAgICAgICAgaWYga3dhcmdzLmdldCgnaW5zdGFsbF9kaXInKToKICAgICAgICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbignaW5zdGFsbF9kaXIgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGdlbmVyYXRlX2dpcigpLCBzZWUgImluc3RhbGxfZGlyX2dpciIgYW5kICJpbnN0YWxsX2Rpcl90eXBlbGliIicpCi0tICAgICAgICBnaXNjYW5uZXIgPSBmaW5kX3Byb2dyYW0oJ2ctaXItc2Nhbm5lcicsICdHaXInKQotLSAgICAgICAgZ2ljb21waWxlciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1jb21waWxlcicsICdHaXInKQorLSAgICAgICAgZ2lzY2FubmVyID0gc2VsZi5pbnRlcnByZXRlci5maW5kX3Byb2dyYW1faW1wbCgnZy1pci1zY2FubmVyJykKKy0gICAgICAgIGdpY29tcGlsZXIgPSBzZWxmLmludGVycHJldGVyLmZpbmRfcHJvZ3JhbV9pbXBsKCdnLWlyLWNvbXBpbGVyJykKICAgICAgICAgIGdpcnRhcmdldCA9IGFyZ3NbMF0KICAgICAgICAgIHdoaWxlIGhhc2F0dHIoZ2lydGFyZ2V0LCAnaGVsZF9vYmplY3QnKToKICAgICAgICAgICAgICBnaXJ0YXJnZXQgPSBnaXJ0YXJnZXQuaGVsZF9vYmplY3QKLUBAIC00MDIsNiArNDAwLDggQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKK0BAIC00MDUsNiArNDAzLDggQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKICAgICAgICAgICAgICAgICAgc2VsZi5naXJfZGVwID0gUGtnQ29uZmlnRGVwZW5kZW5jeSgnZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZW52aXJvbm1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyduYXRpdmUnOiBUcnVlfSkKQEAgLTM3LDYgKzM3LDMgQEAKICAgICAgICAgICAgICBwa2dhcmdzID0gc2VsZi5naXJfZGVwLmdldF9jb21waWxlX2FyZ3MoKQogICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbignZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRlcGVuZGVuY3kgd2FzIG5vdCBmb3VuZCwgZ2lyIGNhbm5vdCBiZSBnZW5lcmF0ZWQuJykKLS0tIAotMi4xNS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaAppbmRleCBhZjVlNmExLi5kYTQ3NzQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBmZmE3MmVhYzU2NTU4YWE0MTcxZGQ3MGFjMWU5YzI3YTA3MzM4ZmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNzYyZDg1YzgyM2FkZmVmYzI3YmE2MTI4YzdiOTk3YWE1MDE2NmNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE1IE5vdiAyMDE3IDE1OjA1OjAxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBuYXRpdmVfYmluZGlyCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZV9iaW5kaXIKIAogU29tZSBsaWJyYXJpZXMsIGxpa2UgUVQsIGhhdmUgcHJlLXByb2Nlc3NvcnMgdGhhdCBjb252ZXJ0IHRoZWlyIGlucHV0CiBmaWxlcyBpbnRvIHNvbWV0aGluZyB0aGF0IHRoZSBjcm9zcy1jb21waWxlciBjYW4gcHJvY2Vzcy4gV2UgZmluZCB0aGUKQEAgLTE3LDE1ICsxNywxNSBAQAogU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CiAKIC0tLQotIG1lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkgfCAxNiArKysrKysrKysrLS0tLS0tCisgbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weSB8IDE5ICsrKysrKysrKysrLS0tLS0tLS0KICBtZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weSAgIHwgIDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5IGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weQotaW5kZXggYmY3OWJjNS4uYzlmZDA4YyAxMDA2NDQKK2luZGV4IDZkMzY3OGYuLjkwZmRiODAgMTAwNjQ0CiAtLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5CiArKysgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5Ci1AQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIERlcGVuZGVuY3k6CitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIERlcGVuZGVuY3k6CiAgICAgIGRlZiBuZWVkX3RocmVhZHMoc2VsZik6CiAgICAgICAgICByZXR1cm4gRmFsc2UKICAKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgICAgIHJhaXNlIERlcGVuZGVuY3lFeGNlcHRpb24oJ3shcn0gaXMgbm90IGEgcGtnY29uZmlnIGRlcGVuZGVuY3knLmZvcm1hdChzZWxmLm5hbWUpKQogIAogICAgICBkZWYgZ2V0X2NvbmZpZ3Rvb2xfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSk6Ci1AQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKK0BAIC0xODMsNyArMTgzLDcgQEAgY2xhc3MgSW50ZXJuYWxEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgogICAgICAgICAgc2VsZi5zb3VyY2VzID0gc291cmNlcwogICAgICAgICAgc2VsZi5leHRfZGVwcyA9IGV4dF9kZXBzCiAgCkBAIC00MywzMyArNDMsNDcgQEAKICAgICAgICAgIHJhaXNlIERlcGVuZGVuY3lFeGNlcHRpb24oJ01ldGhvZCAiZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgpIiBpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGZvciBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5JykKICAKLUBAIC00MjUsMTAgKzQyNSwxNCBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CitAQCAtNTIzLDE1ICs1MjMsMTggQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgogICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIHNlbGYuaXNfZm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uX3JlcXMpCiAgCistICAgIGRlZiBfY2FsbF9wa2diaW5fcmVhbChzZWxmLCBhcmdzLCBlbnYpOgorLSAgICAgICAgY21kID0gc2VsZi5wa2diaW4uZ2V0X2NvbW1hbmQoKSArIGFyZ3MKKysgICAgZGVmIF9jYWxsX3BrZ2Jpbl9yZWFsKHNlbGYsIGFyZ3MsIGVudiwgdXNlX25hdGl2ZT1GYWxzZSk6CisrICAgICAgICBpZiB1c2VfbmF0aXZlOgorKyAgICAgICAgICAgIGNtZCA9IHNlbGYucGtnYmluLmdldF9jb21tYW5kKCkgKyAiLW5hdGl2ZSIgKyBhcmdzCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGNtZCA9IHNlbGYucGtnYmluLmdldF9jb21tYW5kKCkgKyBhcmdzCisgICAgICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKGNtZCwgZW52PWVudilbMDoyXQorICAgICAgICAgcmMsIG91dCA9IHAucmV0dXJuY29kZSwgb3V0LnN0cmlwKCkKKyAgICAgICAgIGNhbGwgPSAnICcuam9pbihjbWQpCisgICAgICAgICBtbG9nLmRlYnVnKCJDYWxsZWQgYHt9YCAtPiB7fVxue30iLmZvcm1hdChjYWxsLCByYywgb3V0KSkKKyAgICAgICAgIHJldHVybiByYywgb3V0CisgCiAtICAgIGRlZiBfY2FsbF9wa2diaW4oc2VsZiwgYXJncywgZW52PU5vbmUpOgogKyAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCB1c2VfbmF0aXZlPUZhbHNlKToKLSAgICAgICAgIGlmIG5vdCBlbnY6CisgICAgICAgICBpZiBlbnYgaXMgTm9uZToKKyAgICAgICAgICAgICBmZW52ID0gZW52CiAgICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbgotLSAgICAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShbc2VsZi5wa2diaW5dICsgYXJncywgZW52PWVudilbMDoyXQotKyAgICAgICAgaWYgdXNlX25hdGl2ZToKLSsgICAgICAgICAgICBwa2diaW4gPSBbc2VsZi5wa2diaW4gKyAiLW5hdGl2ZSJdCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHBrZ2JpbiA9IFtzZWxmLnBrZ2Jpbl0KLSsgICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUocGtnYmluICsgYXJncywgZW52PWVudilbMDoyXQotICAgICAgICAgcmV0dXJuIHAucmV0dXJuY29kZSwgb3V0LnN0cmlwKCkKK0BAIC01NDAsNyArNTQzLDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgdGFyZ3MgPSB0dXBsZShhcmdzKQorICAgICAgICAgY2FjaGUgPSBQa2dDb25maWdEZXBlbmRlbmN5LnBrZ2Jpbl9jYWNoZQorICAgICAgICAgaWYgKHNlbGYucGtnYmluLCB0YXJncywgZmVudikgbm90IGluIGNhY2hlOgorLSAgICAgICAgICAgIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXSA9IHNlbGYuX2NhbGxfcGtnYmluX3JlYWwoYXJncywgZW52KQorKyAgICAgICAgICAgIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXSA9IHNlbGYuX2NhbGxfcGtnYmluX3JlYWwoYXJncywgZW52LCB1c2VfbmF0aXZlKQorICAgICAgICAgcmV0dXJuIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXQogIAogICAgICBkZWYgX2NvbnZlcnRfbWluZ3dfcGF0aHMoc2VsZiwgYXJncyk6Ci1AQCAtNTIyLDcgKzUyNiw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKLSAgICAgICAgICAgICAjIGxpbmtlcnMgc3VjaCBhcyBNU1ZDLCBzbyBwcmVwZW5kIHRoZW0uCi0gICAgICAgICAgICAgc2VsZi5saW5rX2FyZ3MgPSBbJy1MJyArIGxwIGZvciBscCBpbiBsaWJwYXRoc10gKyBzZWxmLmxpbmtfYXJncworQEAgLTcxOCw3ICs3MjEsNyBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uYW1lLCBvdXRfcmF3KSkKKyAgICAgICAgIHNlbGYubGlua19hcmdzLCBzZWxmLnJhd19saW5rX2FyZ3MgPSBzZWxmLl9zZWFyY2hfbGlicyhvdXQsIG91dF9yYXcpCiAgCiAtICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CiArICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CiAgICAgICAgICBvcHRpb25zID0gWyctLXZhcmlhYmxlPScgKyB2YXJpYWJsZV9uYW1lLCBzZWxmLm5hbWVdCiAgCiAgICAgICAgICBpZiAnZGVmaW5lX3ZhcmlhYmxlJyBpbiBrd2FyZ3M6Ci1AQCAtNTM1LDcgKzUzOSw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKK0BAIC03MzEsNyArNzM0LDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgogIAogICAgICAgICAgICAgIG9wdGlvbnMgPSBbJy0tZGVmaW5lLXZhcmlhYmxlPScgKyAnPScuam9pbihkZWZpbml0aW9uKV0gKyBvcHRpb25zCiAgCkBAIC03OSwxMCArOTMsMTAgQEAKICAgICAgICAgIGlmIHJldCAhPSAwOgogICAgICAgICAgICAgIGlmIHNlbGYucmVxdWlyZWQ6CiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weQotaW5kZXggMWRiNTE4Yy4uNGVkMWQwNCAxMDA2NDQKK2luZGV4IDE5N2QyMmMuLmM2ODNkMjEgMTAwNjQ0CiAtLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weQogKysrIGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKLUBAIC0yMzksNyArMjM5LDcgQEAgY2xhc3MgUXRCYXNlRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorQEAgLTI4NSw3ICsyODUsNyBAQCBjbGFzcyBRdEJhc2VEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CiAgICAgICAgICBzZWxmLmJpbmRpciA9IHNlbGYuZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoY29yZSkKICAgICAgICAgIGlmIG5vdCBzZWxmLmJpbmRpcjoKICAgICAgICAgICAgICAjIElmIGV4ZWNfcHJlZml4IGlzIG5vdCBkZWZpbmVkLCB0aGUgcGtnLWNvbmZpZyBmaWxlIGlzIGJyb2tlbgpAQCAtOTEsNyArMTA1LDcgQEAKICAgICAgICAgICAgICBpZiBwcmVmaXg6CiAgICAgICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gb3MucGF0aC5qb2luKHByZWZpeCwgJ2JpbicpCiAgCi1AQCAtMzU5LDcgKzM1OSw3IEBAIGNsYXNzIFF0NERlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CitAQCAtNDI3LDcgKzQyNyw3IEBAIGNsYXNzIFF0NERlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CiAgICAgICAgICBhcHBsaWNhdGlvbnMgPSBbJ21vYycsICd1aWMnLCAncmNjJywgJ2x1cGRhdGUnLCAnbHJlbGVhc2UnXQogICAgICAgICAgZm9yIGFwcGxpY2F0aW9uIGluIGFwcGxpY2F0aW9uczoKICAgICAgICAgICAgICB0cnk6CkBAIC0xMDAsMTUgKzExNCwxMiBAQAogICAgICAgICAgICAgIGV4Y2VwdCBNZXNvbkV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgcGFzcwogIAotQEAgLTM2OSw3ICszNjksNyBAQCBjbGFzcyBRdDVEZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorQEAgLTQzNyw3ICs0MzcsNyBAQCBjbGFzcyBRdDVEZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgogICAgICAgICAgUXRCYXNlRGVwZW5kZW5jeS5fX2luaXRfXyhzZWxmLCAncXQ1JywgZW52LCBrd2FyZ3MpCiAgCiAgICAgIGRlZiBnZXRfcGtnY29uZmlnX2hvc3RfYmlucyhzZWxmLCBjb3JlKToKIC0gICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9KQogKyAgICAgICAgcmV0dXJuIGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJywge30sIHVzZV9uYXRpdmU9VHJ1ZSkKICAKLSAKLSAjIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgd2F5cyBvZiBkZXBlbmRpbmcgb24gU0RMMjoKLS0tIAotMi4xNS4xCi0KKyAgICAgZGVmIGdldF9wcml2YXRlX2luY2x1ZGVzKHNlbGYsIG1vZF9pbmNfZGlyLCBtb2R1bGUpOgorICAgICAgICAgcmV0dXJuIF9xdF9nZXRfcHJpdmF0ZV9pbmNsdWRlcyhtb2RfaW5jX2RpciwgbW9kdWxlLCBzZWxmLnZlcnNpb24pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9naS1mbGFncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL2dpLWZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNGMyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9naS1mbGFncy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitQYXNzIHRoZSBjb3JyZWN0IGNmbGFncy9sZGZsYWdzIHRvIHRoZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdG9vbHMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9wdWxsLzQyNjFdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitpbmRleCBjYjY5NjQxZS4uYmI0NDQ5YTAgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKKysrKyBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQorQEAgLTU3OSw3ICs1NzksMTAgQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKKyAgICAgICAgIGV4dGVybmFsX2xkZmxhZ3MgKz0gbGlzdChkZXBfZXh0ZXJuYWxfbGRmbGFncykKKyAgICAgICAgIHNjYW5fY29tbWFuZCArPSBbJy0tY2ZsYWdzLWJlZ2luJ10KKyAgICAgICAgIHNjYW5fY29tbWFuZCArPSBjZmxhZ3MKKy0gICAgICAgIHNjYW5fY29tbWFuZCArPSBzdGF0ZS5lbnZpcm9ubWVudC5jb3JlZGF0YS5nZXRfZXh0ZXJuYWxfYXJncyhsYW5nKQorKyAgICAgICAgaWYgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKKysgICAgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gc3RhdGUuZW52aXJvbm1lbnQuY3Jvc3NfaW5mby5jb25maWdbInByb3BlcnRpZXMiXS5nZXQobGFuZyArICdfYXJncycsICIiKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2FyZ3MobGFuZykKKyAgICAgICAgIHNjYW5fY29tbWFuZCArPSBbJy0tY2ZsYWdzLWVuZCddCisgICAgICAgICAjIG5lZWQgdG8gcHV0IG91ciBvdXRwdXQgZGlyZWN0b3J5IGZpcnN0IGFzIHdlIG5lZWQgdG8gdXNlIHRoZQorICAgICAgICAgIyBnZW5lcmF0ZWQgbGlicmFyaWVzIGluc3RlYWQgb2YgYW55IHBvc3NpYmx5IGluc3RhbGxlZCBzeXN0ZW0vcHJlZml4CitAQCAtNjE0LDcgKzYxNCwxMiBAQCBjbGFzcyBHbm9tZU1vZHVsZShFeHRlbnNpb25Nb2R1bGUpOgorICAgICAgICAgICAgICAgICBzY2FuX2NvbW1hbmQuYXBwZW5kKCctTCcgKyBkKQorICAgICAgICAgICAgIHNjYW5fY29tbWFuZCArPSBbJy0tbGlicmFyeScsIGxpYm5hbWVdCisgCistICAgICAgICBmb3IgbGlua19hcmcgaW4gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2xpbmtfYXJncyhsYW5nKToKKysgICAgICAgIGlmIHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6CisrICAgICAgICAgICAgbGlua19hcmdzID0gc3RhdGUuZW52aXJvbm1lbnQuY3Jvc3NfaW5mby5jb25maWdbInByb3BlcnRpZXMiXS5nZXQobGFuZyArICdfbGlua19hcmdzJywgIiIpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGxpbmtfYXJncyA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmdldF9leHRlcm5hbF9saW5rX2FyZ3MobGFuZykKKysKKysgICAgICAgIGZvciBsaW5rX2FyZyBpbiBsaW5rX2FyZ3M6CisgICAgICAgICAgICAgaWYgbGlua19hcmcuc3RhcnRzd2l0aCgnLUwnKToKKyAgICAgICAgICAgICAgICAgc2Nhbl9jb21tYW5kLmFwcGVuZChsaW5rX2FyZykKKyAgICAgICAgIHNjYW5fY29tbWFuZCArPSBsaXN0KGV4dGVybmFsX2xkZmxhZ3MpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9ndGtkb2MtZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9ndGtkb2MtZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNmMzQ4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL2d0a2RvYy1mbGFncy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitFbnN1cmUgdGhhdCBpbiBhIGNyb3NzIGNvbXBpbGUgb25seSB0aGUgdGFyZ2V0IGZsYWdzIGFyZSBwYXNzZWQgdG8gZ3RrLWRvYywgYW5kCitub3QgdGhlIG5hdGl2ZSBmbGFncy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3B1bGwvNDI2MV0KK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKK2luZGV4IDRhZjMzMzA0Li44NzUxZjUzYyAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQorKysrIGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitAQCAtODUxLDE3ICs4NTEsMzAgQEAgVGhpcyB3aWxsIGJlY29tZSBhIGhhcmQgZXJyb3IgaW4gdGhlIGZ1dHVyZS4nJycpCisgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5jZC5oZWxkX29iamVjdCwgKHN0ciwgYnVpbGQuSW5jbHVkZURpcnMpKToKKyAgICAgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAnR2lyIGluY2x1ZGUgZGlycyBzaG91bGQgYmUgaW5jbHVkZV9kaXJlY3RvcmllcygpLicpCisrCisgICAgICAgICBjZmxhZ3MudXBkYXRlKGdldF9pbmNsdWRlX2FyZ3MoaW5jX2RpcnMpKQorLSAgICAgICAgY2ZsYWdzLnVwZGF0ZShzdGF0ZS5lbnZpcm9ubWVudC5jb3JlZGF0YS5nZXRfZXh0ZXJuYWxfYXJncygnYycpKQorKyAgICAgICAgaWYgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKKysgICAgICAgICAgICBjZmxhZ3MudXBkYXRlKHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdjX2FyZ3MnLCAiIikpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGNmbGFncy51cGRhdGUoc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2FyZ3MoJ2MnKSkKKysKKyAgICAgICAgIGxkZmxhZ3MgPSBPcmRlcmVkU2V0KCkKKyAgICAgICAgIGxkZmxhZ3MudXBkYXRlKGludGVybmFsX2xkZmxhZ3MpCistICAgICAgICBsZGZsYWdzLnVwZGF0ZShzdGF0ZS5lbnZpcm9ubWVudC5jb3JlZGF0YS5nZXRfZXh0ZXJuYWxfbGlua19hcmdzKCdjJykpCisrICAgICAgICBpZiBzdGF0ZS5lbnZpcm9ubWVudC5pc19jcm9zc19idWlsZCgpOgorKyAgICAgICAgICAgIGxkZmxhZ3MudXBkYXRlKHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdjX2xpbmtfYXJncycsICIiKSkKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgbGRmbGFncy51cGRhdGUoc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2xpbmtfYXJncygnYycpKQorICAgICAgICAgbGRmbGFncy51cGRhdGUoZXh0ZXJuYWxfbGRmbGFncykKKysKKyAgICAgICAgIGlmIGNmbGFnczoKKyAgICAgICAgICAgICBhcmdzICs9IFsnLS1jZmxhZ3M9JXMnICUgJyAnLmpvaW4oY2ZsYWdzKV0KKyAgICAgICAgIGlmIGxkZmxhZ3M6CisgICAgICAgICAgICAgYXJncyArPSBbJy0tbGRmbGFncz0lcycgJSAnICcuam9pbihsZGZsYWdzKV0KKy0gICAgICAgIGNvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY29tcGlsZXJzLmdldCgnYycpCisrCisrICAgICAgICBpZiBzdGF0ZS5lbnZpcm9ubWVudC5pc19jcm9zc19idWlsZCgpOgorKyAgICAgICAgICAgIGNvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY3Jvc3NfY29tcGlsZXJzLmdldCgnYycpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGNvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY29tcGlsZXJzLmdldCgnYycpCisgICAgICAgICBpZiBjb21waWxlcjoKKyAgICAgICAgICAgICBhcmdzICs9IFsnLS1jYz0lcycgJSAnICcuam9pbihjb21waWxlci5nZXRfZXhlbGlzdCgpKV0KKyAgICAgICAgICAgICBhcmdzICs9IFsnLS1sZD0lcycgJSAnICcuam9pbihjb21waWxlci5nZXRfbGlua2VyX2V4ZWxpc3QoKSldCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9tZXNvbi1zZXR1cC5weSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL21lc29uLXNldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE5NzQ5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9tZXNvbi1zZXR1cC5weQpAQCAtMCwwICsxLDYyIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitkZWYgYmFpbChtc2cpOgorICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0KDEpCisKK19NQVJLRVIgPSAnQEAnCitkZWYgdHJhbnNmb3JtX2xpbmUobGluZSk6CisgICAgIyBTdWJzdGl0dXRlIGFueSBzcGVjaWFsIG1hcmtlcnMgb2YgdGhpcyBmb3JtOgorICAgICMgQEBFTlZAQAorICAgICMgd2l0aCB0aGUgdmFsdWUgb2YgRU5WLCBzcGxpdCBpbnRvIG1lc29uIGFycmF5IHN5bnRheC4KKyAgICBzdGFydCA9IGxpbmUuZmluZChfTUFSS0VSKQorICAgIGlmIHN0YXJ0ID09IC0xOgorICAgICAgICByZXR1cm4gbGluZQorCisgICAgZW5kID0gbGluZS5yZmluZChfTUFSS0VSKQorICAgIGlmIGVuZCA9PSBzdGFydDoKKyAgICAgICAgcmV0dXJuIGxpbmUKKworICAgICMgTG9va3VwIHZhbHVlIG9mIHRoZSBlbnYgdmFyLgorICAgIHZhciA9IGxpbmVbc3RhcnQrbGVuKF9NQVJLRVIpOmVuZF0KKyAgICB0cnk6CisgICAgICAgIHZhbCA9IG9zLmVudmlyb25bdmFyXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgYmFpbCgnY2Fubm90IGdlbmVyYXRlIG1lc29uLmNyb3NzOyBlbnYgdmFyICVzIG5vdCBzZXQnICUgdmFyKQorCisgICAgIyBUcmFuc2Zvcm0gaW50byBtZXNvbiBhcnJheS4KKyAgICB2YWwgPSBbIiclcyciICUgeCBmb3IgeCBpbiB2YWwuc3BsaXQoKV0KKyAgICB2YWwgPSAnLCAnLmpvaW4odmFsKQorICAgIHZhbCA9ICdbJXNdJyAlIHZhbAorCisgICAgYmVmb3JlID0gbGluZVs6c3RhcnRdCisgICAgYWZ0ZXIgPSBsaW5lW2VuZCtsZW4oX01BUktFUik6XQorCisgICAgcmV0dXJuICclcyVzJXMnICUgKGJlZm9yZSwgdmFsLCBhZnRlcikKKworIyBNYWtlIHN1cmUgdGhpcyBpcyByZWFsbHkgYW4gU0RLIGV4dHJhY3Rpb24gZW52aXJvbm1lbnQuCit0cnk6CisgICAgc3lzcm9vdCA9IG9zLmVudmlyb25bJ09FQ09SRV9OQVRJVkVfU1lTUk9PVCddCitleGNlcHQgS2V5RXJyb3I6CisgICAgYmFpbCgnT0VDT1JFX05BVElWRV9TWVNST09UIGVudiB2YXIgbXVzdCBiZSBzZXQnKQorCitjcm9zc19maWxlID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICd1c3Ivc2hhcmUvbWVzb24vbWVzb24uY3Jvc3MnKQordG1wX2Nyb3NzX2ZpbGUgPSAnJXMudG1wJyAlIGNyb3NzX2ZpbGUKKworIyBSZWFkIHRocm91Z2ggYW5kIHRyYW5zZm9ybSB0aGUgY3VycmVudCBtZXNvbi5jcm9zcy4KK2xpbmVzID0gW10KK3dpdGggb3Blbihjcm9zc19maWxlLCAncicpIGFzIGY6CisgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgbGluZXMuYXBwZW5kKHRyYW5zZm9ybV9saW5lKGxpbmUpKQorCisjIFdyaXRlIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQgdG8gYSB0bXAgZmlsZSBhbmQgYXRvbWljYWxseSByZW5hbWUgaXQuIEluIGNhc2UKKyMgd2UgY3Jhc2ggZHVyaW5nIHRoZSBmaWxlIHdyaXRlLCB3ZSBkb24ndCB3YW50IGFuIGludmFsaWQgbWVzb24uY3Jvc3MgZmlsZS4KK3dpdGggb3Blbih0bXBfY3Jvc3NfZmlsZSwgJ3cnKSBhcyBmOgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBmLndyaXRlKGxpbmUpCisgICAgZi5mbHVzaCgpCisgICAgb3MuZmRhdGFzeW5jKGYuZmlsZW5vKCkpCitvcy5yZW5hbWUodG1wX2Nyb3NzX2ZpbGUsIGNyb3NzX2ZpbGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9tZXNvbi13cmFwcGVyIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbWVzb24td3JhcHBlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iMmUwMGRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbWVzb24td3JhcHBlcgpAQCAtMCwwICsxLDE0IEBACisjIS9iaW4vc2gKKworaWYgWyAteiAiJE9FQ09SRV9OQVRJVkVfU1lTUk9PVCIgXTsgdGhlbgorICAgIGVjaG8gIk9FQ09SRV9OQVRJVkVfU1lTUk9PVCBub3Qgc2V0OyBhcmUgeW91IGluIGEgWW9jdG8gU0RLIGVudmlyb25tZW50PyIgPiYyCitmaQorCisjIElmIHRoZXNlIGFyZSBzZXQgdG8gYSBjcm9zcy1jb21waWxlIHBhdGgsIG1lc29uIHdpbGwgZ2V0IGNvbmZ1c2VkIGFuZCB0cnkgdG8KKyMgdXNlIHRoZW0gYXMgbmF0aXZlIHRvb2xzLiBVbnNldCB0aGVtIHRvIHByZXZlbnQgdGhpcywgYXMgYWxsIHRoZSBjcm9zcy1jb21waWxlCisjIGNvbmZpZyBpcyBhbHJlYWR5IGluIG1lc29uLmNyb3NzLgordW5zZXQgQ0MgQ1hYIENQUCBMRCBBUiBOTSBTVFJJUAorCitleGVjICIkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9iaW4vbWVzb24ucmVhbCIgXAorICAgICAtLWNyb3NzLWZpbGUgIiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NoYXJlL21lc29uL21lc29uLmNyb3NzIiBcCisgICAgICIkQCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE4MWRhYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQ0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCi1TVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODJiMTE5OGJmNzE0YjVhNGRhODRiZmU4Mzc2Yzc5Y2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVhMWE3MjE1NzRhZGIyMzE2MGI2NDgxMTkxYmNjMTE3M2YzNzRlMDJiMGZmM2JiMGFlODVkOTg4ZDk3ZTRmYSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcyIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSA9ICJuaW5qYSBweXRob24zLWNvcmUgcHl0aG9uMy1tb2R1bGVzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDcuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDcuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTdmYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40Ny4yLmJiCkBAIC0wLDAgKzEsMyBAQAoraW5jbHVkZSBtZXNvbi5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9uYXRpdmVzZGstbWVzb25fMC40Ny4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNDcuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzUwM2FhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNDcuMi5iYgpAQCAtMCwwICsxLDc0IEBACitpbmNsdWRlIG1lc29uLmluYworCitpbmhlcml0IG5hdGl2ZXNkaworCitTUkNfVVJJICs9ICJmaWxlOi8vbWVzb24tc2V0dXAucHkgXAorICAgICAgICAgICAgZmlsZTovL21lc29uLXdyYXBwZXIiCisKK2RlZiBtZXNvbl9hcnJheSh2YXIsIGQpOgorICAgIHJldHVybiAiJywgJyIuam9pbihkLmdldFZhcih2YXIpLnNwbGl0KCkpLmpvaW4oKCInIiwgIiciKSkKKworIyBib3RoIGFyZSByZXF1aXJlZCBidXQgbm90IHVzZWQgYnkgbWVzb24KK01FU09OX1NES19FTkRJQU4gPSAiYm9ndXMtZW5kaWFuIgorTUVTT05fVEFSR0VUX0VORElBTiA9ICJib2d1cy1lbmRpYW4iCisKK01FU09OX1RPT0xDSEFJTl9BUkdTID0gIiR7QlVJTERTREtfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIKK01FU09OX0NfQVJHUyA9ICIke01FU09OX1RPT0xDSEFJTl9BUkdTfSAke0JVSUxEU0RLX0NGTEFHU30iCitNRVNPTl9DUFBfQVJHUyA9ICIke01FU09OX1RPT0xDSEFJTl9BUkdTfSAke0JVSUxEU0RLX0NYWEZMQUdTfSIKK01FU09OX0xJTktfQVJHUyA9ICIke01FU09OX1RPT0xDSEFJTl9BUkdTfSAke0JVSUxEU0RLX0xERkxBR1N9IgorCisjIFRoaXMgbG9naWMgaXMgc2ltaWxhciBidXQgbm90IGlkZW50aWNhbCB0byB0aGF0IGluIG1lc29uLmJiY2xhc3MsIHNpbmNlIGl0J3MKKyMgZ2VuZXJhdGluZyBmb3IgYW4gU0RLIHJhdGhlciB0aGFuIGEgY3Jvc3MtY29tcGlsZS4gSW1wb3J0YW50IGRpZmZlcmVuY2VzIGFyZToKKyMgLSBXZSBjYW4ndCBzZXQgdmFycyBsaWtlIENDLCBDWFgsIGV0Yy4geWV0IGJlY2F1c2UgdGhleSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoCisjICAgcmVhbCBwYXRocyBieSBtZXNvbi1zZXR1cC5zaCB3aGVuIHRoZSBTREsgaXMgZXh0cmFjdGVkLgorIyAtIFNvbWUgb3ZlcnJpZGVzIGFyZW4ndCBuZWVkZWQsIHNpbmNlIHRoZSBTREsgaW5qZWN0cyBwYXRocyB0aGF0IHRha2UgY2FyZSBvZgorIyAgIHRoZW0uCithZGR0YXNrIHdyaXRlX2NvbmZpZyBiZWZvcmUgZG9faW5zdGFsbAorZG9fd3JpdGVfY29uZmlnW3ZhcmRlcHNdICs9ICJNRVNPTl9DX0FSR1MgTUVTT05fQ1BQX0FSR1MgTUVTT05fTElOS19BUkdTIENDIENYWCBMRCBBUiBOTSBTVFJJUCBSRUFERUxGIgorZG9fd3JpdGVfY29uZmlnKCkgeworICAgICMgVGhpcyBuZWVkcyB0byBiZSBQeSB0byBzcGxpdCB0aGUgYXJncyBpbnRvIHNpbmdsZS1lbGVtZW50IGxpc3RzCisgICAgY2F0ID4ke1dPUktESVJ9L21lc29uLmNyb3NzIDw8RU9GCitbYmluYXJpZXNdCitjID0gQEBDQ0BACitjcHAgPSBAQENYWEBACithciA9IEBAQVJAQAorbm0gPSBAQE5NQEAKK2xkID0gQEBMREBACitzdHJpcCA9IEBAU1RSSVBAQAorcGtnY29uZmlnID0gJ3BrZy1jb25maWcnCisKK1twcm9wZXJ0aWVzXQorbmVlZHNfZXhlX3dyYXBwZXIgPSB0cnVlCitjX2FyZ3MgPSBAQENGTEFHU0BACitjX2xpbmtfYXJncyA9IEBATERGTEFHU0BACitjcHBfYXJncyA9IEBAQ1BQRkxBR1NAQAorY3BwX2xpbmtfYXJncyA9IEBATERGTEFHU0BACisKK1tob3N0X21hY2hpbmVdCitzeXN0ZW0gPSAnJHtTREtfT1N9JworY3B1X2ZhbWlseSA9ICcke1NES19BUkNIfScKK2NwdSA9ICcke1NES19BUkNIfScKK2VuZGlhbiA9ICcke01FU09OX1NES19FTkRJQU59JworRU9GCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vbWVzb24KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tZXNvbi5jcm9zcyAke0R9JHtkYXRhZGlyfS9tZXNvbi8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWVzb24tc2V0dXAucHkgJHtEfSR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLworCisgICAgIyBXZSBuZWVkIHRvIHdyYXAgdGhlIHJlYWwgbWVzb24gd2l0aCBhIHRoaW4gZW52IHNldHVwIHdyYXBwZXIuCisgICAgbXYgJHtEfSR7YmluZGlyfS9tZXNvbiAke0R9JHtiaW5kaXJ9L21lc29uLnJlYWwKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tZXNvbi13cmFwcGVyICR7RH0ke2JpbmRpcn0vbWVzb24KK30KKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBuYXRpdmVzZGstbmluamEgXAorICAgIG5hdGl2ZXNkay1weXRob24zLWNvcmUgXAorICAgIG5hdGl2ZXNkay1weXRob24zLW1pc2MgXAorICAgIG5hdGl2ZXNkay1weXRob24zLW1vZHVsZXMgXAorICAgICIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWVzb24gJHtTREtQQVRITkFUSVZFfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKaW5kZXggNjlmMmViYS4uZjUzYzZjMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKQEAgLTEwLDkgKzEwLDkgQEAKIERFUEVORFMgPSAiemxpYiBsem8gZTJmc3Byb2dzIHV0aWwtbGludXgiCiBSREVQRU5EU19tdGQtdXRpbHMtdGVzdHMgKz0gImJhc2giCiAKLVBWID0gIjIuMC4xKyR7U1JDUFZ9IgorUFYgPSAiMi4wLjIrJHtTUkNQVn0iCiAKLVNSQ1JFViA9ICI5YzYxNzM1NTlmOTVlOTM5ZTY2ZWZiMmVjMzE5M2Q2ZjM2MThjZjY5IgorU1JDUkVWID0gImJjNjNkMzZlMzlmMzg5YzhjMTdmNmE4ZTlkYjQ3ZjJhY2M4ODQ2NTkiCiBTUkNfVVJJID0gImdpdDovL2dpdC5pbmZyYWRlYWQub3JnL210ZC11dGlscy5naXQgXAogICAgICAgICAgICBmaWxlOi8vYWRkLWV4Y2x1c2lvbi10by1ta2ZzLWpmZnMyLWdpdC0yLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LVJldHVybi1jb3JyZWN0LWVycm9yLW51bWJlci1pbi11YmlfZ2V0X3ZvbF9pbi5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzLzAwMDEtcmVtb3ZlLUxPQ0tfTkItdG8tdXNlLWJsb2NraW5nLXJlcXVlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzLzAwMDEtcmVtb3ZlLUxPQ0tfTkItdG8tdXNlLWJsb2NraW5nLXJlcXVlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDczODVhNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvMDAwMS1yZW1vdmUtTE9DS19OQi10by11c2UtYmxvY2tpbmctcmVxdWVzdC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDViZGJmZTBhNjNmZWQ0ODEwNGIxNzQxMjg1NGIyNmVlMjI3NTg2OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIyIEF1ZyAyMDE4IDE2OjU0OjM5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBMT0NLX05CIHRvIHVzZSBibG9ja2luZyByZXF1ZXN0CisKK1doaWxlIGludm9raW5nIG10b29scyBmcmVxdWVudGx5LCB0aGUgdW5ibG9ja2luZyByZXF1ZXN0CitjYXVzZWQgcmFjZSBpc3N1ZS4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHN5c2xpbnV4Citbc25pcF0KK2RkIGlmPS9kZXYvemVybyBvZj1mbG9wcHkuaW1nIGJzPTEwMjQgY291bnQ9MTQ0Citsb3NldHVwIC9kZXYvbG9vcDEgZmxvcHB5LmltZworbWtkb3NmcyAvZGV2L2xvb3AxCitzeXNsaW51eCAtaSAvZGV2L2xvb3AxCit8cGxhaW4gZmxvcHB5OiBkZXZpY2UgIi9wcm9jLzYzNTEvZmQvMyIgYnVzeSAoUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUpOgorfENhbm5vdCBpbml0aWFsaXplICdTOicKK3xCYWQgdGFyZ2V0IHM6L2xkbGludXguc3lzCitbc25pcF0KKworVGhlIGlkZWEgaXMgZnJvbToKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTIzNTAxNgoraHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9mb3J1bS8jIW1zZy9jaHJvbWl1bS1vcy1kZXYvYlJQVUNGSG9CVFEvWmpCOGtqangxdlVKCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsb2NrZGV2LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9sb2NrZGV2LmggYi9sb2NrZGV2LmgKK2luZGV4IDQ0NjdiYzIuLjVhMTM1YWQgMTAwNjQ0CistLS0gYS9sb2NrZGV2LmgKKysrKyBiL2xvY2tkZXYuaAorQEAgLTQzLDcgKzQzLDcgQEAgaW50IGxvY2tfZGV2KGludCBmZCwgaW50IG1vZGUsIHN0cnVjdCBkZXZpY2UgKmRldikKKyAJCXJldHVybiAwOworIAorICNpZiAoZGVmaW5lZChIQVZFX0ZMT0NLKSAmJiBkZWZpbmVkIChMT0NLX0VYKSAmJiBkZWZpbmVkKExPQ0tfTkIpKQorLQlpZiAoZmxvY2soZmQsIChtb2RlID8gTE9DS19FWCA6IExPQ0tfU0gpfExPQ0tfTkIpIDwgMCkKKysJaWYgKGZsb2NrKGZkLCAobW9kZSA/IExPQ0tfRVggOiBMT0NLX1NIKSkgPCAwKQorICNlbHNlIC8qIEZMT0NLICovCisgCisgI2lmIChkZWZpbmVkKEhBVkVfTE9DS0YpICYmIGRlZmluZWQoRl9UTE9DSykpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvY2xhbmdfVU5VU0VELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9jbGFuZ19VTlVTRUQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiOWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvY2xhbmdfVU5VU0VELnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKK1VuZGVmaW5lIFVOVVNFRCBtYWNyb3Mgd2l0aCBjbGFuZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitJbmRleDogbXRvb2xzLTQuMC4xOC9zeXNpbmNsdWRlcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbXRvb2xzLTQuMC4xOC5vcmlnL3N5c2luY2x1ZGVzLmgKKysrKyBtdG9vbHMtNC4wLjE4L3N5c2luY2x1ZGVzLmgKK0BAIC0xMDEsNyArMTAxLDcgQEAgdHlwZWRlZiB2b2lkICpjYWRkcl90OworICNpZiBkZWZpbmVkIF9fR05VQ19fICYmIGRlZmluZWQgX19TVERDX18KKyAvKiBnY2MgLXRyYWRpdGlvbmFsIGRvZXNuJ3QgaGF2ZSBQQUNLRUQsIFVOVVNFRCBhbmQgTk9SRVRVUk4gKi8KKyAjIGRlZmluZSBQQUNLRUQgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpCistIyBpZiBfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID4gNiB8fCBfX0dOVUNfXyA+PSAzCisrIyBpZiAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+IDYgfHwgX19HTlVDX18gPj0gMykgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorIC8qIGdjYyAyLjYuMyBkb2Vzbid0IGhhdmUgInVudXNlZCIgKi8JCS8qIG1vb2wgKi8KKyAjICBkZWZpbmUgVU5VU0VEKHgpIHggX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpO3gKKyAjICBkZWZpbmUgVU5VU0VEUCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKaW5kZXggZGNkMzJlZC4uM2MzMWFjYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKQEAgLTMxLDYgKzMxLDggQEAKICAgICAgICAgICAgZmlsZTovL210b29scy1tYWtlaW5mby5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uby14MTEuZ3BsdjMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Db250aW51ZS1ldmVuLWlmLWZzLXNpemUtaXMtbm90LWRpdmlzaWJsZS1ieS1zZWN0b3JzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLUxPQ0tfTkItdG8tdXNlLWJsb2NraW5nLXJlcXVlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xhbmdfVU5VU0VELnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpZ3oucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvcGlnei5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDQzM2U4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpZ3oucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBhYjE0MzY5MjdiNDdiYWRjZDIxOWE1ZjA3NWRmYzg0ODAyMGUwNjFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlrZSBDcm93ZSA8bWFjQG1jcm93ZS5jb20+CitEYXRlOiBUaHUsIDQgT2N0IDIwMTggMTc6NTQ6MTkgKzAxMDAKK1N1YmplY3Q6IFtvcGtnLXV0aWxzIFBBVENIXSBvcGtnLWJ1aWxkOiBBZGQgc3VwcG9ydCBmb3IgZXhwbGljaXQgdXNlIG9mIHBpZ3oKK1RvOiBvcGtnLWRldmVsQGdvb2dsZWdyb3Vwcy5jb20sCisgICAgeW9jdG9AeW9jdG9wcm9qZWN0Lm9yZworCitvZS1jb3JlIGhhcyBzdG9wcGVkWzFdIGluc3RhbGxpbmcgcGlneiBhcyBnemlwLiBUaGlzIG1lYW5zIHRoYXQgaW4KK29yZGVyIHRvIHBlcnN1YWRlIG9wa2ctYnVpbGQgdG8gdXNlIHBpZ3ogaXQgbXVzdCBiZSBzcGVjaWZpZWQKK2V4cGxpY2l0bHkuIExldCdzIHRlYWNoIG9wa2ctYnVpbGQgdG8gZGVhbCB3aXRoIGJlaW5nIHBhc3NlZCBwaWd6IGFzIGEKK2NvbXByZXNzb3IuCisKK1dlIGNhbid0IGNvbWJpbmUgdGhlIGNoZWNrIGZvciB3aGV0aGVyIC1UIGlzIHJlcXVpcmVkIHdpdGggdGhlIG9uZSBmb3IKK2d6aXAgYmVjYXVzZSBvcGtnLWJ1aWxkIG5lZWRzIHRvIGNhbGwgJGNvbXByZXNzb3IgYW5kIGd6aXAgc2VwYXJhdGVseQordG8gY29uc3RydWN0IHRoZSBwYWNrYWdlLgorCitbMV0gaHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb21taXRzLzIwMTgtRmVicnVhcnkvMjE4NzY3Lmh0bWwKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW29wa2ctZGV2ZWxAZ29vZ2xlZ3JvdXBzLmNvbSBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvb3BrZy1kZXZlbC9FMFdWT2hqSzYxd10KK1NpZ25lZC1vZmYtYnk6IE1pa2UgQ3Jvd2UgPG1hY0BtY3Jvd2UuY29tPgorLS0tCisgb3BrZy1idWlsZCB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvb3BrZy1idWlsZCBiL29wa2ctYnVpbGQKK2luZGV4IDkzYTc5NTYuLmY4NDAzZWEgMTAwNzU1CistLS0gYS9vcGtnLWJ1aWxkCisrKysgYi9vcGtnLWJ1aWxkCitAQCAtMTcwLDcgKzE3MCw3IEBAIGZpCisgCisgY29tcHJlc3Nvcl9leHQoKSB7CisgICAgIGNhc2UgJDEgaW4KKy0JZ3ppcCkKKysJZ3ppcHxwaWd6KQorIAkgICAgZWNobyBnegorIAkgICAgOzsKKyAJYnppcDIpCitAQCAtMjMyLDYgKzIzMiwxMCBAQCBpZiBbICRjb21wcmVzc29yID0gImd6aXAiIF0gOyB0aGVuCisgCWNvbXByZXNzb3JhcmdzPSR6aXBhcmdzCisgZWxpZiBbICRjb21wcmVzc29yID0gInh6IiBdIDsgdGhlbgorIAljb21wcmVzc29yYXJncz0iLS10aHJlYWRzIDAiCisrZWxpZiBbICRjb21wcmVzc29yID0gInBpZ3oiIF0gOyB0aGVuCisrCWlmICRjb21wcmVzc29yIC0taGVscCAyPiYxIHwgZ3JlcCAtLSAiLVQiID4gL2Rldi9udWxsOyB0aGVuCisrCQljb21wcmVzc29yYXJncz0iLTluVCIKKysJZmkKKyBmaQorIAorIHRzb3J0YXJncz0KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYgppbmRleCAwNDg3YzVmLi5jYjM3NzVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy42LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU9ubHktdXNlLXNvcnQtbmFtZS1vbi12ZXJzaW9ucy1vZi10YXItd2hpY2gtc3VwcG9ydC0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1vcGtnLWJ1aWxkLVVzZS1sb2NhbC10aW1lLWZvci1idWlsZF9kYXRlLXNpbmNlLW9wa2ctLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3RocmVhZGVkLXh6LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BpZ3oucGF0Y2ggXAogIgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vdGFyX2lnbm9yZV9lcnJvci5wYXRjaCIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzL3JlZnMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWtleXJpbmdzXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy1rZXlyaW5nc18xLjAuYmIKaW5kZXggMThkNmFiZC4uYTIwZTMxNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWtleXJpbmdzXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cta2V5cmluZ3NfMS4wLmJiCkBAIC0zNSwxNCArMzUsNiBAQAogIyBXZSBuZWVkICdvcGtnLWtleScgdG8gcnVuIHRoZSBwb3N0aW5zdCBzY3JpcHQKIFJERVBFTkRTXyR7UE59ID0gIm9wa2ciCiAKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0jISAvYmluL3NoCi1zZXQgLWUKLQotaWYgWyB4IiREIiA9ICJ4IiBdOyB0aGVuCi0gICAgIyBPbiB0YXJnZXQKLSAgICBvcGtnLWtleSBwb3B1bGF0ZQotZWxzZQotICAgIGV4aXQgMQotZmkKK3BrZ19wb3N0aW5zdF9vbnRhcmdldF8ke1BOfSAoKSB7CitvcGtnLWtleSBwb3B1bGF0ZQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtcmVtb3ZlX21haW50YWluZXJfc2NyaXB0cy11c2Utc3RyaWN0LW1hdGNoaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtcmVtb3ZlX21haW50YWluZXJfc2NyaXB0cy11c2Utc3RyaWN0LW1hdGNoaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMTYwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvMDAwMS1yZW1vdmVfbWFpbnRhaW5lcl9zY3JpcHRzLXVzZS1zdHJpY3QtbWF0Y2hpbmcucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA1NWM0YWQ2NjZlNzYyODFiZGQwZGI1NWZhNmY0YWIyNzQ0ZmVhN2U0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KK0RhdGU6IFR1ZSwgNCBTZXAgMjAxOCAxODowNjowMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSByZW1vdmVfbWFpbnRhaW5lcl9zY3JpcHRzOiB1c2Ugc3RyaWN0IG1hdGNoaW5nCisKK1RoZSBmdW5jdGlvbiBpcyB1c2luZyBhIGdsb2IgdG8gc2VsZWN0IHdoaWNoIG1ldGFkYXRhIGZpbGVzIG5lZWRzIHRvIGJlCitkZWxldGVkIGR1cmluZyBwYWNrYWdlIHJlbW92YWwsIG9uIHRoZSBpbmZvX2Rpci4gSG93ZXZlciwgdGhlIGdsb2IgbWF5CittYXRjaCBtZXRhZGF0YSBmaWxlcyBmcm9tIHBhY2thZ2VzIHdpdGggc2ltaWxhciBuYW1lcy4gRm9yIGV4YW1wbGUsCitkdXJpbmcgcmVtb3ZhbCBvZiBwYWNrYWdlIGdsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLWRlLWF0LCB0aGUgY3VycmVudAorbG9naWMgd2FzIGFsc28gcmVtb3ZpbmcgdGhlIG1ldGFkYXRhIGZvcgorZ2xpYmMtYmluYXJ5LWxvY2FsZWRhdGEtZGUtYXQuaXNvLTg4NTktMS4gQWRkIGNoZWNrIGZvciBhbiBleGFjdCBtYXRjaAorYmVmb3JlIGRlbGV0aW9uLgorCitGaXhlcyBidWd6aWxsYTogMTI5MDUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9vcGtnLWRldmVsL0ZyNDBZdDBOQm5vXQorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KKy0tLQorIGxpYm9wa2cvb3BrZ19yZW1vdmUuYyB8IDE0ICsrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJvcGtnL29wa2dfcmVtb3ZlLmMgYi9saWJvcGtnL29wa2dfcmVtb3ZlLmMKK2luZGV4IDgyMTI1ZmEuLjM5MzY2MjggMTAwNjQ0CistLS0gYS9saWJvcGtnL29wa2dfcmVtb3ZlLmMKKysrKyBiL2xpYm9wa2cvb3BrZ19yZW1vdmUuYworQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIHJlbW92ZV9tYWludGFpbmVyX3NjcmlwdHMocGtnX3QgKiBwa2cpCisgeworICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgaW50IGVycjsKKy0gICAgY2hhciAqZ2xvYnBhdHRlcm47CisrICAgIGNoYXIgKmdsb2JwYXR0ZXJuLCAqZmlsZW5hbWUsICpsYXN0ZG90OworICAgICBnbG9iX3QgZ2xvYmJ1ZjsKKyAKKyAgICAgaWYgKG9wa2dfY29uZmlnLT5ub2FjdGlvbikKK0BAIC0xNTEsOCArMTUxLDE2IEBAIHZvaWQgcmVtb3ZlX21haW50YWluZXJfc2NyaXB0cyhwa2dfdCAqIHBrZykKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IGdsb2JidWYuZ2xfcGF0aGM7IGkrKykgeworLSAgICAgICAgb3BrZ19tc2coSU5GTywgIkRlbGV0aW5nICVzLlxuIiwgZ2xvYmJ1Zi5nbF9wYXRodltpXSk7CistICAgICAgICB1bmxpbmsoZ2xvYmJ1Zi5nbF9wYXRodltpXSk7CisrICAgICAgICBmaWxlbmFtZSA9IHhzdHJkdXAoYmFzZW5hbWUoZ2xvYmJ1Zi5nbF9wYXRodltpXSkpOworKyAgICAgICAgbGFzdGRvdCA9IHN0cnJjaHIoZmlsZW5hbWUsICcuJyk7CisrICAgICAgICAqbGFzdGRvdCA9ICdcMCc7CisrICAgICAgICAvLyBPbmx5IGRlbGV0ZSBmaWxlcyB0aGF0IG1hdGNoIHRoZSBwYWNrYWdlIG5hbWUgKHRoZSBnbG9iIG1heSBtYXRjaCBmaWxlcworKyAgICAgICAgLy8gd2l0aCBzaW1pbGFyIG5hbWVzKQorKyAgICAgICAgaWYgKCFzdHJjbXAoZmlsZW5hbWUsIHBrZy0+bmFtZSkpIHsKKysgICAgICAgICAgICBvcGtnX21zZyhJTkZPLCAiRGVsZXRpbmcgJXMuXG4iLCBnbG9iYnVmLmdsX3BhdGh2W2ldKTsKKysgICAgICAgICAgICB1bmxpbmsoZ2xvYmJ1Zi5nbF9wYXRodltpXSk7CisrICAgICAgICB9CisrICAgICAgICBmcmVlKGZpbGVuYW1lKTsKKyAgICAgfQorICAgICBnbG9iZnJlZSgmZ2xvYmJ1Zik7CisgfQorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMyYzNkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249T3BrZyBmaXJzdCBib290IGNvbmZpZ3VyZQotRGVmYXVsdERlcGVuZGVuY2llcz1ubwotQWZ0ZXI9c3lzdGVtZC1yZW1vdW50LWZzLnNlcnZpY2Ugc3lzdGVtZC10bXBmaWxlcy1zZXR1cC5zZXJ2aWNlIHRtcC5tb3VudAotQmVmb3JlPXN5c2luaXQudGFyZ2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1vbmVzaG90Ci1FbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9kZWZhdWx0L3Bvc3RpbnN0Ci1FeGVjU3RhcnQ9LUBCQVNFX0JJTkRJUkAvc2ggLWMgIiBpZiBbICRQT1NUSU5TVF9MT0dHSU5HID0gJzEnIF07IHRoZW4gQEJJTkRJUkAvb3BrZyBjb25maWd1cmUgPiAkTE9HRklMRSAyPiYxOyBlbHNlIEBCSU5ESVJAL29wa2cgY29uZmlndXJlOyBmaSIKLUV4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zeXN0ZW1jdGwgLS1uby1yZWxvYWQgZGlzYWJsZSBvcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCi1TdGFuZGFyZE91dHB1dD1zeXNsb2cKLVJlbWFpbkFmdGVyRXhpdD1ObwotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PWJhc2ljLnRhcmdldAotV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYgppbmRleCA3MGYyMGFmLi42ZWJkNThiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy42LmJiCkBAIC0xMiw5ICsxMiw5IEBACiBQRSA9ICIxIgogCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL29wa2cuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wa2dfY29uZi1jcmVhdGUtb3BrZy5sb2NrLWluLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmVfbWFpbnRhaW5lcl9zY3JpcHRzLXVzZS1zdHJpY3QtbWF0Y2hpbmcucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNzllMDQzMDdmNmY1NGRiNDMxYzI1MTc3MmQ3ZDk4N2MiCkBAIC0yMiw4ICsyMiw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCiAKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIgotCiB0YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKIE9QS0dMSUJESVIgPSAiJHt0YXJnZXRfbG9jYWxzdGF0ZWRpcn0vbGliIgogCkBAIC00NiwxNiArNDQsNiBAQAogCiAJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKIAlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAotCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQotCWZpCiB9CiAKIFJERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKQEAgLTY4LDcgKzU2LDYgQEAKIFBBQ0tBR0VTID0rICJsaWJvcGtnIgogCiBGSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDEtQ2hhbmdlLWxpYnJhcnktbmFtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMS1DaGFuZ2UtbGlicmFyeS1uYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDY3YzUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMS1DaGFuZ2UtbGlicmFyeS1uYW1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb206IFBpb3RyIFJvc3phdHlja2kgPGRleHRlckBkZWJpYW4ub3JnPgotRGF0ZTogV2VkLCAyNyBKYW4gMjAxMCAxNjo1MzoxMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBDaGFuZ2UgbGlicmFyeSBuYW1lCi0KLVRoZSBzb25hbWUgd2FzIGNoYW5nZWQgdG8gb3NzcC11dWlkIHRvIHByZXZlbmQgdGhlIG5hbWUgY2xhc2ggd2l0aCBlMmZzcHJvZ3MncwotdXVpZCBsaWJyYXJ5LgotLS0tCi0gTWFrZWZpbGUuaW4gICAgICB8ICAgIDYgKysrLS0tCi0gcGVybC9NYWtlZmlsZS5QTCB8ICAgMTIgKysrKysrLS0tLS0tCi0gcGhwL2NvbmZpZy5tNCAgICB8ICAgIDIgKy0KLSB1dWlkLWNvbmZpZy5pbiAgIHwgICAgMiArLQotIHV1aWQucGMuaW4gICAgICAgfCAgICA0ICsrLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi0tLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi0KLVRoaXMgcGF0Y2ggaXMgZnJvbSBkZWJpYW4gb3NzcC11dWlkIDEuNi4yIGludGVncmF0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBkMjhmNGJlLi5jMmJhOTlkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNjIsMTMgKzYyLDEzIEBAIFBFUkwgICAgICAgID0gQFBFUkxACi0gUEhQICAgICAgICAgPSBAUEhQQAotIFBHX0NPTkZJRyAgID0gQFBHX0NPTkZJR0AKLSAKLS1MSUJfTkFNRSAgICA9IGxpYnV1aWQubGEKLStMSUJfTkFNRSAgICA9IGxpYm9zc3AtdXVpZC5sYQotIExJQl9PQkpTICAgID0gdXVpZC5sbyB1dWlkX21kNS5sbyB1dWlkX3NoYTEubG8gdXVpZF9wcm5nLmxvIHV1aWRfbWFjLmxvIHV1aWRfdGltZS5sbyB1dWlkX3VpNjQubG8gdXVpZF91aTEyOC5sbyB1dWlkX3N0ci5sbwotIAotLURDRV9OQU1FICAgID0gbGlidXVpZF9kY2UubGEKLStEQ0VfTkFNRSAgICA9IGxpYm9zc3AtdXVpZF9kY2UubGEKLSBEQ0VfT0JKUyAgICA9IHV1aWRfZGNlLmxvICQoTElCX09CSlMpCi0gCi0tQ1hYX05BTUUgICAgPSBsaWJ1dWlkKysubGEKLStDWFhfTkFNRSAgICA9IGxpYm9zc3AtdXVpZCsrLmxhCi0gQ1hYX09CSlMgICAgPSB1dWlkKysubG8gJChMSUJfT0JKUykKLSAKLSBQUkdfTkFNRSAgICA9IHV1aWQKLWRpZmYgLS1naXQgYS9wZXJsL01ha2VmaWxlLlBMIGIvcGVybC9NYWtlZmlsZS5QTAotaW5kZXggOTJmNDQ5NC4uOWM2ZmVlNiAxMDA2NDQKLS0tLSBhL3BlcmwvTWFrZWZpbGUuUEwKLSsrKyBiL3BlcmwvTWFrZWZpbGUuUEwKLUBAIC0zMyw5ICszMyw5IEBAIHVzZSBDb25maWc7Ci0gdXNlIEV4dFV0aWxzOjpNYWtlTWFrZXI7Ci0gCi0gIyAgIGRldGVybWluZSBzb3VyY2UgZGlyZWN0b3J5Ci0tbXkgKCRzcmNkaXIpID0gbWFwIHsgbXkgJGQgPSAkXzsgJGQgPX4gcy9cL2xpYnV1aWRcLmxhJC8vOyAkZCB9Ci0tICAgICAgICAgICAgICAgZ3JlcCB7IC1mICRfIH0gKCIuLi9saWJ1dWlkLmxhIiwgZ2xvYigiLi4vKi9saWJ1dWlkLmxhIikpCi0tICAgIG9yIGRpZSAibm8gc291cmNlIGRpcmVjdG9yeSBmb3VuZCAod2hlcmUgbGlidXVpZC5sYSBpcyBsb2NhdGVkKSI7Ci0rbXkgKCRzcmNkaXIpID0gbWFwIHsgbXkgJGQgPSAkXzsgJGQgPX4gcy9cL2xpYm9zc3AtdXVpZFwubGEkLy87ICRkIH0KLSsgICAgICAgICAgICAgICBncmVwIHsgLWYgJF8gfSAoIi4uL2xpYm9zc3AtdXVpZC5sYSIsIGdsb2IoIi4uLyovbGlib3NzcC11dWlkLmxhIikpCi0rICAgIG9yIGRpZSAibm8gc291cmNlIGRpcmVjdG9yeSBmb3VuZCAod2hlcmUgbGlib3NzcC11dWlkLmxhIGlzIGxvY2F0ZWQpIjsKLSAKLSAjICAgZGV0ZXJtaW5lIGV4dHJhIGJ1aWxkIG9wdGlvbnMKLSBteSAkY29tcGF0ID0gMDsKLUBAIC00NywxNSArNDcsMTUgQEAgV3JpdGVNYWtlZmlsZSgKLSAgICAgVkVSU0lPTl9GUk9NICAgICAgPT4gJ3V1aWQucG0nLAotICAgICBBQlNUUkFDVF9GUk9NICAgICA9PiAndXVpZC5wb2QnLAotICAgICBQUkVSRVFfUE0gICAgICAgICA9PiB7fSwKLS0gICAgTElCUyAgICAgICAgICAgICAgPT4gWyAiLUwkc3JjZGlyLy5saWJzIC1MJHNyY2RpciAtbHV1aWQiIF0sCi0rICAgIExJQlMgICAgICAgICAgICAgID0+IFsgIi1MJHNyY2Rpci8ubGlicyAtTCRzcmNkaXIgLWxvc3NwLXV1aWQiIF0sCi0gICAgIERFRklORSAgICAgICAgICAgID0+ICcnLAotICAgICBJTkMgICAgICAgICAgICAgICA9PiAiLUkuIC1JJHNyY2RpciIsCi0gICAgIFBNICAgICAgICAgICAgICAgID0+IHsgJ3V1aWQucG0nICAgPT4gJyQoSU5TVF9MSUJESVIpL3V1aWQucG0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1dWlkLnBvZCcgID0+ICckKElOU1RfTElCRElSKS91dWlkLnBvZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRjb21wYXQgPyAoJ3V1aWRfY29tcGF0LnBtJyAgPT4gJyQoSU5TVF9MSUJESVIpLy4uL0RhdGEvVVVJRC5wbScpICA6ICgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJGNvbXBhdCA/ICgndXVpZF9jb21wYXQucG9kJyA9PiAnJChJTlNUX0xJQkRJUikvLi4vRGF0YS9VVUlELnBvZCcpIDogKCkpLCB9LAotLSAgICBNQU4zUE9EUyAgICAgICAgICA9PiB7ICd1dWlkLnBvZCcgPT4gJyQoSU5TVF9NQU4zRElSKS9PU1NQOjp1dWlkLjMnLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgkY29tcGF0ID8gKCd1dWlkX2NvbXBhdC5wb2QnID0+ICckKElOU1RfTUFOM0RJUikvRGF0YTo6VVVJRC4zJykgOiAoKSksIH0sCi0rICAgIE1BTjNQT0RTICAgICAgICAgID0+IHsgJ3V1aWQucG9kJyA9PiAnJChJTlNUX01BTjNESVIpL09TU1A6OnV1aWQuM3BtJywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAoJGNvbXBhdCA/ICgndXVpZF9jb21wYXQucG9kJyA9PiAnJChJTlNUX01BTjNESVIpL0RhdGE6OlVVSUQuM3BtJykgOiAoKSksIH0sCi0gICAgIFRZUEVNQVBTICAgICAgICAgID0+IFsgJ3V1aWQudG0nIF0sCi0gICAgIHRlc3QgICAgICAgICAgICAgID0+IHsgVEVTVFMgPT4gJ3V1aWQudHMnIC4gKCRjb21wYXQgPyAnIHV1aWRfY29tcGF0LnRzJyA6ICcnKSB9LAotICAgICBOT19NRVRBICAgICAgICAgICA9PiAxLAotZGlmZiAtLWdpdCBhL3BocC9jb25maWcubTQgYi9waHAvY29uZmlnLm00Ci1pbmRleCA1MDkxYjk2Li45NjliNDU3IDEwMDY0NAotLS0tIGEvcGhwL2NvbmZpZy5tNAotKysrIGIvcGhwL2NvbmZpZy5tNAotQEAgLTM0LDcgKzM0LDcgQEAgaWYgdGVzdCAiJFBIUF9VVUlEIiAhPSAibm8iOyB0aGVuCi0gICAgIFBIUF9ORVdfRVhURU5TSU9OKHV1aWQsIHV1aWQuYywgJGV4dF9zaGFyZWQpCi0gICAgIEFDX0RFRklORShIQVZFX1VVSUQsIDEsIFtIYXZlIE9TU1AgdXVpZCBsaWJyYXJ5XSkKLSAgICAgUEhQX0FERF9MSUJQQVRIKFsuLl0sICkKLS0gICAgUEhQX0FERF9MSUJSQVJZKFt1dWlkXSwsIFVVSURfU0hBUkVEX0xJQkFERCkKLSsgICAgUEhQX0FERF9MSUJSQVJZKFtvc3NwLXV1aWRdLCwgVVVJRF9TSEFSRURfTElCQUREKQotICAgICBQSFBfQUREX0lOQ0xVREUoWy4uXSkKLSAgICAgUEhQX1NVQlNUKFVVSURfU0hBUkVEX0xJQkFERCkKLSAKLWRpZmYgLS1naXQgYS91dWlkLWNvbmZpZy5pbiBiL3V1aWQtY29uZmlnLmluCi1pbmRleCA4ZDJhMDYzLi41YjU4ODEyIDEwMDY0NAotLS0tIGEvdXVpZC1jb25maWcuaW4KLSsrKyBiL3V1aWQtY29uZmlnLmluCi1AQCAtMTIxLDcgKzEyMSw3IEBAIGRvCi0gICAgICAgICAgICAgb3V0cHV0X2V4dHJhPSIkb3V0cHV0X2V4dHJhICR1dWlkX2xkZmxhZ3MiCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgIC0tbGlicykKLS0gICAgICAgICAgICBvdXRwdXQ9IiRvdXRwdXQgLWx1dWlkIgotKyAgICAgICAgICAgIG91dHB1dD0iJG91dHB1dCAtbG9zc3AtdXVpZCIKLSAgICAgICAgICAgICBvdXRwdXRfZXh0cmE9IiRvdXRwdXRfZXh0cmEgJHV1aWRfbGlicyIKLSAgICAgICAgICAgICA7OwotICAgICAgICAgKiApCi1kaWZmIC0tZ2l0IGEvdXVpZC5wYy5pbiBiL3V1aWQucGMuaW4KLWluZGV4IGM3NmFkMWUuLmRlMDBjMmYgMTAwNjQ0Ci0tLS0gYS91dWlkLnBjLmluCi0rKysgYi91dWlkLnBjLmluCi1AQCAtMzYsNyArMzYsNyBAQCBOYW1lOiBPU1NQIHV1aWQKLSBEZXNjcmlwdGlvbjogVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIgKFVVSUQpIExpYnJhcnkKLSBWZXJzaW9uOiBAVVVJRF9WRVJTSU9OX1JBV0AKLSBVUkw6IGh0dHA6Ly93d3cub3NzcC5vcmcvcGtnL2xpYi91dWlkLwotLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9Ci0tTGliczogLUwke2xpYmRpcn0gLWx1dWlkCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vb3NzcAotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sb3NzcC11dWlkCi0gTGlicy5wcml2YXRlOiBATElCU0AKLSAKLS0tIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDAyLXV1aWQtcHJlc2VydmUtbS1vcHRpb24tc3RhdHVzLWluLXYtb3B0aW9uLWhhbmRsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDAyLXV1aWQtcHJlc2VydmUtbS1vcHRpb24tc3RhdHVzLWluLXYtb3B0aW9uLWhhbmRsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDRhNjI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMi11dWlkLXByZXNlcnZlLW0tb3B0aW9uLXN0YXR1cy1pbi12LW9wdGlvbi1oYW5kbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb206IE1hcmNvIE5lbmNpYXJpbmkgPG1hcmNvLm5lbmNpYXJpbmlAZGV2aXNlLml0PgotRGF0ZTogV2VkLCAyNyBKYW4gMjAxMCAxOTo0NjoyMSArMDEwMAotU3ViamVjdDogW1BBVENIXSB1dWlkOiBwcmVzZXJ2ZSAtbSBvcHRpb24gc3RhdHVzIGluIC12IG9wdGlvbiBoYW5kbGluZwotCi1CdWc6IDUzMTM5NgotLS0tCi0gdXVpZF9jbGkuYyB8ICAgMTkgKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtub3QgYXV0aG9yXQotCi1UaGlzIHBhdGNoIGlzIGZyb20gZGViaWFuIG9zc3AtdXVpZCAxLjYuMiBpbnRlZ3JhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvdXVpZF9jbGkuYyBiL3V1aWRfY2xpLmMKLWluZGV4IGQxYjBiMTEuLjE0YTY3ZmUgMTAwNjQ0Ci0tLS0gYS91dWlkX2NsaS5jCi0rKysgYi91dWlkX2NsaS5jCi1AQCAtMTQwLDExICsxNDAsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAgICAgICAgICAgaSA9IHN0cnRvbChvcHRhcmcsICZwLCAxMCk7Ci0gICAgICAgICAgICAgICAgIGlmICgqcCAhPSAnXDAnKQotICAgICAgICAgICAgICAgICAgICAgdXNhZ2UoImludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uICd2JyIpOwotKyAgICAgICAgICAgICAgICB2ZXJzaW9uICY9IH4oVVVJRF9NQUtFX1YxfFVVSURfTUFLRV9WM3xVVUlEX01BS0VfVjR8VVVJRF9NQUtFX1Y1KTsKLSAgICAgICAgICAgICAgICAgc3dpdGNoIChpKSB7Ci0tICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHZlcnNpb24gPSBVVUlEX01BS0VfVjE7IGJyZWFrOwotLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiB2ZXJzaW9uID0gVVVJRF9NQUtFX1YzOyBicmVhazsKLS0gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogdmVyc2lvbiA9IFVVSURfTUFLRV9WNDsgYnJlYWs7Ci0tICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHZlcnNpb24gPSBVVUlEX01BS0VfVjU7IGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiB2ZXJzaW9uIHw9IFVVSURfTUFLRV9WMTsgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHZlcnNpb24gfD0gVVVJRF9NQUtFX1YzOyBicmVhazsKLSsgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogdmVyc2lvbiB8PSBVVUlEX01BS0VfVjQ7IGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiB2ZXJzaW9uIHw9IFVVSURfTUFLRV9WNTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKCJpbnZhbGlkIHZlcnNpb24gb24gb3B0aW9uICd2JyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotQEAgLTIxMywxMCArMjE0LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgICAvKiBlbmNvZGluZyAqLwotLSAgICAgICAgaWYgKCAgICh2ZXJzaW9uID09IFVVSURfTUFLRV9WMSAmJiBhcmdjICE9IDApCi0tICAgICAgICAgICAgfHwgKHZlcnNpb24gPT0gVVVJRF9NQUtFX1YzICYmIGFyZ2MgIT0gMikKLS0gICAgICAgICAgICB8fCAodmVyc2lvbiA9PSBVVUlEX01BS0VfVjQgJiYgYXJnYyAhPSAwKQotLSAgICAgICAgICAgIHx8ICh2ZXJzaW9uID09IFVVSURfTUFLRV9WNSAmJiBhcmdjICE9IDIpKQotKyAgICAgICAgaWYgKCAgICh2ZXJzaW9uICYgVVVJRF9NQUtFX1YxICYmIGFyZ2MgIT0gMCkKLSsgICAgICAgICAgICB8fCAodmVyc2lvbiAmIFVVSURfTUFLRV9WMyAmJiBhcmdjICE9IDIpCi0rICAgICAgICAgICAgfHwgKHZlcnNpb24gJiBVVUlEX01BS0VfVjQgJiYgYXJnYyAhPSAwKQotKyAgICAgICAgICAgIHx8ICh2ZXJzaW9uICYgVVVJRF9NQUtFX1Y1ICYmIGFyZ2MgIT0gMikpCi0gICAgICAgICAgICAgdXNhZ2UoImludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIpOwotICAgICAgICAgaWYgKChyYyA9IHV1aWRfY3JlYXRlKCZ1dWlkKSkgIT0gVVVJRF9SQ19PSykKLSAgICAgICAgICAgICBlcnJvcigxLCAidXVpZF9jcmVhdGU6ICVzIiwgdXVpZF9lcnJvcihyYykpOwotQEAgLTIzMiw3ICsyMzMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgICAgICAgICAgICBpZiAoKHJjID0gdXVpZF9sb2FkKHV1aWQsICJuaWwiKSkgIT0gVVVJRF9SQ19PSykKLSAgICAgICAgICAgICAgICAgICAgIGVycm9yKDEsICJ1dWlkX2xvYWQ6ICVzIiwgdXVpZF9lcnJvcihyYykpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBpZiAodmVyc2lvbiA9PSBVVUlEX01BS0VfVjMgfHwgdmVyc2lvbiA9PSBVVUlEX01BS0VfVjUpIHsKLSsgICAgICAgICAgICBpZiAodmVyc2lvbiAmIFVVSURfTUFLRV9WMyB8fCB2ZXJzaW9uICYgVVVJRF9NQUtFX1Y1KSB7Ci0gICAgICAgICAgICAgICAgIGlmICgocmMgPSB1dWlkX2NyZWF0ZSgmdXVpZF9ucykpICE9IFVVSURfUkNfT0spCi0gICAgICAgICAgICAgICAgICAgICBlcnJvcigxLCAidXVpZF9jcmVhdGU6ICVzIiwgdXVpZF9lcnJvcihyYykpOwotICAgICAgICAgICAgICAgICBpZiAoKHJjID0gdXVpZF9sb2FkKHV1aWRfbnMsIGFyZ3ZbMF0pKSAhPSBVVUlEX1JDX09LKSB7Ci0tLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMy1GaXgtd2hhdGlzLWVudHJpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDMtRml4LXdoYXRpcy1lbnRyaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2NiYjU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMy1GaXgtd2hhdGlzLWVudHJpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tOiBNYXJjbyBOZW5jaWFyaW5pIDxtYXJjby5uZW5jaWFyaW5pQGRldmlzZS5pdD4KLURhdGU6IFR1ZSwgMiBGZWIgMjAxMCAxMjoxNjo0OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggd2hhdGlzIGVudHJpZXMKLQotRml4IHdoYXRpcyBlbnRyeSBvZiB1dWlkLjEsIHV1aWQuM29zc3AgYW5kIHV1aWQrKy4zb3NzcCBtYW5wYWdlcwotLS0tCi0gdXVpZCsrLnBvZCAgIHwgICAgMiArLQotIHV1aWQucG9kICAgICB8ICAgIDIgKy0KLSB1dWlkX2NsaS5wb2QgfCAgICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLS0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLQotVGhpcyBwYXRjaCBpcyBmcm9tIGRlYmlhbiBvc3NwLXV1aWQgMS42LjIgaW50ZWdyYXRpb24uCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3V1aWQrKy5wb2QgYi91dWlkKysucG9kCi1pbmRleCA4YjVhNGIxLi44OWM1ZWZiIDEwMDY0NAotLS0tIGEvdXVpZCsrLnBvZAotKysrIGIvdXVpZCsrLnBvZAotQEAgLTMxLDcgKzMxLDcgQEAKLSAKLSA9aGVhZDEgTkFNRQotIAotLUI8T1NTUCB1dWlkPiAtIEI8VW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXI+IChDKysgQVBJKQotK0I8dXVpZCsrPiAtIEI8VW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXI+IChDKysgQVBJKQotIAotID1oZWFkMSBWRVJTSU9OCi0gCi1kaWZmIC0tZ2l0IGEvdXVpZC5wb2QgYi91dWlkLnBvZAotaW5kZXggNGFkMzc0Mi4uMDE3OWE0NiAxMDA2NDQKLS0tLSBhL3V1aWQucG9kCi0rKysgYi91dWlkLnBvZAotQEAgLTMxLDcgKzMxLDcgQEAKLSAKLSA9aGVhZDEgTkFNRQotIAotLUI8T1NTUCB1dWlkPiAtIEI8VW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXI+Ci0rQjx1dWlkPiAtIEI8VW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXI+Ci0gCi0gPWhlYWQxIFZFUlNJT04KLSAKLWRpZmYgLS1naXQgYS91dWlkX2NsaS5wb2QgYi91dWlkX2NsaS5wb2QKLWluZGV4IGRkZWM2YmIuLmRmOWRjODMgMTAwNjQ0Ci0tLS0gYS91dWlkX2NsaS5wb2QKLSsrKyBiL3V1aWRfY2xpLnBvZAotQEAgLTMxLDcgKzMxLDcgQEAKLSAKLSA9aGVhZDEgTkFNRQotIAotLUI8T1NTUCB1dWlkPiAtIEI8VW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIgQ29tbWFuZC1MaW5lIFRvb2w+Ci0rQjx1dWlkPiAtIEI8VW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIgQ29tbWFuZC1MaW5lIFRvb2w+Ci0gCi0gPWhlYWQxIFZFUlNJT04KLSAKLS0tIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDA0LWZpeC1kYXRhLXV1aWQtZnJvbS1zdHJpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDQtZml4LWRhdGEtdXVpZC1mcm9tLXN0cmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1ZTExMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDQtZml4LWRhdGEtdXVpZC1mcm9tLXN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLURlc2NyaXB0aW9uOiBTdXBwb3J0IGRhc2gtbGVzcyBhcmdzIHRvIGZyb21fc3RyaW5nLgotQXV0aG9yOiBUaW0gUmV0b3V0IDxkaW9jbGVzQGRlYmlhbi5vcmc+Ci1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzYzNTYwNwotCi1UaGUgbW9kdWxlIERhdGE6OkdVSUQgZGVwZW5kcyBvbiBEYXRhOjpVVUlEIHN1cHBvcnRpbmcgdGhpcyBiZWhhdmlvdXIuCi0KLS0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLQotVGhpcyBwYXRjaCBpcyBmcm9tIGRlYmlhbiBvc3NwLXV1aWQgMS42LjIgaW50ZWdyYXRpb24uCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotLS0tIGEvcGVybC91dWlkX2NvbXBhdC5wbQotKysrIGIvcGVybC91dWlkX2NvbXBhdC5wbQotQEAgLTkzLDcgKzkzLDkgQEAKLSAgICAgJHV1aWQtPmltcG9ydCgnc3RyJywKLSAgICAgICAgICAgJHN0ciA9fiAvXjB4LwotICAgICAgICAgPyBqb2luICctJywgdW5wYWNrKCd4MiBhOCBhNCBhNCBhNCBhMTInLCAkc3RyKQotLSAgICAgICAgOiAkc3RyCi0rICAgICAgICA6ICRzdHIgPX4gLy0vCi0rICAgICAgICA/ICRzdHIKLSsgICAgICAgIDogam9pbiAnLScsIHVucGFjaygnQTggQTQgQTQgQTQgQTEyJywgJHN0cikKLSAgICAgKTsKLSAgICAgcmV0dXJuICR1dWlkLT5leHBvcnQoJ2JpbicpOwotIH0KLS0tLSBhL3BlcmwvdXVpZF9jb21wYXQudHMKLSsrKyBiL3BlcmwvdXVpZF9jb21wYXQudHMKLUBAIC0yOCw3ICsyOCw3IEBACi0gIyMgIHV1aWRfY29tcGF0LnRzOiBEYXRhOjpVVUlEIEJhY2t3YXJkIENvbXBhdGliaWxpdHkgUGVybCBBUEkgKFBlcmwgdGVzdCBzdWl0ZSBwYXJ0KQotICMjCi0gCi0tdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTQ7Ci0rdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTY7Ci0gCi0gQkVHSU4gewotICAgICB1c2Vfb2soJ0RhdGE6OlVVSUQnKTsKLUBAIC01MywzICs1Myw1IEBACi0gb2soJHV1aWQ4ID0gJHVnLT5mcm9tX3N0cmluZygiNmJhN2I4MTEtOWRhZC0xMWQxLTgwYjQtMDBjMDRmZDQzMGM4IikpOwotIG9rKCR1Zy0+Y29tcGFyZSgkdXVpZDcsICR1dWlkOCkgPT0gMCk7Ci0gCi0rb2soJHV1aWQ5ID0gJHVnLT5mcm9tX3N0cmluZygiNmJhN2I4MTE5ZGFkMTFkMTgwYjQwMGMwNGZkNDMwYzgiKSk7Ci0rb2soJHVnLT5jb21wYXJlKCR1dWlkNywgJHV1aWQ5KSA9PSAwKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvaW5zdGFsbC1wYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvaW5zdGFsbC1wYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNiODBmNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2luc3RhbGwtcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi11dWlkLnBjIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lIHNvIHNob3VsZCBiZSBpbnN0YWxsZWQgZnJvbSB0aGUgY3VycmVudAotZGlyZWN0b3J5LCBhbmQgbm90ICRTLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3Nob3VsZCBiZSBzdWJtaXR0ZWRdCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1JbmRleDogdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbgkyMDEyLTExLTEzIDE2OjU4OjI4LjYyNDE1NjAwMCArMDAwMAotKysrIHV1aWQtMS42LjIvTWFrZWZpbGUuaW4JMjAxMi0xMS0xMyAxNzowNToyNC4yMjQxNTg2NzAgKzAwMDAKLUBAIC0yMzIsNyArMjMyLDcgQEAKLSAJJChTSFRPT0wpIG1rZGlyIC1mIC1wIC1tIDc1NSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKLSAJJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNzU1IHV1aWQtY29uZmlnICQoREVTVERJUikkKGJpbmRpcikvCi0gCSQoU0hUT09MKSBpbnN0YWxsIC1jIC1tIDY0NCAkKFMpL3V1aWQtY29uZmlnLjEgJChERVNURElSKSQobWFuZGlyKS9tYW4xLwotLQkkKFNIVE9PTCkgaW5zdGFsbCAtYyAtbSA2NDQgJChTKS91dWlkLnBjICQoREVTVERJUikkKGxpYmRpcikvcGtnY29uZmlnLwotKwkkKFNIVE9PTCkgaW5zdGFsbCAtYyAtbSA2NDQgdXVpZC5wYyAkKERFU1RESVIpJChsaWJkaXIpL3BrZ2NvbmZpZy8KLSAJJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNjQ0IHV1aWQuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS8KLSAJLUBpZiBbICIuJChXSVRIX0RDRSkiID0gLnllcyBdOyB0aGVuIFwKLSAJICAgIGVjaG8gIiQoU0hUT09MKSBpbnN0YWxsIC1jIC1tIDY0NCAkKFMpL3V1aWRfZGNlLmggJChERVNURElSKSQoaW5jbHVkZWRpcikvIjsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9sZGZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGZjMTM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLU9iZXkgTERGTEFHUwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSB1dWlkLTEuNi4yLm9yaWcvTWFrZWZpbGUuaW4KLSsrKyB1dWlkLTEuNi4yL01ha2VmaWxlLmluCi1AQCAtMTEzLDE1ICsxMTMsMTUgQEAgYWxsOiAkKFRBUkdFVFMpCi0JQCQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1jICQ8Ci0KLSAkKExJQl9OQU1FKTogJChMSUJfT0JKUykKLS0JQCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLW8gJChMSUJfTkFNRSkgJChMSUJfT0JKUykgLXJwYXRoICQobGliZGlyKSBcCi0rCUAkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpICQoTERGTEFHUykgLW8gJChMSUJfTkFNRSkgJChMSUJfT0JKUykgLXJwYXRoICQobGliZGlyKSBcCi0JICAgIC12ZXJzaW9uLWluZm8gYCQoU0hUT09MKSB2ZXJzaW9uIC1sIGMgLWQgbGlidG9vbCAkKFMpL3V1aWRfdmVycy5oYAotCi0gJChEQ0VfTkFNRSk6ICQoRENFX09CSlMpCi0tCUAkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpIC1vICQoRENFX05BTUUpICQoRENFX09CSlMpIC1ycGF0aCAkKGxpYmRpcikgXAotKwlAJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAkKExERkxBR1MpIC1vICQoRENFX05BTUUpICQoRENFX09CSlMpIC1ycGF0aCAkKGxpYmRpcikgXAotCSAgICAtdmVyc2lvbi1pbmZvIGAkKFNIVE9PTCkgdmVyc2lvbiAtbCBjIC1kIGxpYnRvb2wgJChTKS91dWlkX3ZlcnMuaGAKLQotICQoQ1hYX05BTUUpOiAkKENYWF9PQkpTKQotLQlAJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENYWCkgLW8gJChDWFhfTkFNRSkgJChDWFhfT0JKUykgLXJwYXRoICQobGliZGlyKSBcCi0rCUAkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ1hYKSAkKExERkxBR1MpIC1vICQoQ1hYX05BTUUpICQoQ1hYX09CSlMpIC1ycGF0aCAkKGxpYmRpcikgXAotCSAgICAtdmVyc2lvbi1pbmZvIGAkKFNIVE9PTCkgdmVyc2lvbiAtbCBjIC1kIGxpYnRvb2wgJChTKS91dWlkX3ZlcnMuaGAKLQotICQoUFJHX05BTUUpOiAkKFBSR19PQkpTKSAkKExJQl9OQU1FKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGlidG9vbC10YWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNjAxYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVJlcGVjdCBMSUJUT09MRkxBR1MKLQotVGhpcyBhZGQgYSBrbm9iIHRoYXQgY2FuIGJlIGNvbnRyb2xsZWQgZnJvbSBlbnYgdG8gc2V0IGdlbmVyaWMgb3B0aW9ucwotZm9yIGxpYnRvb2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbgotKysrIHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KLUBAIC01Niw3ICs1Niw3IEBAIFJNICAgICAgICAgID0gcm0gLWYKLSBDUCAgICAgICAgICA9IGNwCi0gUk1ESVIgICAgICAgPSBybWRpcgotIFNIVE9PTCAgICAgID0gJChTKS9zaHRvb2wKLS1MSUJUT09MICAgICA9IEBMSUJUT09MQAotK0xJQlRPT0wgICAgID0gQExJQlRPT0xAICQoTElCVE9PTEZMQUdTKQotIFRSVUUgICAgICAgID0gdHJ1ZQotIFBPRDJNQU4gICAgID0gcG9kMm1hbgotIFBFUkwgICAgICAgID0gQFBFUkxACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL3V1aWQtbGlidG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvdXVpZC1saWJ0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmM5MWI4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvdXVpZC1saWJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotUmVtb3ZlIGhhcmRjb2RlZCBsaWJ0b29sIG5hbWUsIGZhbGwgYmFjayB0byBnZW5lcmF0ZWQgbmFtZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vIHVwc3RyZWFtXQotVGhlIHByb2plY3QgYXBwZWFycyB0byBubyBsb25nZXIgYmUgYWNjZXB0aW5nIGNoYW5nZXMuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtdXIgdXVpZC0xLjYuMi5vcmlnL01ha2VmaWxlLmluIHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KLS0tLSB1dWlkLTEuNi4yLm9yaWcvTWFrZWZpbGUuaW4JMjAxMi0wNS0xNCAxNDozNzoxOS41Nzk2NzI5MzAgLTA1MDAKLSsrKyB1dWlkLTEuNi4yL01ha2VmaWxlLmluCTIwMTItMDUtMTQgMTQ6Mzc6NDkuMTEyNzMzNzg3IC0wNTAwCi1AQCAtMzIsNiArMzIsNyBAQAotIFZQQVRIICAgICAgID0gQHNyY2RpckAKLSBzcmNkaXIgICAgICA9IEBzcmNkaXJACi0gdG9wX3NyY2RpciAgPSBAdG9wX3NyY2RpckAKLSt0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAotIFMgICAgICAgICAgID0gJChzcmNkaXIpCi0gQyAgICAgICAgICAgPSAuCi0gCi1AQCAtNTUsNyArNTYsNyBAQAotIENQICAgICAgICAgID0gY3AKLSBSTURJUiAgICAgICA9IHJtZGlyCi0gU0hUT09MICAgICAgPSAkKFMpL3NodG9vbAotLUxJQlRPT0wgICAgID0gJChDKS9saWJ0b29sCi0rTElCVE9PTCAgICAgPSBATElCVE9PTEAKLSBUUlVFICAgICAgICA9IHRydWUKLSBQT0QyTUFOICAgICA9IHBvZDJtYW4KLSBQRVJMICAgICAgICA9IEBQRVJMQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC91dWlkLW5vc3RyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL3V1aWQtbm9zdHJpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwNmI1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL3V1aWQtbm9zdHJpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVdlIGRvbid0IHdhbnQgYW55dGhpbmcgc3RyaXBwZWQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyB1cHN0cmVhbV0KLVRoZSBwcm9qZWN0IGFwcGVhcnMgdG8gbm8gbG9uZ2VyIGJlIGFjY2VwdGluZyBjaGFuZ2VzLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLXVyIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbiB1dWlkLTEuNi4yL01ha2VmaWxlLmluCi0tLS0gdXVpZC0xLjYuMi5vcmlnL01ha2VmaWxlLmluCTIwMTItMDUtMTQgMTQ6NDI6NDIuMjI1Nzg5NDU2IC0wNTAwCi0rKysgdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgkyMDEyLTA1LTE0IDE1OjAzOjAzLjExOTczMzQwMCAtMDUwMAotQEAgLTI1NCw3ICsyNTQsNyBAQAotIAktQGlmIFsgIi4kKFdJVEhfQ1hYKSIgPSAueWVzIF07IHRoZW4gXAotIAkgICAgJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCAkKFNIVE9PTCkgaW5zdGFsbCAtYyAtbSA2NDQgJChDWFhfTkFNRSkgJChERVNURElSKSQobGliZGlyKS87IFwKLSAJZmkKLS0JQCQoTElCVE9PTCkgLS1tb2RlPWluc3RhbGwgJChTSFRPT0wpIGluc3RhbGwgLWMgLXMgLW0gNzU1IHV1aWQgJChERVNURElSKSQoYmluZGlyKS8KLSsJQCQoTElCVE9PTCkgLS1tb2RlPWluc3RhbGwgJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNzU1IHV1aWQgJChERVNURElSKSQoYmluZGlyKS8KLSAJJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNjQ0ICQoUykvdXVpZC4xICQoREVTVERJUikkKG1hbmRpcikvbWFuMS8KLSAJLUBpZiBbICIuJChXSVRIX1BFUkwpIiA9IC55ZXMgXTsgdGhlbiBcCi0gCSAgICAoY2QgJChTKS9wZXJsICYmICQoTUFLRSkgJChNRkxBR1MpIGluc3RhbGwgREVTVERJUj0kKERFU1RESVIpKTsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOWNhNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLVNVTU1BUlkgPSAiVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXIgKFVVSUQpIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJPU1NQIHV1aWQgaXMgYSBJU08tQzoxOTk5IGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIGludGVyZmFjZSBcCi0oQVBJKSBhbmQgY29ycmVzcG9uZGluZyBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIChDTEkpIGZvciB0aGUgZ2VuZXJhdGlvbiBvZiBcCi1EQ0UgMS4xLCBJU08vSUVDIDExNTc4OjE5OTYgYW5kIFJGQyA0MTIyIGNvbXBsaWFudCBVbml2ZXJzYWxseSBVbmlxdWUgXAotSWRlbnRpZmllciAoVVVJRCkuIEl0IHN1cHBvcnRzIERDRSAxLjEgdmFyaWFudCBVVUlEcyBvZiB2ZXJzaW9uIDEgKHRpbWUgXAotYW5kIG5vZGUgYmFzZWQpLCB2ZXJzaW9uIDMgKG5hbWUgYmFzZWQsIE1ENSksIHZlcnNpb24gNCAocmFuZG9tIG51bWJlciBcCi1iYXNlZCkgYW5kIHZlcnNpb24gNSAobmFtZSBiYXNlZCwgU0hBLTEpLiIKLURFU0NSSVBUSU9OX3V1aWQgPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgdG9vbCB0byBjcmVhdGUgVW5pdmVyc2FsbHkgXAotVW5pcXVlIElkZW50aWZpZXJzIChVVUlEKSBmcm9tIHRoZSBjb21tYW5kLWxpbmUuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9zc3Aub3JnL3BrZy9saWIvdXVpZC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zMDtlbmRsaW5lPTU1O21kNT1iMzk0ZmFkYjAzOWJiZmNhNmFkOWQ5ZDc2OWVlOTYwZSBcCi0JICAgZmlsZTovL3V1aWRfbWQ1LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yODttZDU9OWMxZjRiMjIxODU0NmRlYWUyNGM5MWJlMWRjZjAwZGQiCi0KLVBSID0gInIyIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9vL29zc3AtdXVpZC8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vby8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKLQkgICBmaWxlOi8vMDAwMS1DaGFuZ2UtbGlicmFyeS1uYW1lLnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMi11dWlkLXByZXNlcnZlLW0tb3B0aW9uLXN0YXR1cy1pbi12LW9wdGlvbi1oYW5kbGluZy5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDMtRml4LXdoYXRpcy1lbnRyaWVzLnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwNC1maXgtZGF0YS11dWlkLWZyb20tc3RyaW5nLnBhdGNoIFwKLQkgICBmaWxlOi8vdXVpZC1saWJ0b29sLnBhdGNoIFwKLQkgICBmaWxlOi8vdXVpZC1ub3N0cmlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGwtcGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0b29sLXRhZy5wYXRjaCBcCi0JICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWRiMGQ0M2E5MDIyYTZlYmJiYzI1MzM3YWUyODk0MmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFhNjE1MjI1YmFhNWY4YmI2ODY4MjQ0MjNmNTBlNDQyN2FjZDNmNzBkMzk0NzY1YmRmZjMyODAxZjBmZDViMCIKLQotUyA9ICIke1dPUktESVJ9L3V1aWQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kY2UgLS13aXRob3V0LWN4eCAtLXdpdGhvdXQtcGVybCAtLXdpdGhvdXQtcGVybC1jb21wYXQgLS13aXRob3V0LXBocCAtLXdpdGhvdXQtcGdzcWwiCi1FWFRSQV9PRUNPTkYgPSAiLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vb3NzcCIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAjIFRoaXMgcGFja2FnZSBoYXMgYSBjb21wbGV0ZWx5IGN1c3RvbSBhY2xvY2FsLm00LCB3aGljaCBzaG91bGQgYmUgYWNpbmNsdWRlLm00LgotICBpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotICAgIG12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAotICBmaQotCi0gIHJtIC1mICR7U30vbGlidG9vbC5tNAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgbWtkaXIgLXAgICR7RH0ke2luY2x1ZGVkaXJ9L29zc3AKLSAgbXYgJHtEfSR7bGliZGlyfS9wa2djb25maWcvdXVpZC5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9vc3NwLXV1aWQucGMKLX0KLQotUEFDS0FHRVMgPSsgInV1aWQiCi1GSUxFU191dWlkID0gIiR7YmluZGlyfS91dWlkIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm9zc3AtdXVpZC5zby4xNioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS91dWlkLWNvbmZpZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAidXVpZC4zIgotQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tZG9jID0gIjIwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1dWlkLjNdID0gIiR7bWFuZGlyfS9tYW4zL3V1aWQuMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZGMzMGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkVycm9yIC0gRXJyb3IvZXhjZXB0aW9uIGhhbmRsaW5nIGluIGFuIE9PLWlzaCB3YXkiCi1ERVNDUklQVElPTiA9ICJUaGUgRXJyb3IgcGFja2FnZSBwcm92aWRlcyB0d28gaW50ZXJmYWNlcy4gRmlyc3RseSBcCi1FcnJvciBwcm92aWRlcyBhIHByb2NlZHVyYWwgaW50ZXJmYWNlIHRvIGV4Y2VwdGlvbiBoYW5kbGluZy4gXAotU2Vjb25kbHkgRXJyb3IgaXMgYSBiYXNlIGNsYXNzIGZvciBlcnJvcnMvZXhjZXB0aW9ucyB0aGF0IGNhbiBcCi1laXRoZXIgYmUgdGhyb3duLCBmb3Igc3Vic2VxdWVudCBjYXRjaCwgb3IgY2FuIHNpbXBseSBiZSByZWNvcmRlZC4iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYTJlZTdmMGRjNDRmOWVlNzY2NjFhMTZiYmJjMGM0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzlmNDc0YWQzZDRmZTBjYWJmZjZiNmJlNTMyY2IxZGQzNDgyNDU5ODZkNGE2YjYwMGFkOTIxZDVjZmRlZmFmIgotCi1TID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCSMgdGVzdCByZXF1aXJlcyAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgotCXJtIC1yZiAke0J9L3QvcG9kLWNvdmVyYWdlLnQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNDJiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNi5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIkVycm9yIC0gRXJyb3IvZXhjZXB0aW9uIGhhbmRsaW5nIGluIGFuIE9PLWlzaCB3YXkiCitERVNDUklQVElPTiA9ICJUaGUgRXJyb3IgcGFja2FnZSBwcm92aWRlcyB0d28gaW50ZXJmYWNlcy4gRmlyc3RseSBcCitFcnJvciBwcm92aWRlcyBhIHByb2NlZHVyYWwgaW50ZXJmYWNlIHRvIGV4Y2VwdGlvbiBoYW5kbGluZy4gXAorU2Vjb25kbHkgRXJyb3IgaXMgYSBiYXNlIGNsYXNzIGZvciBlcnJvcnMvZXhjZXB0aW9ucyB0aGF0IGNhbiBcCitlaXRoZXIgYmUgdGhyb3duLCBmb3Igc3Vic2VxdWVudCBjYXRjaCwgb3IgY2FuIHNpbXBseSBiZSByZWNvcmRlZC4iCisKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZGNkOTQ2NDBmNjE3ZGYwMmI2ZDZjMWU0ZTkyMDE4YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzU5MGE5NjJjZDczYWUwMzQ3MGUxZmYxNjQ1OWE2Y2JjNTI3M2ZjNTc2MjZiODk4MWRhYjljMjQzMzE1NWQ5IgorCitTID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKwljcGFuX2RvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgdGVzdCByZXF1aXJlcyAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgorCXJtIC1yZiAke0J9L3QvcG9kLWNvdmVyYWdlLnQKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MjM4ZjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgVVJJIHN0cmluZ3MiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFVSSS5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCi1UaGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFVSSSBjbGFzcy4gVVJJIG9iamVjdHMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIFwKLWFuZCBtYW5pcHVsYXRlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZXNlIHN0cmluZ3MuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvVVJJLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NTNlOTRmYWU2NzI4MDBmODNiYzFiZDdhMzhiNTNmIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvYXV0aG9ycy9pZC9FL0VUL0VUSEVSL1VSSS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzN2Q0NGEwOGU1OTlhYTk0NWIzMmE5NDM0ZmZlMDBhNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjY2E3YWI0YTZmNjNmM2NjYWFjYWUwZjJlMTMzN2U4ZWRmODQxMzdlNzNmMTg1NDhlYzdkNjU5ZjIzZWZlNDEzIgotCi1TID0gIiR7V09SS0RJUn0vVVJJLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyB0aGVzZSB0ZXN0cyByZXF1aXJlICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCi0Jcm0gLXJmICR7Qn0vdC9jd2QudAotCXJtIC1yZiAke0J9L3QvZmlsZS50Ci19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJ0ZXN0LW5lZWRzLXBlcmwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjc0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjc0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3Y2ZhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzQuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgVVJJIHN0cmluZ3MiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFVSSS5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCitUaGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFVSSSBjbGFzcy4gVVJJIG9iamVjdHMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIFwKK2FuZCBtYW5pcHVsYXRlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZXNlIHN0cmluZ3MuIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvVVJJLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NTNlOTRmYWU2NzI4MDBmODNiYzFiZDdhMzhiNTNmIgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvYXV0aG9ycy9pZC9FL0VUL0VUSEVSL1VSSS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTJmNzE4M2IxNzhhZjQwZjIwNWJhMzcxMjgyMjVkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhOWMyNTRmNDVmODljYjFkZDk0NmI2ODlkZmU0MzMwOTU0MDQ1MzJhNDU0M2JkYWFiMGI3MWNlMGZkY2RkNTNkIgorCitTID0gIiR7V09SS0RJUn0vVVJJLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgorCWNwYW5fZG9fY29tcGlsZQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyB0aGVzZSB0ZXN0cyByZXF1aXJlICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCisJcm0gLXJmICR7Qn0vdC9jd2QudAorCXJtIC1yZiAke0J9L3QvZmlsZS50Cit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJ0ZXN0LW5lZWRzLXBlcmwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKaW5kZXggYzVlMGFlNi4uOTVhZjRkMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCkBAIC0xOCw4ICsxOCwxNSBAQAogCiAjIGZpeCB1cCBzdWIgTWFrZU1ha2VyIHByb2plY3QgYXMgYXJndW1lbnRzIGRvbid0IGdldCBwcm9wYWdhdGVkIHRob3VnaAogIyBzZWUgaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD0yODYzMgorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1FIFwKKwkgICAgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTo6ZycgLWUgJ3M6LUkke1NUQUdJTkdfSU5DRElSfTo6ZycgXAorCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQorfQorCiBkb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAnczotLXN5c3Jvb3Q9LipcKFxzXHwkXCk6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSA6ZycgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKKwlzZWQgLWUgJ3M6LS1zeXNyb290PS4qXChcc1x8JFwpOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gOmcnIFwKKwkgICAgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKIAlzZWQgJ3M6XkZVTExfQVIgPSAuKjpGVUxMX0FSID0gJHtBUn06ZycgLWkgRXhwYXQvTWFrZWZpbGUKIAkjIG1ha2Ugc3VyZSB0aGVzZSB0d28gZG8gbm90IGJ1aWxkIGluIHBhcmFsbGVsCiAJc2VkICdzIV4kKElOU1RfRFlOQU1JQyk6ISQoSU5TVF9EWU5BTUlDKTogJChCT09UU1RSQVApIScgLWkgRXhwYXQvTWFrZWZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWQwMGQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIFhNTCIKLURFU0NSSVBUSU9OID0gIlRoZSBYTUw6OlNpbXBsZSBQZXJsIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSBBUEkgbGF5ZXIgXAotb24gdG9wIG9mIGFuIHVuZGVybHlpbmcgWE1MIHBhcnNpbmcgbW9kdWxlIHRvIG1haW50YWluIFhNTCBmaWxlcyBcCi0oZXNwZWNpYWxseSBjb25maWd1cmF0aW9uIGZpbGVzKS4gSXQgaXMgYSBibHVudCByZXdyaXRlIG9mIFhNTDo6U2ltcGxlIFwKLShieSBHcmFudCBNY0xlYW4pIHRvIHVzZSB0aGUgWE1MOjpMaWJYTUwgcGFyc2VyIGZvciBYTUwgc3RydWN0dXJlcywgXAotd2hlcmUgdGhlIG9yaWdpbmFsIHVzZXMgcGxhaW4gUGVybCBvciBTQVggcGFyc2Vycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35tYXJrb3YvWE1MLUxpYlhNTC1TaW1wbGUtMC45My9saWIvWE1ML0xpYlhNTC9TaW1wbGUucG9kIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIzNDc3ZTE4YTBkMDQzOTJjZGY0NGFlNzBlNDliNDk1IgotREVQRU5EUyArPSAibGlieG1sLXBhcnNlci1wZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1TaW1wbGUtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWNkMmU4ZTM0MjExNjBjNDIyNzc1MjNkNWIyZjRkZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWExNDgxOWZkMTdjNzVmYmI5MGFkY2VjMDQ0NmNlYWIzNTZjYWIwY2NhZmY4NzBmMmUxNjU5MjA1ZGMyNDI0ZiIKLQotUyA9ICIke1dPUktESVJ9L1hNTC1TaW1wbGUtJHtQVn0iCi0KLUVYVFJBX1BFUkxGTEFHUyA9ICItSSAke1BFUkxIT1NUTElCfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzc4OGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIFhNTCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUw6OlNpbXBsZSBQZXJsIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSBBUEkgbGF5ZXIgXAorb24gdG9wIG9mIGFuIHVuZGVybHlpbmcgWE1MIHBhcnNpbmcgbW9kdWxlIHRvIG1haW50YWluIFhNTCBmaWxlcyBcCisoZXNwZWNpYWxseSBjb25maWd1cmF0aW9uIGZpbGVzKS4gSXQgaXMgYSBibHVudCByZXdyaXRlIG9mIFhNTDo6U2ltcGxlIFwKKyhieSBHcmFudCBNY0xlYW4pIHRvIHVzZSB0aGUgWE1MOjpMaWJYTUwgcGFyc2VyIGZvciBYTUwgc3RydWN0dXJlcywgXAord2hlcmUgdGhlIG9yaWdpbmFsIHVzZXMgcGxhaW4gUGVybCBvciBTQVggcGFyc2Vycy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35tYXJrb3YvWE1MLUxpYlhNTC1TaW1wbGUtMC45My9saWIvWE1ML0xpYlhNTC9TaW1wbGUucG9kIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNmMjA2ZGY4YzlmZTc3NWYxZDRjNDg0Mzg2NDkxZWFjIgorREVQRU5EUyArPSAibGlieG1sLXBhcnNlci1wZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1TaW1wbGUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmI4NDFkY2U4ODlhMjZjODlhMWMyNzM5OTcwZTlmYmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTMxZmRkYWViZWEyNDE2NzQzZWI1YzRmZGZhYjAyOGY1MDIxMjNkOWEyMjA0MDVhNDEwMGU2OGZjNDgwZGJmOCIKKworUyA9ICIke1dPUktESVJ9L1hNTC1TaW1wbGUtJHtQVn0iCisKK0VYVFJBX1BFUkxGTEFHUyA9ICItSSAke1BFUkxIT1NUTElCfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybCBcCisgICAgbGlieG1sLXBhcnNlci1wZXJsIFwKKyAgICBsaWJ4bWwtc2F4LXBlcmwgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmNDU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1yZXF1aXJlIHBlcmwuaW5jCi0KLSMgV2UgbmVlZCBnbnVncmVwIChmb3IgLUkpCi1ERVBFTkRTID0gImRiLW5hdGl2ZSBncmVwLW5hdGl2ZSBnZGJtLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgZmlsZTovL0NvbmZpZ3VyZS1tdWx0aWxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtbm9wYWNrbGlzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NTV9Vbml4LnBtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9lcnJub192ZXIuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9keW5hbG9hZGVyaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJsLVBhdGhUb29scy1kb24tdC1maWx0ZXItb3V0LWJsaWItZnJvbS1JTkMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImFmNmE4NGM3YzNlMmI4YjI2OWMxMDVhNWRiMmY2ZDUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTc3YmFjNDUwNWMyNzBmMTg5MGVjZTc1YWZjN2Q0YjU1NTA5MGI0MWFhNDFlYTQ3ODc0N2UyM2IyYWZiM2YiCi0KLWluaGVyaXQgbmF0aXZlCi0KLU5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKLQotZXhwb3J0IExEPSIke0NDTER9IgotCi1kb19jb25maWd1cmUgKCkgewotCS4vQ29uZmlndXJlIFwKLQkJLURjYz0iJHtDQ30iIFwKLQkJLURjZmxhZ3M9IiR7Q0ZMQUdTfSIgXAotCQktRGxkZmxhZ3M9IiR7TERGTEFHU30iIFwKLQkJLURsZGRsZmxhZ3M9IiR7TERGTEFHU30gLXNoYXJlZCIgXAotCQktRGNmX2J5PSJPcGVuIEVtYmVkZGVkIiBcCi0JCS1EcHJlZml4PSR7cHJlZml4fSBcCi0JCS1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCi0JCS1Ec2l0ZXByZWZpeD0ke3ByZWZpeH0gXAotCQlcCi0JCS1EYmluPSR7U1RBR0lOR19CSU5ESVJ9LyR7UE59IFwKLQkJLURwcml2bGliPSR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0gXAotCQktRGFyY2hsaWI9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC8ke1BWfSBcCi0JCS1EdmVuZG9ybGliPSR7U1RBR0lOR19MSUJESVJ9L3BlcmwvdmVuZG9yX3BlcmwvJHtQVn0gXAotCQktRHZlbmRvcmFyY2g9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC92ZW5kb3JfcGVybC8ke1BWfSBcCi0JCS1Ec2l0ZWxpYj0ke1NUQUdJTkdfTElCRElSfS9wZXJsL3NpdGVfcGVybC8ke1BWfSBcCi0JCS1Ec2l0ZWFyY2g9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC9zaXRlX3BlcmwvJHtQVn0gXAotCQlcCi0JCS1EdXNlc2hycGxpYiBcCi0JCS1EdXNldGhyZWFkcyBcCi0JCS1EdXNlaXRocmVhZHMgXAotCQktRHVzZWxhcmdlZmlsZXMgXAotCQktRG5vZXh0ZW5zaW9ucz1PREJNX0ZpbGUgXAotCQktVWRfZG9zdWlkIFwKLQkJLVVpX2RiIFwKLQkJLVVpX25kYm0gXAotCQktVWlfZ2RibSBcCi0JCS1VaV9nZGJtX25kYm0gXAotCQktVWlfZ2RibW5kYm0gXAotCQktRGlfc2hhZG93IFwKLQkJLURpX3N5c2xvZyBcCi0JCS1EdXNlcGVybGlvIFwKLQkJLURtYW4zZXh0PTNwbSBcCi0JCS1Ec2VkPS9iaW4vc2VkIFwKLQkJLVVhZnMgXAotCQktVWRfY3NoIFwKLQkJLVV1c2VzZmlvIFwKLQkJLVV1c2VubSAtZGVzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0JIyBXZSBuZWVkIGEgaG9zdHBlcmwgbGluayBmb3IgYnVpbGRpbmcgcGVybAotCWxuIC1zZiBwZXJsJHtQVn0gJHtEfSR7YmluZGlyfS9ob3N0cGVybAotCi0gICAgICAgIGxuIC1zZiBwZXJsICR7RH0ke2xpYmRpcn0vcGVybDUKLQotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUgXAotCSAgICAgICAgICAgJHtEfSR7ZGF0YWRpcn0vcGVybC8ke1BWfS9FeHRVdGlscwotCi0JIyBTYXZlIG5hdGl2ZSBjb25maWcgCi0JaW5zdGFsbCBjb25maWcuc2ggJHtEfSR7bGliZGlyfS9wZXJsCi0JaW5zdGFsbCBsaWIvQ29uZmlnLnBtICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS8KLQlpbnN0YWxsIGxpYi9FeHRVdGlscy90eXBlbWFwICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy8KLQotCSMgcGVybCBzaGFyZWQgbGlicmFyeSBoZWFkZXJzCi0JIyByZWZlcmVuY2UgcGVybCA1LjIwLjAtMSBpbiBkZWJpYW46Ci0JIyBodHRwczovL3BhY2thZ2VzLmRlYmlhbi5vcmcvZXhwZXJpbWVudGFsL2kzODYvcGVybC9maWxlbGlzdAotCWZvciBpIGluIGF2LmggYml0Y291bnQuaCBjaGFyY2xhc3NfaW52bGlzdHMuaCBjb25maWcuaCBjb3AuaCBjdi5oIGRvc2lzaC5oIFwKLQkJZW1iZWQuaCBlbWJlZHZhci5oIEVYVEVSTi5oIGZha2VzZGlvLmggZmVhdHVyZS5oIGZvcm0uaCBnaXRfdmVyc2lvbi5oIFwKLQkJZ3YuaCBoYW5keS5oIGh2X2Z1bmMuaCBodi5oIGlubGluZS5oIElOVEVSTi5oIGludHJwdmFyLmggaXBlcmxzeXMuaCBcCi0JCWtleXdvcmRzLmggbDFfY2hhcl9jbGFzc190YWIuaCBtYWxsb2NfY3RsLmggbWV0YWNvbmZpZy5oIG1nX2RhdGEuaCBcCi0JCW1nLmggbWdfcmF3LmggbWdfdnRhYmxlLmggbXlkdHJhY2UuaCBub3N0ZGlvLmggb3Bjb2RlLmggb3AuaCBcCi0JCW9wbmFtZXMuaCBvcF9yZWdfY29tbW9uLmggb3ZlcmxvYWQuaCBwYWQuaCBwYXJzZXIuaCBwYXRjaGxldmVsLmggXAotCQlwZXJsYXBpLmggcGVybC5oIHBlcmxpby5oIHBlcmxpb2wuaCBwZXJsc2Rpby5oIHBlcmx2YXJzLmggcGVybHkuaCBcCi0JCXBwLmggcHBfcHJvdG8uaCBwcm90by5oIHJlZW50ci5oIHJlZ2NoYXJjbGFzcy5oIHJlZ2NvbXAuaCByZWdleHAuaCBcCi0JCXJlZ25vZGVzLmggc2NvcGUuaCBzdi5oIHRocmVhZC5oIHRpbWU2NF9jb25maWcuaCB0aW1lNjQuaCB1Y29uZmlnLmggXAotCQl1bmljb2RlX2NvbnN0YW50cy5oIHVuaXhpc2guaCB1dGY4LmggdXRmZWJjZGljLmggdXRpbC5oIHV1ZG1hcC5oIFwKLQkJdnV0aWwuaCB3YXJuaW5ncy5oIFhTVUIuaAotCWRvCi0JCWluc3RhbGwgJGkgJHtEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUKLQlkb25lCi0KLQkjIFRob3NlIHdyYXBwZXJzIG1lYW4gdGhhdCBwZXJsIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSAod2hpY2ggbWF5IGNoYW5nZQotCSMgcGF0aCBsb2NhdGlvbikgd29ya3MgYW5kIHRoYXQgaW4gdGhlIG5hdGl2ZXNkayBjYXNlLCB0aGUgU0RLIGNhbiBiZQotCSMgaW5zdGFsbGVkIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZyb20gdGhlIG9uZSBpdCB3YXMgYnVpbHQgZm9yLgotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybCBQRVJMNUxJQj0nJFBFUkw1TElCOiR7U1RBR0lOR19MSUJESVJ9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3BlcmwvdmVuZG9yX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybC8ke1BWfScKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3Blcmwke1BWfSBQRVJMNUxJQj0nJFBFUkw1TElCOiR7U1RBR0lOR19MSUJESVJ9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3BlcmwvdmVuZG9yX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybC8ke1BWfScKLQotCSMgVXNlIC91c3IvYmluL2VudiBuYXRpdmVwZXJsIGZvciB0aGUgcGVybCBzY3JpcHQuCi0JZm9yIGYgaW4gYGdyZXAgLUlsICcjISAqJHtiaW5kaXJ9L3BlcmwnICR7RH0vJHtiaW5kaXJ9LypgOyBkbwotCQlzZWQgLWkgLWUgJ3N8JHtiaW5kaXJ9L3Blcmx8L3Vzci9iaW4vZW52IG5hdGl2ZXBlcmx8JyAkZgotCWRvbmUKLQotCSMgVGhlIHBhY2tsaXN0IGlzIGxhcmdlIHdpdGggaGFyZGNvZGVkIHBhdGhzIG1lYW5pbmcgaXQgbmVlZHMgcmVsb2NhdGluZwotCSMgc28ganVzdCByZW1vdmUgaXQuCi0Jcm0gJHtEfSR7bGliZGlyfS9wZXJsLyR7UFZ9Ly5wYWNrbGlzdAotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciIKLQotcGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyICgpIHsKLQlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KLQkjIENyZWF0ZSBhIHdyYXBwZXIgdGhhdCAvdXNyL2Jpbi9lbnYgcGVybCB3aWxsIHVzZSB0byBnZXQgcGVybC1uYXRpdmUuCi0JIyBUaGlzIE1VU1QgbGl2ZSBpbiB0aGUgbm9ybWFsIGJpbmRpci4KLQljYXQgPiAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vLi4vbmF0aXZlcGVybCA8PCBFT0YKLSMhL2Jpbi9zaAotcmVhbHBhdGg9XGByZWFkbGluayAtZm4gXCQwXGAKLWV4ZWMgXGBkaXJuYW1lIFwkcmVhbHBhdGhcYC9wZXJsLW5hdGl2ZS9wZXJsICJcJEAiCi1FT0YKLQljaG1vZCAwNzU1ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS8uLi9uYXRpdmVwZXJsCi0JY2F0ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS8uLi9uYXRpdmVwZXJsCi19Ci0KLSMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIioucG0gKi5wb2QgKi5oICoucGwgKi5zaCIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlICs9ICJecGVybC1tb2R1bGUtLipuYXRpdmUkIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZDNmZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjQuYmIKQEAgLTAsMCArMSwxNDAgQEAKK3JlcXVpcmUgcGVybC5pbmMKKworIyBXZSBuZWVkIGdudWdyZXAgKGZvciAtSSkKK0RFUEVORFMgPSAiZGItbmF0aXZlIGdyZXAtbmF0aXZlIGdkYm0tbmF0aXZlIHpsaWItbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICBmaWxlOi8vQ29uZmlndXJlLW11bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25hdGl2ZS1ub3BhY2tsaXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25hdGl2ZS1wZXJsaW5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01NX1VuaXgucG0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2Vycm5vX3Zlci5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2R5bmFsb2FkZXJoYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtUGF0aFRvb2xzLWRvbi10LWZpbHRlci1vdXQtYmxpYi1mcm9tLUlOQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvbmZpZ3VyZS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmctZm9yLW5hdGl2ZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUV4dFV0aWxzLU1NX1VuaXgucG0tZml4LXJhY2UtaXNzdWVzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNDYyMmJjNGQzOTQxZGM3ZWI1NzFjNTJiN2MwMjk5MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjA4MDI4N2ZmNjQ3NTAyNzA2ODk4NDNhZTk0NWYwMjE1OWEzM2NiOGYyZmM5MTAyNDhjMTViZWZiYTVkYjg0IgorCitpbmhlcml0IG5hdGl2ZQorCitOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCisKK2V4cG9ydCBMRD0iJHtDQ0xEfSIKKworZG9fY29uZmlndXJlICgpIHsKKwkuL0NvbmZpZ3VyZSBcCisJCS1EY2M9IiR7Q0N9IiBcCisJCS1EY2ZsYWdzPSIke0NGTEFHU30iIFwKKwkJLURsZGZsYWdzPSIke0xERkxBR1N9IiBcCisJCS1EbGRkbGZsYWdzPSIke0xERkxBR1N9IC1zaGFyZWQiIFwKKwkJLURjZl9ieT0iT3BlbiBFbWJlZGRlZCIgXAorCQktRHByZWZpeD0ke3ByZWZpeH0gXAorCQktRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAorCQktRHNpdGVwcmVmaXg9JHtwcmVmaXh9IFwKKwkJXAorCQktRGJpbj0ke1NUQUdJTkdfQklORElSfS8ke1BOfSBcCisJCS1EcHJpdmxpYj0ke1NUQUdJTkdfTElCRElSfS9wZXJsLyR7UFZ9IFwKKwkJLURhcmNobGliPSR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0gXAorCQktRHZlbmRvcmxpYj0ke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9IFwKKwkJLUR2ZW5kb3JhcmNoPSR7U1RBR0lOR19MSUJESVJ9L3BlcmwvdmVuZG9yX3BlcmwvJHtQVn0gXAorCQktRHNpdGVsaWI9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC9zaXRlX3BlcmwvJHtQVn0gXAorCQktRHNpdGVhcmNoPSR7U1RBR0lOR19MSUJESVJ9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9IFwKKwkJXAorCQktRHVzZXNocnBsaWIgXAorCQktRHVzZXRocmVhZHMgXAorCQktRHVzZWl0aHJlYWRzIFwKKwkJLUR1c2VsYXJnZWZpbGVzIFwKKwkJLURub2V4dGVuc2lvbnM9T0RCTV9GaWxlIFwKKwkJLVVkX2Rvc3VpZCBcCisJCS1VaV9kYiBcCisJCS1VaV9uZGJtIFwKKwkJLVVpX2dkYm0gXAorCQktVWlfZ2RibV9uZGJtIFwKKwkJLVVpX2dkYm1uZGJtIFwKKwkJLURpX3NoYWRvdyBcCisJCS1EaV9zeXNsb2cgXAorCQktRHVzZXBlcmxpbyBcCisJCS1EbWFuM2V4dD0zcG0gXAorCQktRHNlZD0vYmluL3NlZCBcCisJCS1VYWZzIFwKKwkJLVVkX2NzaCBcCisJCS1VdXNlc2ZpbyBcCisJCS1VdXNlbm0gLWRlcworfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworCSMgV2UgbmVlZCBhIGhvc3RwZXJsIGxpbmsgZm9yIGJ1aWxkaW5nIHBlcmwKKwlsbiAtc2YgcGVybCR7UFZ9ICR7RH0ke2JpbmRpcn0vaG9zdHBlcmwKKworICAgICAgICBsbiAtc2YgcGVybCAke0R9JHtsaWJkaXJ9L3Blcmw1CisKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFIFwKKwkgICAgICAgICAgICR7RH0ke2RhdGFkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMKKworCSMgU2F2ZSBuYXRpdmUgY29uZmlnIAorCWluc3RhbGwgY29uZmlnLnNoICR7RH0ke2xpYmRpcn0vcGVybAorCWluc3RhbGwgbGliL0NvbmZpZy5wbSAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vCisJaW5zdGFsbCBsaWIvRXh0VXRpbHMvdHlwZW1hcCAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvCisKKwkjIHBlcmwgc2hhcmVkIGxpYnJhcnkgaGVhZGVycworCSMgcmVmZXJlbmNlIHBlcmwgNS4yMC4wLTEgaW4gZGViaWFuOgorCSMgaHR0cHM6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL2V4cGVyaW1lbnRhbC9pMzg2L3BlcmwvZmlsZWxpc3QKKwlmb3IgaSBpbiBhdi5oIGJpdGNvdW50LmggY2hhcmNsYXNzX2ludmxpc3RzLmggY29uZmlnLmggY29wLmggY3YuaCBkb3Npc2guaCBcCisJCWVtYmVkLmggZW1iZWR2YXIuaCBFWFRFUk4uaCBmYWtlc2Rpby5oIGZlYXR1cmUuaCBmb3JtLmggZ2l0X3ZlcnNpb24uaCBcCisJCWd2LmggaGFuZHkuaCBodl9mdW5jLmggaHYuaCBpbmxpbmUuaCBJTlRFUk4uaCBpbnRycHZhci5oIGlwZXJsc3lzLmggXAorCQlrZXl3b3Jkcy5oIGwxX2NoYXJfY2xhc3NfdGFiLmggbWFsbG9jX2N0bC5oIG1ldGFjb25maWcuaCBtZ19kYXRhLmggXAorCQltZy5oIG1nX3Jhdy5oIG1nX3Z0YWJsZS5oIG15ZHRyYWNlLmggbm9zdGRpby5oIG9wY29kZS5oIG9wLmggXAorCQlvcG5hbWVzLmggb3BfcmVnX2NvbW1vbi5oIG92ZXJsb2FkLmggcGFkLmggcGFyc2VyLmggcGF0Y2hsZXZlbC5oIFwKKwkJcGVybGFwaS5oIHBlcmwuaCBwZXJsaW8uaCBwZXJsaW9sLmggcGVybHNkaW8uaCBwZXJsdmFycy5oIHBlcmx5LmggXAorCQlwcC5oIHBwX3Byb3RvLmggcHJvdG8uaCByZWVudHIuaCByZWdjaGFyY2xhc3MuaCByZWdjb21wLmggcmVnZXhwLmggXAorCQlyZWdub2Rlcy5oIHNjb3BlLmggc3YuaCB0aHJlYWQuaCB0aW1lNjRfY29uZmlnLmggdGltZTY0LmggdWNvbmZpZy5oIFwKKwkJdW5pY29kZV9jb25zdGFudHMuaCB1bml4aXNoLmggdXRmOC5oIHV0ZmViY2RpYy5oIHV0aWwuaCB1dWRtYXAuaCBcCisJCXZ1dGlsLmggd2FybmluZ3MuaCBYU1VCLmgKKwlkbworCQlpbnN0YWxsICRpICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFCisJZG9uZQorCisJIyBUaG9zZSB3cmFwcGVycyBtZWFuIHRoYXQgcGVybCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgKHdoaWNoIG1heSBjaGFuZ2UKKwkjIHBhdGggbG9jYXRpb24pIHdvcmtzIGFuZCB0aGF0IGluIHRoZSBuYXRpdmVzZGsgY2FzZSwgdGhlIFNESyBjYW4gYmUKKwkjIGluc3RhbGxlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZvci4KKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwgUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsL3NpdGVfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0nCisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsJHtQVn0gUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsL3NpdGVfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0nCisKKwkjIFVzZSAvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCBmb3IgdGhlIHBlcmwgc2NyaXB0LgorCWZvciBmIGluIGBncmVwIC1JbCAnIyEgKiR7YmluZGlyfS9wZXJsJyAke0R9LyR7YmluZGlyfS8qYDsgZG8KKwkJc2VkIC1pIC1lICdzfCR7YmluZGlyfS9wZXJsfC91c3IvYmluL2VudiBuYXRpdmVwZXJsfCcgJGYKKwlkb25lCisKKwkjIFRoZSBwYWNrbGlzdCBpcyBsYXJnZSB3aXRoIGhhcmRjb2RlZCBwYXRocyBtZWFuaW5nIGl0IG5lZWRzIHJlbG9jYXRpbmcKKwkjIHNvIGp1c3QgcmVtb3ZlIGl0LgorCXJtICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS8ucGFja2xpc3QKK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIiCisKK3Blcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciAoKSB7CisJbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9CisJIyBDcmVhdGUgYSB3cmFwcGVyIHRoYXQgL3Vzci9iaW4vZW52IHBlcmwgd2lsbCB1c2UgdG8gZ2V0IHBlcmwtbmF0aXZlLgorCSMgVGhpcyBNVVNUIGxpdmUgaW4gdGhlIG5vcm1hbCBiaW5kaXIuCisJY2F0ID4gJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ly4uL25hdGl2ZXBlcmwgPDwgRU9GCisjIS9iaW4vc2gKK3JlYWxwYXRoPVxgcmVhZGxpbmsgLWZuIFwkMFxgCitleGVjIFxgZGlybmFtZSBcJHJlYWxwYXRoXGAvcGVybC1uYXRpdmUvcGVybCAiXCRAIgorRU9GCisJY2htb2QgMDc1NSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vLi4vbmF0aXZlcGVybAorCWNhdCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vLi4vbmF0aXZlcGVybAorfQorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCisKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIl5wZXJsLW1vZHVsZS0uKm5hdGl2ZSQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYwppbmRleCA2YTdhMmQ3Li44ZDQ2NDQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgICAgICcke1BOfS1wdGVzdCVzJywgJyVzJywgcmVjdXJzaXZlPVRydWUsIG1hdGNoX3BhdGg9VHJ1ZSkKIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LW1vZHVsZXMgJHtQTn0tZG9jICR7UE59LW1pc2Mgc2VkIGxpYnNzcCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1tb2R1bGVzICR7UE59LWRvYyAke1BOfS1taXNjIHNlZCIKIAogIyBUaGUgcGVybC1wdGVzdCBwYWNrYWdlIGNvbnRhaW5zIFBlcmwgaW50ZXJuYWwgbW9kdWxlcyBhbmQgZ2VuZXJhdGluZyBmaWxlCiAjIGRlcGVuZGVuY2llcyBmb3IgaXQgY2F1c2VzIHByb2JsZW1zLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXJkZXBlbmRzXzUuMjQuMS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcmRlcGVuZHNfNS4yNC40LmluYwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXJkZXBlbmRzXzUuMjQuMS5pbmMKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1yZGVwZW5kc181LjI0LjQuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1FeHRVdGlscy1NTV9Vbml4LnBtLWZpeC1yYWNlLWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC8wMDAxLUV4dFV0aWxzLU1NX1VuaXgucG0tZml4LXJhY2UtaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0M2ZiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1FeHRVdGlscy1NTV9Vbml4LnBtLWZpeC1yYWNlLWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDQwNzAyYWJmMzE1NmZhOTJlZjcwZWU1ZDQ0NWZlNTJkZDZjZmJjN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjAgU2VwIDIwMTggMTg6NDg6NDggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRXh0VXRpbHMvTU1fVW5peC5wbTogZml4IHJhY2UgaXNzdWVzCisKK0ZpeGVkIGEgcmFjZSBpc3N1ZSB3aGVuIGNvbXBpbGUgbGliaHRtbC1wYXJzZXItcGVybCBhbmQgb3RoZXJzIHdobyB1c2UgTWFrZU1ha2VyOgorW3NuaXBdCitjaG1vZCA3NTUgYmxpYi9hcmNoL2F1dG8vSFRNTC9QYXJzZXIvUGFyc2VyLnNvIAorY2htb2QgNjQ0ICJQYXJzZXIuYnMiCitbc25pcF0KKworVGhlIHJ1bGUgSU5TVF9EWU5BTUlDIHJlbW92ZXMgJy5icycgZmlsZSB3aGljaCBhcmUgZ2VuZXJhdGVkIGJ5IEJPT1RTVFJBUCwgYnV0Cit0aGUgaGF2ZSBubyBkZXBlbmRlbmNpZXMsIHNvIHRoZXJlIGlzIGEgcmFjZSBpc3N1ZToKKworQk9PVFNUUkFQOgorICAgIHRvdWNoIGZvby5icworICAgIGNobW9kIDc1NSBmb28uYnMKKworSU5TVF9EWU5BTUlDOgorICAgIHJtIC1mciBmb28uYnMKKworVGhlIGVycm9yIHdvdWxkIGhhcHBlbiB3aGVuIElOU1RfRFlOQU1JQyByZW1vdmVzIGZvby5icyBhZnRlciBCT09UU1RSQVAgdG91Y2hlZAoraXQgYnV0IGJlZm9yZSBjaG1vZCBvbiBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL1BlcmwtVG9vbGNoYWluLUdhbmcvRXh0VXRpbHMtTWFrZU1ha2VyL2NvbW1pdC80NGU5NWU3MTczNzJhYmUyYjBhNmVlNTVkZTRiNjg2NzYwYjY1MzYwXQorCitOb3RlLCBUaGlzIGlzIG5vdCBhIHJlYWwgYmFja3BvcnQsIHVwc3RyZWFtIGhhcyB0b3RhbGx5IHJlZmFjdG9yZWQgaXQgaW4gb25lCitwYXRjaCwgcGxlYXNlIHNlZSB0aGUgbGluayBhYm92ZSwgaXQncyBub3QgYSBnb29kIGlkZWEgdG8gYmFja3BvcnQgc3VjaCBhIGJpZworcGF0Y2gsIEkganVzdCByZWZlcnJlZCBpdCB0byBmaXggdGhlIHByb2JsZW0gaW4gYSBzaW1wbGUgd2F5LiBJIG1hcmsgaXQgYXMKK2JhY2twb3J0IGlzIGJlY2F1c2Ugd2UgY2FuIGRyb3AgdGhlIHBhdGNoIGFmdGVyIHVwZ3JhZGUgcGVybCB0byA1LjI2IG9yIDUuMjguCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbSBiL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtCitpbmRleCA5NWQ5NzYxLi45Y2FiZTJkIDEwMDY0NAorLS0tIGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0KKysrKyBiL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtCitAQCAtOTMzLDcgKzkzMyw3IEBAIE9USEVSTERGTEFHUyA9ICcuJGxkX29wdC4kb3RoZXJsZGZsYWdzLicKKyBJTlNUX0RZTkFNSUNfREVQID0gJy4kaW5zdF9keW5hbWljX2RlcC4nCisgSU5TVF9EWU5BTUlDX0ZJWCA9ICcuJGxkX2ZpeC4nCisgCistJChJTlNUX0RZTkFNSUMpOiAkKE9CSkVDVCkgJChNWUVYVExJQikgJChJTlNUX0FSQ0hBVVRPRElSKSQoREZTRVApLmV4aXN0cyAkKEVYUE9SVF9MSVNUKSAkKFBFUkxfQVJDSElWRURFUCkgJChQRVJMX0FSQ0hJVkVfQUZURVIpICQoSU5TVF9EWU5BTUlDX0RFUCkKKyskKElOU1RfRFlOQU1JQyk6ICQoT0JKRUNUKSAkKE1ZRVhUTElCKSAkKElOU1RfQVJDSEFVVE9ESVIpJChERlNFUCkuZXhpc3RzICQoRVhQT1JUX0xJU1QpICQoUEVSTF9BUkNISVZFREVQKSAkKFBFUkxfQVJDSElWRV9BRlRFUikgJChJTlNUX0RZTkFNSUNfREVQKSAkKEJPT1RTVFJBUCkKKyAnKTsKKyAgICAgaWYgKCRhcm1heWJlIG5lICc6Jyl7CisgCSRsZGZyb20gPSAndG1wJChMSUJfRVhUKSc7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjgzNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjgzNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI1OWZjZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDczZDcyNDdlY2FiODYzZWYyNmI1Njg3YTM3Y2NjNzVkNjE0NGFkMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KLURhdGU6IFR1ZSwgMTcgT2N0IDIwMTcgMTM6NDk6MTQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IENWRS0yMDE3LTEyODM3Ci0KLVNpZ25lZC1vZmYtYnk6IEthcmwgV2lsbGlhbXNvbiA8a2h3QGNwYW4ub3JnPgotU2lnbmVkLW9mZi1ieTogU3RldmUgSGF5IDxzdGV2ZS5tLmhheUBnb29nbGVtYWlsLmNvbT4KLQotQ1ZFOiBDVkUtMjAxNy0xMjgzNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cHM6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZi85NmM4M2VkNzhhZWVhMWEwNDk2ZGQyYjJkOTM1ODY5YTgyMmRjOGE1Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHJlZ2NvbXAuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvcmVnY29tcC5jIGIvcmVnY29tcC5jCi1pbmRleCA1NDk4ZDE0Li4zMWVjMzgzIDEwMDY0NAotLS0tIGEvcmVnY29tcC5jCi0rKysgYi9yZWdjb21wLmMKLUBAIC0xMzAyMSw2ICsxMzAyMSw3IEBAIFNfcmVnYXRvbShwVEhYXyBSRXhDX3N0YXRlX3QgKnBSRXhDX3N0YXRlLCBJMzIgKmZsYWdwLCBVMzIgZGVwdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbG9vcGRvbmU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBSRXhDX3BhcnNlOwotKyAgICAgICAgICAgICAgICAgICAgICAgIFJFeENfcGFyc2UgPSBwYXJzZV9zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5kZXIgPiAweGZmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVJUkVfVVRGOChmbGFncCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjg4My5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjg4My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxODA1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDQwYjNjZGFkMzY0OTMzNDU4NWNlZThmNDYzMGVjOWEwMjVlNjJiZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTE6MzM6NTggLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gUEFUQ0g6IFtwZXJsICMxMzE1OThdCi0KLVRoZSBjYXVzZSBvZiB0aGlzIGlzIHRoYXQgdGhlIHZGQUlMIG1hY3JvIHVzZXMgUkV4Q19wYXJzZSwgYW5kIHRoYXQKLXZhcmlhYmxlIGhhcyBqdXN0IGJlZW4gY2hhbmdlZCBpbiBwcmVwYXJhdGlvbiBmb3IgY29kZSBhZnRlciB0aGUgdkZBSUwuCi1UaGUgc29sdXRpb24gaXMgdG8gbm90IGNoYW5nZSBSRXhDX3BhcnNlIHVudGlsIGFmdGVyIHRoZSB2RkFJTC4KLQotVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIG1hY3JvIGhpZGVzIHN0dWZmIHRoYXQgY2FuIGJpdGUgeW91LgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyYmU0ZWRlZGU0YWUyMjZlMmVlYmQ0ZWZmMjhjZWRkMjA0MWYzMDBmKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTEyODMzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gcmVnY29tcC5jIHwgNiArKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogcGVybC01LjI0LjEvcmVnY29tcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjI0LjEub3JpZy9yZWdjb21wLmMKLSsrKyBwZXJsLTUuMjQuMS9yZWdjb21wLmMKLUBAIC0xMTkxOCwxNCArMTE5MTgsMTYgQEAgU19ncm9rX2JzbGFzaF9OKHBUSFhfIFJFeENfc3RhdGVfdCAqcFJFeAotIAl9Ci0gICAgICAgICBzdl9jYXRwdihzdWJzdGl0dXRlX3BhcnNlLCAiKSIpOwotIAotLSAgICAgICAgUkV4Q19wYXJzZSA9IFJFeENfc3RhcnQgPSBSRXhDX2FkanVzdGVkX3N0YXJ0ID0gU3ZQVihzdWJzdGl0dXRlX3BhcnNlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOwotKyAgICAgICAgbGVuID0gU3ZDVVIoc3Vic3RpdHV0ZV9wYXJzZSk7Ci0gCi0gCS8qIERvbid0IGFsbG93IGVtcHR5IG51bWJlciAqLwotIAlpZiAobGVuIDwgKFNUUkxFTikgOCkgewotICAgICAgICAgICAgIFJFeENfcGFyc2UgPSBlbmRicmFjZTsKLSAJICAgIHZGQUlMKCJJbnZhbGlkIGhleGFkZWNpbWFsIG51bWJlciBpbiBcXE57VSsuLi59Iik7Ci0gCX0KLSsKLSsgICAgICAgIFJFeENfcGFyc2UgPSBSRXhDX3N0YXJ0ID0gUkV4Q19hZGp1c3RlZF9zdGFydAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFN2UFZfbm9sZW4oc3Vic3RpdHV0ZV9wYXJzZSk7Ci0gCVJFeENfZW5kID0gUkV4Q19wYXJzZSArIGxlbjsKLSAKLSAgICAgICAgIC8qIFRoZSB2YWx1ZXMgYXJlIFVuaWNvZGUsIGFuZCB0aGVyZWZvcmUgbm90IHN1YmplY3QgdG8gcmVjb2RpbmcsIGJ1dApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTgtNjc5Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU2ZWJkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTgtNjc5Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gYWJlMWU2YzU2OGI5NmJjYjM4MmRmYTRmNjFjNTZkMWFiMDAxZWE1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthcmwgV2lsbGlhbXNvbiA8a2h3QGNwYW4ub3JnPgotRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDE1OjE0OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIChwZXJsICMxMzIyMjcpIHJlc3RhcnQgYSBub2RlIGlmIHdlIGNoYW5nZSB0byB1bmkgcnVsZXMKLSB3aXRoaW4gdGhlIG5vZGUgYW5kIGVuY291bnRlciBhIHNoYXJwIFMKLQotVGhpcyBjb3VsZCBsZWFkIHRvIGEgYnVmZmVyIG92ZXJmbG93LgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBhMDJjNzBlMzVkMTMxM2E1ZjRlMjQ1ZThmODYzYzgxMGU5OTExNzJkKQotCi1DVkU6IENWRS0yMDE4LTY3OTcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdGRpZmYvYWJlMWU2YzU2OGI5NmJjYjM4MmRmYTRmNjFjNTZkMWFiMDAxZWE1MV0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gcmVnY29tcC5jIHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3JlZ2NvbXAuYyBiL3JlZ2NvbXAuYwotaW5kZXggM2I5NTUwYjEwZC4uYTdkZWU5YTA5ZSAxMDA2NDQKLS0tLSBhL3JlZ2NvbXAuYwotKysrIGIvcmVnY29tcC5jCi1AQCAtMTM1NDMsNiArMTM1NDMsMTggQEAgU19yZWdhdG9tKHBUSFhfIFJFeENfc3RhdGVfdCAqcFJFeENfc3RhdGUsIEkzMiAqZmxhZ3AsIFUzMiBkZXB0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKiAvdS4gIFRoaXMgaW5jbHVkZXMgdGhlIG11bHRpLWNoYXIgZm9sZCBTSEFSUCBTIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICogJ3NzJyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShlbmRlciA9PSBMQVRJTl9TTUFMTF9MRVRURVJfU0hBUlBfUykpIHsKLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhlIG5vZGUgc3RhcnRlZCBvdXQgaGF2aW5nIHVuaSBydWxlcywgd2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd291bGRuJ3QgaGF2ZSBnb3R0ZW4gaGVyZS4gIFNvIHRoaXMgbWVhbnMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc29tZXRoaW5nIGluIHRoZSBtaWRkbGUgaGFzIGNoYW5nZWQgaXQsIGJ1dAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkaWRuJ3QgdGhpbmsgaXQgbmVlZGVkIHRvIHJlcGFyc2UuICBCdXQgdGhpcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaGFycCBzIG5vdyBkb2VzIGluZGljYXRlIHRoZSBuZWVkIGZvcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXBhcnNpbmcuICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSRXhDX3VuaV9zZW1hbnRpY3MpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvbGRwOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBsb29wZG9uZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRXhDX3NlZW5fdW5mb2xkZWRfc2hhcnBfcyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlX2V4YWN0ZnUgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0tLSAKLTIuMTUuMS00MjQtZzk0NzhhNjYwODEyCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTgtMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk4LTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NzcxNjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTgtMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIDBhYmYxZThkODlhZWNkMzJkYmRhYmRhNWRhNGQ1MmEyZDU3YTdjZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KLURhdGU6IFR1ZSwgNiBGZWIgMjAxOCAxNDo1MDo0OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBbcGVybCAjMTMyMDYzXTogSGVhcCBidWZmZXIgb3ZlcmZsb3cKLQotVGhlIHByb3hpbWFsIGNhdXNlIGlzIHNldmVyYWwgaW5zdGFuY2VzIGluIHJlZ2V4ZWMuYyBvZiB0aGUgY29kZQotYXNzdW1pbmcgdGhhdCB0aGUgaW5wdXQgd2FzIHZhbGlkIFVURi04LCB3aGVyZWFzIHRoZSBpbnB1dCB3YXMgdG9vIHNob3J0Ci1mb3Igd2hhdCB0aGUgc3RhcnQgYnl0ZSBjbGFpbWVkIGl0IHdvdWxkIGJlLgotCi1JIGdyZXBwZWQgdGhyb3VnaCB0aGUgY29yZSBmb3IgYW55IG90aGVyIHNpbWlsYXIgdXNlcywgYW5kIGRpZCBub3QgZmluZAotYW55LgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBmZTdkOGJhMGExYmY1NjdhZjhmYThmZWExMjhlMmI5ZjRjNTUzZTg0KQotCi1DVkU6IENWRS0yMDE4LTY3OTgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L3BhdGNoLzBhYmYxZThkODlhZWNkMzJkYmRhYmRhNWRhNGQ1MmEyZDU3YTdjZmZdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHJlZ2V4ZWMuYyAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIHQvbGliL3dhcm5pbmdzL3JlZ2V4ZWMgfCAgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggNTczNWI5OTdmZC4uZWE0MzJjMzlkMyAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMTQ2Niw3ICsxNDY2LDkgQEAgUGVybF9yZV9pbnR1aXRfc3RhcnQocFRIWF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0cmllX3V0ZjhfZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICB0cmllX2xhdGluX3V0ZjhfZm9sZCkpKQotIAotLSNkZWZpbmUgUkVYRUNfVFJJRV9SRUFEX0NIQVIodHJpZV90eXBlLCB0cmllLCB3aWRlY2hhcm1hcCwgdWMsIHVzY2FuLCBsZW4sIHV2YywgY2hhcmlkLCBmb2xkbGVuLCBmb2xkYnVmLCB1bmlmbGFncykgXAotKy8qICd1c2NhbicgaXMgc2V0IHRvIGZvbGRidWYsIGFuZCBpbmNyZW1lbnRlZCwgc28gYmVsb3cgdGhlIGVuZCBvZiB1c2NhbiBpcwotKyAqICdmb2xkYnVmK3NpemVvZihmb2xkYnVmKScgKi8KLSsjZGVmaW5lIFJFWEVDX1RSSUVfUkVBRF9DSEFSKHRyaWVfdHlwZSwgdHJpZSwgd2lkZWNoYXJtYXAsIHVjLCB1Y19lbmQsIHVzY2FuLCBsZW4sIHV2YywgY2hhcmlkLCBmb2xkbGVuLCBmb2xkYnVmLCB1bmlmbGFncykgXAotIFNUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgU1RSTEVOIHNraXBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIFU4IGZsYWdzID0gRk9MRF9GTEFHU19GVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTE0NzQsNyArMTQ3Niw3IEBAIFNUTVRfU1RBUlQgewotICAgICBjYXNlIHRyaWVfZmx1ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIF9DSEVDS19BTkRfV0FSTl9QUk9CTEVNQVRJQ19MT0NBTEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBpZiAodXRmOF90YXJnZXQgJiYgVVRGOF9JU19BQk9WRV9MQVRJTjEoKnVjKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIF9DSEVDS19BTkRfT1VUUFVUX1dJREVfTE9DQUxFX1VURjhfTVNHKHVjLCB1YyArIFVURjhTS0lQKHVjKSk7ICAgICAgICAgIFwKLSsgICAgICAgICAgICBfQ0hFQ0tfQU5EX09VVFBVVF9XSURFX0xPQ0FMRV9VVEY4X01TRyh1YywgdWNfZW5kIC0gdWMpOyAgICAgICAgICAgICAgICBcCi0gICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZ290byBkb190cmllX3V0ZjhfZm9sZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgY2FzZSB0cmllX3V0ZjhfZXhhY3RmYV9mb2xkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTQ4Myw3ICsxNDg1LDcgQEAgU1RNVF9TVEFSVCB7Ci0gICAgIGNhc2UgdHJpZV91dGY4X2ZvbGQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIGRvX3RyaWVfdXRmOF9mb2xkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGlmICggZm9sZGxlbj4wICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgdXZjID0gdXRmOG5fdG9fdXZjaHIoIChjb25zdCBVOCopIHVzY2FuLCBVVEY4X01BWExFTiwgJmxlbiwgdW5pZmxhZ3MgKTsgXAotKyAgICAgICAgICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKCAoY29uc3QgVTgqKSB1c2NhbiwgZm9sZGxlbiwgJmxlbiwgdW5pZmxhZ3MgKTsgICAgIFwKLSAgICAgICAgICAgICBmb2xkbGVuIC09IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgdXNjYW4gKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGxlbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xNTAwLDcgKzE1MDIsNyBAQCBTVE1UX1NUQVJUIHsKLSAgICAgICAgIC8qIEZBTExUSFJPVUdIICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGNhc2UgdHJpZV9sYXRpbl91dGY4X2ZvbGQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgaWYgKCBmb2xkbGVuPjAgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1dmMgPSB1dGY4bl90b191dmNociggKGNvbnN0IFU4KikgdXNjYW4sIFVURjhfTUFYTEVOLCAmbGVuLCB1bmlmbGFncyApOyBcCi0rICAgICAgICAgICAgdXZjID0gdXRmOG5fdG9fdXZjaHIoIChjb25zdCBVOCopIHVzY2FuLCBmb2xkbGVuLCAmbGVuLCB1bmlmbGFncyApOyAgICAgXAotICAgICAgICAgICAgIGZvbGRsZW4gLT0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICB1c2NhbiArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgbGVuPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTE1MTksNyArMTUyMSw3IEBAIFNUTVRfU1RBUlQgewotICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIC8qIEZBTExUSFJPVUdIICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGNhc2UgdHJpZV91dGY4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgdXZjID0gdXRmOG5fdG9fdXZjaHIoIChjb25zdCBVOCopIHVjLCBVVEY4X01BWExFTiwgJmxlbiwgdW5pZmxhZ3MgKTsgICAgICAgIFwKLSsgICAgICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKCAoY29uc3QgVTgqKSB1YywgdWNfZW5kIC0gdWMsICZsZW4sIHVuaWZsYWdzICk7ICAgICAgICBcCi0gICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBjYXNlIHRyaWVfcGxhaW46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHV2YyA9IChVVikqdWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMjU5OSwxMCArMjYwMSwxMCBAQCBTX2ZpbmRfYnljbGFzcyhwVEhYXyByZWdleHAgKiBwcm9nLCBjb25zdCByZWdub2RlICpjLCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgcG9pbnRzW3BvaW50cG9zKysgJSBtYXhsZW5dPSB1YzsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkbGVuIHx8IHVjIDwgKFU4KilzdHJlbmQpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBSRVhFQ19UUklFX1JFQURfQ0hBUih0cmllX3R5cGUsIHRyaWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRlY2hhcm1hcCwgdWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2NhbiwgbGVuLCB1dmMsIGNoYXJpZCwgZm9sZGxlbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRidWYsIHVuaWZsYWdzKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBSRVhFQ19UUklFX1JFQURfQ0hBUih0cmllX3R5cGUsIHRyaWUsIHdpZGVjaGFybWFwLCB1YywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTggKikgc3RyZW5kLCB1c2NhbiwgbGVuLCB1dmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmlkLCBmb2xkbGVuLCBmb2xkYnVmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZsYWdzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19UUklFX0VYRUNVVEVfcih7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfZXhlY19wb3MoIChjaGFyICopdWMsIGMsIHN0cmVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbF9zdGFydCwgcywgdXRmOF90YXJnZXQsIDApOwotQEAgLTU1MTEsOCArNTUxMyw5IEBAIFNfcmVnbWF0Y2gocFRIWF8gcmVnbWF0Y2hfaW5mbyAqcmVnaW5mbywgY2hhciAqc3RhcnRwb3MsIHJlZ25vZGUgKnByb2cpCi0gCQkgICAgaWYgKCBiYXNlICYmIChmb2xkbGVuIHx8IHVjIDwgKFU4KikocmVnaW5mby0+c3RyZW5kKSkpIHsKLSAJCQlJMzIgb2Zmc2V0OwotIAkJCVJFWEVDX1RSSUVfUkVBRF9DSEFSKHRyaWVfdHlwZSwgdHJpZSwgd2lkZWNoYXJtYXAsIHVjLAotLQkJCQkJICAgICB1c2NhbiwgbGVuLCB1dmMsIGNoYXJpZCwgZm9sZGxlbiwKLS0JCQkJCSAgICAgZm9sZGJ1ZiwgdW5pZmxhZ3MpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVOCAqKSByZWdpbmZvLT5zdHJlbmQsIHVzY2FuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiwgdXZjLCBjaGFyaWQsIGZvbGRsZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGJ1ZiwgdW5pZmxhZ3MpOwotIAkJCWNoYXJjb3VudCsrOwotIAkJCWlmIChmb2xkbGVuPjApCi0gCQkJICAgIFNULmxvbmdmb2xkID0gVFJVRTsKLUBAIC01NjQyLDggKzU2NDUsOCBAQCBTX3JlZ21hdGNoKHBUSFhfIHJlZ21hdGNoX2luZm8gKnJlZ2luZm8sIGNoYXIgKnN0YXJ0cG9zLCByZWdub2RlICpwcm9nKQotIAkJCXdoaWxlIChmb2xkbGVuKSB7Ci0gCQkJICAgIGlmICghLS1jaGFycykKLSAJCQkJYnJlYWs7Ci0tCQkJICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKHVzY2FuLCBVVEY4X01BWExFTiwgJmxlbiwKLS0JCQkJCSAgICB1bmlmbGFncyk7Ci0rCQkJICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKHVzY2FuLCBmb2xkbGVuLCAmbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmbGFncyk7Ci0gCQkJICAgIHVzY2FuICs9IGxlbjsKLSAJCQkgICAgZm9sZGxlbiAtPSBsZW47Ci0gCQkJfQotZGlmZiAtLWdpdCBhL3QvbGliL3dhcm5pbmdzL3JlZ2V4ZWMgYi90L2xpYi93YXJuaW5ncy9yZWdleGVjCi1pbmRleCA5MDBkZDZlZTdmLi42NjM1MTQyZGVhIDEwMDY0NAotLS0tIGEvdC9saWIvd2FybmluZ3MvcmVnZXhlYwotKysrIGIvdC9saWIvd2FybmluZ3MvcmVnZXhlYwotQEAgLTI2MCwzICsyNjAsMTAgQEAgc2V0bG9jYWxlKCZQT1NJWDo6TENfQ1RZUEUsICR1dGY4X2xvY2FsZSk7Ci0gImsiID1+IC8oP1sgXE57S0VMVklOIFNJR059IF0pL2k7Ci0gIjoiID1+IC8oP1sgXDogXSkvOwotIEVYUEVDVAotKyMjIyMjIyMjCi0rIyBOQU1FIHBlcmwgIzEzMjA2MywgcmVhZCBiZXlvbmQgYnVmZmVyIGVuZAotKyMgT1BUSU9OIGZhdGFsCi0rIlx4ZmYiID1+IC8oP2lsKVx4ezEwMH18XHh7MTAwfS87Ci0rRVhQRUNUCi0rTWFsZm9ybWVkIFVURi04IGNoYXJhY3RlcjogXHhmZiAodG9vIHNob3J0OyAxIGJ5dGUgYXZhaWxhYmxlLCBuZWVkIDEzKSBpbiBwYXR0ZXJuIG1hdGNoIChtLy8pIGF0IC0gbGluZSAyLgotK01hbGZvcm1lZCBVVEYtOCBjaGFyYWN0ZXIgKGZhdGFsKSBhdCAtIGxpbmUgMi4KLS0tIAotMi4xNS4xLTQyNC1nOTQ3OGE2NjA4MTIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTgtMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk4LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOWI0MWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTgtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gZjY1ZGExY2EyZWVlNzQ2OTZkOWMxMjBlOWQ2OWFmMzdiNGZhMTkyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbnkgQ29vayA8dG9ueUBkZXZlbG9wLWhlbHAuY29tPgotRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAxNToxMTo0MiArMTEwMAotU3ViamVjdDogW1BBVENIXSAocGVybCAjMTMyMDYzKSB3ZSBzaG91bGQgbm8gbG9uZ2VyIHdhcm4gZm9yIHRoaXMgY29kZQotCi1UaGUgZmlyc3QgcGF0Y2ggZm9yIDEzMjA2MyBwcmV2ZW50ZWQgdGhlIGJ1ZmZlciByZWFkIG92ZXJmbG93IHdoZW4KLWR1bXBpbmcgdGhlIHdhcm5pbmcgYnV0IGRpZG4ndCBmaXggdGhlIHVuZGVybHlpbmcgcHJvYmxlbS4KLQotVGhlIG5leHQgY2hhbmdlIHRyZWF0cyB0aGUgc3VwcGxpZWQgYnVmZmVyIGNvcnJlY3RseSwgcHJldmVudGluZyB0aGUKLW5vbi1VVEYtOCBTViBmcm9tIGJlaW5nIHRyZWF0ZWQgYXMgVVRGLTgsIHByZXZlbnRpbmcgdGhlIHdhcm5pbmcuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDFlOGI2MTQ4OGYxOTVlMTM5NmFhODAxYzY4NTM0MGIxNTYxMDRmNGYpCi0KLUNWRTogQ1ZFLTIwMTgtNjc5OAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZi9mNjVkYTFjYTJlZWU3NDY5NmQ5YzEyMGU5ZDY5YWYzN2I0ZmExOTIwXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSB0L2xpYi93YXJuaW5ncy9yZWdleGVjIHwgMyAtLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3QvbGliL3dhcm5pbmdzL3JlZ2V4ZWMgYi90L2xpYi93YXJuaW5ncy9yZWdleGVjCi1pbmRleCA2NjM1MTQyZGVhLi5jMzcwZGRjM2M3IDEwMDY0NAotLS0tIGEvdC9saWIvd2FybmluZ3MvcmVnZXhlYwotKysrIGIvdC9saWIvd2FybmluZ3MvcmVnZXhlYwotQEAgLTI2Miw4ICsyNjIsNSBAQCBzZXRsb2NhbGUoJlBPU0lYOjpMQ19DVFlQRSwgJHV0ZjhfbG9jYWxlKTsKLSBFWFBFQ1QKLSAjIyMjIyMjIwotICMgTkFNRSBwZXJsICMxMzIwNjMsIHJlYWQgYmV5b25kIGJ1ZmZlciBlbmQKLS0jIE9QVElPTiBmYXRhbAotICJceGZmIiA9fiAvKD9pbClceHsxMDB9fFx4ezEwMH0vOwotIEVYUEVDVAotLU1hbGZvcm1lZCBVVEYtOCBjaGFyYWN0ZXI6IFx4ZmYgKHRvbyBzaG9ydDsgMSBieXRlIGF2YWlsYWJsZSwgbmVlZCAxMykgaW4gcGF0dGVybiBtYXRjaCAobS8vKSBhdCAtIGxpbmUgMi4KLS1NYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVyIChmYXRhbCkgYXQgLSBsaW5lIDIuCi0tLSAKLTIuMTUuMS00MjQtZzk0NzhhNjYwODEyCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02OTEzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY5MTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1N2FmN2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY5MTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotRnJvbSBmMTdmZWQ1MDA2MTc3ZGNlOGFjNDgyMjljNDI0YTJkYTBkNmJhNDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9ueSBDb29rIDx0b255QGRldmVsb3AtaGVscC5jb20+Ci1EYXRlOiBUdWUsIDggQXVnIDIwMTcgMDk6MzI6NTggKzEwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKHBlcmwgIzEzMTg0NCkgZml4IHZhcmlvdXMgc3BhY2UgY2FsY3VsYXRpb24gaXNzdWVzIGluCi0gcHBfcGFjay5jCi0KLS0gZm9yIHRoZSBvcmlnaW5hbGx5IHJlcG9ydGVkIGNhc2UsIGlmIHRoZSBzdGFydC9jdXIgcG9pbnRlciBpcyBpbiB0aGUKLSAgdG9wIDc1JSBvZiB0aGUgYWRkcmVzcyBzcGFjZSB0aGUgYWRkIChjdXIpICsgZ2xlbiBhZGRpdGlvbiB3b3VsZAotICBvdmVyZmxvdywgcmVzdWx0aW5nIGluIHRoZSBjb25kaXRpb24gZmFpbGluZyBpbmNvcnJlY3RseS4KLQotLSB0aGUgYWRkaXRpb24gb2YgdGhlIGV4aXN0aW5nIHNwYWNlIHVzZWQgdG8gdGhlIHNwYWNlIG5lZWRlZCBjb3VsZAotICBvdmVyZmxvdywgcmVzdWx0aW5nIGluIHRvbyBzbWFsbCBhbiBhbGxvY2F0aW9uIGFuZCBhIGJ1ZmZlciBvdmVyZmxvdy4KLQotLSB0aGUgc2NhbGluZyBmb3IgVVRGOCBjb3VsZCBvdmVyZmxvdy4KLQotLSB0aGUgbXVsdGlwbHkgdG8gY2FsY3VsYXRlIHRoZSBzcGFjZSBuZWVkZWQgZm9yIG1hbnkgaXRlbXMgY291bGQKLSAgb3ZlcmZsb3cuCi0KLUZvciB0aGUgZmlyc3QgY2FzZSwgZG8gYSBzcGFjZSBjYWxjdWxhdGlvbiB3aXRob3V0IG1ha2luZyBuZXcgcG9pbnRlcnMuCi0KLUZvciB0aGUgb3RoZXIgY2FzZXMsIGRldGVjdCB0aGUgb3ZlcmZsb3cgYW5kIGNyb2FrIGlmIHRoZXJlJ3MgYW4KLW92ZXJmbG93LgotCi1PcmlnaW5hbGx5IHRoaXMgdXNlZCBTaXplX3RfTUFYIGFzIHRoZSBtYXhpbXVtIHNpemUgb2YgYSBtZW1vcnkKLWFsbG9jYXRpb24sIGJ1dCBmb3IgLURERUJVR0dJTkcgYnVpbGRzIHJlYWxsb2MoKSB0aHJvd3MgYSBwYW5pYyBmb3IKLWFsbG9jYXRpb25zIG92ZXIgaGFsZiB0aGUgYWRkcmVzcyBzcGFjZSBpbiBzaXplLCBjaGFuZ2luZyB0aGUgZXJyb3IKLXJlcG9ydGVkIGZvciB0aGUgYWxsb2NhdGlvbi4KLQotRm9yIG5vbi1ERUJVR0dJTkcgYnVpbGRzIHRoZSBTaXplX3RfTUFYIGxpbWl0IGhhcyB0aGUgc21hbGwgY2hhbmNlCi1vZiBmaW5kaW5nIGEgc3lzdGVtIHRoYXQgaGFzIDNHQiBvZiBjb250aWd1b3VzIHNwYWNlIGF2YWlsYWJsZSwgYW5kCi1hbGxvY2F0aW5nIHRoYXQgc3BhY2UsIHdoaWNoIGNvdWxkIGJlIGEgZGVuaWFsIG9mIHNlcnZjZSBpbiBzb21lIGNhc2VzLgotCi1VbmZvcnR1bmF0ZWx5IGNoYW5naW5nIHRoZSBsaW1pdCB0byBoYWxmIHRoZSBhZGRyZXNzIHNwYWNlIG1lYW5zIHRoYXQKLXRoZSBleGFjdCBjYXNlIHdpdGggdGhlIG9yaWdpbmFsIGlzc3VlIGNhbiBubyBsb25nZXIgb2NjdXIsIHNvIHRoZQotdGVzdCBpcyBubyBsb25nZXIgdGVzdGluZyBhZ2FpbnN0IHRoZSBhZGRyZXNzICsgbGVuZ3RoIGlzc3VlIHRoYXQKLWNhdXNlZCB0aGUgb3JpZ2luYWwgcHJvYmxlbSwgc2luY2UgdGhlIGFsbG9jYXRpb24gaXMgZmFpbGluZyBlYXJsaWVyLgotCi1PbmUgb3B0aW9uIHdvdWxkIGJlIHRvIGNoYW5nZSB0aGUgdGVzdCBzbyB0aGUgc2l6ZSByZXF1ZXN0IGJ5IHBhY2sgaXMKLWp1c3QgdW5kZXIgMkdCLCBidXQgdGhpcyBoYXMgYSBoaWdoZXIgKGJ1dCBzdGlsbCBsb3cpIHByb2JhYmlsaXR5IHRoYXQKLXRoZSBzeXN0ZW0gaGFzIHRoZSBhZGRyZXNzIHNwYWNlIGF2YWlsYWJsZSwgYW5kIHdpbGwgYWN0dWFsbHkgdHJ5IHRvCi1hbGxvY2F0ZSB0aGUgbWVtb3J5LCBzbyBsZXQncyBub3QgZG8gdGhhdC4KLQotTm90ZTogY2hhbmdlZCAKLXBsYW4gdGVzdHMgPT4gMTQ3MTM7Ci10byAKLXBsYW4gdGVzdHMgPT4gMTQ3MTI7Ci1pbiBhL3Qvb3AvcGFjay50Ci10byBhcHBseSB0aGlzIHBhdGNoIG9uIHBlcmwgNS4yNC4xLgotCi1DVkU6IENWRS0yMDE4LTY5MTMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdGRpZmYvZjE3ZmVkNTAwNjE3N2RjZThhYzQ4MjI5YzQyNGEyZGEwZDZiYTQ5Ml0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gcHBfcGFjay5jICAgfCAyNSArKysrKysrKysrKysrKysrKysrKystLS0tCi0gdC9vcC9wYWNrLnQgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcF9wYWNrLmMgYi9wcF9wYWNrLmMKLWluZGV4IDg5MzdkNmQ3MTUuLjVlOWNjNjQzMDEgMTAwNjQ0Ci0tLS0gYS9wcF9wYWNrLmMKLSsrKyBiL3BwX3BhY2suYwotQEAgLTM1NywxMSArMzU3LDI4IEBAIFNUTVRfU1RBUlQgewkJCQkJCQlcCi0gICAgIH0JCQkJCQkJCVwKLSB9IFNUTVRfRU5ECi0gCi0rI2RlZmluZSBTQUZFX1VURjhfRVhQQU5EKHZhcikJXAotK1NUTVRfU1RBUlQgewkJCQlcCi0rICAgIGlmICgodmFyKSA+IFNTaXplX3RfTUFYIC8gVVRGOF9FWFBBTkQpIFwKLSsgICAgICAgIFBlcmxfY3JvYWsoYVRIWF8gIiVzIiwgIk91dCBvZiBtZW1vcnkgZHVyaW5nIHBhY2soKSIpOyBcCi0rICAgICh2YXIpID0gKHZhcikgKiBVVEY4X0VYUEFORDsgXAotK30gU1RNVF9FTkQKLSsKLSsjZGVmaW5lIEdST1dJTkcyKHV0ZjgsIGNhdCwgc3RhcnQsIGN1ciwgaXRlbV9zaXplLCBpdGVtX2NvdW50KQlcCi0rU1RNVF9TVEFSVCB7CQkJCQkJCVwKLSsgICAgaWYgKFNTaXplX3RfTUFYIC8gKGl0ZW1fc2l6ZSkgPCAoaXRlbV9jb3VudCkpCQlcCi0rICAgICAgICBQZXJsX2Nyb2FrKGFUSFhfICIlcyIsICJPdXQgb2YgbWVtb3J5IGR1cmluZyBwYWNrKCkiKTsJXAotKyAgICBHUk9XSU5HKCh1dGY4KSwgKGNhdCksIChzdGFydCksIChjdXIpLCAoaXRlbV9zaXplKSAqIChpdGVtX2NvdW50KSk7IFwKLSt9IFNUTVRfRU5ECi0rCi0gI2RlZmluZSBHUk9XSU5HKHV0ZjgsIGNhdCwgc3RhcnQsIGN1ciwgaW5fbGVuKQlcCi0gU1RNVF9TVEFSVCB7CQkJCQlcCi0gICAgIFNUUkxFTiBnbGVuID0gKGluX2xlbik7CQkJXAotLSAgICBpZiAodXRmOCkgZ2xlbiAqPSBVVEY4X0VYUEFORDsJCVwKLS0gICAgaWYgKChjdXIpICsgZ2xlbiA+PSAoc3RhcnQpICsgU3ZMRU4oY2F0KSkgewlcCi0rICAgIFNUUkxFTiBjYXRjdXIgPSAoU1RSTEVOKSgoY3VyKSAtIChzdGFydCkpOwlcCi0rICAgIGlmICh1dGY4KSBTQUZFX1VURjhfRVhQQU5EKGdsZW4pOwkJXAotKyAgICBpZiAoU1NpemVfdF9NQVggLSBnbGVuIDwgY2F0Y3VyKQkJXAotKyAgICAgICAgUGVybF9jcm9hayhhVEhYXyAiJXMiLCAiT3V0IG9mIG1lbW9yeSBkdXJpbmcgcGFjaygpIik7IFwKLSsgICAgaWYgKGNhdGN1ciArIGdsZW4gPj0gU3ZMRU4oY2F0KSkgewlcCi0gCShzdGFydCkgPSBzdl9leHBfZ3JvdyhjYXQsIGdsZW4pOwlcCi0gCShjdXIpID0gKHN0YXJ0KSArIFN2Q1VSKGNhdCk7CQlcCi0gICAgIH0JCQkJCQlcCi1AQCAtMzcyLDcgKzM4OSw3IEBAIFNUTVRfU1RBUlQgewkJCQkJXAotIFNUTVRfU1RBUlQgewkJCQkJXAotICAgICBjb25zdCBTVFJMRU4gZ2xlbiA9IChpbl9sZW4pOwkJXAotICAgICBTVFJMRU4gZ2wgPSBnbGVuOwkJCQlcCi0tICAgIGlmICh1dGY4KSBnbCAqPSBVVEY4X0VYUEFORDsJCVwKLSsgICAgaWYgKHV0ZjgpIFNBRkVfVVRGOF9FWFBBTkQoZ2wpOwkJXAotICAgICBpZiAoKGN1cikgKyBnbCA+PSAoc3RhcnQpICsgU3ZMRU4oY2F0KSkgewlcCi0gICAgICAgICAqY3VyID0gJ1wwJzsJCQkJXAotICAgICAgICAgU3ZDVVJfc2V0KChjYXQpLCAoY3VyKSAtIChzdGFydCkpOwlcCi1AQCAtMjEyNiw3ICsyMTQzLDcgQEAgU19wYWNrX3JlYyhwVEhYXyBTViAqY2F0LCB0ZW1wc3ltX3QqIHN5bQotIAkgICAgaWYgKHByb3BzICYmICEocHJvcHMgJiBQQUNLX1NJWkVfVU5QUkVESUNUQUJMRSkpIHsKLSAJCS8qIFdlIGNhbiBwcm9jZXNzIHRoaXMgbGV0dGVyLiAqLwotIAkJU1RSTEVOIHNpemUgPSBwcm9wcyAmIFBBQ0tfU0laRV9NQVNLOwotLQkJR1JPV0lORyh1dGY4LCBjYXQsIHN0YXJ0LCBjdXIsIChTVFJMRU4pIGxlbiAqIHNpemUpOwotKwkJR1JPV0lORzIodXRmOCwgY2F0LCBzdGFydCwgY3VyLCBzaXplLCAoU1RSTEVOKWxlbik7Ci0gCSAgICB9Ci0gICAgICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvdC9vcC9wYWNrLnQgYi90L29wL3BhY2sudAotaW5kZXggNjY0YWFhZjFiMC4uY2YwZTI4NjUwOSAxMDA2NDQKLS0tLSBhL3Qvb3AvcGFjay50Ci0rKysgYi90L29wL3BhY2sudAotQEAgLTEyLDcgKzEyLDcgQEAgbXkgJG5vX2VuZGlhbm5lc3MgPSAkXSA+IDUuMDA5ID8gJycgOgotIG15ICRub19zaWduZWRuZXNzID0gJF0gPiA1LjAwOSA/ICcnIDoKLSAgICJTaWduZWQvdW5zaWduZWQgcGFjayBtb2RpZmllcnMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBlcmwiOwotIAotLXBsYW4gdGVzdHMgPT4gMTQ3MTI7Ci0rcGxhbiB0ZXN0cyA9PiAxNDcxNzsKLSAKLSB1c2Ugc3RyaWN0OwotIHVzZSB3YXJuaW5ncyBxdyhGQVRBTCBhbGwpOwotQEAgLTIwNDQsMyArMjA0NCwyNSBAQCBvaygxLCAiYXJndW1lbnQgdW5kZXJmbG93IGRpZCBub3QgY3Jhc2giCi0gICAgIGlzKHBhY2soIkg0MCIsICR1cF9udWwpLCAkdHdlbnR5X251bHMsCi0gICAgICAgICJjaGVjayBwYWNrIEggemVybyBmaWxscyAodXRmOCBzb3VyY2UpIik7Ci0gfQotKwotK1NLSVA6Ci0rewotKyAgIyBbcGVybCAjMTMxODQ0XSBwb2ludGVyIGFkZGl0aW9uIG92ZXJmbG93Ci0rICAgICRDb25maWd7cHRyc2l6ZX0gPT0gNAotKyAgICAgIG9yIHNraXAgIltwZXJsICMxMzE4NDRdIG5lZWQgMzItYml0IGJ1aWxkIGZvciB0aGlzIHRlc3QiLCA0OwotKyAgICAjIHByZXZlbnQgQVNBTiBqdXN0IGNyYXNoaW5nIG9uIHRoZSBhbGxvY2F0aW9uIGZhaWx1cmUKLSsgICAgbG9jYWwgJEVOVntBU0FOX09QVElPTlN9ID0gJEVOVntBU0FOX09QVElPTlN9OwotKyAgICAkRU5We0FTQU5fT1BUSU9OU30gLj0gIixhbGxvY2F0b3JfbWF5X3JldHVybl9udWxsPTEiOwotKyAgICBmcmVzaF9wZXJsX2xpa2UoJ3BhY2sgImY5OTk5OTk5OTkiJywgcXIvT3V0IG9mIG1lbW9yeSBkdXJpbmcgcGFjay8sIHsgc3RkZXJyID0+IDEgfSwKLSsJCSAgICAicG9pbnRlciBhZGRpdGlvbiBvdmVyZmxvdyIpOwotKwotKyAgICAjIGludGVnZXIgKFNUUkxFTikgb3ZlcmZsb3cgZnJvbSBhZGRpdGlvbiBvZiBnbGVuIHRvIGN1cnJlbnQgbGVuZ3RoCi0rICAgIGZyZXNoX3BlcmxfbGlrZSgncGFjayAiYzEwZjEwNzM3NDE4MjMiJywgcXIvT3V0IG9mIG1lbW9yeSBkdXJpbmcgcGFjay8sIHsgc3RkZXJyID0+IDEgfSwKLSsJCSAgICAiaW50ZWdlciBvdmVyZmxvdyBjYWxjdWxhdGluZyBhbGxvY2F0aW9uIChhZGRpdGlvbikiKTsKLSsKLSsgICAgZnJlc2hfcGVybF9saWtlKCdwYWNrICJXMTBmNTM2ODcwOTEzIiwgMjU2JywgcXIvT3V0IG9mIG1lbW9yeSBkdXJpbmcgcGFjay8sIHsgc3RkZXJyID0+IDEgfSwKLSsJCSAgICAiaW50ZWdlciBvdmVyZmxvdyBjYWxjdWxhdGluZyBhbGxvY2F0aW9uICh1dGY4KSIpOwotKwotKyAgICBmcmVzaF9wZXJsX2xpa2UoJ3BhY2sgImMxMGYxMDczNzQxODI0IicsIHFyL091dCBvZiBtZW1vcnkgZHVyaW5nIHBhY2svLCB7IHN0ZGVyciA9PiAxIH0sCi0rCQkgICAgImludGVnZXIgb3ZlcmZsb3cgY2FsY3VsYXRpbmcgYWxsb2NhdGlvbiAobXVsdGlwbHkpIik7Ci0rfQotLS0gCi0yLjE1LjEtNDI0LWc5NDc4YTY2MDgxMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKaW5kZXggYzFkYjMzNS4uZTRjMzQyNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL01ha2VmaWxlLlNILnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9NYWtlZmlsZS5TSC5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAgTWFrZWZpbGUuU0ggfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQogCi1JbmRleDogcGVybC01LjI0LjEvTWFrZWZpbGUuU0gKK0luZGV4OiBwZXJsLTUuMjQuNC9NYWtlZmlsZS5TSAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS4yNC4xLm9yaWcvTWFrZWZpbGUuU0gKLSsrKyBwZXJsLTUuMjQuMS9NYWtlZmlsZS5TSAorLS0tIHBlcmwtNS4yNC40Lm9yaWcvTWFrZWZpbGUuU0gKKysrKyBwZXJsLTUuMjQuNC9NYWtlZmlsZS5TSAogQEAgLTQ4LDEwICs0OCwxMCBAQCBjYXNlICIkdXNlc2hycGxpYiIgaW4KICB0cnVlKQogIAkjIFByZWZpeCBhbGwgcnVucyBvZiAnbWluaXBlcmwnIGFuZCAncGVybCcgd2l0aApAQCAtMjcxLDkgKzI3MSw5IEBACiAgCSQoTUlOSVBFUkwpIGF1dG9kb2MucGwKICAKICBwb2QvcGVybG1vZGxpYi5wb2Q6ICQoTUlOSVBFUkxfRVhFKSBwb2QvcGVybG1vZGxpYi5QTCBNQU5JRkVTVAotQEAgLTEwODksNyArMTA5OSw3IEBAIHBvZC9wZXJsNTI0MWRlbHRhLnBvZDogcG9kL3BlcmxkZWx0YS5wb2QKLSAJJChSTVMpIHBvZC9wZXJsNTI0MWRlbHRhLnBvZAotIAkkKExOUykgcGVybGRlbHRhLnBvZCBwb2QvcGVybDUyNDFkZWx0YS5wb2QKK0BAIC0xMDg5LDcgKzEwOTksNyBAQCBwb2QvcGVybDUyNDRkZWx0YS5wb2Q6IHBvZC9wZXJsZGVsdGEucG9kCisgCSQoUk1TKSBwb2QvcGVybDUyNDRkZWx0YS5wb2QKKyAJJChMTlMpIHBlcmxkZWx0YS5wb2QgcG9kL3Blcmw1MjQ0ZGVsdGEucG9kCiAgCiAtZXh0cmEucG9kczogJChNSU5JUEVSTF9FWEUpCiArZXh0cmEucG9kczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoCmluZGV4IGFjMDQ4NGMuLmIxYjU4MzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2NvbmZpZy5zaApAQCAtMTQsNyArMTQsNyBAQAogCiA6IENvbmZpZ3VyZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgogY29uZmlnX2FyZzA9J0NvbmZpZ3VyZScKLWNvbmZpZ19hcmdzPSctZGVzIC1Eb3B0aW1pemU9LU8yIC1EbXlob3N0bmFtZT1sb2NhbGhvc3QgLURwZXJsYWRtaW49cm9vdEBsb2NhbGhvc3QgLURjYz1nY2MgLURjZl9ieT1PcGVuIEVtYmVkZGVkIC1EaW5zdGFsbHByZWZpeD1ARVhFQ1BSRUZJWEAgLURwcmVmaXg9QEVYRUNQUkVGSVhAIC1EdmVuZG9ycHJlZml4PUBFWEVDUFJFRklYQCAtRHNpdGVwcmVmaXg9QEVYRUNQUkVGSVhAIC1Eb3RoZXJsaWJkaXJzPUBMSUJESVJAL3BlcmwvNS4yNC4xIC1EdXNlc2hycGxpYiAtRHVzZXRocmVhZHMgLUR1c2VpdGhyZWFkcyAtRHVzZWxhcmdlZmlsZXMgLVVkX2Rvc3VpZCAtRGRfc2VtY3RsX3NlbXVuIC1VaV9kYiAtVWlfbmRibSAtVWlfZ2RibSAtRGlfc2hhZG93IC1EaV9zeXNsb2cgLURtYW4zZXh0PTNwbSAtRHVzZXBlcmxpbyAtRGluc3RhbGx1c3JiaW5wZXJsIC1VYmluY29tcGF0NTAwNSAtVXZlcnNpb25vbmx5IC1EcGFnZXI9QFVTUkJJTkAvbGVzcyAtaXNyJworY29uZmlnX2FyZ3M9Jy1kZXMgLURvcHRpbWl6ZT0tTzIgLURteWhvc3RuYW1lPWxvY2FsaG9zdCAtRHBlcmxhZG1pbj1yb290QGxvY2FsaG9zdCAtRGNjPWdjYyAtRGNmX2J5PU9wZW4gRW1iZWRkZWQgLURpbnN0YWxscHJlZml4PUBFWEVDUFJFRklYQCAtRHByZWZpeD1ARVhFQ1BSRUZJWEAgLUR2ZW5kb3JwcmVmaXg9QEVYRUNQUkVGSVhAIC1Ec2l0ZXByZWZpeD1ARVhFQ1BSRUZJWEAgLURvdGhlcmxpYmRpcnM9QExJQkRJUkAvcGVybC81LjI0LjQgLUR1c2VzaHJwbGliIC1EdXNldGhyZWFkcyAtRHVzZWl0aHJlYWRzIC1EdXNlbGFyZ2VmaWxlcyAtVWRfZG9zdWlkIC1EZF9zZW1jdGxfc2VtdW4gLVVpX2RiIC1VaV9uZGJtIC1VaV9nZGJtIC1EaV9zaGFkb3cgLURpX3N5c2xvZyAtRG1hbjNleHQ9M3BtIC1EdXNlcGVybGlvIC1EaW5zdGFsbHVzcmJpbnBlcmwgLVViaW5jb21wYXQ1MDA1IC1VdmVyc2lvbm9ubHkgLURwYWdlcj1AVVNSQklOQC9sZXNzIC1pc3InCiBjb25maWdfYXJnYz0yOAogY29uZmlnX2FyZzE9Jy1kZXMnCiBjb25maWdfYXJnMj0nLURvcHRpbWl6ZT0tTzInCkBAIC0yNiw3ICsyNiw3IEBACiBjb25maWdfYXJnOD0nLURwcmVmaXg9QEVYRUNQUkVGSVhAJwogY29uZmlnX2FyZzk9Jy1EdmVuZG9ycHJlZml4PUBFWEVDUFJFRklYQCcKIGNvbmZpZ19hcmcxMD0nLURzaXRlcHJlZml4PUBFWEVDUFJFRklYQCcKLWNvbmZpZ19hcmcxMT0nLURvdGhlcmxpYmRpcnM9QExJQkRJUkAvcGVybC81LjI0LjEnCitjb25maWdfYXJnMTE9Jy1Eb3RoZXJsaWJkaXJzPUBMSUJESVJAL3BlcmwvNS4yNC40JwogY29uZmlnX2FyZzEyPSctRHVzZXNocnBsaWInCiBjb25maWdfYXJnMTM9Jy1EdXNldGhyZWFkcycKIGNvbmZpZ19hcmcxND0nLUR1c2VpdGhyZWFkcycKQEAgLTY0LDEzICs2NCwxMyBAQAogYW5zaTJrbnI9JycKIGFwaG9zdG5hbWU9JycKIGFwaV9yZXZpc2lvbj0nNScKLWFwaV9zdWJ2ZXJzaW9uPScxJworYXBpX3N1YnZlcnNpb249JzQnCiBhcGlfdmVyc2lvbj0nMjQnCi1hcGlfdmVyc2lvbnN0cmluZz0nNS4yNC4xJworYXBpX3ZlcnNpb25zdHJpbmc9JzUuMjQuNCcKIGFyPSdhcicKLWFyY2hsaWI9J0BMSUJESVJAL3BlcmwvNS4yNC4xL0BBUkNIQC10aHJlYWQtbXVsdGknCi1hcmNobGliZXhwPSdAU1RBR0lOR0RJUkBATElCRElSQC9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJwotYXJjaGxpYl9leHA9J0BMSUJESVJAL3BlcmwvNS4yNC4xL0BBUkNIQC10aHJlYWQtbXVsdGknCithcmNobGliPSdATElCRElSQC9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJworYXJjaGxpYmV4cD0nQFNUQUdJTkdESVJAQExJQkRJUkAvcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aScKK2FyY2hsaWJfZXhwPSdATElCRElSQC9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwogYXJjaG5hbWU2ND0nJwogYXJjaG5hbWU9J0BBUkNIQC10aHJlYWQtbXVsdGknCiBhcmNob2Jqcz0nJwpAQCAtODgsNyArODgsNyBAQAogY2F0PSdjYXQnCiBjYz0nZ2NjJwogY2NjZGxmbGFncz0nLWZQSUMnCi1jY2RsZmxhZ3M9Jy1XbCwtRSAtV2wsLXJwYXRoLEBMSUJESVJAL3BlcmwvNS4yNC4xL0BBUkNIQC10aHJlYWQtbXVsdGkvQ09SRScKK2NjZGxmbGFncz0nLVdsLC1FIC1XbCwtcnBhdGgsQExJQkRJUkAvcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aS9DT1JFJwogY2NmbGFncz0nLURfUkVFTlRSQU5UIC1EX0dOVV9TT1VSQ0UgLWZ3cmFwdiAtZm5vLXN0cmljdC1hbGlhc2luZyAtcGlwZSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfRk9SVElGWV9TT1VSQ0U9MicKIGNjZmxhZ3NfdXNlbGFyZ2VmaWxlcz0nLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0JwogY2NuYW1lPSdnY2MnCkBAIC04MzgsNyArODM4LDcgQEAKIGluY3BhdGg9JycKIGluZXdzPScnCiBpbml0aWFsaW5zdGFsbGxvY2F0aW9uPSdAVVNSQklOQCcKLWluc3RhbGxhcmNobGliPSdATElCRElSQC9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJworaW5zdGFsbGFyY2hsaWI9J0BMSUJESVJAL3BlcmwvNS4yNC40L0BBUkNIQC10aHJlYWQtbXVsdGknCiBpbnN0YWxsYmluPSdAVVNSQklOQCcKIGluc3RhbGxodG1sMWRpcj0nJwogaW5zdGFsbGh0bWwzZGlyPScnCkBAIC04NDYsMjMgKzg0NiwyMyBAQAogaW5zdGFsbG1hbjNkaXI9JycKIGluc3RhbGxwcmVmaXg9J0BFWEVDUFJFRklYQCcKIGluc3RhbGxwcmVmaXhleHA9J0BFWEVDUFJFRklYQCcKLWluc3RhbGxwcml2bGliPSdATElCRElSQC9wZXJsLzUuMjQuMScKK2luc3RhbGxwcml2bGliPSdATElCRElSQC9wZXJsLzUuMjQuNCcKIGluc3RhbGxzY3JpcHQ9J0BVU1JCSU5AJwotaW5zdGFsbHNpdGVhcmNoPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKK2luc3RhbGxzaXRlYXJjaD0nQExJQkRJUkAvcGVybC9zaXRlX3BlcmwvNS4yNC40L0BBUkNIQC10aHJlYWQtbXVsdGknCiBpbnN0YWxsc2l0ZWJpbj0nQFVTUkJJTkAnCiBpbnN0YWxsc2l0ZWh0bWwxZGlyPScnCiBpbnN0YWxsc2l0ZWh0bWwzZGlyPScnCi1pbnN0YWxsc2l0ZWxpYj0nQExJQkRJUkAvcGVybC9zaXRlX3BlcmwvNS4yNC4xJworaW5zdGFsbHNpdGVsaWI9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuNCcKIGluc3RhbGxzaXRlbWFuMWRpcj0nJwogaW5zdGFsbHNpdGVtYW4zZGlyPScnCiBpbnN0YWxsc2l0ZXNjcmlwdD0nQFVTUkJJTkAnCiBpbnN0YWxsc3R5bGU9J2xpYi9wZXJsJwogaW5zdGFsbHVzcmJpbnBlcmw9J2RlZmluZScKLWluc3RhbGx2ZW5kb3JhcmNoPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJworaW5zdGFsbHZlbmRvcmFyY2g9J0BMSUJESVJAL3BlcmwvdmVuZG9yX3BlcmwvNS4yNC40L0BBUkNIQC10aHJlYWQtbXVsdGknCiBpbnN0YWxsdmVuZG9yYmluPSdAVVNSQklOQCcKIGluc3RhbGx2ZW5kb3JodG1sMWRpcj0nJwogaW5zdGFsbHZlbmRvcmh0bWwzZGlyPScnCi1pbnN0YWxsdmVuZG9ybGliPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuMScKK2luc3RhbGx2ZW5kb3JsaWI9J0BMSUJESVJAL3BlcmwvdmVuZG9yX3BlcmwvNS4yNC40JwogaW5zdGFsbHZlbmRvcm1hbjFkaXI9JycKIGluc3RhbGx2ZW5kb3JtYW4zZGlyPScnCiBpbnN0YWxsdmVuZG9yc2NyaXB0PSdAVVNSQklOQCcKQEAgLTk2NSw3ICs5NjUsNyBAQAogb3JkZXJsaWI9J2ZhbHNlJwogb3NuYW1lPSdsaW51eCcKIG9zdmVycz0nMy4xOS41LXlvY3RvLXN0YW5kYXJkJwotb3RoZXJsaWJkaXJzPSdATElCRElSQC9wZXJsLzUuMjQuMScKK290aGVybGliZGlycz0nQExJQkRJUkAvcGVybC81LjI0LjQnCiBwYWNrYWdlPSdwZXJsJwogcGFnZXI9Jy91c3IvYmluL2xlc3MgLWlzcicKIHBhc3NjYXQ9J2NhdCAvZXRjL3Bhc3N3ZCcKQEAgLTk4Niw4ICs5ODYsOCBAQAogcHI9JycKIHByZWZpeD0nQEVYRUNQUkVGSVhAJwogcHJlZml4ZXhwPSdARVhFQ1BSRUZJWEAnCi1wcml2bGliPSdATElCRElSQC9wZXJsLzUuMjQuMScKLXByaXZsaWJleHA9J0BMSUJESVJAL3BlcmwvNS4yNC4xJworcHJpdmxpYj0nQExJQkRJUkAvcGVybC81LjI0LjQnCitwcml2bGliZXhwPSdATElCRElSQC9wZXJsLzUuMjQuNCcKIHByb2NzZWxmZXhlPSciL3Byb2Mvc2VsZi9leGUiJwogcHJvdG90eXBlPSdkZWZpbmUnCiBwdHJzaXplPSc4JwpAQCAtMTA1MywxNyArMTA1MywxNyBAQAogc2lnX251bV9pbml0PScwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNiwgMTcsIDI5LCAzMSwgMCcKIHNpZ19zaXplPSc2OScKIHNpZ25hbF90PSd2b2lkJwotc2l0ZWFyY2g9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJwotc2l0ZWFyY2hleHA9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJworc2l0ZWFyY2g9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJworc2l0ZWFyY2hleHA9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwogc2l0ZWJpbj0nQFVTUkJJTkAnCiBzaXRlYmluZXhwPSdAVVNSQklOQCcKIHNpdGVodG1sMWRpcj0nJwogc2l0ZWh0bWwxZGlyZXhwPScnCiBzaXRlaHRtbDNkaXI9JycKIHNpdGVodG1sM2RpcmV4cD0nJwotc2l0ZWxpYj0nQExJQkRJUkAvcGVybC9zaXRlX3BlcmwvNS4yNC4xJworc2l0ZWxpYj0nQExJQkRJUkAvcGVybC9zaXRlX3BlcmwvNS4yNC40Jwogc2l0ZWxpYl9zdGVtPSdATElCRElSQC9wZXJsL3NpdGVfcGVybCcKLXNpdGVsaWJleHA9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuMScKK3NpdGVsaWJleHA9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuNCcKIHNpdGVtYW4xZGlyPScnCiBzaXRlbWFuMWRpcmV4cD0nJwogc2l0ZW1hbjNkaXI9JycKQEAgLTExMDIsNyArMTEwMiw3IEBACiBzdHJlcnJvcl9yX3Byb3RvPSdSRUVOVFJBTlRfUFJPVE9fQl9JQlcnCiBzdHJpbmdzPSdASU5DTFVERURJUkAvc3RyaW5nLmgnCiBzdWJtaXQ9JycKLXN1YnZlcnNpb249JzEnCitzdWJ2ZXJzaW9uPSc0Jwogc3lzbWFuPSdARVhFQ1BSRUZJWEAvc2hhcmUvbWFuL21hbjEnCiBzeXNyb290PScnCiB0YWlsPScnCkBAIC0xMTgyLDE3ICsxMTgyLDE3IEBACiB1dnVmb3JtYXQ9JyJsdSInCiB1dnhmb3JtYXQ9JyJseCInCiB2YXByb3RvPSdkZWZpbmUnCi12ZW5kb3JhcmNoPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJwotdmVuZG9yYXJjaGV4cD0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKK3ZlbmRvcmFyY2g9J0BMSUJESVJAL3BlcmwvdmVuZG9yX3BlcmwvNS4yNC40L0BBUkNIQC10aHJlYWQtbXVsdGknCit2ZW5kb3JhcmNoZXhwPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwogdmVuZG9yYmluPSdAVVNSQklOQCcKIHZlbmRvcmJpbmV4cD0nQFVTUkJJTkAnCiB2ZW5kb3JodG1sMWRpcj0nICcKIHZlbmRvcmh0bWwxZGlyZXhwPScnCiB2ZW5kb3JodG1sM2Rpcj0nICcKIHZlbmRvcmh0bWwzZGlyZXhwPScnCi12ZW5kb3JsaWI9J0BMSUJESVJAL3BlcmwvdmVuZG9yX3BlcmwvNS4yNC4xJwordmVuZG9ybGliPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuNCcKIHZlbmRvcmxpYl9zdGVtPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsJwotdmVuZG9ybGliZXhwPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuMScKK3ZlbmRvcmxpYmV4cD0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjQnCiB2ZW5kb3JtYW4xZGlyPScgJwogdmVuZG9ybWFuMWRpcmV4cD0nJwogdmVuZG9ybWFuM2Rpcj0nICcKQEAgLTEyMDEsOCArMTIwMSw4IEBACiB2ZW5kb3JwcmVmaXhleHA9J0BFWEVDUFJFRklYQCcKIHZlbmRvcnNjcmlwdD0nQFVTUkJJTkAnCiB2ZW5kb3JzY3JpcHRleHA9J0BVU1JCSU5AJwotdmVyc2lvbj0nNS4yNC4xJwotdmVyc2lvbl9wYXRjaGxldmVsX3N0cmluZz0ndmVyc2lvbiAyNCBzdWJ2ZXJzaW9uIDEnCit2ZXJzaW9uPSc1LjI0LjQnCit2ZXJzaW9uX3BhdGNobGV2ZWxfc3RyaW5nPSd2ZXJzaW9uIDI0IHN1YnZlcnNpb24gNCcKIHZlcnNpb25vbmx5PSd1bmRlZicKIHZpPScnCiB4bGlicHRoPSdATElCRElSQC8zODYgQEJBU0VMSUJESVJAMzg2JwpAQCAtMTIxMiwxMCArMTIxMiwxMCBAQAogemlwPSd6aXAnCiBQRVJMX1JFVklTSU9OPTUKIFBFUkxfVkVSU0lPTj0yNAotUEVSTF9TVUJWRVJTSU9OPTEKK1BFUkxfU1VCVkVSU0lPTj00CiBQRVJMX0FQSV9SRVZJU0lPTj01CiBQRVJMX0FQSV9WRVJTSU9OPTI0Ci1QRVJMX0FQSV9TVUJWRVJTSU9OPTEKK1BFUkxfQVBJX1NVQlZFUlNJT049NAogUEVSTF9QQVRDSExFVkVMPScnCiBQRVJMX0NPTkZJR19TSD10cnVlCiA6IFZhcmlhYmxlcyBwcm9wYWdhdGVkIGZyb20gcHJldmlvdXMgY29uZmlnLnNoIGZpbGUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUzM2JiMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzU4ICswLDAgQEAKLXJlcXVpcmUgcGVybC5pbmMKLQotIyBXZSBuZWVkIGdudWdyZXAgKGZvciAtSSkKLURFUEVORFMgPSAiZGIgZ3JlcC1uYXRpdmUgZ2RibSB6bGliIHZpcnR1YWwvY3J5cHQiCi0KLSMgUGljayB1cCBwYXRjaGVzIGZyb20gZGViaWFuCi0jIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL3AvcGVybC9wZXJsXzUuMjIuMC0xLmRlYmlhbi50YXIueHoKLVNSQ19VUkkgKz0gIiBcCi0JZmlsZTovL2RlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vZGJfZmlsZV92ZXIuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9kb2NfaW5mby5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2VuYzJ4c19pbmMuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9lcnJub192ZXIuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9saWJwZXJsX2VtYmVkX2RvYy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2ZpeGVzL3Jlc3BlY3RfdW1hc2suZGlmZiBcCi0JZmlsZTovL2RlYmlhbi93cml0YWJsZV9zaXRlX2RpcnMuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vbm9fcGFja2xpc3RfcGVybGxvY2FsLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9pbnN0bW9kc2hfZG9jLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vbGRfcnVuX3BhdGguZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9saWJuZXRfY29uZmlnX3BhdGguZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9tb2RfcGF0aHMuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9wcnVuZV9saWJzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vZml4ZXMvbmV0X3NtdHBfZG9jcy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL3BlcmxpdnAuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL3NraXAtdXBzdHJlYW0tZ2l0LXRlc3RzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vZmluZF9odG1sMnRleHQuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9wZXJsNWRiLXgtdGVybWluYWwtZW11bGF0b3IucGF0Y2ggXAotCWZpbGU6Ly9kZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vcmVnZW4tc2tpcC5kaWZmIFwKLSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgZmlsZTovL01ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL01ha2VmaWxlLlNILnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2luc3RhbGxwZXJsLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtYXJjaGxpYi1leHAucGF0Y2ggXAotICAgICAgICBmaWxlOi8vcGVybC1keW5sb2FkZXIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vcGVybC1tb3JlY29uZmlnLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2xldGdjYy1maW5kLWVycm5vLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2dlbmVyYXRlLXNoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL25hdGl2ZS1wZXJsaW5jLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2Nyb3NzLWdlbmVyYXRlX3V1ZG1hcC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9maXhfYmFkX3JwYXRoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2R5bmFsb2FkZXJoYWNrLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2NvbmZpZy5zaCBcCi0gICAgICAgIGZpbGU6Ly9jb25maWcuc2gtMzIgXAotICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTMyLWxlIFwKLSAgICAgICAgZmlsZTovL2NvbmZpZy5zaC0zMi1iZSBcCi0gICAgICAgIGZpbGU6Ly9jb25maWcuc2gtNjQgXAotICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTY0LWxlIFwKLSAgICAgICAgZmlsZTovL2NvbmZpZy5zaC02NC1iZSBcCi0gICAgICAgIGZpbGU6Ly9tYWtlX2V4dC5wbC1maXgtcmVnZW5lcmF0ZS1tYWtlZmlsZS1mYWlsZWQtd2hpbGUtY2MtLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3QtcnVuLXN3aXRjaGVzLnQtcGVybDUtcGVybC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9leHQtT0RCTV9GaWxlLWhpbnRzLWxpbnV4LnBsLWxpbmstbGliZ2RibV9jb21wYXQucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZXh0LU9EQk1fRmlsZS10LW9kYm0udC1maXgtdGhlLXBhdGgtb2YtZGJtdF9jb21tb24ucC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9wZXJsLVBhdGhUb29scy1kb24tdC1maWx0ZXItb3V0LWJsaWItZnJvbS1JTkMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vcGVybC1lcnJuby1nZW5lcmF0aW9uLWdjYzUucGF0Y2ggXAotICAgICAgICBmaWxlOi8vcGVybC1maXgtY29uZmxpY3QtYmV0d2Vlbi1za2lwX2FsbC1hbmQtRU5ELnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggXAotICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4ODMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4MzcucGF0Y2ggXAotICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtNjc5OC0xLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0NWRS0yMDE4LTY3OTgtMi5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9DVkUtMjAxOC02Nzk3LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0NWRS0yMDE4LTY5MTMucGF0Y2ggXAotICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTIwMTUucGF0Y2ggXAotIgotCi0jIEZpeCB0ZXN0IGNhc2UgaXNzdWVzCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly90ZXN0L2Rpc3QtdGhyZWFkcy10LWpvaW4udC1hZGp1c3QtcHMtb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly90ZXN0L2V4dC1EeW5hTG9hZGVyLXQtRHluYUxvYWRlci50LWZpeC1jYWxsaW5nLWRsX2ZpbmRmaWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtU2tpcC12YXJpb3VzLXRlc3RzLWlmLVBFUkxfQlVJTERfUEFDS0FHSU5HLWlzLXNldC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImFmNmE4NGM3YzNlMmI4YjI2OWMxMDVhNWRiMmY2ZDUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTc3YmFjNDUwNWMyNzBmMTg5MGVjZTc1YWZjN2Q0YjU1NTA5MGI0MWFhNDFlYTQ3ODc0N2UyM2IyYWZiM2YiCi0KLWluaGVyaXQgcGVybG5hdGl2ZSBzaXRlaW5mbwotCi0jIFdoZXJlIHRvIGZpbmQgdGhlIG5hdGl2ZSBwZXJsCi1IT1NUUEVSTCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCR7UFZ9IgotCi0jIFdoZXJlIHRvIGZpbmQgLnNvIGZpbGVzIC0gdXNlIHRoZSAtbmF0aXZlIHZlcnNpb25zIG5vdCB0aG9zZSBmcm9tIHRoZSB0YXJnZXQgYnVpbGQKLWV4cG9ydCBQRVJMSE9TVExJQiA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybC8ke1BWfS8iCi0KLSMgV2hlcmUgdG8gZmluZCBwZXJsIEBJTkMvI2luY2x1ZGUgZmlsZXMKLSMgLSB1c2UgdGhlIC1uYXRpdmUgdmVyc2lvbnMgbm90IHRob3NlIGZyb20gdGhlIHRhcmdldCBidWlsZAotZXhwb3J0IFBFUkxfTElCID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsLyR7UFZ9LyIKLWV4cG9ydCBQRVJMX0FSQ0hMSUIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwvJHtQVn0vIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotIyBMREZMQUdTIGZvciBzaGFyZWQgbGlicmFyaWVzCi1leHBvcnQgTERETEZMQUdTID0gIiR7TERGTEFHU30gLXNoYXJlZCIKLQotTERGTEFHU19hcHBlbmQgPSAiIC1mc3RhY2stcHJvdGVjdG9yIgotCi0jIFdlJ3JlIGFsbW9zdCBEZWJpYW4sIGFyZW4ndCB3ZT8KLUNGTEFHUyArPSAiLURERUJJQU4iCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAgICAgIyBNYWtlIGhvc3RwZXJsIGluIGJ1aWxkIGRpcmVjdG9yeSBiZSB0aGUgbmF0aXZlIHBlcmwKLSAgICAgICAgbG4gLXNmICR7SE9TVFBFUkx9IGhvc3RwZXJsCi0KLQlpZiBbIC1uICIke0NPTkZJR1VSRVNUQU1QRklMRX0iIC1hIC1lICIke0NPTkZJR1VSRVNUQU1QRklMRX0iIF07IHRoZW4KLQkJaWYgWyAiYGNhdCAke0NPTkZJR1VSRVNUQU1QRklMRX1gIiAhPSAiJHtCQl9UQVNLSEFTSH0iIC1hIC1lIE1ha2VmaWxlIF07IHRoZW4KLQkJCSR7TUFLRX0gY2xlYW4KLQkJZmkKLQkJZmluZCAke1N9IC1uYW1lICouc28gLWRlbGV0ZQotCWZpCi0JaWYgWyAtbiAiJHtDT05GSUdVUkVTVEFNUEZJTEV9IiBdOyB0aGVuCi0JCWVjaG8gJHtCQl9UQVNLSEFTSH0gPiAke0NPTkZJR1VSRVNUQU1QRklMRX0KLQlmaQotCi0gICAgICAgICMgRG8gb3VyIHdvcmsgaW4gdGhlIGNyb3NzIHN1YmRpcgotICAgICAgICBjZCBDcm9zcwotCi0gICAgICAgICMgR2VuZXJhdGUgY29uZmlndXJhdGlvbgotICAgICAgICBybSAtZiBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9Ci0gICAgICAgIGZvciBpIGluICR7V09SS0RJUn0vY29uZmlnLnNoIFwKLSAgICAgICAgICAgICAgICAgJHtXT1JLRElSfS9jb25maWcuc2gtJHtTSVRFSU5GT19CSVRTfSBcCi0gICAgICAgICAgICAgICAgICR7V09SS0RJUn0vY29uZmlnLnNoLSR7U0lURUlORk9fQklUU30tJHtTSVRFSU5GT19FTkRJQU5ORVNTfTsgZG8KLSAgICAgICAgICAgIGNhdCAkaSA+PiBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9Ci0gICAgICAgIGRvbmUKLQotICAgICAgICAjIEZpeHVwcyBmb3IgbXVzbAotICAgICAgICBpZiBbICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2wiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2xlYWJpIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNseDMyIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICJzLFwoZF9saWJtX2xpYl92ZXJzaW9uPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsX3NldHNfY250PVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvYmFzZT1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRzdGRpbz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9nZXRuZXRieW5hbWVfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9maW5pdGVsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwcm90b2J5bmFtZV9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwd2VudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRzZXJ2ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldGhvc3RlbnRfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0bmV0ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGJ5YWRkcl9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwcm90b2VudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwcm90b2J5bnVtYmVyX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldGdyZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGlfZmNudGw9XCkndW5kZWYnLFwxJ2RlZmluZScsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGhfZmNudGw9XCknZmFsc2UnLFwxJ3RydWUnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsLWZzdGFjay1wcm90ZWN0b3IsLWZuby1zdGFjay1wcm90ZWN0b3IsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicywtbG5zbCwsZyIgXAotICAgICAgICAgICAgICAgICAgICBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9Ci0gICAgICAgIGZpCi0KLSAgICAgICAgIyBVcGRhdGUgc29tZSBwYXRocyBpbiB0aGUgY29uZmlndXJhdGlvbgotICAgICAgICBzZWQgLWkgLWUgJ3MsQEFSQ0hALXRocmVhZC1tdWx0aSwsZycgXAotICAgICAgICAgICAgICAgLWUgJ3MsQEFSQ0hALCR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfSxnJyBcCi0gICAgICAgICAgICAgICAtZSAncyxAU1RBR0lOR0RJUkAsJHtTVEFHSU5HX0RJUl9IT1NUfSxnJyBcCi0gICAgICAgICAgICAgICAtZSAicyxASU5DTFVERURJUkAsJHtTVEFHSU5HX0lOQ0RJUn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsQExJQkRJUkAsJHtsaWJkaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLEBCQVNFTElCRElSQCwke2Jhc2VfbGliZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicyxARVhFQ1BSRUZJWEAsJHtleGVjX3ByZWZpeH0sZyIgXAotICAgICAgICAgICAgICAgLWUgJ3MsQFVTUkJJTkAsJHtiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgIGNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KLQotCWNhc2UgIiR7VEFSR0VUX0FSQ0h9IiBpbgotCQl4ODZfNjQgfCBwb3dlcnBjIHwgczM5MCkKLQkJCXNlZCAtaSAtZSAicyxcKG5lZWRfdmFfY29weT1cKSd1bmRlZicsXDEnZGVmaW5lJyxnIiBcCi0JCQkJY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotCQkJOzsKLQkJYXJtKQotCQkJc2VkIC1pIC1lICJzLFwoZF91MzJhbGlnbj1cKSd1bmRlZicsXDEnZGVmaW5lJyxnIiBcCi0JCQkJY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotCQkJOzsKLQllc2FjCi0gICAgICAgICMgVGhlc2UgYXJlIHN0cmV3biBhbGwgb3ZlciB0aGUgc291cmNlIHRyZWUKLSAgICAgICAgZm9yIGZvbyBpbiBgZ3JlcCAtSSAtLWV4Y2x1ZGU9IioucGF0Y2giIC0tZXhjbHVkZT0iKi5kaWZmIiAtLWV4Y2x1ZGU9IioucG9kIiAtLWV4Y2x1ZGU9IlJFQURNRSoiIC0tZXhjbHVkZT0iR2xvc3NhcnkiIC1tMSAiL3Vzci9pbmNsdWRlLy4qXC5oIiAke1N9LyogLXIgLWxgICR7U30vdXRpbHMvaDJ4cy5QTCA7IGRvCi0gICAgICAgICAgICBlY2hvIEZpeGluZzogJGZvbwotICAgICAgICAgICAgc2VkIC1lICdzfFwoWyAiXidcJydJXVwrXCkvdXNyL2luY2x1ZGUvfFwxJHtTVEFHSU5HX0lOQ0RJUn0vfGcnIC1pICRmb28KLSAgICAgICAgZG9uZQotCi0gICAgICAgIHJtIC1mIGNvbmZpZwotICAgICAgICBlY2hvICJBUkNIID0gJHtUQVJHRVRfQVJDSH0iID4gY29uZmlnCi0gICAgICAgIGVjaG8gIk9TID0gJHtUQVJHRVRfT1N9IiA+PiBjb25maWcKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyBGaXggdG8gYXZvaWQgcmVjdXJzaXZlIHN1YnN0aXR1dGlvbiBvZiBwYXRoCi0gICAgICAgIHNlZCAtaSAtZSAnc3woQGxpYnBhdGgsICIuKiJ8KEBsaWJwYXRoLCAiJHtTVEFHSU5HX0xJQkRJUn0ifGcnIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbQotCi0gICAgICAgIGNkIENyb3NzCi0gICAgICAgIG9lX3J1bm1ha2UgcGVybCBMRD0iJHtDQ0xEfSIKLX0KLQotZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSBudW1lcm91cyBjb21tZW50cy4uLgotICAgICAgICBmaW5kICIke1N9L2NwYW4vRW5jb2RlIiAtdHlwZSBmIFwKLSAgICAgICAgICAgIFwoIC1uYW1lICcqLmV4aCcgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCi0gICAgICAgICAgICAtZXhlYyBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyB7fSArCi0gICAgICAgIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgJHtTfS9wZXJsLmggJHtTfS9wcC5oCi0gICAgICAgIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX0vdXNyL2Jpbi9wZXJsLW5hdGl2ZS9wZXJsJHtQVn0ucmVhbDovdXNyL2Jpbi9wZXJsJHtQVn06ZycgIFwKLSAgICAgICAgICAgICR7U30vY3Bhbi9Db21wcmVzcy1SYXctQnppcDIvY29uc3RhbnRzLmggXAotICAgICAgICAgICAgJHtTfS9jcGFuL0NvbXByZXNzLVJhdy1abGliL2NvbnN0YW50cy5oIFwKLSAgICAgICAgICAgICR7U30vY3Bhbi9JUEMtU3lzVi9jb25zdC1jLmluYyBcCi0gICAgICAgICAgICAke1N9L2Rpc3QvVGltZS1IaVJlcy9jb25zdC1jLmluYwotfQotCi1kb19pbnN0YWxsKCkgewotCSNleHBvcnQgaG9zdHBlcmw9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsJHtQVn0iCi0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotICAgICAgICAjIEFkZCBwZXJsIHBvaW50aW5nIGF0IGN1cnJlbnQgdmVyc2lvbgotICAgICAgICBsbiAtc2YgcGVybCR7UFZ9ICR7RH0ke2JpbmRpcn0vcGVybAotCi0gICAgICAgIGxuIC1zZiBwZXJsICR7RH0vJHtsaWJkaXJ9L3Blcmw1Ci0KLSAgICAgICAgIyBSZW1vdmUgdW53YW50ZWQgZmlsZSBhbmQgZW1wdHkgZGlyZWN0b3JpZXMKLSAgICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcGVybC8ke1BWfS8ucGFja2xpc3QKLQlybWRpciAke0R9LyR7bGliZGlyfS9wZXJsL3NpdGVfcGVybC8ke1BWfQotCXJtZGlyICR7RH0vJHtsaWJkaXJ9L3Blcmwvc2l0ZV9wZXJsCi0KLSAgICAgICAgIyBGaXggdXAgc2hhcmVkIGxpYnJhcnkKLSAgICAgICAgbXYgJHtEfS8ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFL2xpYnBlcmwuc28gJHtEfS8ke2xpYmRpcn0vbGlicGVybC5zby4ke1BWfQotICAgICAgICBsbiAtc2YgbGlicGVybC5zby4ke1BWfSAke0R9LyR7bGliZGlyfS9saWJwZXJsLnNvLjUKLSAgICAgICAgbG4gLXNmIC4uLy4uLy4uL2xpYnBlcmwuc28uJHtQVn0gJHtEfS8ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFL2xpYnBlcmwuc28KLQotICAgICAgICAjIHRhcmdldCBjb25maWcsIHVzZWQgYnkgY3Bhbi5iYmNsYXNzIHRvIGV4dHJhY3QgdmVyc2lvbiBpbmZvcm1hdGlvbgotICAgICAgICBpbnN0YWxsIGNvbmZpZy5zaCAke0R9JHtsaWJkaXJ9L3BlcmwKLQotICAgICAgICBsbiAtcyBDb25maWdfaGVhdnkucGwgJHtEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19oZWF2eS10YXJnZXQucGwKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsIFwKLSAgICAgICAgICAgIFBFUkw1TElCPSckUEVSTDVMSUI6JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsLyR7UFZ9JwotfQotCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1wZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0gICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSfSwke2JpbmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnBoIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMm1hbiBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ0ZXh0IFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnVzYWdlIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kY2hlY2tlciBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZHNlbGVjdCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9jb25maWcuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9wZXJsLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvcHAuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWcucG9kIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnkucGwgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9GaWxlQ2FjaGUucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L3BvZC8qLnBvZCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvY29uZmlnLnNoCi19Ci0KLVBBQ0tBR0VTID0gInBlcmwtZGJnIHBlcmwgcGVybC1taXNjIHBlcmwtZGV2IHBlcmwtcG9kIHBlcmwtZG9jIHBlcmwtbGliIFwKLSAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNwYW4gcGVybC1tb2R1bGUtY3BhbnBsdXMgcGVybC1tb2R1bGUtdW5pY29yZSIKLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wZXJsICR7YmluZGlyfS9wZXJsJHtQVn0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnLnBtIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3N0cmljdC5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS93YXJuaW5ncy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS93YXJuaW5ncyBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS92YXJzLnBtIFwKLSAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtiaW5kaXJ9L3BlcmwucmVhbCIKLVJQUk9WSURFU18ke1BOfSArPSAicGVybC1tb2R1bGUtc3RyaWN0IHBlcmwtbW9kdWxlLXZhcnMgcGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MtcmVnaXN0ZXIiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRSIKLUZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGlicGVybC5zbyogXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvY29uZmlnLnNoIFwKLQkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2dpdC5wbCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LnBsIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnktdGFyZ2V0LnBsIgotRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L3BvZCBcCi0JCSAgICR7bGliZGlyfS9wZXJsLyR7UFZ9LyoucG9kIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS8qLyoucG9kIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS8qLyovKi5wb2QgIgotRklMRVNfcGVybC1taXNjID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tZG9jID0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9LyovKi50eHQgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9LyovKi8qLnR4dCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vYXV0by9YUy9UeXBlbWFwIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9CL2Fzc2VtYmxlIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9CL2NjX2hhcm5lc3MgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0IvZGlzYXNzZW1ibGUgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0IvbWFrZWxpYmxpbmtzIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DR0kvZWcgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU4vUEFVU0UyMDAzLnB1YiBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTi9TSUdOQVRVUkUgXAotCQkgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOUExVUy9TaGVsbC9EZWZhdWx0L1BsdWdpbnMvSE9XVE8ucG9kIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FbmNvZGUvZW5jb2RlLmggXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL01BTklGRVNULlNLSVAgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL05PVEVTIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9QQVRDSElORyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvdHlwZW1hcCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMveHN1YnBwIFwKLQkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvQ2hhbmdlc19FVS1JbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9OZXQvKi5lZyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdW5pY29yZS9ta3RhYmxlcyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdW5pY29yZS9ta3RhYmxlcy5sc3QgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3VuaWNvcmUvdmVyc2lvbiAiCi0KLUZJTEVTX3BlcmwtbW9kdWxlLWNwYW4gKz0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU4gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTi5wbSIKLUZJTEVTX3BlcmwtbW9kdWxlLWNwYW5wbHVzICs9ICIke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOUExVUyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTlBMVVMucG0iCi1GSUxFU19wZXJsLW1vZHVsZS11bmljb3JlICs9ICIke2xpYmRpcn0vcGVybC8ke1BWfS91bmljb3JlIgotCi0jIENyZWF0ZSBhIHBlcmwtbW9kdWxlcyBwYWNrYWdlIHJlY29tbWVuZGluZyBhbGwgdGhlIG90aGVyIHBlcmwKLSMgcGFja2FnZXMgKGFjdHVhbGx5IHRoZSBub24gbW9kdWxlcyBwYWNrYWdlcyBhbmQgbm90IGNyZWF0ZWQgdG9vKQotQUxMT1dfRU1QVFlfcGVybC1tb2R1bGVzID0gIjEiCi1QQUNLQUdFU19hcHBlbmQgPSAiIHBlcmwtbW9kdWxlcyAiCi0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfcGVybF9wYWNrYWdlcyAiCi0KLXB5dGhvbiBzcGxpdF9wZXJsX3BhY2thZ2VzICgpIHsKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3BlcmwvJHtQVn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2F1dG8vKFteLl0qKS9bXi9dKlwuKHNvfGxkfGl4fGFsKScsICdwZXJsLW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnTW9kdWxlLyhbXlwvXSopXC5wbScsICdwZXJsLW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnTW9kdWxlLyhbXlwvXSopLy4qJywgJ3BlcmwtbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICcoXig/IShDUEFOXC98Q1BBTlBMVVNcL3xNb2R1bGVcL3x1bmljb3JlXC98YXV0b1wvKVteXC9dKS4qKVwuKHBtfHBsfGUyeCknLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotCi0gICAgIyBwZXJsLW1vZHVsZXMgc2hvdWxkIHJlY29tbWVuZCBldmVyeSBwZXJsIG1vZHVsZSwgYW5kIG9ubHkgdGhlCi0gICAgIyBtb2R1bGVzLiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aGUgcmVzdWx0IG9mIGRvX3NwbGl0X3BhY2thZ2VzKCkgYXMgc29tZQotICAgICMgbW9kdWxlcyBhcmUgbWFudWFsbHkgc3BsaXQgKGVnLiBwZXJsLW1vZHVsZS11bmljb3JlKS4KLSAgICBwYWNrYWdlcyA9IGZpbHRlcihsYW1iZGEgcDogJ3BlcmwtbW9kdWxlLScgaW4gcCwgZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKSkKLSAgICBkLnNldFZhcihkLmV4cGFuZCgiUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlcyIpLCAnICcuam9pbihwYWNrYWdlcykpCi19Ci0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5wZXJsLW1vZHVsZS0uKig/PCFcLW5hdGl2ZSkkIgotUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmVzZGsgKz0gIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiCi0KLVJQUk9WSURFU19wZXJsLWxpYiA9ICJwZXJsLWxpYiIKLQotcmVxdWlyZSBwZXJsLXJkZXBlbmRzXyR7UFZ9LmluYwotcmVxdWlyZSBwZXJsLXB0ZXN0LmluYwotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiKi5wbSAqLnBvZCAqLmggKi5wbCAqLnNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NDQ5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC40LmJiCkBAIC0wLDAgKzEsMzUzIEBACityZXF1aXJlIHBlcmwuaW5jCisKKyMgV2UgbmVlZCBnbnVncmVwIChmb3IgLUkpCitERVBFTkRTID0gImRiIGdyZXAtbmF0aXZlIGdkYm0gemxpYiB2aXJ0dWFsL2NyeXB0IgorCisjIFBpY2sgdXAgcGF0Y2hlcyBmcm9tIGRlYmlhbgorIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9wL3BlcmwvcGVybF81LjIyLjAtMS5kZWJpYW4udGFyLnh6CitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9kZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2RiX2ZpbGVfdmVyLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZG9jX2luZm8uZGlmZiBcCisJZmlsZTovL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZXJybm9fdmVyLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vbGlicGVybF9lbWJlZF9kb2MuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3ByZWZpeF9jaGFuZ2VzLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2xkX3J1bl9wYXRoLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vbW9kX3BhdGhzLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vcHJ1bmVfbGlicy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9wZXJsaXZwLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vc3F1ZWxjaC1sb2NhbGUtd2FybmluZ3MuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3NraXAta2ZyZWVic2QtY3Jhc2guZGlmZiBcCisJZmlsZTovL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoIFwKKwlmaWxlOi8vZGViaWFuL2NwYW4tbWlzc2luZy1zaXRlLWRpcnMuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3JlZ2VuLXNraXAuZGlmZiBcCisiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5TSC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9pbnN0YWxscGVybC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLWFyY2hsaWItZXhwLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtZHlubG9hZGVyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtbW9yZWNvbmZpZy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9sZXRnY2MtZmluZC1lcnJuby5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zaC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9jcm9zcy1nZW5lcmF0ZV91dWRtYXAucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZml4X2JhZF9ycGF0aC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9keW5hbG9hZGVyaGFjay5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9jb25maWcuc2ggXAorICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTMyIFwKKyAgICAgICAgZmlsZTovL2NvbmZpZy5zaC0zMi1sZSBcCisgICAgICAgIGZpbGU6Ly9jb25maWcuc2gtMzItYmUgXAorICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTY0IFwKKyAgICAgICAgZmlsZTovL2NvbmZpZy5zaC02NC1sZSBcCisgICAgICAgIGZpbGU6Ly9jb25maWcuc2gtNjQtYmUgXAorICAgICAgICBmaWxlOi8vbWFrZV9leHQucGwtZml4LXJlZ2VuZXJhdGUtbWFrZWZpbGUtZmFpbGVkLXdoaWxlLWNjLS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly90LXJ1bi1zd2l0Y2hlcy50LXBlcmw1LXBlcmwucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZXh0LU9EQk1fRmlsZS1oaW50cy1saW51eC5wbC1saW5rLWxpYmdkYm1fY29tcGF0LnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2ggXAorICAgICAgICBmaWxlOi8vcGVybC1QYXRoVG9vbHMtZG9uLXQtZmlsdGVyLW91dC1ibGliLWZyb20tSU5DLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtZXJybm8tZ2VuZXJhdGlvbi1nY2M1LnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtZml4LWNvbmZsaWN0LWJldHdlZW4tc2tpcF9hbGwtYW5kLUVORC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIFwKKyAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEyMDE1LnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtRXh0VXRpbHMtTU1fVW5peC5wbS1maXgtcmFjZS1pc3N1ZXMucGF0Y2ggXAorIgorCisjIEZpeCB0ZXN0IGNhc2UgaXNzdWVzCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgIGZpbGU6Ly90ZXN0L2Rpc3QtdGhyZWFkcy10LWpvaW4udC1hZGp1c3QtcHMtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly90ZXN0L2V4dC1EeW5hTG9hZGVyLXQtRHluYUxvYWRlci50LWZpeC1jYWxsaW5nLWRsX2ZpbmRmaWwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtU2tpcC12YXJpb3VzLXRlc3RzLWlmLVBFUkxfQlVJTERfUEFDS0FHSU5HLWlzLXNldC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA0NjIyYmM0ZDM5NDFkYzdlYjU3MWM1MmI3YzAyOTkzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMDgwMjg3ZmY2NDc1MDI3MDY4OTg0M2FlOTQ1ZjAyMTU5YTMzY2I4ZjJmYzkxMDI0OGMxNWJlZmJhNWRiODQiCisKK2luaGVyaXQgcGVybG5hdGl2ZSBzaXRlaW5mbworCisjIFdoZXJlIHRvIGZpbmQgdGhlIG5hdGl2ZSBwZXJsCitIT1NUUEVSTCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCR7UFZ9IgorCisjIFdoZXJlIHRvIGZpbmQgLnNvIGZpbGVzIC0gdXNlIHRoZSAtbmF0aXZlIHZlcnNpb25zIG5vdCB0aG9zZSBmcm9tIHRoZSB0YXJnZXQgYnVpbGQKK2V4cG9ydCBQRVJMSE9TVExJQiA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybC8ke1BWfS8iCisKKyMgV2hlcmUgdG8gZmluZCBwZXJsIEBJTkMvI2luY2x1ZGUgZmlsZXMKKyMgLSB1c2UgdGhlIC1uYXRpdmUgdmVyc2lvbnMgbm90IHRob3NlIGZyb20gdGhlIHRhcmdldCBidWlsZAorZXhwb3J0IFBFUkxfTElCID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsLyR7UFZ9LyIKK2V4cG9ydCBQRVJMX0FSQ0hMSUIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwvJHtQVn0vIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworIyBMREZMQUdTIGZvciBzaGFyZWQgbGlicmFyaWVzCitleHBvcnQgTERETEZMQUdTID0gIiR7TERGTEFHU30gLXNoYXJlZCIKKworTERGTEFHU19hcHBlbmQgPSAiIC1mc3RhY2stcHJvdGVjdG9yIgorCisjIFdlJ3JlIGFsbW9zdCBEZWJpYW4sIGFyZW4ndCB3ZT8KK0NGTEFHUyArPSAiLURERUJJQU4iCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAgICAgIyBNYWtlIGhvc3RwZXJsIGluIGJ1aWxkIGRpcmVjdG9yeSBiZSB0aGUgbmF0aXZlIHBlcmwKKyAgICAgICAgbG4gLXNmICR7SE9TVFBFUkx9IGhvc3RwZXJsCisKKwlpZiBbIC1uICIke0NPTkZJR1VSRVNUQU1QRklMRX0iIC1hIC1lICIke0NPTkZJR1VSRVNUQU1QRklMRX0iIF07IHRoZW4KKwkJaWYgWyAiYGNhdCAke0NPTkZJR1VSRVNUQU1QRklMRX1gIiAhPSAiJHtCQl9UQVNLSEFTSH0iIC1hIC1lIE1ha2VmaWxlIF07IHRoZW4KKwkJCSR7TUFLRX0gY2xlYW4KKwkJZmkKKwkJZmluZCAke1N9IC1uYW1lICouc28gLWRlbGV0ZQorCWZpCisJaWYgWyAtbiAiJHtDT05GSUdVUkVTVEFNUEZJTEV9IiBdOyB0aGVuCisJCWVjaG8gJHtCQl9UQVNLSEFTSH0gPiAke0NPTkZJR1VSRVNUQU1QRklMRX0KKwlmaQorCisgICAgICAgICMgRG8gb3VyIHdvcmsgaW4gdGhlIGNyb3NzIHN1YmRpcgorICAgICAgICBjZCBDcm9zcworCisgICAgICAgICMgR2VuZXJhdGUgY29uZmlndXJhdGlvbgorICAgICAgICBybSAtZiBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CisgICAgICAgIGZvciBpIGluICR7V09SS0RJUn0vY29uZmlnLnNoIFwKKyAgICAgICAgICAgICAgICAgJHtXT1JLRElSfS9jb25maWcuc2gtJHtTSVRFSU5GT19CSVRTfSBcCisgICAgICAgICAgICAgICAgICR7V09SS0RJUn0vY29uZmlnLnNoLSR7U0lURUlORk9fQklUU30tJHtTSVRFSU5GT19FTkRJQU5ORVNTfTsgZG8KKyAgICAgICAgICAgIGNhdCAkaSA+PiBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CisgICAgICAgIGRvbmUKKworICAgICAgICAjIEZpeHVwcyBmb3IgbXVzbAorICAgICAgICBpZiBbICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2wiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2xlYWJpIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNseDMyIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgc2VkIC1pIC1lICJzLFwoZF9saWJtX2xpYl92ZXJzaW9uPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsX3NldHNfY250PVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvYmFzZT1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRzdGRpbz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9nZXRuZXRieW5hbWVfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9maW5pdGVsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwcm90b2J5bmFtZV9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwd2VudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRzZXJ2ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldGhvc3RlbnRfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0bmV0ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGJ5YWRkcl9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwcm90b2VudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRwcm90b2J5bnVtYmVyX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldGdyZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGlfZmNudGw9XCkndW5kZWYnLFwxJ2RlZmluZScsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGhfZmNudGw9XCknZmFsc2UnLFwxJ3RydWUnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsLWZzdGFjay1wcm90ZWN0b3IsLWZuby1zdGFjay1wcm90ZWN0b3IsZyIgXAorICAgICAgICAgICAgICAgICAgICBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CisgICAgICAgIGZpCisKKyAgICAgICAgIyBVcGRhdGUgc29tZSBwYXRocyBpbiB0aGUgY29uZmlndXJhdGlvbgorICAgICAgICBzZWQgLWkgLWUgJ3MsQEFSQ0hALXRocmVhZC1tdWx0aSwsZycgXAorICAgICAgICAgICAgICAgLWUgJ3MsQEFSQ0hALCR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfSxnJyBcCisgICAgICAgICAgICAgICAtZSAncyxAU1RBR0lOR0RJUkAsJHtTVEFHSU5HX0RJUl9IT1NUfSxnJyBcCisgICAgICAgICAgICAgICAtZSAicyxASU5DTFVERURJUkAsJHtTVEFHSU5HX0lOQ0RJUn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsQExJQkRJUkAsJHtsaWJkaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLEBCQVNFTElCRElSQCwke2Jhc2VfbGliZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicyxARVhFQ1BSRUZJWEAsJHtleGVjX3ByZWZpeH0sZyIgXAorICAgICAgICAgICAgICAgLWUgJ3MsQFVTUkJJTkAsJHtiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICAgIC1lICJzLC1sbnNsLCxnIiBcCisgICAgICAgICAgICBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CisKKwljYXNlICIke1RBUkdFVF9BUkNIfSIgaW4KKwkJeDg2XzY0IHwgcG93ZXJwYyB8IHMzOTApCisJCQlzZWQgLWkgLWUgInMsXChuZWVkX3ZhX2NvcHk9XCkndW5kZWYnLFwxJ2RlZmluZScsZyIgXAorCQkJCWNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KKwkJCTs7CisJCWFybSkKKwkJCXNlZCAtaSAtZSAicyxcKGRfdTMyYWxpZ249XCkndW5kZWYnLFwxJ2RlZmluZScsZyIgXAorCQkJCWNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KKwkJCTs7CisJZXNhYworICAgICAgICAjIFRoZXNlIGFyZSBzdHJld24gYWxsIG92ZXIgdGhlIHNvdXJjZSB0cmVlCisgICAgICAgIGZvciBmb28gaW4gYGdyZXAgLUkgLS1leGNsdWRlPSIqLnBhdGNoIiAtLWV4Y2x1ZGU9IiouZGlmZiIgLS1leGNsdWRlPSIqLnBvZCIgLS1leGNsdWRlPSJSRUFETUUqIiAtLWV4Y2x1ZGU9Ikdsb3NzYXJ5IiAtbTEgIi91c3IvaW5jbHVkZS8uKlwuaCIgJHtTfS8qIC1yIC1sYCAke1N9L3V0aWxzL2gyeHMuUEwgOyBkbworICAgICAgICAgICAgZWNobyBGaXhpbmc6ICRmb28KKyAgICAgICAgICAgIHNlZCAtZSAnc3xcKFsgIl4nXCcnSV1cK1wpL3Vzci9pbmNsdWRlL3xcMSR7U1RBR0lOR19JTkNESVJ9L3xnJyAtaSAkZm9vCisgICAgICAgIGRvbmUKKworICAgICAgICBybSAtZiBjb25maWcKKyAgICAgICAgZWNobyAiQVJDSCA9ICR7VEFSR0VUX0FSQ0h9IiA+IGNvbmZpZworICAgICAgICBlY2hvICJPUyA9ICR7VEFSR0VUX09TfSIgPj4gY29uZmlnCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgRml4IHRvIGF2b2lkIHJlY3Vyc2l2ZSBzdWJzdGl0dXRpb24gb2YgcGF0aAorICAgICAgICBzZWQgLWkgLWUgJ3N8KEBsaWJwYXRoLCAiLioifChAbGlicGF0aCwgIiR7U1RBR0lOR19MSUJESVJ9InxnJyBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KKworICAgICAgICBjZCBDcm9zcworICAgICAgICBvZV9ydW5tYWtlIHBlcmwgTEQ9IiR7Q0NMRH0iCit9CisKK2RvX2NvbXBpbGVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gbnVtZXJvdXMgY29tbWVudHMuLi4KKyAgICAgICAgZmluZCAiJHtTfS9jcGFuL0VuY29kZSIgLXR5cGUgZiBcCisgICAgICAgICAgICBcKCAtbmFtZSAnKi5leGgnIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAorICAgICAgICAgICAgLWV4ZWMgc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6Zycge30gKworICAgICAgICBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnICR7U30vcGVybC5oICR7U30vcHAuaAorICAgICAgICBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9L3Vzci9iaW4vcGVybC1uYXRpdmUvcGVybCR7UFZ9LnJlYWw6L3Vzci9iaW4vcGVybCR7UFZ9OmcnICBcCisgICAgICAgICAgICAke1N9L2NwYW4vQ29tcHJlc3MtUmF3LUJ6aXAyL2NvbnN0YW50cy5oIFwKKyAgICAgICAgICAgICR7U30vY3Bhbi9Db21wcmVzcy1SYXctWmxpYi9jb25zdGFudHMuaCBcCisgICAgICAgICAgICAke1N9L2NwYW4vSVBDLVN5c1YvY29uc3QtYy5pbmMgXAorICAgICAgICAgICAgJHtTfS9kaXN0L1RpbWUtSGlSZXMvY29uc3QtYy5pbmMKK30KKworZG9faW5zdGFsbCgpIHsKKwkjZXhwb3J0IGhvc3RwZXJsPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCR7UFZ9IgorCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KKyAgICAgICAgIyBBZGQgcGVybCBwb2ludGluZyBhdCBjdXJyZW50IHZlcnNpb24KKyAgICAgICAgbG4gLXNmIHBlcmwke1BWfSAke0R9JHtiaW5kaXJ9L3BlcmwKKworICAgICAgICBsbiAtc2YgcGVybCAke0R9LyR7bGliZGlyfS9wZXJsNQorCisgICAgICAgICMgUmVtb3ZlIHVud2FudGVkIGZpbGUgYW5kIGVtcHR5IGRpcmVjdG9yaWVzCisgICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3BlcmwvJHtQVn0vLnBhY2tsaXN0CisJcm1kaXIgJHtEfS8ke2xpYmRpcn0vcGVybC9zaXRlX3BlcmwvJHtQVn0KKwlybWRpciAke0R9LyR7bGliZGlyfS9wZXJsL3NpdGVfcGVybAorCisgICAgICAgICMgRml4IHVwIHNoYXJlZCBsaWJyYXJ5CisgICAgICAgIG12ICR7RH0vJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9saWJwZXJsLnNvICR7RH0vJHtsaWJkaXJ9L2xpYnBlcmwuc28uJHtQVn0KKyAgICAgICAgbG4gLXNmIGxpYnBlcmwuc28uJHtQVn0gJHtEfS8ke2xpYmRpcn0vbGlicGVybC5zby41CisgICAgICAgIGxuIC1zZiAuLi8uLi8uLi9saWJwZXJsLnNvLiR7UFZ9ICR7RH0vJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9saWJwZXJsLnNvCisKKyAgICAgICAgIyB0YXJnZXQgY29uZmlnLCB1c2VkIGJ5IGNwYW4uYmJjbGFzcyB0byBleHRyYWN0IHZlcnNpb24gaW5mb3JtYXRpb24KKyAgICAgICAgaW5zdGFsbCBjb25maWcuc2ggJHtEfSR7bGliZGlyfS9wZXJsCisKKyAgICAgICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnktdGFyZ2V0LnBsCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybCBcCisgICAgICAgICAgICBQRVJMNUxJQj0nJFBFUkw1TElCOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsL3NpdGVfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybC92ZW5kb3JfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybC8ke1BWfScKK30KKworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcGVybF9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgeworICAgICAgICAjIEZpeCB1cCBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgorICAgICAgICBzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtERUJVR19QUkVGSVhfTUFQfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUn0sJHtiaW5kaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19JTkNESVJ9LCR7aW5jbHVkZWRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS8ke1RBUkdFVF9QUkVGSVh9LCR7YmluZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnhzIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJwaCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJtYW4gXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydGV4dCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ1c2FnZSBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZGNoZWNrZXIgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RzZWxlY3QgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvY29uZmlnLmggXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvcGVybC5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFL3BwLmggXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnLnBvZCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LnBsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vRmlsZUNhY2hlLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9wb2QvKi5wb2QgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsL2NvbmZpZy5zaAorfQorCitQQUNLQUdFUyA9ICJwZXJsLWRiZyBwZXJsIHBlcmwtbWlzYyBwZXJsLWRldiBwZXJsLXBvZCBwZXJsLWRvYyBwZXJsLWxpYiBcCisgICAgICAgICAgICBwZXJsLW1vZHVsZS1jcGFuIHBlcmwtbW9kdWxlLWNwYW5wbHVzIHBlcmwtbW9kdWxlLXVuaWNvcmUiCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcGVybCAke2JpbmRpcn0vcGVybCR7UFZ9IFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9zdHJpY3QucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vd2FybmluZ3MucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vd2FybmluZ3MgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdmFycy5wbSBcCisgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7YmluZGlyfS9wZXJsLnJlYWwiCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLXN0cmljdCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLWNvbmZpZyBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCisgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUiCitGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYnBlcmwuc28qIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsL2NvbmZpZy5zaCBcCisJCSAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19naXQucGwgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19oZWF2eS5wbCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LXRhcmdldC5wbCIKK0ZJTEVTXyR7UE59LXBvZCA9ICIke2xpYmRpcn0vcGVybC8ke1BWfS9wb2QgXAorCQkgICAke2xpYmRpcn0vcGVybC8ke1BWfS8qLnBvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi8qLnBvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi8qLyoucG9kICIKK0ZJTEVTX3BlcmwtbWlzYyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LWRvYyA9ICIke2xpYmRpcn0vcGVybC8ke1BWfS8qLyoudHh0IFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS8qLyovKi50eHQgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L2F1dG8vWFMvVHlwZW1hcCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQi9hc3NlbWJsZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQi9jY19oYXJuZXNzIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9CL2Rpc2Fzc2VtYmxlIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9CL21ha2VsaWJsaW5rcyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ0dJL2VnIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOL1BBVVNFMjAwMy5wdWIgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU4vU0lHTkFUVVJFIFwKKwkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTlBMVVMvU2hlbGwvRGVmYXVsdC9QbHVnaW5zL0hPV1RPLnBvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRW5jb2RlL2VuY29kZS5oIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9NQU5JRkVTVC5TS0lQIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9OT1RFUyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvUEFUQ0hJTkcgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL3R5cGVtYXAgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL3hzdWJwcCBcCisJCSAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL0NoYW5nZXNfRVUtSW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vTmV0LyouZWcgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3VuaWNvcmUvbWt0YWJsZXMgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3VuaWNvcmUvbWt0YWJsZXMubHN0IFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS91bmljb3JlL3ZlcnNpb24gIgorCitGSUxFU19wZXJsLW1vZHVsZS1jcGFuICs9ICIke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU4ucG0iCitGSUxFU19wZXJsLW1vZHVsZS1jcGFucGx1cyArPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTlBMVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU5QTFVTLnBtIgorRklMRVNfcGVybC1tb2R1bGUtdW5pY29yZSArPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdW5pY29yZSIKKworIyBDcmVhdGUgYSBwZXJsLW1vZHVsZXMgcGFja2FnZSByZWNvbW1lbmRpbmcgYWxsIHRoZSBvdGhlciBwZXJsCisjIHBhY2thZ2VzIChhY3R1YWxseSB0aGUgbm9uIG1vZHVsZXMgcGFja2FnZXMgYW5kIG5vdCBjcmVhdGVkIHRvbykKK0FMTE9XX0VNUFRZX3BlcmwtbW9kdWxlcyA9ICIxIgorUEFDS0FHRVNfYXBwZW5kID0gIiBwZXJsLW1vZHVsZXMgIgorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3BlcmxfcGFja2FnZXMgIgorCitweXRob24gc3BsaXRfcGVybF9wYWNrYWdlcyAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9wZXJsLyR7UFZ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdhdXRvLyhbXi5dKikvW14vXSpcLihzb3xsZHxpeHxhbCknLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ01vZHVsZS8oW15cL10qKVwucG0nLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ01vZHVsZS8oW15cL10qKS8uKicsICdwZXJsLW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnKF4oPyEoQ1BBTlwvfENQQU5QTFVTXC98TW9kdWxlXC98dW5pY29yZVwvfGF1dG9cLylbXlwvXSkuKilcLihwbXxwbHxlMngpJywgJ3BlcmwtbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKworICAgICMgcGVybC1tb2R1bGVzIHNob3VsZCByZWNvbW1lbmQgZXZlcnkgcGVybCBtb2R1bGUsIGFuZCBvbmx5IHRoZQorICAgICMgbW9kdWxlcy4gRG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhlIHJlc3VsdCBvZiBkb19zcGxpdF9wYWNrYWdlcygpIGFzIHNvbWUKKyAgICAjIG1vZHVsZXMgYXJlIG1hbnVhbGx5IHNwbGl0IChlZy4gcGVybC1tb2R1bGUtdW5pY29yZSkuCisgICAgcGFja2FnZXMgPSBmaWx0ZXIobGFtYmRhIHA6ICdwZXJsLW1vZHVsZS0nIGluIHAsIGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkpCisgICAgZC5zZXRWYXIoZC5leHBhbmQoIlJSRUNPTU1FTkRTXyR7UE59LW1vZHVsZXMiKSwgJyAnLmpvaW4ocGFja2FnZXMpKQorfQorCitQQUNLQUdFU19EWU5BTUlDICs9ICJecGVybC1tb2R1bGUtLiooPzwhXC1uYXRpdmUpJCIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlc2RrID0gIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiCisKK1JQUk9WSURFU19wZXJsLWxpYiA9ICJwZXJsLWxpYiIKKworcmVxdWlyZSBwZXJsLXJkZXBlbmRzXyR7UFZ9LmluYworcmVxdWlyZSBwZXJsLXB0ZXN0LmluYworCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiKi5wbSAqLnBvZCAqLmggKi5wbCAqLnNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE3YjY2Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1TVU1NQVJZID0gInBrZ2NvbmYgcHJvdmlkZXMgY29tcGlsZXIgYW5kIGxpbmtlciBjb25maWd1cmF0aW9uIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiIKLURFU0NSSVBUSU9OID0gInBrZ2NvbmYgaXMgYSBwcm9ncmFtIHdoaWNoIGhlbHBzIHRvIGNvbmZpZ3VyZSBjb21waWxlciBhbmQgbGlua2VyIFwKLWZsYWdzIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiBJdCBpcyBzaW1pbGFyIHRvIHBrZy1jb25maWcgZnJvbSBcCi1mcmVlZGVza3RvcC5vcmcsIHByb3ZpZGluZyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgd2hpbGUgYWxzbyBtYWludGFpbmluZyBcCi1jb21wYXRpYmlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wa2djb25mLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BrZ2NvbmYvcGtnY29uZi9pc3N1ZXMiCi1TRUNUSU9OID0gImRldmVsIgotUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKLVJQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi0jIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCi0jIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgotTElDRU5TRSA9ICJwa2djb25mIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjIxNDIyMmVjMWE4MjBiZDZjYzc1MTY3YTU2OTI1ZTAiCi0KLVNSQ19VUkkgPSAiXAotICAgIGh0dHBzOi8vZGlzdGZpbGVzLmRlcmVmZXJlbmNlZC5vcmcvcGtnY29uZi9wa2djb25mLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL3BrZy1jb25maWctd3JhcHBlciBcCi0gICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKLSAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2NzhkMjQyYjRlZWYxNzU0YmJhNmE1ODY0MmFmMTBiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWIzOTM3MWQ0YWI5NzJiZTFkNTM5YThiMTBiNmNjMjFmOGVhZmM5N2Y2MTcxMDJlNjY3ZTgyYmQzMmViMjM0IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXBrZy1jb25maWctZGlyPScke2xpYmRpcn0vcGtnY29uZmlnOiR7ZGF0YWRpcn0vcGtnY29uZmlnJyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgSW5zdGFsbCBhIHdyYXBwZXIgd2hpY2ggZGVhbHMsIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aCBwa2djb25mIHZzCi0gICAgIyBwa2ctY29uZmlnIGNvbXBhdGliaWxpdHkgaXNzdWVzLgotICAgIGluc3RhbGwgLW0gMDc1NSAiJHtXT1JLRElSfS9wa2ctY29uZmlnLXdyYXBwZXIiICIke0R9JHtiaW5kaXJ9L3BrZy1jb25maWciCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgIyBJbnN0YWxsIGEgcGtnLWNvbmZpZy1uYXRpdmUgd3JhcHBlciB0aGF0IHdpbGwgdXNlIHRoZSBuYXRpdmUgc3lzcm9vdCBpbnN0ZWFkCi0gICAgIyBvZiB0aGUgTUFDSElORSBzeXNyb290LCBmb3IgdXNpbmcgcGtnLWNvbmZpZyB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSB0b29scy4KLSAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCi0gICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKLSAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQotICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKLSAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAotICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKLSAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCi19Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInBrZy1jb25maWciCi0KLSMgV2hlbiB1c2luZyB0aGUgUlBNIGdlbmVyYXRlZCBhdXRvbWF0aWMgcGFja2FnZSBkZXBlbmRlbmNpZXMsIHNvbWUgcGFja2FnZXMKLSMgd2lsbCBlbmQgdXAgcmVxdWlyaW5nICdwa2djb25maWcocGtnLWNvbmZpZyknLiAgQWxsb3cgdGhpcyBiZWhhdmlvciBieQotIyBzcGVjaWZ5aW5nIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGUuCi1SUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyhwa2ctY29uZmlnKSIKLQotIyBJbmNsdWRlIHBrZy5tNCBpbiB0aGUgbWFpbiBwYWNrYWdlLCBsZWF2aW5nIGxpYnBrZ2NvbmYgZGV2IGZpbGVzIGluIC1kZXYKLUZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKLQotQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayAoKSB7Ci0gICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgLWEgIiR7V0lUSElOX0VYVF9TREt9IiA9ICIxIiBdIDsgdGhlbgotICAgICAgIHBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgotICAgICAgIG12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCi0gICAgICAgbG5yICRwa2djb25mZGlyL3BrZy1jb25maWctZXNkayAkcGtnY29uZmRpci9wa2ctY29uZmlnCi0gICAgICAgc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCi0gICBmaQotfQotCi1TU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTU0NzhkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNS4zLmJiCkBAIC0wLDAgKzEsNjkgQEAKK1NVTU1BUlkgPSAicGtnY29uZiBwcm92aWRlcyBjb21waWxlciBhbmQgbGlua2VyIGNvbmZpZ3VyYXRpb24gZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIgorREVTQ1JJUFRJT04gPSAicGtnY29uZiBpcyBhIHByb2dyYW0gd2hpY2ggaGVscHMgdG8gY29uZmlndXJlIGNvbXBpbGVyIGFuZCBsaW5rZXIgXAorZmxhZ3MgZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIEl0IGlzIHNpbWlsYXIgdG8gcGtnLWNvbmZpZyBmcm9tIFwKK2ZyZWVkZXNrdG9wLm9yZywgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSB3aGlsZSBhbHNvIG1haW50YWluaW5nIFwKK2NvbXBhdGliaWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3BrZ2NvbmYub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vcGtnY29uZi9wa2djb25mL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitQUk9WSURFUyArPSAicGtnY29uZmlnIgorUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWciCitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKKyMgVGhlIHBrZ2NvbmYgbGljZW5zZSBzZWVtcyB0byBiZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCU0QtMi1DbGF1c2Ugb3IKKyMgSVNDLCBidXQgaGFzIGRpZmZlcmVudCB3b3JkaW5nLCBzbyBuZWVkcyBpdHMgb3duIG5hbWUuCitMSUNFTlNFID0gInBrZ2NvbmYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMjE0MjIyZWMxYTgyMGJkNmNjNzUxNjdhNTY5MjVlMCIKKworU1JDX1VSSSA9ICJcCisgICAgaHR0cHM6Ly9kaXN0ZmlsZXMuZGVyZWZlcmVuY2VkLm9yZy9wa2djb25mL3BrZ2NvbmYtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy13cmFwcGVyIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUuaW4gXAorICAgIGZpbGU6Ly9wa2ctY29uZmlnLWVzZGsuaW4gXAorIgorU1JDX1VSSVttZDVzdW1dID0gImMyMTc0M2JjYTE0Yzg4MmMwZjI4Mjc0NjE2OGE1ZWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzNDY4MzA4NTUzYzk0Mzg5ZGFkZmQxMGM0ZDEwNjcyNjkwNTJiNTM2NDI3NmE5ZDI0YTY0M2M4ODQ4NWY3MTUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXBrZy1jb25maWctZGlyPScke2xpYmRpcn0vcGtnY29uZmlnOiR7ZGF0YWRpcn0vcGtnY29uZmlnJyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgSW5zdGFsbCBhIHdyYXBwZXIgd2hpY2ggZGVhbHMsIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aCBwa2djb25mIHZzCisgICAgIyBwa2ctY29uZmlnIGNvbXBhdGliaWxpdHkgaXNzdWVzLgorICAgIGluc3RhbGwgLW0gMDc1NSAiJHtXT1JLRElSfS9wa2ctY29uZmlnLXdyYXBwZXIiICIke0R9JHtiaW5kaXJ9L3BrZy1jb25maWciCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgIyBJbnN0YWxsIGEgcGtnLWNvbmZpZy1uYXRpdmUgd3JhcHBlciB0aGF0IHdpbGwgdXNlIHRoZSBuYXRpdmUgc3lzcm9vdCBpbnN0ZWFkCisgICAgIyBvZiB0aGUgTUFDSElORSBzeXNyb290LCBmb3IgdXNpbmcgcGtnLWNvbmZpZyB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSB0b29scy4KKyAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCit9CisKKyMgV2hlbiB1c2luZyB0aGUgUlBNIGdlbmVyYXRlZCBhdXRvbWF0aWMgcGFja2FnZSBkZXBlbmRlbmNpZXMsIHNvbWUgcGFja2FnZXMKKyMgd2lsbCBlbmQgdXAgcmVxdWlyaW5nICdwa2djb25maWcocGtnLWNvbmZpZyknLiAgQWxsb3cgdGhpcyBiZWhhdmlvciBieQorIyBzcGVjaWZ5aW5nIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGUuCitSUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyhwa2ctY29uZmlnKSIKKworIyBJbmNsdWRlIHBrZy5tNCBpbiB0aGUgbWFpbiBwYWNrYWdlLCBsZWF2aW5nIGxpYnBrZ2NvbmYgZGV2IGZpbGVzIGluIC1kZXYKK0ZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKKworcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayAoKSB7CisgICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgLWEgIiR7V0lUSElOX0VYVF9TREt9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgIHBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgorICAgICAgIG12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCisgICAgICAgbG5yICRwa2djb25mZGlyL3BrZy1jb25maWctZXNkayAkcGtnY29uZmRpci9wa2ctY29uZmlnCisgICAgICAgc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCisgICBmaQorfQorCitTU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNjg4MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMjEzNjk2OWUzZTE5NmI5Y2Y3ZjQ3ODgzNDBlZmE0YjFkOWIzOTU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMSBPY3QgMjAxOCAxMDowNTo1MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBzcmMvYXJjaC1taXBzLmM6IGNoZWNrIGluZm8tPnJlc29sdmV0bHMgYmVmb3JlIHVzZSBpdHMgbWVtYmVyCisKK1RoZSBpbmZvLT5yZXNvbHZldGxzIG1pZ2h0IGJlIE5VTEwgYWNjb3JkaW5nIHRvIHNyYy9wcmVsaW5rLmM6Citbc25pcF0KKyAvKiBEeW5hbWljIGxpbmtlciBkb2VzIG5vdCBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnksCisgICAgYWxsIHN5bWJvbHMgcmVzb2x2ZSB0byB0aGVtc2VsdmVzIHdpdGggdGhlIGV4Y2VwdGlvbgorICAgIG9mIFNITl9VTkRFRiBzeW1ib2xzIHdoaWNoIHJlc29sdmUgdG8gMC4gICovCitpZiAoaW5mby0+c3ltdGFiW3Jfc3ltXS5zdF9zaG5keCA9PSBTSE5fVU5ERUYpCisgIHsKKyAgICBpbmZvLT5yZXNvbHZlZW50ID0gTlVMTDsKKyAgICBpbmZvLT5yZXNvbHZldGxzID0gTlVMTDsKK1tzbmlwXQorCitTbyB3ZSBtdXN0IGNoZWNrIGl0IGJlZm9yZSB1c2UgaXRzIG1lbWJlcnMsIG90aGVyd2lzZSwgdGhlcmUgbWlnaHQgYmUKK1NlZ21lbnRhdGlvbiBmYXVsdCBlcnJvci4KKworRml4ZWQ6CitNQUNISU5FID0gInFlbXVtaXBzIgorSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHFlbXUiCiskIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCitbc25pcF0KK3wgL3BhdGgvdG8vcWVtdW1pcHMtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3RlbXAvcnVuLnByZWxpbmtfaW1hZ2UuMTAwMDogbGluZSAxMTE6ICAxMDEwIFNlZ21lbnRhdGlvbiBmYXVsdCAgICAgIChjb3JlIGR1bXBlZCkKK1tzbmlwXQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL3BpcGVybWFpbC95b2N0by8yMDE4LU9jdG9iZXIvMDQyODEyLmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2FyY2gtbWlwcy5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYXJjaC1taXBzLmMgYi9zcmMvYXJjaC1taXBzLmMKK2luZGV4IGNjYjE4MzQuLjAyYzYwOGYgMTAwNjQ0CistLS0gYS9zcmMvYXJjaC1taXBzLmMKKysrKyBiL3NyYy9hcmNoLW1pcHMuYworQEAgLTU2Nyw3ICs1NjcsOCBAQCBtaXBzX3ByZWxpbmtfcmVsb2MgKHN0cnVjdCBwcmVsaW5rX2luZm8gKmluZm8sIEdFbGZfQWRkciByX29mZnNldCwKKyAgICAgICBpZiAoZHNvLT5laGRyLmVfdHlwZSA9PSBFVF9FWEVDKQorIAl7CisgCSAgdmFsdWUgPSBpbmZvLT5yZXNvbHZlIChpbmZvLCByX3N5bSwgcl90eXBlKTsKKy0JICB2YWx1ZSArPSBpbmZvLT5yZXNvbHZldGxzLT5vZmZzZXQgLSBUTFNfVFBfT0ZGU0VUOworKwkgIGlmIChpbmZvLT5yZXNvbHZldGxzICE9IE5VTEwpCisrCSAgICB2YWx1ZSArPSBpbmZvLT5yZXNvbHZldGxzLT5vZmZzZXQgLSBUTFNfVFBfT0ZGU0VUOworIAkgIGlmIChyX3R5cGUgPT0gUl9NSVBTX1RMU19UUFJFTDMyKQorIAkgICAgbWlwc19wcmVsaW5rXzMyYml0X3JlbG9jIChkc28sIHJlbGEsIHZhbHVlKTsKKyAJICBlbHNlCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCmluZGV4IDBmNmQxNmUuLmIxMjYxZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgpAQCAtOSw3ICs5LDcgQEAKIHJ1bnRpbWUgYW5kIHRodXMgcHJvZ3JhbXMgY29tZSB1cCBmYXN0ZXIuIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgotU1JDUkVWID0gIjA1YWVhZmQwNTNlNTYzNTZlYzhjNjJmNGJiOGY3Yjk1YmFlMTkyZjMiCitTUkNSRVYgPSAiYTg1M2E1ZDcxNWQ4NGVlYzkzYWE2OGU4ZjJkZjI2YjdkODYwZjViMiIKIFBWID0gIjEuMCtnaXQke1NSQ1BWfSIKIAogIwpAQCAtMjcsMTEgKzI3LDEzIEBACiAKIFBBQ0tBR0VTID0rICIke1BOfS1jcm9uIgogCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3ByZWxpbmstY3Jvc3MuZ2l0O2JyYW5jaD1jcm9zc19wcmVsaW5rIFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHJlbGluay1jcm9zcy5naXQ7YnJhbmNoPWNyb3NzX3ByZWxpbmtfc3RhZ2luZyBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5jcm9uLmRhaWx5IFwKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuZGVmYXVsdCBcCi0JICAgZmlsZTovL21hY3Jvcy5wcmVsaW5rIgorICAgICAgICAgICBmaWxlOi8vbWFjcm9zLnByZWxpbmsgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoIFwKKyIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogVEFSR0VUX09TX09SSUcgOj0gIiR7VEFSR0VUX09TfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKaW5kZXggOTEwM2Q0OS4uNzllMGI2YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKQEAgLTgsNyArOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ1JFViA9ICJmZGRiZTg1NGM5ZGIwNThkNWEwNTgzMGQzYmNkZDQyMzNkOTVlZTJlIgorU1JDUkVWID0gIjYyOTRiMzQ0ZTUxNDBmNTQ2N2U2ODYwZjQ1YTE3NDQ0MDAxNTMwNGUiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogUFYgPSAiMS45LjArZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKaW5kZXggMjg0ZjIxMy4uMWI1MWY3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKQEAgLTEwLDggKzEwLDggQEAKICAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotU1JDX1VSSVttZDVzdW1dID0gImUzOTg3OGZhZmIxMTgyODk4M2FlZWM1ODNkZGE0YTA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkYmNkYTE5NGY0OWUwY2YwNjYzZmE4MTMxY2I5ZDdhM2I4NzZkMTRkZWEwMDQ3ZDNjNWZkZmFmMjBhZGJiNDAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTMxODllZTg1MWMzYTBlMmU2ZTRjNmU4MGE3MTFlYzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI0YTAyNzU4ZmI2OGE2NWVhOTg2ZDgwODg2N2YxZDYzODMyMTljMjM0YWVmNTUzYTg3NDE4MThlNzk1YjUyOSIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgpAQCAtNzcsNiArNzcsOCBAQAogCiBTID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCiAKK0NMRUFOQlJPS0VOID0gIjEiCisKICMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCiAjIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCiBkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTQuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xNC41LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTQuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC41LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMTc5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDAxOTQyMmQxOWM2NDAxZmE4ZjQ1YjEzMTFlY2QzMWJiMDg3YzgwOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE3IEp1bCAyMDE4IDEwOjEzOjM4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmRpdGlvbmFsbHkgZG8gbm90IGZldGNoIGNvZGUgYnkgZWFzeV9pbnN0YWxsCisKK0lmIHZhci1OT19GRVRDSF9CVUlMRCBpcyBzZXQsIGRvIG5vdCBhbGxvdyB0byBmZXRjaCBjb2RlIGZyb20KK2ludGVybmV0IGJ5IGVhc3lfaW5zdGFsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weSB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5IGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQoraW5kZXggODVlZTQwZi4uN2ViOWQyYSAxMDA3NTUKKy0tLSBhL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKKysrKyBiL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKK0BAIC02MzcsNiArNjM3LDExIEBAIGNsYXNzIGVhc3lfaW5zdGFsbChDb21tYW5kKToKKyAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyh0bXBkaXIpIGFuZCBybXRyZWUocm10cmVlX3NhZmUodG1wZGlyKSkKKyAKKyAgICAgZGVmIGVhc3lfaW5zdGFsbChzZWxmLCBzcGVjLCBkZXBzPUZhbHNlKToKKysgICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCdOT19GRVRDSF9CVUlMRCcsIE5vbmUpOgorKyAgICAgICAgICAgIGxvZy5lcnJvcigiRVJST1I6IERvIG5vdCB0cnkgdG8gZmV0Y2ggYCVzJyBmb3IgYnVpbGRpbmcuICIKKysgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBhZGQgaXRzIG5hdGl2ZSByZWNpcGUgdG8gREVQRU5EUy4iICUgc3BlYykKKysgICAgICAgICAgICByZXR1cm4gTm9uZQorKworICAgICAgICAgaWYgbm90IHNlbGYuZWRpdGFibGU6CisgICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NpdGVfcHkoKQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV4dHJhcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV4dHJhcy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVlMTFiNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXh0cmFzLmluYwpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIlVzZWZ1bCBleHRyYSBiaXRzIGZvciBQeXRob24gLSB0aGluZ3MgdGhhdCBzaG91bGQgYmUgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2V4dHJhcy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZkMTA4ZjMzOGIyZjY4ZmU0OGFjMzY2YzQ2NTBiZDhiIgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gIjNhNjNhZDYwY2Y4ZjAxODZjOWUzYTAyZjU1ZWM1YjE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzMmUzNmRlMTBiOWM5MWQ1ZDRjYzYyMDE2MGE0NzZlMDQ2OGE4OGYxNmM5NDMxODE3YTY3Mjk2MTFhODFiNGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCmluZGV4IDhkMzc2OTMuLjdjY2YxNjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKQEAgLTEyLDggKzEyLDggQEAKIAogaW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3YTk0ZWUxYjkyM2ZiNzcyYTJhMGM2NjQ5NDMwYTE3YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDYxYmMyNWRlYWRiNTM1YjA0NzY4NGQwNmYzNjU0YzAwMWQ5NDE1ZTE5NzFlNTFjOWMyMGY1YjUxMDA3NmU5IgorU1JDX1VSSVttZDVzdW1dID0gImNlZTQzYTM5YTE0NjgwODRkNDlkMWM0OWZiNjc1MjA0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyMzdkYzViZmQ2ZjEzNjZhYmVlZTU2MjQxMTFiOWQ2ODc5MzkzZDg0NzQ1YTUwN2RlMGZkYTg2MDQzYjY1YTgiCiAKIERFUEVORFMgPSAiJHtQWVRIT05fUE59LWdpdGRiIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCmluZGV4IDJkNTI5MmUuLjc4OWFiOTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCkBAIC04LDggKzgsOCBAQAogCiBQWVBJX1BBQ0tBR0UgPSAiZ2l0ZGIyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZDUyMTdlYjk0ZWJkMzZmY2VjNjJiOTI5ZDFmNzJiMDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjYwZTI5ZDQ1MzNlNWUyNWJiNTBiNzY3OGJiYzE4N2M4ZjZiY2ZmMTM0NGI0ZjI5M2IyYmE1NWM4NTc5NWYwOSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTIxZjU3OTVhMjA0ZjdhZmVjYjBhNzJmZmY2NjkzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYjRjODViOGE1ODUzMWM1MTM3M2M4OWY5MjE2M2I5MmYzMGY4MTM2OTYwNWE2N2NkNTJkMWZjMjEyNDZjMDQ0IgogCiBERVBFTkRTID0gIiR7UFlUSE9OX1BOfS1hc3luYyAke1BZVEhPTl9QTn0tc2V0dXB0b29scy1uYXRpdmUgJHtQWVRIT05fUE59LXNtbWFwIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEyOTVjNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyLmluYwpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlB5dGhvbiBCdWlsZCBSZWFzb25hYmxlbmVzcyIKK0RFU0NSSVBUSU9OID0gIlBCUiBpcyBhIGxpYnJhcnkgdGhhdCBpbmplY3RzIHNvbWUgdXNlZnVsIGFuZCBzZW5zaWJsZSBkZWZhdWx0IGJlaGF2aW9ycyBpbnRvIHlvdXIgc2V0dXB0b29scyBydW4iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BiciIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWRlY2U3ODIxYmYzZmQ3MGZlMTMwOWVhYTM3ZDUyYTIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NjE5NzgwODk2Y2E4MWM3Y2QxOWM2ZTJmNDM5YjZjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjhiZTUwZDkzOGM5YmI3NWQwZWFmN2VkYTExMWVlYzFiZjZkYzg4YTYyYTY0MTJlMzNiZjA3NzQ1N2UwZjQ1IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1waXAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCmluZGV4IDc0NzA2YmYuLjMxNWJhMzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwpAQCAtMiwyNyArMiwxOSBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zZXR1cHRvb2xzIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKLQogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT05YTMzODk3ZjFiY2ExMTYwZDdhYWQzODM1MTUyZTE1OCIKIAogUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCiAKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiMzc5NjQyYTRmMTcyMTQwNzFmZGMxODk0MjU1ZDhkMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTRkYzU2NjI0N2YzNTAwOWVkNDJjMGY0NDIyZjJiNGYwYTAzMmZhYjEzNzJjODMwOGI4NjRjOGYyNmQ5MzM4OCIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNjA2MzBhZTFhNjRiYWZhMzlkY2M1MzQwNGQ2MzgyOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMTJhZGI4ZTI1ZmJmZDY0YzY1MmU5OWU3YmFiNTg3OTlhM2FhZjA1ZDM5YWIzODU2MWY2OTE5MGE5MDkwMTVmIgogCiBERVBFTkRTICs9ICIke1BZVEhPTl9QTn0iCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAiJHtQWVRIT05fUE59LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstJHtQWVRIT05fUE59IgogCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtLXNjcmlwdC1kaXI9JHtiaW5kaXJ9IgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiXAotICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKLSAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKLSIKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgJHtQWVRIT05fUE59LWNvbXBpbGUgXAogICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXApAQCAtNDAsNyArMzIsNiBAQAogICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAogICAke1BZVEhPTl9QTn0teG1sIFwKICIKLQogZG9faW5zdGFsbF9wcmVwZW5kKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzkuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQwLjAuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM5LjAuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQwLjAuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdWJ1bml0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VidW5pdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZhYWE1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VidW5pdC5pbmMKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3VidW5pdCB0ZXN0IHN0cmVhbWluZyBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0aG9uLXN1YnVuaXQvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTkwOWMwOGUyOTE2NDdmZDk4NWZiZTVkOTgzNmQ1MWI2IgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLXN1YnVuaXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNmQ0NjhhM2FlYWZlNmM2MGEwYzNiMmI5MTMyZDY1YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjA3ZWRiZWU0YzFlNWEzMGZmODg1NDljZThkOWZlYjBiOWJjYmNiNWU1NTAzM2E5ZDc2ZTg2MDc1NDY1Y2JiIgorCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRlc3R0b29scy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRlc3R0b29scy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAxMWM5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVzdHRvb2xzLmluYwpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkV4dGVuc2lvbnMgdG8gdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3Rlc3R0b29scy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUyYzlkM2U4YmE3MTQxYzgzYmZlZjE5MGUwYjkzNzlhIgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gIjBmMGZlYjkxNTQ5NzgxNmNiOTllMzk0Mzc0OTQyMTdlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4MjdlYzZjZjgyMzNlMGYyOWY1MTAyNWFkZGQ3MTNjYTAxMDA2MTIwNGZkZWE3NzQ4NGEyOTM0NjkwYTA1NTkiCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXBiciBcCisgICAgIgorCisjIFNhdGlzZnkgc2V0dXAucHkgJ3NldHVwX3JlcXVpcmVzJworREVQRU5EUyArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcGJyLW5hdGl2ZSBcCisgICAgIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1leHRyYXMgXAorICAgICR7UFlUSE9OX1BOfS1wYnIgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCmluZGV4IDA2MmEyMGYuLjY2OTIzNjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCkBAIC03LDcgKzcsMTMgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjI1N2NjMTRmODE2ODU2OTE2NTJhM2QzZTFiNWQ3NTQiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1icG8tMzQ4MTgtQWRkLW1pc3NpbmctY2xvc2luZy13cmFwcGVyLWluLXRlc3RfdGxzMV8zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtYnBvLTM0ODM0LUZpeC10ZXN0X3NzbC50ZXN0X29wdGlvbnMtdG8tYWNjb3VudC1mb3ItTy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWJwby0zNDgzNi1maXgtdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUtbmVlZHMtbm8tdGxzdjEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1icG8tMzMzNTQtRml4LXRlc3Rfc3NsLXdoZW4tYS1maWxlbmFtZS1jYW5ub3QtYmUtZW5jLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYTgwYWUzY2M0Nzg0NjBiOTIyMjQyZjQzYTFiNDA5NGQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjJkOWIxYWM1YjI2MTM1YWQyYjhjMjkwMWE5NDEzNTM3ZTA4NzQ5YTc1MzM1NmVlOTEzYzg0ZGJkMmRmNTU3NCIKQEAgLTMzLDYgKzM5LDEyIEBACiAgICR7UFlUSE9OTFNCT1BUU30gXAogIgogCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlsaWJkaXJsZWFmPSIkKGVjaG8gJHtsaWJkaXJ9IHwgc2VkIC1lICdzOiR7cHJlZml4fS86OicpIgorCXNlZCAtaSAtZSAiczpTRURNRUxJQkxFQUY6JHtsaWJkaXJsZWFmfTpnIiBcCisJCSR7U30vY29uZmlndXJlLmFjCit9CisKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9pbnN0YWxsOmluc3RhbGw6ZycgXAogCQktZSAnczoke0hPU1RUT09MU19ESVJ9L21rZGlyOm1rZGlyOmcnIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS0yLjctYnBvLTM0NjIzLVVzZS1YTUxfU2V0SGFzaFNhbHQtaW4tX2VsZW1lbnR0cmVlLUdILnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLTIuNy1icG8tMzQ2MjMtVXNlLVhNTF9TZXRIYXNoU2FsdC1pbi1fZWxlbWVudHRyZWUtR0gucGF0Y2gKaW5kZXggNDJjNjRjYS4uM2MwZDY2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLTIuNy1icG8tMzQ2MjMtVXNlLVhNTF9TZXRIYXNoU2FsdC1pbi1fZWxlbWVudHRyZWUtR0gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLTIuNy1icG8tMzQ2MjMtVXNlLVhNTF9TZXRIYXNoU2FsdC1pbi1fZWxlbWVudHRyZWUtR0gucGF0Y2gKQEAgLTE5LDkgKzE5LDcgQEAKIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ2MjMKIAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1GaXggQ1ZFLTIwMTgtMTQ2NDcKLQorQ1ZFOiBDVkUtMjAxOC0xNDY0NwogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogLS0tCiAgSW5jbHVkZS9weWV4cGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKystCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtYnBvLTMzMzU0LUZpeC10ZXN0X3NzbC13aGVuLWEtZmlsZW5hbWUtY2Fubm90LWJlLWVuYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1icG8tMzMzNTQtRml4LXRlc3Rfc3NsLXdoZW4tYS1maWxlbmFtZS1jYW5ub3QtYmUtZW5jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMGIzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtYnBvLTMzMzU0LUZpeC10ZXN0X3NzbC13aGVuLWEtZmlsZW5hbWUtY2Fubm90LWJlLWVuYy5wYXRjaApAQCAtMCwwICsxLDU1IEBACitGcm9tIDE5ZjZiZDA2YWYzYzdmYzBkYjVmOTY4NzhhYWE2OGY1NTg5ZmYxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYWJsbyBHYWxpbmRvIDxQYWJsb2dzYWxAZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNCBNYXkgMjAxOCAyMzoyMDo0NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBicG8tMzMzNTQ6IEZpeCB0ZXN0X3NzbCB3aGVuIGEgZmlsZW5hbWUgY2Fubm90IGJlIGVuY29kZWQKKyAoR0gtNjYxMykKKworU2tpcCB0ZXN0X2xvYWRfZGhfcGFyYW1zKCkgb2YgdGVzdF9zc2wgd2hlbiBQeXRob24gZmlsZXN5c3RlbSBlbmNvZGluZworY2Fubm90IGVuY29kZSB0aGUgcHJvdmlkZWQgcGF0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8xOWY2YmQwNmFmM2M3ZmMwZGI1Zjk2ODc4YWFhNjhmNTU4OWZmMTNlXQorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KKyAuLi4vbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0ICB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0CisKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCBiNTlmZTczZjA0Li43Y2VkOTBmZGY2IDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtOTg5LDYgKzk4OSwxMyBAQCBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorIAorIAorICAgICBkZWYgdGVzdF9sb2FkX2RoX3BhcmFtcyhzZWxmKToKKysgICAgICAgIGZpbGVuYW1lID0gdSdkaHDDpHLDpG0ucGVtJworKyAgICAgICAgZnNfZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKysgICAgICAgIHRyeToKKysgICAgICAgICAgICBmaWxlbmFtZS5lbmNvZGUoZnNfZW5jb2RpbmcpCisrICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZpbGVuYW1lICVyIGNhbm5vdCBiZSBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICVyIiAlIChmaWxlbmFtZSwgZnNfZW5jb2RpbmcpKQorKworICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKERIRklMRSkKKyAgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKK0BAIC0xMDAxLDcgKzEwMDgsNyBAQCBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhDRVJURklMRSkKKyAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CistICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oZCwgdSdkaHDDpHLDpG0ucGVtJykKKysgICAgICAgICAgICBmbmFtZSA9IG9zLnBhdGguam9pbihkLCBmaWxlbmFtZSkKKyAgICAgICAgICAgICBzaHV0aWwuY29weShESEZJTEUsIGZuYW1lKQorICAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhmbmFtZSkKKyAKK2RpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDQtMjYtMjItMzktMTcuYnBvLTMzMzU0LmczNS00NC5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDQtMjYtMjItMzktMTcuYnBvLTMzMzU0LmczNS00NC5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5jNjZjZWNhYzMyCistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDQtMjYtMjItMzktMTcuYnBvLTMzMzU0LmczNS00NC5yc3QKK0BAIC0wLDAgKzEsMiBAQAorK1NraXAgYGB0ZXN0X3NzbC50ZXN0X2xvYWRfZGhfcGFyYW1zYGAgd2hlbiBQeXRob24gZmlsZXN5c3RlbSBlbmNvZGluZyBjYW5ub3QgZW5jb2RlIHRoZQorK3Byb3ZpZGVkIHBhdGguCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtYnBvLTMzNTcwLVRMUy0xLjMtY2lwaGVycy1mb3ItT3BlblNTTC0xLjEuMS1HSC02OTc2LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1icG8tMzM1NzAtVExTLTEuMy1jaXBoZXJzLWZvci1PcGVuU1NMLTEuMS4xLUdILTY5NzYtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNzA1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtYnBvLTMzNTcwLVRMUy0xLjMtY2lwaGVycy1mb3ItT3BlblNTTC0xLjEuMS1HSC02OTc2LS5wYXRjaApAQCAtMCwwICsxLDEyMCBAQAorRnJvbSBhMzMzMzUxNTkyZjA5NzIyMGZjODYyOTExYjM0ZDNhMzAwZjA5ODVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CitEYXRlOiBXZWQsIDE1IEF1ZyAyMDE4IDA5OjA3OjI4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBicG8tMzM1NzA6IFRMUyAxLjMgY2lwaGVycyBmb3IgT3BlblNTTCAxLjEuMSAoR0gtNjk3NikKKyAoR0gtODc2MCkKKworQ2hhbmdlIFRMUyAxLjMgY2lwaGVyIHN1aXRlIHNldHRpbmdzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTAorMS4xLjEtcHJlNiBhbmQgbmV3ZXIuIE9wZW5TU0wgMS4xLjEgd2lsbCBoYXZlIFRMUyAxLjMgY2lwZXJzIGVuYWJsZWQgYnkKK2RlZmF1bHQuCisKK0Fsc28gdXBkYXRlIG11bHRpc3NsdGVzdHMgdG8gdGVzdCB3aXRoIGxhdGVzdCBPcGVuU1NMLgorCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4uCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAzZTYzMGM1NDFiMzVjOTZiZmU1NjE5MTY1MjU1ZTU1OWY1NzdlZTcxKQorCitDby1hdXRob3JlZC1ieTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzg3NzFdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBEb2MvbGlicmFyeS9zc2wucnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKy0tCisgTGliL3Rlc3QvdGVzdF9zc2wucHkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzcgKysrKysrKysrKystLS0tLS0tLQorIC4uLi8yMDE4LTA1LTE4LTIxLTUwLTQ3LmJwby0zMzU3MC43Q1p5NHQucnN0ICB8ICAzICsrCisgMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDUtMTgtMjEtNTAtNDcuYnBvLTMzNTcwLjdDWnk0dC5yc3QKKworZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitpbmRleCAwNDIxMDMxNzcyLi43YzdjODViODMzIDEwMDY0NAorLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdAorQEAgLTI5NCwxMSArMjk0LDYgQEAgcHVycG9zZXMuCisgCisgICAgICAzREVTIHdhcyBkcm9wcGVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KKyAKKy0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNy4xNQorLQorLSAgICAgVExTIDEuMyBjaXBoZXIgc3VpdGVzIFRMU19BRVNfMTI4X0dDTV9TSEEyNTYsIFRMU19BRVNfMjU2X0dDTV9TSEEzODQsCistICAgICBhbmQgVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiB3ZXJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGNpcGhlciBzdHJpbmcuCistCisgLi4gZnVuY3Rpb246OiBfaHR0cHNfdmVyaWZ5X2NlcnRpZmljYXRlcyhlbmFibGU9VHJ1ZSkKKyAKKyAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3Qgc2VydmVyIGNlcnRpZmljYXRlcyBhcmUgdmVyaWZpZWQgd2hlbiBjcmVhdGluZworQEAgLTExNzksNiArMTE3NCw5IEBAIHRvIHNwZWVkIHVwIHJlcGVhdGVkIGNvbm5lY3Rpb25zIGZyb20gdGhlIHNhbWUgY2xpZW50cy4KKyAgICAgICB3aGVuIGNvbm5lY3RlZCwgdGhlIDptZXRoOmBTU0xTb2NrZXQuY2lwaGVyYCBtZXRob2Qgb2YgU1NMIHNvY2tldHMgd2lsbAorICAgICAgIGdpdmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIuCisgCisrICAgICAgT3BlblNTTCAxLjEuMSBoYXMgVExTIDEuMyBjaXBoZXIgc3VpdGVzIGVuYWJsZWQgYnkgZGVmYXVsdC4gVGhlIHN1aXRlcworKyAgICAgIGNhbm5vdCBiZSBkaXNhYmxlZCB3aXRoIDptZXRoOmB+U1NMQ29udGV4dC5zZXRfY2lwaGVyc2AuCisrCisgLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMocHJvdG9jb2xzKQorIAorICAgIFNwZWNpZnkgd2hpY2ggcHJvdG9jb2xzIHRoZSBzb2NrZXQgc2hvdWxkIGFkdmVydGlzZSBkdXJpbmcgdGhlIFNTTC9UTFMKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCBkYzE0ZTIyYWQxLi5mNTE1NzJlMzE5IDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtMjc3MiwxOSArMjc3MiwyNCBAQCBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgc29jay5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PVENPTk4pCisgCistICAgICAgICBkZWYgdGVzdF9kZWZhdWx0X2NpcGhlcnMoc2VsZik6CistICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCistICAgICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgICAgICAjIEZvcmNlIGEgc2V0IG9mIHdlYWsgY2lwaGVycyBvbiBvdXIgY2xpZW50IGNvbnRleHQKKy0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycygiREVTIikKKy0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yOgorLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyBERVMgY2lwaGVyIGF2YWlsYWJsZSIpCistICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UpIGFzIHNlcnZlcjoKKy0gICAgICAgICAgICAgICAgd2l0aCBjbG9zaW5nKGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSkgYXMgczoKKy0gICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKy0gICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKysgICAgICAgIGRlZiB0ZXN0X25vX3NoYXJlZF9jaXBoZXJzKHNlbGYpOgorKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKysgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFKQorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKysgICAgICAgICAgICBjbGllbnRfY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisrCisrICAgICAgICAgICAgIyBPcGVuU1NMIGVuYWJsZXMgYWxsIFRMUyAxLjMgY2lwaGVycywgZW5mb3JjZSBUTFMgMS4yIGZvciB0ZXN0CisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMworKyAgICAgICAgICAgICMgRm9yY2UgZGlmZmVyZW50IHN1aXRlcyBvbiBjbGllbnQgYW5kIG1hc3RlcgorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVMxMjgiKQorKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVMyNTYiKQorKyAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9c2VydmVyX2NvbnRleHQpIGFzIHNlcnZlcjoKKysgICAgICAgICAgICAgICAgcyA9IGNsaWVudF9jb250ZXh0LndyYXBfc29ja2V0KAorKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9ImxvY2FsaG9zdCIpCisrICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKysgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vIHNoYXJlZCBjaXBoZXIiLCBzdHIoc2VydmVyLmNvbm5fZXJyb3JzWzBdKSkKKyAKKyAgICAgICAgIGRlZiB0ZXN0X3ZlcnNpb25fYmFzaWMoc2VsZik6CitAQCAtMjgxNSw5ICsyODIwLDkgQEAgZWxzZToKKyAgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzLmNpcGhlcigpWzBdLCBbCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0yNTYtR0NNLVNIQTM4NCcsCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NicsCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0xMjgtR0NNLVNIQTI1NicsCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMU19BRVNfMjU2X0dDTV9TSEEzODQnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICdUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2JywKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTX0FFU18xMjhfR0NNX1NIQTI1NicsCisgICAgICAgICAgICAgICAgICAgICBdKQorIAorICAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAidGVzdCByZXF1aXJlcyBFQ0RILWVuYWJsZWQgT3BlblNTTCIpCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDUtMTgtMjEtNTAtNDcuYnBvLTMzNTcwLjdDWnk0dC5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0xOC0yMS01MC00Ny5icG8tMzM1NzAuN0NaeTR0LnJzdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmJkNzE5YTQ3ZTgKKy0tLSAvZGV2L251bGwKKysrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTE4LTIxLTUwLTQ3LmJwby0zMzU3MC43Q1p5NHQucnN0CitAQCAtMCwwICsxLDMgQEAKKytDaGFuZ2UgVExTIDEuMyBjaXBoZXIgc3VpdGUgc2V0dGluZ3MgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPcGVuU1NMCisrMS4xLjEtcHJlNiBhbmQgbmV3ZXIuIE9wZW5TU0wgMS4xLjEgd2lsbCBoYXZlIFRMUyAxLjMgY2lwZXJzIGVuYWJsZWQgYnkKKytkZWZhdWx0LgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWNsb3Nlcy1icG8tMzQ1NDAtQ29udmVydC1zaHV0aWwuX2NhbGxfZXh0ZXJuYWxfemlwLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtY2xvc2VzLWJwby0zNDU0MC1Db252ZXJ0LXNodXRpbC5fY2FsbF9leHRlcm5hbF96aXAtdC5wYXRjaAppbmRleCBlNmZlNWYyLi4xMjVkYjg1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtY2xvc2VzLWJwby0zNDU0MC1Db252ZXJ0LXNodXRpbC5fY2FsbF9leHRlcm5hbF96aXAtdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtY2xvc2VzLWJwby0zNDU0MC1Db252ZXJ0LXNodXRpbC5fY2FsbF9leHRlcm5hbF96aXAtdC5wYXRjaApAQCAtNSw5ICs1LDcgQEAKICBzdWJwcm9jZXNzIHJhdGhlciB0aGFuIGRpc3R1dGlscy5zcGF3bi4gKEdILTg5ODUpCiAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRml4IENWRS0yMDE4LTEwMDA4MDIKLQorQ1ZFOiBDVkUtMjAxOC0xMDAwODAyCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiAtLS0KICBMaWIvc2h1dGlsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKystLS0tLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMi1icG8tMzQ4MTgtQWRkLW1pc3NpbmctY2xvc2luZy13cmFwcGVyLWluLXRlc3RfdGxzMV8zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAyLWJwby0zNDgxOC1BZGQtbWlzc2luZy1jbG9zaW5nLXdyYXBwZXItaW4tdGVzdF90bHMxXzMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY4ODI3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMi1icG8tMzQ4MTgtQWRkLW1pc3NpbmctY2xvc2luZy13cmFwcGVyLWluLXRlc3RfdGxzMV8zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMGUxZjM4NTZhN2UxNTExZmI2NGQ5OTY0NmM1NGRkZjM4OTdjZDQ0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpbWl0cmkgSm9obiBMZWRrb3YgPHhub3hAdWJ1bnR1LmNvbT4KK0RhdGU6IEZyaSwgMjggU2VwIDIwMTggMTQ6MTU6NTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGJwby0zNDgxODogQWRkIG1pc3NpbmcgY2xvc2luZygpIHdyYXBwZXIgaW4gdGVzdF90bHMxXzMuCisKK1B5dGhvbiAyLjcgc29ja2V0IGNsYXNzZXMgZG8gbm90IGltcGxlbWVudCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wsCitoZW5jZSBjbG9zaW5nKCkgaXMgcmVxdWlyZWQgYXJvdW5kIGl0LiBSZXNvbHZlcyB0ZXN0Y2FzZSBlcnJvcgordHJhY2ViYWNrLgorCitTaWduZWQtb2ZmLWJ5OiBEaW1pdHJpIEpvaG4gTGVka292IDx4bm94QHVidW50dS5jb20+CisKK2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ4MTgKKworUGF0Y2ggdGFrZW4gZnJvbSBVYnVudHUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC85NjIyXQorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQoraW5kZXggZjUxNTcyZTMxOS4uN2ExNDA1M2NlZSAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQorQEAgLTI4MTcsNyArMjgxNyw3IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgIHNzbC5PUF9OT19UTFN2MSB8IHNzbC5PUF9OT19UTFN2MV8xIHwgc3NsLk9QX05PX1RMU3YxXzIKKyAgICAgICAgICAgICApCisgICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoY29udGV4dD1jb250ZXh0KSBhcyBzZXJ2ZXI6CistICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisrICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocy5jaXBoZXIoKVswXSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICdUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0JywKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMy1icG8tMzQ4MzQtRml4LXRlc3Rfc3NsLnRlc3Rfb3B0aW9ucy10by1hY2NvdW50LWZvci1PLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAzLWJwby0zNDgzNC1GaXgtdGVzdF9zc2wudGVzdF9vcHRpb25zLXRvLWFjY291bnQtZm9yLU8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcwMTZjYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMy1icG8tMzQ4MzQtRml4LXRlc3Rfc3NsLnRlc3Rfb3B0aW9ucy10by1hY2NvdW50LWZvci1PLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gOGIwNmQ1NmQyNmVlZTI4OWZlYzIyYjliNzJhYjRjN2NjM2Q2YzQ4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpbWl0cmkgSm9obiBMZWRrb3YgPHhub3hAdWJ1bnR1LmNvbT4KK0RhdGU6IEZyaSwgMjggU2VwIDIwMTggMTY6MzQ6MTYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGJwby0zNDgzNDogRml4IHRlc3Rfc3NsLnRlc3Rfb3B0aW9ucyB0byBhY2NvdW50IGZvcgorIE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFULgorCitTaWduZWQtb2ZmLWJ5OiBEaW1pdHJpIEpvaG4gTGVka292IDx4bm94QHVidW50dS5jb20+CisKK2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ4MzQKKworUGF0Y2ggdGFrZW4gZnJvbSBVYnVudHUuCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvOTYyNF0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5IHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IDdhMTQwNTNjZWUuLmVmYzkwNmE1YmEgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC03NzcsNiArNzc3LDExIEBAIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCisgICAgICAgICBpZiBub3QgSVNfTElCUkVTU0wgYW5kIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMSwgMCk6CisgICAgICAgICAgICAgZGVmYXVsdCB8PSBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKysgICAgICAgIGlmIG5vdCBJU19MSUJSRVNTTCBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAxLCAxKToKKysgICAgICAgICAgICAjIGRlZmluZSBNSURETEVCT1ggY29uc3RhbnQsIGFzIHB5dGhvbjIuNyBkb2VzIG5vdCBrbm93IGFib3V0IGl0CisrICAgICAgICAgICAgIyBidXQgaXQgaXMgdXNlZCBieSBkZWZhdWx0LgorKyAgICAgICAgICAgIE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUID0gMTA0ODU3NkwKKysgICAgICAgICAgICBkZWZhdWx0IHw9IE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQsIGN0eC5vcHRpb25zKQorICAgICAgICAgY3R4Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDA0LWJwby0zNDgzNi1maXgtdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUtbmVlZHMtbm8tdGxzdjEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDQtYnBvLTM0ODM2LWZpeC10ZXN0X2RlZmF1bHRfZWNkaF9jdXJ2ZS1uZWVkcy1uby10bHN2MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWUxYmNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDA0LWJwby0zNDgzNi1maXgtdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUtbmVlZHMtbm8tdGxzdjEucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA5NDZhNzk2OTM0NWM2Njk3Njk3ZWZmZDIyNmVjMzk2ZDNmZWEwNWI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGltaXRyaSBKb2huIExlZGtvdiA8eG5veEB1YnVudHUuY29tPgorRGF0ZTogRnJpLCAyOCBTZXAgMjAxOCAxNzozMDoxOSArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNF0gYnBvLTM0ODM2OiBmaXggdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUsIG5lZWRzIG5vIHRsc3YxLjMuCisKK1NpZ25lZC1vZmYtYnk6IERpbWl0cmkgSm9obiBMZWRrb3YgPHhub3hAdWJ1bnR1LmNvbT4KKworaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNDgzNgorCitQYXRjaCB0YWtlbiBmcm9tIFVidW50dS4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC85NjI2XQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgTGliL3Rlc3QvdGVzdF9zc2wucHkgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IGVmYzkwNmE1YmEuLjRhMzI4NmNkNWYgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC0yODM2LDYgKzI4MzYsOSBAQCBlbHNlOgorICAgICAgICAgICAgICMgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBTU0wgY29udGV4dHMuCisgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisrICAgICAgICAgICAgIyBUTFN2MS4zIGRlZmF1bHRzIHRvIFBGUyBrZXkgYWdyZWVtZW50IGFuZCBubyBsb25nZXIgaGFzIEtFQSBpbgorKyAgICAgICAgICAgICMgY2lwaGVyIG5hbWUuCisrICAgICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8zCisgICAgICAgICAgICAgIyBQcmlvciB0byBPcGVuU1NMIDEuMC4wLCBFQ0RIIGNpcGhlcnMgaGF2ZSB0byBiZSBlbmFibGVkCisgICAgICAgICAgICAgIyBleHBsaWNpdGx5IHVzaW5nIHRoZSAnRUNDZHJhZnQnIGNpcGhlciBhbGlhcy4gIE90aGVyd2lzZSwKKyAgICAgICAgICAgICAjIG91ciBkZWZhdWx0IGNpcGhlciBsaXN0IHNob3VsZCBwcmVmZXIgRUNESC1iYXNlZCBjaXBoZXJzCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKaW5kZXggMWFmMTQ0My4uODc5OTk5OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weQpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlcywgd2UgYXNzdW1lIHRoYXQgd2hlbiB0aGV5IHdlcmUgbWFudWFsbHkgYWRkZWQgCiAgICAgIyB0byB0aGUgbWFuaWZlc3Qgd2Uga25ldyB3aGF0IHdlIHdlcmUgZG9pbmcuCiAgICAgcHJpbnQgKCdIYW5kbGluZyBwYWNrYWdlICVzJyAlIGtleSkKLSAgICBzcGVjaWFsX3BhY2thZ2VzPVsnbWlzYycsICdtb2R1bGVzJywgJ2RldiddCisgICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICd0ZXN0cycsICdkZXYnXQogICAgIGlmIGtleSBpbiBzcGVjaWFsX3BhY2thZ2VzIG9yICdzdGF0aWNkZXYnIGluIGtleToKICAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBrZXkpCiAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldPW9sZF9tYW5pZmVzdFtrZXldCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAppbmRleCAxMTE2ZGQ1Li5kMjRiYzE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKQEAgLTExLDcgKzExLDcgQEAKICAKICtBQ19TVUJTVChMSUIpCiArQUNfTVNHX0NIRUNLSU5HKExJQikKLStMSUI9YGJhc2VuYW1lICR7bGliZGlyfWAKKytMSUI9IlNFRE1FTElCTEVBRiIKICtBQ19NU0dfUkVTVUxUKCRMSUIpCiAgCiAgQUNfU1VCU1QoTElCUkFSWSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KaW5kZXggMWU3MDA0ZS4uMjYwZmE2ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KQEAgLTEsMTggKzEsMTggQEAKIHsKICAgICAidGVzdHMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0IHN1aXRlIiwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3Qgc3VpdGUiLCAKICAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNvcmUiLCAKICAgICAgICAgICAgICJtb2R1bGVzIgotICAgICAgICBdLAorICAgICAgICBdLCAKICAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvKi90ZXN0IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdHMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYi9pZGxlX3Rlc3QvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdCIsIAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvKi90ZXN0cyIsIAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYi9pZGxlX3Rlc3QvIiwgCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXN0IgotICAgICAgICBdLAorICAgICAgICBdLCAKICAgICAgICAgImNhY2hlZCI6IFtdCi0gICAgfSwKKyAgICB9LCAKICAgICAiMnRvMyI6IHsKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsIAogICAgICAgICAicmRlcGVuZHMiOiBbCkBAIC04ODEsMTAgKzg4MSwxMiBAQAogICAgICJzcWxpdGUzIjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgCiAgICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgorICAgICAgICAgICAgImNvcmUiLCAKKyAgICAgICAgICAgICJkYXRldGltZSIKICAgICAgICAgXSwgCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zcWxpdGUzLnNvIgorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NxbGl0ZTMuc28iLCAKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMiCiAgICAgICAgIF0KICAgICB9LCAKICAgICAic3RyaW5nb2xkIjogewpAQCAtMTA0MSw0ICsxMDQzLDQgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3psaWIuc28iCiAgICAgICAgIF0KICAgICB9Ci19Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5Y2JhZTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMDMyNDA1MTg5OTRkZjZkOGM5NzQ2NzU2NzVlNWNhNCIKLURFUEVORFMgPSAiZXhwYXQgZGJ1cyBkYnVzLWdsaWIgdmlydHVhbC9saWJpbnRsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3ogXAotIgotCi1SU1JDX1VSSVttZDVzdW1dID0gIjFjZTFkZGYyNTgyMDYwZjhmOTcxNjUyZWE1NGNjMTdlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyZjI5YzE3MTcyY2RiOWNiNjFjNjhiMWYxYTcxZGZlNzM1MTUwNmZjODMwODY5MDI5YzQ3NDQ5YmQwNGZhZWIiCi1TID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tkb2NzXSA9ICItLWVuYWJsZS1odG1sLWRvY3MsLS1kaXNhYmxlLWh0bWwtZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbYXBpLWRvY3NdID0gIi0tZW5hYmxlLWFwaS1kb2NzLC0tZGlzYWJsZS1hcGktZG9jcyxweXRob24zLWRvY3V0aWxzLW5hdGl2ZSBweXRob24zLWVweWRvYy1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtaW8gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMteG1sIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWJmOGRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuOC5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQiCitERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjczNzlkYjc3NGMxMDkwNGYyN2U3ZTI3NDNkOTBmYjQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiZjEyYmJiNzY1ZTMwMGJmOGUyYTFiMmYzMmY4NTk0OWVhYjA2OTk4ZGJkYTEyNzk1MmMzMWNiNjM5NTdiNmYiCitTID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKKworIyBkb2N1bWVudGF0aW9uIG5lZWRzIHB5dGhvbjMtc3BoaW54LCB3aGljaCBpcyBub3QgaW4gb2UtY29yZSBvciBtZXRhLXB5dGhvbiBmb3Igbm93CisjIGNoYW5nZSB0byB1c2UgUEFDS0FHRUNPTkZJRyB3aGVuIHB5dGhvbjMtc3BoaW54IGlzIGFkZGVkIHRvIG9lLWNvcmUKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCisKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1pbyBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy14bWwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV4dHJhc18xLjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV4dHJhc18xLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmY4N2YyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXh0cmFzXzEuMC4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZXh0cmFzLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS44LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjExLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA5ODAyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotUFlUSE9OX01BSk1JTiA9ICIzLjUiCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLWZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCi1maWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAotZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi1maWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLWZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAotZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLWZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLWZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAotZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCi1maWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKLWZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAotZmlsZTovL3JlZ2VuLWFsbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMzc2M2VkZjk4MjRkNWQzYTE1ZjVmNjQ2MDgzYjZlMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjNkMmMzYjA0MDJkNjE5MWI5MDczMWUwZjczNWM2NDgzMGU3NTIyMzQ4YWViN2VkMzgyYTgzMTY1ZDQ1MDA5IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNmVjNTE1YjIyNjE4ZjU1ZmEwNzI3NmI4OTdiYWNlYSIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSBnZGJtLW5hdGl2ZSIKLQotaW5oZXJpdCBuYXRpdmUKLQotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotICBMSUI9JHtiYXNlbGlifSBcCi0gIEFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotJwotCi0jIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCi1QWVRIT05MU0JPUFRTID0gIiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi0Jc2VkIC1pIC1lICdzLCNkZWZpbmUgSEFWRV9HRVRSQU5ET00gMSwvXCogI3VuZGVmIEhBVkVfR0VUUkFORE9NIFwqLywnICR7Qn0vcHljb25maWcuaAotfQotCi0jIFJlZ2VuZXJhdGUgYWxsIG9mIHRoZSBnZW5lcmF0ZWQgZmlsZXMKLSMgVGhpcyBlbnN1cmVzIHRoYXQgcGdlbiBhbmQgZnJpZW5kcyBnZXQgY3JlYXRlZCBkdXJpbmcgdGhlIGNvbXBpbGUgcGhhc2UKLSMKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIEFzc3VtaW5nIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzMwODAgaGFzIGJlZW4gYWRkcmVzc2VkIGluIE1ha2VmaWxlLgotICAgIG9lX3J1bm1ha2UgcmVnZW4tYWxsCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0gICAgICAgICMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCi0gICAgICAgICMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotICAgICAgICAjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLSAgICAgICAgIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgotICAgICAgICBsbiAtcyBweXRob24zLW5hdGl2ZS9weXRob24zICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uMwotfQotCi1weXRob24oKXsKLQotICAgICMgUmVhZCBKU09OIG1hbmlmZXN0Ci0gICAgaW1wb3J0IGpzb24KLSAgICBweXRob25kaXIgPSBkLmdldFZhcignVEhJU0RJUicsVHJ1ZSkKLSAgICB3aXRoIG9wZW4ocHl0aG9uZGlyKycvcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCi0KLSAgICBycHJvdmlkZXMgPSBkLmdldFZhcignUlBST1ZJREVTJykuc3BsaXQoKQotCi0gICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24zLW5hdGl2ZS1mb28sIHNob3VsZCBiZSBweXRob24zLWZvby1uYXRpdmUKLSAgICBwbiA9ICdweXRob24zJwotCi0gICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6Ci0gICAgICAgIHB5cGFja2FnZSA9IHBuICsgJy0nICsga2V5ICsgJy1uYXRpdmUnCi0gICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcnByb3ZpZGVzOgotICAgICAgICAgICAgICBycHJvdmlkZXMuYXBwZW5kKHB5cGFja2FnZSkKLQotICAgIGQuc2V0VmFyKCdSUFJPVklERVMnLCAnICcuam9pbihycHJvdmlkZXMpKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1OTUzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjYuYmIKQEAgLTAsMCArMSwxMDAgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy5pbmMKKworRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAorZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCitmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAorZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKK2ZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKK2ZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAorZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCitmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKK2ZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAorZmlsZTovL3JlZ2VuLWFsbC5wYXRjaCBcCitmaWxlOi8vMDAwMS1Jc3N1ZS0yODA0My1TU0xDb250ZXh0LWhhcy1pbXByb3ZlZC1kZWZhdWx0LXNldHRpbmdzLnBhdGNoIFwKK2ZpbGU6Ly8wMDAyLWJwby0yOTEzNi1BZGQtVExTLTEuMy1jaXBoZXItc3VpdGVzLWFuZC1PUF9OT19UTFN2MV8ucGF0Y2ggXAorZmlsZTovLzAwMDMtYnBvLTMyOTQ3LUZpeGVzLWZvci1UTFMtMS4zLWFuZC1PcGVuU1NMLTEuMS4xLUdILTg3Ni5wYXRjaCBcCitmaWxlOi8vMDAwNC1icG8tMzM1NzAtVExTLTEuMy1jaXBoZXJzLWZvci1PcGVuU1NMLTEuMS4xLUdILTY5NzYucGF0Y2ggXAorZmlsZTovLzAwMDUtYnBvLTMwNzE0LUFMUE4tY2hhbmdlcy1mb3ItT3BlblNTTC0xLjEuMGYtMjMwNS5wYXRjaCBcCisiCisKK0VYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgorREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGdkYm0tbmF0aXZlIgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisgIExJQj0ke2Jhc2VsaWJ9IFwKKyAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisnCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorCXNlZCAtaSAtZSAncywjZGVmaW5lIEhBVkVfR0VUUkFORE9NIDEsL1wqICN1bmRlZiBIQVZFX0dFVFJBTkRPTSBcKi8sJyAke0J9L3B5Y29uZmlnLmgKK30KKworIyBSZWdlbmVyYXRlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzCisjIFRoaXMgZW5zdXJlcyB0aGF0IHBnZW4gYW5kIGZyaWVuZHMgZ2V0IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb21waWxlIHBoYXNlCisjCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBBc3N1bWluZyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzMDgwIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiBNYWtlZmlsZS4KKyAgICBvZV9ydW5tYWtlIHJlZ2VuLWFsbAorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQorCWZpCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59CisJaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KKworCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisJZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbworCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAorCWRvbmUKKworICAgICAgICAjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQorICAgICAgICAjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKKyAgICAgICAgIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCisgICAgICAgICMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KKyAgICAgICAgbG4gLXMgcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbjMKK30KKworcHl0aG9uKCl7CisKKyAgICAjIFJlYWQgSlNPTiBtYW5pZmVzdAorICAgIGltcG9ydCBqc29uCisgICAgcHl0aG9uZGlyID0gZC5nZXRWYXIoJ1RISVNESVInLFRydWUpCisgICAgd2l0aCBvcGVuKHB5dGhvbmRpcisnL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3RfZmlsZToKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlKQorCisgICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKKworICAgICMgSGFyZGNvZGVkIHNpbmNlIGl0IGNhbnQgYmUgcHl0aG9uMy1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uMy1mb28tbmF0aXZlCisgICAgcG4gPSAncHl0aG9uMycKKworICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKKyAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICBkLnNldFZhcignUlBST1ZJREVTJywgJyAnLmpvaW4ocnByb3ZpZGVzKSkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl80LjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl80LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U3MzYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzQuMi4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcGJyLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmNkYjgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE4LjAuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01OTNjNmNkOWQ2MzkzMDcyMjY5NzhjYmNhZTYxYWQ0YiIKKworREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTJmNzVjZWIyMWU5NmMyNThmMjg5ODU5YTI5OTZiNjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTBlMTE2NDVlZTM3YzkwYjQwYzQ2ZDYwNzA3MGM0ZmQ1ODNlMmNkNDYyMzFiMWMwNmUzODljNWU4MTRlZWQ3NiIKKworaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAorICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbjMtY29tcGlsZSBcCisgIHB5dGhvbjMtaW8gXAorICBweXRob24zLWh0bWwgXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLW5ldHNlcnZlciBcCisgIHB5dGhvbjMtc2V0dXB0b29scyBcCisgIHB5dGhvbjMtdW5peGFkbWluIFwKKyAgcHl0aG9uMy14bWxycGMgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZmQ2ZGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKLQotREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmZkZGQ2ODA0MjIzMjZiOWQxZmJmNTYxMTJjZjM0MWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODgxMTBhMjI0ZTlkMzBlNWQ3NjU5MmEwYjIxMzBlZjEwZTdlNjdhNjQyNmU4NjE3YmI5MThmZmZiZmU5MWZlNSIKLQotaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKLQotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotfQotCi0jIFVzZSBzZXR1cHRvb2xzIHNpdGUucHkgaW5zdGVhZCwgYXZvaWQgc2hhcmVkIHN0YXRlIGlzc3VlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weQotICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fX3B5Y2FjaGVfXy9zaXRlLmNweXRob24tKi5weWMKLQotICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKLSAgICBybSAke0R9LyR7YmluZGlyfS9waXAKLQotICAgICMgSW5zdGFsbGVkIGVnZ3MgbmVlZCB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVycHJldGVyIHZpYSBhIHB0aCBmaWxlCi0gICAgZWNobyAiLi8ke1BZUElfUEFDS0FHRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8ke1BZUElfUEFDS0FHRX0tJHtQVn0ucHRoCi0KLSAgICAjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbjMKLSAgICBmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfSAke0R9JHtiaW5kaXJ9L3BpcDMqYDsgZG8KLSAgICAgICAgc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKLSAgICBkb25lCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jb21waWxlIFwKLSAgcHl0aG9uMy1pbyBcCi0gIHB5dGhvbjMtaHRtbCBcCi0gIHB5dGhvbjMtanNvbiBcCi0gIHB5dGhvbjMtbmV0c2VydmVyIFwKLSAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKLSAgcHl0aG9uMy11bml4YWRtaW4gXAotICBweXRob24zLXhtbHJwYyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzI4NmY0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLWluaGVyaXQgZ25vbWViYXNlIGRpc3R1dGlsczMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgKz0gInB5dGhvbjMgZ2xpYi0yLjAiCi0KLVNSQ05BTUU9InB5Z29iamVjdCIKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjEyZTllMjg2M2QxMTdkODEwZTc4NjcyZjdiYzNhZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDIzMTJiNGE1MDE1NTcxZmEwYTRmMmQyMDEwMDVkYTQ2YjcxYzI1MWVhMjYyNWJjOTU3MDJkMDcxYzRmZjg5NSIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsIFsgJ2RpcmVjdGZiJywgJ3dheWxhbmQnLCAneDExJyBdLCAnY2Fpcm8nLCAnJywgZCl9IgotCi0jIHB5dGhvbjMtcHljYWlybyBpcyBjaGVja2VkIG9uIGNvbmZpZ3VyYXRpb24gLT4gREVQRU5EUwotIyB3ZSBkb24ndCBsaW5rIGFnYWluc3QgcHl0aG9uMy1weWNhaXJvIC0+IFJERVBFTkRTCi1QQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8gcHl0aG9uMy1weWNhaXJvLCBweXRob24zLXB5Y2Fpcm8iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNldHVwdG9vbHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzYWYyMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjMuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgorCitpbmhlcml0IGdub21lYmFzZSBkaXN0dXRpbHMzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitERVBFTkRTICs9ICJweXRob24zIGdsaWItMi4wIgorCitTUkNOQU1FPSJweWdvYmplY3QiCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvJHtTUkNOQU1FfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7U1JDTkFNRX0tJHtQVn0udGFyLnh6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNiYWM2M2M4NmJiOTYzYWE0MDFmOTc4NTk0NjRhYTkwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkZDNlMjEwMTVkMDZlMDA0ODJlYTY2NWZjMTczM2I3N2U3NTRhNmFiNjU2YTVkYjVkN2Y3YmZhZjMxYWQwYjAiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCBbICdkaXJlY3RmYicsICd3YXlsYW5kJywgJ3gxMScgXSwgJ2NhaXJvJywgJycsIGQpfSIKKworIyBweXRob24zLXB5Y2Fpcm8gaXMgY2hlY2tlZCBvbiBjb25maWd1cmF0aW9uIC0+IERFUEVORFMKKyMgd2UgZG9uJ3QgbGluayBhZ2FpbnN0IHB5dGhvbjMtcHljYWlybyAtPiBSREVQRU5EUworUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIHB5dGhvbjMtcHljYWlybywgcHl0aG9uMy1weWNhaXJvIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zZXR1cHRvb2xzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzkuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180MC4wLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzkuMC4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzQwLjAuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3VidW5pdF8xLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN1YnVuaXRfMS4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjZTQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN1YnVuaXRfMS4zLjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zdWJ1bml0LmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NmVjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHNfMi4zLjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi10ZXN0dG9vbHMuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2NWIzZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLmluYwpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIlRoZSBQeXRob24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmciCitMSUNFTlNFID0gIlBTRnYyIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKKyMgVE9ETyBSZW1vdmUgdGhpcyB3aGVuIHdlIHVwZ3JhZGUKK0lOQ19QUiA9ICJyMSIKK1BSID0gIiR7SU5DX1BSfS4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNmVjNTE1YjIyNjE4ZjU1ZmEwNzI3NmI4OTdiYWNlYSIKKworIyBUT0RPIGNvbnNvbGlkYXRlIHBhdGNoIHNldAorU1JDX1VSSVttZDVzdW1dID0gImY1YTk5Zjc2NWU3NjUzMzZhM2ViYmIyYTI0Y2EyYmUzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1NWNkZTA0ZjUyMWYyNzNjN2NiYTA4OTEyOTIxY2M1NjQyY2ZjMTVjYTdiMjJkNTgyOWYwYWZmNDM3MTE1NWYiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworQ1ZFX1BST0RVQ1QgPSAicHl0aG9uIgorCitQWVRIT05fTUFKTUlOID0gIjMuNSIKK1BZVEhPTl9CSU5BQkkgPSAiJHtQWVRIT05fTUFKTUlOfW0iCisKK1MgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJsdWV0b290aCBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIlwKKyAgLS13aXRoLXRocmVhZHMgXAorICAtLXdpdGgtcHltYWxsb2MgXAorICAtLXdpdGhvdXQtY3h4LW1haW4gXAorICAtLXdpdGgtc2lnbmFsLW1vZHVsZSBcCisgIC0tZW5hYmxlLXNoYXJlZCBcCisgIC0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbYmx1ZXRvb3RoXSA9ICIsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubyBhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9pbnN0YWxsOmluc3RhbGw6ZycgXAorCQktZSAnczoke0hPU1RUT09MU19ESVJ9L21rZGlyOm1rZGlyOmcnIFwKKwkJJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Jc3N1ZS0yODA0My1TU0xDb250ZXh0LWhhcy1pbXByb3ZlZC1kZWZhdWx0LXNldHRpbmdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Jc3N1ZS0yODA0My1TU0xDb250ZXh0LWhhcy1pbXByb3ZlZC1kZWZhdWx0LXNldHRpbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMWI0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLUlzc3VlLTI4MDQzLVNTTENvbnRleHQtaGFzLWltcHJvdmVkLWRlZmF1bHQtc2V0dGluZ3MucGF0Y2gKQEAgLTAsMCArMSwyNzIgQEAKK0Zyb20gNzU4ZTc0NjNjMTA0ZjcxYjgxMGM4NTg4MTY2NzQ3ZWVhYjYxNDhkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorRGF0ZTogU2F0LCAxMCBTZXAgMjAxNiAyMjo0Mzo0OCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvNF0gSXNzdWUgMjgwNDM6IFNTTENvbnRleHQgaGFzIGltcHJvdmVkIGRlZmF1bHQgc2V0dGluZ3MKKworVGhlIG9wdGlvbnMgT1BfTk9fQ09NUFJFU1NJT04sIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRSwgT1BfU0lOR0xFX0VDREhfVVNFLCBPUF9OT19TU0x2MiAoZXhjZXB0IGZvciBQUk9UT0NPTF9TU0x2MiksIGFuZCBPUF9OT19TU0x2MyAoZXhjZXB0IGZvciBQUk9UT0NPTF9TU0x2MykgYXJlIHNldCBieSBkZWZhdWx0LiBUaGUgaW5pdGlhbCBjaXBoZXIgc3VpdGUgbGlzdCBjb250YWlucyBvbmx5IEhJR0ggY2lwaGVycywgbm8gTlVMTCBjaXBoZXJzIGFuZCBNRDUgY2lwaGVycyAoZXhjZXB0IGZvciBQUk9UT0NPTF9TU0x2MikuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzM1OGNmZDQyNmNjYzBmY2Q2YTc5NDBkMzA2NjAyMTM4ZTc2NDIwYWVdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBEb2MvbGlicmFyeS9zc2wucnN0ICB8ICA5ICsrKysrKy0KKyBMaWIvc3NsLnB5ICAgICAgICAgICB8IDMwICsrKysrLS0tLS0tLS0tLS0tLS0tLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5IHwgNjIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNb2R1bGVzL19zc2wuYyAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKK2luZGV4IGEyZjAwODM0NmIuLjE0ZjJkNjgyMTcgMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitAQCAtMTE1MSw3ICsxMTUxLDE0IEBAIHRvIHNwZWVkIHVwIHJlcGVhdGVkIGNvbm5lY3Rpb25zIGZyb20gdGhlIHNhbWUgY2xpZW50cy4KKyAKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgCistICAgICAgOmRhdGE6YFBST1RPQ09MX1RMU2AgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisrICAgICAgVGhlIGNvbnRleHQgaXMgY3JlYXRlZCB3aXRoIHNlY3VyZSBkZWZhdWx0IHZhbHVlcy4gVGhlIG9wdGlvbnMKKysgICAgICA6ZGF0YTpgT1BfTk9fQ09NUFJFU1NJT05gLCA6ZGF0YTpgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFYCwKKysgICAgICA6ZGF0YTpgT1BfU0lOR0xFX0RIX1VTRWAsIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgLAorKyAgICAgIDpkYXRhOmBPUF9OT19TU0x2MmAgKGV4Y2VwdCBmb3IgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCksCisrICAgICAgYW5kIDpkYXRhOmBPUF9OT19TU0x2M2AgKGV4Y2VwdCBmb3IgOmRhdGE6YFBST1RPQ09MX1NTTHYzYCkgYXJlCisrICAgICAgc2V0IGJ5IGRlZmF1bHQuIFRoZSBpbml0aWFsIGNpcGhlciBzdWl0ZSBsaXN0IGNvbnRhaW5zIG9ubHkgYGBISUdIYGAKKysgICAgICBjaXBoZXJzLCBubyBgYE5VTExgYCBjaXBoZXJzIGFuZCBubyBgYE1ENWBgIGNpcGhlcnMgKGV4Y2VwdCBmb3IKKysgICAgICA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKS4KKyAKKyAKKyA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CitkaWZmIC0tZ2l0IGEvTGliL3NzbC5weSBiL0xpYi9zc2wucHkKK2luZGV4IGUxOTEzOTA0ZjMuLjRkMzAyYTc4ZmEgMTAwNjQ0CistLS0gYS9MaWIvc3NsLnB5CisrKysgYi9MaWIvc3NsLnB5CitAQCAtNDQ2LDMyICs0NDYsMTYgQEAgZGVmIGNyZWF0ZV9kZWZhdWx0X2NvbnRleHQocHVycG9zZT1QdXJwb3NlLlNFUlZFUl9BVVRILCAqLCBjYWZpbGU9Tm9uZSwKKyAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgorICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCisgCisrICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisrICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKysgICAgIyBieSBkZWZhdWx0LgorICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChQUk9UT0NPTF9UTFMpCisgCistICAgICMgU1NMdjIgY29uc2lkZXJlZCBoYXJtZnVsLgorLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKKy0KKy0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKKy0gICAgIyBjbGllbnRzIHN1Y2ggYXMgSUU2IG9uIFdpbmRvd3MgWFAKKy0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYzCistCistICAgICMgZGlzYWJsZSBjb21wcmVzc2lvbiB0byBwcmV2ZW50IENSSU1FIGF0dGFja3MgKE9wZW5TU0wgMS4wKykKKy0gICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCkKKy0KKyAgICAgaWYgcHVycG9zZSA9PSBQdXJwb3NlLlNFUlZFUl9BVVRIOgorICAgICAgICAgIyB2ZXJpZnkgY2VydHMgYW5kIGhvc3QgbmFtZSBpbiBjbGllbnQgbW9kZQorICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IENFUlRfUkVRVUlSRUQKKyAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgIGVsaWYgcHVycG9zZSA9PSBQdXJwb3NlLkNMSUVOVF9BVVRIOgorLSAgICAgICAgIyBQcmVmZXIgdGhlIHNlcnZlcidzIGNpcGhlcnMgYnkgZGVmYXVsdCBzbyB0aGF0IHdlIGdldCBzdHJvbmdlcgorLSAgICAgICAgIyBlbmNyeXB0aW9uCistICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKy0KKy0gICAgICAgICMgVXNlIHNpbmdsZSB1c2Uga2V5cyBpbiBvcmRlciB0byBpbXByb3ZlIGZvcndhcmQgc2VjcmVjeQorLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKQorLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApCistCistICAgICAgICAjIGRpc2FsbG93IGNpcGhlcnMgd2l0aCBrbm93biB2dWxuZXJhYmlsaXRpZXMKKyAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoX1JFU1RSSUNURURfU0VSVkVSX0NJUEhFUlMpCisgCisgICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkYXRhOgorQEAgLTQ5NywxMiArNDgxLDEwIEBAIGRlZiBfY3JlYXRlX3VudmVyaWZpZWRfY29udGV4dChwcm90b2NvbD1QUk9UT0NPTF9UTFMsICosIGNlcnRfcmVxcz1Ob25lLAorICAgICBpZiBub3QgaXNpbnN0YW5jZShwdXJwb3NlLCBfQVNOMU9iamVjdCk6CisgICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKKyAKKysgICAgIyBTU0xDb250ZXh0IHNldHMgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwKKysgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorKyAgICAjIGJ5IGRlZmF1bHQuCisgICAgIGNvbnRleHQgPSBTU0xDb250ZXh0KHByb3RvY29sKQorLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KKy0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCistICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCistICAgICMgY2xpZW50cyBzdWNoIGFzIElFNiBvbiBXaW5kb3dzIFhQCistICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MworIAorICAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CisgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQoraW5kZXggZmZiNzMxNGY1Ny4uZjkxYWY3YmQwNSAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQorQEAgLTczLDYgKzczLDEyIEBAIE5VTExCWVRFQ0VSVCA9IGRhdGFfZmlsZSgibnVsbGJ5dGVjZXJ0LnBlbSIpCisgREhGSUxFID0gZGF0YV9maWxlKCJkaDEwMjQucGVtIikKKyBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCisgCisrIyBOb3QgZGVmaW5lZCBpbiBhbGwgdmVyc2lvbnMgb2YgT3BlblNTTAorK09QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCisrT1BfU0lOR0xFX0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCisrT1BfU0lOR0xFX0VDREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQorK09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKysKKyAKKyBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CisgICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQorQEAgLTgzOSw4ICs4NDUsOSBAQCBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgIyBPUF9BTEwgfCBPUF9OT19TU0x2MiB8IE9QX05PX1NTTHYzIGlzIHRoZSBkZWZhdWx0IHZhbHVlCisgICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCistICAgICAgICBpZiBub3QgSVNfTElCUkVTU0wgYW5kIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMSwgMCk6CistICAgICAgICAgICAgZGVmYXVsdCB8PSBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKysgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorKyAgICAgICAgZGVmYXVsdCB8PSAoT1BfTk9fQ09NUFJFU1NJT04gfCBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgfAorKyAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0RIX1VTRSB8IE9QX1NJTkdMRV9FQ0RIX1VTRSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCwgY3R4Lm9wdGlvbnMpCisgICAgICAgICBjdHgub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCB8IHNzbC5PUF9OT19UTFN2MSwgY3R4Lm9wdGlvbnMpCitAQCAtMTIwNSwxNiArMTIxMiwyOSBAQCBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHN0YXRzWyJ4NTA5Il0gKz0gMQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmNlcnRfc3RvcmVfc3RhdHMoKSwgc3RhdHMpCisgCisrICAgIGRlZiBfYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhzZWxmLCBjdHgpOgorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorKyAgICAgICAgaWYgT1BfTk9fQ09NUFJFU1NJT04gIT0gMDoKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfTk9fQ09NUFJFU1NJT04sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9OT19DT01QUkVTU0lPTikKKysgICAgICAgIGlmIE9QX1NJTkdMRV9ESF9VU0UgIT0gMDoKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfU0lOR0xFX0RIX1VTRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UpCisrICAgICAgICBpZiBPUF9TSU5HTEVfRUNESF9VU0UgIT0gMDoKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfU0lOR0xFX0VDREhfVVNFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0VDREhfVVNFKQorKyAgICAgICAgaWYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFICE9IDA6CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSkKKysKKyAgICAgZGVmIHRlc3RfY3JlYXRlX2RlZmF1bHRfY29udGV4dChzZWxmKToKKyAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKKysKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCistICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAorLSAgICAgICAgKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisrCisgCisgICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKKyAgICAgICAgICAgICBjYWRhdGEgPSBmLnJlYWQoKQorQEAgLTEyMjIsNDAgKzEyNDIsMjQgQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCistICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAorLSAgICAgICAgKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisgCisgICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dChzc2wuUHVycG9zZS5DTElFTlRfQVVUSCkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAorLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKSwKKy0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCistICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApLAorLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCistICAgICAgICApCisrICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKKyAKKyAgICAgZGVmIHRlc3RfX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzZWxmKToKKyAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KCkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCisgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN0eC5jaGVja19ob3N0bmFtZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKysgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorIAorICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisgCisgICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCitAQCAtMTI2MywxMiArMTI2NywxMiBAQCBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisrICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKKyAKKyAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHB1cnBvc2U9c3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisgCisgICAgIGRlZiB0ZXN0X2NoZWNrX2hvc3RuYW1lKHNlbGYpOgorICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKK2luZGV4IDg2NDgyNjc3YWUuLjBkNWMxMjFkMmMgMTAwNjQ0CistLS0gYS9Nb2R1bGVzL19zc2wuYworKysrIGIvTW9kdWxlcy9fc3NsLmMKK0BAIC0yMzMwLDYgKzIzMzAsNyBAQCBfc3NsX19TU0xDb250ZXh0X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgcHJvdG9fdmVyc2lvbikKKyAgICAgUHlTU0xDb250ZXh0ICpzZWxmOworICAgICBsb25nIG9wdGlvbnM7CisgICAgIFNTTF9DVFggKmN0eCA9IE5VTEw7CisrICAgIGludCByZXN1bHQ7CisgI2lmIGRlZmluZWQoU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTKQorICAgICB1bnNpZ25lZCBsb25nIGxpYnZlcjsKKyAjZW5kaWYKK0BAIC0yMzkzLDggKzIzOTQsMzggQEAgX3NzbF9fU1NMQ29udGV4dF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHByb3RvX3ZlcnNpb24pCisgICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MjsKKyAgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMykKKyAgICAgICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYzOworKyAgICAvKiBNaW5pbWFsIHNlY3VyaXR5IGZsYWdzIGZvciBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlIGNvbnRleHQuCisrICAgICAqIENsaWVudCBzb2NrZXRzIGlnbm9yZSBzZXJ2ZXItc2lkZSBwYXJhbWV0ZXJzLiAqLworKyNpZmRlZiBTU0xfT1BfTk9fQ09NUFJFU1NJT04KKysgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fQ09NUFJFU1NJT047CisrI2VuZGlmCisrI2lmZGVmIFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKysgICAgb3B0aW9ucyB8PSBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFOworKyNlbmRpZgorKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0RIX1VTRQorKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfREhfVVNFOworKyNlbmRpZgorKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCisrICAgIG9wdGlvbnMgfD0gU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTsKKysjZW5kaWYKKyAgICAgU1NMX0NUWF9zZXRfb3B0aW9ucyhzZWxmLT5jdHgsIG9wdGlvbnMpOworIAorKyAgICAvKiBBIGJhcmUgbWluaW11bSBjaXBoZXIgbGlzdCB3aXRob3V0IGNvbXBsZXRseSBicm9rZW4gY2lwaGVyIHN1aXRlcy4KKysgICAgICogSXQncyBmYXIgZnJvbSBwZXJmZWN0IGJ1dCBnaXZlcyB1c2VycyBhIGJldHRlciBoZWFkIHN0YXJ0LiAqLworKyAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKSB7CisrICAgICAgICByZXN1bHQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJISUdIOiFhTlVMTDohZU5VTEw6IU1ENSIpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgLyogU1NMdjIgbmVlZHMgTUQ1ICovCisrICAgICAgICByZXN1bHQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJISUdIOiFhTlVMTDohZU5VTEwiKTsKKysgICAgfQorKyAgICBpZiAocmVzdWx0ID09IDApIHsKKysgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKysgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQuIik7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworICNpZiBkZWZpbmVkKFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUykKKyAgICAgLyogU2V0IFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUy4gVGhpcyBwb3RlbnRpYWxseSBncmVhdGx5IHJlZHVjZXMgbWVtb3J5CisgICAgICAgIHVzYWdlIGZvciBubyBjb3N0IGF0IGFsbC4gSG93ZXZlciwgZG9uJ3QgZG8gdGhpcyBmb3IgT3BlblNTTCB2ZXJzaW9ucworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NkN2UzYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gZWNkZTNlYTE3MDk5OWE5ZWY3MzRlOGFmNGQ3YzI1YmU1YmE4MTY5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxNTo0Mjo0NiArMDMwMAotU3ViamVjdDogW1BBVENIXSBjcm9zcy1jb21waWxlIHN1cHBvcnQKLQotV2UgY3Jvc3MgY29tcGlsZSBweXRob24uIFRoaXMgcGF0Y2ggdXNlcyB0b29scyBmcm9tIGhvc3QvbmF0aXZlCi1weXRob24gaW5zdGVhZCBvZiBpbi10cmVlIHRvb2xzCi0KLS1LaGVtCi0KLVJlYmFzZWQgb24gMy41LjQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+Ci0tLS0KLSBNYWtlZmlsZS5wcmUuaW4gfCAxNCArKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KLWluZGV4IDE0NGMxZjg2MjkuLmYyNTJhYzI0MTcgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5wcmUuaW4KLSsrKyBiL01ha2VmaWxlLnByZS5pbgotQEAgLTIyMyw2ICsyMjMsNyBAQCBMSUJPQkpTPQlATElCT0JKU0AKLQotIFBZVEhPTj0JCXB5dGhvbiQoRVhFKQotIEJVSUxEUFlUSE9OPQlweXRob24kKEJVSUxERVhFKQotK0hPU1RQWVRIT049ICAgICQoQlVJTERQWVRIT04pCi0KLSBQWVRIT05fRk9SX1JFR0VOPUBQWVRIT05fRk9SX1JFR0VOQAotIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACi1AQCAtMjc3LDYgKzI3OCw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIFBhcnNlcgotIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQotK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0KLSBQU1JDUz0JCVwKLSAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTQ3OCw3ICs0ODAsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKLQotIHJ1bl9wcm9maWxlX3Rhc2s6Ci0gCTogIyBGSVhNRTogY2FuJ3QgcnVuIGZvciBhIGNyb3NzIGJ1aWxkCi0tCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCi0rCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCi0KLSBidWlsZF9hbGxfbWVyZ2VfcHJvZmlsZToKLSAJJChMTFZNX1BST0ZfTUVSR0VSKQotQEAgLTc3Miw3ICs3NzQsNyBAQCByZWdlbi1ncmFtbWFyOiAkKFBHRU4pCi0gCSMgUmVnZW5lcmF0ZSBJbmNsdWRlL2dyYW1pbml0LmggYW5kIFB5dGhvbi9ncmFtaW5pdC5jCi0gCSMgZnJvbSBHcmFtbWFyL0dyYW1tYXIgdXNpbmcgcGdlbgotIAlAJChNS0RJUl9QKSBJbmNsdWRlCi0tCSQoUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCi0rCSQoSE9TVFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAotIAkJJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCBcCi0gCQkkKHNyY2RpcikvUHl0aG9uL2dyYW1pbml0LmMKLQotQEAgLTk3OCw3ICs5ODAsNyBAQCAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSBURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQotLVRFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCi0rVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKLSBURVNUUlVOTkVSPQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQotIFRFU1RUSU1FT1VUPQkzNjAwCi0KLUBAIC0xNDcwLDcgKzE0NzIsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKLSAJCWZpOyBcCi0gCWRvbmUKLSAJJChMTikgLWZzbiBpbmNsdWRlL3B5dGhvbiQoTERWRVJTSU9OKSAkKERFU1RESVIpJChwcmVmaXgpL0hlYWRlcnMKLS0Jc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKLSsJc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKLSAJJChMTikgLWZzbiAkKFZFUlNJT04pICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL1ZlcnNpb25zL0N1cnJlbnQKLSAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50LyQoUFlUSE9ORlJBTUVXT1JLKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS8kKFBZVEhPTkZSQU1FV09SSykKLSAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50L0hlYWRlcnMgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvSGVhZGVycwotQEAgLTE1NDMsNyArMTU0NSw3IEBAIFB5dGhvbi9kdG9hLm86IFB5dGhvbi9kdG9hLmMKLQotICMgUnVuIHJlaW5kZW50IG9uIHRoZSBsaWJyYXJ5Ci0gcmVpbmRlbnQ6Ci0tCS4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgotKwkkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKLQotICMgUmVydW4gY29uZmlndXJlIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBhcyBpdCB3YXMgcnVuIGxhc3QgdGltZSwKLSAjIHByb3ZpZGVkIHRoZSBjb25maWcuc3RhdHVzIHNjcmlwdCBleGlzdHMKLUBAIC0xNjc4LDcgKzE2ODAsNyBAQCBmdW5ueToKLQotICMgUGVyZm9ybSBzb21lIHZlcmlmaWNhdGlvbiBjaGVja3Mgb24gYW55IG1vZGlmaWVkIGZpbGVzLgotIHBhdGNoY2hlY2s6IEBERUZfTUFLRV9SVUxFQAotLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0rCSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLQotICMgRGVwZW5kZW5jaWVzCi0KLS0tCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1NYWtlZmlsZS1hZGQtdGFyZ2V0LXRvLXNwbGl0LXByb2ZpbGUtZ2VuZXJhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItTWFrZWZpbGUtYWRkLXRhcmdldC10by1zcGxpdC1wcm9maWxlLWdlbmVyYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI0YmEzMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItTWFrZWZpbGUtYWRkLXRhcmdldC10by1zcGxpdC1wcm9maWxlLWdlbmVyYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA5ODU4NmQ2ZGM1OThlNDBiOGI4MjFiMGRkZTU3NTk5ZTE4OGE3Y2E0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgNyBBdWcgMjAxOCAxNjo0MzoxNyArMDgwMAorU3ViamVjdDogW1BBVENIIDIvMl0gTWFrZWZpbGU6IGFkZCB0YXJnZXQgdG8gc3BsaXQgcHJvZmlsZSBnZW5lcmF0aW9uCisKK1dlIGRvbid0IHdhbnQgdG8gaGF2ZSBwcm9maWxlIHRhc2sgaW52b2tlZCBmcm9tIGhlcmUgYW5kIHdhbnQgdG8gdXNlCitxZW11LXVzZXIgaW5zdGVhZC4gU3BsaXQgdGhlIHByb2ZpbGUtb3B0IHRhc2sgc28gcWVtdSBjYW4gYmUgaW52b2tlZAorb25jZSBiaW5hcmllcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBpbnN0cnVtZW50YXRpb24gYW5kIHRoZW4gd2UgY2FuIGdvCithaGVhZCBhbmQgYnVpbGQgYWdhaW4gdXNpbmcgdGhlIHByb2ZpbGUgZGF0YSBnZW5lcmF0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBNYWtlZmlsZS5wcmUuaW4gfCA2ICsrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KK2luZGV4IDg0YmMzZmYuLjAxN2EyYzQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrKyBiL01ha2VmaWxlLnByZS5pbgorQEAgLTQ2OSwxMyArNDY5LDEyIEBAIHByb2ZpbGUtb3B0OgorIAkkKE1BS0UpIHByb2ZpbGUtcmVtb3ZhbAorIAkkKE1BS0UpIGJ1aWxkX2FsbF9nZW5lcmF0ZV9wcm9maWxlCisgCSQoTUFLRSkgcHJvZmlsZS1yZW1vdmFsCistCUBlY2hvICJSdW5uaW5nIGNvZGUgdG8gZ2VuZXJhdGUgcHJvZmlsZSBkYXRhICh0aGlzIGNhbiB0YWtlIGEgd2hpbGUpOiIKKy0JJChNQUtFKSBydW5fcHJvZmlsZV90YXNrCistCSQoTUFLRSkgYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGUKKysKKytjbGVhbl9hbmRfdXNlX3Byb2ZpbGU6CisgCUBlY2hvICJSZWJ1aWxkaW5nIHdpdGggcHJvZmlsZSBndWlkZWQgb3B0aW1pemF0aW9uczoiCisgCSQoTUFLRSkgY2xlYW4KKyAJJChNQUtFKSBidWlsZF9hbGxfdXNlX3Byb2ZpbGUKKyAJJChNQUtFKSBwcm9maWxlLXJlbW92YWwKKyAKKyBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKKyAJJChNQUtFKSBAREVGX01BS0VfUlVMRUAgQ0ZMQUdTX05PRElTVD0iJChDRkxBR1MpICQoRVhUUkFfQ0ZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSBATFRPRkxBR1NAIiBMREZMQUdTPSIkKExERkxBR1MpICQoUEdPX1BST0ZfR0VOX0ZMQUcpIEBMVE9GTEFHU0AiIExJQlM9IiQoTElCUykiCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLWJwby0yOTEzNi1BZGQtVExTLTEuMy1jaXBoZXItc3VpdGVzLWFuZC1PUF9OT19UTFN2MV8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLWJwby0yOTEzNi1BZGQtVExTLTEuMy1jaXBoZXItc3VpdGVzLWFuZC1PUF9OT19UTFN2MV8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ4Y2FkNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItYnBvLTI5MTM2LUFkZC1UTFMtMS4zLWNpcGhlci1zdWl0ZXMtYW5kLU9QX05PX1RMU3YxXy5wYXRjaApAQCAtMCwwICsxLDIyNyBAQAorRnJvbSBlOTUwZWE2OGRhYjAwNjk0NGFmMTk0Yzk5MTBiOGYyMzQxZDE0MzdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CitEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMjA6MjM6NTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnBvLTI5MTM2OiBBZGQgVExTIDEuMyBjaXBoZXIgc3VpdGVzIGFuZCBPUF9OT19UTFN2MV8zCisgKEdILTEzNjMpICgjMzQ0NCkKKworKiBicG8tMjkxMzY6IEFkZCBUTFMgMS4zIHN1cHBvcnQKKworVExTIDEuMyBpbnRyb2R1Y2VzIGEgbmV3LCBkaXN0aW5jdCBzZXQgb2YgY2lwaGVyIHN1aXRlcy4gVGhlIFRMUyAxLjMKK2NpcGhlciBzdWl0ZXMgZG9uJ3Qgb3ZlcmxhcCB3aXRoIGNpcGhlciBzdWl0ZXMgZnJvbSBUTFMgMS4yIGFuZCBlYXJsaWVyLgorU2luY2UgUHl0aG9uIHNldHMgaXRzIG93biBzZXQgb2YgcGVybWl0dGVkIGNpcGhlcnMsIFRMUyAxLjMgaGFuZHNoYWtlCit3aWxsIGZhaWwgYXMgc29vbiBhcyBPcGVuU1NMIDEuMS4xIGlzIHJlbGVhc2VkLiBMZXQncyBlbmFibGUgdGhlIGNvbW1vbgorQUVTLUdDTSBhbmQgQ2hhQ2hhMjAgc3VpdGVzLgorCitBZGRpdGlvbmFsbHkgdGhlIGZsYWcgT1BfTk9fVExTdjFfMyBpcyBhZGRlZC4gSXQgZGVmYXVsdHMgdG8gMCAobm8gb3ApIHdpdGgKK09wZW5TU0wgcHJpb3IgdG8gMS4xLjEuIFRoaXMgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBvcHQtb3V0IGZyb20gVExTIDEuMworbm93LgorCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4uCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjYjViNjhhYmRlYjFiMWQ1NmM1ODFkNWI0ZDY0NzAxODcwM2Q2MWUzKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC9jYjViNjhhYmRlYjFiMWQ1NmM1ODFkNWI0ZDY0NzAxODcwM2Q2MWUzXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgRG9jL2xpYnJhcnkvc3NsLnJzdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrKysKKyBMaWIvc3NsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKysrKworIExpYi90ZXN0L3Rlc3Rfc3NsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysrKy0KKyAuLi4vMjAxNy0wOS0wNC0xNi0zOS00OS5icG8tMjkxMzYudlNuMW9SLnJzdCAgfCAgMSArCisgTW9kdWxlcy9fc3NsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE3LTA5LTA0LTE2LTM5LTQ5LmJwby0yOTEzNi52U24xb1IucnN0CisKK2RpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAoraW5kZXggMTRmMmQ2ODIxNy4uMjljNWU5NGNmNiAxMDA2NDQKKy0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKK0BAIC0yODUsNiArMjg1LDExIEBAIHB1cnBvc2VzLgorIAorICAgICAgM0RFUyB3YXMgZHJvcHBlZCBmcm9tIHRoZSBkZWZhdWx0IGNpcGhlciBzdHJpbmcuCisgCisrICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjcKKysKKysgICAgIFRMUyAxLjMgY2lwaGVyIHN1aXRlcyBUTFNfQUVTXzEyOF9HQ01fU0hBMjU2LCBUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0LAorKyAgICAgYW5kIFRMU19DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYgd2VyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgorKworIAorIFJhbmRvbSBnZW5lcmF0aW9uCisgXl5eXl5eXl5eXl5eXl5eXl4KK0BAIC03MTksNiArNzI0LDE2IEBAIENvbnN0YW50cworIAorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorIAorKy4uIGRhdGE6OiBPUF9OT19UTFN2MV8zCisrCisrICAgUHJldmVudHMgYSBUTFN2MS4zIGNvbm5lY3Rpb24uIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSBpbiBjb25qdW5jdGlvbgorKyAgIHdpdGggOmNvbnN0OmBQUk9UT0NPTF9UTFNgLiBJdCBwcmV2ZW50cyB0aGUgcGVlcnMgZnJvbSBjaG9vc2luZyBUTFN2MS4zIGFzCisrICAgdGhlIHByb3RvY29sIHZlcnNpb24uIFRMUyAxLjMgaXMgYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMSBvciBsYXRlci4KKysgICBXaGVuIFB5dGhvbiBoYXMgYmVlbiBjb21waWxlZCBhZ2FpbnN0IGFuIG9sZGVyIHZlcnNpb24gb2YgT3BlblNTTCwgdGhlCisrICAgZmxhZyBkZWZhdWx0cyB0byAqMCouCisrCisrICAgLi4gdmVyc2lvbmFkZGVkOjogMy43CisrCisgLi4gZGF0YTo6IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorIAorICAgIFVzZSB0aGUgc2VydmVyJ3MgY2lwaGVyIG9yZGVyaW5nIHByZWZlcmVuY2UsIHJhdGhlciB0aGFuIHRoZSBjbGllbnQncy4KK0BAIC03ODMsNiArNzk4LDEyIEBAIENvbnN0YW50cworIAorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworIAorKy4uIGRhdGE6OiBIQVNfVExTdjFfMworKworKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlIFRMUyAxLjMgcHJvdG9jb2wuCisrCisrICAgLi4gdmVyc2lvbmFkZGVkOjogMy43CisrCisgLi4gZGF0YTo6IENIQU5ORUxfQklORElOR19UWVBFUworIAorICAgIExpc3Qgb2Ygc3VwcG9ydGVkIFRMUyBjaGFubmVsIGJpbmRpbmcgdHlwZXMuICBTdHJpbmdzIGluIHRoaXMgbGlzdAorZGlmZiAtLWdpdCBhL0xpYi9zc2wucHkgYi9MaWIvc3NsLnB5CitpbmRleCA0ZDMwMmE3OGZhLi5mMjMzZTcyZTFmIDEwMDY0NAorLS0tIGEvTGliL3NzbC5weQorKysrIGIvTGliL3NzbC5weQorQEAgLTEyMiw2ICsxMjIsNyBAQCBfaW1wb3J0X3N5bWJvbHMoJ09QXycpCisgX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQorIF9pbXBvcnRfc3ltYm9scygnU1NMX0VSUk9SXycpCisgX2ltcG9ydF9zeW1ib2xzKCdWRVJJRllfJykKKytmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOLCBIQVNfQUxQTiwgSEFTX1RMU3YxXzMKKyAKKyBmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOLCBIQVNfQUxQTgorIAorQEAgLTE2Miw2ICsxNjMsNyBAQCBlbHNlOgorICMgKE9wZW5TU0wncyBkZWZhdWx0IHNldHRpbmcgaXMgJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTCcpCisgIyBFbmFibGUgYSBiZXR0ZXIgc2V0IG9mIGNpcGhlcnMgYnkgZGVmYXVsdAorICMgVGhpcyBsaXN0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY2hvc2VuIHRvOgorKyMgICAqIFRMUyAxLjMgQ2hhQ2hhMjAgYW5kIEFFUy1HQ00gY2lwaGVyIHN1aXRlcworICMgICAqIFByZWZlciBjaXBoZXIgc3VpdGVzIHRoYXQgb2ZmZXIgcGVyZmVjdCBmb3J3YXJkIHNlY3JlY3kgKERIRS9FQ0RIRSkKKyAjICAgKiBQcmVmZXIgRUNESEUgb3ZlciBESEUgZm9yIGJldHRlciBwZXJmb3JtYW5jZQorICMgICAqIFByZWZlciBBRUFEIG92ZXIgQ0JDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5CitAQCAtMTczLDYgKzE3NSw4IEBAIGVsc2U6CisgIyAgICogRGlzYWJsZSBOVUxMIGF1dGhlbnRpY2F0aW9uLCBOVUxMIGVuY3J5cHRpb24sIDNERVMgYW5kIE1ENSBNQUNzCisgIyAgICAgZm9yIHNlY3VyaXR5IHJlYXNvbnMKKyBfREVGQVVMVF9DSVBIRVJTID0gKAorKyAgICAnVExTMTMtQUVTLTI1Ni1HQ00tU0hBMzg0OlRMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NjonCisrICAgICdUTFMxMy1BRVMtMTI4LUdDTS1TSEEyNTY6JworICAgICAnRUNESCtBRVNHQ006RUNESCtDSEFDSEEyMDpESCtBRVNHQ006REgrQ0hBQ0hBMjA6RUNESCtBRVMyNTY6REgrQUVTMjU2OicKKyAgICAgJ0VDREgrQUVTMTI4OkRIK0FFUzpFQ0RIK0hJR0g6REgrSElHSDpSU0ErQUVTR0NNOlJTQStBRVM6UlNBK0hJR0g6JworICAgICAnIWFOVUxMOiFlTlVMTDohTUQ1OiEzREVTJworQEAgLTE4MCw2ICsxODQsNyBAQCBfREVGQVVMVF9DSVBIRVJTID0gKAorIAorICMgUmVzdHJpY3RlZCBhbmQgbW9yZSBzZWN1cmUgY2lwaGVycyBmb3IgdGhlIHNlcnZlciBzaWRlCisgIyBUaGlzIGxpc3QgaGFzIGJlZW4gZXhwbGljaXRseSBjaG9zZW4gdG86CisrIyAgICogVExTIDEuMyBDaGFDaGEyMCBhbmQgQUVTLUdDTSBjaXBoZXIgc3VpdGVzCisgIyAgICogUHJlZmVyIGNpcGhlciBzdWl0ZXMgdGhhdCBvZmZlciBwZXJmZWN0IGZvcndhcmQgc2VjcmVjeSAoREhFL0VDREhFKQorICMgICAqIFByZWZlciBFQ0RIRSBvdmVyIERIRSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgIyAgICogUHJlZmVyIEFFQUQgb3ZlciBDQkMgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHkKK0BAIC0xOTAsNiArMTk1LDggQEAgX0RFRkFVTFRfQ0lQSEVSUyA9ICgKKyAjICAgKiBEaXNhYmxlIE5VTEwgYXV0aGVudGljYXRpb24sIE5VTEwgZW5jcnlwdGlvbiwgTUQ1IE1BQ3MsIERTUywgUkM0LCBhbmQKKyAjICAgICAzREVTIGZvciBzZWN1cml0eSByZWFzb25zCisgX1JFU1RSSUNURURfU0VSVkVSX0NJUEhFUlMgPSAoCisrICAgICdUTFMxMy1BRVMtMjU2LUdDTS1TSEEzODQ6VExTMTMtQ0hBQ0hBMjAtUE9MWTEzMDUtU0hBMjU2OicKKysgICAgJ1RMUzEzLUFFUy0xMjgtR0NNLVNIQTI1NjonCisgICAgICdFQ0RIK0FFU0dDTTpFQ0RIK0NIQUNIQTIwOkRIK0FFU0dDTTpESCtDSEFDSEEyMDpFQ0RIK0FFUzI1NjpESCtBRVMyNTY6JworICAgICAnRUNESCtBRVMxMjg6REgrQUVTOkVDREgrSElHSDpESCtISUdIOlJTQStBRVNHQ006UlNBK0FFUzpSU0ErSElHSDonCisgICAgICchYU5VTEw6IWVOVUxMOiFNRDU6IURTUzohUkM0OiEzREVTJworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IGY5MWFmN2JkMDUuLjFhY2MxMmVjMmQgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC0xNTAsNiArMTUwLDEzIEBAIGNsYXNzIEJhc2ljU29ja2V0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNzbC5PUF9OT19DT01QUkVTU0lPTgorICAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX1NOSSwge1RydWUsIEZhbHNlfSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19FQ0RILCB7VHJ1ZSwgRmFsc2V9KQorKyAgICAgICAgc3NsLk9QX05PX1NTTHYyCisrICAgICAgICBzc2wuT1BfTk9fU1NMdjMKKysgICAgICAgIHNzbC5PUF9OT19UTFN2MQorKyAgICAgICAgc3NsLk9QX05PX1RMU3YxXzMKKysgICAgaWYgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAwLCAxKToKKysgICAgICAgICAgICBzc2wuT1BfTk9fVExTdjFfMQorKyAgICAgICAgICAgIHNzbC5PUF9OT19UTFN2MV8yCisgCisgICAgIGRlZiB0ZXN0X3N0cl9mb3JfZW51bXMoc2VsZik6CisgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBQUk9UT0NPTF8qIGNvbnN0YW50cyBoYXZlIGVudW0tbGlrZSBzdHJpbmcKK0BAIC0zMDI4LDEyICszMDM1LDMzIEBAIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMudmVyc2lvbigpLCAnVExTdjEnKQorICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHMudmVyc2lvbigpLCBOb25lKQorIAorKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19UTFN2MV8zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgVExTdjEuMyBlbmFibGVkIE9wZW5TU0wiKQorKyAgICAgICAgZGVmIHRlc3RfdGxzMV8zKHNlbGYpOgorKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTKQorKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorKyAgICAgICAgICAgICMgZGlzYWJsZSBhbGwgYnV0IFRMUyAxLjMKKysgICAgICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gKAorKyAgICAgICAgICAgICAgICBzc2wuT1BfTk9fVExTdjEgfCBzc2wuT1BfTk9fVExTdjFfMSB8IHNzbC5PUF9OT19UTFN2MV8yCisrICAgICAgICAgICAgKQorKyAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCkgYXMgc2VydmVyOgorKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisrICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHMuY2lwaGVyKClbMF0sIFsKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTMTMtQUVTLTI1Ni1HQ00tU0hBMzg0JywKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTMTMtQ0hBQ0hBMjAtUE9MWTEzMDUtU0hBMjU2JywKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTMTMtQUVTLTEyOC1HQ00tU0hBMjU2JywKKysgICAgICAgICAgICAgICAgICAgIF0pCisrCisgICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX0VDREgsICJ0ZXN0IHJlcXVpcmVzIEVDREgtZW5hYmxlZCBPcGVuU1NMIikKKyAgICAgICAgIGRlZiB0ZXN0X2RlZmF1bHRfZWNkaF9jdXJ2ZShzZWxmKToKKyAgICAgICAgICAgICAjIElzc3VlICMyMTAxNTogZWxsaXB0aWMgY3VydmUtYmFzZWQgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlCisgICAgICAgICAgICAgIyBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0IG9uIFNTTCBjb250ZXh0cy4KKyAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKysgICAgICAgICAgICAjIFRMU3YxLjMgZGVmYXVsdHMgdG8gUEZTIGtleSBhZ3JlZW1lbnQgYW5kIG5vIGxvbmdlciBoYXMgS0VBIGluCisrICAgICAgICAgICAgIyBjaXBoZXIgbmFtZS4KKysgICAgICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzMKKyAgICAgICAgICAgICAjIFByaW9yIHRvIE9wZW5TU0wgMS4wLjAsIEVDREggY2lwaGVycyBoYXZlIHRvIGJlIGVuYWJsZWQKKyAgICAgICAgICAgICAjIGV4cGxpY2l0bHkgdXNpbmcgdGhlICdFQ0NkcmFmdCcgY2lwaGVyIGFsaWFzLiAgT3RoZXJ3aXNlLAorICAgICAgICAgICAgICMgb3VyIGRlZmF1bHQgY2lwaGVyIGxpc3Qgc2hvdWxkIHByZWZlciBFQ0RILWJhc2VkIGNpcGhlcnMKK0BAIC0zMzk0LDcgKzM0MjIsNiBAQCBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMucmVjdigxMDI0KSwgVEVTVF9EQVRBKQorIAorLQorIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CisgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgIGltcG9ydCB3YXJuaW5ncworZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE3LTA5LTA0LTE2LTM5LTQ5LmJwby0yOTEzNi52U24xb1IucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTctMDktMDQtMTYtMzktNDkuYnBvLTI5MTM2LnZTbjFvUi5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5lNzY5OTdlZjgzCistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxNy0wOS0wNC0xNi0zOS00OS5icG8tMjkxMzYudlNuMW9SLnJzdAorQEAgLTAsMCArMSBAQAorK0FkZCBUTFMgMS4zIGNpcGhlciBzdWl0ZXMgYW5kIE9QX05PX1RMU3YxXzMuCitkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYworaW5kZXggMGQ1YzEyMWQyYy4uYzcxZDg5NjA3YyAxMDA2NDQKKy0tLSBhL01vZHVsZXMvX3NzbC5jCisrKysgYi9Nb2R1bGVzL19zc2wuYworQEAgLTQ4NDIsNiArNDg0MiwxMSBAQCBQeUluaXRfX3NzbCh2b2lkKQorICNpZiBIQVZFX1RMU3YxXzIKKyAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxXzEiLCBTU0xfT1BfTk9fVExTdjFfMSk7CisgICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19UTFN2MV8yIiwgU1NMX09QX05PX1RMU3YxXzIpOworKyNlbmRpZgorKyNpZmRlZiBTU0xfT1BfTk9fVExTdjFfMworKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjFfMyIsIFNTTF9PUF9OT19UTFN2MV8zKTsKKysjZWxzZQorKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjFfMyIsIDApOworICNlbmRpZgorICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSk7CitAQCAtNDg5MCw2ICs0ODk1LDE0IEBAIFB5SW5pdF9fc3NsKHZvaWQpCisgICAgIFB5X0lOQ1JFRihyKTsKKyAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfQUxQTiIsIHIpOworIAorKyNpZiBkZWZpbmVkKFRMUzFfM19WRVJTSU9OKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1RMUzFfMykKKysgICAgciA9IFB5X1RydWU7CisrI2Vsc2UKKysgICAgciA9IFB5X0ZhbHNlOworKyNlbmRpZgorKyAgICBQeV9JTkNSRUYocik7CisrICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1RMU3YxXzMiLCByKTsKKysKKyAgICAgLyogTWFwcGluZ3MgZm9yIGVycm9yIGNvZGVzICovCisgICAgIGVycl9jb2Rlc190b19uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICAgZXJyX25hbWVzX3RvX2NvZGVzID0gUHlEaWN0X05ldygpOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1icG8tMzI5NDctRml4ZXMtZm9yLVRMUy0xLjMtYW5kLU9wZW5TU0wtMS4xLjEtR0gtODc2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1icG8tMzI5NDctRml4ZXMtZm9yLVRMUy0xLjMtYW5kLU9wZW5TU0wtMS4xLjEtR0gtODc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZDU5MWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAzLWJwby0zMjk0Ny1GaXhlcy1mb3ItVExTLTEuMy1hbmQtT3BlblNTTC0xLjEuMS1HSC04NzYucGF0Y2gKQEAgLTAsMCArMSwxNzMgQEAKK0Zyb20gMTcwYTYxNDkwNGZlYmQxNGZmNmNmZDdhNzVjOWJjY2MxMTRiMzk0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorRGF0ZTogVHVlLCAxNCBBdWcgMjAxOCAxNjo1NjozMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBicG8tMzI5NDc6IEZpeGVzIGZvciBUTFMgMS4zIGFuZCBPcGVuU1NMIDEuMS4xIChHSC04NzYxKQorCitCYWNrcG9ydCBvZiBUTFMgMS4zIHJlbGF0ZWQgZml4ZXMgZnJvbSAzLjcuCisKK01pc2MgZml4ZXMgYW5kIHdvcmthcm91bmRzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTCAxLjEuMSBmcm9tIGdpdAorbWFzdGVyIGFuZCBUTFMgMS4zIHN1cHBvcnQuIFdpdGggT3BlblNTTCAxLjEuMSwgUHl0aG9uIG5lZ290aWF0ZXMgVExTIDEuMyBieQorZGVmYXVsdC4gU29tZSB0ZXN0IGNhc2VzIG9ubHkgYXBwbHkgdG8gVExTIDEuMi4KKworT3BlblNTTCAxLjEuMSBoYXMgYWRkZWQgYSBuZXcgb3B0aW9uIE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUIGZvciBUTFMKKzEuMy4gVGhlIGZlYXR1cmUgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkgd2l0aAorYnJva2VuIG1pZGRsZSBib3hlcy4gVXNlcnMgc2hvdWxkIGJlIGFibGUgdG8gZGlzYWJsZSB0aGUgaGFjayBhbmQgQ1B5dGhvbidzIHRlc3Qgc3VpdGUgbmVlZHMKK2l0IHRvIHZlcmlmeSBkZWZhdWx0IG9wdGlvbnMKKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzJhNGVlOGFhMDFkNjFiNmE5YzhlOWM2NWMyMTFlNjFiZGI0NzE4MjZdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBEb2MvbGlicmFyeS9zc2wucnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysKKyBMaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9ldmVudHMucHkgICAgICAgICAgfCAgNiArKystCisgTGliL3Rlc3QvdGVzdF9zc2wucHkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKysrLS0tLQorIC4uLi8yMDE4LTA4LTE0LTA4LTU3LTAxLmJwby0zMjk0Ny5tcVN0VlcucnN0ICB8ICAyICsrCisgTW9kdWxlcy9fc3NsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wOC0xNC0wOC01Ny0wMS5icG8tMzI5NDcubXFTdFZXLnJzdAorCitkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKK2luZGV4IDI5YzVlOTRjZjYuLmY2M2EzZGVlYzUgMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitAQCAtNzU3LDYgKzc1NywxNSBAQCBDb25zdGFudHMKKyAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAKKysuLiBkYXRhOjogT1BfRU5BQkxFX01JRERMRUJPWF9DT01QQVQKKysKKysgICBTZW5kIGR1bW15IENoYW5nZSBDaXBoZXIgU3BlYyAoQ0NTKSBtZXNzYWdlcyBpbiBUTFMgMS4zIGhhbmRzaGFrZSB0byBtYWtlCisrICAgYSBUTFMgMS4zIGNvbm5lY3Rpb24gbG9vayBtb3JlIGxpa2UgYSBUTFMgMS4yIGNvbm5lY3Rpb24uCisrCisrICAgVGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgd2l0aCBPcGVuU1NMIDEuMS4xIGFuZCBsYXRlci4KKysKKysgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYuNworKworIC4uIGRhdGE6OiBPUF9OT19DT01QUkVTU0lPTgorIAorICAgIERpc2FibGUgY29tcHJlc3Npb24gb24gdGhlIFNTTCBjaGFubmVsLiAgVGhpcyBpcyB1c2VmdWwgaWYgdGhlIGFwcGxpY2F0aW9uCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZXZlbnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZXZlbnRzLnB5CitpbmRleCA0OTJhODRhMjMxLi42ZjIwODQ3NGI5IDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZXZlbnRzLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9ldmVudHMucHkKK0BAIC0xMTY5LDcgKzExNjksMTEgQEAgY2xhc3MgRXZlbnRMb29wVGVzdHNNaXhpbjoKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoZl9jKQorIAorICAgICAgICAgIyBjbG9zZSBjb25uZWN0aW9uCistICAgICAgICBwcm90by50cmFuc3BvcnQuY2xvc2UoKQorKyAgICAgICAgIyB0cmFuc3BvcnQgbWF5IGJlIE5vbmUgd2l0aCBUTFMgMS4zLCBiZWNhdXNlIGNvbm5lY3Rpb24gaXMKKysgICAgICAgICMgaW50ZXJydXB0ZWQsIHNlcnZlciBpcyB1bmFibGUgdG8gc2VuZCBzZXNzaW9uIHRpY2tldHMsIGFuZAorKyAgICAgICAgIyB0cmFuc3BvcnQgaXMgY2xvc2VkLgorKyAgICAgICAgaWYgcHJvdG8udHJhbnNwb3J0IGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIHByb3RvLnRyYW5zcG9ydC5jbG9zZSgpCisgICAgICAgICBzZXJ2ZXIuY2xvc2UoKQorIAorICAgICBkZWYgdGVzdF9sZWdhY3lfY3JlYXRlX3NlcnZlcl9zc2xfbWF0Y2hfZmFpbGVkKHNlbGYpOgorZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IDFhY2MxMmVjMmQuLmEyZTFkMzJhNjIgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC03OCw2ICs3OCw3IEBAIE9QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCisgT1BfU0lOR0xFX0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCisgT1BfU0lOR0xFX0VDREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQorIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKytPUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVCA9IGdldGF0dHIoc3NsLCAiT1BfRU5BQkxFX01JRERMRUJPWF9DT01QQVQiLCAwKQorIAorIAorIGRlZiBoYW5kbGVfZXJyb3IocHJlZml4KToKK0BAIC0xNTUsOCArMTU2LDggQEAgY2xhc3MgQmFzaWNTb2NrZXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzc2wuT1BfTk9fVExTdjEKKyAgICAgICAgIHNzbC5PUF9OT19UTFN2MV8zCisgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMCwgMSk6CistICAgICAgICAgICAgc3NsLk9QX05PX1RMU3YxXzEKKy0gICAgICAgICAgICBzc2wuT1BfTk9fVExTdjFfMgorKyAgICAgICAgc3NsLk9QX05PX1RMU3YxXzEKKysgICAgICAgIHNzbC5PUF9OT19UTFN2MV8yCisgCisgICAgIGRlZiB0ZXN0X3N0cl9mb3JfZW51bXMoc2VsZik6CisgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBQUk9UT0NPTF8qIGNvbnN0YW50cyBoYXZlIGVudW0tbGlrZSBzdHJpbmcKK0BAIC04NTQsNyArODU1LDggQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGRlZmF1bHQgPSAoc3NsLk9QX0FMTCB8IHNzbC5PUF9OT19TU0x2MiB8IHNzbC5PUF9OT19TU0x2MykKKyAgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorICAgICAgICAgZGVmYXVsdCB8PSAoT1BfTk9fQ09NUFJFU1NJT04gfCBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgfAorLSAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0RIX1VTRSB8IE9QX1NJTkdMRV9FQ0RIX1VTRSkKKysgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UgfAorKyAgICAgICAgICAgICAgICAgICAgT1BfRU5BQkxFX01JRERMRUJPWF9DT01QQVQpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQsIGN0eC5vcHRpb25zKQorICAgICAgICAgY3R4Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQorQEAgLTE4NjAsMTEgKzE4NjIsMjYgQEAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZWxlY3RlZF9ucG5fcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCisgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZWxlY3RlZF9hbHBuX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSkKKy0gICAgICAgICAgICAgICAgZXhjZXB0IChzc2wuU1NMRXJyb3IsIENvbm5lY3Rpb25SZXNldEVycm9yKSBhcyBlOgorKyAgICAgICAgICAgICAgICBleGNlcHQgKENvbm5lY3Rpb25SZXNldEVycm9yLCBCcm9rZW5QaXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAjIFdlIHRyZWF0IENvbm5lY3Rpb25SZXNldEVycm9yIGFzIHRob3VnaCBpdCB3ZXJlIGFuCisgICAgICAgICAgICAgICAgICAgICAjIFNTTEVycm9yIC0gT3BlblNTTCBvbiBVYnVudHUgYWJydXB0bHkgY2xvc2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdoZW4gYXNrZWQgdG8gdXNlIGFuIHVuc3VwcG9ydGVkIHByb3RvY29sLgorICAgICAgICAgICAgICAgICAgICAgIworKyAgICAgICAgICAgICAgICAgICAgIyBCcm9rZW5QaXBlRXJyb3IgaXMgcmFpc2VkIGluIFRMUyAxLjMgbW9kZSwgd2hlbiBPcGVuU1NMCisrICAgICAgICAgICAgICAgICAgICAjIHRyaWVzIHRvIHNlbmQgc2Vzc2lvbiB0aWNrZXRzIGFmdGVyIGhhbmRzaGFrZS4KKysgICAgICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9pc3N1ZXMvNjM0MgorKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY29ubl9lcnJvcnMuYXBwZW5kKHN0cihlKSkKKysgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyLmNoYXR0eToKKysgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZXJyb3IoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiBzZXJ2ZXI6ICBiYWQgY29ubmVjdGlvbiBhdHRlbXB0IGZyb20gIiArIHJlcHIoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZHIpICsgIjpcbiIpCisrICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmcgPSBGYWxzZQorKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKysgICAgICAgICAgICAgICAgZXhjZXB0IChzc2wuU1NMRXJyb3IsIE9TRXJyb3IpIGFzIGU6CisrICAgICAgICAgICAgICAgICAgICAjIE9TRXJyb3IgbWF5IG9jY3VyIHdpdGggd3JvbmcgcHJvdG9jb2xzLCBlLmcuIGJvdGgKKysgICAgICAgICAgICAgICAgICAgICMgc2lkZXMgdXNlIFBST1RPQ09MX1RMU19TRVJWRVIuCisrICAgICAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgICAgICAjIFhYWCBWYXJpb3VzIGVycm9ycyBjYW4gaGF2ZSBoYXBwZW5lZCBoZXJlLCBmb3IgZXhhbXBsZQorICAgICAgICAgICAgICAgICAgICAgIyBhIG1pc21hdGNoaW5nIHByb3RvY29sIHZlcnNpb24sIGFuIGludmFsaWQgY2VydGlmaWNhdGUsCisgICAgICAgICAgICAgICAgICAgICAjIG9yIGEgbG93LWxldmVsIGJ1Zy4gVGhpcyBzaG91bGQgYmUgbWFkZSBtb3JlIGRpc2NyaW1pbmF0aW5nLgorQEAgLTI5NzQsNyArMjk5MSw3IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgICMgQmxvY2sgb24gdGhlIGFjY2VwdCBhbmQgd2FpdCBvbiB0aGUgY29ubmVjdGlvbiB0byBjbG9zZS4KKyAgICAgICAgICAgICAgICAgZXZ0LnNldCgpCisgICAgICAgICAgICAgICAgIHJlbW90ZSwgcGVlciA9IHNlcnZlci5hY2NlcHQoKQorLSAgICAgICAgICAgICAgICByZW1vdGUucmVjdigxKQorKyAgICAgICAgICAgICAgICByZW1vdGUuc2VuZChyZW1vdGUucmVjdig0KSkKKyAKKyAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VydmUpCisgICAgICAgICAgICAgdC5zdGFydCgpCitAQCAtMjk4Miw2ICsyOTk5LDggQEAgZWxzZToKKyAgICAgICAgICAgICBldnQud2FpdCgpCisgICAgICAgICAgICAgY2xpZW50ID0gY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpCisgICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKGhvc3QsIHBvcnQpKQorKyAgICAgICAgICAgIGNsaWVudC5zZW5kKGInZGF0YScpCisrICAgICAgICAgICAgY2xpZW50LnJlY3YoKQorICAgICAgICAgICAgIGNsaWVudF9hZGRyID0gY2xpZW50LmdldHNvY2tuYW1lKCkKKyAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgIHQuam9pbigpCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDgtMTQtMDgtNTctMDEuYnBvLTMyOTQ3Lm1xU3RWVy5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wOC0xNC0wOC01Ny0wMS5icG8tMzI5NDcubXFTdFZXLnJzdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI4ZGUzNjBjMzYKKy0tLSAvZGV2L251bGwKKysrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA4LTE0LTA4LTU3LTAxLmJwby0zMjk0Ny5tcVN0VlcucnN0CitAQCAtMCwwICsxLDIgQEAKKytBZGQgT1BfRU5BQkxFX01JRERMRUJPWF9DT01QQVQgYW5kIHRlc3Qgd29ya2Fyb3VuZCBmb3IgVExTdjEuMyBmb3IgZnV0dXJlCisrY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wgMS4xLjEuCitkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYworaW5kZXggYzcxZDg5NjA3Yy4uZWIxMjNhODdiYSAxMDA2NDQKKy0tLSBhL01vZHVsZXMvX3NzbC5jCisrKysgYi9Nb2R1bGVzL19zc2wuYworQEAgLTQ4NTgsNiArNDg1OCwxMCBAQCBQeUluaXRfX3NzbCh2b2lkKQorICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fQ09NUFJFU1NJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfTk9fQ09NUFJFU1NJT04pOworICNlbmRpZgorKyNpZmRlZiBTU0xfT1BfRU5BQkxFX01JRERMRUJPWF9DT01QQVQKKysgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUKTsKKysjZW5kaWYKKyAKKyAjaWYgSEFWRV9TTkkKKyAgICAgciA9IFB5X1RydWU7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDA0LWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDQtYnBvLTMzNTcwLVRMUy0xLjMtY2lwaGVycy1mb3ItT3BlblNTTC0xLjEuMS1HSC02OTc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5N2Q1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDA0LWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorRnJvbSAwYzkzNTQzNjJiZmE1ZjkwZmJlYThmZjgyMzdhMWYxZjVkYmE2ODZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CitEYXRlOiBXZWQsIDEyIFNlcCAyMDE4IDE1OjIwOjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGJwby0zMzU3MDogVExTIDEuMyBjaXBoZXJzIGZvciBPcGVuU1NMIDEuMS4xIChHSC02OTc2KQorCitDaGFuZ2UgVExTIDEuMyBjaXBoZXIgc3VpdGUgc2V0dGluZ3MgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBPcGVuU1NMCisxLjEuMS1wcmU2IGFuZCBuZXdlci4gT3BlblNTTCAxLjEuMSB3aWxsIGhhdmUgVExTIDEuMyBjaXBlcnMgZW5hYmxlZCBieQorZGVmYXVsdC4KKworQWxzbyB1cGRhdGUgbXVsdGlzc2x0ZXN0cyBhbmQgVHJhdmlzIGNvbmZpZyB0byB0ZXN0IHdpdGggbGF0ZXN0IE9wZW5TU0wuCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZThlYjZjYjc5MjBkZWQ2NmFiYzVkMjg0MzE5YTg1MzliZGMyYmFlMykKKworQ28tYXV0aG9yZWQtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzNlNjMwYzU0MWIzNWM5NmJmZTU2MTkxNjUyNTVlNTU5ZjU3N2VlNzFdCisKK1R3ZWFrZWQgcGF0Y2ggdG8gbm90IHRha2UgY2hhbmdlcyBmb3IgbXVsdGlzc2x0ZXN0cyBhbmQgVHJhdmlzIGNvbmZpZy4KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5IHwgNTEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCBhMmUxZDMyYTYyLi5jNDg0ZWFkNWZmIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtMzAyNCwxNyArMzAyNCwyMSBAQCBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgc29jay5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PVENPTk4pCisgCistICAgICAgICBkZWYgdGVzdF9kZWZhdWx0X2NpcGhlcnMoc2VsZik6CistICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCistICAgICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgICAgICAjIEZvcmNlIGEgc2V0IG9mIHdlYWsgY2lwaGVycyBvbiBvdXIgY2xpZW50IGNvbnRleHQKKy0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycygiREVTIikKKy0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yOgorLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyBERVMgY2lwaGVyIGF2YWlsYWJsZSIpCistICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UpIGFzIHNlcnZlcjoKKy0gICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKysgICAgICAgIGRlZiB0ZXN0X25vX3NoYXJlZF9jaXBoZXJzKHNlbGYpOgorKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKysgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFKQorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKysgICAgICAgICAgICBjbGllbnRfY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisrCisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuc2V0X2NpcGhlcnMoIkFFUzEyOCIpCisrICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2NpcGhlcnMoIkFFUzI1NiIpCisrICAgICAgICAgICAgIyBPcGVuU1NMIGVuYWJsZXMgYWxsIFRMUyAxLjMgY2lwaGVycywgZW5mb3JjZSBUTFMgMS4yIGZvciB0ZXN0CisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMworKyAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9c2VydmVyX2NvbnRleHQpIGFzIHNlcnZlcjoKKysgICAgICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldCgKKysgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc29ja2V0KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJsb2NhbGhvc3QiKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJubyBzaGFyZWQgY2lwaGVyIiwgc3RyKHNlcnZlci5jb25uX2Vycm9yc1swXSkpCitAQCAtMzA2Nyw5ICszMDcxLDkgQEAgZWxzZToKKyAgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzLmNpcGhlcigpWzBdLCBbCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0yNTYtR0NNLVNIQTM4NCcsCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NicsCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0xMjgtR0NNLVNIQTI1NicsCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMU19BRVNfMjU2X0dDTV9TSEEzODQnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICdUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2JywKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTX0FFU18xMjhfR0NNX1NIQTI1NicsCisgICAgICAgICAgICAgICAgICAgICBdKQorIAorICAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAidGVzdCByZXF1aXJlcyBFQ0RILWVuYWJsZWQgT3BlblNTTCIpCitAQCAtMzM5MSwyMiArMzM5NSwxOSBAQCBlbHNlOgorICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKy0gICAgICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDAsIDIpOgorLSAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfY2lwaGVycygiQUVTMTI4OkFFUzI1NiIpCistICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVMyNTYiKQorLSAgICAgICAgICAgICAgICBhbGcxID0gIkFFUzI1NiIKKy0gICAgICAgICAgICAgICAgYWxnMiA9ICJBRVMtMjU2IgorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVM6M0RFUyIpCistICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9jaXBoZXJzKCIzREVTIikKKy0gICAgICAgICAgICAgICAgYWxnMSA9ICIzREVTIgorLSAgICAgICAgICAgICAgICBhbGcyID0gIkRFUy1DQkMzIgorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVMxMjg6QUVTMjU2IikKKysgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfY2lwaGVycygiQUVTMjU2IikKKysgICAgICAgICAgICBleHBlY3RlZF9hbGdzID0gWworKyAgICAgICAgICAgICAgICAiQUVTMjU2IiwgIkFFUy0yNTYiLAorKyAgICAgICAgICAgICAgICAgIyBUTFMgMS4zIGNpcGhlcnMgYXJlIGFsd2F5cyBlbmFibGVkCisrICAgICAgICAgICAgICAgICAiVExTX0NIQUNIQTIwIiwgIlRMU19BRVMiLAorKyAgICAgICAgICAgIF0KKyAKKyAgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICAgY2lwaGVycyA9IHN0YXRzWydzZXJ2ZXJfc2hhcmVkX2NpcGhlcnMnXVswXQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2lwaGVycyksIDApCisgICAgICAgICAgICAgZm9yIG5hbWUsIHRsc192ZXJzaW9uLCBiaXRzIGluIGNpcGhlcnM6CistICAgICAgICAgICAgICAgIGlmIG5vdCBhbGcxIGluIG5hbWUuc3BsaXQoIi0iKSBhbmQgYWxnMiBub3QgaW4gbmFtZToKKysgICAgICAgICAgICAgICAgaWYgbm90IGFueSAoYWxnIGluIG5hbWUgZm9yIGFsZyBpbiBleHBlY3RlZF9hbGdzKToKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbChuYW1lKQorIAorICAgICAgICAgZGVmIHRlc3RfcmVhZF93cml0ZV9hZnRlcl9jbG9zZV9yYWlzZXNfdmFsdWVycm9yKHNlbGYpOgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwNS1icG8tMzA3MTQtQUxQTi1jaGFuZ2VzLWZvci1PcGVuU1NMLTEuMS4wZi0yMzA1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwNS1icG8tMzA3MTQtQUxQTi1jaGFuZ2VzLWZvci1PcGVuU1NMLTEuMS4wZi0yMzA1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MDk4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDA1LWJwby0zMDcxNC1BTFBOLWNoYW5nZXMtZm9yLU9wZW5TU0wtMS4xLjBmLTIzMDUucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSA3YjQwY2I3MjkzY2IxNGU1YzdjOGVkMTIzZWZhZjlhY2IzM2VkYWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDEwOjMzOjQzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJwby0zMDcxNDogQUxQTiBjaGFuZ2VzIGZvciBPcGVuU1NMIDEuMS4wZiAoIzIzMDUpCisKK09wZW5TU0wgMS4xLjAgdG8gMS4xLjBlIGFib3J0ZWQgdGhlIGhhbmRzaGFrZSB3aGVuIHNlcnZlciBhbmQgY2xpZW50Citjb3VsZCBub3QgYWdyZWUgb24gYSBwcm90b2NvbCB1c2luZyBBTFBOLiBPcGVuU1NMIDEuMS4wZiBjaGFuZ2VkIHRoYXQuCitUaGUgbW9zdCByZWNlbnQgdmVyc2lvbiBub3cgYmVoYXZlcyBsaWtlIE9wZW5TU0wgMS4wLjIgYWdhaW4uIFRoZSBBTFBOCitjYWxsYmFjayBjYW4gcHJldGVuZCB0byBub3QgYmVlbiBzZXQuCisKK1NlZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvMzE1OCBmb3IgbW9yZSBkZXRhaWxzCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC83YjQwY2I3MjkzY2IxNGU1YzdjOGVkMTIzZWZhZjlhY2IzM2VkYWUyXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgRG9jL2xpYnJhcnkvc3NsLnJzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSArKystLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrLS0KKyAuLi4vbmV4dC9UZXN0cy8yMDE3LTA3LTI1LTE1LTI3LTQ0LmJwby0zMDcxNS5TcDdiVEYucnN0ICAgICAgfCAyICsrCisgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxNy0wNy0yNS0xNS0yNy00NC5icG8tMzA3MTUuU3A3YlRGLnJzdAorCitkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKK2luZGV4IDcyOWEyMzlhMWIuLjBhMDllN2U5ZDQgMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitAQCAtMTQ0Nyw4ICsxNDQ3LDkgQEAgdG8gc3BlZWQgdXAgcmVwZWF0ZWQgY29ubmVjdGlvbnMgZnJvbSB0aGUgc2FtZSBjbGllbnRzLgorICAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgOmRhdGE6YEhBU19BTFBOYCBpcworICAgIEZhbHNlLgorIAorLSAgIE9wZW5TU0wgMS4xLjArIHdpbGwgYWJvcnQgdGhlIGhhbmRzaGFrZSBhbmQgcmFpc2UgOmV4YzpgU1NMRXJyb3JgIHdoZW4KKy0gICBib3RoIHNpZGVzIHN1cHBvcnQgQUxQTiBidXQgY2Fubm90IGFncmVlIG9uIGEgcHJvdG9jb2wuCisrICAgT3BlblNTTCAxLjEuMCB0byAxLjEuMGUgd2lsbCBhYm9ydCB0aGUgaGFuZHNoYWtlIGFuZCByYWlzZSA6ZXhjOmBTU0xFcnJvcmAKKysgICB3aGVuIGJvdGggc2lkZXMgc3VwcG9ydCBBTFBOIGJ1dCBjYW5ub3QgYWdyZWUgb24gYSBwcm90b2NvbC4gMS4xLjBmKworKyAgIGJlaGF2ZXMgbGlrZSAxLjAuMiwgOm1ldGg6YFNTTFNvY2tldC5zZWxlY3RlZF9hbHBuX3Byb3RvY29sYCByZXR1cm5zIE5vbmUuCisgCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQoraW5kZXggZDk2MGQ4MjA2NS4uMTA0YjdmMzc3YSAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQorQEAgLTMyNjgsOCArMzI2OCw5IEBAIGlmIF9oYXZlX3RocmVhZHM6CisgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgIHN0YXRzID0gZQorIAorLSAgICAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lIGFuZCBJU19PUEVOU1NMXzFfMToKKy0gICAgICAgICAgICAgICAgICAgICMgT3BlblNTTCAxLjEuMCByYWlzZXMgaGFuZHNoYWtlIGVycm9yCisrICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZCBpcyBOb25lIGFuZCBJU19PUEVOU1NMXzFfMQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMSwgMCwgNikpOgorKyAgICAgICAgICAgICAgICAgICAgIyBPcGVuU1NMIDEuMS4wIHRvIDEuMS4wZSByYWlzZXMgaGFuZHNoYWtlIGVycm9yCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3RhdHMsIHNzbC5TU0xFcnJvcikKKyAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJmYWlsZWQgdHJ5aW5nICVzIChzKSBhbmQgJXMgKGMpLlxuIiBcCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE3LTA3LTI1LTE1LTI3LTQ0LmJwby0zMDcxNS5TcDdiVEYucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE3LTA3LTI1LTE1LTI3LTQ0LmJwby0zMDcxNS5TcDdiVEYucnN0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uODgzOTRlNTg1YworLS0tIC9kZXYvbnVsbAorKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE3LTA3LTI1LTE1LTI3LTQ0LmJwby0zMDcxNS5TcDdiVEYucnN0CitAQCAtMCwwICsxLDIgQEAKKytBZGRyZXNzIEFMUE4gY2FsbGJhY2sgY2hhbmdlcyBmb3IgT3BlblNTTCAxLjEuMGYuIFRoZSBsYXRlc3QgdmVyc2lvbiBiZWhhdmVzCisrbGlrZSBPcGVuU1NMIDEuMC4yIGFuZCBubyBsb25nZXIgYWJvcnRzIGhhbmRzaGFrZS4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0NWRS0yMDE4LTEwNjEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9DVkUtMjAxOC0xMDYxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzczYmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0NWRS0yMDE4LTEwNjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotRnJvbSA2ZDdlZjM5MTk4ODU2Mzk1ZWRkNjJlZjE0M2JmY2ZhYWYyZWQ2ZTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmVkIERlaWx5IDxuYWRAcHl0aG9uLm9yZz4KLURhdGU6IFN1biwgMTEgTWFyIDIwMTggMTQ6Mjk6MDUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gWzMuNV0gYnBvLTMyOTgxOiBGaXggY2F0YXN0cm9waGljIGJhY2t0cmFja2luZyB2dWxucwotIChHSC01OTU1KSAoIzYwMzQpCi0KLSogUHJldmVudCBsb3ctZ3JhZGUgcG9wbGliIFJFRE9TIChDVkUtMjAxOC0xMDYwKQotCi1UaGUgcmVnZXggdG8gdGVzdCBhIG1haWwgc2VydmVyJ3MgdGltZXN0YW1wIGlzIHN1c2NlcHRpYmxlIHRvCi1jYXRhc3Ryb3BoaWMgYmFja3RyYWNraW5nIG9uIGxvbmcgZXZpbCByZXNwb25zZXMgZnJvbSB0aGUgc2VydmVyLgotCi1IYXBwaWx5LCB0aGUgbWF4aW11bSBsZW5ndGggb2YgbWFsaWNpb3VzIGlucHV0cyBpcyAySyB0aGFua3MKLXRvIGEgbGltaXQgaW50cm9kdWNlZCBpbiB0aGUgZml4IGZvciBDVkUtMjAxMy0xNzUyLgotCi1BIDJLQiBldmlsIHJlc3BvbnNlIGZyb20gdGhlIG1haWwgc2VydmVyIHdvdWxkIHJlc3VsdCBpbiBzbWFsbCBzbG93ZG93bnMKLShtaWxsaXNlY29uZHMgdnMuIG1pY3Jvc2Vjb25kcykgYWNjdW11bGF0ZWQgb3ZlciBtYW55IGFwb3AgY2FsbHMuCi1UaGlzIGlzIGEgcG90ZW50aWFsIERPUyB2ZWN0b3IgdmlhIGFjY3VtdWxhdGVkIHNsb3dkb3ducy4KLQotUmVwbGFjZSBpdCB3aXRoIGEgc2ltaWxhciBub24tdnVsbmVyYWJsZSByZWdleC4KLQotVGhlIG5ldyByZWdleCBpcyBSRkMgY29tcGxpYW50LgotVGhlIG9sZCByZWdleCB3YXMgbm9uLWNvbXBsaWFudCBpbiBlZGdlIGNhc2VzLgotCi0qIFByZXZlbnQgZGlmZmxpYiBSRURPUyAoQ1ZFLTIwMTgtMTA2MSkKLQotVGhlIGRlZmF1bHQgcmVnZXggZm9yIElTX0xJTkVfSlVOSyBpcyBzdXNjZXB0aWJsZSB0bwotY2F0YXN0cm9waGljIGJhY2t0cmFja2luZy4KLVRoaXMgaXMgYSBwb3RlbnRpYWwgRE9TIHZlY3Rvci4KLQotUmVwbGFjZSBpdCB3aXRoIGFuIGVxdWl2YWxlbnQgbm9uLXZ1bG5lcmFibGUgcmVnZXguCi0KLUFsc28gaW50cm9kdWNlIHVuaXQgYW5kIFJFRE9TIHRlc3RzIGZvciBkaWZmbGliLgotCi1Dby1hdXRob3JlZC1ieTogVGltIFBldGVycyA8dGltLnBldGVyc0BnbWFpbC5jb20+Ci1Dby1hdXRob3JlZC1ieTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+LgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMGU2YzhlZTIzNThhMmUyMzExNzUwMTgyNmMwMDg4NDJhY2I4MzVhYykKLUNWRTogQ1ZFLTIwMTgtMTA2MQotQ1ZFOiBDVkUtMjAxOC0xMDYwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzkzN2FjMWZlMDY5YTRkYzg0NzFkZmYyMDVmNTUzZDgyZTcyNDAxNWJdCi1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gTGliL2RpZmZsaWIucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBMaWIvcG9wbGliLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIExpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weSAgICAgICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0KLSBMaWIvdGVzdC90ZXN0X3BvcGxpYi5weSAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrKystCi0gTWlzYy9BQ0tTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIC4uLi8yMDE4LTAzLTAyLTEwLTI0LTUyLmJwby0zMjk4MS5PX3FEeWoucnN0ICB8ICA0ICsrKysKLSA2IGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wMy0wMi0xMC0yNC01Mi5icG8tMzI5ODEuT19xRHlqLnJzdAotCi1kaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQotaW5kZXggMDc2YmJhYzAxZC4uYjRlYzMzNTA1NiAxMDA2NDQKLS0tLSBhL0xpYi9kaWZmbGliLnB5Ci0rKysgYi9MaWIvZGlmZmxpYi5weQotQEAgLTEwODMsNyArMTA4Myw3IEBAIGNsYXNzIERpZmZlcjoKLSAKLSBpbXBvcnQgcmUKLSAKLS1kZWYgSVNfTElORV9KVU5LKGxpbmUsIHBhdD1yZS5jb21waWxlKHIiXHMqIz9ccyokIikubWF0Y2gpOgotK2RlZiBJU19MSU5FX0pVTksobGluZSwgcGF0PXJlLmNvbXBpbGUociJccyooPzojXHMqKT8kIikubWF0Y2gpOgotICAgICByIiIiCi0gICAgIFJldHVybiAxIGZvciBpZ25vcmFibGUgbGluZTogaWZmIGBsaW5lYCBpcyBibGFuayBvciBjb250YWlucyBhIHNpbmdsZSAnIycuCi0gCi1kaWZmIC0tZ2l0IGEvTGliL3BvcGxpYi5weSBiL0xpYi9wb3BsaWIucHkKLWluZGV4IDUxNmI2ZjA2MGQuLjI0MzdlYTBlMjcgMTAwNjQ0Ci0tLS0gYS9MaWIvcG9wbGliLnB5Ci0rKysgYi9MaWIvcG9wbGliLnB5Ci1AQCAtMzA4LDcgKzMwOCw3IEBAIGNsYXNzIFBPUDM6Ci0gICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ1JQT1AgJXMnICUgdXNlcikKLSAKLSAKLS0gICAgdGltZXN0YW1wID0gcmUuY29tcGlsZShicidcK09LLiooPFtePl0rPiknKQotKyAgICB0aW1lc3RhbXAgPSByZS5jb21waWxlKGJyJ1wrT0suW148XSooPC4qPiknKQotIAotICAgICBkZWYgYXBvcChzZWxmLCB1c2VyLCBwYXNzd29yZCk6Ci0gICAgICAgICAiIiJBdXRob3Jpc2F0aW9uCi1kaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5Ci1pbmRleCBhYjlkZWJmOGUyLi5iNmM4YTdkZDViIDEwMDY0NAotLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5Ci0rKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKLUBAIC00NjYsMTMgKzQ2NiwzMyBAQCBjbGFzcyBUZXN0Qnl0ZXModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgICAgIGxpc3QoZ2VuZXJhdG9yKCphcmdzKSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBzdHIoY3R4LmV4Y2VwdGlvbikpCi0gCi0rY2xhc3MgVGVzdEp1bmtBUElzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSsgICAgZGVmIHRlc3RfaXNfbGluZV9qdW5rX3RydWUoc2VsZik6Ci0rICAgICAgICBmb3IgbGluZSBpbiBbJyMnLCAnICAnLCAnICMnLCAnIyAnLCAnICMgJywgJyddOgotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWZmbGliLklTX0xJTkVfSlVOSyhsaW5lKSwgcmVwcihsaW5lKSkKLSsKLSsgICAgZGVmIHRlc3RfaXNfbGluZV9qdW5rX2ZhbHNlKHNlbGYpOgotKyAgICAgICAgZm9yIGxpbmUgaW4gWycjIycsICcgIyMnLCAnIyMgJywgJ2FiYyAnLCAnYWJjICMnLCAnTXIuIE1vb3NlIGlzIHVwISddOgotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlmZmxpYi5JU19MSU5FX0pVTksobGluZSksIHJlcHIobGluZSkpCi0rCi0rICAgIGRlZiB0ZXN0X2lzX2xpbmVfanVua19SRURPUyhzZWxmKToKLSsgICAgICAgIGV2aWxfaW5wdXQgPSAoJ1x0JyAqIDEwMDAwMDApICsgJyMjJwotKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWZmbGliLklTX0xJTkVfSlVOSyhldmlsX2lucHV0KSkKLSsKLSsgICAgZGVmIHRlc3RfaXNfY2hhcmFjdGVyX2p1bmtfdHJ1ZShzZWxmKToKLSsgICAgICAgIGZvciBjaGFyIGluIFsnICcsICdcdCddOgotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWZmbGliLklTX0NIQVJBQ1RFUl9KVU5LKGNoYXIpLCByZXByKGNoYXIpKQotKwotKyAgICBkZWYgdGVzdF9pc19jaGFyYWN0ZXJfanVua19mYWxzZShzZWxmKToKLSsgICAgICAgIGZvciBjaGFyIGluIFsnYScsICcjJywgJ1xuJywgJ1xmJywgJ1xyJywgJ1x2J106Ci0rICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWZmbGliLklTX0NIQVJBQ1RFUl9KVU5LKGNoYXIpLCByZXByKGNoYXIpKQotIAotIGRlZiB0ZXN0X21haW4oKToKLSAgICAgZGlmZmxpYi5IdG1sRGlmZi5fZGVmYXVsdF9wcmVmaXggPSAwCi0gICAgIERvY3Rlc3RzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoZGlmZmxpYikKLSAgICAgcnVuX3VuaXR0ZXN0KAotICAgICAgICAgVGVzdFdpdGhBc2NpaSwgVGVzdEF1dG9qdW5rLCBUZXN0U0ZwYXRjaGVzLCBUZXN0U0ZidWdzLAotLSAgICAgICAgVGVzdE91dHB1dEZvcm1hdCwgVGVzdEJ5dGVzLCBEb2N0ZXN0cykKLSsgICAgICAgIFRlc3RPdXRwdXRGb3JtYXQsIFRlc3RCeXRlcywgVGVzdEp1bmtBUElzLCBEb2N0ZXN0cykKLSAKLSBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICB0ZXN0X21haW4oKQotZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKLWluZGV4IGJjZWViOTNhZDEuLjc5OWU0MDM2NTIgMTAwNjQ0Ci0tLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQotKysrIGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKLUBAIC0zMDAsOSArMzAwLDE5IEBAIGNsYXNzIFRlc3RQT1AzQ2xhc3MoVGVzdENhc2UpOgotICAgICBkZWYgdGVzdF9ycG9wKHNlbGYpOgotICAgICAgICAgc2VsZi5hc3NlcnRPSyhzZWxmLmNsaWVudC5ycG9wKCdmb28nKSkKLSAKLS0gICAgZGVmIHRlc3RfYXBvcChzZWxmKToKLSsgICAgZGVmIHRlc3RfYXBvcF9ub3JtYWwoc2VsZik6Ci0gICAgICAgICBzZWxmLmFzc2VydE9LKHNlbGYuY2xpZW50LmFwb3AoJ2ZvbycsICdkdW1teXBhc3N3b3JkJykpCi0gCi0rICAgIGRlZiB0ZXN0X2Fwb3BfUkVET1Moc2VsZik6Ci0rICAgICAgICAjIFJlcGxhY2Ugd2VsY29tZSB3aXRoIHZlcnkgbG9uZyBldmlsIHdlbGNvbWUuCi0rICAgICAgICAjIE5CIFRoZSB1cHBlciBib3VuZCBvbiB3ZWxjb21lIGxlbmd0aCBpcyBjdXJyZW50bHkgMjA0OC4KLSsgICAgICAgICMgQXQgdGhpcyBsZW5ndGgsIGV2aWwgaW5wdXQgbWFrZXMgZWFjaCBhcG9wIGNhbGwgdGFrZQotKyAgICAgICAgIyBvbiB0aGUgb3JkZXIgb2YgbWlsbGlzZWNvbmRzIGluc3RlYWQgb2YgbWljcm9zZWNvbmRzLgotKyAgICAgICAgZXZpbF93ZWxjb21lID0gYicrT0snICsgKGInPCcgKiAxMDAwMDAwKQotKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuc3dhcF9hdHRyKHNlbGYuY2xpZW50LCAnd2VsY29tZScsIGV2aWxfd2VsY29tZSk6Ci0rICAgICAgICAgICAgIyBUaGUgZXZpbCB3ZWxjb21lIGlzIGludmFsaWQsIHNvIGFwb3Agc2hvdWxkIHRocm93LgotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBvcGxpYi5lcnJvcl9wcm90bywgc2VsZi5jbGllbnQuYXBvcCwgJ2EnLCAna2InKQotKwotICAgICBkZWYgdGVzdF90b3Aoc2VsZik6Ci0gICAgICAgICBleHBlY3RlZCA9ICAoYicrT0sgMTE2IGJ5dGVzJywKLSAgICAgICAgICAgICAgICAgICAgICBbYidGcm9tOiBwb3N0bWFzdGVyQHB5dGhvbi5vcmcnLCBiJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbicsCi1kaWZmIC0tZ2l0IGEvTWlzYy9BQ0tTIGIvTWlzYy9BQ0tTCi1pbmRleCAxYTM1YWFkNjZjLi43MmM1ZDc0MGJkIDEwMDY0NAotLS0tIGEvTWlzYy9BQ0tTCi0rKysgYi9NaXNjL0FDS1MKLUBAIC0zNDEsNiArMzQxLDcgQEAgS3VzaGFsIERhcwotIEpvbmF0aGFuIERhc3RlZWwKLSBQaWVycmUtWXZlcyBEYXZpZAotIEEuIEplc3NlIEppcnl1IERhdmlzCi0rSmFtaWUgKEphbWVzIEMuKSBEYXZpcwotIE1lcmxpam4gdmFuIERlZW4KLSBKb2huIERlR29vZAotIE5lZCBEZWlseQotZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wMy0wMi0xMC0yNC01Mi5icG8tMzI5ODEuT19xRHlqLnJzdCBiL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wMy0wMi0xMC0yNC01Mi5icG8tMzI5ODEuT19xRHlqLnJzdAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjllYmFiYjQ0ZjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wMy0wMi0xMC0yNC01Mi5icG8tMzI5ODEuT19xRHlqLnJzdAotQEAgLTAsMCArMSw0IEBACi0rUmVnZXhlcyBpbiBkaWZmbGliIGFuZCBwb3BsaWIgd2VyZSB2dWxuZXJhYmxlIHRvIGNhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuCi0rVGhlc2UgcmVnZXhlcyBmb3JtZWQgcG90ZW50aWFsIERPUyB2ZWN0b3JzIChSRURPUykuIFRoZXkgaGF2ZSBiZWVuCi0rcmVmYWN0b3JlZC4gVGhpcyByZXNvbHZlcyBDVkUtMjAxOC0xMDYwIGFuZCBDVkUtMjAxOC0xMDYxLgotK1BhdGNoIGJ5IEphbWllIERhdmlzLgotLS0gCi0yLjE5LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvVXNlLWNvcnJlY3QtQ0ZMQUdTLWZvci1leHRlbnNpb25zLXdoZW4tY3Jvc3MtY29tcGlsaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL1VzZS1jb3JyZWN0LUNGTEFHUy1mb3ItZXh0ZW5zaW9ucy13aGVuLWNyb3NzLWNvbXBpbGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3NGVmNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL1VzZS1jb3JyZWN0LUNGTEFHUy1mb3ItZXh0ZW5zaW9ucy13aGVuLWNyb3NzLWNvbXBpbGkucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA3ZmQxMjFiYjdkNmMyNWMyZTBhMWMzMWNmNzZmYjliZDRhOTc5NGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFya3VzIExlaHRvbmVuIDxtYXJrdXMubGVodG9uZW5AbGludXguaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxNCBBdWcgMjAxOCAxNDoxMTozNSArMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gVXNlIGNvcnJlY3QgQ0ZMQUdTIGZvciBleHRlbnNpb25zIHdoZW4gY3Jvc3MtY29tcGlsaW5nCisKK1Rha2UgUFlfQ0ZMQUdTX05PRElTVCBpbnRvIGFjY291bnQsIGxpa2UgaW4gbmF0aXZlIGJ1aWxkLiBUaGlzIGlzIG5lZWRlZAoraW4gb3JkZXIgdG8gdG8gcHJvZmlsZS1vcHRpbWl6ZWQgYnVpbGQuIEFsc28sIHBhc3MgRVhUUkFfQ0ZMQUdTIHRvCitwcm9maWxlLW9wdGltaXplZCBidWlsZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmt1cyBMZWh0b25lbiA8bWFya3VzLmxlaHRvbmVuQGxpbnV4LmludGVsLmNvbT4KKy0tLQorIE1ha2VmaWxlLnByZS5pbiB8IDQgKystLQorIHNldHVwLnB5ICAgICAgICB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KK2luZGV4IGUyZDVkM2QuLjg0YmMzZmYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrKyBiL01ha2VmaWxlLnByZS5pbgorQEAgLTQ3OCw3ICs0NzgsNyBAQCBwcm9maWxlLW9wdDoKKyAJJChNQUtFKSBwcm9maWxlLXJlbW92YWwKKyAKKyBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKKy0JJChNQUtFKSBAREVGX01BS0VfUlVMRUAgQ0ZMQUdTX05PRElTVD0iJChDRkxBR1MpICQoUEdPX1BST0ZfR0VOX0ZMQUcpIEBMVE9GTEFHU0AiIExERkxBR1M9IiQoTERGTEFHUykgJChQR09fUFJPRl9HRU5fRkxBRykgQExUT0ZMQUdTQCIgTElCUz0iJChMSUJTKSIKKysJJChNQUtFKSBAREVGX01BS0VfUlVMRUAgQ0ZMQUdTX05PRElTVD0iJChDRkxBR1MpICQoRVhUUkFfQ0ZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSBATFRPRkxBR1NAIiBMREZMQUdTPSIkKExERkxBR1MpICQoUEdPX1BST0ZfR0VOX0ZMQUcpIEBMVE9GTEFHU0AiIExJQlM9IiQoTElCUykiCisgCisgcnVuX3Byb2ZpbGVfdGFzazoKKyAJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKK0BAIC00ODgsNyArNDg4LDcgQEAgYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6CisgCSQoTExWTV9QUk9GX01FUkdFUikKKyAKKyBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6CistCSQoTUFLRSkgQERFRl9NQUtFX1JVTEVAIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKFBHT19QUk9GX1VTRV9GTEFHKSBATFRPRkxBR1NAIiBMREZMQUdTPSIkKExERkxBR1MpIEBMVE9GTEFHU0AiCisrCSQoTUFLRSkgQERFRl9NQUtFX1JVTEVAIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKEVYVFJBX0NGTEFHUykgJChQR09fUFJPRl9VU0VfRkxBRykgQExUT0ZMQUdTQCIgTERGTEFHUz0iJChMREZMQUdTKSBATFRPRkxBR1NAIgorIAorICMgQ29tcGlsZSBhbmQgcnVuIHdpdGggZ2NvdgorIC5QSE9OWT1jb3ZlcmFnZSBjb3ZlcmFnZS1sY292IGNvdmVyYWdlLXJlcG9ydAorZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IGFkZDMzNDYuLjY1ZTgzYjEgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0yNjMsNyArMjYzLDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgIyBjb21waWxlcnMKKyAgICAgICAgIGlmIGNvbXBpbGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKy0gICAgICAgICAgICAgICAgKGNjc2hhcmVkLGNmbGFncykgPSAob3MuZW52aXJvbi5nZXQoJ0NDU0hBUkVEJykgb3IgJycsIG9zLmVudmlyb24uZ2V0KCdDRkxBR1MnKSBvciAnJykKKysgICAgICAgICAgICAgICAgKGNjc2hhcmVkLGNmbGFncykgPSAob3MuZW52aXJvbi5nZXQoJ0NDU0hBUkVEJykgb3IgJycsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcy5lbnZpcm9uLmdldCgnQ0ZMQUdTJykgb3IgJycpICsgJyAnICsgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWV9DRkxBR1NfTk9ESVNUJykpCisgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgKGNjc2hhcmVkLGNmbGFncykgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdDQ1NIQVJFRCcsJ0NGTEFHUycpCisgICAgICAgICAgICAgYXJnc1snY29tcGlsZXJfc28nXSA9IGNvbXBpbGVyICsgJyAnICsgY2NzaGFyZWQgKyAnICcgKyBjZmxhZ3MKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5CmluZGV4IDJmOTQ0ZjkuLmZkZGIyM2MgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvY3JlYXRlX21hbmlmZXN0My5weQpAQCAtNDMsMTk0ICs0MywyMzkgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCitpbXBvcnQgY29sbGVjdGlvbnMKKworIyBHZXQgcHl0aG9uIHZlcnNpb24gZnJvbSAke1BZVEhPTl9NQUpNSU59CitweXZlcnNpb24gPSBzdHIoc3lzLmFyZ3ZbMV0pCiAKICMgSGFjayB0byBnZXQgbmF0aXZlIHB5dGhvbiBzZWFyY2ggcGF0aCAoZm9yIGZvbGRlcnMpLCBub3QgZm9uZCBvZiBpdCBidXQgaXQgd29ya3MgZm9yIG5vdwotcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKK3Bpdm90ID0gJ3JlY2lwZS1zeXNyb290LW5hdGl2ZScKIGZvciBwIGluIHN5cy5wYXRoOgotICBpZiBwaXZvdCBpbiBwOgotICAgIG5hdGl2ZWxpYmZvbGRlcj1wWzpwLmZpbmQocGl2b3QpK2xlbihwaXZvdCldCisgICAgaWYgcGl2b3QgaW4gcDoKKyAgICAgICAgbmF0aXZlbGliZm9sZGVyID0gcFs6cC5maW5kKHBpdm90KStsZW4ocGl2b3QpXQogCiAjIEVtcHR5IGRpY3QgdG8gaG9sZCB0aGUgd2hvbGUgbWFuaWZlc3QKLW5ld19tYW5pZmVzdCA9IHt9CituZXdfbWFuaWZlc3QgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAKICMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzLCBmb2xkZXJzIGFuZCB3aWxkY2FyZHMKLWFsbGZpbGVzPVtdCi1yZXBlYXRlZD1bXQotd2lsZGNhcmRzPVtdCithbGxmaWxlcyA9IFtdCityZXBlYXRlZCA9IFtdCit3aWxkY2FyZHMgPSBbXQogCi1oYXNmb2xkZXJzPVtdCi1hbGxmb2xkZXJzPVtdCitoYXNmb2xkZXJzID0gW10KK2FsbGZvbGRlcnMgPSBbXQogCiBkZWYgaXNGb2xkZXIodmFsdWUpOgotICBpZiBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYicpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjY0JykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliMzInKSk6Ci0gICAgcmV0dXJuIFRydWUKLSAgZWxzZToKLSAgICByZXR1cm4gRmFsc2UKKyAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyR7UFlUSE9OX01BSk1JTn0nLHB5dmVyc2lvbikKKyAgICBpZiBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYicpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjY0JykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliMzInKSk6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKIGRlZiBpc0NhY2hlZChpdGVtKToKLSAgaWYgJ19fcHljYWNoZV9fJyBpbiBpdGVtOgotICAgIHJldHVybiBUcnVlCi0gIGVsc2U6Ci0gICAgcmV0dXJuIEZhbHNlCisgICAgaWYgJ19fcHljYWNoZV9fJyBpbiBpdGVtOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBGYWxzZQogCiAjIFJlYWQgZXhpc3RpbmcgSlNPTiBtYW5pZmVzdAogd2l0aCBvcGVuKCdweXRob24zLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdDoKLSAgb2xkX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdCkKKyAgICBvbGRfbWFuaWZlc3QgPSBqc29uLmxvYWQobWFuaWZlc3QsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQogCi0KKyMKICMgRmlyc3QgcGFzcyB0byBnZXQgY29yZS1wYWNrYWdlIGZ1bmN0aW9uYWxpdHksIGJlY2F1c2Ugd2UgYmFzZSBldmVyeXRoaW5nIG9uIHRoZSBmYWN0IHRoYXQgY29yZSBpcyBhY3R1YWxseSB3b3JraW5nCiAjIE5vdCBleGFjdGx5IHRoZSBzYW1lIHNvIGl0IHNob3VsZCBub3QgYmUgYSBmdW5jdGlvbgorIworCiBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBwYWNrYWdlOiBjb3JlJykKIAotIyBTcGVjaWFsIGNhbGwgdG8gY2hlY2sgZm9yIGNvcmUgcGFja2FnZQorCisjIFRoaXMgc3BlY2lhbCBjYWxsIGdldHMgdGhlIGNvcmUgZGVwZW5kZW5jaWVzIGFuZAorIyBhcHBlbmRzIHRvIHRoZSBvbGQgbWFuaWZlc3Qgc28gaXQgZG9lc250IGh1cnQgd2hhdCBpdAorIyBjdXJyZW50bHkgaG9sZHMuCisjIFRoaXMgd2F5IHdoZW4gb3RoZXIgcGFja2FnZXMgY2hlY2sgZm9yIGRlcGVuZGVuY2llcworIyBvbiB0aGUgbmV3IGNvcmUgcGFja2FnZSwgdGhleSB3aWxsIHN0aWxsIGZpbmQgdGhlbQorIyBldmVuIHdoZW4gY2hlY2tpbmcgdGhlIG9sZF9tYW5pZmVzdAorCiBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMzLnB5JywgJ3B5dGhvbi1jb3JlLXBhY2thZ2UnXSkuZGVjb2RlKCd1dGY4JykKLWZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6Ci0gICAgaWYgaXNDYWNoZWQoaXRlbSk6Ci0gICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKLSAgICAgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjawotICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCi0gICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCitmb3IgY29yZWRlcCBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICBjb3JlZGVwID0gY29yZWRlcC5yZXBsYWNlKHB5dmVyc2lvbiwnJHtQWVRIT05fTUFKTUlOfScpCisgICAgaWYgaXNDYWNoZWQoY29yZWRlcCk6CisgICAgICAgIGlmIGNvcmVkZXAgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXS5hcHBlbmQoY29yZWRlcCkKICAgICBlbHNlOgotICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjawotICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCi0gICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKLQotZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKLSAgaWYgaXNGb2xkZXIodmFsdWUpOgotICAgICMgUGFzcyBpdCBkaXJlY3RseQotICAgIGlmIGlzQ2FjaGVkKHZhbHVlKToKLSAgICAgICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKLSAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXS5hcHBlbmQodmFsdWUpCi0gICAgZWxzZToKLSAgICAgICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGFzc3VtZSBpdCB3YXMgYWRkZWQgY29ycmVjdGx5IChtYW51YWxseSkKLSAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6Ci0gICAgIyBQYXNzIGl0IGRpcmVjdGx5Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgSWdub3JlIGVtcHR5IHZhbHVlcwotICBpZiB2YWx1ZSA9PSAnJzoKLSAgICBjb250aW51ZQotICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgotICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKHZhbHVlKSkpWzBdCi0KLSAgIyBMYXVuY2ggc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBtb2R1bGUgZm9yIGRldGVybWluaXN0aWMgYmVoYXZpb3IKLSAgIyBFYWNoIG1vZHVsZSB3aWxsIG9ubHkgaW1wb3J0IHdoYXQgaXMgbmVjZXNzYXJ5IGZvciBpdCB0byB3b3JrIGluIHNwZWNpZmljCi0gIHByaW50ICgnR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCi0gIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczMucHknLCAnJXMnICUgdmFsdWVdKS5kZWNvZGUoJ3V0ZjgnKQotICBwcmludCAoJ1RoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQgZm9yIG1vZHVsZSAlczpcbicgJSB2YWx1ZSkKLSAgcHJpbnQgKG91dHB1dCkKLSAgZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6Ci0gICAgIyBXZSBhcHBlbmQgaXQgc28gaXQgZG9lc250IGh1cnQgd2hhdCB3ZSBjdXJyZW50bHkgaGF2ZToKLSAgICBpZiBpc0NhY2hlZChpdGVtKToKLSAgICAgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddOgotICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCi0gICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKLSAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXS5hcHBlbmQoaXRlbSkKLSAgICBlbHNlOgotICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjawotICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCi0gICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKyAgICAgICAgaWYgY29yZWRlcCBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoY29yZWRlcCkKIAogCi0jIFdlIGNoZWNrIHdoaWNoIHBhY2thZ2VzIGluY2x1ZGUgZm9sZGVycwotZm9yIGtleSBpbiBvbGRfbWFuaWZlc3Q6Ci0gICAgZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKLSAgICAgICAgaWYgaXNGb2xkZXIodmFsdWUpOgotICAgICAgICAgICAgcHJpbnQgKCclcyBpcyBhIGZvbGRlcicgJSB2YWx1ZSkKLSAgICAgICAgICAgIGlmIGtleSBub3QgaW4gaGFzZm9sZGVyczoKLSAgICAgICAgICAgICAgICBoYXNmb2xkZXJzLmFwcGVuZChrZXkpCi0gICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gYWxsZm9sZGVyczoKLSAgICAgICAgICAgICAgICBhbGxmb2xkZXJzLmFwcGVuZCh2YWx1ZSkKKyMgVGhlIHNlY29uZCBzdGVwIGlzIHRvIGxvb3AgdGhyb3VnaCB0aGUgZXhpc3RpbmcgZmlsZXMgY29udGFpbmVkIGluIHRoZSBjb3JlIHBhY2thZ2UKKyMgYWNjb3JkaW5nIHRvIHRoZSBvbGQgbWFuaWZlc3QsIGlkZW50aWZ5IGlmIHRoZXkgYXJlICBtb2R1bGVzLCBvciBzb21lIG90aGVyIHR5cGUgCisjIG9mIGZpbGUgdGhhdCB3ZSBjYW50IGltcG9ydCAoZGlyZWN0b3JpZXMsIGJpbmFyaWVzLCBjb25maWdzKSBpbiB3aGljaCBjYXNlIHdlCisjIGNhbiBvbmx5IGFzc3VtZSB0aGV5IHdlcmUgYWRkZWQgY29ycmVjdGx5IChtYW51YWxseSkgc28gd2UgaWdub3JlIHRob3NlIGFuZCAKKyMgcGFzcyB0aGVtIHRvIHRoZSBtYW5pZmVzdCBkaXJlY3RseS4KIAotZm9yIGtleSBpbiBvbGRfbWFuaWZlc3Q6Citmb3IgZmlsZWRlcCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICBpZiBpc0ZvbGRlcihmaWxlZGVwKToKKyAgICAgICAgaWYgaXNDYWNoZWQoZmlsZWRlcCk6CisgICAgICAgICAgICBpZiBmaWxlZGVwIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChmaWxlZGVwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGZpbGVkZXApCisgICAgICAgIGNvbnRpbnVlCisgICAgaWYgJyR7YmluZGlyfScgaW4gZmlsZWRlcDoKKyAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoZmlsZWRlcCkKKyAgICAgICAgY29udGludWUKKyAgICBpZiBmaWxlZGVwID09ICcnOgorICAgICAgICBjb250aW51ZQorICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiBmaWxlZGVwOgorICAgICAgICBpZiBmaWxlZGVwIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChmaWxlZGVwKQorICAgICAgICBjb250aW51ZQorCisgICAgIyBHZXQgYWN0dWFsIG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpciwgZXRjLgorICAgIHB5bW9kdWxlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgoZmlsZWRlcCkpKVswXQorCisKKyAgICAjIFdlIG5vdyBrbm93IHRoYXQgd2VyZSBkZWFsaW5nIHdpdGggYSBweXRob24gbW9kdWxlLCBzbyB3ZSBjYW4gaW1wb3J0IGl0CisgICAgIyBhbmQgY2hlY2sgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZS4KKyAgICAjIFdlIGxhdW5jaCBhIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yLgorICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYy4KKyAgICAjIFRoZSBvdXRwdXQgb2YgZWFjaCB0YXNrIHdpbGwgY29udGFpbiBlYWNoIG1vZHVsZSdzIGRlcGVuZGVuY2llcworCisgICAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSBweW1vZHVsZSkKKyAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMzLnB5JywgJyVzJyAlIHB5bW9kdWxlXSkuZGVjb2RlKCd1dGY4JykKKyAgICBwcmludCAoJ1RoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQgZm9yIG1vZHVsZSAlczpcbicgJSBweW1vZHVsZSkKKyAgICBwcmludCAob3V0cHV0KQorCisKKyAgICBmb3IgcHltb2R1bGVfZGVwIGluIG91dHB1dC5zcGxpdCgpOgorICAgICAgICBweW1vZHVsZV9kZXAgPSBweW1vZHVsZV9kZXAucmVwbGFjZShweXZlcnNpb24sJyR7UFlUSE9OX01BSk1JTn0nKQorCisgICAgICAgIGlmIGlzQ2FjaGVkKHB5bW9kdWxlX2RlcCk6CisgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKHB5bW9kdWxlX2RlcCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcCBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHB5bW9kdWxlX2RlcCkKKworCisjIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGRvbmUgd2l0aCB0aGUgY29yZSBwYWNrYWdlLgorIyBUaGUgb2xkX21hbmlmZXN0IGRpY3Rpb25hcnkgaXMgdXBkYXRlZCBvbmx5IGZvciB0aGUgY29yZSBwYWNrYWdlIGJlY2F1c2UKKyMgYWxsIG90aGVycyB3aWxsIHVzZSB0aGlzIGEgYmFzZS4KKworCisjIFRvIGltcHJvdmUgdGhlIHNjcmlwdCBzcGVlZCwgd2UgY2hlY2sgd2hpY2ggcGFja2FnZXMgY29udGFpbiBkaXJlY3RvcmllcworIyBzaW5jZSB3ZSB3aWxsIGJlIGxvb3BpbmcgdGhyb3VnaCAob25seSkgdGhvc2UgbGF0ZXIuCitmb3IgcHlwa2cgaW4gb2xkX21hbmlmZXN0OgorICAgIGZvciBmaWxlZGVwIGluIG9sZF9tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ106CisgICAgICAgIGlmIGlzRm9sZGVyKGZpbGVkZXApOgorICAgICAgICAgICAgcHJpbnQgKCclcyBpcyBhIGZvbGRlcicgJSBmaWxlZGVwKQorICAgICAgICAgICAgaWYgcHlwa2cgbm90IGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQocHlwa2cpCisgICAgICAgICAgICBpZiBmaWxlZGVwIG5vdCBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGFsbGZvbGRlcnMuYXBwZW5kKGZpbGVkZXApCisKKworCisjIFRoaXMgaXMgdGhlIG1haW4gbG9vcCB0aGF0IHdpbGwgaGFuZGxlIGVhY2ggcGFja2FnZS4KKyMgSXQgd29ya3MgaW4gYSBzaW1pbGFyIGZhc2hpb24gdGhhbiB0aGUgc3RlcCBiZWZvcmUsIGJ1dAorIyB3ZSB3aWxsIG5vdyBiZSB1cGRhdGluZyBhIG5ldyBkaWN0aW9uYXJ5IHRoYXQgd2lsbCBldmVudHVhbGx5CisjIGJlY29tZSB0aGUgbmV3IG1hbmlmZXN0LgorIworIyBUaGUgZm9sbG93aW5nIGxvb3BzIHRob3VnaCBhbGwgcGFja2FnZXMgaW4gdGhlIG1hbmlmZXN0LAorIyB0aHJvdWdoIGFsbCBmaWxlcyBvbiBlYWNoIG9mIHRoZW0sIGFuZCBjaGVja3Mgd2hldGhlciBvciBub3QKKyMgdGhleSBhcmUgbW9kdWxlcyBhbmQgY2FuIGJlIGltcG9ydGVkLgorIyBJZiB0aGV5IGNhbiBiZSBpbXBvcnRlZCwgdGhlbiBpdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IKKyMgZWFjaCBvZiB0aGVtIGJ5IGxhdW5jaGluZyBhIHNlcGFyYXRlIHRhc2suCisjIFRoZSBvdXRwdXQgb2YgdGhhdCB0YXNrIGlzIHRoZW4gcGFyc2VkIGFuZCB0aGUgbWFuaWZlc3QgaXMgdXBkYXRlZAorIyBhY2NvcmRpbmdseSwgd2V0aGVyIGl0IHNob3VsZCBhZGQgdGhlIG1vZHVsZSBvbiBGSUxFUyBmb3IgdGhlIGN1cnJlbnQgcGFja2FnZQorIyBvciBpZiB0aGF0IG1vZHVsZSBhbHJlYWR5IGJlbG9uZ3MgdG8gYW5vdGhlciBwYWNrYWdlIHRoZW4gdGhlIGN1cnJlbnQgb25lIAorIyB3aWxsIFJERVBFTkQgb24gaXQKKworZm9yIHB5cGtnIGluIG9sZF9tYW5pZmVzdDoKICAgICAjIFVzZSBhbiBlbXB0eSBkaWN0IGFzIGRhdGEgc3RydWN0dXJlIHRvIGhvbGQgZGF0YSBmb3IgZWFjaCBwYWNrYWdlIGFuZCBmaWxsIGl0IHVwCi0gICAgbmV3X21hbmlmZXN0W2tleV09e30KLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXT1bXQotICAgIAotICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddPVtdCisgICAgbmV3X21hbmlmZXN0W3B5cGtnXSA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydzdW1tYXJ5J10gPSBvbGRfbWFuaWZlc3RbcHlwa2ddWydzdW1tYXJ5J10KKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddID0gW10KKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddID0gW10KKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydjYWNoZWQnXSA9IG9sZF9tYW5pZmVzdFtweXBrZ11bJ2NhY2hlZCddCisKICAgICAjIEFsbCBwYWNrYWdlcyBzaG91bGQgZGVwZW5kIG9uIGNvcmUKLSAgICBpZiBrZXkgIT0gJ2NvcmUnOgotICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKCdjb3JlJykKLSAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXT1bXQotICAgIGVsc2U6Ci0gICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ109b2xkX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXT1vbGRfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddCisgICAgaWYgcHlwa2cgIT0gJ2NvcmUnOgorICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddLmFwcGVuZCgnY29yZScpCisgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2NhY2hlZCddID0gW10KKworICAgIHByaW50KCdcbicpCisgICAgcHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKKyAgICBwcmludCAoJ0hhbmRsaW5nIHBhY2thZ2UgJXMnICUgcHlwa2cpCisgICAgcHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKIAogICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMsIHdlIGFzc3VtZSB0aGF0IHdoZW4gdGhleSB3ZXJlIG1hbnVhbGx5IGFkZGVkIAogICAgICMgdG8gdGhlIG1hbmlmZXN0IHdlIGtuZXcgd2hhdCB3ZSB3ZXJlIGRvaW5nLgotICAgIHByaW50KCdcbicpCi0gICAgcHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKLSAgICBwcmludCAoJ0hhbmRsaW5nIHBhY2thZ2UgJXMnICUga2V5KQotICAgIHByaW50KCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpCi0gICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICdkZXYnXQotICAgIGlmIGtleSBpbiBzcGVjaWFsX3BhY2thZ2VzIG9yICdzdGF0aWNkZXYnIGluIGtleToKLSAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBrZXkpCi0gICAgICAgIG5ld19tYW5pZmVzdFtrZXldPW9sZF9tYW5pZmVzdFtrZXldCisgICAgc3BlY2lhbF9wYWNrYWdlcyA9IFsnbWlzYycsICdtb2R1bGVzJywgJ2RldicsICd0ZXN0cyddCisgICAgaWYgcHlwa2cgaW4gc3BlY2lhbF9wYWNrYWdlcyBvciAnc3RhdGljZGV2JyBpbiBweXBrZzoKKyAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBweXBrZykKKyAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXSA9IG9sZF9tYW5pZmVzdFtweXBrZ10KICAgICAgICAgY29udGludWUKIAotICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcwotICAgICAgICBpZiBrZXkgPT0gJ2NvcmUnOgotICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAgICAgICAgICMgUGFzcyBmb2xkZXJzIGRpcmVjdGx5Ci0gICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UKLSAgICAgICAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAjIFBhc3MgaXQgZGlyZWN0bHkgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdHVyZQotICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgSWdub3JlIGVtcHR5IHZhbHVlcwotICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKLSAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgZm9yIGZpbGVkZXAgaW4gb2xkX21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXToKKyAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcywgd2UgY2FuIGlnbm9yZSBpdCBub3cKKyAgICAgICAgaWYgcHlwa2cgPT0gJ2NvcmUnOgorICAgICAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddLmFwcGVuZChmaWxlZGVwKQogICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAjIEdldCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIKKyAgICAgICAgIyBIYW5kbGUvaWdub3JlIHdoYXQgd2UgY2FudCBpbXBvcnQKKyAgICAgICAgaWYgaXNGb2xkZXIoZmlsZWRlcCk6CisgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddLmFwcGVuZChmaWxlZGVwKQorICAgICAgICAgICAgIyBBc3luY2lvIChhbmQgb3RoZXJzKSBhcmUgYm90aCB0aGUgcGFja2FnZSBhbmQgdGhlIGZvbGRlciBuYW1lLCB3ZSBzaG91bGQgbm90IHNraXAgdGhvc2UuLi4KKyAgICAgICAgICAgIHBhdGgsbW9kID0gb3MucGF0aC5zcGxpdChmaWxlZGVwKQorICAgICAgICAgICAgaWYgbW9kICE9IHB5cGtnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcke2JpbmRpcn0nIGluIGZpbGVkZXA6CisgICAgICAgICAgICBpZiBmaWxlZGVwIG5vdCBpbiBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ10uYXBwZW5kKGZpbGVkZXApCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBmaWxlZGVwID09ICcnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgJyR7aW5jbHVkZWRpcn0nIGluIGZpbGVkZXA6CisgICAgICAgICAgICBpZiBmaWxlZGVwIG5vdCBpbiBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ10uYXBwZW5kKGZpbGVkZXApCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgR2V0IGFjdHVhbCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIsIGV0Yy4KICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgY29tZXMgZnJvbSBhbm90aGVyIChlLmcuIHNxbGl0ZTMuZHVtcCkKLSAgICAgICAgcGF0aCx2YWx1ZSA9IG9zLnBhdGguc3BsaXQodmFsdWUpCisgICAgICAgIHBhdGgscHltb2R1bGUgPSBvcy5wYXRoLnNwbGl0KGZpbGVkZXApCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCi0gICAgICAgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHZhbHVlKSlbMF0KKyAgICAgICAgcHltb2R1bGUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUocHltb2R1bGUpKVswXQogCiAgICAgICAgICMgSWYgdGhpcyBjb25kaXRpb24gaXMgbWV0LCBpdCBtZWFucyB3ZSBuZWVkIHRvIGltcG9ydCBpdCBmcm9tIGFub3RoZXIgbW9kdWxlCiAgICAgICAgICMgb3IgaXRzIHRoZSBmb2xkZXIgaXRzZWxmIChlLmcuIHVuaXR0ZXN0KQotICAgICAgICBpZiBwYXRoID09IGtleToKLSAgICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgIHZhbHVlID0gcGF0aCArICcuJyArIHZhbHVlCi0gICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlID0gcGF0aAorICAgICAgICBpZiBwYXRoID09IHB5cGtnOgorICAgICAgICAgICAgaWYgcHltb2R1bGU6CisgICAgICAgICAgICAgICAgcHltb2R1bGUgPSBwYXRoICsgJy4nICsgcHltb2R1bGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHltb2R1bGUgPSBwYXRoCiAKLSAgICAgICAgIyBMYXVuY2ggc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBtb2R1bGUgZm9yIGRldGVybWluaXN0aWMgYmVoYXZpb3IKLSAgICAgICAgIyBFYWNoIG1vZHVsZSB3aWxsIG9ubHkgaW1wb3J0IHdoYXQgaXMgbmVjZXNzYXJ5IGZvciBpdCB0byB3b3JrIGluIHNwZWNpZmljCi0gICAgICAgIHByaW50ICgnXG5HZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKLSAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSB2YWx1ZV0pLmRlY29kZSgndXRmOCcpCi0gICAgICAgICMgV2UgY2FuIHByaW50IGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCi0gICAgICAgIHByaW50ICgnVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZCBmb3IgbW9kdWxlICVzOlxuJyAlIHZhbHVlKQorCisKKyAgICAgICAgIyBXZSBub3cga25vdyB0aGF0IHdlcmUgZGVhbGluZyB3aXRoIGEgcHl0aG9uIG1vZHVsZSwgc28gd2UgY2FuIGltcG9ydCBpdAorICAgICAgICAjIGFuZCBjaGVjayB3aGF0IGl0cyBkZXBlbmRlbmNpZXMgYXJlLgorICAgICAgICAjIFdlIGxhdW5jaCBhIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yLgorICAgICAgICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMuCisgICAgICAgICMgVGhlIG91dHB1dCBvZiBlYWNoIHRhc2sgd2lsbCBjb250YWluIGVhY2ggbW9kdWxlJ3MgZGVwZW5kZW5jaWVzCisKKyAgICAgICAgcHJpbnQgKCdcbkdldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHB5bW9kdWxlKQorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMzLnB5JywgJyVzJyAlIHB5bW9kdWxlXSkuZGVjb2RlKCd1dGY4JykKKyAgICAgICAgcHJpbnQgKCdUaGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyB3ZXJlIGZvdW5kIGZvciBtb2R1bGUgJXM6XG4nICUgcHltb2R1bGUpCiAgICAgICAgIHByaW50IChvdXRwdXQpCi0gICAgICAgICMgT3V0cHV0IHdpbGwgaGF2ZSBhbGwgZGVwZW5kZW5jaWVzCiAKICAgICAgICAgcmVwb3J0RklMRVMgPSBbXQogICAgICAgICByZXBvcnRSREVQUyA9IFtdCiAKLSAgICAgICAgZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6CisgICAgICAgIGZvciBweW1vZHVsZV9kZXAgaW4gb3V0cHV0LnNwbGl0KCk6CiAKICAgICAgICAgICAgICMgV2FybmluZzogVGhpcyBmaXJzdCBwYXJ0IGlzIHVnbHkKICAgICAgICAgICAgICMgT25lIG9mIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3YXMgZm91bmQsIGNvdWxkIGJlIGluc2lkZSBvZiBvbmUgb2YgdGhlIGZvbGRlcnMgaW5jbHVkZWQgYnkgYW5vdGhlciBwYWNrYWdlCkBAIC0yNTAsMjIgKzI5NSwyMiBAQAogICAgICAgICAgICAgIyAgIGlzIGZvbGRlcl9zdHJpbmcgaW5zaWRlIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lPywgCiAgICAgICAgICAgICAjICAgWWVzLCBpdCB3b3JrcywgYnV0IHdlIHdhc3RlIGEgY291cGxlIG9mIG1pbGxpc2Vjb25kcy4KIAotICAgICAgICAgICAgaW5Gb2xkZXJzPUZhbHNlCisgICAgICAgICAgICBweW1vZHVsZV9kZXAgPSBweW1vZHVsZV9kZXAucmVwbGFjZShweXZlcnNpb24sJyR7UFlUSE9OX01BSk1JTn0nKQorICAgICAgICAgICAgaW5Gb2xkZXJzID0gRmFsc2UKICAgICAgICAgICAgIGZvciBmb2xkZXIgaW4gYWxsZm9sZGVyczoKLSAgICAgICAgICAgICAgICBpZiBmb2xkZXIgaW4gaXRlbToKKyAgICAgICAgICAgICAgICBpZiBmb2xkZXIgaW4gcHltb2R1bGVfZGVwOgogICAgICAgICAgICAgICAgICAgICBpbkZvbGRlcnMgPSBUcnVlICMgRGlkIHdlIGZpbmQgYSBmb2xkZXI/CiAgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gRmFsc2UgIyBTZWNvbmQgZmxhZyB0byBicmVhayBpbm5lciBmb3IKICAgICAgICAgICAgICAgICAgICAgIyBMb29wIG9ubHkgdGhyb3VnaCBwYWNrYWdlcyB3aGljaCBjb250YWluIGZvbGRlcnMKLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleWZvbGRlciBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgICAgICBmb3IgcHlwa2dfd2l0aF9mb2xkZXIgaW4gaGFzZm9sZGVyczoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZXJGb3VuZCA9PSBGYWxzZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCdDaGVja2luZyBmb2xkZXIgJXMgb24gcGFja2FnZSAlcycgJSAoaXRlbSxrZXlmb2xkZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlX2ZvbGRlciBpbiBvbGRfbWFuaWZlc3Rba2V5Zm9sZGVyXVsnZmlsZXMnXSBvciBmaWxlX2ZvbGRlciBpbiBvbGRfbWFuaWZlc3Rba2V5Zm9sZGVyXVsnY2FjaGVkJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfZm9sZGVyPT1mb2xkZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAoJyVzIGZvbGRlciBmb3VuZCBpbiAlcycgJSAoZm9sZGVyLCBrZXlmb2xkZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnQoJ0NoZWNraW5nIGZvbGRlciAlcyBvbiBwYWNrYWdlICVzJyAlIChweW1vZHVsZV9kZXAscHlwa2dfd2l0aF9mb2xkZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmb2xkZXJfZGVwIGluIG9sZF9tYW5pZmVzdFtweXBrZ193aXRoX2ZvbGRlcl1bJ2ZpbGVzJ10gb3IgZm9sZGVyX2RlcCBpbiBvbGRfbWFuaWZlc3RbcHlwa2dfd2l0aF9mb2xkZXJdWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZm9sZGVyX2RlcCA9PSBmb2xkZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAoJyVzIGZvbGRlciBmb3VuZCBpbiAlcycgJSAoZm9sZGVyLCBweXBrZ193aXRoX2ZvbGRlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHlwa2dfd2l0aF9mb2xkZXIgbm90IGluIG5ld19tYW5pZmVzdFtweXBrZ11bJ3JkZXBlbmRzJ10gYW5kIHB5cGtnX3dpdGhfZm9sZGVyICE9IHB5cGtnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ3JkZXBlbmRzJ10uYXBwZW5kKHB5cGtnX3dpdGhfZm9sZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogCkBAIC0yNzQsODEgKzMxOSw5NSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKIAotICAgICAgICAgICAgIyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgaXQgb24gdGhlIGRpY3Rpb25hcnkgc2luY2UgaXQgY291bGQgZGVwZW5kIG9uIGEgKHByZXZpb3VzbHkgY2hlY2tlZCkgbW9kdWxlCi0gICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXSBhbmQgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgorCisgICAgICAgICAgICAjIE5vIGRpcmVjdG9yaWVzIGJleW9uZCB0aGlzIHBvaW50CisgICAgICAgICAgICAjIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB0aGlzIG1vZHVsZSBvbiB0aGUgZGljdGlvbmFyeSBzaW5jZSBpdCBjb3VsZCBkZXBlbmQgb24gYSAocHJldmlvdXNseSBjaGVja2VkKSBtb2R1bGUKKyAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcCBub3QgaW4gbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXSBhbmQgcHltb2R1bGVfZGVwIG5vdCBpbiBuZXdfbWFuaWZlc3RbcHlwa2ddWydjYWNoZWQnXToKICAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQotICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgotICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKLSAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKLSAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChpdGVtKToKLSAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgIGlmIHB5cGtnID09ICdjb3JlJzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAocHltb2R1bGVfZGVwLCBweXBrZykpCisgICAgICAgICAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcC5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChweW1vZHVsZV9kZXApCisgICAgICAgICAgICAgICAgICAgIGlmIGlzQ2FjaGVkKHB5bW9kdWxlX2RlcCk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydjYWNoZWQnXS5hcHBlbmQocHltb2R1bGVfZGVwKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXS5hcHBlbmQocHltb2R1bGVfZGVwKQogCi0gICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcwotICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQotCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcCBub3QgaW4gYWxsZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQocHltb2R1bGVfZGVwKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHltb2R1bGVfZGVwIG5vdCBpbiByZXBlYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQocHltb2R1bGVfZGVwKQogICAgICAgICAgICAgICAgIGVsc2U6CiAKIAotICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoaXMgZGVwZW5kZW5jeSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBvbiBhbm90aGVyIHBhY2thZ2UsIHNvIHdlIGFkZCBpdAorICAgICAgICAgICAgICAgICAgICAjIExhc3Qgc3RlcDogRmlndXJlIG91dCBpZiB3ZSB0aGlzIGJlbG9uZ3MgdG8gRklMRVMgb3IgUkRFUEVORFMKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBjaGVjayBpZiB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBvbiBhbm90aGVyIHBhY2thZ2UsIHNvIHdlIGFkZCB0aGF0IG9uZQogICAgICAgICAgICAgICAgICAgICAjIGFzIGFuIFJERVBFTkRTLCBvciBpZiBpdHMgbm90LCBpdCBtZWFucyBpdCBzaG91bGQgYmUgY29udGFpbmVkIG9uIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgICMgcGFja2FnZSwgc28gd2Ugc2hvdWxkIGFkZCBpdCB0byBGSUxFUwotICAgICAgICAgICAgICAgICAgICBmb3IgbmV3a2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlLCBhbmQgd2Ugc2hvdWxkIGFkZCBpdCB0byBGSUxFUworICAgICAgICAgICAgICAgICAgICBmb3IgcG9zc2libGVfcmRlcCBpbiBvbGRfbWFuaWZlc3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoJ0NoZWNraW5nICVzICcgJSBpdGVtICsgJyBpbiAlcycgJSBuZXdrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydmaWxlcyddIG9yIGl0ZW0gaW4gb2xkX21hbmlmZXN0W25ld2tleV1bJ2NhY2hlZCddOiAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHdlcmUgbmVzdGluZywgd2UgbmVlZCB0byBjaGVjayBpdHMgbm90IHRoZSBzYW1lIGtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdrZXkhPWtleSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaXQgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0UkRFUFMuYXBwZW5kKCdBZGRpbmcgJXMgdG8gJXMgUkRFUEVORFMsIGJlY2F1c2UgaXQgY29udGFpbnMgJXNcbicgJSAobmV3a2V5LCBrZXksIGl0ZW0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKG5ld2tleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50KCdDaGVja2luZyAlcyAnICUgcHltb2R1bGVfZGVwICsgJyBpbiAlcycgJSBwb3NzaWJsZV9yZGVwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHltb2R1bGVfZGVwIGluIG9sZF9tYW5pZmVzdFtwb3NzaWJsZV9yZGVwXVsnZmlsZXMnXSBvciBweW1vZHVsZV9kZXAgaW4gb2xkX21hbmlmZXN0W3Bvc3NpYmxlX3JkZXBdWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHdlcmUgbmVzdGluZywgd2UgbmVlZCB0byBjaGVjayBpdHMgbm90IHRoZSBzYW1lIHB5cGtnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocG9zc2libGVfcmRlcCAhPSBweXBrZyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBvc3NpYmxlX3JkZXAgbm90IGluIG5ld19tYW5pZmVzdFtweXBrZ11bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBpdCB0byB0aGUgbmV3IG1hbmlmZXN0IGRhdGEgc3RydWN0IGFzIFJERVBFTkRTIHNpbmNlIGl0IGNvbnRhaW5zIHNvbWV0aGluZyB0aGlzIG1vZHVsZSBuZWVkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0UkRFUFMuYXBwZW5kKCdBZGRpbmcgJXMgdG8gJXMgUkRFUEVORFMsIGJlY2F1c2UgaXQgY29udGFpbnMgJXNcbicgJSAocG9zc2libGVfcmRlcCwgcHlwa2csIHB5bW9kdWxlX2RlcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddLmFwcGVuZChwb3NzaWJsZV9yZGVwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICMgQSBtb2R1bGUgc2hvdWxkbid0IGNvbnRhaW4gaXRzZWxmICgke2xpYmRpcn0vcHl0aG9uMy9zcWxpdGUzIHNob3VsZG50IGJlIG9uIHNxbGl0ZTMgZmlsZXMpCi0gICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShpdGVtKSAhPSBrZXk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRGSUxFUy5hcHBlbmQoKCdBZGRpbmcgJXMgdG8gJXMgRklMRVNcbicgJSAoaXRlbSwga2V5KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNDYWNoZWQoaXRlbSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICMgU2luY2UgdGhpcyBtb2R1bGUgd2FzbnQgZm91bmQgb24gYW5vdGhlciBwYWNrYWdlLCBpdCBpcyBub3QgYW4gUkRFUCwKKyAgICAgICAgICAgICAgICAgICAgICAjIHNvIHdlIGFkZCBpdCB0byBGSUxFUyBmb3IgdGhpcyBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICMgQSBtb2R1bGUgc2hvdWxkbid0IGNvbnRhaW4gaXRzZWxmICgke2xpYmRpcn0vcHl0aG9uMy9zcWxpdGUzIHNob3VsZG50IGJlIG9uIHNxbGl0ZTMgZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShweW1vZHVsZV9kZXApICE9IHB5cGtnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RklMRVMuYXBwZW5kKCgnQWRkaW5nICVzIHRvICVzIEZJTEVTXG4nICUgKHB5bW9kdWxlX2RlcCwgcHlwa2cpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzQ2FjaGVkKHB5bW9kdWxlX2RlcCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnY2FjaGVkJ10uYXBwZW5kKHB5bW9kdWxlX2RlcCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXS5hcHBlbmQocHltb2R1bGVfZGVwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHltb2R1bGVfZGVwLmVuZHN3aXRoKCcqJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChweW1vZHVsZV9kZXApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAgbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChweW1vZHVsZV9kZXApCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcCBub3QgaW4gcmVwZWF0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChweW1vZHVsZV9kZXApCiAKICAgICAgICAgcHJpbnQoJ1xuJykKICAgICAgICAgcHJpbnQoJyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpCi0gICAgICAgIHByaW50KCdTdW1tYXJ5IGZvciBtb2R1bGUgJXMnICUgdmFsdWUpCi0gICAgICAgIHByaW50KCdGSUxFUyBmb3VuZCBmb3IgbW9kdWxlICVzOicgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQoJ1N1bW1hcnkgZm9yIG1vZHVsZSAlcycgJSBweW1vZHVsZSkKKyAgICAgICAgcHJpbnQoJ0ZJTEVTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHB5bW9kdWxlKQogICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydEZJTEVTKSkKLSAgICAgICAgcHJpbnQoJ1JERVBFTkRTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnUkRFUEVORFMgZm91bmQgZm9yIG1vZHVsZSAlczonICUgcHltb2R1bGUpCiAgICAgICAgIHByaW50KCcnLmpvaW4ocmVwb3J0UkRFUFMpKQogICAgICAgICBwcmludCgnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJykKIAotcHJpbnQgKCdUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSByZXBlYXRlZCAoY29udGFpbmVkIGluIG1vcmUgdGhhbiBvbmUgcGFja2FnZSksIHBsZWFzZSBjaGVjayB3aGljaCBwYWNrYWdlIHNob3VsZCBnZXQgaXQ6JykKLXByaW50IChyZXBlYXRlZCkKLXByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gd2lsZGNhcmRzLCBwbGVhc2UgY2hlY2sgdGhleSBhcmUgbmVjZXNzYXJ5JykKK3ByaW50KCdUaGUgZm9sbG93aW5nIEZJTEVTIGNvbnRhaW4gd2lsZGNhcmRzLCBwbGVhc2UgY2hlY2sgaWYgdGhleSBhcmUgbmVjZXNzYXJ5JykKIHByaW50KHdpbGRjYXJkcykKLXByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gZm9sZGVycywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCgnVGhlIGZvbGxvd2luZyBGSUxFUyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayBpZiB0aGV5IGFyZSBuZWNlc3NhcnknKQogcHJpbnQoaGFzZm9sZGVycykKIAorCiAjIFNvcnQgaXQganVzdCBzbyBpdCBsb29rcyBuaWNlcgotZm9yIGtleSBpbiBuZXdfbWFuaWZlc3Q6Ci0gICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uc29ydCgpCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLnNvcnQoKQotICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLnNvcnQoKQorZm9yIHB5cGtnIGluIG5ld19tYW5pZmVzdDoKKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2NhY2hlZCddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ3JkZXBlbmRzJ10uc29ydCgpCiAKICMgQ3JlYXRlIHRoZSBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdAogd2l0aCBvcGVuKCdweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3JywndycpIGFzIG91dGZpbGU6Ci0gICAganNvbi5kdW1wKG5ld19tYW5pZmVzdCxvdXRmaWxlLHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkKKyAgICBqc29uLmR1bXAobmV3X21hbmlmZXN0LG91dGZpbGUsIGluZGVudD00KQogICAgIG91dGZpbGUud3JpdGUoJ1xuJykKKworaWYgKHJlcGVhdGVkKToKKyAgICBlcnJvcl9tc2cgPSAnXG5cbkVSUk9SOlxuJworICAgIGVycm9yX21zZyArPSAnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLFxuJworICAgIGVycm9yX21zZyArPSAndGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIHdoZW4gbmV3IGZpbGVzIGFyZSBpbnRyb2R1Y2VkIGFmdGVyIGFuIHVwZ3JhZGUsXG4nCisgICAgZXJyb3JfbXNnICs9ICdwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0LFxuIG1vZGlmeSB0aGUgbWFuaWZlc3QgYWNjb3JkaW5nbHkgYW5kIHJlLXJ1biB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2s6XG4nCisgICAgZXJyb3JfbXNnICs9ICdcbicuam9pbihyZXBlYXRlZCkKKyAgICBlcnJvcl9tc2cgKz0gJ1xuJworICAgIHN5cy5leGl0KGVycm9yX21zZykKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZmxvYXQtZW5kaWFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZmxvYXQtZW5kaWFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYTNmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9mbG9hdC1lbmRpYW4ucGF0Y2gKQEAgLTAsMCArMSwyMTIgQEAKK1B5dGhvbiB1c2VzIEFDX1JVTl9JRkVMU0UgdG8gZGV0ZXJtaW5lIHRoZSBieXRlIG9yZGVyIGZvciBmbG9hdHMgYW5kIGRvdWJsZXMsCithbmQgZmFsbHMgYmFjayBvbnRvICJJIGRvbid0IGtub3ciIGlmIGl0IGNhbid0IHJ1biBjb2RlLiAgVGhpcyByZXN1bHRzIGluCitjcmlwcGxlZCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluIFB5dGhvbiwgYW5kIHRoZSByZWdyZXNzaW9uIHRlc3RzIGZhaWwuCisKK0luc3RlYWQgb2YgcnVubmluZyBjb2RlLCB0YWtlIGEgbWFjcm8gZnJvbSBhdXRvY29uZi1hcmNoaXZlIHdoaWNoIGNvbXBpbGVzIEMKK3dpdGggYSBzcGVjaWFsIGRvdWJsZSBpbiB3aGljaCBoYXMgYW4gQVNDSUkgcmVwcmVzZW50YXRpb24sIGFuZCB0aGVuIGdyZXBzIHRoZQorYmluYXJ5IHRvIGlkZW50aWZ5IHRoZSBmb3JtYXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0NTg1XQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA1MGRmMmE0YzNhNjVlZDA2MzIyYmU3YzI2ZDQyYjA2Y2U4MTczMGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgNSBTZXAgMjAxOCAxMTo0NTo1MiArMDEwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCBkbyBydW50aW1lIHRlc3QgdG8gZ2V0IGZsb2F0IGJ5dGUgb3JkZXIKKworLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgfCA3NCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG00L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00IHwgODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IG00L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00CisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGM5Yjc1NWYwZjQuLjEyMTU5Njk4NzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTksNiArOSw4IEBAIEFDX1BSRVJFUSgyLjY1KQorIAorIEFDX0lOSVQocHl0aG9uLCBQWVRIT05fVkVSU0lPTiwgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvKQorIAorK0FDX0NPTkZJR19NQUNST19ESVIobTQpCisrCisgQUNfU1VCU1QoQkFTRUNQUEZMQUdTKQorIGlmIHRlc3QgIiRzcmNkaXIiICE9IC4gLWEgIiRzcmNkaXIiICE9ICIkKHB3ZCkiOyB0aGVuCisgICAgICMgSWYgd2UncmUgYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcKK0BAIC00MTI4LDc3ICs0MTMwLDE5IEBAIGZpCisgIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgorICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAKKy1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGxpdHRsZS1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCistQUNfQ0FDSEVfVkFMKGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlLCBbCistQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistaW50IG1haW4oKSB7CistICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOworLSAgICBpZiAobWVtY21wKCZ4LCAiXHgwNVx4MDRceDAzXHgwMlx4MDFceGZmXHgzZlx4NDMiLCA4KSA9PSAwKQorLSAgICAgICAgcmV0dXJuIDA7CistICAgIGVsc2UKKy0gICAgICAgIHJldHVybiAxOworLX0KKy1dXSldLAorLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT15ZXNdLAorLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10sCistW2FjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlPW5vXSldKQorLUFDX01TR19SRVNVTFQoJGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlKQorLWlmIHRlc3QgIiRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKKy10aGVuCistICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKKy0gIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCistICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCistZmkKKy0KKy1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGJpZy1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCistQUNfQ0FDSEVfVkFMKGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlLCBbCistQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistaW50IG1haW4oKSB7CistICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOworLSAgICBpZiAobWVtY21wKCZ4LCAiXHg0M1x4M2ZceGZmXHgwMVx4MDJceDAzXHgwNFx4MDUiLCA4KSA9PSAwKQorLSAgICAgICAgcmV0dXJuIDA7CistICAgIGVsc2UKKy0gICAgICAgIHJldHVybiAxOworLX0KKy1dXSldLAorLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT15ZXNdLAorLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10sCistW2FjX2N2X2JpZ19lbmRpYW5fZG91YmxlPW5vXSldKQorLUFDX01TR19SRVNVTFQoJGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlKQorLWlmIHRlc3QgIiRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKKytBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgorK2lmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAieWVzIgorIHRoZW4KKyAgIEFDX0RFRklORShET1VCTEVfSVNfQklHX0VORElBTl9JRUVFNzU0LCAxLAorICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKKyAgICB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQorLWZpCistCistIyBTb21lIEFSTSBwbGF0Zm9ybXMgdXNlIGEgbWl4ZWQtZW5kaWFuIHJlcHJlc2VudGF0aW9uIGZvciBkb3VibGVzLgorLSMgV2hpbGUgUHl0aG9uIGRvZXNuJ3QgY3VycmVudGx5IGhhdmUgZnVsbCBzdXBwb3J0IGZvciB0aGVzZSBwbGF0Zm9ybXMKKy0jIChzZWUgZS5nLiwgaXNzdWUgMTc2MjU2MSksIHdlIGNhbiBhdCBsZWFzdCBtYWtlIHN1cmUgdGhhdCBmbG9hdCA8LT4gc3RyaW5nCistIyBjb252ZXJzaW9ucyB3b3JrLgorLUFDX01TR19DSEVDS0lORyh3aGV0aGVyIEMgZG91YmxlcyBhcmUgQVJNIG1peGVkLWVuZGlhbiBJRUVFIDc1NCBiaW5hcnk2NCkKKy1BQ19DQUNIRV9WQUwoYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSwgWworLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCistI2luY2x1ZGUgPHN0cmluZy5oPgorLWludCBtYWluKCkgeworLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKKy0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDFceGZmXHgzZlx4NDNceDA1XHgwNFx4MDNceDAyIiwgOCkgPT0gMCkKKy0gICAgICAgIHJldHVybiAwOworLSAgICBlbHNlCistICAgICAgICByZXR1cm4gMTsKKy19CistXV0pXSwKKy1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT15ZXNdLAorLVthY19jdl9taXhlZF9lbmRpYW5fZG91YmxlPW5vXSwKKy1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10pXSkKKy1BQ19NU0dfUkVTVUxUKCRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlKQorLWlmIHRlc3QgIiRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlIiA9IHllcworK2VsaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9ICJubyIKKyB0aGVuCistICBBQ19ERUZJTkUoRE9VQkxFX0lTX0FSTV9NSVhFRF9FTkRJQU5fSUVFRTc1NCwgMSwKKysgIEFDX0RFRklORShET1VCTEVfSVNfTElUVExFX0VORElBTl9JRUVFNzU0LCAxLAorICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKKy0gICBpbiBBUk0gbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKV0pCisrICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCisrZWxzZQorKyAgQUNfTVNHX0VSUk9SKFtDYW5ub3QgaWRlbnRpZnkgZmxvYXRpbmcgcG9pbnQgYnl0ZSBvcmRlcl0pCisgZmkKKyAKKyAjIFRoZSBzaG9ydCBmbG9hdCByZXByIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuMSByZXF1aXJlcyB0aGUKK2RpZmYgLS1naXQgYS9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjE2YjkwZDgwMworLS0tIC9kZXYvbnVsbAorKysrIGIvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKK0BAIC0wLDAgKzEsODMgQEAKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjICBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4uaHRtbAorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMKKysjIFNZTk9QU0lTCisrIworKyMgICBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTihbQUNUSU9OLUlGLVRSVUVdLCBbQUNUSU9OLUlGLUZBTFNFXSwgW0FDVElPTi1JRi1VTktOT1dOXSkKKysjCisrIyBERVNDUklQVElPTgorKyMKKysjICAgQ2hlY2tzIHRoZSBvcmRlcmluZyBvZiB3b3JkcyB3aXRoaW4gYSBtdWx0aS13b3JkIGZsb2F0LiBUaGlzIGNoZWNrIGlzCisrIyAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBjZXJ0YWluIEFSTSBzeXN0ZW1zKSwgdGhlIGZsb2F0CisrIyAgIHdvcmQgb3JkZXJpbmcgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBieXRlIG9yZGVyaW5nLiBJbiBhIG11bHRpLXdvcmQKKysjICAgZmxvYXQgY29udGV4dCwgImJpZy1lbmRpYW4iIGltcGxpZXMgdGhhdCB0aGUgd29yZCBjb250YWluaW5nIHRoZSBzaWduCisrIyAgIGJpdCBpcyBmb3VuZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIHdpdGggdGhlIGxvd2VzdCBhZGRyZXNzLiBUaGlzCisrIyAgIGltcGxlbWVudGF0aW9uIHdhcyBpbnNwaXJlZCBieSB0aGUgQUNfQ19CSUdFTkRJQU4gbWFjcm8gaW4gYXV0b2NvbmYuCisrIworKyMgICBUaGUgZW5kaWFubmVzcyBpcyBkZXRlY3RlZCBieSBmaXJzdCBjb21waWxpbmcgQyBjb2RlIHRoYXQgY29udGFpbnMgYQorKyMgICBzcGVjaWFsIGRvdWJsZSBmbG9hdCB2YWx1ZSwgdGhlbiBncmVwcGluZyB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlIGZvcgorKyMgICBjZXJ0YWluIHN0cmluZ3Mgb2YgQVNDSUkgdmFsdWVzLiBUaGUgZG91YmxlIGlzIHNwZWNpYWxseSBjcmFmdGVkIHRvIGhhdmUKKysjICAgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gdGhhdCBjb3JyZXNwb25kcyB3aXRoIGEgc2ltcGxlIHN0cmluZy4gSW4gdGhpcworKyMgICBpbXBsZW1lbnRhdGlvbiwgdGhlIHN0cmluZyAibm9vbnNlZXMiIHdhcyBzZWxlY3RlZCBiZWNhdXNlIHRoZQorKyMgICBpbmRpdmlkdWFsIHdvcmQgdmFsdWVzICgibm9vbiIgYW5kICJzZWVzIikgYXJlIHBhbGluZHJvbWVzLCB0aHVzIG1ha2luZworKyMgICB0aGlzIHRlc3QgYnl0ZS1vcmRlciBhZ25vc3RpYy4gSWYgZ3JlcCBmaW5kcyB0aGUgc3RyaW5nICJub29uc2VlcyIgaW4KKysjICAgdGhlIG9iamVjdCBmaWxlLCB0aGUgdGFyZ2V0IHBsYXRmb3JtIHN0b3JlcyBmbG9hdCB3b3JkcyBpbiBiaWctZW5kaWFuCisrIyAgIG9yZGVyLiBJZiBncmVwIGZpbmRzICJzZWVzbm9vbiIsIGZsb2F0IHdvcmRzIGFyZSBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyLgorKyMgICBJZiBuZWl0aGVyIHZhbHVlIGlzIGZvdW5kLCB0aGUgdXNlciBpcyBpbnN0cnVjdGVkIHRvIHNwZWNpZnkgdGhlCisrIyAgIG9yZGVyaW5nLgorKyMKKysjIExJQ0VOU0UKKysjCisrIyAgIENvcHlyaWdodCAoYykgMjAwOCBEYW5pZWwgQW1lbGFuZyA8ZGFuQGFtZWxhbmcubmV0PgorKyMKKysjICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCisrIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQorKyMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55CisrIyAgIHdhcnJhbnR5LgorKworKyNzZXJpYWwgMTEKKysKKytBQ19ERUZVTihbQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU5dLAorKyAgW0FDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgZmxvYXQgd29yZCBvcmRlcmluZyBpcyBiaWdlbmRpYW4sCisrICAgICAgICAgICAgICAgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4sIFsKKysKKytheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj11bmtub3duCisrQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisrCisrZG91YmxlIGQgPSA5MDkwNDIzNDk2NzAzNjgxMDMzNzQ3MDQ3ODkwNTUwNTAxMTQ3NjIxMTY5MjczNTYxNTYzMjAxNDc5NzEyMDg0NDA1MzQ4ODg2NTgxNjY5NTI3MzcyMzQ2OTA5Nzg1ODA1NjI1NzUxNzAyMDE5MTI0NzQ4NzQyOTUxNjkzMjEzMDUwMzU2MDY1MDAwMjMyNzU2NDUxNzU3MDc3ODQ4MDIzNjcyNDUyNTE0MDUyMDEyMTM3MTczOTIwMTQ5NjU0MDEzMjY0MDEwOTk3Nzc3OTQyMDU2NTc3NjU2ODk0MjU5Mi4wOworKworK11dKV0sIFsKKysKKytpZiBncmVwIG5vb25zZWVzIGNvbmZ0ZXN0LiRhY19vYmpleHQgPi9kZXYvbnVsbCA7IHRoZW4KKysgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPXllcworK2ZpCisraWYgZ3JlcCBzZWVzbm9vbiBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCisrICBpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gdW5rbm93bjsgdGhlbgorKyAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj1ubworKyAgZWxzZQorKyAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj11bmtub3duCisrICBmaQorK2ZpCisrCisrXSldKQorKworK2Nhc2UgJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIGluCisrICB5ZXMpCisrICAgIG00X2RlZmF1bHQoWyQxXSwKKysgICAgICBbQUNfREVGSU5FKFtGTE9BVF9XT1JEU19CSUdFTkRJQU5dLCAxLAorKyAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIHN0b3JlcyB3b3JkcyB3aXRoaW4gZmxvYXRzCisrICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCB3b3JkIGZpcnN0XSldKSA7OworKyAgbm8pCisrICAgICQyIDs7CisrICAqKQorKyAgICBtNF9kZWZhdWx0KFskM10sCisrICAgICAgW0FDX01TR19FUlJPUihbCisrCisrVW5rbm93biBmbG9hdCB3b3JkIG9yZGVyaW5nLiBZb3UgbmVlZCB0byBtYW51YWxseSBwcmVzZXQKKytheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj1ubyAob3IgeWVzKSBhY2NvcmRpbmcgdG8geW91ciBzeXN0ZW0uCisrCisrICAgIF0pXSkgOzsKKytlc2FjCisrCisrXSkjIEFYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9mdHBsaWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9mdHBsaWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDljNWIyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2Z0cGxpYi5wYXRjaApAQCAtMCwwICsxLDYwIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGNhYmU5MTZkYzY5NDk5N2Q0ODkyYjU4OTg2ZTczYTcxM2Q1YTJmOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWlzcyBJc2xpbmd0b24gKGJvdCkiCisgPDMxNDg4OTA5K21pc3MtaXNsaW5ndG9uQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFRodSwgMTYgQXVnIDIwMTggMTU6Mzg6MDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gWzMuNl0gYnBvLTM0MzkxOiBGaXggZnRwbGliIHRlc3QgZm9yIFRMUyAxLjMgKEdILTg3ODcpCisgKCM4NzkwKQorCitSZWFkIGZyb20gZGF0YSBzb2NrZXQgdG8gYXZvaWQgIltTU0xdIHNodXRkb3duIHdoaWxlIGluIGluaXQiIGV4Y2VwdGlvbgorZHVyaW5nIHNodXRkb3duIG9mIHRoZSBkdW1teSBzZXJ2ZXIuCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorCisKKzwhLS0gaXNzdWUtbnVtYmVyOiBbYnBvLTM0MzkxXShodHRwczovL3d3dy5idWdzLnB5dGhvbi5vcmcvaXNzdWUzNDM5MSkgLS0+CitodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0MzkxCis8IS0tIC9pc3N1ZS1udW1iZXIgLS0+CisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxNTkwYzM5MzM2MGRmMDU5MTYwMTQ1ZTc0NzU3NTQ0MjdiZmM2NjgwKQorCisKK0NvLWF1dGhvcmVkLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKy0tLQorIExpYi90ZXN0L3Rlc3RfZnRwbGliLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKKyBNaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDgtMTYtMTgtNDgtNDcuYnBvLTM0MzkxLm91TmZ4Qy5yc3QgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDgtMTYtMTgtNDgtNDcuYnBvLTM0MzkxLm91TmZ4Qy5yc3QKKworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKK2luZGV4IDQ0ZGQ3M2FlY2EuLjRmZjJmNzFhZmIgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKK0BAIC04NzYsMTggKzg3NiwyMyBAQCBjbGFzcyBUZXN0VExTX0ZUUENsYXNzKFRlc3RDYXNlKToKKyAgICAgICAgICMgY2xlYXIgdGV4dAorICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLnJlY3YoMTAyNCksIExJU1RfREFUQS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnZvaWRyZXNwKCksICIyMjYgdHJhbnNmZXIgY29tcGxldGUiKQorIAorICAgICAgICAgIyBzZWN1cmVkLCBhZnRlciBQUk9UIFAKKyAgICAgICAgIHNlbGYuY2xpZW50LnByb3RfcCgpCisgICAgICAgICB3aXRoIHNlbGYuY2xpZW50LnRyYW5zZmVyY21kKCdsaXN0JykgYXMgc29jazoKKyAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc29jaywgc3NsLlNTTFNvY2tldCkKKysgICAgICAgICAgICAjIGNvbnN1bWUgZnJvbSBTU0wgc29ja2V0IHRvIGZpbmFsaXplIGhhbmRzaGFrZSBhbmQgYXZvaWQKKysgICAgICAgICAgICAjICJTU0xFcnJvciBbU1NMXSBzaHV0ZG93biB3aGlsZSBpbiBpbml0IgorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5yZWN2KDEwMjQpLCBMSVNUX0RBVEEuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC52b2lkcmVzcCgpLCAiMjI2IHRyYW5zZmVyIGNvbXBsZXRlIikKKyAKKyAgICAgICAgICMgUFJPVCBDIGlzIGlzc3VlZCwgdGhlIGNvbm5lY3Rpb24gbXVzdCBiZSBpbiBjbGVhcnRleHQgYWdhaW4KKyAgICAgICAgIHNlbGYuY2xpZW50LnByb3RfYygpCisgICAgICAgICB3aXRoIHNlbGYuY2xpZW50LnRyYW5zZmVyY21kKCdsaXN0JykgYXMgc29jazoKKyAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uoc29jaywgc3NsLlNTTFNvY2tldCkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2sucmVjdigxMDI0KSwgTElTVF9EQVRBLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQudm9pZHJlc3AoKSwgIjIyNiB0cmFuc2ZlciBjb21wbGV0ZSIpCisgCisgICAgIGRlZiB0ZXN0X2xvZ2luKHNlbGYpOgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCmluZGV4IDI0OTFmMzYuLjUzMjliZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KQEAgLTEsMjIgKzEsMzEgQEAKIHsKLSAgICAiMnRvMyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9LzJ0bzMtKiIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWIydG8zIgorICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3Qgc3VpdGUiLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibW9kdWxlcyIKICAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LyovdGVzdCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vKi90ZXN0cyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaWRsZWxpYi9pZGxlX3Rlc3QvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90ZXN0IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KKyAgICB9LAorICAgICIydG8zIjogeworICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vMnRvMy0qIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWIydG8zIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJhc3luY2lvIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FzeW5jaW8iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uY3VycmVudCIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25jdXJyZW50L2Z1dHVyZXMiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBc3luY2hyb25vdXMgSS8iLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLApAQCAtMzIsNTAgKzQxLDQ4IEBACiAgICAgICAgICAgICAidGhyZWFkaW5nIiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBc3luY2hyb25vdXMgSS8iCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hc3luY2lvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25jdXJyZW50IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25jdXJyZW50L2Z1dHVyZXMiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgImF1ZGlvIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2h1bmsuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc25kaGRyLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhdmUuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NodW5rLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NuZGhkci5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdW5hdS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXZlLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXVkaW8gSGFuZGxpbmciLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY2h1bmsucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvb3NzYXVkaW9kZXYuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc25kaGRyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zdW5hdS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2F2ZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jaHVuay4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc25kaGRyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zdW5hdS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vd2F2ZS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImNvZGVjcyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3hkcmxpYi4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveGRybGliLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29kZWMiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3hkcmxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy94ZHJsaWIuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJjb21waWxlIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29tcGlsZWFsbC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9weV9jb21waWxlLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb21waWxlYWxsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5X2NvbXBpbGUucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImFzeW5jaW8iLAogICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKQEAgLTkxLDMwNSArOTgsMzA5IEBACiAgICAgICAgICAgICAidGhyZWFkaW5nIiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29tcGlsZWFsbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHlfY29tcGlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb21waWxlYWxsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9weV9jb21waWxlLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiY29tcHJlc3Npb24iOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2d6aXAuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbHptYS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3ppcGZpbGUuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wcmVzc2lvbi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iejIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYnoyLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC96bGliLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3ppcGZpbGUucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAic2hlbGwiLAogICAgICAgICAgICAgInVuaXhhZG1pbiIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb21wcmVzc2lvbi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnoyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nemlwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYnoyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19sem1hLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3psaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbHptYS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGFyZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vemlwZmlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2J6Mi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ3ppcC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbHptYS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdGFyZmlsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vemlwZmlsZS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImNvcmUiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fX2Z1dHVyZV9fLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb2xsZWN0aW9uc19hYmMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX21hcmt1cGJhc2UuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3NpdGVidWlsdGlucy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fd2Vha3JlZnNldC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXJncGFyc2UuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jpc2VjdC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGVjcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29uZmlncGFyc2VyLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbnRleHRsaWIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29weS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5cmVnLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Nzdi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZW51bS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdW5jdG9vbHMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0b3B0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHRleHQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGVhcHEuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1wLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2luc3BlY3QuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW8uKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18va2V5d29yZC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcHRwYXJzZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmVwcmxpYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZWxlY3RvcnMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2lnbmFsLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbnN0YW50cy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfcGFyc2UuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RhdC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmdwcmVwLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cnVjdC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdWJwcm9jZXNzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5bWJvbC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zeXNjb25maWcuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGV4dHdyYXAuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGhyZWFkaW5nLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuaXplLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RyYWNlYmFjay4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBlcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93YXJuaW5ncy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93ZWFrcmVmLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2FsaWFzZXMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2xhdGluXzEuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL3V0Zl84LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18vYWJjLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9tYWNoaW5lcnkuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fL3V0aWwuKi5weWMiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwKKyAgICAgICAgInJkZXBlbmRzIjogW10sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKlshLWNvbmZpZ10iLAogICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZyouaCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vVXNlckRpY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L1VzZXJMaXN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9Vc2VyU3RyaW5nLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX2Z1dHVyZV9fLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYWJjb2xsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYm9vdGxvY2FsZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX21hcmt1cGJhc2UucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zaXRlYnVpbHRpbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fd2Vha3JlZnNldC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hcmdwYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYXN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iaXNlY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGVjcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29kZW9wLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2xsZWN0aW9ucyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMvYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWdwYXJzZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbnRleHRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvcHkucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvcHlyZWcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Nzdi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZGlzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvbGF0aW5fMS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL3V0Zl84LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mdW5jdG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dlbmVyaWNwYXRoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXRvcHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dldHRleHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2hlYXBxLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL19ib290c3RyYXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXBvcnRsaWIvYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXBvcnRsaWIvdXRpbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW5zcGVjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2tleXdvcmQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zdHJ1Y3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX19weWNhY2hlX18vYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX19weWNhY2hlX18vdGltZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19iaXNlY3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2Nzdi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9faGVhcHEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX29wY29kZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zdHJ1Y3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvYXJyYXkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvbWF0aC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9wYXJzZXIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvc2VsZWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3RpbWUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQveHJlYWRsaW5lcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saW5lY2FjaGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbmV3LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcGNvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29wZXJhdG9yLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcHRwYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BsYXRmb3JtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wb3NpeHBhdGgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3JlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9yZXBybGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ybGNvbXBsZXRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2VsZWN0b3JzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaWduYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckRpY3QucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlclN0cmluZy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX2Z1dHVyZV9fLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19hYmNvbGwucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2Jvb3Rsb2NhbGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fbWFya3VwYmFzZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc2l0ZWJ1aWx0aW5zLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zeXNjb25maWdkYXRhLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L193ZWFrcmVmc2V0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FiYy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hcmdwYXJzZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3QucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmlzZWN0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29kZWNzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVvcC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy9hYmMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlncGFyc2VyLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbnRleHRsaWIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29weS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Nzdi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9sYXRpbl8xLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy91dGZfOC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbnVtLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z1bmN0b29scy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZW5lcmljcGF0aC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0dGV4dC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9oZWFwcS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9hYmMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL21hY2hpbmVyeS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvdXRpbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbnNwZWN0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lvLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2tleXdvcmQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3N0cnVjdC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdGltZS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYmlzZWN0Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Nzdi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oZWFwcS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3N0cnVjdC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tYXRoLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zZWxlY3QuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGluZWNhY2hlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xvY2FsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9uZXcucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3Bjb2RlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wZXJhdG9yLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wdHBhcnNlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29zLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BsYXRmb3JtLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Bvc2l4cGF0aC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXBybGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JsY29tcGxldGVyLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NlbGVjdG9ycy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaWduYWwucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2l0ZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29tcGlsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29uc3RhbnRzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9wYXJzZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ3ByZXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3RydWN0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N1YnByb2Nlc3MucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3ltYm9sLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N5c2NvbmZpZy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXh0d3JhcC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW4ucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW5pemUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGVzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dhcm5pbmdzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYucHkiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3JlX2NvbXBpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NyZV9jb25zdGFudHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NyZV9wYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3RhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3RyaW5ncHJlcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3RydWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zdWJwcm9jZXNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zeW1ib2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3N5c2NvbmZpZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGV4dHdyYXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3RocmVhZGluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdG9rZW4ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Rva2VuaXplLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90cmFjZWJhY2sucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3R5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS93YXJuaW5ncy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2Vha3JlZi5weSIKICAgICAgICAgXSwKLSAgICAgICAgInJkZXBlbmRzIjogW10sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19fZnV0dXJlX18uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnNfYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fbWFya3VwYmFzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX3NpdGVidWlsdGlucy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX3N5c2NvbmZpZ2RhdGEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL193ZWFrcmVmc2V0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2FyZ3BhcnNlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hc3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Jpc2VjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZWNzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvbmZpZ3BhcnNlci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29udGV4dGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29weS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29weXJlZy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY3N2LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2VudW0uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Z1bmN0b29scy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dldG9wdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2V0dGV4dC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vaGVhcHEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ltcC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vaW5zcGVjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vaW8uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2tleXdvcmQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2xpbmVjYWNoZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcGNvZGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wZXJhdG9yLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcHRwYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BsYXRmb3JtLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3JlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9yZXBybGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2VsZWN0b3JzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaWduYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NyZV9jb21waWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zcmVfY29uc3RhbnRzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zcmVfcGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3N0YXQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3N0cmluZ3ByZXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3N0cnVjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3VicHJvY2Vzcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3ltYm9sLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zeXNjb25maWcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3RleHR3cmFwLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90aHJlYWRpbmcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3Rva2VuLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90b2tlbml6ZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdHJhY2ViYWNrLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90eXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vd2FybmluZ3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3dlYWtyZWYuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2xsZWN0aW9ucy9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VuY29kaW5ncy9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL19fcHljYWNoZV9fL2FsaWFzZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VuY29kaW5ncy9fX3B5Y2FjaGVfXy9sYXRpbl8xLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvX19weWNhY2hlX18vdXRmXzguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL19fcHljYWNoZV9fL21hY2hpbmVyeS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL19fcHljYWNoZV9fL3V0aWwuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJjcnlwdCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NyeXB0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hhc2hsaWIuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NyeXB0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NyeXB0Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgIm1hdGgiLAogICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NyeXB0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9oYXNobGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3J5cHQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTI1Ni4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhNTEyLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY3J5cHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2hhc2hsaWIuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJjdHlwZXMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3R5cGVzIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdHlwZXMuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3R5cGVzX3Rlc3QuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY3R5cGVzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3R5cGVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJjdXJzZXMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdXJzZXMuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjdXJzZXMgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jdXJzZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jdXJzZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJkYXRldGltZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zdHJwdGltZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jYWxlbmRhci4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kYXRldGltZS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3N0cnB0aW1lLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NhbGVuZGFyLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RhdGV0aW1lLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kYXRldGltZS4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zdHJwdGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY2FsZW5kYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2RhdGV0aW1lLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc3RycHRpbWUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NhbGVuZGFyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kYXRldGltZS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImRiIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RibSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGJtLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2RibSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2RibS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJkZWJ1Z2dlciI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2JkYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wZGIuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2JkYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wZGIucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZWJ1Z2dlciIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJwcHJpbnQiLAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZWJ1Z2dlciIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JkYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGRiLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2JkYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGRiLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiZGV2IjogewogICAgICAgICAiY2FjaGVkIjogW10sCkBAIC00MDUsOCArNDE2LDggQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vKi5vIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUvX19weWNhY2hlX18iCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnKi9NYWtlZmlsZSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnKi9NYWtlZmlsZS9fX3B5Y2FjaGVfXyIKICAgICAgICAgXSwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCkBAIC00MTQsNDYgKzQyNSw0MSBAQAogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKICAgICB9LAogICAgICJkaWZmbGliIjogeworICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2RpZmZsaWIucHkiCisgICAgICAgIF0sCiAgICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaWZmbGliLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaWZmbGliLnB5IgotICAgICAgICBdLAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgotICAgIH0sCi0gICAgImRpc3R1dGlscyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXN0dXRpbHMiCi0gICAgICAgIF0sCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kaWZmbGliLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiZGlzdHV0aWxzLXN0YXRpY2RldiI6IHsKICAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZy9fX3B5Y2FjaGVfXy9saWIqLmEiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL19fcHljYWNoZV9fL2xpYiouYSIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL2xpYiouYSIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvbGliKi5hIgogICAgICAgICBdLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiZGlzdHV0aWxzIgogICAgICAgICBdLAogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiCiAgICAgfSwKLSAgICAiZG9jdGVzdCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RvY3Rlc3QuKi5weWMiCisgICAgImRpc3R1dGlscyI6IHsKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZG9jdGVzdC5weSIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kaXN0dXRpbHMiCiAgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQorICAgIH0sCisgICAgImRvY3Rlc3QiOiB7CisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJkZWJ1Z2dlciIsCkBAIC00NjQsMTYgKzQ3MCwxNSBAQAogICAgICAgICAgICAgInN0cmluZ29sZCIsCiAgICAgICAgICAgICAidW5pdHRlc3QiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2RvY3Rlc3QucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZG9jdGVzdC4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImVtYWlsIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1hcGxpYi4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW1haWwiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1hcGxpYi5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGVtYWlsIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiY3J5cHQiLApAQCAtNDgyLDg2ICs0ODcsNzQgQEAKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW1haWwiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltYXBsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vaW1hcGxpYi4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImZjbnRsIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ZjbnRsLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbidzIGZjbnRsIGludGVyZmFjZSIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9mY250bC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJnZGJtIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19nZGJtLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBHTlUgZGF0YWJhc2Ugc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fZ2RibS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJodG1sIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm9ybWF0dGVyLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mb3JtYXR0ZXIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaHRtbCIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Zvcm1hdHRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaHRtbCIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9mb3JtYXR0ZXIuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJpZGxlIjogewotICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IiwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2JpbmRpcn0vaWRsZSoiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaWRsZWxpYiIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pZGxlbGliIgogICAgICAgICBdLAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgImltYWdlIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29sb3JzeXMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1naGRyLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xvcnN5cy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbWdoZHIucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbG9yc3lzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbWdoZHIucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29sb3JzeXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ltZ2hkci4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImlvIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3B5aW8uKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaXBhZGRyZXNzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpcGVzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zc2wuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGVtcGZpbGUuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19weWlvLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lwYWRkcmVzcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc29ja2V0Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NzbC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3Rlcm1pb3MuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9waXBlcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zb2NrZXQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3NsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RlbXBmaWxlLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIEkvTyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCkBAIC01NzEsMzcgKzU2NCw1MCBAQAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb3ctbGV2ZWwgSS9PIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3B5aW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2lwYWRkcmVzcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NvY2tldC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc3NsLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3Rlcm1pb3MuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NvY2tldC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3NsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90ZW1wZmlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fcHlpby4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vaXBhZGRyZXNzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9waXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc29ja2V0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zc2wuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3RlbXBmaWxlLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAianNvbiI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19qc29uLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBKU09OIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEpTT04gc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2pzb24iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19qc29uLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgImxvZ2dpbmciOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbG9nZ2luZyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sb2dnaW5nIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJtYWlsYm94IjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFpbGJveC4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbWFpbGJveC5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiY3J5cHQiLApAQCAtNjE0LDQ2ICs2MjAsNTEgQEAKICAgICAgICAgICAgICJuZXRjbGllbnQiLAogICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9tYWlsYm94LnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL21haWxib3guKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJtYXRoIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmFuZG9tLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcmFuZG9tLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvY21hdGguKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yYW5kb20ucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYXRoIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiY3J5cHQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYXRoIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fcmFuZG9tLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2NtYXRoLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3JhbmRvbS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9yYW5kb20uKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJtaW1lIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVvcHJpLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3V1LioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9xdW9wcmkucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXUucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3F1b3ByaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdXUucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcXVvcHJpLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy91dS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgIm1tYXAiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbW1hcC4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvbW1hcC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJtb2R1bGVzIjogewogICAgICAgICAiY2FjaGVkIjogW10sCkBAIC03MTAsNDkgKzcyMSwyNSBAQAogICAgICAgICAgICAgInR5cGluZyIsCiAgICAgICAgICAgICAidW5pdHRlc3QiLAogICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAidmVudiIsCiAgICAgICAgICAgICAieG1sIiwKICAgICAgICAgICAgICJ4bWxycGMiCiAgICAgICAgIF0sCiAgICAgICAgICJzdW1tYXJ5IjogIkFsbCBQeXRob24gbW9kdWxlcyIKICAgICB9LAogICAgICJtdWx0aXByb2Nlc3NpbmciOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX211bHRpcHJvY2Vzc2luZy4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L211bHRpcHJvY2Vzc2luZyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3NpbmcuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbXVsdGlwcm9jZXNzaW5nIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJuZXRjbGllbnQiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iYXNlNjQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnRwbGliLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2htYWMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWltZXR5cGVzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL25udHBsaWIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcG9wbGliLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NtdHBsaWIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGVsbmV0bGliLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3V1aWQuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Jhc2U2NC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mdHBsaWIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaG1hYy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9odHRwIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAvX19weWNhY2hlX18iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbWltZXR5cGVzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L25udHBsaWIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcG9wbGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NtdHBsaWIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGVsbmV0bGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VybGxpYiIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91cmxsaWIvX19weWNhY2hlX18iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXVpZC5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLApAQCAtNzY3LDE3ICs3NTQsMzUgQEAKICAgICAgICAgICAgICJzdHJpbmdvbGQiLAogICAgICAgICAgICAgInVuaXhhZG1pbiIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iYXNlNjQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Z0cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaG1hYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaHR0cCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaHR0cC9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbWltZXR5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ubnRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wb3BsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NtdHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3RlbG5ldGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdXJsbGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91cmxsaWIvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3V1aWQucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYmFzZTY0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9mdHBsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2htYWMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL21pbWV0eXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbm50cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcG9wbGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zbXRwbGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90ZWxuZXRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3V1aWQuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJuZXRzZXJ2ZXIiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jZ2kuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc29ja2V0c2VydmVyLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jZ2kucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc29ja2V0c2VydmVyLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgc2VydmVycyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCkBAIC03OTMsMTc1ICs3OTgsMTcyIEBACiAgICAgICAgICAgICAic3RyaW5nb2xkIiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY2dpLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zb2NrZXRzZXJ2ZXIucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY2dpLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zb2NrZXRzZXJ2ZXIuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJudW1iZXJzIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3B5ZGVjaW1hbC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kZWNpbWFsLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ZyYWN0aW9ucy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9udW1iZXJzLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fcHlkZWNpbWFsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RlY2ltYWwucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZnJhY3Rpb25zLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kZWNpbWFsLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbnVtYmVycy5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBudW1iZXIgQVBJcyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19weWRlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2RlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ZyYWN0aW9ucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2RlY2ltYWwuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbnVtYmVycy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fcHlkZWNpbWFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kZWNpbWFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9mcmFjdGlvbnMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL251bWJlcnMuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJwaWNrbGUiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcGF0X3BpY2tsZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlja2xldG9vbHMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2hlbHZlLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29tcGF0X3BpY2tsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcGlja2xlLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGlja2xlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BpY2tsZXRvb2xzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NoZWx2ZS5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2VyaWFsaXNhdGlvbi9wZXJzaXN0ZW5jZSBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXBhdF9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19waWNrbGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGlja2xlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9waWNrbGV0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2hlbHZlLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19jb21wYXRfcGlja2xlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9waWNrbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BpY2tsZXRvb2xzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaGVsdmUuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJwa2d1dGlsIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGtndXRpbC5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcGFja2FnZSBleHRlbnNpb24gdXRpbGl0eSBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGtndXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wa2d1dGlsLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAicGxpc3RsaWIiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGlzdGxpYi4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGxpc3RsaWIucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiZGF0ZXRpbWUiLAogICAgICAgICAgICAgInhtbCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiR2VuZXJhdGUgYW5kIHBhcnNlIE1hYyBPUyBYIC5wbGlzdCBmaWxlcyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BsaXN0bGliLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BsaXN0bGliLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAicHByaW50IjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHByaW50LioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wcHJpbnQucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wcHJpbnQucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcHByaW50LioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAicHJvZmlsZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NQcm9maWxlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Byb2ZpbGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHN0YXRzLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jUHJvZmlsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbHNwcm9mLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHJvZmlsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wc3RhdHMucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBwZXJmb3JtYW5jZSBwcm9maWxpbmcgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jUHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2xzcHJvZi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wcm9maWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wc3RhdHMucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY1Byb2ZpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3Byb2ZpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BzdGF0cy4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInB5ZG9jIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlkb2MuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MqIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAibmV0Y2xpZW50IiwKICAgICAgICAgICAgICJwa2d1dGlsIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5ZG9jKiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHlkb2MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3B5ZG9jX2RhdGEiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcHlkb2MuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJyZXNvdXJjZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9yZXNvdXJjZS4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJlc291cmNlIGNvbnRyb2wgaW50ZXJmYWNlIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAicnVucHkiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ydW5weS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcnVucHkucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAicGtndXRpbCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlciBmb3IgbG9jYXRpbmcvZXhlY3V0aW5nIHNjcmlwdHMgaW4gbW9kdWxlIG5hbWVzcGFjZSIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3J1bnB5LnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3J1bnB5LioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAic2hlbGwiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nbG9iLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NodXRpbC4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY21kLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ZubWF0Y2gucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2xvYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGxleC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaHV0aWwucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgInN0cmluZ29sZCIsCiAgICAgICAgICAgICAidW5peGFkbWluIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY21kLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mbm1hdGNoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nbG9iLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaGxleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2h1dGlsLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NtZC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2xvYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2hsZXguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NodXRpbC4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInNtdHBkIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN5bmNoYXQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN5bmNvcmUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc210cGQuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vc210cGQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXN5bmNoYXQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXN5bmNvcmUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc210cGQucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImNyeXB0IiwKQEAgLTk3MywxMzAgKzk3NSwxMDkgQEAKICAgICAgICAgICAgICJuZXRjbGllbnQiLAogICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vc210cGQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FzeW5jaGF0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hc3luY29yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc210cGQucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYXN5bmNoYXQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2FzeW5jb3JlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zbXRwZC4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInNxbGl0ZTMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18vZGJhcGkyLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18vZHVtcC4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NxbGl0ZTMuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL2RiYXBpMi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL2R1bXAucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiZGF0ZXRpbWUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiCi0gICAgfSwKLSAgICAic3FsaXRlMy10ZXN0cyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL3Rlc3QiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NxbGl0ZTMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3FsaXRlMyIKICAgICAgICAgXSwKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLAotICAgICAgICAgICAgInRlc3RzIgotICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IHRlc3RzIgorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJzdHJpbmdvbGQiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmcuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZy5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3RyaW5nLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3N0cmluZy4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInN5c2xvZyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zeXNsb2cuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN5c2xvZyBpbnRlcmZhY2UiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN5c2xvZyBpbnRlcmZhY2UiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9zeXNsb2cuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAidGVybWluYWwiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wdHkuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHR5LioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wdHkucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHR5LnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJpbyIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlcm1pbmFsIGNvbnRyb2xsaW5nIHN1cHBvcnQiCi0gICAgfSwKLSAgICAidGVzdHMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKICAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGVzdCIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wdHkucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3R0eS5weSIKICAgICAgICAgXSwKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0cyIKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wdHkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3R0eS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInRocmVhZGluZyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19kdW1teV90aHJlYWQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3RocmVhZGluZ19sb2NhbC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kdW1teV90aHJlYWRpbmcuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVldWUuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19kdW1teV90aHJlYWQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3RocmVhZGluZ19sb2NhbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcXVldWUucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fZHVtbXlfdGhyZWFkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fdGhyZWFkaW5nX2xvY2FsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kdW1teV90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3F1ZXVlLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19kdW1teV90aHJlYWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL190aHJlYWRpbmdfbG9jYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2R1bW15X3RocmVhZGluZy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcXVldWUuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJ0a2ludGVyIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RraW50ZXIiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3RraW50ZXIiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgInR5cGluZyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R5cGluZy4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHlwaW5nLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdHlwaW5nIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHR5cGluZyBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdHlwaW5nLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3R5cGluZy4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInVuaXR0ZXN0IjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0LyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdC9fX3B5Y2FjaGVfXyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiZGlmZmxpYiIsCkBAIC0xMTA1LDQ1ICsxMDg2LDY2IEBACiAgICAgICAgICAgICAic2hlbGwiLAogICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91bml0dGVzdCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdW5pdHRlc3QvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91bml0dGVzdC9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAidW5peGFkbWluIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0cGFzcy4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0cGFzcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9ncnAuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9uaXMuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJpbyIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dldHBhc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2dycC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9uaXMuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9nZXRwYXNzLioucHljIgorICAgICAgICBdCisgICAgfSwKKyAgICAidmVudiI6IHsKKyAgICAgICAgInN1bW1hcnkiOiAiUHJvdmlkZXMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbGlnaHR3ZWlnaHQgdmlydHVhbCBlbnZpcm9ubWVudHMgd2l0aCB0aGVpciBvd24gc2l0ZSBkaXJlY3Rvcmllcywgb3B0aW9uYWxseSBpc29sYXRlZCBmcm9tIHN5c3RlbSBzaXRlIGRpcmVjdG9yaWVzLiIsCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdmVudiIsCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dmVudioiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgInhtbCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9weWV4cGF0Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1sIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgWE1MIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2VsZW1lbnR0cmVlLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3B5ZXhwYXQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0veG1sIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJ4bWxycGMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1scnBjIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYy9fX3B5Y2FjaGVfXyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJ4bWwiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBYTUwtUlBDIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS94bWxycGMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3htbHJwYy9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODYzYzZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtZSAnL1wuXC5cLiBbRVJST1J8RkFJTF0vIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDJiMWM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1zaHV0aWxzIHNob3VsZCBjb25zaWRlciBzeW1saW5rcwotCi0tS2hlbQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGEvTGliL3NodXRpbC5weQkyMDEzLTAxLTI5IDEyOjMxOjA2LjkyNjU1NTc3OSAtMDgwMAotKysrIGIvTGliL3NodXRpbC5weQkyMDEzLTAxLTI5IDE2OjMxOjM5LjA5NzU1NDE4MiAtMDgwMAotQEAgLTEzMiw3ICsxMzIsNyBAQCBkZWYgY29weW1vZGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rCi0gICAgIHN0ID0gc3RhdF9mdW5jKHNyYykKLSAgICAgY2htb2RfZnVuYyhkc3QsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSkKLSAKLS1pZiBoYXNhdHRyKG9zLCAnbGlzdHhhdHRyJyk6Ci0raWYgaGFzYXR0cihvcywgJ2xpc3R4YXR0cicpIGFuZCBvcy5saXN0eGF0dHIgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgotICAgICBkZWYgX2NvcHl4YXR0cihzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgotICAgICAgICAgIiIiQ29weSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMgZnJvbSBgc3JjYCB0byBgZHN0YC4KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NpZ25hbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NpZ25hbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzRhMDk3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc2lnbmFsLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gNDMxNTM4OWRmM2M0ZThjMWY5NGExOGFiMTFhNGIyMzQ3NjIxMzJiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudG9pbmUgUGl0cm91IDxwaXRyb3VAZnJlZS5mcj4KK0RhdGU6IE1vbiwgMjMgQXByIDIwMTggMjI6MjI6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gWzMuNl0gYnBvLTMzMzI5OiBGaXggbXVsdGlwcm9jZXNzaW5nIHJlZ3Jlc3Npb24gb24gbmV3ZXIKKyBnbGliY3MgKEdILTY1NzUpIChHSC02NTgyKQorCitTdGFydGluZyB3aXRoIGdsaWJjIDIuMjcuOTAwMC14eHgsIHNpZ2FkZHNldCgpIGNhbiByZXR1cm4gRUlOVkFMIGZvciBzb21lCityZXNlcnZlZCBzaWduYWwgbnVtYmVycyBiZXR3ZWVuIDEgYW5kIE5TSUcuICBUaGUgYHJhbmdlKDEsIE5TSUcpYCBpZGlvbQoraXMgY29tbW9ubHkgdXNlZCB0byBzZWxlY3QgYWxsIHNpZ25hbHMgZm9yIGJsb2NraW5nIHdpdGggYHB0aHJlYWRfc2lnbWFza2AuCitTbyB3ZSBpZ25vcmUgdGhlIHNpZ2FkZHNldCgpIHJldHVybiB2YWx1ZSB1bnRpbCB3ZSBleHBvc2Ugc2lnZmlsbHNldCgpCit0byBwcm92aWRlIGEgYmV0dGVyIGlkaW9tLgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMjUwMzhlY2ZiNjY1YmVmNjQxYWJmOGNiNjFhZmZmNzUwNWIwZTAwOCkKKy0tLQorIC4uLi9uZXh0L0xpYnJhcnkvMjAxOC0wNC0yMy0xMy0yMS0zOS5icG8tMzMzMjkubFEtRW9kLnJzdCAgfCAgMSArCisgTW9kdWxlcy9zaWduYWxtb2R1bGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTIzLTEzLTIxLTM5LmJwby0zMzMyOS5sUS1Fb2QucnN0CisKK2RpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworaW5kZXggZTBkMDZiNDM0ZC4uMTM4ZTc0ZThhOSAxMDA2NDQKKy0tLSBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKKysrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKK0BAIC03NDQsNyArNzQ0LDYgQEAgaXRlcmFibGVfdG9fc2lnc2V0KFB5T2JqZWN0ICppdGVyYWJsZSwgc2lnc2V0X3QgKm1hc2spCisgICAgIGludCByZXN1bHQgPSAtMTsKKyAgICAgUHlPYmplY3QgKml0ZXJhdG9yLCAqaXRlbTsKKyAgICAgbG9uZyBzaWdudW07CistICAgIGludCBlcnI7CisgCisgICAgIHNpZ2VtcHR5c2V0KG1hc2spOworIAorQEAgLTc2NiwxMSArNzY1LDE0IEBAIGl0ZXJhYmxlX3RvX3NpZ3NldChQeU9iamVjdCAqaXRlcmFibGUsIHNpZ3NldF90ICptYXNrKQorICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgaWYgKHNpZ251bSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgIGdvdG8gZXJyb3I7CistICAgICAgICBpZiAoMCA8IHNpZ251bSAmJiBzaWdudW0gPCBOU0lHKQorLSAgICAgICAgICAgIGVyciA9IHNpZ2FkZHNldChtYXNrLCAoaW50KXNpZ251bSk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAgZXJyID0gMTsKKy0gICAgICAgIGlmIChlcnIpIHsKKysgICAgICAgIGlmICgwIDwgc2lnbnVtICYmIHNpZ251bSA8IE5TSUcpIHsKKysgICAgICAgICAgICAvKiBicG8tMzMzMjk6IGlnbm9yZSBzaWdhZGRzZXQoKSByZXR1cm4gdmFsdWUgYXMgaXQgY2FuIGZhaWwKKysgICAgICAgICAgICAgKiBmb3Igc29tZSByZXNlcnZlZCBzaWduYWxzLCBidXQgd2Ugd2FudCB0aGUgYHJhbmdlKDEsIE5TSUcpYAorKyAgICAgICAgICAgICAqIGlkaW9tIHRvIGFsbG93IHNlbGVjdGluZyBhbGwgdmFsaWQgc2lnbmFscy4KKysgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAodm9pZCkgc2lnYWRkc2V0KG1hc2ssIChpbnQpc2lnbnVtKTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgeworICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIG51bWJlciAlbGQgb3V0IG9mIHJhbmdlIiwgc2lnbnVtKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4YmUzMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBsaWJmZmkgYnppcDIgZ2RibSBvcGVuc3NsIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHoiCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotUFlUSE9OX01BSk1JTiA9ICIzLjUiCi1QWVRIT05fQklOQUJJPSAiJHtQWVRIT05fTUFKTUlOfW0iCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi1maWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCi1maWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKLWZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAotZmlsZTovL3R3ZWFrLU1VTFRJQVJDSC1mb3ItcG93ZXJwYy1saW51eC1nbnVzcGUucGF0Y2ggXAotZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCi0ke0RJU1RST19TUkNfVVJJfSBcCi0iCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F2b2lkLW5jdXJzZXN3LWluY2x1ZGUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDYxLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImYzNzYzZWRmOTgyNGQ1ZDNhMTVmNWY2NDYwODNiNmUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2M2QyYzNiMDQwMmQ2MTkxYjkwNzMxZTBmNzM1YzY0ODMwZTc1MjIzNDhhZWI3ZWQzODJhODMxNjVkNDUwMDkiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ZWM1MTViMjI2MThmNTVmYTA3Mjc2Yjg5N2JhY2VhIgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1QQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICIsLHJlYWRsaW5lIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IiBsaWJweXRob24zLnNvCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnCi0KLQkjIHJlcnVuIHRoZSBidWlsZCBvbmNlIGFnYWluIHdpdGggb3JpZ2luYWwgbWFrZWZpbGUgdGhpcyB0aW1lCi0JIyBydW4gaW5zdGFsbCBpbiBhIHNlcGFyYXRlIHN0ZXAgdG8gYXZvaWQgY29tcGlsZS9pbnN0YWxsIHJhY2UKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nIFBZVEhPTk5PVVNFUlNJVEU9JzEnCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSBcCi0JCSR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnCi0KLQkjIFJlY29tcGlsZSBfc3lzY29uZmlnZGF0YSBhZnRlciBtb2RpZnlpbmcgaXQKLQljZCAke1BLR0R9Ci0JJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKLQkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknKSIKLQkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAotCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScsIG9wdGltaXplPTEpIgotCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCi0JICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Jywgb3B0aW1pemU9MikiCi0JY2QgLQotfQotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24zLW1vZHVsZXMiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgotCi1GSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXZlbnYiCi1GSUxFU18ke1BOfS1weXZlbnYgKz0gIiR7YmluZGlyfS9weXZlbnYtJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHl2ZW52IgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMwotUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCi1GSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi1GSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCi0KLSMgY2F0Y2ggbWFucGFnZQotUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKLUZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tbW9kdWxlcyIKLQotIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0Ci0jIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCi1JTkNMVURFX1BZQ1MgPz0gIjEiCi0KLXB5dGhvbigpewotICAgIGltcG9ydCBqc29uCi0KLSAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignVEhJU0RJUicpLCAncHl0aG9uMycsICdweXRob24zLW1hbmlmZXN0Lmpzb24nKQotICAgICMgVGhpcyBweXRob24gY2hhbmdlcyB0aGUgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIGZpbGUsIHNvIG1hcmsKLSAgICAjIHRoYXQgZGVwZW5kZW5jeS4KLSAgICBiYi5wYXJzZS5tYXJrX2RlcGVuZGVuY3koZCwgZmlsZW5hbWUpCi0KLSAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIG1hbmlmZXN0X2ZpbGU6Ci0gICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSkKLQotICAgIGluY2x1ZGVfcHljcyA9IGQuZ2V0VmFyKCdJTkNMVURFX1BZQ1MnKQotCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgcG4gPSBkLmdldFZhcignUE4nKQotCi0gICAgbmV3cGFja2FnZXM9W10KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlPSBwbiArICctJyArIGtleQotCi0gICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6Ci0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZwotICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKLSAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCi0KLSAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQotICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKLQotICAgIAkjIEFkZCBjYWNoZWQgZmlsZXMKLSAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKLSAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKLQotICAgICAgICBkLnNldFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJycpCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKLSAgICAgICAgICAgICMgTWFrZSBpdCB3b3JrIHdpdGggb3Igd2l0aG91dCAkUE4KLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0gICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXycgKyBweXBhY2thZ2UsIHB5dGhvbl9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10pCi0KLSAgICAjIFdlIG5lZWQgdG8gZW5zdXJlIHN0YXRpY2RldiBwYWNrYWdlcyBtYXRjaCBmb3IgZmlsZXMgZmlyc3Qgc28gd2Ugc29ydCBpbiByZXZlcnNlCi0gICAgbmV3cGFja2FnZXMuc29ydChyZXZlcnNlPVRydWUpCi0gICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZwotICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcwotICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKLX0KLQotIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0Ci1TUkNfVVJJICs9ICJmaWxlOi8vY3JlYXRlX21hbmlmZXN0My5weSBmaWxlOi8vZ2V0X21vZHVsZV9kZXBzMy5weSBmaWxlOi8vcHl0aG9uMy1tYW5pZmVzdC5qc29uIgotCi1kb19jcmVhdGVfbWFuaWZlc3QoKSB7Ci0gICAgIyBUaGlzIHRhc2sgc2hvdWxkIGJlIHJ1biB3aXRoIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIFB5dGhvbi4KLSAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgUEFDS0FHRUNPTkZJRyBlbmFibGVzIGV2ZXJ5dGhpbmcgd2hlbiBjcmVhdGluZwotICAgICMgYSBuZXcgbWFuaWZlc3QsIHRoaXMgaXMgdG8gYmFzZSBvdXIgbmV3IG1hbmlmZXN0IG9uIGEgY29tcGxldGUKLSAgICAjIG5hdGl2ZSBweXRob24gYnVpbGQsIGNvbnRhaW5pbmcgYWxsIGRlcGVuZGVuY2llcywgb3RoZXJ3aXNlIHRoZSB0YXNrCi0gICAgIyB3b250IGJlIGFibGUgdG8gZmluZCB0aGUgcmVxdWlyZWQgZmlsZXMuCi0gICAgIyBlLmcuIEJlcmtlbGV5REIgaXMgYW4gb3B0aW9uYWwgYnVpbGQgZGVwZW5kZW5jeSBzbyBpdCBtYXkgb3IgbWF5IG5vdAotICAgICMgYmUgcHJlc2VudCwgd2UgbXVzdCBlbnN1cmUgaXQgaXMuCi0KLSAgICBjZCAke1dPUktESVJ9Ci0gICAgIyBUaGlzIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJ5IHB5dGhvbi1uYXRpdmUgYW5kIE5PVCBieSBIT1NUJ3MgcHl0aG9uCi0gICAgbmF0aXZlcHl0aG9uMyBjcmVhdGVfbWFuaWZlc3QzLnB5Ci0gICAgY3AgcHl0aG9uMy1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCi19Ci0KLSMgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0Ci1hZGR0YXNrIGRvX2NyZWF0ZV9tYW5pZmVzdAotCi0jIE1ha2Ugc3VyZSB3ZSBoYXZlIG5hdGl2ZSBweXRob24gcmVhZHkgd2hlbiB3ZSBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLWRvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uMzpkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IgotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob24zOmRvX3BhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWY4ZWFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjYuYmIKQEAgLTAsMCArMSwzMjkgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy5pbmMKKworREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBsaWJmZmkgYnppcDIgZ2RibSBvcGVuc3NsIFwKKyAgICAgICAgICAgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiBxZW11LW5hdGl2ZSBcCisgICAgICAgICAgIHFlbXUtaGVscGVyLW5hdGl2ZSB2aXJ0dWFsL2NyeXB0IgorCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKKyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1VzZS1jb3JyZWN0LUNGTEFHUy1mb3ItZXh0ZW5zaW9ucy13aGVuLWNyb3NzLWNvbXBpbGkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItTWFrZWZpbGUtYWRkLXRhcmdldC10by1zcGxpdC1wcm9maWxlLWdlbmVyYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2Zsb2F0LWVuZGlhbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZnRwbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zaWduYWwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtSXNzdWUtMjgwNDMtU1NMQ29udGV4dC1oYXMtaW1wcm92ZWQtZGVmYXVsdC1zZXR0aW5ncy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1icG8tMjkxMzYtQWRkLVRMUy0xLjMtY2lwaGVyLXN1aXRlcy1hbmQtT1BfTk9fVExTdjFfLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWJwby0zMjk0Ny1GaXhlcy1mb3ItVExTLTEuMy1hbmQtT3BlblNTTC0xLjEuMS1HSC04NzYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtYnBvLTMzNTcwLVRMUy0xLjMtY2lwaGVycy1mb3ItT3BlblNTTC0xLjEuMS1HSC02OTc2LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWJwby0zMDcxNC1BTFBOLWNoYW5nZXMtZm9yLU9wZW5TU0wtMS4xLjBmLTIzMDUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uM25hdGl2ZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgcHRlc3QKKworTVVMVElMSUJfU1VGRklYID0gIiR7QGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicsMSkuc3BsaXQoJy8nKVstMV19IgorCitBTFRFUk5BVElWRV8ke1BOfS1kZXYgPSAicHl0aG9uLWNvbmZpZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtweXRob24tY29uZmlnXSA9ICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWciCitBTFRFUk5BVElWRV9UQVJHRVRbcHl0aG9uLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfSIKKworQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGF2ZV9jaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xjaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKKyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorU0RLX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorRVhUUkFfT0VNQUtFICs9ICJDUk9TU19DT01QSUxFPXllcyIKK0VYVFJBX09FQ09ORiArPSAiQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyAtLXdpdGhvdXQtZW5zdXJlcGlwIgorCitQWVRIT04zX1BST0ZJTEVfVEFTSyA/PSAiLi9weXRob24gLW0gdGVzdC5yZWdydGVzdCAtLXBnbyB0ZXN0X2dyYW1tYXIgdGVzdF9vcGNvZGVzIHRlc3RfZGljdCB0ZXN0X2J1aWx0aW4gdGVzdF9leGNlcHRpb25zIHRlc3RfdHlwZXMgdGVzdF9zdXBwb3J0IHx8IHRydWUiCisKK2V4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCitleHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCisKKyMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCitleHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdxZW11LXVzZXJtb2RlJywgJ3BnbycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICIsLHJlYWRsaW5lIgorIyBVc2UgcHJvZmlsZSBndWlkZWQgb3B0aW1pc2F0aW9uIGJ5IHJ1bm5pbmcgUHlCZW5jaCBpbnNpZGUgcWVtdS11c2VyCitQQUNLQUdFQ09ORklHW3Bnb10gPSAiLS1lbmFibGUtb3B0aW1pemF0aW9ucyIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKK30KKworcnVuX21ha2UoKSB7CisJb2VfcnVubWFrZSBQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJTElCPSR7YmFzZWxpYn0gXAorCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKwkJT1BUPSIke0NGTEFHU30iIFwKKwkJIiRAIgorfQorCitkb19jb21waWxlKCkgeworCSMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworCWNkICR7U30vTGliL3BsYXQtbGludXgqCisJaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCSR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAorCQkke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKwkJJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCisJCSR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCisJCSR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisJc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKKwljZCAtCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MsXkNPTkZJR1VSRV9MREZMQUdTPS4qLENPTkZJR1VSRV9MREZMQUdTPS1MLiAtTCR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BnbycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXJ1bl9tYWtlIHByb2ZpbGUtb3B0CisJCXFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9JywgWycke0J9JywgJyR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfSddKX0iCisJCWNhdCA+cGdvLXdyYXBwZXIgPDxFT0YKKyMhL2Jpbi9zaAorY2QgJHtCfQorJHFlbXVfYmluYXJ5ICJcJEAiCitFT0YKKwkJY2htb2QgK3ggcGdvLXdyYXBwZXIKKwkJYmJub3RlIEdhdGhlcmluZyBwcm9maWxpbmcgZGF0YQorCQkuL3Bnby13cmFwcGVyICR7UFlUSE9OM19QUk9GSUxFX1RBU0t9CisJCWJibm90ZSBQcm9maWxpbmcgZGF0YSBnYXRoZXJlZCwgcmVidWlsZGluZworCQlydW5fbWFrZSBjbGVhbl9hbmRfdXNlX3Byb2ZpbGUKKwllbHNlCisJCXJ1bl9tYWtlIGxpYnB5dGhvbjMuc28KKwkJcnVuX21ha2UKKwlmaQorfQorCitkb19pbnN0YWxsKCkgeworCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCisJIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQorCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZworCisJIyByZXJ1biB0aGUgYnVpbGQgb25jZSBhZ2FpbiB3aXRoIG9yaWdpbmFsIG1ha2VmaWxlIHRoaXMgdGltZQorCSMgcnVuIGluc3RhbGwgaW4gYSBzZXBhcmF0ZSBzdGVwIHRvIGF2b2lkIGNvbXBpbGUvaW5zdGFsbCByYWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGdvJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJcnVuX21ha2UgREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gYnVpbGRfYWxsX3VzZV9wcm9maWxlCisJZWxzZQorCQlydW5fbWFrZSBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCWZpCisKKwlydW5fbWFrZSBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCisJcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMworCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJyBQWVRIT05OT1VTRVJTSVRFPScxJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQorCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQorCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorCQktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJCS1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCQktZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkgXAorCQkke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZworCisJIyBSZWNvbXBpbGUgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0CisJY2QgJHtQS0dEfQorCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCisJICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5JykiCisJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKwkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0xKSIKKwkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScsIG9wdGltaXplPTIpIgorCWNkIC0KKworCW12ICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfQorfQorCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCisKKyMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCitSUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKK1JSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wgY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgorRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKK0ZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCisKKyMgcHJvdmlkZSBweXRob24tcHl2ZW52IGZyb20gcHl0aG9uMy12ZW52CitSUFJPVklERVNfJHtQTn0tdmVudiArPSAiJHtQTn0tcHl2ZW52IgorCisjIHBhY2thZ2UgbGlicHl0aG9uMworUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCitGSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCitGSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgorCisjIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCisKKyMgY2F0Y2ggbWFucGFnZQorUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKK0ZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCBiemlwMiIKKworUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKKyMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAorIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgorSU5DTFVERV9QWUNTID89ICIxIgorCitweXRob24oKXsKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCisgICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyaworICAgICMgdGhhdCBkZXBlbmRlbmN5LgorICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlLCBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKKworICAgIGluY2x1ZGVfcHljcyA9IGQuZ2V0VmFyKCdJTkNMVURFX1BZQ1MnKQorCisgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgcG4gPSBkLmdldFZhcignUE4nKQorCisgICAgbmV3cGFja2FnZXM9W10KKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgIAkjIEFkZCBjYWNoZWQgZmlsZXMKKyAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJylbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZworICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcworICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKK30KKworIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0CitTUkNfVVJJICs9ICJmaWxlOi8vY3JlYXRlX21hbmlmZXN0My5weSBmaWxlOi8vZ2V0X21vZHVsZV9kZXBzMy5weSBmaWxlOi8vcHl0aG9uMy1tYW5pZmVzdC5qc29uIgorCitkb19jcmVhdGVfbWFuaWZlc3QoKSB7CisgICAgIyBUaGlzIHRhc2sgc2hvdWxkIGJlIHJ1biB3aXRoIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIFB5dGhvbi4KKyAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgUEFDS0FHRUNPTkZJRyBlbmFibGVzIGV2ZXJ5dGhpbmcgd2hlbiBjcmVhdGluZworICAgICMgYSBuZXcgbWFuaWZlc3QsIHRoaXMgaXMgdG8gYmFzZSBvdXIgbmV3IG1hbmlmZXN0IG9uIGEgY29tcGxldGUKKyAgICAjIG5hdGl2ZSBweXRob24gYnVpbGQsIGNvbnRhaW5pbmcgYWxsIGRlcGVuZGVuY2llcywgb3RoZXJ3aXNlIHRoZSB0YXNrCisgICAgIyB3b250IGJlIGFibGUgdG8gZmluZCB0aGUgcmVxdWlyZWQgZmlsZXMuCisgICAgIyBlLmcuIEJlcmtlbGV5REIgaXMgYW4gb3B0aW9uYWwgYnVpbGQgZGVwZW5kZW5jeSBzbyBpdCBtYXkgb3IgbWF5IG5vdAorICAgICMgYmUgcHJlc2VudCwgd2UgbXVzdCBlbnN1cmUgaXQgaXMuCisKKyAgICBjZCAke1dPUktESVJ9CisgICAgIyBUaGlzIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJ5IHB5dGhvbi1uYXRpdmUgYW5kIE5PVCBieSBIT1NUJ3MgcHl0aG9uCisgICAgbmF0aXZlcHl0aG9uMyBjcmVhdGVfbWFuaWZlc3QzLnB5ICR7UFlUSE9OX01BSk1JTn0KKyAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob24zOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjM6ZG9fcGF0Y2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjE1LmJiCmluZGV4IDBiMzk1OGQuLmRkOTY5ZDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjE1LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjE1LmJiCkBAIC0xLDYgKzEsNyBAQAogcmVxdWlyZSBweXRob24uaW5jCiAKLURFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBsaWJmZmkgYnppcDIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiIKK0RFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBsaWJmZmkgYnppcDIgZ2RibSBvcGVuc3NsIFwKKyAgICAgICAgICAgcmVhZGxpbmUgc3FsaXRlMyB6bGliIHZpcnR1YWwvY3J5cHQiCiAKIFBSID0gIiR7SU5DX1BSfSIKIApAQCAtMTUzLDYgKzE1NCw3IEBACiAJKGNkICR7UEtHRH07IHB5dGhvbiAtbSBweV9jb21waWxlIC4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkpCiB9CiAKK1BBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfSIKIAogIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKIFJQUk9WSURFU18ke1BOfS1jb3JlID0gIiR7UE59IgpAQCAtMTc4LDkgKzE4MCw5IEBACiAjIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKIFJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIAotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1tb2R1bGVzIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCiAKICMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAogIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgpAQCAtMjIxLDcgKzIyMyw2IEBACiAgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJy5weScpOgogICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUgKyAnYycpCiAKLSAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcnKQogICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CiAgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCiAgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jCmluZGV4IDY2ZGQ2NzUuLjgxMDQwMWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMKQEAgLTcsNyArNyw3IEBACiAgICAgYXJjaHMgPSBkLmdldFZhcignUUVNVV9UQVJHRVRTJykuc3BsaXQoKQogICAgIHRvcyA9IGQuZ2V0VmFyKCdIT1NUX09TJykKICAgICBzb2Z0bW11b25seSA9ICIiCi0gICAgZm9yIGFyY2ggaW4gWydwcGNlbWInXToKKyAgICBmb3IgYXJjaCBpbiBbJ3BwY2VtYicsICdsbTMyJ106CiAgICAgICAgIGlmIGFyY2ggaW4gYXJjaHM6CiAgICAgICAgICAgICBzb2Z0bW11b25seSArPSBhcmNoICsgIi1zb2Z0bW11LCIKICAgICAgICAgICAgIGFyY2hzLnJlbW92ZShhcmNoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggZGM3M2RmOC4uYjA1YzFjZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCkBAIC01LDExICs1LDExIEBACiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImJhc2giCiAKIHJlcXVpcmUgcWVtdS10YXJnZXRzLmluYwotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJsdWV0b290aAoraW5oZXJpdCBwa2djb25maWcgYmx1ZXRvb3RoCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKICMgUUVNVV9UQVJHRVRTIGlzIG92ZXJyaWRhYmxlIHZhcmlhYmxlCi1RRU1VX1RBUkdFVFMgPz0gImFybSBhYXJjaDY0IGkzODYgbWlwcyBtaXBzZWwgbWlwczY0IG1pcHM2NGVsIHBwYyBzaDQgeDg2XzY0IgorUUVNVV9UQVJHRVRTID89ICJhcm0gYWFyY2g2NCBpMzg2IG1pcHMgbWlwc2VsIG1pcHM2NCBtaXBzNjRlbCBwcGMgcmlzY3YzMiByaXNjdjY0IHNoNCB4ODZfNjQiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgLS1kaXNhYmxlLXdlcnJvciBcCiAgICAgLS10YXJnZXQtbGlzdD0ke0BnZXRfcWVtdV90YXJnZXRfbGlzdChkKX0gXAogICAgIC0tZXh0cmEtY2ZsYWdzPScke0NGTEFHU30nIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKICAgICAiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1weXRob249cHl0aG9uMi43IgogCkBAIC0zNiwyNyArMzcsMjMgQEAKIAogZXhwb3J0IExJQlRPT0w9IiR7SE9TVF9TWVN9LWxpYnRvb2wiCiAKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKwogZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewogCSMgQXBwZW5kIGJ1aWxkIGhvc3QgcGtnLWNvbmZpZyBwYXRocyBmb3IgbmF0aXZlIHRhcmdldCBzaW5jZSB0aGUgaG9zdCBtYXkgcHJvdmlkZSBzZGwKIAlCSE9TVF9QS0dDT05GSUdfUEFUSD0kKFBBVEg9L3Vzci9iaW46L2JpbiBwa2ctY29uZmlnIC0tdmFyaWFibGUgcGNfcGF0aCBwa2ctY29uZmlnIHx8IGVjaG8gIiIpCiAJaWYgWyAhIC16ICIkQkhPU1RfUEtHQ09ORklHX1BBVEgiIF07IHRoZW4KIAkJZXhwb3J0IFBLR19DT05GSUdfUEFUSD0kUEtHX0NPTkZJR19QQVRIOiRCSE9TVF9QS0dDT05GSUdfUEFUSAogCWZpCi0KLQkjIEFsdGVyIHRhcmdldCBtYWtlZmlsZXMgdG8gYWNjZXB0IENGTEFHUyBzZXQgdmlhIGVudgotCXNlZCAtaSAtciBcCi0JCS1lICdzL14oQ3xPUF9DfEhFTFBFUl9DKUZMQUdTPS9cMUZMQUdTKz0vJyBcCi0JCSIke1N9Ii9NYWtlZmlsZSAiJHtTfSIvTWFrZWZpbGUudGFyZ2V0CiB9CiAKIGRvX2NvbmZpZ3VyZSgpIHsKICAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLSAgICB0ZXN0ICEgLWUgJHtTfS90YXJnZXQtaTM4Ni9iZWdpbmVuZF9mdW5jcy5zaCB8fCBjaG1vZCBhK3ggJHtTfS90YXJnZXQtaTM4Ni9iZWdpbmVuZF9mdW5jcy5zaAogfQogCiBkb19pbnN0YWxsICgpIHsKLQlleHBvcnQgU1RSSVA9InRydWUiCi0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlleHBvcnQgU1RSSVA9IiIKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKIH0KIAogIyBUaGUgZm9sbG93aW5nIGZyYWdtZW50IHdpbGwgY3JlYXRlIGEgd3JhcHBlciBmb3IgcWVtdS1taXBzIHVzZXIgZW11bGF0aW9uCkBAIC03NCwxMCArNzEsOSBAQAogIyBFTkQgb2YgcWVtdS1taXBzIHdvcmthcm91bmQKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0JZmR0IHNkbCBcCi0JZmR0IHNkbCBrdm0gXAotCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgeGVuJywgZCl9IFwKLQkiCisgICAgZmR0IHNkbCBrdm0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgeGVuJywgZCl9IFwKKyIKIFBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiZmR0IGFsc2Ega3ZtIgogUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPz89ICJmZHQgc2RsIGt2bSIKIApAQCAtODgsNyArODQsNyBAQAogUEFDS0FHRUNPTkZJR19yZW1vdmVfZGFyd2luID0gImt2bSIKIFBBQ0tBR0VDT05GSUdfcmVtb3ZlX21pbmd3MzIgPSAia3ZtIgogCi1QQUNLQUdFQ09ORklHW3NkbF0gPSAiLS1lbmFibGUtc2RsLC0tZGlzYWJsZS1zZGwsbGlic2RsIgorUEFDS0FHRUNPTkZJR1tzZGxdID0gIi0tZW5hYmxlLXNkbCAtLXdpdGgtc2RsYWJpPTIuMCwtLWRpc2FibGUtc2RsLGxpYnNkbDIiCiBQQUNLQUdFQ09ORklHW3ZpcnRmc10gPSAiLS1lbmFibGUtdmlydGZzIC0tZW5hYmxlLWF0dHIsLS1kaXNhYmxlLXZpcnRmcyxsaWJjYXAgYXR0ciwiCiBQQUNLQUdFQ09ORklHW2Fpb10gPSAiLS1lbmFibGUtbGludXgtYWlvLC0tZGlzYWJsZS1saW51eC1haW8sbGliYWlvLCIKIFBBQ0tBR0VDT05GSUdbeGZzXSA9ICItLWVuYWJsZS14ZnNjdGwsLS1kaXNhYmxlLXhmc2N0bCx4ZnNwcm9ncywiCkBAIC0xMTUsNSArMTExLDEwIEBACiBQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICItLWVuYWJsZS1ibHVleiwtLWRpc2FibGUtYmx1ZXosJHtCTFVFWn0iCiBQQUNLQUdFQ09ORklHW2xpYmlzY3NpXSA9ICItLWVuYWJsZS1saWJpc2NzaSwtLWRpc2FibGUtbGliaXNjc2kiCiBQQUNLQUdFQ09ORklHW2t2bV0gPSAiLS1lbmFibGUta3ZtLC0tZGlzYWJsZS1rdm0iCitQQUNLQUdFQ09ORklHW3ZpcmdscmVuZGVyZXJdID0gIi0tZW5hYmxlLXZpcmdscmVuZGVyZXIsLS1kaXNhYmxlLXZpcmdscmVuZGVyZXIsdmlyZ2xyZW5kZXJlciIKKyMgc3BpY2Ugd2lsbCBiZSBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbc3BpY2VdID0gIi0tZW5hYmxlLXNwaWNlLC0tZGlzYWJsZS1zcGljZSxzcGljZSIKKyMgdXNicmVkaXIgd2lsbCBiZSBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbdXNiLXJlZGlyXSA9ICItLWVuYWJsZS11c2ItcmVkaXIsLS1kaXNhYmxlLXVzYi1yZWRpcix1c2JyZWRpciIKIAogSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLUNWRS0yMDE4LTExODA2LVFFTVUtc2xpcnAtaGVhcC1idWZmZXItb3ZlcmZsb3cucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1DVkUtMjAxOC0xMTgwNi1RRU1VLXNsaXJwLWhlYXAtYnVmZmVyLW92ZXJmbG93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjIyMzYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLUNWRS0yMDE4LTExODA2LVFFTVUtc2xpcnAtaGVhcC1idWZmZXItb3ZlcmZsb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE4LTA2L21zZzAxMDEyLmh0bWwKLQotRnJvbSBkYzIxYTlkMjk1MWYwYTJhN2U2MzYzM2UyYjVjNjhjNTRlNGVkYzRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+Ci1EYXRlOiBUaHUsIDE0IEp1biAyMDE4IDAxOjI4OjQ5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE4LTExODA2IFFFTVU6IHNsaXJwOiBoZWFwIGJ1ZmZlciBvdmVyZmxvdwotCi1TdWJqZWN0OiBbUWVtdS1kZXZlbF0gW1BBVENIIDEvMl0gc2xpcnA6IGNvcnJlY3Qgc2l6ZSBjb21wdXRhdGlvbiB3aGlsZSBjb25jYXRlbmF0aW5nIG1idWYKLURhdGU6CVR1ZSwgNSBKdW4gMjAxOCAyMzozODozNSArMDUzMAotRnJvbTogUHJhc2FkIEogUGFuZGl0IDxhZGRyZXNzQGhpZGRlbj4KLQotV2hpbGUgcmVhc3NlbWJsaW5nIGluY29taW5nIGZyYWdtZW50ZWQgZGF0YWdyYW1zLCAnbV9jYXQnIHJvdXRpbmUKLWV4dGVuZHMgdGhlICdtYnVmJyBidWZmZXIsIGlmIGl0IGhhcyBpbnN1ZmZpY2llbnQgcm9vbS4gSXQgY29tcHV0ZXMKLWEgd3JvbmcgYnVmZmVyIHNpemUsIHdoaWNoIGxlYWRzIHRvIG92ZXJ3cml0aW5nIGFkamFjZW50IGhlYXAgYnVmZmVyCi1hcmVhLiBDb3JyZWN0IHRoaXMgc2l6ZSBjb21wdXRhdGlvbiBpbiBtX2NhdC4KLQotUmVwb3J0ZWQtYnk6IFpESSBEaXNjbG9zdXJlcyA8YWRkcmVzc0BoaWRkZW4+Ci1TaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPGFkZHJlc3NAaGlkZGVuPgotLS0tCi0gc2xpcnAvbWJ1Zi5jIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLVNpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgotLS0tCi0gc2xpcnAvbWJ1Zi5jIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zbGlycC9tYnVmLmMgYi9zbGlycC9tYnVmLmMKLWluZGV4IDVmZjI0NTUuLjdmYjQ1MDEgMTAwNjQ0Ci0tLS0gYS9zbGlycC9tYnVmLmMKLSsrKyBiL3NsaXJwL21idWYuYwotQEAgLTEzOCw3ICsxMzgsNyBAQCBtX2NhdChzdHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IG1idWYgKm4pCi0gCSAqIElmIHRoZXJlJ3Mgbm8gcm9vbSwgcmVhbGxvYwotIAkgKi8KLSAJaWYgKE1fRlJFRVJPT00obSkgPCBuLT5tX2xlbikKLS0JCW1faW5jKG0sbS0+bV9zaXplK01JTkNTSVpFKTsKLSsgICAgICAgICAgICAgICBtX2luYyhtLCBtLT5tX2xlbiArIG4tPm1fbGVuKTsKLSAKLSAJbWVtY3B5KG0tPm1fZGF0YSttLT5tX2xlbiwgbi0+bV9kYXRhLCBuLT5tX2xlbik7Ci0gCW0tPm1fbGVuICs9IG4tPm1fbGVuOwotQEAgLTE1OCwxMiArMTU4LDEyIEBAIG1faW5jKHN0cnVjdCBtYnVmICptLCBpbnQgc2l6ZSkKLSAKLSAgICAgICAgIGlmIChtLT5tX2ZsYWdzICYgTV9FWFQpIHsKLSAJICBkYXRhc2l6ZSA9IG0tPm1fZGF0YSAtIG0tPm1fZXh0OwotLSAgICAgICAgICBtLT5tX2V4dCA9IGdfcmVhbGxvYyhtLT5tX2V4dCwgc2l6ZSk7Ci0rICAgICAgICAgIG0tPm1fZXh0ID0gZ19yZWFsbG9jKG0tPm1fZXh0LCBzaXplICsgZGF0YXNpemUpOwotIAkgIG0tPm1fZGF0YSA9IG0tPm1fZXh0ICsgZGF0YXNpemU7Ci0gICAgICAgICB9IGVsc2UgewotIAkgIGNoYXIgKmRhdDsKLSAJICBkYXRhc2l6ZSA9IG0tPm1fZGF0YSAtIG0tPm1fZGF0OwotLSAgICAgICAgICBkYXQgPSBnX21hbGxvYyhzaXplKTsKLSsgICAgICAgICAgZGF0ID0gZ19tYWxsb2Moc2l6ZSArIGRhdGFzaXplKTsKLSAJICBtZW1jcHkoZGF0LCBtLT5tX2RhdCwgbS0+bV9zaXplKTsKLSAKLSAJICBtLT5tX2V4dCA9IGRhdDsKLUBAIC0xNzEsNyArMTcxLDcgQEAgbV9pbmMoc3RydWN0IG1idWYgKm0sIGludCBzaXplKQotIAkgIG0tPm1fZmxhZ3MgfD0gTV9FWFQ7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBtLT5tX3NpemUgPSBzaXplOwotKyAgICAgICAgbS0+bV9zaXplID0gc2l6ZSArIGRhdGFzaXplOwotIAotIH0KLSAKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXNkbC5jLWFsbG93LXVzZXItdG8tZGlzYWJsZS1wb2ludGVyLWdyYWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtc2RsLmMtYWxsb3ctdXNlci10by1kaXNhYmxlLXBvaW50ZXItZ3JhYnMucGF0Y2gKaW5kZXggYWRkNWQ4Yi4uYjhhOTIwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtc2RsLmMtYWxsb3ctdXNlci10by1kaXNhYmxlLXBvaW50ZXItZ3JhYnMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtc2RsLmMtYWxsb3ctdXNlci10by1kaXNhYmxlLXBvaW50ZXItZ3JhYnMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI3M2UxYWY0OWQzZTBhNThiYjk0NjQzNjlkZWIyNjUyZjI0M2U2NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDE4ZmI0NWMzNGE0NzNjNGJhMjQ3YmI4MmJjZWE5NGI3YzNiYTQ5M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogV2VkLCAxOCBTZXAgMjAxMyAxNDowNDo1NCArMDEwMAogU3ViamVjdDogW1BBVENIXSBzZGwuYzogYWxsb3cgdXNlciB0byBkaXNhYmxlIHBvaW50ZXIgZ3JhYnMKQEAgLTIyLDI1ICsyMiwyNiBAQAogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEVyaWMgQsOpbmFyZCA8ZXJpY0BldWtyZWEuY29tPgogLS0tCi0gdWkvc2RsLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyB1aS9zZGwuYyB8IDEzICsrKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3VpL3NkbC5jIGIvdWkvc2RsLmMKLWluZGV4IDdiNzFhOWEuLjI5Y2UxYjkgMTAwNjQ0CitpbmRleCBhNWZkNTAzYzI1Li5hYjhkMWIxZWIxIDEwMDY0NAogLS0tIGEvdWkvc2RsLmMKICsrKyBiL3VpL3NkbC5jCi1AQCAtNjMsNiArNjMsMTAgQEAgc3RhdGljIFNETF9QaXhlbEZvcm1hdCBob3N0X2Zvcm1hdDsKLSBzdGF0aWMgaW50IHNjYWxpbmdfYWN0aXZlID0gMDsKLSBzdGF0aWMgTm90aWZpZXIgbW91c2VfbW9kZV9ub3RpZmllcjsKLSBzdGF0aWMgaW50IGlkbGVfY291bnRlcjsKK0BAIC02OCw2ICs2OCwxMSBAQCBzdGF0aWMgaW50IGlkbGVfY291bnRlcjsKKyBzdGF0aWMgY29uc3QgZ3VpbnQxNiAqa2V5Y29kZV9tYXA7Cisgc3RhdGljIHNpemVfdCBrZXljb2RlX21hcGxlbjsKKyAKICsjaWZuZGVmIFRydWUKICsjZGVmaW5lIFRydWUgMQogKyNlbmRpZgogK3N0YXRpYyBkb2luZ19ncmFicyA9IFRydWU7Ci0gCisrCiAgI2RlZmluZSBTRExfUkVGUkVTSF9JTlRFUlZBTF9CVVNZIDEwCiAgI2RlZmluZSBTRExfTUFYX0lETEVfQ09VTlQgKDIgKiBHVUlfUkVGUkVTSF9JTlRFUlZBTF9ERUZBVUxUIFwKLUBAIC00MzEsMTQgKzQzNSwxNiBAQCBzdGF0aWMgdm9pZCBzZGxfZ3JhYl9zdGFydCh2b2lkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIFNETF9SRUZSRVNIX0lOVEVSVkFMX0JVU1kgKyAxKQorQEAgLTM5OCwxNCArNDAzLDE2IEBAIHN0YXRpYyB2b2lkIHNkbF9ncmFiX3N0YXJ0KHZvaWQpCiAgICAgICAgICB9CiAgICAgIH0gZWxzZQogICAgICAgICAgc2RsX2hpZGVfY3Vyc29yKCk7CkBAIC01OSw3ICs2MCw3IEBACiAgICAgIGd1aV9ncmFiID0gMDsKICAgICAgc2RsX3Nob3dfY3Vyc29yKCk7CiAgICAgIHNkbF91cGRhdGVfY2FwdGlvbigpOwotQEAgLTk4Niw2ICs5OTIsOCBAQCB2b2lkIHNkbF9kaXNwbGF5X2luaXQoRGlzcGxheVN0YXRlICpkcywgaW50IGZ1bGxfc2NyZWVuLCBpbnQgbm9fZnJhbWUpCitAQCAtOTQ1LDYgKzk1Miw4IEBAIHN0YXRpYyB2b2lkIHNkbDFfZGlzcGxheV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIERpc3BsYXlPcHRpb25zICpvKQogICAgICAgKiBUaGlzIHJlcXVpcmVzIFNETCA+PSAxLjIuMTQuICovCiAgICAgIHNldGVudigiU0RMX0RJU0FCTEVfTE9DS19LRVlTIiwgIjEiLCAxKTsKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoCmluZGV4IDI4MTgwM2UuLjkwZTRiODAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYTQyNzI2ZTAxNzYwNWVkM2NhMmIzZmMyYjFjYzhkMDFjY2YzNDczMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDE2MDNmNzQ1Y2FhZWNkYzdjOWQ3NjBmYjdkMmRmMDFjY2M2MDEyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgogRGF0ZTogVGh1LCAyNyBOb3YgMjAxNCAxNDowNDoyOSArMDAwMAogU3ViamVjdDogW1BBVENIXSBxZW11OiBBZGQgbWlzc2luZyB3YWNvbSBISUQgZGVzY3JpcHRvcgpAQCAtMTQsMTEgKzE0LDExIEBACiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAogMjAxNC8xMS8yNwogLS0tCi0gaHcvdXNiL2Rldi13YWNvbS5jIHwgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgaHcvdXNiL2Rldi13YWNvbS5jIHwgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody91c2IvZGV2LXdhY29tLmMgYi9ody91c2IvZGV2LXdhY29tLmMKLWluZGV4IGJmNzAwMTMuLjJmNmUxMjkgMTAwNjQ0CitpbmRleCBiZjcwMDEzMDU5Li4yZjZlMTI5NzMyIDEwMDY0NAogLS0tIGEvaHcvdXNiL2Rldi13YWNvbS5jCiArKysgYi9ody91c2IvZGV2LXdhY29tLmMKIEBAIC03Miw2ICs3Miw4OSBAQCBzdGF0aWMgY29uc3QgVVNCRGVzY1N0cmluZ3MgZGVzY19zdHJpbmdzID0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2gKaW5kZXggZGMwNzMwMC4uMGQ0MzI3MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmZGExZWVlOGJjNzE3NTI4ZDU3ZjZmZjQ1NGY3MmM1MzI1MDQzYzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOWE2Njk0NDhiYTZmMWIyOTU0MjdlMjcxZDk5ZjYxNzM2ZmM1MTg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KIERhdGU6IFRodSwgMzEgQXVnIDIwMTcgMTE6MDY6NTYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1YnBhY2thZ2UgLXB0ZXN0IHdoaWNoIHJ1bnMgYWxsIHVuaXQgdGVzdCBjYXNlcyBmb3IKQEAgLTE0LDEwICsxNCwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgYi90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCi1pbmRleCBjMDAyMzUyLi5mNTU3YzI2IDEwMDY0NAoraW5kZXggM2I5YTVlMzFhMi4uZGZiY2Q3MjhkNyAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKICsrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLUBAIC05MzUsNCArOTM1LDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQorQEAgLTk3Miw0ICs5NzIsMTIgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCiAgLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy8qLmQpCiAgLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy9saWJxb3MvKi5kKQogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2gKaW5kZXggNGYyOGUxNi4uNTE1MmRjYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhZDcwZmRjYWY3NTA4NGRhMmUwMjQ3NGM2MWQxZDQ0MWNhMTAwYWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZDQ0MDRhMzM0YTU0NWU5YmVhZmExYjFlNDFiM2E4ZjM1ZWYzMWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMjggTWFyIDIwMTQgMTc6NDI6NDMgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogQWRkIGFkZGl0aW9uIGVudmlyb25tZW50IHNwYWNlIHRvIGJvb3QgbG9hZGVyCkBAIC0xOCwxMCArMTgsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L21pcHMvbWlwc19tYWx0YS5jIGIvaHcvbWlwcy9taXBzX21hbHRhLmMKLWluZGV4IGVjNmFmNGEuLjZlNzYxNjYgMTAwNjQ0CitpbmRleCBmNjUxM2E0ZmQ1Li5kNWVmYWZiMWU4IDEwMDY0NAogLS0tIGEvaHcvbWlwcy9taXBzX21hbHRhLmMKICsrKyBiL2h3L21pcHMvbWlwc19tYWx0YS5jCi1AQCAtNjEsNyArNjEsNyBAQAorQEAgLTYyLDcgKzYyLDcgQEAKICAKICAjZGVmaW5lIEVOVlBfQUREUgkJMHg4MDAwMjAwMGwKICAjZGVmaW5lIEVOVlBfTkJfRU5UUklFUwkgCTE2CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2gKaW5kZXggYjllMDE4My4uNzBiYWYwZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTg1ZWUzY2M5OTg4MTcyNjYyZDY5NjlhZjAxZjIzZmE4ZmZkNTI2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDQ3NWIzZDk3MzcxZTU4ODU0MDMzMzk4OGE5N2Q3ZGYzZWMyYzY1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDIwIE9jdCAyMDE1IDIyOjE5OjA4ICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IGRpc2FibGUgVmFsZ3JpbmQKQEAgLTEyLDEwICsxMiwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAwYzZlNzU3Li5jMzBmZDQ1IDEwMDc1NQoraW5kZXggMGExOWIwMzNiYy4uNjllMDVmYjZjMCAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNDc0MSwxNSArNDc0MSw2IEBAIGZpCitAQCAtNDg5NSwxNSArNDg5NSw2IEBAIGZpCiAgIyBjaGVjayBpZiB3ZSBoYXZlIHZhbGdyaW5kL3ZhbGdyaW5kLmgKICAKICB2YWxncmluZF9oPW5vCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1xZW11LUxpbWl0LXBhdGhzLXNlYXJjaGVkLWR1cmluZy11c2VyLW1vZGUtZW11bGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtcWVtdS1MaW1pdC1wYXRocy1zZWFyY2hlZC1kdXJpbmctdXNlci1tb2RlLWVtdWxhdGlvbi5wYXRjaAppbmRleCA5MzE1Zjg1Li5hOWQ3OThjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1xZW11LUxpbWl0LXBhdGhzLXNlYXJjaGVkLWR1cmluZy11c2VyLW1vZGUtZW11bGF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LXFlbXUtTGltaXQtcGF0aHMtc2VhcmNoZWQtZHVyaW5nLXVzZXItbW9kZS1lbXVsYXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGM3OWM0OGE3OTcxMGQwZTJlZjY4MDYyNDM1NTk2YWM0NTVjZDlmNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM1MzJiY2RhZTgyNTliMGY3MTcyM2NkYTMzMWRlZDRkYmIwZmE5MDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KIERhdGU6IFdlZCwgOSBNYXIgMjAxNiAyMjo0OTowMiArMDAwMAogU3ViamVjdDogW1BBVENIXSBxZW11OiBMaW1pdCBwYXRocyBzZWFyY2hlZCBkdXJpbmcgdXNlciBtb2RlIGVtdWxhdGlvbgpAQCAtMjQsNyArMjQsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3V0aWwvcGF0aC5jIGIvdXRpbC9wYXRoLmMKLWluZGV4IDdmOWZjMjcuLmE0MTZjZDQgMTAwNjQ0CitpbmRleCA3ZjlmYzI3MmZiLi5hNDE2Y2Q0YWMyIDEwMDY0NAogLS0tIGEvdXRpbC9wYXRoLmMKICsrKyBiL3V0aWwvcGF0aC5jCiBAQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgcGF0aGVsZW0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNy1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoCmluZGV4IGFkNTJmMzcuLjEyNDU2YmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDctcWVtdS1uYXRpdmUtc2V0LWxkLmJmZC1maXgtY2ZsYWdzLWFuZC1zZXQtc29tZS1lbnZpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNGIyMWE4ZGI2MGMzMmY5M2RmNTZlNjExMWJiOTI2YzkxNjgwZDZmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmQyOWQ1MmI2Zjc1NTc1OGNmY2E2YWYwYmNmZDc4MDkxZTE2YTdiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFN0ZXBoZW4gQXJub2xkIDxzYXJub2xkQHZjdGxhYnMuY29tPgogRGF0ZTogU3VuLCAxMiBKdW4gMjAxNiAxODowOTo1NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBxZW11LW5hdGl2ZTogc2V0IGxkLmJmZCwgZml4IGNmbGFncywgYW5kIHNldCBzb21lIGVudmlyb25tZW50CkBAIC05LDEwICs5LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGMzMGZkNDUuLmI1MzEyZjQgMTAwNzU1CitpbmRleCA2OWUwNWZiNmMwLi4xMmZjM2Q4YmRjIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC01MTE1LDEwICs1MTE1LDYgQEAgZmkKK0BAIC01NDEzLDEwICs1NDEzLDYgQEAgd3JpdGVfY19za2VsZXRvbgogIGlmIHRlc3QgIiRnY292IiA9ICJ5ZXMiIDsgdGhlbgogICAgQ0ZMQUdTPSItZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UgLWcgJENGTEFHUyIKICAgIExERkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAkTERGTEFHUyIKQEAgLTIyLDQgKzIyLDQgQEAKIC0gIENGTEFHUz0iLU8yICRDRkxBR1MiCiAgZmkKICAKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyBpZiB0ZXN0ICIkaGF2ZV9hc2FuIiA9ICJ5ZXMiOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaAppbmRleCBmMGMwZmExLi4yYWZlNGU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDU1Yzk1MTAzMTFiNzQ4MWEwYzhmM2Y3MWIzY2UxMzBjYzI1NTYzZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIwYTA5YmIxODkwN2U2NzU2NWM1NGZjNTA1YTc0MWNiYmVmNTNmN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHhpbGlueC5jb20+CiBEYXRlOiBUaHUsIDIxIERlYyAyMDE3IDExOjM1OjE2IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNoYXJkZXY6IGNvbm5lY3Qgc29ja2V0IHRvIGEgc3Bhd25lZCBjb21tYW5kCkBAIC00NSwxNiArNDUsMTYgQEAKIAogU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgogLS0tCi0gY2hhcmRldi9jaGFyLXNvY2tldC5jIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gY2hhcmRldi9jaGFyLmMgICAgICAgIHwgIDMgKysKLSBxYXBpL2NoYXIuanNvbiAgICAgICAgfCAgNSArKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspCisgY2hhcmRldi9jaGFyLXNvY2tldC5jIHwgMTAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGNoYXJkZXYvY2hhci5jICAgICAgICB8ICAgMyArKworIHFhcGkvY2hhci5qc29uICAgICAgICB8ICAgNSArKysKKyAzIGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9jaGFyZGV2L2NoYXItc29ja2V0LmMgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKLWluZGV4IDUzZWRhOGUuLjZjNjM1NTUgMTAwNjQ0CitpbmRleCAxNTllNjljM2IxLi44NDc3OGNmMzFhIDEwMDY0NAogLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCiArKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKLUBAIC04NTIsNiArODUyLDY4IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRfcmVjb25uZWN0X3RpbWVvdXQoZ3BvaW50ZXIgb3BhcXVlKQorQEAgLTkzNCw2ICs5MzQsNjggQEAgc3RhdGljIGdib29sZWFuIHNvY2tldF9yZWNvbm5lY3RfdGltZW91dChncG9pbnRlciBvcGFxdWUpCiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgCkBAIC0xMjMsNyArMTIzLDcgQEAKICBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqYmVfb3BlbmVkLAotQEAgLTg1OSw2ICs5MjEsOSBAQCBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCitAQCAtOTQxLDYgKzEwMDMsOSBAQCBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgewogICAgICBTb2NrZXRDaGFyZGV2ICpzID0gU09DS0VUX0NIQVJERVYoY2hyKTsKICAgICAgQ2hhcmRldlNvY2tldCAqc29jayA9IGJhY2tlbmQtPnUuc29ja2V0LmRhdGE7CkBAIC0xMzMsMjQgKzEzMywyNCBAQAogICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CiAgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOwogICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7Ci1AQCAtOTI1LDcgKzk5MCwxNCBAQCBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCi0gICAgIH0gZWxzZSBpZiAocmVjb25uZWN0ID4gMCkgeworQEAgLTEwMDgsNiArMTA3MywxNCBAQCBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgICAgICAgICBzLT5yZWNvbm5lY3RfdGltZSA9IHJlY29ubmVjdDsKICAgICAgfQorIAogKyNpZm5kZWYgX1dJTjMyCiArICAgIGlmIChjbWQpIHsKICsgICAgICAgIGNoYXJkZXZfb3Blbl9zb2NrZXRfY21kKGNociwgY21kLCBlcnJwKTsKLSAKKysKICsgICAgICAgIC8qIGV2ZXJ5dGhpbmcgcmVhZHkgKG9yIGZhaWxlZCBwZXJtYW5lbnRseSkgYmVmb3JlIHdlIHJldHVybiAqLwogKyAgICAgICAgKmJlX29wZW5lZCA9IHRydWU7CiArICAgIH0gZWxzZQogKyNlbmRpZgotICAgICBpZiAocy0+cmVjb25uZWN0X3RpbWUpIHsKLSAgICAgICAgIHNpb2MgPSBxaW9fY2hhbm5lbF9zb2NrZXRfbmV3KCk7Ci0gICAgICAgICB0Y3BfY2hyX3NldF9jbGllbnRfaW9jX25hbWUoY2hyLCBzaW9jKTsKLUBAIC05ODUsMTAgKzEwNTcsMjYgQEAgc3RhdGljIHZvaWQgcWVtdV9jaHJfcGFyc2Vfc29ja2V0KFFlbXVPcHRzICpvcHRzLCBDaGFyZGV2QmFja2VuZCAqYmFja2VuZCwKLSAgICAgY29uc3QgY2hhciAqaG9zdCA9IHFlbXVfb3B0X2dldChvcHRzLCAiaG9zdCIpOworICAgICAvKiBJZiByZWNvbm5lY3RfdGltZSBpcyBzZXQsIHdpbGwgZG8gdGhhdCBpbiBjaHJfbWFjaGluZV9kb25lLiAqLworICAgICBpZiAoIXMtPnJlY29ubmVjdF90aW1lKSB7CisgICAgICAgICBpZiAocy0+aXNfbGlzdGVuKSB7CitAQCAtMTA2NSw5ICsxMTM4LDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgIGNvbnN0IGNoYXIgKnBvcnQgPSBxZW11X29wdF9nZXQob3B0cywgInBvcnQiKTsKKyAgICAgY29uc3QgY2hhciAqZmQgPSBxZW11X29wdF9nZXQob3B0cywgImZkIik7CiAgICAgIGNvbnN0IGNoYXIgKnRsc19jcmVkcyA9IHFlbXVfb3B0X2dldChvcHRzLCAidGxzLWNyZWRzIik7CiArI2lmbmRlZiBfV0lOMzIKICsgICAgY29uc3QgY2hhciAqY21kID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJjbWQiKTsKQEAgLTE1OCw3ICsxNTgsNiBAQAogICAgICBTb2NrZXRBZGRyZXNzTGVnYWN5ICphZGRyOwogICAgICBDaGFyZGV2U29ja2V0ICpzb2NrOwogIAotICAgICBiYWNrZW5kLT50eXBlID0gQ0hBUkRFVl9CQUNLRU5EX0tJTkRfU09DS0VUOwogKyNpZm5kZWYgX1dJTjMyCiArICAgIGlmIChjbWQpIHsKICsgICAgICAgIC8qCkBAIC0xNzIsMTcgKzE3MSwxOCBAQAogKyAgICAgICAgfQogKyAgICB9IGVsc2UKICsjZW5kaWYKLSAgICAgaWYgKCFwYXRoKSB7Ci0gICAgICAgICBpZiAoIWhvc3QpIHsKLSAgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJjaGFyZGV2OiBzb2NrZXQ6IG5vIGhvc3QgZ2l2ZW4iKTsKLUBAIC0xMDIxLDEzICsxMTA5LDI0IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCi0gICAgIHNvY2stPmhhc19yZWNvbm5lY3QgPSB0cnVlOworKworICAgICBpZiAoKCEhcGF0aCArICEhZmQgKyAhIWhvc3QpICE9IDEpIHsKKyAgICAgICAgIGVycm9yX3NldGcoZXJycCwKKyAgICAgICAgICAgICAgICAgICAgIkV4YWN0bHkgb25lIG9mICdwYXRoJywgJ2ZkJyBvciAnaG9zdCcgcmVxdWlyZWQiKTsKK0BAIC0xMTEyLDEyICsxMjAyLDI0IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgIHNvY2stPnJlY29ubmVjdCA9IHJlY29ubmVjdDsKICAgICAgc29jay0+dGxzX2NyZWRzID0gZ19zdHJkdXAodGxzX2NyZWRzKTsKKyAKICsjaWZuZGVmIF9XSU4zMgogKyAgICBzb2NrLT5jbWQgPSBnX3N0cmR1cChjbWQpOwogKyNlbmRpZgotIAorKyAKICAgICAgYWRkciA9IGdfbmV3MChTb2NrZXRBZGRyZXNzTGVnYWN5LCAxKTsKICsjaWZuZGVmIF9XSU4zMgogKyAgICBpZiAocGF0aCB8fCBjbWQpIHsKQEAgLTE5NywyNSArMTk3LDI1IEBACiArI2Vsc2UKICAgICAgICAgIHFfdW5peC0+cGF0aCA9IGdfc3RyZHVwKHBhdGgpOwogKyNlbmRpZgotICAgICB9IGVsc2UgeworICAgICB9IGVsc2UgaWYgKGhvc3QpIHsKICAgICAgICAgIGFkZHItPnR5cGUgPSBTT0NLRVRfQUREUkVTU19MRUdBQ1lfS0lORF9JTkVUOwogICAgICAgICAgYWRkci0+dS5pbmV0LmRhdGEgPSBnX25ldyhJbmV0U29ja2V0QWRkcmVzcywgMSk7CiBkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLmMgYi9jaGFyZGV2L2NoYXIuYwotaW5kZXggMmFlNGY0Ni4uNWQ1MmNkNSAxMDA2NDQKK2luZGV4IDc2ZDg2NmU2ZmUuLjk3NDdkNTFkN2MgMTAwNjQ0CiAtLS0gYS9jaGFyZGV2L2NoYXIuYwogKysrIGIvY2hhcmRldi9jaGFyLmMKLUBAIC03OTMsNiArNzkzLDkgQEAgUWVtdU9wdHNMaXN0IHFlbXVfY2hhcmRldl9vcHRzID0geworQEAgLTc5Miw2ICs3OTIsOSBAQCBRZW11T3B0c0xpc3QgcWVtdV9jaGFyZGV2X29wdHMgPSB7CisgICAgICAgICB9LHsKICAgICAgICAgICAgICAubmFtZSA9ICJwYXRoIiwKICAgICAgICAgICAgICAudHlwZSA9IFFFTVVfT1BUX1NUUklORywKLSAgICAgICAgIH0seworKyAgICAgICAgfSx7CiArICAgICAgICAgICAgLm5hbWUgPSAiY21kIiwKICsgICAgICAgICAgICAudHlwZSA9IFFFTVVfT1BUX1NUUklORywKLSsgICAgICAgIH0seworICAgICAgICAgfSx7CiAgICAgICAgICAgICAgLm5hbWUgPSAiaG9zdCIsCiAgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCi0gICAgICAgICB9LHsKIGRpZmYgLS1naXQgYS9xYXBpL2NoYXIuanNvbiBiL3FhcGkvY2hhci5qc29uCi1pbmRleCBhZTE5ZGNkLi42ZGUwZjI5IDEwMDY0NAoraW5kZXggYWUxOWRjZDFlZC4uNmRlMGYyOWJjZCAxMDA2NDQKIC0tLSBhL3FhcGkvY2hhci5qc29uCiArKysgYi9xYXBpL2NoYXIuanNvbgogQEAgLTI0MSw2ICsyNDEsMTAgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKaW5kZXggOTE1YmZkYS4uNTk2OWQ5MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk0NWY0MjgwMTZmMjc4ZmE4ZTM4YmM4ZDE1MzM5N2MzMTk1Zjg1YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUwNDZjMjFlZmRiYzc0MTNjZGRkNWM1ZGJkOWUxZDUzMjU4ZDNlOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAyNiBGZWIgMjAxMyAxMTo0MzoyOCAtMDUwMAogU3ViamVjdDogW1BBVENIXSBhcGljOiBmaXh1cCBmYWxsdGhyb3VnaCB0byBQSUMKQEAgLTI5LDEwICsyOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvaHcvaW50Yy9hcGljLmMgYi9ody9pbnRjL2FwaWMuYwotaW5kZXggZmUxNWZiNi4uODM1MmMzOSAxMDA2NDQKK2luZGV4IDZmZGE1MmI4NmMuLmNkNzI5MTk2MmQgMTAwNjQ0CiAtLS0gYS9ody9pbnRjL2FwaWMuYwogKysrIGIvaHcvaW50Yy9hcGljLmMKLUBAIC01OTEsNyArNTkxLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCitAQCAtNjAzLDcgKzYwMyw3IEBAIGludCBhcGljX2FjY2VwdF9waWNfaW50cihEZXZpY2VTdGF0ZSAqZGV2KQogICAgICBBUElDQ29tbW9uU3RhdGUgKnMgPSBBUElDKGRldik7CiAgICAgIHVpbnQzMl90IGx2dDA7CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKaW5kZXggY2ViMzk4MC4uZTExMGY2MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNDMzM2IyYjI2OWQ5OTdhNzE5ZTE5ZjAwZDA0NDEwNWUxNzcwMGJlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2NkOTJjN2E4ODVlNDk5N2VmNjg0MzMxMzI5OGMxZDc0OGQ2Y2EzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6NTE6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGludXgtdXNlcjogRml4IHdlYmtpdGd0ayBoYW5ncyBvbiAzMi1iaXQgeDg2IHRhcmdldApAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCi1pbmRleCAxNDZlZTNlLi4xMzMyYjVjIDEwMDY0NAoraW5kZXggODkwN2E4NDExNC4uZWE0MmM0MzYxMCAxMDA2NDQKIC0tLSBhL2xpbnV4LXVzZXIvbWFpbi5jCiArKysgYi9saW51eC11c2VyL21haW4uYwotQEAgLTc4LDcgKzc4LDcgQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTc5LDcgKzc5LDcgQEAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIChUQVJHRVRfTE9OR19CSVRTID09IDMyIHx8IGRlZmluZWQoVEFSR0VUX0FCSTMyKSkKICAvKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIGFzc2lnbiByZXNlcnZlZF92YSB0byBhIHZhcmlhYmxlCiAgICAgb2YgdHlwZSBhYmlfdWxvbmcgYW5kIGV4cGVjdCBpdCB0byBmaXQuICBBdm9pZCB0aGUgbGFzdCBwYWdlLiAgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLVJldmVydC1saW51eC11c2VyLWZpeC1tbWFwLW11bm1hcC1tcHJvdGVjdC1tcmVtYXAtc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1SZXZlcnQtbGludXgtdXNlci1maXgtbW1hcC1tdW5tYXAtbXByb3RlY3QtbXJlbWFwLXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNjI2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1SZXZlcnQtbGludXgtdXNlci1maXgtbW1hcC1tdW5tYXAtbXByb3RlY3QtbXJlbWFwLXNoLnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitGcm9tIDNlZDI2YmUyMDkxNDM2Mjk2OTMzZWQyMTQ2ZjcyNjljNzkxYzdiZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBsZ2UuY29tPgorRGF0ZTogRnJpLCAxIEp1biAyMDE4IDA4OjQxOjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAibGludXgtdXNlcjogZml4IG1tYXAvbXVubWFwL21wcm90ZWN0L21yZW1hcC9zaG1hdCIKKworQ2F1c2VzIHFlbXUtaTM4NiB0byBoYW5nIGR1cmluZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaW4gd2Via2l0Z3RrIGJ1aWxkCit3aGVuIG11c2wgaXMgdXNlZCBvbiBxZW11eDg2IC0gdGhlIHNhbWUgaXNzdWUgYXMKKzAwMTAtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCit3YXMgZml4aW5nIGluIDIuMTEuMCByZWxlYXNlLCBidXQgd2l0aCB0aGlzIHBhdGNoIHRoZSBmaXggbm8gbG9uZ2VyIHdvcmtlZAorYXMgZGlzY3Vzc2VkIGhlcmU6CitodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxOC1NYXkvMTUwMzAyLmh0bWwKK2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29yZS8yMDE4LUp1bmUvMTUxMzgyLmh0bWwKKworVGhpcyByZXZlcnRzIGNvbW1pdCBlYmY5YTM2MzBjOTExZDBjZmM5YzIwZjdjYWZlOWJhNGY4OGNmNTgzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGluY2x1ZGUvZXhlYy9jcHUtYWxsLmggIHwgIDYgKy0tLS0tCisgaW5jbHVkZS9leGVjL2NwdV9sZHN0LmggfCAxNiArKysrKysrKystLS0tLS0tCisgbGludXgtdXNlci9tbWFwLmMgICAgICAgfCAxNyArKysrLS0tLS0tLS0tLS0tLQorIGxpbnV4LXVzZXIvc3lzY2FsbC5jICAgIHwgIDUgKy0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL2NwdS1hbGwuaCBiL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmgKK2luZGV4IGY0ZmE5NGU5NjYuLjBiMTQxNjgzZjAgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCisrKysgYi9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCitAQCAtMTU5LDEyICsxNTksOCBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBndWVzdF9iYXNlOworIGV4dGVybiBpbnQgaGF2ZV9ndWVzdF9iYXNlOworIGV4dGVybiB1bnNpZ25lZCBsb25nIHJlc2VydmVkX3ZhOworIAorLSNpZiBIT1NUX0xPTkdfQklUUyA8PSBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMKKy0jZGVmaW5lIEdVRVNUX0FERFJfTUFYICh+MHVsKQorLSNlbHNlCistI2RlZmluZSBHVUVTVF9BRERSX01BWCAocmVzZXJ2ZWRfdmEgPyByZXNlcnZlZF92YSAtIDEgOiBcCisrI2RlZmluZSBHVUVTVF9BRERSX01BWCAocmVzZXJ2ZWRfdmEgPyByZXNlcnZlZF92YSA6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykgLSAxKQorLSNlbmRpZgorICNlbHNlCisgCisgI2luY2x1ZGUgImV4ZWMvaHdhZGRyLmgiCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmggYi9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAoraW5kZXggNWRlOGM4YTVhZi4uMTkxZjJlOTYyYSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZXhlYy9jcHVfbGRzdC5oCisrKysgYi9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAorQEAgLTUxLDEzICs1MSwxNSBAQAorIC8qIEFsbCBkaXJlY3QgdXNlcyBvZiBnMmggYW5kIGgyZyBuZWVkIHRvIGdvIGF3YXkgZm9yIHVzZXJtb2RlIHNvZnRtbXUuICAqLworICNkZWZpbmUgZzJoKHgpICgodm9pZCAqKSgodW5zaWduZWQgbG9uZykodGFyZ2V0X3Vsb25nKSh4KSArIGd1ZXN0X2Jhc2UpKQorIAorLSNkZWZpbmUgZ3Vlc3RfYWRkcl92YWxpZCh4KSAoKHgpIDw9IEdVRVNUX0FERFJfTUFYKQorLSNkZWZpbmUgaDJnX3ZhbGlkKHgpIGd1ZXN0X2FkZHJfdmFsaWQoKHVuc2lnbmVkIGxvbmcpKHgpIC0gZ3Vlc3RfYmFzZSkKKy0KKy1zdGF0aWMgaW5saW5lIGludCBndWVzdF9yYW5nZV92YWxpZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGxlbikKKy17CistICAgIHJldHVybiBsZW4gLSAxIDw9IEdVRVNUX0FERFJfTUFYICYmIHN0YXJ0IDw9IEdVRVNUX0FERFJfTUFYIC0gbGVuICsgMTsKKy19CisrI2lmIEhPU1RfTE9OR19CSVRTIDw9IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUworKyNkZWZpbmUgaDJnX3ZhbGlkKHgpIDEKKysjZWxzZQorKyNkZWZpbmUgaDJnX3ZhbGlkKHgpICh7IFwKKysgICAgdW5zaWduZWQgbG9uZyBfX2d1ZXN0ID0gKHVuc2lnbmVkIGxvbmcpKHgpIC0gZ3Vlc3RfYmFzZTsgXAorKyAgICAoX19ndWVzdCA8ICgxdWwgPDwgVEFSR0VUX1ZJUlRfQUREUl9TUEFDRV9CSVRTKSkgJiYgXAorKyAgICAoIXJlc2VydmVkX3ZhIHx8IChfX2d1ZXN0IDwgcmVzZXJ2ZWRfdmEpKTsgXAorK30pCisrI2VuZGlmCisgCisgI2RlZmluZSBoMmdfbm9jaGVjayh4KSAoeyBcCisgICAgIHVuc2lnbmVkIGxvbmcgX19yZXQgPSAodW5zaWduZWQgbG9uZykoeCkgLSBndWVzdF9iYXNlOyBcCitkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9tbWFwLmMgYi9saW51eC11c2VyL21tYXAuYworaW5kZXggOTE2OGEyMDUxYy4uZGU4NTY2OWFhYiAxMDA2NDQKKy0tLSBhL2xpbnV4LXVzZXIvbW1hcC5jCisrKysgYi9saW51eC11c2VyL21tYXAuYworQEAgLTgwLDcgKzgwLDcgQEAgaW50IHRhcmdldF9tcHJvdGVjdChhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGludCBwcm90KQorICAgICAgICAgcmV0dXJuIC1UQVJHRVRfRUlOVkFMOworICAgICBsZW4gPSBUQVJHRVRfUEFHRV9BTElHTihsZW4pOworICAgICBlbmQgPSBzdGFydCArIGxlbjsKKy0gICAgaWYgKCFndWVzdF9yYW5nZV92YWxpZChzdGFydCwgbGVuKSkgeworKyAgICBpZiAoZW5kIDwgc3RhcnQpIHsKKyAgICAgICAgIHJldHVybiAtVEFSR0VUX0VOT01FTTsKKyAgICAgfQorICAgICBwcm90ICY9IFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7CitAQCAtNDgyLDggKzQ4Miw4IEBAIGFiaV9sb25nIHRhcmdldF9tbWFwKGFiaV91bG9uZyBzdGFydCwgYWJpX3Vsb25nIGxlbiwgaW50IHByb3QsCisgCSAqIEl0IGNhbiBmYWlsIG9ubHkgb24gNjQtYml0IGhvc3Qgd2l0aCAzMi1iaXQgdGFyZ2V0LgorIAkgKiBPbiBhbnkgb3RoZXIgdGFyZ2V0L2hvc3QgaG9zdCBtbWFwKCkgaGFuZGxlcyB0aGlzIGVycm9yIGNvcnJlY3RseS4KKyAJICovCistICAgICAgICBpZiAoIWd1ZXN0X3JhbmdlX3ZhbGlkKHN0YXJ0LCBsZW4pKSB7CistICAgICAgICAgICAgZXJybm8gPSBFTk9NRU07CisrICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpc3RhcnQgKyBsZW4gLSAxID4gKGFiaV91bG9uZykgLTEpIHsKKysgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICB9CisgCitAQCAtNjIzLDEwICs2MjMsOCBAQCBpbnQgdGFyZ2V0X211bm1hcChhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4pCisgICAgIGlmIChzdGFydCAmIH5UQVJHRVRfUEFHRV9NQVNLKQorICAgICAgICAgcmV0dXJuIC1UQVJHRVRfRUlOVkFMOworICAgICBsZW4gPSBUQVJHRVRfUEFHRV9BTElHTihsZW4pOworLSAgICBpZiAobGVuID09IDAgfHwgIWd1ZXN0X3JhbmdlX3ZhbGlkKHN0YXJ0LCBsZW4pKSB7CisrICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgIHJldHVybiAtVEFSR0VUX0VJTlZBTDsKKy0gICAgfQorLQorICAgICBtbWFwX2xvY2soKTsKKyAgICAgZW5kID0gc3RhcnQgKyBsZW47CisgICAgIHJlYWxfc3RhcnQgPSBzdGFydCAmIHFlbXVfaG9zdF9wYWdlX21hc2s7CitAQCAtNjgxLDEzICs2NzksNiBAQCBhYmlfbG9uZyB0YXJnZXRfbXJlbWFwKGFiaV91bG9uZyBvbGRfYWRkciwgYWJpX3Vsb25nIG9sZF9zaXplLAorICAgICBpbnQgcHJvdDsKKyAgICAgdm9pZCAqaG9zdF9hZGRyOworIAorLSAgICBpZiAoIWd1ZXN0X3JhbmdlX3ZhbGlkKG9sZF9hZGRyLCBvbGRfc2l6ZSkgfHwKKy0gICAgICAgICgoZmxhZ3MgJiBNUkVNQVBfRklYRUQpICYmCistICAgICAgICAgIWd1ZXN0X3JhbmdlX3ZhbGlkKG5ld19hZGRyLCBuZXdfc2l6ZSkpKSB7CistICAgICAgICBlcnJubyA9IEVOT01FTTsKKy0gICAgICAgIHJldHVybiAtMTsKKy0gICAgfQorLQorICAgICBtbWFwX2xvY2soKTsKKyAKKyAgICAgaWYgKGZsYWdzICYgTVJFTUFQX0ZJWEVEKSB7CitkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zeXNjYWxsLmMgYi9saW51eC11c2VyL3N5c2NhbGwuYworaW5kZXggNjQzYjg4MzNkZS4uMjcxZjIxNTE0NyAxMDA2NDQKKy0tLSBhL2xpbnV4LXVzZXIvc3lzY2FsbC5jCisrKysgYi9saW51eC11c2VyL3N5c2NhbGwuYworQEAgLTQ5MTksOSArNDkxOSw2IEBAIHN0YXRpYyBpbmxpbmUgYWJpX3Vsb25nIGRvX3NobWF0KENQVUFyY2hTdGF0ZSAqY3B1X2VudiwKKyAgICAgICAgICAgICByZXR1cm4gLVRBUkdFVF9FSU5WQUw7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgaWYgKCFndWVzdF9yYW5nZV92YWxpZChzaG1hZGRyLCBzaG1faW5mby5zaG1fc2Vnc3opKSB7CistICAgICAgICByZXR1cm4gLVRBUkdFVF9FSU5WQUw7CistICAgIH0KKyAKKyAgICAgbW1hcF9sb2NrKCk7CisgCitAQCAtNzQ5Nyw3ICs3NDk0LDcgQEAgc3RhdGljIGludCBvcGVuX3NlbGZfbWFwcyh2b2lkICpjcHVfZW52LCBpbnQgZmQpCisgICAgICAgICB9CisgICAgICAgICBpZiAoaDJnX3ZhbGlkKG1pbikpIHsKKyAgICAgICAgICAgICBpbnQgZmxhZ3MgPSBwYWdlX2dldF9mbGFncyhoMmcobWluKSk7CistICAgICAgICAgICAgbWF4ID0gaDJnX3ZhbGlkKG1heCAtIDEpID8gbWF4IDogKHVpbnRwdHJfdClnMmgoR1VFU1RfQUREUl9NQVgpICsgMTsKKysgICAgICAgICAgICBtYXggPSBoMmdfdmFsaWQobWF4IC0gMSkgPyBtYXggOiAodWludHB0cl90KWcyaChHVUVTVF9BRERSX01BWCk7CisgICAgICAgICAgICAgaWYgKHBhZ2VfY2hlY2tfcmFuZ2UoaDJnKG1pbiksIG1heCAtIG1pbiwgZmxhZ3MpID09IC0xKSB7CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLW1lbWZkLWZpeC1jb25maWd1cmUtdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLW1lbWZkLWZpeC1jb25maWd1cmUtdGVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgwY2I5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1tZW1mZC1maXgtY29uZmlndXJlLXRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDBjOGFmM2Y2NTFhMTI1ZDYzNmE3MWQ5M2JhZmQzNWZmNTI0MDQzMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyOCBOb3YgMjAxNyAxMTo1MToyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBtZW1mZDogZml4IGNvbmZpZ3VyZSB0ZXN0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVJlY2VudCBnbGliYyBhZGRlZCBtZW1mZF9jcmVhdGUgaW4gc3lzL21tYW4uaC4gIFRoaXMgY29uZmxpY3RzIHdpdGgKLXRoZSBkZWZpbml0aW9uIGluIHV0aWwvbWVtZmQuYzoKLQotICAgIC9idWlsZGRpci9idWlsZC9CVUlMRC9xZW11LTIuMTEuMC1yYzEvdXRpbC9tZW1mZC5jOjQwOjEyOiBlcnJvcjogc3RhdGljIGRlY2xhcmF0aW9uIG9mIG1lbWZkX2NyZWF0ZSBmb2xsb3dzIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24KLQotRml4IHRoZSBjb25maWd1cmUgdGVzdCwgYW5kIHJlbW92ZSB0aGUgc3lzL21lbWZkLmggaW5jbHVzaW9uIHNpbmNlIHRoZQotZmlsZSBhY3R1YWxseSBkb2VzIG5vdCBleGlzdC0tLWl0IGlzIGEgdHlwbyBpbiB0aGUgbWVtZmRfY3JlYXRlKDIpIG1hbgotcGFnZS4KLQotQ2M6IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gdXRpbC9tZW1mZC5jIHwgNCArLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGI1MzEyZjQuLmVjMTJmMzYgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTM5MjAsNyArMzkyMCw3IEBAIGZpCi0gIyBjaGVjayBpZiBtZW1mZCBpcyBzdXBwb3J0ZWQKLSBtZW1mZD1ubwotIGNhdCA+ICRUTVBDIDw8IEVPRgotLSNpbmNsdWRlIDxzeXMvbWVtZmQuaD4KLSsjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAKLSBpbnQgbWFpbih2b2lkKQotIHsKLWRpZmYgLS1naXQgYS91dGlsL21lbWZkLmMgYi91dGlsL21lbWZkLmMKLWluZGV4IDQ1NzFkMWEuLjQxMmU5NGEgMTAwNjQ0Ci0tLS0gYS91dGlsL21lbWZkLmMKLSsrKyBiL3V0aWwvbWVtZmQuYwotQEAgLTMxLDkgKzMxLDcgQEAKLSAKLSAjaW5jbHVkZSAicWVtdS9tZW1mZC5oIgotIAotLSNpZmRlZiBDT05GSUdfTUVNRkQKLS0jaW5jbHVkZSA8c3lzL21lbWZkLmg+Ci0tI2VsaWYgZGVmaW5lZCBDT05GSUdfTElOVVgKLSsjaWYgZGVmaW5lZCBDT05GSUdfTElOVVggJiYgIWRlZmluZWQgQ09ORklHX01FTUZECi0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEyLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTkyNTAyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEyLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIDczNTRiOWIyNGMzNmVlNzEyYmI2ZTg4MWQzOTUwNGJmMWI2YTRjOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTg6MjY6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXJtL3RyYW5zbGF0ZS1hNjQ6IHRyZWF0IERJU0FTX1VQREFURSBhcyB2YXJpYW50IG9mCi0gRElTQVNfRVhJVAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1JbiBPRSBwcm9qZWN0IDQuMTUgbGludXgga2VybmVsIGJvb3QgaGFuZyB3YXMgb2JzZXJ2ZWQgdW5kZXIKLXNpbmdsZSBjcHUgYWFyY2g2NCBxZW11LiBLZXJuZWwgY29kZSB3YXMgaW4gYSBsb29wIHdhaXRpbmcgZm9yCi12dGltZXIgYXJyaXZhbCwgc3Bpbm5pbmcgaW4gVEMgZ2VuZXJhdGVkIGJsb2Nrcywgd2hpbGUgaW50ZXJydXB0Ci13YXMgcGVuZGluZyB1bnByb2Nlc3NlZC4gVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdoZW4gcWVtdSB0cmllZCB0bwotaGFuZGxlIHZ0aW1lciBpbnRlcnJ1cHQgdGFyZ2V0IGhhZCBpbnRlcnJ1cHRzIGRpc2FibGVkLCBhcwotcmVzdWx0IGZsYWcgaW5kaWNhdGluZyBUQ0cgZXhpdCwgY3B1LT5pY291bnRfZGVjci51MTYuaGlnaCwKLXdhcyBjbGVhcmVkIGJ1dCBhcm1fY3B1X2V4ZWNfaW50ZXJydXB0IGZ1bmN0aW9uIGRpZCBub3QgY2FsbAotYXJtX2NwdV9kb19pbnRlcnJ1cHQgdG8gcHJvY2VzcyBpbnRlcnJ1cHQuIExhdGVyIHdoZW4gdGFyZ2V0Ci1yZWVuYWJsZWQgaW50ZXJydXB0cywgaXQgaGFwcGVuZWQgd2l0aG91dCBleGl0IGludG8gbWFpbiBsb29wLCBzbwotZm9sbG93aW5nIGNvZGUgdGhhdCB3YWl0ZWQgZm9yIHJlc3VsdCBvZiBpbnRlcnJ1cHQgZXhlY3V0aW9uCi1ydW4gaW4gaW5maW5pdGUgbG9vcC4KLQotVG8gc29sdmUgdGhlIHByb2JsZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBDUFUgc3lzIHN0YXRlCi0oaS5lIGVuYWJsZS9kaXNhYmxlIGludGVycnVwdCksIGFuZCBtYXJrZWQgYXMgRElTQVNfVVBEQVRFLAotc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgRElTQVNfRVhJVCB2YXJpYW50LCBhbmQgc2hvdWxkIGJlCi1mb3JjZWQgdG8gZXhpdCBiYWNrIHRvIG1haW4gbG9vcCBzbyBxZW11IHdpbGwgaGF2ZSBhIGNoYW5jZQotcHJvY2Vzc2luZyBwZW5kaW5nIENQVSBzdGF0ZSB1cGRhdGVzLCBpbmNsdWRpbmcgcGVuZGluZwotaW50ZXJydXB0cy4KLQotVGhpcyBjaGFuZ2UgYnJpbmdzIGNvbnNpc3RlbmN5IHdpdGggaG93IERJU0FTX1VQREFURSBpcyB0cmVhdGVkCi1pbiBhYXJjaDMyIGNhc2UuCi0KLUNDOiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+Ci1DQzogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgotQ0M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKLVN1Z2dlc3RlZC1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1SZXZpZXdlZC1ieTogUmljaGFyZCBIZW5kZXJzb24gPHJpY2hhcmQuaGVuZGVyc29uQGxpbmFyby5vcmc+Ci1NZXNzYWdlLWlkOiAxNTIxNTI2MzY4LTE5OTYtMS1naXQtc2VuZC1lbWFpbC1rYW1lbnNreUBjaXNjby5jb20KLVNpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIHRhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYwotaW5kZXggNjI1ZWYyZC4uYzM4MTA5MSAxMDA2NDQKLS0tLSBhL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jCi0rKysgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYwotQEAgLTExMzg0LDEyICsxMTM4NCwxMiBAQCBzdGF0aWMgdm9pZCBhYXJjaDY0X3RyX3RiX3N0b3AoRGlzYXNDb250ZXh0QmFzZSAqZGNiYXNlLCBDUFVTdGF0ZSAqY3B1KQotICAgICAgICAgY2FzZSBESVNBU19VUERBVEU6Ci0gICAgICAgICAgICAgZ2VuX2E2NF9zZXRfcGNfaW0oZGMtPnBjKTsKLSAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLS0gICAgICAgIGNhc2UgRElTQVNfSlVNUDoKLS0gICAgICAgICAgICB0Y2dfZ2VuX2xvb2t1cF9hbmRfZ290b19wdHIoKTsKLS0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgRElTQVNfRVhJVDoKLSAgICAgICAgICAgICB0Y2dfZ2VuX2V4aXRfdGIoMCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIERJU0FTX0pVTVA6Ci0rICAgICAgICAgICAgdGNnX2dlbl9sb29rdXBfYW5kX2dvdG9fcHRyKCk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlIERJU0FTX05PUkVUVVJOOgotICAgICAgICAgY2FzZSBESVNBU19TV0k6Ci0gICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEyLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMjRmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIGJiOWU0OGUzMzFlZWUwNmQ3YmFjMWRjZTgwOWM3MDE5MWQxYTNiNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDEyIE1hciAyMDEzIDA5OjU0OjA2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBsaWJjYXAgaGVhZGVyIGlzc3VlIG9uIHNvbWUgZGlzdHJvCisKKzEsIFdoZW4gYnVpbGQgcWVtdS1uYXRpdmUgb24gU0xFRCAxMS4yLCB0aGVyZSBpcyBhbiBlcnJvcjoKKy4uLgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oOjI4LAorfCAgZnJvbSAvdXNyL2luY2x1ZGUvc2lnbmFsLmg6MzM5LAorfCAgZnJvbSAvYnVpbGRhcmVhMi90bXAvd29yay9pNjg2LWxpbnV4L3FlbXUtbmF0aXZlLzEuNC4wLXIwLworcWVtdS0xLjQuMC9pbmNsdWRlL3FlbXUtY29tbW9uLmg6NDIsCit8ICBmcm9tIGZzZGV2L3ZpcnRmcy1wcm94eS1oZWxwZXIuYzoyMzoKK3wgIC91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oOjI4OiBlcnJvcjogZXhwZWN0ZWQgc3BlY2lmaWVyLQorcXVhbGlmaWVyLWxpc3QgYmVmb3JlICdfX3U2NCcKK3wgIC91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oOjE5MTogZXJyb3I6IGV4cGVjdGVkIHNwZWNpZmllci0KK3F1YWxpZmllci1saXN0IGJlZm9yZSAnX191NjQnCisuLi4KKworMiwgVGhlIHZpcnRmcy1wcm94eS1oZWxwZXIuYyBpbmNsdWRlcyA8c3lzL2NhcGFiaWxpdHkuaD4gYW5kCitxZW11LWNvbW1vbi5oIGluIHNlcXVlbmNlLiBUaGUgaGVhZGVyIGluY2x1ZGUgbWFwIGlzOgorKGAtLT4nIHByZXNlbnRzIGBpbmNsdWRlJykKKy4uLgorInZpcnRmcy1wcm94eS1oZWxwZXIuYyIgLS0+IDxzeXMvY2FwYWJpbGl0eS5oPgorLi4uCisidmlydGZzLXByb3h5LWhlbHBlci5jIiAtLT4gInFlbXUtY29tbW9uLmgiIC0tPiA8c2lnbmFsLmg+IC0tPgorPGJpdHMvc2lnY29udGV4dC5oPiAtLT4gPGFzbS9zaWdjb250ZXh0Lmg+IC0tPiA8bGludXgvdHlwZXMuaD4gLS0+Cis8YXNtL3R5cGVzLmg+IC0tPiA8YXNtLWdlbmVyaWMvdHlwZXMuaD4gLS0+IDxhc20tZ2VuZXJpYy9pbnQtbGw2NC5oPgorLi4uCisKKzMsIFRoZSBidWcgaXMgZm91bmQgb24gU0xFRCAxMS4yIHg4Ni4gSW4gbGliY2FwIGhlYWRlciBmaWxlCisvdXNyL2luY2x1ZGUvc3lzL2NhcGFiaWxpdHkuaCwgaXQgZG9lcyBldmlsIHN0dWZmIGxpa2UgdGhpczoKKy4uLgorICAyNSAvKgorICAyNiAgKiBNYWtlIHN1cmUgd2UgY2FuIGJlIGluY2x1ZGVkIGZyb20gdXNlcmxhbmQgYnkgcHJldmVudGluZworICAyNyAgKiBjYXBhYmlsaXR5LmggZnJvbSBpbmNsdWRpbmcgb3RoZXIga2VybmVsIGhlYWRlcnMKKyAgMjggICovCisgIDI5ICNkZWZpbmUgX0xJTlVYX1RZUEVTX0gKKyAgMzAgI2RlZmluZSBfTElOVVhfRlNfSAorICAzMSAjZGVmaW5lIF9fTElOVVhfQ09NUElMRVJfSAorICAzMiAjZGVmaW5lIF9fdXNlcgorICAzMworICAzNCB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKKyAgMzUgdHlwZWRlZiBfX3UzMiBfX2xlMzI7CisuLi4KK1RoaXMgY29tcGxldGVseSBwcmV2ZW50cyBpbmNsdWRpbmcgL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmguCitUaGUgYWJvdmUgYDxhc20vc2lnY29udGV4dC5oPiAtLT4gPGxpbnV4L3R5cGVzLmg+JyBpcyBwcmV2ZW50ZWQsCithbmQgJ19fdTY0JyBpcyBkZWZpbmVkIGluIDxhc20tZ2VuZXJpYy9pbnQtbGw2NC5oPi4KKworNCwgTW9kaWZ5IHZpcnRmcy1wcm94eS1oZWxwZXIuYyB0byBpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPgorbGFzdCB0byB3b3JrYXJvdW5kIHRoZSBpc3N1ZS4KKworaHR0cDovL3d3dy5saW51eHR2Lm9yZy9waXBlcm1haWwvdmRyLzIwMDktQXVndXN0LzAyMTE5NC5odG1sCitodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3BhdGNoLzEyNzQ4LworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGZzZGV2L3ZpcnRmcy1wcm94eS1oZWxwZXIuYyB8IDcgKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMgYi9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMKK2luZGV4IDZmMTMyYzVmZjEuLjgzMjk5NTBjMjYgMTAwNjQ0CistLS0gYS9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMKKysrKyBiL2ZzZGV2L3ZpcnRmcy1wcm94eS1oZWxwZXIuYworQEAgLTEzLDcgKzEzLDYgQEAKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPGdldG9wdC5oPgorICNpbmNsdWRlIDxzeXNsb2cuaD4KKy0jaW5jbHVkZSA8c3lzL2NhcGFiaWxpdHkuaD4KKyAjaW5jbHVkZSA8c3lzL2ZzdWlkLmg+CisgI2luY2x1ZGUgPHN5cy92ZnMuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CitAQCAtMjcsNyArMjYsMTEgQEAKKyAjaW5jbHVkZSAiOXAtaW92LW1hcnNoYWwuaCIKKyAjaW5jbHVkZSAiaHcvOXBmcy85cC1wcm94eS5oIgorICNpbmNsdWRlICJmc2Rldi85cC1pb3YtbWFyc2hhbC5oIgorLQorKy8qCisrICogSW5jbHVkZSB0aGlzIG9uZSBsYXN0IGR1ZSB0byBzb21lIHZlcnNpb25zIG9mIGl0IGJlaW5nIGJ1Z2d5OgorKyAqIGh0dHA6Ly93d3cubGludXh0di5vcmcvcGlwZXJtYWlsL3Zkci8yMDA5LUF1Z3VzdC8wMjExOTQuaHRtbAorKyAqLworKyNpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPgorICNkZWZpbmUgUFJPR05BTUUgInZpcnRmcy1wcm94eS1oZWxwZXIiCisgCisgI2lmbmRlZiBYRlNfU1VQRVJfTUFHSUMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMy1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOTE0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMy1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gZWRjOGRiYTc0YzdhNGEyMTIxZDc2Yzk4MmJlMDA3NDE4M2JmMDgwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTIgQXVnIDIwMTUgMTU6MTE6MzAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gY3B1cy5jOiBBZGQgZXJyb3IgbWVzc2FnZXMgd2hlbiBxZW1pX2NwdV9raWNrX3RocmVhZCBmYWlscy4KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQWRkIGN1c3RvbV9kZWJ1Zy5oIHdpdGggZnVuY3Rpb24gZm9yIHByaW50IGJhY2t0cmFjZSBpbmZvcm1hdGlvbi4KK1doZW4gcHRocmVhZF9raWxsIGZhaWxzIGluIHFlbXVfY3B1X2tpY2tfdGhyZWFkIGRpc3BsYXkgYmFja3RyYWNlIGFuZAorY3VycmVudCBjcHUgaW5mb3JtYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CistLS0KKyBjcHVzLmMgICAgICAgICB8ICA1ICsrKysrCisgY3VzdG9tX2RlYnVnLmggfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgY3VzdG9tX2RlYnVnLmgKKworZGlmZiAtLWdpdCBhL2NwdXMuYyBiL2NwdXMuYworaW5kZXggMzhlYmE4YmZmMy4uYjg0YTYwYTRmMyAxMDA2NDQKKy0tLSBhL2NwdXMuYworKysrIGIvY3B1cy5jCitAQCAtMTY5MCw2ICsxNjkwLDggQEAgc3RhdGljIHZvaWQgKnFlbXVfdGNnX2NwdV90aHJlYWRfZm4odm9pZCAqYXJnKQorICAgICByZXR1cm4gTlVMTDsKKyB9CisgCisrI2luY2x1ZGUgImN1c3RvbV9kZWJ1Zy5oIgorKworIHN0YXRpYyB2b2lkIHFlbXVfY3B1X2tpY2tfdGhyZWFkKENQVVN0YXRlICpjcHUpCisgeworICNpZm5kZWYgX1dJTjMyCitAQCAtMTcwMiw2ICsxNzA0LDkgQEAgc3RhdGljIHZvaWQgcWVtdV9jcHVfa2lja190aHJlYWQoQ1BVU3RhdGUgKmNwdSkKKyAgICAgZXJyID0gcHRocmVhZF9raWxsKGNwdS0+dGhyZWFkLT50aHJlYWQsIFNJR19JUEkpOworICAgICBpZiAoZXJyKSB7CisgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6JXM6ICVzIiwgX19mdW5jX18sIHN0cmVycm9yKGVycikpOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDUFUgIyVkOlxuIiwgY3B1LT5jcHVfaW5kZXgpOworKyAgICAgICAgY3B1X2R1bXBfc3RhdGUoY3B1LCBzdGRlcnIsIGZwcmludGYsIDApOworKyAgICAgICAgYmFja3RyYWNlX3ByaW50KCk7CisgICAgICAgICBleGl0KDEpOworICAgICB9CisgI2Vsc2UgLyogX1dJTjMyICovCitkaWZmIC0tZ2l0IGEvY3VzdG9tX2RlYnVnLmggYi9jdXN0b21fZGVidWcuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmYwMjllNDU1NDcKKy0tLSAvZGV2L251bGwKKysrKyBiL2N1c3RvbV9kZWJ1Zy5oCitAQCAtMCwwICsxLDI0IEBACisrI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2RlZmluZSBCQUNLVFJBQ0VfTUFYIDEyOAorK3N0YXRpYyB2b2lkIGJhY2t0cmFjZV9wcmludCh2b2lkKQorK3sKKysJaW50IG5mdW5jcyA9IDA7CisrCXZvaWQgKmJ1ZltCQUNLVFJBQ0VfTUFYXTsKKysJY2hhciAqKnN5bWJvbHM7CisrCWludCBpOworKworKwluZnVuY3MgPSBiYWNrdHJhY2UoYnVmLCBCQUNLVFJBQ0VfTUFYKTsKKysKKysJc3ltYm9scyA9IGJhY2t0cmFjZV9zeW1ib2xzKGJ1ZiwgbmZ1bmNzKTsKKysJaWYgKHN5bWJvbHMgPT0gTlVMTCkgeworKwkJZnByaW50ZihzdGRlcnIsICJiYWNrdHJhY2VfcHJpbnQgZmFpbGVkIHRvIGdldCBzeW1ib2xzIik7CisrCQlyZXR1cm47CisrCX0KKysKKysJZnByaW50ZihzdGRlcnIsICJCYWNrdHJhY2UgLi4uXG4iKTsKKysJZm9yIChpID0gMDsgaSA8IG5mdW5jczsgaSsrKQorKwkJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgc3ltYm9sc1tpXSk7CisrCisrCWZyZWUoc3ltYm9scyk7CisrfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTMtcHMyLWNoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTMtcHMyLWNoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmJkZjZiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLXBzMi1jaGVjay1QUzJRdWV1ZS1wb2ludGVycy1pbi1wb3N0X2xvYWQtcm91dGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gMDY1MDYxZGNhMzRmYTViOTFiZTZkY2U5YTg3YTg3NTVkODgyNmM3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotRGF0ZTogVGh1LCAxNiBOb3YgMjAxNyAxMzoyMTo1NSArMDUzMAotU3ViamVjdDogW1BBVENIXSBwczI6IGNoZWNrIFBTMlF1ZXVlIHBvaW50ZXJzIGluIHBvc3RfbG9hZCByb3V0aW5lCi0KLUR1cmluZyBRZW11IGd1ZXN0IG1pZ3JhdGlvbiwgYSBkZXN0aW5hdGlvbiBwcm9jZXNzIGludm9rZXMgcHMyCi1wb3N0X2xvYWQgZnVuY3Rpb24uIEluIHRoYXQsIGlmICdycHRyJyBhbmQgJ2NvdW50JyB2YWx1ZXMgd2VyZQotaW52YWxpZCwgaXQgY291bGQgbGVhZCB0byBPT0IgYWNjZXNzIG9yIGluZmluaXRlIGxvb3AgaXNzdWUuCi1BZGQgY2hlY2sgdG8gYXZvaWQgaXQuCi0KLVJlcG9ydGVkLWJ5OiBDeXJpbGxlIENoYXRyYXMgPGN5cmlsbGUuY2hhdHJhc0BvcmFuZ2UuY29tPgotU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+Ci1NZXNzYWdlLWlkOiAyMDE3MTExNjA3NTE1NS4yMjM3OC0xLXBwYW5kaXRAcmVkaGF0LmNvbQotU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci0KLUNWRTogQ1ZFLTIwMTctMTY4NDUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2lucHV0L3BzMi5jIHwgMjEgKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9pbnB1dC9wczIuYyBiL2h3L2lucHV0L3BzMi5jCi1pbmRleCBmMzg4YTIzLi5kZTE3MWEyIDEwMDY0NAotLS0tIGEvaHcvaW5wdXQvcHMyLmMKLSsrKyBiL2h3L2lucHV0L3BzMi5jCi1AQCAtMTIyNSwyNCArMTIyNSwyMSBAQCBzdGF0aWMgdm9pZCBwczJfY29tbW9uX3Jlc2V0KFBTMlN0YXRlICpzKQotIHN0YXRpYyB2b2lkIHBzMl9jb21tb25fcG9zdF9sb2FkKFBTMlN0YXRlICpzKQotIHsKLSAgICAgUFMyUXVldWUgKnEgPSAmcy0+cXVldWU7Ci0tICAgIGludCBzaXplOwotLSAgICBpbnQgaTsKLS0gICAgaW50IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKLSsgICAgdWludDhfdCBpLCBzaXplOwotKyAgICB1aW50OF90IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKLSAKLSAgICAgLyogc2V0IHRoZSB1c2VmdWwgZGF0YSBidWZmZXIgcXVldWUgc2l6ZSwgPCBQUzJfUVVFVUVfU0laRSAqLwotLSAgICBzaXplID0gcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSA/IDAgOiBxLT5jb3VudDsKLSsgICAgc2l6ZSA9IChxLT5jb3VudCA8IDAgfHwgcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSkgPyAwIDogcS0+Y291bnQ7Ci0gCi0gICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSBzdGFydCBvZiBkYXRhIGFycmF5ICovCi0tICAgIGlmIChzaXplID4gMCkgewotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewotLSAgICAgICAgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVyICovCi0tICAgICAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHJdOwotLSAgICAgICAgICAgIGlmICgrK3EtPnJwdHIgPT0gMjU2KSB7Ci0tICAgICAgICAgICAgICAgIHEtPnJwdHIgPSAwOwotLSAgICAgICAgICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewotKyAgICAgICAgaWYgKHEtPnJwdHIgPCAwIHx8IHEtPnJwdHIgPj0gc2l6ZW9mKHEtPmRhdGEpKSB7Ci0rICAgICAgICAgICAgcS0+cnB0ciA9IDA7Ci0gICAgICAgICB9Ci0tICAgICAgICBtZW1jcHkocS0+ZGF0YSwgdG1wX2RhdGEsIHNpemUpOwotKyAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHIrK107Ci0gICAgIH0KLSsgICAgbWVtY3B5KHEtPmRhdGEsIHRtcF9kYXRhLCBzaXplKTsKLSsKLSAgICAgLyogcmVzZXQgcnB0ci93cHRyL2NvdW50ICovCi0gICAgIHEtPnJwdHIgPSAwOwotICAgICBxLT53cHRyID0gc2l6ZTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDE0LWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTQtZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NjJhNDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTQtZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDQ3ZmRiMGI2ZTJlMzkzMTk0YThjODE1NDRjNjQ3ZmRkOTk3YWVjN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDEyIE1hciAyMDEzIDA5OjU0OjA2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBsaWJjYXAgaGVhZGVyIGlzc3VlIG9uIHNvbWUgZGlzdHJvCi0KLTEsIFdoZW4gYnVpbGQgcWVtdS1uYXRpdmUgb24gU0xFRCAxMS4yLCB0aGVyZSBpcyBhbiBlcnJvcjoKLS4uLgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oOjI4LAotfCAgZnJvbSAvdXNyL2luY2x1ZGUvc2lnbmFsLmg6MzM5LAotfCAgZnJvbSAvYnVpbGRhcmVhMi90bXAvd29yay9pNjg2LWxpbnV4L3FlbXUtbmF0aXZlLzEuNC4wLXIwLwotcWVtdS0xLjQuMC9pbmNsdWRlL3FlbXUtY29tbW9uLmg6NDIsCi18ICBmcm9tIGZzZGV2L3ZpcnRmcy1wcm94eS1oZWxwZXIuYzoyMzoKLXwgIC91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oOjI4OiBlcnJvcjogZXhwZWN0ZWQgc3BlY2lmaWVyLQotcXVhbGlmaWVyLWxpc3QgYmVmb3JlICdfX3U2NCcKLXwgIC91c3IvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oOjE5MTogZXJyb3I6IGV4cGVjdGVkIHNwZWNpZmllci0KLXF1YWxpZmllci1saXN0IGJlZm9yZSAnX191NjQnCi0uLi4KLQotMiwgVGhlIHZpcnRmcy1wcm94eS1oZWxwZXIuYyBpbmNsdWRlcyA8c3lzL2NhcGFiaWxpdHkuaD4gYW5kCi1xZW11LWNvbW1vbi5oIGluIHNlcXVlbmNlLiBUaGUgaGVhZGVyIGluY2x1ZGUgbWFwIGlzOgotKGAtLT4nIHByZXNlbnRzIGBpbmNsdWRlJykKLS4uLgotInZpcnRmcy1wcm94eS1oZWxwZXIuYyIgLS0+IDxzeXMvY2FwYWJpbGl0eS5oPgotLi4uCi0idmlydGZzLXByb3h5LWhlbHBlci5jIiAtLT4gInFlbXUtY29tbW9uLmgiIC0tPiA8c2lnbmFsLmg+IC0tPgotPGJpdHMvc2lnY29udGV4dC5oPiAtLT4gPGFzbS9zaWdjb250ZXh0Lmg+IC0tPiA8bGludXgvdHlwZXMuaD4gLS0+Ci08YXNtL3R5cGVzLmg+IC0tPiA8YXNtLWdlbmVyaWMvdHlwZXMuaD4gLS0+IDxhc20tZ2VuZXJpYy9pbnQtbGw2NC5oPgotLi4uCi0KLTMsIFRoZSBidWcgaXMgZm91bmQgb24gU0xFRCAxMS4yIHg4Ni4gSW4gbGliY2FwIGhlYWRlciBmaWxlCi0vdXNyL2luY2x1ZGUvc3lzL2NhcGFiaWxpdHkuaCwgaXQgZG9lcyBldmlsIHN0dWZmIGxpa2UgdGhpczoKLS4uLgotICAyNSAvKgotICAyNiAgKiBNYWtlIHN1cmUgd2UgY2FuIGJlIGluY2x1ZGVkIGZyb20gdXNlcmxhbmQgYnkgcHJldmVudGluZwotICAyNyAgKiBjYXBhYmlsaXR5LmggZnJvbSBpbmNsdWRpbmcgb3RoZXIga2VybmVsIGhlYWRlcnMKLSAgMjggICovCi0gIDI5ICNkZWZpbmUgX0xJTlVYX1RZUEVTX0gKLSAgMzAgI2RlZmluZSBfTElOVVhfRlNfSAotICAzMSAjZGVmaW5lIF9fTElOVVhfQ09NUElMRVJfSAotICAzMiAjZGVmaW5lIF9fdXNlcgotICAzMwotICAzNCB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKLSAgMzUgdHlwZWRlZiBfX3UzMiBfX2xlMzI7Ci0uLi4KLVRoaXMgY29tcGxldGVseSBwcmV2ZW50cyBpbmNsdWRpbmcgL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmguCi1UaGUgYWJvdmUgYDxhc20vc2lnY29udGV4dC5oPiAtLT4gPGxpbnV4L3R5cGVzLmg+JyBpcyBwcmV2ZW50ZWQsCi1hbmQgJ19fdTY0JyBpcyBkZWZpbmVkIGluIDxhc20tZ2VuZXJpYy9pbnQtbGw2NC5oPi4KLQotNCwgTW9kaWZ5IHZpcnRmcy1wcm94eS1oZWxwZXIuYyB0byBpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPgotbGFzdCB0byB3b3JrYXJvdW5kIHRoZSBpc3N1ZS4KLQotaHR0cDovL3d3dy5saW51eHR2Lm9yZy9waXBlcm1haWwvdmRyLzIwMDktQXVndXN0LzAyMTE5NC5odG1sCi1odHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3BhdGNoLzEyNzQ4LwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGZzZGV2L3ZpcnRmcy1wcm94eS1oZWxwZXIuYyB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMgYi9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMKLWluZGV4IDhlNDg1MDAuLjY0OTAwMzAgMTAwNjQ0Ci0tLS0gYS9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMKLSsrKyBiL2ZzZGV2L3ZpcnRmcy1wcm94eS1oZWxwZXIuYwotQEAgLTEzLDcgKzEzLDYgQEAKLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2luY2x1ZGUgPGdldG9wdC5oPgotICNpbmNsdWRlIDxzeXNsb2cuaD4KLS0jaW5jbHVkZSA8c3lzL2NhcGFiaWxpdHkuaD4KLSAjaW5jbHVkZSA8c3lzL2ZzdWlkLmg+Ci0gI2luY2x1ZGUgPHN5cy92ZnMuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci1AQCAtMjcsNyArMjYsMTEgQEAKLSAjaW5jbHVkZSAiOXAtaW92LW1hcnNoYWwuaCIKLSAjaW5jbHVkZSAiaHcvOXBmcy85cC1wcm94eS5oIgotICNpbmNsdWRlICJmc2Rldi85cC1pb3YtbWFyc2hhbC5oIgotLQotKy8qCi0rICogSW5jbHVkZSB0aGlzIG9uZSBsYXN0IGR1ZSB0byBzb21lIHZlcnNpb25zIG9mIGl0IGJlaW5nIGJ1Z2d5OgotKyAqIGh0dHA6Ly93d3cubGludXh0di5vcmcvcGlwZXJtYWlsL3Zkci8yMDA5LUF1Z3VzdC8wMjExOTQuaHRtbAotKyAqLwotKyNpbmNsdWRlIDxzeXMvY2FwYWJpbGl0eS5oPgotICNkZWZpbmUgUFJPR05BTUUgInZpcnRmcy1wcm94eS1oZWxwZXIiCi0gCi0gI2lmbmRlZiBYRlNfU1VQRVJfTUFHSUMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDE1LWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxNS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTYyMWNhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDE1LWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIGRiOTE0ZTBmOTNhMzJiNjczMWE2MzY1MTcwMDJlY2FkYzIwNzcxOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDE1IDE1OjExOjMwIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNwdXMuYzogQWRkIGVycm9yIG1lc3NhZ2VzIHdoZW4gcWVtaV9jcHVfa2lja190aHJlYWQgZmFpbHMuCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLUFkZCBjdXN0b21fZGVidWcuaCB3aXRoIGZ1bmN0aW9uIGZvciBwcmludCBiYWNrdHJhY2UgaW5mb3JtYXRpb24uCi1XaGVuIHB0aHJlYWRfa2lsbCBmYWlscyBpbiBxZW11X2NwdV9raWNrX3RocmVhZCBkaXNwbGF5IGJhY2t0cmFjZSBhbmQKLWN1cnJlbnQgY3B1IGluZm9ybWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgotLS0tCi0gY3B1cy5jICAgICAgICAgfCAgNSArKysrKwotIGN1c3RvbV9kZWJ1Zy5oIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGN1c3RvbV9kZWJ1Zy5oCi0KLWRpZmYgLS1naXQgYS9jcHVzLmMgYi9jcHVzLmMKLWluZGV4IDExNGMyOWIuLmMzZGQyZTAgMTAwNjQ0Ci0tLS0gYS9jcHVzLmMKLSsrKyBiL2NwdXMuYwotQEAgLTE1MTAsNiArMTUxMCw4IEBAIHN0YXRpYyB2b2lkICpxZW11X3RjZ19jcHVfdGhyZWFkX2ZuKHZvaWQgKmFyZykKLSAgICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotKyNpbmNsdWRlICJjdXN0b21fZGVidWcuaCIKLSsKLSBzdGF0aWMgdm9pZCBxZW11X2NwdV9raWNrX3RocmVhZChDUFVTdGF0ZSAqY3B1KQotIHsKLSAjaWZuZGVmIF9XSU4zMgotQEAgLTE1MjIsNiArMTUyNCw5IEBAIHN0YXRpYyB2b2lkIHFlbXVfY3B1X2tpY2tfdGhyZWFkKENQVVN0YXRlICpjcHUpCi0gICAgIGVyciA9IHB0aHJlYWRfa2lsbChjcHUtPnRocmVhZC0+dGhyZWFkLCBTSUdfSVBJKTsKLSAgICAgaWYgKGVycikgewotICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiVzOiAlcyIsIF9fZnVuY19fLCBzdHJlcnJvcihlcnIpKTsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ1BVICMlZDpcbiIsIGNwdS0+Y3B1X2luZGV4KTsKLSsgICAgICAgIGNwdV9kdW1wX3N0YXRlKGNwdSwgc3RkZXJyLCBmcHJpbnRmLCAwKTsKLSsgICAgICAgIGJhY2t0cmFjZV9wcmludCgpOwotICAgICAgICAgZXhpdCgxKTsKLSAgICAgfQotICNlbHNlIC8qIF9XSU4zMiAqLwotZGlmZiAtLWdpdCBhL2N1c3RvbV9kZWJ1Zy5oIGIvY3VzdG9tX2RlYnVnLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMDI5ZTQ1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9jdXN0b21fZGVidWcuaAotQEAgLTAsMCArMSwyNCBAQAotKyNpbmNsdWRlIDxleGVjaW5mby5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNkZWZpbmUgQkFDS1RSQUNFX01BWCAxMjgKLStzdGF0aWMgdm9pZCBiYWNrdHJhY2VfcHJpbnQodm9pZCkKLSt7Ci0rCWludCBuZnVuY3MgPSAwOwotKwl2b2lkICpidWZbQkFDS1RSQUNFX01BWF07Ci0rCWNoYXIgKipzeW1ib2xzOwotKwlpbnQgaTsKLSsKLSsJbmZ1bmNzID0gYmFja3RyYWNlKGJ1ZiwgQkFDS1RSQUNFX01BWCk7Ci0rCi0rCXN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyhidWYsIG5mdW5jcyk7Ci0rCWlmIChzeW1ib2xzID09IE5VTEwpIHsKLSsJCWZwcmludGYoc3RkZXJyLCAiYmFja3RyYWNlX3ByaW50IGZhaWxlZCB0byBnZXQgc3ltYm9scyIpOwotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiQmFja3RyYWNlIC4uLlxuIik7Ci0rCWZvciAoaSA9IDA7IGkgPCBuZnVuY3M7IGkrKykKLSsJCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHN5bWJvbHNbaV0pOwotKwotKwlmcmVlKHN5bWJvbHMpOwotK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xMDgzOS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xMDgzOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTFlNDQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTEwODM5LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gZmRjODllOTBmYWM0MGM1Y2EyNjg2NzMzZGYxN2I2NDIzZmI4ZDhmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDMwIE1heSAyMDE4IDEzOjA4OjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG5lMjAwMDogZml4IHBvc3NpYmxlIG91dCBvZiBib3VuZCBhY2Nlc3MgaW4gbmUyMDAwX3JlY2VpdmUKKworSW4gbmUyMDAwX3JlY2VpdmUoKSwgd2UgdHJ5IHRvIGFzc2lnbiBzaXplXyB0byBzaXplIHdoaWNoIGNvbnZlcnRzCitmcm9tIHNpemVfdCB0byBpbnRlZ2VyLiBUaGlzIHdpbGwgY2F1c2UgdHJvdWJsZXMgd2hlbiBzaXplXyBpcyBncmVhdGVyCitJTlRfTUFYLCB0aGlzIHdpbGwgbGVhZCBhIG5lZ2F0aXZlIHZhbHVlIGluIHNpemUgYW5kIGl0IGNhbiB0aGVuIHBhc3MKK3RoZSBjaGVjayBvZiBzaXplIDwgTUlOX0JVRl9TSVpFIHdoaWNoIG1heSBsZWFkIG91dCBvZiBib3VuZCBhY2Nlc3Mgb2YKK2ZvciBib3RoIGJ1ZiBhbmQgYnVmMS4KKworRml4aW5nIGJ5IGNvbnZlcnRpbmcgdGhlIHR5cGUgb2Ygc2l6ZSB0byBzaXplX3QuCisKK0NDOiBxZW11LXN0YWJsZUBub25nbnUub3JnCitSZXBvcnRlZC1ieTogRGFuaWVsIFNoYXBpcmEgPGRhbmllbEB0d2lzdGxvY2suY29tPgorUmV2aWV3ZWQtYnk6IE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdGRpZmYKKztoPWZkYzg5ZTkwZmFjNDBjNWNhMjY4NjczM2RmMTdiNjQyM2ZiOGQ4ZmIjcGF0Y2gxXQorCitDVkU6IENWRS0yMDE4LTEwODM5CisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBody9uZXQvbmUyMDAwLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvbmV0L25lMjAwMC5jIGIvaHcvbmV0L25lMjAwMC5jCitpbmRleCAwN2Q3OWUzLi44Njk1MThlIDEwMDY0NAorLS0tIGEvaHcvbmV0L25lMjAwMC5jCisrKysgYi9ody9uZXQvbmUyMDAwLmMKK0BAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIGludCBuZTIwMDBfYnVmZmVyX2Z1bGwoTkUyMDAwU3RhdGUgKnMpCisgc3NpemVfdCBuZTIwMDBfcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemVfKQorIHsKKyAgICAgTkUyMDAwU3RhdGUgKnMgPSBxZW11X2dldF9uaWNfb3BhcXVlKG5jKTsKKy0gICAgaW50IHNpemUgPSBzaXplXzsKKysgICAgc2l6ZV90IHNpemUgPSBzaXplXzsKKyAgICAgdWludDhfdCAqcDsKKyAgICAgdW5zaWduZWQgaW50IHRvdGFsX2xlbiwgbmV4dCwgYXZhaWwsIGxlbiwgaW5kZXgsIG1jYXN0X2lkeDsKKyAgICAgdWludDhfdCBidWYxWzYwXTsKK0BAIC0xODIsNyArMTgyLDcgQEAgc3NpemVfdCBuZTIwMDBfcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemVfKQorICAgICAgICAgeyAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmIH07CisgCisgI2lmIGRlZmluZWQoREVCVUdfTkUyMDAwKQorLSAgICBwcmludGYoIk5FMjAwMDogcmVjZWl2ZWQgbGVuPSVkXG4iLCBzaXplKTsKKysgICAgcHJpbnRmKCJORTIwMDA6IHJlY2VpdmVkIGxlbj0lenVcbiIsIHNpemUpOworICNlbmRpZgorIAorICAgICBpZiAocy0+Y21kICYgRTgzOTBfU1RPUCB8fCBuZTIwMDBfYnVmZmVyX2Z1bGwocykpCistLSAKKzEuOC4zLjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xMjYxNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xMjYxNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg5ZjE4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTI2MTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDE0MWIxOTc0MDhhYjM5OGM0ZjQ3NGFjMWE3MjhhYjMxNmU5MjFmMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6IFdlZCwgMTMgSnVuIDIwMTggMTE6NDY6NTcgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gcWdhOiBjaGVjayBieXRlcyBjb3VudCByZWFkIGJ5IGd1ZXN0LWZpbGUtcmVhZAotCi1XaGlsZSByZWFkaW5nIGZpbGUgY29udGVudCB2aWEgJ2d1ZXN0LWZpbGUtcmVhZCcgY29tbWFuZCwKLSdxbXBfZ3Vlc3RfZmlsZV9yZWFkJyByb3V0aW5lIGFsbG9jYXRlcyBidWZmZXIgb2YgY291bnQrMQotYnl0ZXMuIEl0IGNvdWxkIG92ZXJmbG93IGZvciBsYXJnZSB2YWx1ZXMgb2YgJ2NvdW50Jy4KLUFkZCBjaGVjayB0byBhdm9pZCBpdC4KLQotUmVwb3J0ZWQtYnk6IEZha2hyaSBadWxraWZsaSA8bW9oZGZha2hyaXp1bGtpZmxpQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgUm90aCA8bWRyb3RoQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotQ1ZFOiBDVkUtMjAxOC0xMjYxNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXRkaWZmO2g9MTQxYjE5NzQwOGFiMzk4YzRmNDc0YWMxYTcyOGFiMzE2ZTkyMWYyYl0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gcWdhL2NvbW1hbmRzLXBvc2l4LmMgfCAyICstCi0gcWdhL2NvbW1hbmRzLXdpbjMyLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9xZ2EvY29tbWFuZHMtcG9zaXguYyBiL3FnYS9jb21tYW5kcy1wb3NpeC5jCi1pbmRleCA1OTRkMjFlZjNlLi45Mjg0ZTcxNjY2IDEwMDY0NAotLS0tIGEvcWdhL2NvbW1hbmRzLXBvc2l4LmMKLSsrKyBiL3FnYS9jb21tYW5kcy1wb3NpeC5jCi1AQCAtNDU4LDcgKzQ1OCw3IEBAIHN0cnVjdCBHdWVzdEZpbGVSZWFkICpxbXBfZ3Vlc3RfZmlsZV9yZWFkKGludDY0X3QgaGFuZGxlLCBib29sIGhhc19jb3VudCwKLSAKLSAgICAgaWYgKCFoYXNfY291bnQpIHsKLSAgICAgICAgIGNvdW50ID0gUUdBX1JFQURfQ09VTlRfREVGQVVMVDsKLS0gICAgfSBlbHNlIGlmIChjb3VudCA8IDApIHsKLSsgICAgfSBlbHNlIGlmIChjb3VudCA8IDAgfHwgY291bnQgPj0gVUlOVDMyX01BWCkgewotICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAidmFsdWUgJyUiIFBSSWQ2NCAiJyBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBjb3VudCIsCi0gICAgICAgICAgICAgICAgICAgIGNvdW50KTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotZGlmZiAtLWdpdCBhL3FnYS9jb21tYW5kcy13aW4zMi5jIGIvcWdhL2NvbW1hbmRzLXdpbjMyLmMKLWluZGV4IDcwZWU1Mzc5ZjYuLjczZjMxZmE4YzIgMTAwNjQ0Ci0tLS0gYS9xZ2EvY29tbWFuZHMtd2luMzIuYwotKysrIGIvcWdhL2NvbW1hbmRzLXdpbjMyLmMKLUBAIC0zMTgsNyArMzE4LDcgQEAgR3Vlc3RGaWxlUmVhZCAqcW1wX2d1ZXN0X2ZpbGVfcmVhZChpbnQ2NF90IGhhbmRsZSwgYm9vbCBoYXNfY291bnQsCi0gICAgIH0KLSAgICAgaWYgKCFoYXNfY291bnQpIHsKLSAgICAgICAgIGNvdW50ID0gUUdBX1JFQURfQ09VTlRfREVGQVVMVDsKLS0gICAgfSBlbHNlIGlmIChjb3VudCA8IDApIHsKLSsgICAgfSBlbHNlIGlmIChjb3VudCA8IDAgfHwgY291bnQgPj0gVUlOVDMyX01BWCkgewotICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAidmFsdWUgJyUiIFBSSWQ2NAotICAgICAgICAgICAgICAgICAgICAiJyBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBjb3VudCIsIGNvdW50KTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE1NzQ2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE1NzQ2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNjFlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTU3NDYucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSA5YWNmNGM2NGRkNDU2MGJkMjY4MDA2ZDczNTZjNzQ1NWZhYjdlNWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgNiBTZXAgMjAxOCAxNDo1MjoxMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBzZWNjb21wOiBzZXQgdGhlIHNlY2NvbXAgZmlsdGVyIHRvIGFsbCB0aHJlYWRzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1doZW4gdXNpbmcgIi1zZWNjb21wIG9uIiwgdGhlIHNlY2NvbXAgcG9saWN5IGlzIG9ubHkgYXBwbGllZCB0byB0aGUKK21haW4gdGhyZWFkLCB0aGUgdmNwdSB3b3JrZXIgdGhyZWFkIGFuZCBvdGhlciB3b3JrZXIgdGhyZWFkcyBjcmVhdGVkCithZnRlciBzZWNjb21wIHBvbGljeSBpcyBhcHBsaWVkOyB0aGUgc2VjY29tcCBwb2xpY3kgaXMgbm90IGFwcGxpZWQgdG8KK2UuZy4gdGhlIFJDVSB0aHJlYWQgYmVjYXVzZSBpdCBpcyBjcmVhdGVkIGJlZm9yZSB0aGUgc2VjY29tcCBwb2xpY3kgaXMKK2FwcGxpZWQgYW5kIFNFQ0NPTVBfRklMVEVSX0ZMQUdfVFNZTkMgaXNuJ3QgdXNlZC4KKworVGhpcyBjYW4gYmUgdmVyaWZpZWQgd2l0aAorZm9yIHRhc2sgaW4gL3Byb2MvYHBpZG9mIHFlbXVgL3Rhc2svKjsgZG8gY2F0ICR0YXNrL3N0YXR1cyB8IGdyZXAgU2VjYyA7IGRvbmUKK1NlY2NvbXA6CTIKK1NlY2NvbXA6CTAKK1NlY2NvbXA6CTAKK1NlY2NvbXA6CTIKK1NlY2NvbXA6CTIKK1NlY2NvbXA6CTIKKworU3RhcnRpbmcgd2l0aCBsaWJzZWNjb21wIDIuMi4wIGFuZCBrZXJuZWwgPj0gMy4xNywgd2UgY2FuIHVzZQorc2VjY29tcF9hdHRyX3NldChjdHgsID4gU0NNUF9GTFRBVFJfQ1RMX1RTWU5DLCAxKSB0byB1cGRhdGUgdGhlIHBvbGljeQorb24gYWxsIHRocmVhZHMuCisKK2xpYnNlY2NvbXAgcmVxdWlyZW1lbnQgd2FzIGJ1bXBlZCB0byAyLjIuMCBpbiBwcmV2aW91cyBwYXRjaC4KK2xpYnNlY2NvbXAgc2hvdWxkIGZhaWwgdG8gc2V0IHRoZSBmaWx0ZXIgaWYgaXQgY2FuJ3QgaG9ub3VyCitTQ01QX0ZMVEFUUl9DVExfVFNZTkMgKHVudGVzdGVkKSwgYW5kIHRodXMgLXNhbmRib3ggd2lsbCBub3cgZmFpbCBvbgora2VybmVsIDwgMy4xNy4KKworU2lnbmVkLW9mZi1ieTogTWFyYy1BbmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+CitBY2tlZC1ieTogRWR1YXJkbyBPdHVibyA8b3R1Ym9AcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vcWVtdS9xZW11L2NvbW1pdC8KKzcwZGZhYmVhYTc5YmE0ZDdhM2I2OTlhYmUxYTA0N2M4MDEyZGIxMTQjZGlmZi0xODEwNmQzYjQ3YTJkMjQ5ZjlkNDFlNzcyYjdkYjIyZF0KKworQ1ZFOiBDVkUtMjAxOC0xNTc0NgorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgcWVtdS1zZWNjb21wLmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcWVtdS1zZWNjb21wLmMgYi9xZW11LXNlY2NvbXAuYworaW5kZXggOWNkOGViOS4uYmE1NTAwYSAxMDA2NDQKKy0tLSBhL3FlbXUtc2VjY29tcC5jCisrKysgYi9xZW11LXNlY2NvbXAuYworQEAgLTEyMCw2ICsxMjAsMTEgQEAgc3RhdGljIGludCBzZWNjb21wX3N0YXJ0KHVpbnQzMl90IHNlY2NvbXBfb3B0cykKKyAgICAgICAgIGdvdG8gc2VjY29tcF9yZXR1cm47CisgICAgIH0KKyAKKysgICAgcmMgPSBzZWNjb21wX2F0dHJfc2V0KGN0eCwgU0NNUF9GTFRBVFJfQ1RMX1RTWU5DLCAxKTsKKysgICAgaWYgKHJjICE9IDApIHsKKysgICAgICAgIGdvdG8gc2VjY29tcF9yZXR1cm47CisrICAgIH0KKysKKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYmxhY2tsaXN0KTsgaSsrKSB7CisgICAgICAgICBpZiAoIShzZWNjb21wX29wdHMgJiBibGFja2xpc3RbaV0uc2V0KSkgeworICAgICAgICAgICAgIGNvbnRpbnVlOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTc5NTgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTc5NTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0MGZmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNzk1OC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDA2ZTg4Y2E3OGQwNTZlYTRkZTg4NWUzYTE0OTY4MDUxNzlkYzQ3YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNSBPY3QgMjAxOCAxNjozMzowNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZTIwMDA6IGZpeCBwb3NzaWJsZSBvdXQgb2YgYm91bmQgYWNjZXNzIGluIG5lMjAwMF9yZWNlaXZlCisKK0luIG5lMjAwMF9yZWNlaXZlKCksIHdlIHRyeSB0byBhc3NpZ24gc2l6ZV8gdG8gc2l6ZSB3aGljaCBjb252ZXJ0cworZnJvbSBzaXplX3QgdG8gaW50ZWdlci4gVGhpcyB3aWxsIGNhdXNlIHRyb3VibGVzIHdoZW4gc2l6ZV8gaXMgZ3JlYXRlcgorSU5UX01BWCwgdGhpcyB3aWxsIGxlYWQgYSBuZWdhdGl2ZSB2YWx1ZSBpbiBzaXplIGFuZCBpdCBjYW4gdGhlbiBwYXNzCit0aGUgY2hlY2sgb2Ygc2l6ZSA8IE1JTl9CVUZfU0laRSB3aGljaCBtYXkgbGVhZCBvdXQgb2YgYm91bmQgYWNjZXNzIG9mCitmb3IgYm90aCBidWYgYW5kIGJ1ZjEuCisKK0ZpeGluZyBieSBjb252ZXJ0aW5nIHRoZSB0eXBlIG9mIHNpemUgdG8gc2l6ZV90LgorCitDQzogYWRkcmVzc0BoaWRkZW4KK1JlcG9ydGVkLWJ5OiBEYW5pZWwgU2hhcGlyYSA8YWRkcmVzc0BoaWRkZW4+CitSZXZpZXdlZC1ieTogTWljaGFlbCBTLiBUc2lya2luIDxhZGRyZXNzQGhpZGRlbj4KK1NpZ25lZC1vZmYtYnk6IEphc29uIFdhbmcgPGFkZHJlc3NAaGlkZGVuPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOC0wOS9tc2cwMzI3My5odG1sXQorCitDVkU6IENWRS0yMDE4LTE3OTU4CisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBody9uZXQvbmUyMDAwLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvbmV0L25lMjAwMC5jIGIvaHcvbmV0L25lMjAwMC5jCitpbmRleCAwN2Q3OWUzLi44Njk1MThlIDEwMDY0NAorLS0tIGEvaHcvbmV0L25lMjAwMC5jCisrKysgYi9ody9uZXQvbmUyMDAwLmMKK0BAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIGludCBuZTIwMDBfYnVmZmVyX2Z1bGwoTkUyMDAwU3RhdGUgKnMpCisgc3NpemVfdCBuZTIwMDBfcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemVfKQorIHsKKyAgICAgTkUyMDAwU3RhdGUgKnMgPSBxZW11X2dldF9uaWNfb3BhcXVlKG5jKTsKKy0gICAgaW50IHNpemUgPSBzaXplXzsKKysgICAgc2l6ZV90IHNpemUgPSBzaXplXzsKKyAgICAgdWludDhfdCAqcDsKKyAgICAgdW5zaWduZWQgaW50IHRvdGFsX2xlbiwgbmV4dCwgYXZhaWwsIGxlbiwgaW5kZXgsIG1jYXN0X2lkeDsKKyAgICAgdWludDhfdCBidWYxWzYwXTsKK0BAIC0xODIsNyArMTgyLDcgQEAgc3NpemVfdCBuZTIwMDBfcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemVfKQorICAgICAgICAgeyAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmIH07CisgCisgI2lmIGRlZmluZWQoREVCVUdfTkUyMDAwKQorLSAgICBwcmludGYoIk5FMjAwMDogcmVjZWl2ZWQgbGVuPSVkXG4iLCBzaXplKTsKKysgICAgcHJpbnRmKCJORTIwMDA6IHJlY2VpdmVkIGxlbj0lenVcbiIsIHNpemUpOworICNlbmRpZgorIAorICAgICBpZiAocy0+Y21kICYgRTgzOTBfU1RPUCB8fCBuZTIwMDBfYnVmZmVyX2Z1bGwocykpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNzk2Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNzk2Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGJmZDgxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE3OTYyLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gMjBhYmU0NDNhZDk0NjRiMThhYzQ5NGY3MWY3ZDUzZjE5ZWUzNzQ4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE1IE9jdCAyMDE4IDE2OjM4OjA4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJ0bDgxMzk6IGZpeCBwb3NzaWJsZSBvdXQgb2YgYm91bmQgYWNjZXNzCisKK0luIHJ0bDgxMzlfZG9fcmVjZWl2ZSgpLCB3ZSB0cnkgdG8gYXNzaWduIHNpemVfIHRvIHNpemUgd2hpY2ggY29udmVydHMKK2Zyb20gc2l6ZV90IHRvIGludGVnZXIuIFRoaXMgd2lsbCBjYXVzZSB0cm91YmxlcyB3aGVuIHNpemVfIGlzIGdyZWF0ZXIKK0lOVF9NQVgsIHRoaXMgd2lsbCBsZWFkIGEgbmVnYXRpdmUgdmFsdWUgaW4gc2l6ZSBhbmQgaXQgY2FuIHRoZW4gcGFzcwordGhlIGNoZWNrIG9mIHNpemUgPCBNSU5fQlVGX1NJWkUgd2hpY2ggbWF5IGxlYWQgb3V0IG9mIGJvdW5kIGFjY2VzcyBvZgorZm9yIGJvdGggYnVmIGFuZCBidWYxLgorCitGaXhpbmcgYnkgY29udmVydGluZyB0aGUgdHlwZSBvZiBzaXplIHRvIHNpemVfdC4KKworQ0M6IGFkZHJlc3NAaGlkZGVuCitSZXBvcnRlZC1ieTogRGFuaWVsIFNoYXBpcmEgPGFkZHJlc3NAaGlkZGVuPgorUmV2aWV3ZWQtYnk6IE1pY2hhZWwgUy4gVHNpcmtpbiA8YWRkcmVzc0BoaWRkZW4+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxhZGRyZXNzQGhpZGRlbj4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTgtMDkvbXNnMDMyNjkuaHRtbF0KKworQ1ZFOiBDVkUtMjAxOC0xNzk2MgorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvbmV0L3J0bDgxMzkuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvbmV0L3J0bDgxMzkuYyBiL2h3L25ldC9ydGw4MTM5LmMKK2luZGV4IDQ2ZGFhMTYuLjIzNDJhMDkgMTAwNjQ0CistLS0gYS9ody9uZXQvcnRsODEzOS5jCisrKysgYi9ody9uZXQvcnRsODEzOS5jCitAQCAtODE3LDcgKzgxNyw3IEBAIHN0YXRpYyBzc2l6ZV90IHJ0bDgxMzlfZG9fcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90CisgICAgIFJUTDgxMzlTdGF0ZSAqcyA9IHFlbXVfZ2V0X25pY19vcGFxdWUobmMpOworICAgICBQQ0lEZXZpY2UgKmQgPSBQQ0lfREVWSUNFKHMpOworICAgICAvKiBzaXplIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBwYXNzZWQgdG8gdGhlIGRyaXZlciAqLworLSAgICBpbnQgc2l6ZSA9IHNpemVfOworKyAgICBzaXplX3Qgc2l6ZSA9IHNpemVfOworICAgICBjb25zdCB1aW50OF90ICpkb3QxcV9idWYgPSBOVUxMOworIAorICAgICB1aW50MzJfdCBwYWNrZXRfaGVhZGVyID0gMDsKK0BAIC04MjYsNyArODI2LDcgQEAgc3RhdGljIHNzaXplX3QgcnRsODEzOV9kb19yZWNlaXZlKE5ldENsaWVudFN0YXRlICpuYywgY29uc3QgdWludDhfdCAqYnVmLCBzaXplX3QKKyAgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgYnJvYWRjYXN0X21hY2FkZHJbNl0gPQorICAgICAgICAgeyAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmIH07CisgCistICAgIERQUklOVEYoIj4+PiByZWNlaXZlZCBsZW49JWRcbiIsIHNpemUpOworKyAgICBEUFJJTlRGKCI+Pj4gcmVjZWl2ZWQgbGVuPSV6dVxuIiwgc2l6ZSk7CisgCisgICAgIC8qIHRlc3QgaWYgYm9hcmQgY2xvY2sgaXMgc3RvcHBlZCAqLworICAgICBpZiAoIXMtPmNsb2NrX2VuYWJsZWQpCitAQCAtMTAzNSw3ICsxMDM1LDcgQEAgc3RhdGljIHNzaXplX3QgcnRsODEzOV9kb19yZWNlaXZlKE5ldENsaWVudFN0YXRlICpuYywgY29uc3QgdWludDhfdCAqYnVmLCBzaXplX3QKKyAKKyAgICAgICAgIGlmIChzaXplKzQgPiByeF9zcGFjZSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBEUFJJTlRGKCJDKyBSeCBtb2RlIDogZGVzY3JpcHRvciAlZCBzaXplICVkIHJlY2VpdmVkICVkICsgNFxuIiwKKysgICAgICAgICAgICBEUFJJTlRGKCJDKyBSeCBtb2RlIDogZGVzY3JpcHRvciAlZCBzaXplICVkIHJlY2VpdmVkICV6dSArIDRcbiIsCisgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IsIHJ4X3NwYWNlLCBzaXplKTsKKyAKKyAgICAgICAgICAgICBzLT5JbnRyU3RhdHVzIHw9IFJ4T3ZlcmZsb3c7CitAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgc3RhdGljIHNzaXplX3QgcnRsODEzOV9kb19yZWNlaXZlKE5ldENsaWVudFN0YXRlICpuYywgY29uc3QgdWludDhfdCAqYnVmLCBzaXplX3QKKyAgICAgICAgIGlmIChhdmFpbCAhPSAwICYmIFJYX0FMSUdOKHNpemUgKyA4KSA+PSBhdmFpbCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBEUFJJTlRGKCJyeCBvdmVyZmxvdzogcnggYnVmZmVyIGxlbmd0aCAlZCBoZWFkIDB4JTA0eCAiCistICAgICAgICAgICAgICAgICJyZWFkIDB4JTA0eCA9PT0gYXZhaWxhYmxlIDB4JTA0eCBuZWVkIDB4JTA0eFxuIiwKKysgICAgICAgICAgICAgICAgInJlYWQgMHglMDR4ID09PSBhdmFpbGFibGUgMHglMDR4IG5lZWQgMHglMDR6eFxuIiwKKyAgICAgICAgICAgICAgICAgcy0+UnhCdWZmZXJTaXplLCBzLT5SeEJ1ZkFkZHIsIHMtPlJ4QnVmUHRyLCBhdmFpbCwgc2l6ZSArIDgpOworIAorICAgICAgICAgICAgIHMtPkludHJTdGF0dXMgfD0gUnhPdmVyZmxvdzsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE3OTYzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE3OTYzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NGNkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTc5NjMucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBlNWZmNzJhODAwNWRkMWQ5YzBmNjNmOGE5Y2M0Mjk4ZGY1YmI3NTUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTUgT2N0IDIwMTggMTY6Mzk6NDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcGNuZXQ6IGZpeCBwb3NzaWJsZSBidWZmZXIgb3ZlcmZsb3cKKworSW4gcGNuZXRfcmVjZWl2ZSgpLCB3ZSB0cnkgdG8gYXNzaWduIHNpemVfIHRvIHNpemUgd2hpY2ggY29udmVydHMgZnJvbQorc2l6ZV90IHRvIGludGVnZXIuIFRoaXMgd2lsbCBjYXVzZSB0cm91YmxlcyB3aGVuIHNpemVfIGlzIGdyZWF0ZXIKK0lOVF9NQVgsIHRoaXMgd2lsbCBsZWFkIGEgbmVnYXRpdmUgdmFsdWUgaW4gc2l6ZSBhbmQgaXQgY2FuIHRoZW4gcGFzcwordGhlIGNoZWNrIG9mIHNpemUgPCBNSU5fQlVGX1NJWkUgd2hpY2ggbWF5IGxlYWQgb3V0IG9mIGJvdW5kIGFjY2VzcworZm9yIGJvdGggYnVmIGFuZCBidWYxLgorCitGaXhpbmcgYnkgY29udmVydGluZyB0aGUgdHlwZSBvZiBzaXplIHRvIHNpemVfdC4KKworQ0M6IGFkZHJlc3NAaGlkZGVuCitSZXBvcnRlZC1ieTogRGFuaWVsIFNoYXBpcmEgPGFkZHJlc3NAaGlkZGVuPgorUmV2aWV3ZWQtYnk6IE1pY2hhZWwgUy4gVHNpcmtpbiA8YWRkcmVzc0BoaWRkZW4+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxhZGRyZXNzQGhpZGRlbj4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTgtMDkvbXNnMDMyNjguaHRtbF0KKworQ1ZFOiBDVkUtMjAxOC0xNzk2MworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvbmV0L3BjbmV0LmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvbmV0L3BjbmV0LmMgYi9ody9uZXQvcGNuZXQuYworaW5kZXggMGM0NDU1NC4uZDliYTA0YiAxMDA2NDQKKy0tLSBhL2h3L25ldC9wY25ldC5jCisrKysgYi9ody9uZXQvcGNuZXQuYworQEAgLTk4OCwxNCArOTg4LDE0IEBAIHNzaXplX3QgcGNuZXRfcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemVfKQorICAgICB1aW50OF90IGJ1ZjFbNjBdOworICAgICBpbnQgcmVtYWluaW5nOworICAgICBpbnQgY3JjX2VyciA9IDA7CistICAgIGludCBzaXplID0gc2l6ZV87CisrICAgIHNpemVfdCBzaXplID0gc2l6ZV87CisgCisgICAgIGlmIChDU1JfRFJYKHMpIHx8IENTUl9TVE9QKHMpIHx8IENTUl9TUE5EKHMpIHx8ICFzaXplIHx8CisgICAgICAgICAoQ1NSX0xPT1AocykgJiYgIXMtPmxvb3B0ZXN0KSkgeworICAgICAgICAgcmV0dXJuIC0xOworICAgICB9CisgI2lmZGVmIFBDTkVUX0RFQlVHCistICAgIHByaW50ZigicGNuZXRfcmVjZWl2ZSBzaXplPSVkXG4iLCBzaXplKTsKKysgICAgcHJpbnRmKCJwY25ldF9yZWNlaXZlIHNpemU9JXp1XG4iLCBzaXplKTsKKyAjZW5kaWYKKyAKKyAgICAgLyogaWYgdG9vIHNtYWxsIGJ1ZmZlciwgdGhlbiBleHBhbmQgaXQgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTc1NTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtNzU1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkyM2QxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtNzU1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gMmE4ZmNkMTE5ZWI3YzZiYjM4MzdmYzM2NjllYjFiMmRmYjMxZGFmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2sgU2Nod2FydHogPGphY2suc2Nod2FydHpAb3JhY2xlLmNvbT4KLURhdGU6IFRodSwgMjEgRGVjIDIwMTcgMDk6MjU6MTUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbXVsdGlib290OiBic3NfZW5kX2FkZHIgY2FuIGJlIHplcm8KLQotVGhlIG11bHRpYm9vdCBzcGVjIChodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dydWIvbWFudWFsL211bHRpYm9vdC8pLAotc2VjdGlvbiAzLjEuMywgYWxsb3dzIGZvciBic3NfZW5kX2FkZHIgdG8gYmUgemVyby4KLQotQSB6ZXJvIGJzc19lbmRfYWRkciBzaWduaWZpZXMgdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLgotCi1DVkU6IENWRS0yMDE4LTc1NTAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0ZGlmZjtoPTJhOGZjZDExOWViN2M2YmIzODM3ZmMzNjY5ZWIxYjJkZmIzMWRhZjhdCi0KLVN1Z2dlc3RlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphY2sgU2Nod2FydHogPGphY2suc2Nod2FydHpAb3JhY2xlLmNvbT4KLVJldmlld2VkLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgotUmV2aWV3ZWQtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotU2lnbmVkLW9mZi1ieTogS2V2aW4gV29sZiA8a3dvbGZAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGh3L2kzODYvbXVsdGlib290LmMgfCAxOCArKysrKysrKysrLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L2kzODYvbXVsdGlib290LmMgYi9ody9pMzg2L211bHRpYm9vdC5jCi1pbmRleCA0NmQ5YzY4YmY1Li5iYjhkOGU0NjI5IDEwMDY0NAotLS0tIGEvaHcvaTM4Ni9tdWx0aWJvb3QuYwotKysrIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYwotQEAgLTIzMywxMiArMjMzLDYgQEAgaW50IGxvYWRfbXVsdGlib290KEZXQ2ZnU3RhdGUgKmZ3X2NmZywKLSAgICAgICAgIG1oX2VudHJ5X2FkZHIgPSBsZGxfcChoZWFkZXIraSsyOCk7Ci0gCi0gICAgICAgICBpZiAobWhfbG9hZF9lbmRfYWRkcikgewotLSAgICAgICAgICAgIGlmIChtaF9ic3NfZW5kX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLS0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2Jzc19lbmRfYWRkciBhZGRyZXNzXG4iKTsKLS0gICAgICAgICAgICAgICAgZXhpdCgxKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBtaF9ic3NfZW5kX2FkZHIgLSBtaF9sb2FkX2FkZHI7Ci0tCi0gICAgICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLSAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2xvYWRfZW5kX2FkZHIgYWRkcmVzc1xuIik7Ci0gICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci1AQCAtMjQ5LDggKzI0MywxNiBAQCBpbnQgbG9hZF9tdWx0aWJvb3QoRldDZmdTdGF0ZSAqZndfY2ZnLAotICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQga2VybmVsX2ZpbGVfc2l6ZVxuIik7Ci0gICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0ga2VybmVsX2ZpbGVfc2l6ZSAtIG1iX2tlcm5lbF90ZXh0X29mZnNldDsKLS0gICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtYl9rZXJuZWxfc2l6ZTsKLSsgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBrZXJuZWxfZmlsZV9zaXplIC0gbWJfa2VybmVsX3RleHRfb2Zmc2V0OwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKG1oX2Jzc19lbmRfYWRkcikgewotKyAgICAgICAgICAgIGlmIChtaF9ic3NfZW5kX2FkZHIgPCAobWhfbG9hZF9hZGRyICsgbWJfbG9hZF9zaXplKSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfYnNzX2VuZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgICAgICBleGl0KDEpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBtYl9rZXJuZWxfc2l6ZSA9IG1oX2Jzc19lbmRfYWRkciAtIG1oX2xvYWRfYWRkcjsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBtYl9sb2FkX3NpemU7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICAvKiBWYWxpZCBpZiBtaF9mbGFncyBzZXRzIE1VTFRJQk9PVF9IRUFERVJfSEFTX1ZCRS4KLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDQ3ZGM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1yZXF1aXJlIHFlbXUuaW5jCi0KLWluaGVyaXQgcHRlc3QKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDFjMjhkMmNmODZlMTVhMzdmYTQ3ZTE1YTcyZmJhYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjtlbmRsaW5lPTI0O21kNT1jMDRkZWY3YWUzODg1MGU3ZDNlZjU0ODU4ODE1OTkxMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd2lraS5xZW11LXByb2plY3Qub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcG93ZXJwY19yb20uYmluIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2RsLmMtYWxsb3ctdXNlci10by1kaXNhYmxlLXBvaW50ZXItZ3JhYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcWVtdS1MaW1pdC1wYXRocy1zZWFyY2hlZC1kdXJpbmctdXNlci1tb2RlLWVtdWxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1tZW1mZC1maXgtY29uZmlndXJlLXRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtcHMyLWNoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ1ZFLTIwMTgtMTE4MDYtUUVNVS1zbGlycC1oZWFwLWJ1ZmZlci1vdmVyZmxvdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC03NTUwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEyNjE3LnBhdGNoIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCtcLi4qKVwudGFyIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDE0LWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDE1LWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjFjZjg2MmI2MDA3ZWJhNGFjOTgyNDc3NzZhZjJlMjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDlkZjIyMTNjZWVkMzJlOTFkYWI3YmM5ZGQxOWMxYWY4M2Y5MWJhNzJjN2FlZWY3NjA1ZGZhYWY4MTczMmNjYiIKLQotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBQcmV2ZW50IFFBIHdhcm5pbmdzIGFib3V0IGluc3RhbGxlZCAke2xvY2Fsc3RhdGVkaXJ9L3J1bgotICAgIGlmIFsgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIF07IHRoZW4gcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuOyBmaQotICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9wb3dlcnBjX3JvbS5iaW4gJHtEfSR7ZGF0YWRpcn0vcWVtdQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW1ha2UgYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXJMICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KLQlmaW5kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIC10eXBlIGYgLW5hbWUgIiouW1NzaGNvZF0iIHwgeGFyZ3MgLWkgcm0gLXJmIHt9Ci0KLQljcCAke1N9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLQkjIERvbid0IGNoZWNrIHRoZSBmaWxlIGdlbnJlYXRlZCBieSBjb25maWd1cmUKLQlzZWQgLWkgLWUgJy93aWxkY2FyZCBjb25maWctaG9zdC5tYWsvZCcgXAotCSAgICAgICAtZSAnJCB7L2VuZGlmL2R9JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMy4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMy4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2NTQ4YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8zLjAuMC5iYgpAQCAtMCwwICsxLDYwIEBACityZXF1aXJlIHFlbXUuaW5jCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDFjMjhkMmNmODZlMTVhMzdmYTQ3ZTE1YTcyZmJhYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjtlbmRsaW5lPTI0O21kNT1jMDRkZWY3YWUzODg1MGU3ZDNlZjU0ODU4ODE1OTkxMyIKKworU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLnFlbXUub3JnLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcG93ZXJwY19yb20uYmluIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2RsLmMtYWxsb3ctdXNlci10by1kaXNhYmxlLXBvaW50ZXItZ3JhYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtcWVtdS1MaW1pdC1wYXRocy1zZWFyY2hlZC1kdXJpbmctdXNlci1tb2RlLWVtdWxhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1SZXZlcnQtbGludXgtdXNlci1maXgtbW1hcC1tdW5tYXAtbXByb3RlY3QtbXJlbWFwLXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE1NzQ2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE3OTU4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE3OTYyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE3OTYzLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMy1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjZhNWM4ZGY1ODM0MDZlYTI0ZWYyNWIyMzljMzI0M2UwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkN2FmNjRmZThiZDVlYTVjM2JkZjE3MTMxYThiODU4NDkxYmNjZTFlZTM4Mzk0MjVhNmQ5MWZiODIxYjU3MTMiCisKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwltYWtlIGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQorCisJY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJIyBEb24ndCBjaGVjayB0aGUgZmlsZSBnZW5yZWF0ZWQgYnkgY29uZmlndXJlCisJc2VkIC1pIC1lICcvd2lsZGNhcmQgY29uZmlnLWhvc3QubWFrL2QnIFwKKwkgICAgICAgLWUgJyQgey9lbmRpZi9kfScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgppbmRleCBjOTgzZmJhLi40YWFkYTUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtMTMsMzggKzEzLDI2IEBACiBkb19pbnN0YWxsICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwogCi0JZWNobyAiIyEvYmluL3NoIiA+ICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3FlbXV3cmFwcGVyCiAJcWVtdV9iaW5hcnk9JHtAcWVtdV90YXJnZXRfYmluYXJ5KGQpfQotCXFlbXVfb3B0aW9ucz0nJHtRRU1VX09QVElPTlN9JwotCWVjaG8gIiRxZW11X2JpbmFyeSAkcWVtdV9vcHRpb25zIFwiXCRAXCIiID4+ICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3FlbXV3cmFwcGVyCi0JZmFsbGJhY2tfcWVtdV9iaW49Ci0JY2FzZSAkcWVtdV9iaW5hcnkgaW4KLQkJInFlbXUtaTM4NiIpCi0JCQlmYWxsYmFja19xZW11X2Jpbj1xZW11LXg4Nl82NAotCQkJOzsKLQkJInFlbXUteDg2XzY0IikKLQkJCWZhbGxiYWNrX3FlbXVfYmluPXFlbXUtaTM4NgotCQkJOzsKLQkJKikKLQkJCTs7Ci0JZXNhYworCXFlbXVfb3B0aW9ucz0nJHtRRU1VX09QVElPTlN9IC1FIExEX0xJQlJBUllfUEFUSD0kRCR7bGliZGlyfTokRCR7YmFzZV9saWJkaXJ9JwogCi0JaWYgWyAtbiAiJGZhbGxiYWNrX3FlbXVfYmluIiBdOyB0aGVuCisJY2F0ID4+ICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LyR7TUxQUkVGSVh9cWVtdXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3NldCAteAogCi0JCWNhdCA+PiAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9xZW11d3JhcHBlciA8PCBFT0YKLXJjPVwkPwotaWYgWyBcJHJjID0gMjU1IF07IHRoZW4KLQkkZmFsbGJhY2tfcWVtdV9iaW4gIlwkQCIKLQlyYz1cJD8KK2lmIFsgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsICdUcnVlJywgJ0ZhbHNlJywgZCl9ID0gRmFsc2UgXTsgdGhlbgorICAgICAgICBlY2hvICJxZW11d3JhcHBlcjogcWVtdSB1c2VybW9kZSBpcyBub3Qgc3VwcG9ydGVkIgogZmkKLWV4aXQgXCRyYworCisKKyRxZW11X2JpbmFyeSAkcWVtdV9vcHRpb25zICJcJEAiCiBFT0YKIAotCWZpCi0KLQljaG1vZCAreCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9xZW11d3JhcHBlcgorCWNobW9kICt4ICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LyR7TUxQUkVGSVh9cWVtdXdyYXBwZXIKIH0KIAogU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LmluYwppbmRleCBjN2JiNzQxLi40OGVkOWJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQuaW5jCkBAIC0xNiwyNCArMTYsOCBAQAogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKIAotRVhUUkFfT0VDT05GX2RhcndpbiArPSAiLS13aXRob3V0LWRhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdldG9wdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KIENMRUFOQlJPS0VOID0gIjEiCiAKLVBBQ0tBR0VTICs9ICJndWFyZHMgZ3VhcmRzLWRvYyIKLUZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfS9xdWlsdCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vcXVpbHQgJHtsaWJkaXJ9L3F1aWx0IgotRklMRVNfZ3VhcmRzID0gIiR7YmluZGlyfS9ndWFyZHMiCi1GSUxFU18ke1BOfS1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcXVpbHQuMSAke2RvY2Rpcn0vJHtCUE59IgotRklMRVNfZ3VhcmRzLWRvYyA9ICIke21hbmRpcn0vbWFuMS9ndWFyZHMuMSIKLQotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKLQotRVhUUkFfT0VfTUFLRV9BUkdTX2RhcndpbiA/PSAiIgotRVhUUkFfT0VfTUFLRV9BUkdTID89ICJCVUlMRF9ST09UPSR7RH0iCi0KIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGVybD0nJHtVU1JCSU5QQVRIfS9lbnYgcGVybCcgLS13aXRoLXBhdGNoPXBhdGNoIgogCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9CQVNIPS9iaW4vYmFzaCIKQEAgLTQ5LDkgKzMzLDkgQEAKIAlzZWQgLWUgJ3MsXkNPTVBBVF9TWU1MSU5LUy4qOj0uKixDT01QQVRfU1lNTElOS1MJOj0sJyAtaSAke1N9L01ha2VmaWxlCiB9CiAKLSMgcXVpbHQgaWdub3JlcyBERVNURElSCisjIHF1aWx0IE1ha2VmaWxlcyBpbnN0YWxsIHRvIEJVSUxEX1JPT1QgaW5zdGVhZCBvZiBERVNURElSCiBkb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICR7RVhUUkFfT0VfTUFLRV9BUkdTfSBpbnN0YWxsCisJb2VfcnVubWFrZSAnQlVJTERfUk9PVD0ke0R9JyBpbnN0YWxsCiAJIyBjbGVhbnVwIHVucGFja2FnZWQgZmlsZXMKIAlybSAtcmYgJHtEfS8ke2RhdGFkaXJ9L2VtYWNzCiB9CkBAIC02OSw2ICs1MywxNSBAQAogCWNwICR7V09SS0RJUn0vdGVzdC5zaCAke0R9JHtQVEVTVF9QQVRIfQogfQogCitQQUNLQUdFUyArPSAiZ3VhcmRzIGd1YXJkcy1kb2MiCisKK0ZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfS9xdWlsdCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vcXVpbHQgJHtsaWJkaXJ9L3F1aWx0IgorRklMRVNfZ3VhcmRzID0gIiR7YmluZGlyfS9ndWFyZHMiCitGSUxFU18ke1BOfS1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcXVpbHQuMSAke2RvY2Rpcn0vJHtCUE59IgorRklMRVNfZ3VhcmRzLWRvYyA9ICIke21hbmRpcn0vbWFuMS9ndWFyZHMuMSIKKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIm1ha2UgZmlsZSBzZWQgZ2F3ayBkaWZmdXRpbHMgZmluZHV0aWxzIGVkIHBlcmwgXAogICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIFwKICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaAppbmRleCA1NjA0Y2I5Li44MmU3MzI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGM4MmMxOWRjNTgzODQzYjFhOTc1ZjJlM2YyZTE1MTY1NmE2ZjM3N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJkMDhlYjBhZTEzMTJmMzQ3ZjQ5OTQ5NDgxZGFhN2M5MjM3NTJkZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMjcgRmViIDIwMTcgMDk6NDM6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xNF0gRG8gbm90IGhhcmRjb2RlICJsaWIvcnBtIiBhcyB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBoYXJkY29kZSAibGliL3JwbSIgYXMgdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvcgogIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgbWFjcm9zLgogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzI2M10KQEAgLTE0LDEwICsxNCwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3MTU1ZDlmMDAuLjIxYjk1YWU1ZiAxMDA2NDQKK2luZGV4IDA5YWY3YzQuLjliZDY5MDMgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGVsc2UKK0BAIC0xMDU1LDcgKzEwNTUsNyBAQCBlbHNlCiAgICAgIHVzcnByZWZpeD0kcHJlZml4CiAgZmkKICAKQEAgLTI3LDEwICsyNywxMCBAQAogIAogIEFDX1NVQlNUKE9CSkRVTVApCiBkaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCBkMDg2MjQ4NTYuLjY4YTk3MmYxZSAxMDA2NDQKK2luZGV4IGEzYWE3YTkuLjYyY2VlNWMgMTAwNjQ0CiAtLS0gYS9tYWNyb3MuaW4KICsrKyBiL21hY3Jvcy5pbgotQEAgLTk1NCw3ICs5NTQsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS5cCitAQCAtOTcwLDcgKzk3MCw3IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcgdGhpcyBwYWNrYWdlLlwKICAlX3NoYXJlZHN0YXRlZGlyCSV7X3ByZWZpeH0vY29tCiAgJV9sb2NhbHN0YXRlZGlyCQkle19wcmVmaXh9L3ZhcgogICVfbGliCQkJbGliCkBAIC00MCw3ICs0MCw3IEBACiAgJV9pbmZvZGlyCQkle19kYXRhZGlyfS9pbmZvCiAgJV9tYW5kaXIJCSV7X2RhdGFkaXJ9L21hbgogZGlmZiAtLWdpdCBhL3JwbS5hbSBiL3JwbS5hbQotaW5kZXggNTEyMjU4OTJkLi5lMGM4MzRkMzcgMTAwNjQ0CitpbmRleCA4MmMyZDdjLi42MzQxYjUxIDEwMDY0NAogLS0tIGEvcnBtLmFtCiArKysgYi9ycG0uYW0KIEBAIC0xLDEwICsxLDEwIEBACkBAIC01NSw3ICs1NSw0IEBACiArcnBtY29uZmlnZGlyID0gJChsaWJkaXIpL3JwbQogIAogICMgTGlidG9vbCB2ZXJzaW9uIChjdXJyZW50LXJldmlzaW9uLWFnZSkgZm9yIGFsbCBvdXIgbGlicmFyaWVzCi0gcnBtX3ZlcnNpb25faW5mbyA9IDg6MTowCi0tLSAKLTIuMTUuMQotCisgcnBtX3ZlcnNpb25faW5mbyA9IDk6MDoxCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaAppbmRleCBiZjI0ZDQzLi40MWNkZjZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2gKQEAgLTEsMjUgKzEsMjMgQEAKLUZyb20gZmZiNTMwMWE4NTk0MTQwYWQ3YTU4YmMwZjIwNTNiZThjYTJiMjk0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTY3NGI5Y2M3YWY0NDhkN2M2NzQ4YmMxNjNiZjM3ZGMxNGE1N2YwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAyMCBKYW4gMjAxNyAxMzozMjowNiArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IHJlc2V0IHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBydW5uaW5nCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCByZXNldCB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgcnVubmluZwogIHNjcmlwdGxldHMuCiAKIFdlIGFkZCBsb3RzIG9mIG5hdGl2ZSBzdHVmZiBpbnRvIGl0IGFuZCBzY3JpcHRsZXRzIHJlbHkgb24gdGhhdC4KIAotQWxzbyBuZWVkIHRvIHJlbW92ZSB0aGUgeHggdGVzdCBsYXRlciBpbiB0aGUgZnVuY3Rpb24gc2luY2UgdGhlCi12YWx1ZSBjb3VsZCBub3cgYmUgdXNlZCB1bi1pbml0aWFsaXNlZC4KLQogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGxpYi9ycG1zY3JpcHQuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpYi9ycG1zY3JpcHQuYyBiL2xpYi9ycG1zY3JpcHQuYwotaW5kZXggOTJmOTQ5ZmEyLi43YzFhYTc1YTggMTAwNjQ0CitpbmRleCA2YTMxZTBkLi4yYjBlNDM4IDEwMDY0NAogLS0tIGEvbGliL3JwbXNjcmlwdC5jCiArKysgYi9saWIvcnBtc2NyaXB0LmMKLUBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQgZG9TY3JpcHRFeGVjKEFSR1ZfY29uc3RfdCBhcmd2LCBBUkdWX2NvbnN0X3QgcHJlZml4ZXMsCitAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXJndiwgQVJHVl9jb25zdF90IHByZWZpeGVzLAogIAlpZiAoaXBhdGggJiYgaXBhdGhbNV0gIT0gJyUnKQogIAkgICAgcGF0aCA9IGlwYXRoOwogIApAQCAtMjgsMTMgKzI2LDMgQEAKICAJZnJlZShpcGF0aCk7CiAgICAgIH0KICAKLUBAIC0yMDYsOSArMjA2LDcgQEAgc3RhdGljIHZvaWQgZG9TY3JpcHRFeGVjKEFSR1ZfY29uc3RfdCBhcgotIAkvKiBYWFggRG9uJ3QgbXRyYWNlIGludG8gY2hpbGRyZW4uICovCi0gCXVuc2V0ZW52KCJNQUxMT0NfQ0hFQ0tfIik7Ci0gCi0tCWlmICh4eCA9PSAwKSB7Ci0gCSAgICB4eCA9IGV4ZWN2KGFyZ3ZbMF0sIGFyZ3YpOwotLQl9Ci0gICAgIH0KLSAgICAgX2V4aXQoMTI3KTsgLyogZXhpdCAxMjcgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBiYXNoKDEpICovCi0gfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjQ0MGM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi1Gcm9tIDljM2U1ZGUzMjQwNTU0YzhlYTFiMjlkNTJlZWFkZWU0ODQwZmVmYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxNzozNzowNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gRmFjdG9yIG91dCBhbmQgdW5pZnkgc2V0dGluZyBDTE9FWEVDCi0KLUNvbW1pdCA3YTdjMzFmNSAoIlNldCBGRF9DTE9FWEVDIG9uIG9wZW5lZCBmaWxlcyBiZWZvcmUgZXhlYyBmcm9tCi1sdWEgc2NyaXB0IGlzIGNhbGxlZCIpIGNvcGllZCB0aGUgY29kZSB0aGF0IHNldHMgQ0xPRVhFQyBmbGFnIG9uIGFsbAotcG9zc2libGUgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGxpYi9ycG1zY3JpcHQuYyB0byBsdWFleHQvbHBvc2l4LmMsCi1lc3NlbnRpYWxseSBjcmVhdGluZyB0d28gY29waWVzIG9mIHRoZSBzYW1lIGNvZGUgKG1vZHVsbyBjb21tZW50cwotYW5kIHRoZSB1bnVzZWQgYXNzaWdubWVudCkuCi0KLVRoaXMgY29tbWl0IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gaXRzIG93biBmdW5jdGlvbiwgd2l0aG91dAotYW55IGNvZGUgbW9kaWZpY2F0aW9ucywgdXNpbmcgdGhlIHZlcnNpb24gZnJvbSBsdWFleHQvbHBvc2l4LmMuCi0KLVNpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KLSBsaWIvcnBtc2NyaXB0LmMgICAgICAgIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCi0gbHVhZXh0L2xwb3NpeC5jICAgICAgICB8IDEzICsrLS0tLS0tLS0tLS0KLSBycG1pby9ycG1pby5jICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIHJwbWlvL3JwbWlvX2ludGVybmFsLmggfCAgNiArKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCi1pbmRleCA3NDczODVhNWIuLmI0Y2NkMzI0NiAxMDA2NDQKLS0tLSBhL2xpYi9ycG1zY3JpcHQuYwotKysrIGIvbGliL3JwbXNjcmlwdC5jCi1AQCAtMyw3ICszLDYgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNpbmNsdWRlIDxycG0vcnBtZmlsZXV0aWwuaD4KLSAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+Ci1AQCAtMTQsNiArMTMsNyBAQAotIAotICNpbmNsdWRlICJycG1pby9ycG1sdWEuaCIKLSAjaW5jbHVkZSAibGliL3JwbXNjcmlwdC5oIgotKyNpbmNsdWRlICJycG1pby9ycG1pb19pbnRlcm5hbC5oIgotIAotICNpbmNsdWRlICJsaWIvcnBtcGx1Z2lucy5oIiAgICAgLyogcnBtIHBsdWdpbnMgaG9va3MgKi8KLSAKLUBAIC0xNzAsMjYgKzE3MCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IFNDUklQVF9QQVRIID0gIlBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3VzcgotIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXJndiwgQVJHVl9jb25zdF90IHByZWZpeGVzLAotIAkJCUZEX3Qgc2NyaXB0RmQsIEZEX3Qgb3V0KQotIHsKLS0gICAgaW50IGZsYWc7Ci0tICAgIGludCBmZG5vOwotICAgICBpbnQgeHg7Ci0tICAgIGludCBvcGVuX21heDsKLSAKLSAgICAgLyogU0lHUElQRSBpcyBpZ25vcmVkIGluIHJwbSwgcmVzZXQgdG8gZGVmYXVsdCBmb3IgdGhlIHNjcmlwdGxldCAqLwotICAgICAodm9pZCkgc2lnbmFsKFNJR1BJUEUsIFNJR19ERkwpOwotIAotLSAgICAvKiBYWFggRm9yY2UgRkRfQ0xPRVhFQyBvbiBhbGwgaW5oZXJpdGVkIGZkbm8ncy4gKi8KLS0gICAgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7Ci0tICAgIGlmIChvcGVuX21heCA9PSAtMSkgewotLQlvcGVuX21heCA9IDEwMjQ7Ci0tICAgIH0KLS0gICAgZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKLS0JZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOwotLQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQotLQkgICAgY29udGludWU7Ci0tCXh4ID0gZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7Ci0tCS8qIFhYWCBXMkRPPyBkZWJ1ZyBtc2cgZm9yIGluaGVpcml0ZWQgZmRubyB3L28gRkRfQ0xPRVhFQyAqLwotLSAgICB9Ci0rICAgIHJwbVNldENsb3NlT25FeGVjKCk7Ci0gCi0gICAgIGlmIChzY3JpcHRGZCAhPSBOVUxMKSB7Ci0gCWludCBzZmRubyA9IEZpbGVubyhzY3JpcHRGZCk7Ci1kaWZmIC0tZ2l0IGEvbHVhZXh0L2xwb3NpeC5jIGIvbHVhZXh0L2xwb3NpeC5jCi1pbmRleCAwYTdjMjZjNzEuLjVkN2FkM2M4NyAxMDA2NDQKLS0tLSBhL2x1YWV4dC9scG9zaXguYwotKysrIGIvbHVhZXh0L2xwb3NpeC5jCi1AQCAtMjcsNiArMjcsNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8dXRpbWUuaD4KLSAjaW5jbHVkZSA8cnBtL3JwbXV0aWwuaD4KLSsjaW5jbHVkZSAicnBtaW8vcnBtaW9faW50ZXJuYWwuaCIKLSAKLSAjZGVmaW5lIE1ZTkFNRQkJInBvc2l4IgotICNkZWZpbmUgTVlWRVJTSU9OCU1ZTkFNRSAiIGxpYnJhcnkgZm9yICIgTFVBX1ZFUlNJT04gIiAvIE5vdiAyMDAzIgotQEAgLTMzNSwyMSArMzM2LDExIEBAIHN0YXRpYyBpbnQgUGV4ZWMobHVhX1N0YXRlICpMKQkJCS8qKiBleGVjKHBhdGgsW2FyZ3NdKSAqLwotIAljb25zdCBjaGFyICpwYXRoID0gbHVhTF9jaGVja3N0cmluZyhMLCAxKTsKLSAJaW50IGksbj1sdWFfZ2V0dG9wKEwpOwotIAljaGFyICoqYXJndjsKLS0JaW50IGZsYWcsIGZkbm8sIG9wZW5fbWF4OwotIAotIAlpZiAoIWhhdmVfZm9ya2VkKQotIAkgICAgcmV0dXJuIGx1YUxfZXJyb3IoTCwgImV4ZWMgbm90IHBlcm1pdHRlZCBpbiB0aGlzIGNvbnRleHQiKTsKLSAKLS0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7Ci0tCWlmIChvcGVuX21heCA9PSAtMSkgewotLQkgICAgb3Blbl9tYXggPSAxMDI0OwotLQl9Ci0tCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7Ci0tCSAgICBmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7Ci0tCSAgICBpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQotLQkJY29udGludWU7Ci0tCSAgICBmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKLS0JfQotKwlycG1TZXRDbG9zZU9uRXhlYygpOwotIAotIAlhcmd2ID0gbWFsbG9jKChuKzEpKnNpemVvZihjaGFyKikpOwotIAlpZiAoYXJndj09TlVMTCkgcmV0dXJuIGx1YUxfZXJyb3IoTCwibm90IGVub3VnaCBtZW1vcnkiKTsKLWRpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYwotaW5kZXggYzdjYmMzMmFhLi5lYTExMWQyZWMgMTAwNjQ0Ci0tLS0gYS9ycG1pby9ycG1pby5jCi0rKysgYi9ycG1pby9ycG1pby5jCi1AQCAtMTc1OSwzICsxNzU5LDE5IEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKQotIAotICAgICByZXR1cm4gY3R4OwotIH0KLSsKLSt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCi0rewotKwlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7Ci0rCi0rCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOwotKwlpZiAob3Blbl9tYXggPT0gLTEpIHsKLSsJCW9wZW5fbWF4ID0gMTAyNDsKLSsJfQotKwlmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgewotKwkJZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOwotKwkJaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKLSsJCQljb250aW51ZTsKLSsJCWZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOwotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmggYi9ycG1pby9ycG1pb19pbnRlcm5hbC5oCi1pbmRleCBmYmVkMTgzYjAuLjM3MGNiZGM3NSAxMDA2NDQKLS0tLSBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKLSsrKyBiL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKLUBAIC00MSw2ICs0MSwxMiBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCk7Ci0gaW50IHJwbWlvU2x1cnAoY29uc3QgY2hhciAqIGZuLAotICAgICAgICAgICAgICAgICB1aW50OF90ICoqIGJwLCBzc2l6ZV90ICogYmxlbnApOwotIAotKy8qKgotKyAqIFNldCBjbG9zZS1vbi1leGVjIGZsYWcgZm9yIGFsbCBvcGVuZWQgZmlsZSBkZXNjcmlwdG9ycywgZXhjZXB0Ci0rICogc3RkaW4vc3Rkb3V0L3N0ZGVyci4KLSsgKi8KLSt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpOwotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIH0KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1kYnVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzFkOWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGRmYjQyMmM3NDRmZGMxODM4YWZjNDBiOGUxZjE2MWJiNDYwOTNkOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDggQXByIDIwMTggMTI6MDY6NDIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgb3B0aW9uIGZvciBkYnVzCi0KLUFkZCBvcHRpb24gZm9yIGRidXMgc28gdGhhdCB1c2VycyBjb3VsZCBjaG9vc2UgdG8gYnVpbGQgd2l0aCBkYnVzCi1vciB3aXRoIG5vIGRidXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMSArKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDRkYjE1Yzc5MDkuLjQ5M2YzOTNkMzEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk3NiwxMiArOTc2LDE1IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX3BsdWdpbnMiID0geWVzXSxbCi0gXSkKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfUExVR0lOUyxbdGVzdCAiJGVuYWJsZV9wbHVnaW5zIiA9IHllc10pCi0gCi0td2l0aF9kYnVzPW5vCi0tQVNfSUYoW3Rlc3QgIiRlbmFibGVfcGx1Z2lucyIgIT0gbm9dLFsKLStBQ19BUkdfV0lUSChbZGJ1c10sIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWRidXNdLCBbYnVpbGQgd2l0aCBkYnVzIHN1cHBvcnRdKV0sCi0rICAgICAgICAgICAgW10sCi0rICAgICAgICAgICAgW3dpdGhfZGJ1cz15ZXNdKQotKwotK0FTX0lGKFt0ZXN0ICIkd2l0aF9kYnVzIiAhPSBub10sWwotICAgUEtHX0NIRUNLX01PRFVMRVMoW0RCVVNdLAotICAgICBbZGJ1cy0xID49IDEuM10sCi0tICAgIFtBQ19ERUZJTkUoREJVUywgMSwgW0J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0P10pIHdpdGhfZGJ1cz15ZXNdLAotLSAgICBbd2l0aF9kYnVzPW5vXSkKLSsgICAgW0FDX0RFRklORShEQlVTLCAxLCBbQnVpbGQgd2l0aCBkYnVzIHN1cHBvcnQ/XSldLAotKyAgICBbQUNfTVNHX0VSUk9SKFtkYnVzIG5vdCBwcmVzZW50ICgtLXdpdGhvdXQtZGJ1cyB0byBkaXNhYmxlKV0pXSkKLSAgIEFDX1NVQlNUKERCVVNfQ0ZMQUdTKQotICAgQUNfU1VCU1QoREJVU19MSUJTKQotIF0pCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1ycG0tcnBtaW8uYy1yZXN0cmljdC12aXJ0dWFsLW1lbW9yeS11c2FnZS1pZi1saW1pdC1zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDU0Nzg1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIDAwNjZiODYyYmIzYTA5ZjM5Mjk1YWJkNWQ5NzJhNTNhYzhkYzE1NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBCZXJnaW4gPHBldGVyQGJlcmdpbmtvbnN1bHQuc2U+CitEYXRlOiBXZWQsIDE5IFNlcCAyMDE4IDE1OjEyOjMxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHJwbS9ycG1pby5jOiByZXN0cmljdCB2aXJ0dWFsIG1lbW9yeSB1c2FnZSBpZiBsaW1pdCBzZXQKKworQSBzb2x1dGlvbiB0byBhdm9pZCBPT00gc2l0dWF0aW9uIHdoZW4gdGhlIHZpcnR1YWwgbWVtb3J5IGlzIHJlc3RyaWN0ZWQKK2ZvciBhIHVzZXIgKHVsaW1pdCAtdikuIEFzIHRoZSBsem9wZW5faW50ZXJuYWwgZnVuY3Rpb24gaXMgcnVuIGluIHBhcmFsbGVsCitvbmUgaW5zdGFuY2UgcGVyIENQVSB0aHJlYWQgdGhlIGF2YWlsYWJsZSB2aXJ0dWFsIG1lbW9yeSBpcyBsaW1pdGVkIHBlcgorQ1BVIHRocmVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFttZXJnZSBvZiBtdWx0aXRocmVhZGluZyBwYXRjaGVzIHRvIHVwc3RyZWFtXQorCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBCZXJnaW4gPHBldGVyQGJlcmdpbmtvbnN1bHQuc2U+CistLS0KKyBycG1pby9ycG1pby5jIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggZTA1MWM5OC4uYjNjNTZiNiAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvLmMKKysrKyBiL3JwbWlvL3JwbWlvLmMKK0BAIC04NDUsNiArODQ1LDQwIEBAIHN0YXRpYyBMWkZJTEUgKmx6b3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICptb2RlLCBpbnQgZmQsIGludCB4eikKKyAJCX0KKyAjZW5kaWYKKyAKKysJCXN0cnVjdCBybGltaXQgdmlydHVhbF9tZW1vcnk7CisrCQlnZXRybGltaXQoUkxJTUlUX0FTLCAmdmlydHVhbF9tZW1vcnkpOworKwkJaWYgKHZpcnR1YWxfbWVtb3J5LnJsaW1fY3VyICE9IFJMSU1fSU5GSU5JVFkpIHsKKysJCQljb25zdCB1aW50NjRfdCB2aXJ0dWFsX21lbWxpbWl0ID0gdmlydHVhbF9tZW1vcnkucmxpbV9jdXI7CisrCQkJY29uc3QgdWludDY0X3QgdmlydHVhbF9tZW1saW1pdF9wZXJfY3B1X3RocmVhZCA9CisrCQkJCXZpcnR1YWxfbWVtbGltaXQgLyBsem1hX2NwdXRocmVhZHMoKTsKKysJCQl1aW50NjRfdCBtZW1vcnlfdXNhZ2VfdmlydDsKKysJCQlycG1sb2coUlBNTE9HX05PVElDRSwgIlhaOiB2aXJ0dWFsIG1lbW9yeSByZXN0cmljdGVkIHRvICVsdSBhbmQgIgorKwkJCSAgICAgICAicGVyIENQVSB0aHJlYWQgJWx1XG4iLCB2aXJ0dWFsX21lbWxpbWl0LCB2aXJ0dWFsX21lbWxpbWl0X3Blcl9jcHVfdGhyZWFkKTsKKysJCQkvKiBrZWVwIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgY29tcHJlc3Npb24gdGhyZWFkcyB1bnRpbCBtZW1vcnkKKysJCQkgICB1c2FnZSBmYWxscyBiZWxvdyB0aGUgbGltaXQgcGVyIENQVSB0aHJlYWQqLworKwkJCXdoaWxlICgobWVtb3J5X3VzYWdlX3ZpcnQgPSBsem1hX3N0cmVhbV9lbmNvZGVyX210X21lbXVzYWdlKCZtdF9vcHRpb25zKSkgPgorKwkJCSAgICAgICB2aXJ0dWFsX21lbWxpbWl0X3Blcl9jcHVfdGhyZWFkKSB7CisrCQkJCS8qIElmIG51bWJlciBvZiB0aHJlYWRzIGdvZXMgZG93biB0byB6ZXJvIGx6bWFfc3RyZWFtX2VuY29kZXIgd2lsbAorKwkJCQkgKiB3aWxsIHJldHVybiBVSU5UNjRfTUFYLiBXZSBtdXN0IGNoZWNrIGhlcmUgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcC4KKysJCQkJICogSWYgd2UgZ2V0IGludG8gc2l0dWF0aW9uIHRoYXQgb25lIHRocmVhZCByZXF1aXJlcyBtb3JlIHZpcnR1YWwgbWVtb3J5CisrCQkJCSAqIHRoYW4gYXZhaWxhYmxlIHdlIHNldCBvbmUgdGhyZWFkLCBwcmludCBlcnJvciBtZXNzYWdlIGFuZCB0cnkgYW55d2F5LiAqLworKwkJCQlpZiAoLS1tdF9vcHRpb25zLnRocmVhZHMgPT0gMCkgeworKwkJCQkJbXRfb3B0aW9ucy50aHJlYWRzID0gMTsKKysJCQkJCXJwbWxvZyhSUE1MT0dfV0FSTklORywKKysJCQkJCSAgICAgICAiWFo6IENvdWxkIG5vdCBhZGp1c3QgbnVtYmVyIG9mIHRocmVhZHMgdG8gZ2V0IGJlbG93ICIKKysJCQkJCSAgICAgICAidmlydHVhbCBtZW1vcnkgbGltaXQgJWx1LiB1c2FnZSAlbHVcbiIsCisrCQkJCQkgICAgICAgdmlydHVhbF9tZW1saW1pdF9wZXJfY3B1X3RocmVhZCwgbWVtb3J5X3VzYWdlX3ZpcnQpOworKwkJCQkJYnJlYWs7CisrCQkJCX0KKysJCQl9CisrCQkJaWYgKHRocmVhZHMgIT0gKGludCltdF9vcHRpb25zLnRocmVhZHMpCisrCQkJCXJwbWxvZyhSUE1MT0dfTk9USUNFLAorKwkJCQkgICAgICAgIlhaOiBBZGp1c3RlZCB0aGUgbnVtYmVyIG9mIHRocmVhZHMgZnJvbSAlZCB0byAlZCB0byBub3QgIgorKwkJCQkgICAgICAgImV4Y2VlZCB0aGUgbWVtb3J5IHVzYWdlIGxpbWl0IG9mICVsdSBieXRlc1xuIiwKKysJCQkJICAgICAgIHRocmVhZHMsIG10X29wdGlvbnMudGhyZWFkcywgdmlydHVhbF9tZW1saW1pdCk7CisrCisrCQl9CisrCisgCQlyZXQgPSBsem1hX3N0cmVhbV9lbmNvZGVyX210KCZsemZpbGUtPnN0cm0sICZtdF9vcHRpb25zKTsKKyAJICAgIH0KKyAjZW5kaWYKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI3ZjhlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIDVlNmYwNWNkOGRhZDZjMWVlNmJkMWU2ZTQzZjE3Njk3NmM5YzM0MTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxNzo1Mjo1NiAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gT3B0aW1pemUgcnBtU2V0Q2xvc2VPbkV4ZWMKLQotSW4gY2FzZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGVzIGxpbWl0IGlzIHNldCB0b28gaGlnaCwgYm90aAotbHVhZXh0L1BleGVjKCkgYW5kIGxpYi9kb1NjcmlwdEV4ZWMoKSBzcGVuZCB3YXkgdG9vIG11Y2ggdGltZQotdHJ5aW5nIHRvIHNldCBGRF9DTE9FWEVDIGZsYWcgZm9yIGFsbCB0aG9zZSBmaWxlIGRlc2NyaXB0b3JzLAotcmVzdWx0aW5nIGluIHNldmVyZSBpbmNyZWFzZSBvZiB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgc2F5Ci1ycG0gb3IgZG5mLgotCi1UaGlzIGJlY29tZXMgaW5jcmVhc2luZ2x5IG5vdGljZWFibGUgd2hlbiBydW5uaW5nIHdpdGggZS5nLiB1bmRlcgotRG9ja2VyLCB0aGUgcmVhc29uIGJlaW5nOgotCi0+ICQgZG9ja2VyIHJ1biBmZWRvcmEgdWxpbWl0IC1uCi0+IDEwNDg1NzYKLQotT25lIG9idmlvdXMgZml4IGlzIHRvIHVzZSBwcm9jZnMgdG8gZ2V0IHRoZSBhY3R1YWwgbGlzdCBvZiBvcGVuZWQgZmRzCi1hbmQgaXRlcmF0ZSBvdmVyIGl0LiBNeSBxdWljay1uLWRpcnR5IGJlbmNobWFyayBzaG93cyB0aGUgL3Byb2MgYXBwcm9hY2gKLWlzIGFib3V0IDEweCBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgdGhyb3VnaCBhIGxpc3Qgb2YganVzdCAxMDI0IGZkcywKLXNvIGl0J3MgYW4gaW1wcm92ZW1lbnQgZXZlbiBmb3IgZGVmYXVsdCB1bGltaXQgdmFsdWVzLgotCi1Ob3RlIHRoYXQgdGhlIG9sZCBtZXRob2QgaXMgc3RpbGwgdXNlZCBpbiBjYXNlIC9wcm9jIGlzIG5vdCBhdmFpbGFibGUuCi0KLVdoaWxlIGF0IGl0LAotCi0gMS4gZml4IHRoZSBmdW5jdGlvbiBieSBtYWtpbmcgc3VyZSB3ZSBtb2RpZnkgKHJhdGhlciB0aGFuIHNldCkKLSAgICB0aGUgZXhpc3RpbmcgZmxhZ3MuIEFzIHRoZSBvbmx5IGtub3duIGZsYWcgaXMgRkRfQ0xPRVhFQywKLSAgICB0aGlzIGNoYW5nZSBpcyBjdXJyZW50bHkgcHVyZWx5IGFlc3RoZXRpY2FsLCBidXQgaW4gY2FzZQotICAgIG90aGVyIGZsYWdzIHdpbGwgYXBwZWFyIGl0IHdpbGwgYmVjb21lIGEgcmVhbCBidWcgZml4LgotCi0gMi4gZ2V0IHJpZCBvZiBtYWdpYyBudW1iZXIgMzsgdXNlIFNUREVSUl9GSUxFTk8KLQotU2lnbmVkLW9mZi1ieTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KLQotRml4ZXMgIzQ0NAotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KLSBycG1pby9ycG1pby5jIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcnBtaW8vcnBtaW8uYyBiL3JwbWlvL3JwbWlvLmMKLWluZGV4IGVhMTExZDJlYy4uNTUzNTFjMjIxIDEwMDY0NAotLS0tIGEvcnBtaW8vcnBtaW8uYwotKysrIGIvcnBtaW8vcnBtaW8uYwotQEAgLTE3NjAsMTggKzE3NjAsNDMgQEAgRElHRVNUX0NUWCBmZER1cERpZ2VzdChGRF90IGZkLCBpbnQgaWQpCi0gICAgIHJldHVybiBjdHg7Ci0gfQotIAotK3N0YXRpYyB2b2lkIHNldF9jbG9leGVjKGludCBmZCkKLSt7Ci0rCWludCBmbGFncyA9IGZjbnRsKGZkLCBGX0dFVEZEKTsKLSsKLSsJaWYgKGZsYWdzID09IC0xIHx8IChmbGFncyAmIEZEX0NMT0VYRUMpKQotKwkJcmV0dXJuOwotKwotKwlmY250bChmZCwgRl9TRVRGRCwgZmxhZ3MgfCBGRF9DTE9FWEVDKTsKLSt9Ci0rCi0gdm9pZCBycG1TZXRDbG9zZU9uRXhlYyh2b2lkKQotIHsKLS0JaW50IGZsYWcsIGZkbm8sIG9wZW5fbWF4OwotKwljb25zdCBpbnQgbWluX2ZkID0gU1RERVJSX0ZJTEVOTzsgLyogZG9uJ3QgdG91Y2ggc3RkaW4vb3V0L2VyciAqLwotKwlpbnQgZmQ7Ci0rCi0rCURJUiAqZGlyID0gb3BlbmRpcigiL3Byb2Mvc2VsZi9mZCIpOwotKwlpZiAoZGlyID09IE5VTEwpIHsgLyogL3Byb2Mgbm90IGF2YWlsYWJsZSAqLwotKwkJLyogaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBmZHMsIG1pZ2h0IGJlIHNsb3cgKi8KLSsJCWludCBvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKLSsJCWlmIChvcGVuX21heCA9PSAtMSkKLSsJCQlvcGVuX21heCA9IDEwMjQ7Ci0gCi0tCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOwotLQlpZiAob3Blbl9tYXggPT0gLTEpIHsKLS0JCW9wZW5fbWF4ID0gMTAyNDsKLSsJCWZvciAoZmQgPSBtaW5fZmQgKyAxOyBmZCA8IG9wZW5fbWF4OyBmZCsrKQotKwkJCXNldF9jbG9leGVjKGZkKTsKLSsKLSsJCXJldHVybjsKLSAJfQotLQlmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgewotLQkJZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOwotLQkJaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKLS0JCQljb250aW51ZTsKLS0JCWZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOwotKwotKwkvKiBpdGVyYXRlIG92ZXIgZmRzIG9idGFpbmVkIGZyb20gL3Byb2MgKi8KLSsJc3RydWN0IGRpcmVudCAqZW50cnk7Ci0rCXdoaWxlICgoZW50cnkgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKLSsJCWZkID0gYXRvaShlbnRyeS0+ZF9uYW1lKTsKLSsJCWlmIChmZCA+IG1pbl9mZCkKLSsJCQlzZXRfY2xvZXhlYyhmZCk7Ci0gCX0KLSsKLSsJY2xvc2VkaXIoZGlyKTsKLSsKLSsJcmV0dXJuOwotIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODliNDFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDMwN2UyOGI0Y2IwOGIwNWJjMDQ0NDgyMDU4ZWVlYmM5ZjU5YmI5YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxODowOToyNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvM10gcnBtU2V0Q2xvc2VPbkV4ZWM6IHVzZSBnZXRybGltaXQoKQotCi1JbiBjYXNlIC9wcm9jIGlzIG5vdCBhdmFpbGFibGUgdG8gZ2V0IHRoZSBhY3R1YWwgbGlzdCBvZiBvcGVuZWQgZmRzLAotd2UgZmFsbCBiYWNrIHRvIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBsaXN0IG9mIGFsbCBwb3NzaWJsZSBmZHMuCi0KLUl0IGlzIHBvc3NpYmxlIHRoYXQgZHVyaW5nIHRoZSBjb3Vyc2Ugb2YgdGhlIHByb2dyYW0gZXhlY3V0aW9uIHRoZSBsaW1pdAotb24gbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBtaWdodCBiZSBsb3dlcmVkLCBzbyB1c2luZyB0aGUKLWN1cnJlbnQgbGltaXQsIGFzIHJldHVybmVkIGJ5IHN5c2NvbmYoX1NDX09QRU5fTUFYKSwgbWlnaHQgb21pdCBzb21lCi1mZHMuIFRoZXJlZm9yZSwgaXQgaXMgYmV0dGVyIHRvIHVzZSBybGltX21heCBmcm9tIHRoZSBzdHJ1Y3R1cmUKLWZpbGxlZCBpbiBieSBnZXJ0bGltaXQoUkxJTUlUX05PRklMRSkgdG8gbWFrZSBzdXJlIHdlJ3JlIGNoZWNraW5nCi1hbGwgZmRzLgotCi1UaGlzIHNsb3dzIGRvd24gdGhlIGZ1bmN0aW9uLCBidXQgb25seSBpbiB0aGUgY2FzZSAvcHJvYyBpcyBub3QKLWF2YWlsYWJsZSwgd2hpY2ggc2hvdWxkIGJlIHJhcmUgaW4gcHJhY3RpY2UuCi0KLVNpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KLSBycG1pby9ycG1pby5jIHwgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvLmMgYi9ycG1pby9ycG1pby5jCi1pbmRleCA1NTM1MWMyMjEuLmUwNTFjOTg2MyAxMDA2NDQKLS0tLSBhL3JwbWlvL3JwbWlvLmMKLSsrKyBiL3JwbWlvL3JwbWlvLmMKLUBAIC0xMCw2ICsxMCw3IEBACi0gI2luY2x1ZGUgPHN5cy9wZXJzb25hbGl0eS5oPgotICNlbmRpZgotICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KLSAKLSAjaW5jbHVkZSA8cnBtL3JwbWxvZy5oPgotICNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KLUBAIC0xNzc4LDcgKzE3NzksMTQgQEAgdm9pZCBycG1TZXRDbG9zZU9uRXhlYyh2b2lkKQotIAlESVIgKmRpciA9IG9wZW5kaXIoIi9wcm9jL3NlbGYvZmQiKTsKLSAJaWYgKGRpciA9PSBOVUxMKSB7IC8qIC9wcm9jIG5vdCBhdmFpbGFibGUgKi8KLSAJCS8qIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgZmRzLCBtaWdodCBiZSBzbG93ICovCi0tCQlpbnQgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7Ci0rCQlzdHJ1Y3QgcmxpbWl0IHJsOwotKwkJaW50IG9wZW5fbWF4OwotKwotKwkJaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpID09IDAgJiYgcmwucmxpbV9tYXggIT0gUkxJTV9JTkZJTklUWSkKLSsJCQlvcGVuX21heCA9IHJsLnJsaW1fbWF4OwotKwkJZWxzZQotKwkJCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOwotKwotIAkJaWYgKG9wZW5fbWF4ID09IC0xKQotIAkJCW9wZW5fbWF4ID0gMTAyNDsKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCmluZGV4IDg5ODlkY2UuLjY1MmUzMGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUZyb20gOGNlOWZiYWIyOTkwNjA5YmRhY2U0NTdlMTQ2MTYwMzM0ZTkzMWM4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzkyNjkzYmI5MDc2OGNmZGU0ODk4ZThkZDMxZWUxYjVkZTgwM2QyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE3OjA4OjA5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIGJ1aWxkL3BhY2suYzogcmVtb3ZlIHN0YXRpYyBsb2NhbCB2YXJpYWJsZXMgZnJvbQotIGJ1aWxkSG9zdCgpIGFuZCBnZXRCdWlsZFRpbWUoKQorU3ViamVjdDogW1BBVENIXSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20gYnVpbGRIb3N0KCkKKyBhbmQgZ2V0QnVpbGRUaW1lKCkKIAogVGhlaXIgdXNlIGlzIGNhdXNpbmcgZGlmZmljdWx0IHRvIGRpYWdub3plIGRhdGEgcmFjZXMgd2hlbiBidWlsZGluZyBtdWx0aXBsZQogcGFja2FnZXMgaW4gcGFyYWxsZWwsIGFuZCBpcyBhIGJhZCBpZGVhIGluIGdlbmVyYWwsIGFzIGl0IGFsc28gbWFrZXMgaXQgbW9yZQpAQCAtMjAsNyArMjAsNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9idWlsZC9idWlsZC5jIGIvYnVpbGQvYnVpbGQuYwotaW5kZXggODExNTJlNTNlLi42MDAxZjllNTIgMTAwNjQ0CitpbmRleCAxM2MzZGYyLi5iMTU0ZjA4IDEwMDY0NAogLS0tIGEvYnVpbGQvYnVpbGQuYwogKysrIGIvYnVpbGQvYnVpbGQuYwogQEAgLTYsNiArNiw4IEBACkBAIC05OSw3ICs5OSw3IEBACiAgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFU09VUkNFKSAmJiAhdGVzdCkgJiYKIC0JICAgIChyYyA9IHBhY2thZ2VTb3VyY2VzKHNwZWMsICZjb29raWUpKSkKICsJICAgIChyYyA9IHBhY2thZ2VTb3VyY2VzKHNwZWMsICZjb29raWUsIGJ1aWxkVGltZSwgaG9zdCkpKQotIAkJcmV0dXJuIHJjOworIAkJZ290byBleGl0OwogIAogIAlpZiAoKCh3aGF0ICYgUlBNQlVJTERfUEFDS0FHRUJJTkFSWSkgJiYgIXRlc3QpICYmCiAtCSAgICAocmMgPSBwYWNrYWdlQmluYXJpZXMoc3BlYywgY29va2llLCAoZGlkQnVpbGQgPT0gMCkpKSkKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICBzcGVjLT5yb290RGlyID0gTlVMTDsKICAgICAgaWYgKHJjICE9IFJQTVJDX09LICYmIHJwbWxvZ0dldE5yZWNzKCkgPiAwKSB7CiBkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCi1pbmRleCBkZjE1ODc2ZmYuLjE3YTRiMDkwNSAxMDA2NDQKK2luZGV4IGRmMTU4NzYuLjE3YTRiMDkgMTAwNjQ0CiAtLS0gYS9idWlsZC9wYWNrLmMKICsrKyBiL2J1aWxkL3BhY2suYwogQEAgLTYsOCArNiw2IEBACkBAIC0zMDUsNyArMzA1LDcgQEAKICAJLyogRG8gY2hlY2sgU1JQTSBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KICAJaWYgKHJjID09IFJQTVJDX09LICYmIHBrZ2NoZWNrWzBdICE9ICcgJykgewogZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmggYi9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCi1pbmRleCA0MzliN2QzYjUuLjA3ZTgzMzhhZCAxMDA2NDQKK2luZGV4IDQzOWI3ZDMuLjA3ZTgzMzggMTAwNjQ0CiAtLS0gYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCiArKysgYi9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCiBAQCAtNDI3LDE5ICs0MjcsMjMgQEAgcnBtUkMgcHJvY2Vzc1NvdXJjZUZpbGVzKHJwbVNwZWMgc3BlYywgcnBtQnVpbGRQa2dGbGFncyBwa2dGbGFncyk7CkBAIC0zMzQsNiArMzM0LDMgQEAKICAKICBSUE1fR05VQ19JTlRFUk5BTAogIGludCBhZGRMYW5nVGFnKHJwbVNwZWMgc3BlYywgSGVhZGVyIGgsIHJwbVRhZ1ZhbCB0YWcsCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTAzYTBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFJQTSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIgotREVTQ1JJUFRJT04gPSAiVGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgKFJQTSkgaXMgYSBwb3dlcmZ1bCBjb21tYW5kIGxpbmUgZHJpdmVuIFwKLXBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0gY2FwYWJsZSBvZiBpbnN0YWxsaW5nLCB1bmluc3RhbGxpbmcsIFwKLXZlcmlmeWluZywgcXVlcnlpbmcsIGFuZCB1cGRhdGluZyBzb2Z0d2FyZSBwYWNrYWdlcy4gRWFjaCBzb2Z0d2FyZSBcCi1wYWNrYWdlIGNvbnNpc3RzIG9mIGFuIGFyY2hpdmUgb2YgZmlsZXMgYWxvbmcgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBcCi10aGUgcGFja2FnZSBsaWtlIGl0cyB2ZXJzaW9uLCBhIGRlc2NyaXB0aW9uLCBldGMuIgotCi1TVU1NQVJZXyR7UE59LWRldiA9ICJEZXZlbG9wbWVudCBmaWxlcyBmb3IgbWFuaXB1bGF0aW5nIFJQTSBwYWNrYWdlcyIKLURFU0NSSVBUSU9OXyR7UE59LWRldiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFJQTSBDIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcy4gVGhlc2UgXAotZGV2ZWxvcG1lbnQgZmlsZXMgd2lsbCBzaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiB3cml0aW5nIHByb2dyYW1zIHRoYXQgXAotbWFuaXB1bGF0ZSBSUE0gcGFja2FnZXMgYW5kIGRhdGFiYXNlcy4gVGhlc2UgZmlsZXMgYXJlIGludGVuZGVkIHRvIFwKLXNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGdyYXBoaWNhbCBwYWNrYWdlIG1hbmFnZXJzIG9yIGFueSBcCi1vdGhlciB0b29scyB0aGF0IG5lZWQgYW4gaW50aW1hdGUga25vd2xlZGdlIG9mIFJQTSBwYWNrYWdlcyBpbiBvcmRlciBcCi10byBmdW5jdGlvbi4iCi0KLVNVTU1BUllfcHl0aG9uMy1ycG0gPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBhcHBzIHdoaWNoIHdpbGwgbWFudXB1bGF0ZSBSUE0gcGFja2FnZXMiCi1ERVNDUklQVElPTl9weXRob24zLXJwbSA9ICJUaGUgcHl0aG9uMy1ycG0gcGFja2FnZSBjb250YWlucyBhIG1vZHVsZSB0aGF0IHBlcm1pdHMgYXBwbGljYXRpb25zIFwKLXdyaXR0ZW4gaW4gdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byB1c2UgdGhlIGludGVyZmFjZSBcCi1zdXBwbGllZCBieSB0aGUgUlBNIFBhY2thZ2UgTWFuYWdlciBsaWJyYXJpZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnJwbS5vcmciCi0KLSMgbGlicmFyaWVzIGFyZSBhbHNvIExHUEwgLSBob3cgdG8gZXhwcmVzcyB0aGlzPwotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzBiZjAxN2MwZmQxOTIwZTYxNThhMzMzYWNhYmZkNGEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG07YnJhbmNoPXJwbS00LjE0LnggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLWFuLXVuc2F0aXNmaWFibGUtZGVwZW5kZW5jeS13aGVuLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlYWQtY29uZmlnLWZpbGVzLWZyb20tSE9NRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVdoZW4tY3Jvc3MtaW5zdGFsbGluZy1leGVjdXRlLXBhY2thZ2Utc2NyaXB0bGV0cy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLXN1cHBvcnQtZm9yLXByZWZpeGluZy1ldGMtZnJvbS1SUE1fRVRDQ09ORklHRElSLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLWNvbG9yLXNldHRpbmctZm9yLW1pcHM2NF9uMzItYmluYXJpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1Eby1ub3QtcmVxdWlyZS10aGF0LUVMRi1iaW5hcmllcy1hcmUtZXhlY3V0YWJsZS10by1iLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtcnBtc3RycG9vbC5jLW1ha2Utb3BlcmF0aW9ucy1vdmVyLXN0cmluZy1wb29scy10aHJlYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wZXJsLWRpc2FibGUtYXV0by1yZXFzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBFID0gIjEiCi1TUkNSRVYgPSAiYmZlZTE0MTBhZjUxYzFjYzk3MjQ3OTFmYjhkOTg1MjYwYTYyMTAyYiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogYnppcDIgZGJ1cyBlbGZ1dGlscyBweXRob24zIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKLWV4cG9ydCBQWVRIT05fQUJJCi0KLSMgT0UtY29yZSBwYXRjaGVzIGF1dG9yZWNvbmYgdG8gYWRkaXRpb25hbGx5IHJ1biBnbnUtY29uZmlnaXplLCB3aGljaCBmYWlscyB3aXRoIHRoaXMgcmVjaXBlCi1FWFRSQV9BVVRPUkVDT05GX2FwcGVuZCA9ICIgLS1leGNsdWRlPWdudS1jb25maWdpemUiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0td2l0aG91dC1sdWEgLS1lbmFibGUtcHl0aG9uIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1ubHMiCi0KLSMgLS1zeXNjb25mZGlyIHByZXZlbnRzIHJwbSBmcm9tIGF0dGVtcHRpbmcgdG8gYWNjZXNzIG1hY2hpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiBzeXNyb290L2V0Yzsgd2UgbmVlZCB0byBoYXZlIGl0IGluIHJvb3RmcwotIwotIyAtLWxvY2Fsc3RhdGVkaXIgcHJldmVudHMgcnBtIGZyb20gd3JpdGluZyBpdHMgZGF0YWJhc2UgdG8gbmF0aXZlIHN5c3Jvb3Qgd2hlbiBidWlsZGluZyBpbWFnZXMKLSMKLSMgRGlzYWJsZSBkYnVzIGZvciBuYXRpdmUsIHNvIHRoYXQgcnBtIGRvZXNuJ3QgYXR0ZW1wdCB0byBpbmhpYml0IHNodXRkb3duIHZpYSBzZXNzaW9uIGRidXMgZXZlbiB3aGVuIHBsdWdpbnMgc3VwcG9ydCBpcyBlbmFibGVkLgotIyBBbHNvIGRpc2FibGUgcGx1Z2lucyBieSBkZWZhdWx0IGZvciBuYXRpdmUuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1zeXNjb25mZGlyPS9ldGMgLS1sb2NhbHN0YXRlZGlyPS92YXIgLS13aXRob3V0LWRidXMgLS1kaXNhYmxlLXBsdWdpbnMiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLS1zeXNjb25mZGlyPS9ldGMgLS1sb2NhbHN0YXRlZGlyPS92YXIgLS13aXRob3V0LWRidXMgLS1kaXNhYmxlLXBsdWdpbnMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbaW1hZXZtXSA9ICItLXdpdGgtaW1hZXZtLCxpbWEtZXZtLXV0aWxzIgotCi0jIERpcmVjdCBycG0tbmF0aXZlIHRvIHJlYWQgY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KLSMgbGlibWFnaWMgYWxzbyBoYXMgc3lzcm9vdCBwYXRoIGNvbnRhbWluYXRpb24sIHNvIG92ZXJyaWRlIGl0Ci0KLVdSQVBQRVJfVE9PTFMgPSAiIFwKLSAgICR7YmluZGlyfS9ycG0gXAotICAgJHtiaW5kaXJ9L3JwbTJhcmNoaXZlIFwKLSAgICR7YmluZGlyfS9ycG0yY3BpbyBcCi0gICAke2JpbmRpcn0vcnBtYnVpbGQgXAotICAgJHtiaW5kaXJ9L3JwbWRiIFwKLSAgICR7YmluZGlyfS9ycG1ncmFwaCBcCi0gICAke2JpbmRpcn0vcnBta2V5cyBcCi0gICAke2JpbmRpcn0vcnBtc2lnbiBcCi0gICAke2JpbmRpcn0vcnBtc3BlYyBcCi0gICAke2xpYmRpcn0vcnBtL3JwbWRlcHMgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgIGZvciB0b29sIGluICR7V1JBUFBFUl9UT09MU307IGRvCi0gICAgICAgICAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR0b29sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBSUE1fRVRDQ09ORklHRElSPSR7U1RBR0lOR19ESVJfTkFUSVZFfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBNQUdJQz0ke1NUQUdJTkdfRElSX05BVElWRX0ke2RhdGFkaXJfbmF0aXZlfS9taXNjL21hZ2ljLm1nYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKLSAgICAgICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgICAgIGZvciB0b29sIGluICR7V1JBUFBFUl9UT09MU307IGRvCi0gICAgICAgICAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR0b29sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JyQne1JQTV9FVENDT05GSUdESVItJ2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdzeXNjb25mZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9Ly4ufSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBNQUdJQz0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2RhdGFkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vbWlzYy9tYWdpYy5tZ2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCi0gICAgICAgIGRvbmUKLQotICAgICAgICBybSAtcmYgJHtEfS92YXIKLX0KLQotIyBScG0ncyBtYWtlIGluc3RhbGwgY3JlYXRlcyB2YXIvdG1wIHdoaWNoIGNsYXNoZXMgd2l0aCBiYXNlLWZpbGVzIHBhY2thZ2luZwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHJtIC1yZiAke0R9L3ZhcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKLQotCXNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS9lbnYgJHtQWVRIT05fUE59fCcgXAotCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob25kaXN0ZGVwcy5weSBcCi0JICAgICR7RH0ke2xpYmRpcn0vcnBtL3B5dGhvbi1tYWNyby1oZWxwZXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLnNvIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gInB5dGhvbjMtcnBtIgotUFJPVklERVMgKz0gInB5dGhvbjMtcnBtIgotRklMRVNfcHl0aG9uMy1ycG0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnBtLyoiCi0KLSMgcnBtIDUueCB3YXMgcGFja2FnaW5nIHRoZSBycG0gYnVpbGQgdG9vbHMgc2VwYXJhdGVseQotUlBST1ZJREVTXyR7UE59ICs9ICJycG0tYnVpbGQiCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2ggcGVybCBweXRob24zLWNvcmUiCi0KLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicnBtX3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotIyBEbyBub3Qgc3BlY2lmeSBhIHN5c3Jvb3Qgd2hlbiBjb21waWxpbmcgb24gYSB0YXJnZXQuCi1ycG1fcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290W14gXSo6OmcnIFwKLQkgICAgJHtQS0dEfS8ke2xpYmRpcn0vcnBtL21hY3JvcwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDBmZTRkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuYmIKQEAgLTAsMCArMSwxNTEgQEAKK1NVTU1BUlkgPSAiVGhlIFJQTSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiVGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgKFJQTSkgaXMgYSBwb3dlcmZ1bCBjb21tYW5kIGxpbmUgZHJpdmVuIFwKK3BhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0gY2FwYWJsZSBvZiBpbnN0YWxsaW5nLCB1bmluc3RhbGxpbmcsIFwKK3ZlcmlmeWluZywgcXVlcnlpbmcsIGFuZCB1cGRhdGluZyBzb2Z0d2FyZSBwYWNrYWdlcy4gRWFjaCBzb2Z0d2FyZSBcCitwYWNrYWdlIGNvbnNpc3RzIG9mIGFuIGFyY2hpdmUgb2YgZmlsZXMgYWxvbmcgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBcCit0aGUgcGFja2FnZSBsaWtlIGl0cyB2ZXJzaW9uLCBhIGRlc2NyaXB0aW9uLCBldGMuIgorCitTVU1NQVJZXyR7UE59LWRldiA9ICJEZXZlbG9wbWVudCBmaWxlcyBmb3IgbWFuaXB1bGF0aW5nIFJQTSBwYWNrYWdlcyIKK0RFU0NSSVBUSU9OXyR7UE59LWRldiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFJQTSBDIGxpYnJhcnkgYW5kIGhlYWRlciBmaWxlcy4gVGhlc2UgXAorZGV2ZWxvcG1lbnQgZmlsZXMgd2lsbCBzaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiB3cml0aW5nIHByb2dyYW1zIHRoYXQgXAorbWFuaXB1bGF0ZSBSUE0gcGFja2FnZXMgYW5kIGRhdGFiYXNlcy4gVGhlc2UgZmlsZXMgYXJlIGludGVuZGVkIHRvIFwKK3NpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGdyYXBoaWNhbCBwYWNrYWdlIG1hbmFnZXJzIG9yIGFueSBcCitvdGhlciB0b29scyB0aGF0IG5lZWQgYW4gaW50aW1hdGUga25vd2xlZGdlIG9mIFJQTSBwYWNrYWdlcyBpbiBvcmRlciBcCit0byBmdW5jdGlvbi4iCisKK1NVTU1BUllfcHl0aG9uMy1ycG0gPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBhcHBzIHdoaWNoIHdpbGwgbWFudXB1bGF0ZSBSUE0gcGFja2FnZXMiCitERVNDUklQVElPTl9weXRob24zLXJwbSA9ICJUaGUgcHl0aG9uMy1ycG0gcGFja2FnZSBjb250YWlucyBhIG1vZHVsZSB0aGF0IHBlcm1pdHMgYXBwbGljYXRpb25zIFwKK3dyaXR0ZW4gaW4gdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byB1c2UgdGhlIGludGVyZmFjZSBcCitzdXBwbGllZCBieSB0aGUgUlBNIFBhY2thZ2UgTWFuYWdlciBsaWJyYXJpZXMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnJwbS5vcmciCisKKyMgbGlicmFyaWVzIGFyZSBhbHNvIExHUEwgLSBob3cgdG8gZXhwcmVzcyB0aGlzPworTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzBiZjAxN2MwZmQxOTIwZTYxNThhMzMzYWNhYmZkNGEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG07YnJhbmNoPXJwbS00LjE0LnggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLWFuLXVuc2F0aXNmaWFibGUtZGVwZW5kZW5jeS13aGVuLWJ1aWxkaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlYWQtY29uZmlnLWZpbGVzLWZyb20tSE9NRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdoZW4tY3Jvc3MtaW5zdGFsbGluZy1leGVjdXRlLXBhY2thZ2Utc2NyaXB0bGV0cy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLXN1cHBvcnQtZm9yLXByZWZpeGluZy1ldGMtZnJvbS1SUE1fRVRDQ09ORklHRElSLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLWNvbG9yLXNldHRpbmctZm9yLW1pcHM2NF9uMzItYmluYXJpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1Eby1ub3QtcmVxdWlyZS10aGF0LUVMRi1iaW5hcmllcy1hcmUtZXhlY3V0YWJsZS10by1iLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtcnBtc3RycG9vbC5jLW1ha2Utb3BlcmF0aW9ucy1vdmVyLXN0cmluZy1wb29scy10aHJlYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wZXJsLWRpc2FibGUtYXV0by1yZXFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaCBcCisgICAgICAgICAgICIKKworUEUgPSAiMSIKK1NSQ1JFViA9ICI3NTNmNjk0MWRjMzJlOTQwNDdiN2NmZTcxM2RkZDYwNGE4MTBiNGRiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gIm5zcyBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQorZXhwb3J0IFBZVEhPTl9BQkkKKworIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKK0VYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKKworIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCisjCisjIC0tbG9jYWxzdGF0ZWRpciBwcmV2ZW50cyBycG0gZnJvbSB3cml0aW5nIGl0cyBkYXRhYmFzZSB0byBuYXRpdmUgc3lzcm9vdCB3aGVuIGJ1aWxkaW5nIGltYWdlcworIworIyBEaXNhYmxlIGRidXMgZm9yIG5hdGl2ZSwgc28gdGhhdCBycG0gZG9lc24ndCBhdHRlbXB0IHRvIGluaGliaXQgc2h1dGRvd24gdmlhIHNlc3Npb24gZGJ1cyBldmVuIHdoZW4gcGx1Z2lucyBzdXBwb3J0IGlzIGVuYWJsZWQuCisjIEFsc28gZGlzYWJsZSBwbHVnaW5zIGJ5IGRlZmF1bHQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLWRpc2FibGUtcGx1Z2lucyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLWRpc2FibGUtcGx1Z2lucyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCisKK0FTTkVFREVEID0gIiIKKworIyBEaXJlY3QgcnBtLW5hdGl2ZSB0byByZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCisjIGxpYm1hZ2ljIGFsc28gaGFzIHN5c3Jvb3QgcGF0aCBjb250YW1pbmF0aW9uLCBzbyBvdmVycmlkZSBpdAorCitXUkFQUEVSX1RPT0xTID0gIiBcCisgICAke2JpbmRpcn0vcnBtIFwKKyAgICR7YmluZGlyfS9ycG0yYXJjaGl2ZSBcCisgICAke2JpbmRpcn0vcnBtMmNwaW8gXAorICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKKyAgICR7YmluZGlyfS9ycG1kYiBcCisgICAke2JpbmRpcn0vcnBtZ3JhcGggXAorICAgJHtiaW5kaXJ9L3JwbWtleXMgXAorICAgJHtiaW5kaXJ9L3JwbXNpZ24gXAorICAgJHtiaW5kaXJ9L3JwbXNwZWMgXAorICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICBmb3IgdG9vbCBpbiAke1dSQVBQRVJfVE9PTFN9OyBkbworICAgICAgICAgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0kdG9vbCBcCisgICAgICAgICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0VUQ0NPTkZJR0RJUj0ke1NUQUdJTkdfRElSX05BVElWRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgTUFHSUM9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtkYXRhZGlyX25hdGl2ZX0vbWlzYy9tYWdpYy5tZ2MgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgICAgICBmb3IgdG9vbCBpbiAke1dSQVBQRVJfVE9PTFN9OyBkbworICAgICAgICAgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0kdG9vbCBcCisgICAgICAgICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L3JwbSBcCisgICAgICAgICAgICAgICAgICAgICAgICBSUE1fRVRDQ09ORklHRElSPSckJ3tSUE1fRVRDQ09ORklHRElSLSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignc3lzY29uZmRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS8uLn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgTUFHSUM9J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdkYXRhZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L21pc2MvbWFnaWMubWdjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQorICAgICAgICBkb25lCisKKyAgICAgICAgcm0gLXJmICR7RH0vdmFyCit9CisKKyMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBybSAtcmYgJHtEfS92YXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCisKKwlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKKwkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkgXAorCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob24tbWFjcm8taGVscGVyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5zbyBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyoubGEgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICJweXRob24zLXJwbSIKK1BST1ZJREVTICs9ICJweXRob24zLXJwbSIKK0ZJTEVTX3B5dGhvbjMtcnBtID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS8qIgorCisjIHJwbSA1Lnggd2FzIHBhY2thZ2luZyB0aGUgcnBtIGJ1aWxkIHRvb2xzIHNlcGFyYXRlbHkKK1JQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgorcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCisJICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjMDIzYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luYy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgc3luY2hyb25pemF0aW9uIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vcnN5bmMuc2FtYmEub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy9idWd6aWxsYS5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLURFUEVORFMgPSAicG9wdCIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLnNhbWJhLm9yZy9wdWIvJHtCUE59L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnN5bmNkLmNvbmYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yc3luY2QuY29uZiAke0R9JHtzeXNjb25mZGlyfQotfQotCi1FWFRSQV9PRU1BS0U9J1NUUklQPSIiJwotCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYgppbmRleCA4NGEwMjU4Li4yOWNiMjMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYgpAQCAtMSwyNCArMSwzNyBAQAotcmVxdWlyZSByc3luYy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlLW5vLXJlYnVpbGQucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTgxYTU4OGZkZTlkODlmNmJjNjIwMWU4MTI5YWZhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWNjNTU0ZWZlYzVmZGFhZDcwZGU5MjFjZDVhNWVlYjZjMjlhOTU1MjRjNzE1ZjNiYmY4NDkyMzViMDgwMGMwIgotCitTVU1NQVJZID0gIkZpbGUgc3luY2hyb25pemF0aW9uIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vcnN5bmMuc2FtYmEub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy9idWd6aWxsYS5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiAjIEdQTHYyKyAoPDwgMy4wLjApLCBHUEx2MysgKD49IDMuMC4wKQogTElDRU5TRSA9ICJHUEx2MysiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAorREVQRU5EUyA9ICJwb3B0IgorCitTUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWQuc2FtYmEub3JnL3B1Yi8ke0JQTn0vc3JjLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yc3luY2QuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1uby1yZWJ1aWxkLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1ODFhNTg4ZmRlOWQ4OWY2YmM2MjAxZTgxMjlhZmFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1Y2M1NTRlZmVjNWZkYWFkNzBkZTkyMWNkNWE1ZWViNmMyOWE5NTUyNGM3MTVmM2JiZjg0OTIzNWIwODAwYzAiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKIFBBQ0tBR0VDT05GSUcgPz89ICJhY2wgYXR0ciBcCiAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCiAiCisKIFBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wtc3VwcG9ydCwtLWRpc2FibGUtYWNsLXN1cHBvcnQsYWNsLCIKIFBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS1lbmFibGUteGF0dHItc3VwcG9ydCwtLWRpc2FibGUteGF0dHItc3VwcG9ydCxhdHRyLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCiAKICMgQnkgZGVmYXVsdCwgaWYgY3Jvc3Njb21waWxpbmcsIHJzeW5jIGRpc2FibGVzIGEgbnVtYmVyIG9mCiAjIGNhcGFiaWxpdGllcywgaGFyZGxpbmtpbmcgc3ltbGlua3MgYW5kIHNwZWNpYWwgZmlsZXMgKGkuZS4gZGV2aWNlcykKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJyc3luY19jdl9jYW5faGFyZGxpbmtfc3BlY2lhbD15ZXMgcnN5bmNfY3ZfY2FuX2hhcmRsaW5rX3N5bWxpbms9eWVzIgogCitFWFRSQV9PRU1BS0UgPSAnU1RSSVA9IiInCisKICMgcnN5bmMgMy4wIHVzZXMgY29uZmlndXJlLnNoIGluc3RlYWQgb2YgY29uZmlndXJlLCBhbmQKICMgbWFrZWZpbGUgY2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgY29uZmlndXJlLnNoCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CkBAIC0yOSw0ICs0Miw5IEBACiAJY3AgLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JzeW5jZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Cit9CisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKaW5kZXggZmQzOTExYi4uNWE1YmVmMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTM0MDk0OGUxODgyZTU3OTczMTg0MWJmNDljZGMyMmMxIFwKICAgICBmaWxlOi8vQlNETDttZDU9MTlhYWY2NWM4OGE0MGI1MDhkMTdhZTRiZTUzOWM0YjVcCiAgICAgZmlsZTovL0dQTDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCi0gICAgZmlsZTovL0xFR0FMO21kNT04Zjg3MWYzZjAzNzMyYzAxOGE1ZmE5YjE4NTk1ODIzMSBcCisgICAgZmlsZTovL0xFR0FMO21kNT0yM2E3OWJiNGMxYTQwZjZjYzliY2I2ZjRlN2MzOTc5OSBcCiAiCiAKIERFUEVORFMgPSAicnVieS1uYXRpdmUgemxpYiBvcGVuc3NsIHRjbCBsaWJ5YW1sIGdkYm0gcmVhZGxpbmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTgtMTAwMDA3My5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9DVkUtMjAxOC0xMDAwMDczLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZmExYjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTgtMTAwMDA3My5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDFiOTMxZmMwM2I4MTliOWEwMjE0YmUzZWFjYTg0NGVmNTM0MTc1ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb25hdGhhbiBDbGF1ZGl1cyA8amNsYXVkaXVzQG1vemlsbGEuY29tPgorRGF0ZTogV2VkLCA3IEZlYiAyMDE4IDIzOjU0OjUyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIE5vbi13b3JraW5nIHBhdGNoIGZvciBkZWR1Y2luZyBzeW1saW5rZWQgYmFzZS1kaXJzCisKKy0tLQorQ1ZFOiBDVkUtMjAxOC0xMDAwMDczCisKK0ZpeGVkIGluIHJ1YnkgMi43LjYuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdGh1Yi5jb20vcnVieWdlbXMvcnVieWdlbXMvY29tbWl0LzFiOTMxZmMuLi5dCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGliL3J1YnlnZW1zL3BhY2thZ2UucmIgfCAgICAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliL3J1YnlnZW1zL3BhY2thZ2UucmIgYi9saWIvcnVieWdlbXMvcGFja2FnZS5yYgoraW5kZXggZGVkZTk1OS4uY2I5Yzc0YSAxMDA2NDQKKy0tLSBhL2xpYi9ydWJ5Z2Vtcy9wYWNrYWdlLnJiCisrKysgYi9saWIvcnVieWdlbXMvcGFja2FnZS5yYgorQEAgLTQyMSw2ICs0MjEsOCBAQCBFT00KKyAgICAgZGVzdGluYXRpb25fZGlyID0gRmlsZS5leHBhbmRfcGF0aCBkZXN0aW5hdGlvbl9kaXIKKyAKKyAgICAgZGVzdGluYXRpb24gPSBGaWxlLmpvaW4gZGVzdGluYXRpb25fZGlyLCBmaWxlbmFtZQorKyAgICBkZXN0aW5hdGlvbiA9IEZpbGUucmVhbHBhdGggZGVzdGluYXRpb24gaWYKKysgICAgICBGaWxlLnJlc3BvbmRfdG8/IDpyZWFscGF0aAorICAgICBkZXN0aW5hdGlvbiA9IEZpbGUuZXhwYW5kX3BhdGggZGVzdGluYXRpb24KKyAKKyAgICAgcmFpc2UgR2VtOjpQYWNrYWdlOjpQYXRoRXJyb3IubmV3KGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbl9kaXIpIHVubGVzcworLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFjN2YyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjQ3MTFmODU2ZmUxNGRlMjIyYjlkYTNkM2I4ZWZhODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDZlNmYzNjMwZjE4ODhlYjY1M2IxNWZhODExZDc3YjViMWRmNmZkN2EzYWY0MzZiMzQzY2ZlNGY0NTAzZjJhYiIKLQotIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKLSMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAotIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW2dtcF0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCi0KLVNVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgotCi1TVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgotUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOTczMjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi41LjEuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBydWJ5LmluYworCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwMDczLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjM4NjdiYzhjMTZjNTVlNDNiMTRkZmUwNjE0YmNmYTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGFjODE4MjIzMjViNzljM2JhOTUzMmIwNDhjMjEyMzM1N2QzMzEwYjJiNDAwMjQyMDJmMzYwMjUxZDk4MjliMSIKKworIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKKyMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAorIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2dtcF0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAorICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKKyAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgorCisgICAgIyBGaW5kIG91dCBjcmVhdGVkLnJpZCBmcm9tIC5pbnN0YWxsZWQubGlzdAorICAgIGNyZWF0ZWRfcmlkPWBncmVwIGNyZWF0ZWQucmlkICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKKyAgICBzZWQgLWkgLWUgJ3M6JHtXT1JLRElSfTo6ZycgJHtEfSRjcmVhdGVkX3JpZAorCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cwppbmRleCAzMDdmZWI3Li45NWVmZjA0IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cwpAQCAtNiw3ICs2LDggQEAKICMKIAogIyBUaGUgZm9sbG93aW5nIHNjcmlwdCB3aWxsIHJ1biBhbGwgdGhlIHNjcmlwdGxldHMgZm91bmQgaW4gI1NZU0NPTkZESVIjL2RlYi1wb3N0aW5zdHMsCi0jICNTWVNDT05GRElSIy9pcGstcG9zdGluc3RzIG9yICNTWVNDT05GRElSIy9ycG0tcG9zdGluc3RzLgorIyAjU1lTQ09ORkRJUiMvaXBrLXBvc3RpbnN0cyBvciAjU1lTQ09ORkRJUiMvcnBtLXBvc3RpbnN0cyBvciB0aGUgcGFja2FnZSBtYW5hZ2VyIGluCisjIGNhc2UgYXZhaWxhYmxlLgogCiAjIHRoZSBvcmRlciBvZiB0aGlzIGxpc3QgaXMgaW1wb3J0YW50LCBkbyBub3QgY2hhbmdlIQogYmFja2VuZF9saXN0PSJycG0gZGViIGlwayIKQEAgLTE0LDI3ICsxNSwyOSBAQAogcG1faW5zdGFsbGVkPWZhbHNlCiAKIGZvciBwbSBpbiAkYmFja2VuZF9saXN0OyBkbwotCXBpX2Rpcj0iI1NZU0NPTkZESVIjLyRwbS1wb3N0aW5zdHMiCi0KLQlpZiBbICEgLWQgJHBpX2RpciBdOyB0aGVuCi0JCWNvbnRpbnVlCi0JZmkKLQogCSMgZm91bmQgdGhlIHBhY2thZ2UgbWFuYWdlciwgaXQgaGFzIHBvc3RpbnN0cwogCWNhc2UgJHBtIGluCiAJCSJkZWIiKQogCQkJaWYgWyAtcyAiI0xPQ0FMU1RBVEVESVIjL2xpYi9kcGtnL3N0YXR1cyIgXTsgdGhlbgogCQkJCXBtX2luc3RhbGxlZD10cnVlCisJCQkJYnJlYWsKIAkJCWZpCiAJCQk7OwogCiAJCSJpcGsiKQogCQkJaWYgWyAtcyAiI0xPQ0FMU1RBVEVESVIjL2xpYi9vcGtnL3N0YXR1cyIgXTsgdGhlbgogCQkJCXBtX2luc3RhbGxlZD10cnVlCisJCQkJYnJlYWsKIAkJCWZpCiAJCQk7OwogCWVzYWMKLQlicmVhaworCisJcGlfZGlyPSIjU1lTQ09ORkRJUiMvJHBtLXBvc3RpbnN0cyIKKworCSMgZm91bmQgcG9zdGluc3RzIGRpcmVjdG9yeQorCWlmIFsgLWQgJHBpX2RpciBdOyB0aGVuCisJCWJyZWFrCisJZmkKIGRvbmUKIAogcmVtb3ZlX3Jjc2RfbGluayAoKSB7CkBAIC00Myw3ICs0Niw3IEBACiAJZmkKIH0KIAotaWYgISBbIC1kICRwaV9kaXIgXTsgdGhlbgoraWYgISBbIC1kICRwaV9kaXIgXSAmJiAhICRwbV9pbnN0YWxsZWQ7IHRoZW4KIAlyZW1vdmVfcmNzZF9saW5rCiAJZXhpdCAwCiBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKaW5kZXggMWI3MWExZi4uZDQyYWRkZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCkBAIC0zLDcgKzMsNiBAQAogRGVmYXVsdERlcGVuZGVuY2llcz1ubwogQWZ0ZXI9c3lzdGVtZC1yZW1vdW50LWZzLnNlcnZpY2Ugc3lzdGVtZC10bXBmaWxlcy1zZXR1cC5zZXJ2aWNlIHRtcC5tb3VudAogQmVmb3JlPXN5c2luaXQudGFyZ2V0Ci1Db25kaXRpb25QYXRoRXhpc3RzR2xvYj0jU1lTQ09ORkRJUiMvKi1wb3N0aW5zdHMKIAogW1NlcnZpY2VdCiBUeXBlPW9uZXNob3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgppbmRleCAxZWIwMTU0Li4yZjQxMjYzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCkBAIC0zNyw2ICszNyw4IEBACiAJaW5zdGFsbCAtbSAwNzU1IHVuc3F1YXNoZnMgJHtEfSR7c2JpbmRpcn0vCiB9CiAKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAppbmRleCBhMTJmNGMzLi40NjBiNmUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTEsMzYgKzEsMzEgQEAKLUZyb20gMDU3NGFlOTkyNjMwOGRjYmNhNzhiZDhjZDBmMGYxNDNmMTljYmNiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjA3ZmM3ODE0YmJlYjAyNDEzODIzMjkyMTVkMjFmZDNiNTcwNjZmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEdhYnJpZWwgQmFyYnUgPGdhYnJpZWwuYmFyYnVAZW5lYS5jb20+CiBEYXRlOiBUaHUsIDI1IEp1bCAyMDEzIDE1OjI4OjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC84XSBzdHJhY2U6IEFkZCBwdGVzdAorU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IEFkZCBwdGVzdAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAogU2lnbmVkLW9mZi1ieTogR2FicmllbCBCYXJidSA8Z2FicmllbC5iYXJidUBlbmVhLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KIAogLS0tCi0gY29uZmlndXJlLmFjICAgICAgfCAgMiArLQotIHRlc3RzL01ha2VmaWxlLmFtIHwgMTggKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgdGVzdHMvTWFrZWZpbGUuYW0gfCAxOSArKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNWYwYWVjNC4uOGVhYWNjNiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDIsNyArNDIsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5OS1dY29weXJpZ2h0X3llYXJbIFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQotIEFDX0NPTkZJR19TUkNESVIoW3N0cmFjZS5jXSkKLSBBQ19DT05GSUdfQVVYX0RJUihbLl0pCi0gQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKLS1BTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzIDEuMTNdKQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gbm9zdGRpbmMgZGlzdC14eiBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzIDEuMTNdKQotIEFNX01BSU5UQUlORVJfTU9ERQotIEFDX0NBTk9OSUNBTF9IT1NUCi0gCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggYjRiYTIyYS4uNTgzNjQzOCAxMDA2NDQKK2luZGV4IGEyZjM5NTAuLjRmYTk3ZTIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC00MDgsMyArNDA4LDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKK0BAIC0zNCw2ICszNCw3IEBAIFNJWkVPRl9MT05HID0gQFNJWkVPRl9MT05HQAorIE1QRVJTX05BTUUgPQorIE1QRVJTX0NDX0ZMQUdTID0KKyBBUkNIX01GTEFHUyA9CisrVEVTVF9TVUlURV9MT0cgPSB0ZXN0LXN1aXRlLmxvZworIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpCisgQU1fQ1BQRkxBR1MgPSAkKEFSQ0hfTUZMQUdTKSBcCisgCSAgICAgIC1JJChidWlsZGRpcikgXAorQEAgLTQ5MCwzICs0OTEsMjEgQEAgQlVJTFRfU09VUkNFUyA9IGtzeXNlbnQuaAogIENMRUFORklMRVMgPSBrc3lzZW50LmgKICAKICBpbmNsdWRlIC4uL3Njbm8uYW0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoCmluZGV4IDc2ZGFmM2EuLjllNWVjMTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaApAQCAtMSwyMCArMSwzNyBAQAotVGhlIGdpdC12ZXJzaW9uLWdlbiBzY3JpcHQgaXMgbm90IGluY2x1ZGVkIGluIHRhcmJhbGwgcmVsZWFzZXMsCi1zbyB3ZSBuZWVkIHRvIGF2b2lkIGF0dGVtcHRzIHRvIGNhbGwgaXQgd2hlbiBydW5uaW5nIGF1dG9yZWNvbmYuCitGcm9tIGJlZTA2ODA3NTQ3MzA0OTg0ODVlMjRkZDAzNzMwMzMxOGM2ODkxNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxOCBKYW4gMjAxNiAxMzozMzo1MCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IHJlbW92ZSBuZWVkIGZvciBzY3JpcHRzCisKK2dpdC12ZXJzaW9uLWdlbiBjb3B5cmlnaHQteWVhci1nZW4gZmlsZS1kYXRlLWdlbiBhcmUgbm90IGluY2x1ZGVkIGluCit0YXJiYWxsIHJlbGVhc2VzLCBzbyB3ZSBuZWVkIHRvIGF2b2lkIGF0dGVtcHRzIHRvIGNhbGwgdGhlbS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3MDA0YmQzLi5iMmIwM2M2IDEwMDY0NAoraW5kZXggYWQxZDAwZi4uOTZmYTIwNSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzEsNyArMzEsNyBAQAorQEAgLTMyLDEyICszMiwxMiBAQAogIAogIEFDX1BSRVJFUSgyLjU3KQogIEFDX0lOSVQoW3N0cmFjZV0sCiAtCW00X2VzeXNjbWQoWy4vZ2l0LXZlcnNpb24tZ2VuIC50YXJiYWxsLXZlcnNpb25dKSwKICsJbTRfZXN5c2NtZF9zKFtjYXQgLnRhcmJhbGwtdmVyc2lvbl0pLAotIAlbc3RyYWNlLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0sCisgCVtzdHJhY2UtZGV2ZWxAbGlzdHMuc3RyYWNlLmlvXSwKICAJW3N0cmFjZV0sCiAgCVtodHRwczovL3N0cmFjZS5pb10pCistbTRfZGVmaW5lKFtjb3B5cmlnaHRfeWVhcl0sIG00X2VzeXNjbWQoWy4vY29weXJpZ2h0LXllYXItZ2VuIC55ZWFyXSkpCistbTRfZGVmaW5lKFttYW5wYWdlX2RhdGVdLCBtNF9lc3lzY21kKFsuL2ZpbGUtZGF0ZS1nZW4gc3RyYWNlLjEuaW5dKSkKKyttNF9kZWZpbmUoW2NvcHlyaWdodF95ZWFyXSwgbTRfZXN5c2NtZF9zKFtjYXQgLnllYXJdKSkKKyttNF9kZWZpbmUoW21hbnBhZ2VfZGF0ZV0sIG00X2VzeXNjbWRfcyhbY2F0IC5zdHJhY2UuMS5pbi5kYXRlXSkpCisgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKGMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKKyBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy5dKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaAppbmRleCA3NTZjZDhiLi4zZDQ5MTNkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApAQCAtMjIsMjUgKzIyLDIzIEBACiAgbTQvbXBlcnMubTQgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvbTQvbXBlcnMubTQgYi9tNC9tcGVycy5tNAotaW5kZXggMWZlOGE4ZS4uZDcyYzcxNyAxMDA2NDQKLS0tLSBhL200L21wZXJzLm00Ci0rKysgYi9tNC9tcGVycy5tNAotQEAgLTUzLDEyICs1MywxNCBAQCBjYXNlICIkYXJjaCIgaW4KLSAJQ0ZMQUdTPSIkQ0ZMQUdTIENGTEFHICRJRkxBRyIKLSAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRkxBRyBjb21waWxlIHN1cHBvcnRdLCBbc3RfY3ZfY2NdLAorSW5kZXg6IHN0cmFjZS00LjIyL200L21wZXJzLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3RyYWNlLTQuMjIub3JpZy9tNC9tcGVycy5tNAorKysrIHN0cmFjZS00LjIyL200L21wZXJzLm00CitAQCAtMTA4LDYgKzEwOCw3IEBAIGNhc2UgIiRhcmNoIiBpbgorIAlDRkxBR1M9IiRDRkxBR1MgTVBFUlNfQ0ZMQUdTICRJRkxBRyIKKyAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtcGVyc19uYW1lIHBlcnNvbmFsaXR5IGNvbXBpbGUgc3VwcG9ydF0sIFtzdF9jdl9jY10sCiAgCQlbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgogKwkJCQkJCSAgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CiAgCQkJCQkJICAgICBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAogIAkJCQkgICBbc3RfY3ZfY2M9eWVzXSwKICAJCQkJICAgW3N0X2N2X2NjPW5vXSldKQotIAlpZiB0ZXN0ICRzdF9jdl9jYyA9IHllczsgdGhlbgotIAkJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRkxBRyBydW50aW1lIHN1cHBvcnRdLCBbc3RfY3ZfcnVudGltZV0sCitAQCAtMTE1LDYgKzExNiw3IEBAIGNhc2UgIiRhcmNoIiBpbgorIAkJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtcGVyc19uYW1lIHBlcnNvbmFsaXR5IHJ1bnRpbWUgc3VwcG9ydF0sCisgCQkJW3N0X2N2X3J1bnRpbWVdLAogIAkJCVtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWyNpbmNsdWRlIDxzdGRpbnQuaD4KICsJCQkJCQkJICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgogIAkJCQkJCQkgaW50IG1haW4oKXtyZXR1cm4gMDt9XV0pXSwKICAJCQkJICAgICAgIFtzdF9jdl9ydW50aW1lPXllc10sCiAgCQkJCSAgICAgICBbc3RfY3ZfcnVudGltZT1ub10sCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKaW5kZXggMTMzY2Y5Mi4uODA3MGQ4MyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKQEAgLTEsMiArMSwyIEBACiAjIS9iaW4vc2gKLW1ha2UgLUMgdGVzdHMgLWsgcnVudGVzdC1URVNUUworbWFrZSAtQiAtQyB0ZXN0cyAtayB0ZXN0LXN1aXRlLmxvZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjljMTJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5pbyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjEzMmI0ZDJhZGZjY2M2M2RhNDEzOWE2MDkzNjc3MTEiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zdHJhY2UuaW8vZmlsZXMvJHtQVn0vc3RyYWNlLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXBkYXRlLWdhd2stcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdoZW4tdXNpbmctbm9uLWdsaWJjLWxpYmMtaW1wbGVtZW50YXRpb24tby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjIyNzFhYjBmYWM0OWViZWU5Y2JkN2YzNDY5MjI3Y2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJmMzE0OGRkMTczMDZhNDI1NjZmN2RhMTczNjhmZGQ3ODFhZmExNDdkYjA1ZWE2M2E0Y2EyYjUwZjU4YzUyMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmx1ZXRvb3RoCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi0KLVRFU1RESVIgPSAidGVzdHMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKLQlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9Ci0Jc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyBcCi0JICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JICAgIC1lICcvXkRFQl9DSEFOR0VMT0dUSU1FL2QnIFwKLQkgICAgLWUgJy9eUlBNX0NIQU5HRUxPR1RJTUUvZCcgXAotCSR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTQwYTA2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjI0LmJiCkBAIC0wLDAgKzEsNjQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5pbyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmRkYjkxNzM0YjljNzA1ZjNlODczNjJlOTdlNWY2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zdHJhY2UuaW8vZmlsZXMvJHtQVn0vc3RyYWNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXBkYXRlLWdhd2stcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdoZW4tdXNpbmctbm9uLWdsaWJjLWxpYmMtaW1wbGVtZW50YXRpb24tby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjg3ODAxMzY4NDljODVhY2Y3NmFkM2E1MjJhYTQ0NjJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmNGU1OWZjMWVkZmEyYmZiNGFkZjJhNzQ4NjIzZGMyNWIxMDVlYzc5NzEzZGQ4NDQwNDE5OWY5MWIwYjA2MzQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJsdWV0b290aAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbXBlcnM9bm8iCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHNpZ2NvbnRleHRfc3RydWN0PXNpZ2NvbnRleHQiCisKK1RFU1RESVIgPSAidGVzdHMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKKwlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQorCWluc3RhbGwgLW0gNjQ0ICR7Qn0vY29uZmlnLmggJHtEfSR7UFRFU1RfUEFUSH0KKwlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAorCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCisJJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYzI1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMC4wLmJiCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiU3VidmVyc2lvbiAoc3ZuKSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGNsaWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04MzIwNmYzOTgxOWU3YTRkZmNhMmZmN2MxOTBmNmNlMCIKKworREVQRU5EUyA9ICJhcHItdXRpbCBzZXJmIHNxbGl0ZTMgZmlsZSBsejQiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmbWFjcm8ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMTI2ODQ3ZjllOGNiOGVkMGI5MGE2YTE4YjIwMzMwOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyY2YyM2YzYWJiODM3ZGVhMDU4NWE2YjBlYmQ3MGU4MGUwMWY5NWJkZGVmN2MxYWEwOTdjMThlM2VhYTZiNTg0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitQQUNLQUdFQ09ORklHID89ICIiCisKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAtLXdpdGhvdXQtYXB4cyBcCisgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKKyAgICAtLXdpdGhvdXQtc3dpZyBcCisgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAorICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKKyIKKworYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKKworQ1BQRkxBR1MgKz0gIi1QIgorQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9saWJ0b29sCisJcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00CisJcm0gLWYgJHtTfS9hY2xvY2FsLm00CisJc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Cit9CisKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAorI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCisjfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAorI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCisKK1JERVBFTkRTXyR7UE59ID0gInNlcmYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzczNWY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiU3VidmVyc2lvbiAoc3ZuKSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGNsaWVudCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotREVQRU5EUyA9ICJhcHItdXRpbCBzZXJmIHNxbGl0ZTMgZmlsZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJzZXJmIgotTElDRU5TRSA9ICJBcGFjaGUtMiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXJmLm00LVJlZ2V4LW1vZGlmaWVkLXRvLWFsbG93LUQtaW4tcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXJmbWFjcm8ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNWIwYzY3NzY4MTA3MzkyMGY5MzhjMWYzMjJlMGJlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjM2IxMTgzMzNjZTEyZTUwMWQ1MDllNjZiYjBhNDdiY2MzNGQwNTM5OTBhY2FiNDU1NTk0MzFhYzNlNDkxNjIzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZjgxYWU0OWJhMzU5ZTcwNjI2YzA1ZTliZjMxMzcwOSIKLQotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtc2FzbCwtLXdpdGhvdXQtc2FzbCxjeXJ1cy1zYXNsIgotUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZywtLXdpdGhvdXQtZ25vbWUta2V5cmluZyxnbGliLTIuMCBnbm9tZS1rZXlyaW5nIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYmVya2VsZXktZGIgLS13aXRob3V0LWFweHMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zd2lnIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAotICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKLSAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1JVQlk9bm9uZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZXhwb3J0IExERkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9ICIKLUNQUEZMQUdTICs9ICItUCIKLUJVSUxEX0NQUEZMQUdTICs9ICItUCIKLQotYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vbGlidG9vbAotCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAotCXJtIC1mICR7U30vYWNsb2NhbC5tNAotCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAotfQotCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJwotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJwotI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKLSN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQotUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnL1B5dGhvbi1GaXgtbmV3LUdDQzgtd2FybmluZ3MtaW4tZ2VuZXJhdGVkLWNvZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvUHl0aG9uLUZpeC1uZXctR0NDOC13YXJuaW5ncy1pbi1nZW5lcmF0ZWQtY29kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTEzODU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnL1B5dGhvbi1GaXgtbmV3LUdDQzgtd2FybmluZ3MtaW4tZ2VuZXJhdGVkLWNvZGUucGF0Y2gKQEAgLTAsMCArMSwxOTEgQEAKK0Zyb20gYjZjMGVmNGI4ZjZlNWMwODlhYzcxMDRiM2FhYmE4ZjFkMTdiOGI4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9sbHkgQmV0dHMgPG9sbHlAc3VydmV4LmNvbT4KK0RhdGU6IE1vbiwgMTEgSnVuIDIwMTggMTU6NTE6NTMgKzEyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW1B5dGhvbl0gRml4IG5ldyBHQ0M4IHdhcm5pbmdzIGluIGdlbmVyYXRlZCBjb2RlCisKK0F2b2lkIGNhc3RzIGJldHdlZW4gaW5jb21wYXRpYmxlIGZ1bmN0aW9uIHR5cGVzIHdoZXJlIHBvc3NpYmxlICh3aGVuCitrZXl3b3JkIGFyZ3MgYXJlIGluIHVzZSwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGF2b2lkIHN1Y2ggd2FybmluZ3MgYXMKK3RoZXkgYXJlIGluaGVyZW50IGluIHRoZSBkZXNpZ24gb2YgUHl0aG9uJ3MgQyBBUEkgaW4gdGhhdCBwYXJ0aWN1bGFyCitjYXNlKS4gIEZpeGVzICMxMjU5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3N3aWcvc3dpZy9jb21taXQvN2Y5ODgzMDExMDI5Njc0NTUzYTJhNGI2MjNkNDU5ZjAyYjUxMjQ1OF0KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL3B5dGhvbi9weWluaXQuc3dnICAgICB8ICA0ICsrLS0KKyBMaWIvcHl0aG9uL3B5cnVuLnN3ZyAgICAgIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQorIFNvdXJjZS9Nb2R1bGVzL3B5dGhvbi5jeHggfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvcHl0aG9uL3B5aW5pdC5zd2cgYi9MaWIvcHl0aG9uL3B5aW5pdC5zd2cKK2luZGV4IDJjYzU4MjguLjZiZjY4YzEgMTAwNjQ0CistLS0gYS9MaWIvcHl0aG9uL3B5aW5pdC5zd2cKKysrKyBiL0xpYi9weXRob24vcHlpbml0LnN3ZworQEAgLTM2OCw4ICszNjgsOCBAQCBTV0lHX2luaXQodm9pZCkgeworICAgICAoY2hhciAqKSJ0aGlzIiwgJlN3aWdQeUJ1aWx0aW5fVGhpc0Nsb3N1cmUsIE5VTEwsIE5VTEwsIE5VTEwKKyAgIH07CisgICBzdGF0aWMgU3dpZ1B5R2V0U2V0IHRoaXNvd25fZ2V0c2V0X2Nsb3N1cmUgPSB7CistICAgIChQeUNGdW5jdGlvbikgU3dpZ1B5T2JqZWN0X293biwKKy0gICAgKFB5Q0Z1bmN0aW9uKSBTd2lnUHlPYmplY3Rfb3duCisrICAgIFN3aWdQeU9iamVjdF9vd24sCisrICAgIFN3aWdQeU9iamVjdF9vd24KKyAgIH07CisgICBzdGF0aWMgUHlHZXRTZXREZWYgdGhpc293bl9nZXRzZXRfZGVmID0geworICAgICAoY2hhciAqKSJ0aGlzb3duIiwgU3dpZ1B5QnVpbHRpbl9HZXR0ZXJDbG9zdXJlLCBTd2lnUHlCdWlsdGluX1NldHRlckNsb3N1cmUsIE5VTEwsICZ0aGlzb3duX2dldHNldF9jbG9zdXJlCitkaWZmIC0tZ2l0IGEvTGliL3B5dGhvbi9weXJ1bi5zd2cgYi9MaWIvcHl0aG9uL3B5cnVuLnN3ZworaW5kZXggYWIxMjM3Zi4uM2QwYjFiMyAxMDA2NDQKKy0tLSBhL0xpYi9weXRob24vcHlydW4uc3dnCisrKysgYi9MaWIvcHl0aG9uL3B5cnVuLnN3ZworQEAgLTQ2NSw2ICs0NjUsMTQgQEAgU3dpZ1B5T2JqZWN0X3JlcHIoU3dpZ1B5T2JqZWN0ICp2LCBQeU9iamVjdCAqYXJncykKKyAgIHJldHVybiByZXByOyAgCisgfQorIAorKy8qIFdlIG5lZWQgYSB2ZXJzaW9uIHRha2luZyB0d28gUHlPYmplY3QqIHBhcmFtZXRlcnMgc28gaXQncyBhIHZhbGlkCisrICogUHlDRnVuY3Rpb24gdG8gdXNlIGluIHN3aWdvYmplY3RfbWV0aG9kc1tdLiAqLworK1NXSUdSVU5USU1FIFB5T2JqZWN0ICoKKytTd2lnUHlPYmplY3RfcmVwcjIoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpTV0lHVU5VU0VEUEFSTShhcmdzKSkKKyt7CisrICByZXR1cm4gU3dpZ1B5T2JqZWN0X3JlcHIoKFN3aWdQeU9iamVjdCopdik7CisrfQorKworIFNXSUdSVU5USU1FIGludAorIFN3aWdQeU9iamVjdF9jb21wYXJlKFN3aWdQeU9iamVjdCAqdiwgU3dpZ1B5T2JqZWN0ICp3KQorIHsKK0BAIC01OTQsMTEgKzYwMiw3IEBAIFN3aWdQeU9iamVjdF9hcHBlbmQoUHlPYmplY3QqIHYsIFB5T2JqZWN0KiBuZXh0KQorIH0KKyAKKyBTV0lHUlVOVElNRSBQeU9iamVjdCogCistI2lmZGVmIE1FVEhfTk9BUkdTCistU3dpZ1B5T2JqZWN0X25leHQoUHlPYmplY3QqIHYpCistI2Vsc2UKKyBTd2lnUHlPYmplY3RfbmV4dChQeU9iamVjdCogdiwgUHlPYmplY3QgKlNXSUdVTlVTRURQQVJNKGFyZ3MpKQorLSNlbmRpZgorIHsKKyAgIFN3aWdQeU9iamVjdCAqc29iaiA9IChTd2lnUHlPYmplY3QgKikgdjsKKyAgIGlmIChzb2JqLT5uZXh0KSB7ICAgIAorQEAgLTYzMyw2ICs2MzcsMjAgQEAgU3dpZ1B5T2JqZWN0X2FjcXVpcmUoUHlPYmplY3QqIHYsIFB5T2JqZWN0ICpTV0lHVU5VU0VEUEFSTShhcmdzKSkKKyAgIHJldHVybiBTV0lHX1B5X1ZvaWQoKTsKKyB9CisgCisrI2lmZGVmIE1FVEhfTk9BUkdTCisrc3RhdGljIFB5T2JqZWN0KgorK1N3aWdQeU9iamVjdF9kaXNvd24yKFB5T2JqZWN0KiB2LCBQeU9iamVjdCAqU1dJR1VOVVNFRFBBUk0oYXJncykpCisreworKyAgcmV0dXJuIFN3aWdQeU9iamVjdF9kaXNvd24odik7CisrfQorKworK3N0YXRpYyBQeU9iamVjdCoKKytTd2lnUHlPYmplY3RfYWNxdWlyZTIoUHlPYmplY3QqIHYsIFB5T2JqZWN0ICpTV0lHVU5VU0VEUEFSTShhcmdzKSkKKyt7CisrICByZXR1cm4gU3dpZ1B5T2JqZWN0X2FjcXVpcmUodik7CisrfQorKyNlbmRpZgorKworIFNXSUdJTlRFUk4gUHlPYmplY3QqCisgU3dpZ1B5T2JqZWN0X293bihQeU9iamVjdCAqdiwgUHlPYmplY3QgKmFyZ3MpCisgeworQEAgLTY3MywxMiArNjkxLDEyIEBAIFN3aWdQeU9iamVjdF9vd24oUHlPYmplY3QgKnYsIFB5T2JqZWN0ICphcmdzKQorICNpZmRlZiBNRVRIX08KKyBzdGF0aWMgUHlNZXRob2REZWYKKyBzd2lnb2JqZWN0X21ldGhvZHNbXSA9IHsKKy0gIHsoY2hhciAqKSJkaXNvd24iLCAgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9kaXNvd24sICBNRVRIX05PQVJHUywgIChjaGFyICopInJlbGVhc2VzIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlciJ9LAorLSAgeyhjaGFyICopImFjcXVpcmUiLCAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X2FjcXVpcmUsIE1FVEhfTk9BUkdTLCAgKGNoYXIgKikiYWNxdWlyZXMgb3duZXJzaGlwIG9mIHRoZSBwb2ludGVyIn0sCisrICB7KGNoYXIgKikiZGlzb3duIiwgIChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfZGlzb3duMiwgTUVUSF9OT0FSR1MsICAoY2hhciAqKSJyZWxlYXNlcyBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIifSwKKysgIHsoY2hhciAqKSJhY3F1aXJlIiwgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9hY3F1aXJlMixNRVRIX05PQVJHUywgIChjaGFyICopImFjcXVpcmVzIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlciJ9LAorICAgeyhjaGFyICopIm93biIsICAgICAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X293biwgICAgIE1FVEhfVkFSQVJHUywgKGNoYXIgKikicmV0dXJucy9zZXRzIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlciJ9LAorICAgeyhjaGFyICopImFwcGVuZCIsICAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X2FwcGVuZCwgIE1FVEhfTywgICAgICAgKGNoYXIgKikiYXBwZW5kcyBhbm90aGVyICd0aGlzJyBvYmplY3QifSwKKyAgIHsoY2hhciAqKSJuZXh0IiwgICAgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9uZXh0LCAgICBNRVRIX05PQVJHUywgIChjaGFyICopInJldHVybnMgdGhlIG5leHQgJ3RoaXMnIG9iamVjdCJ9LAorLSAgeyhjaGFyICopIl9fcmVwcl9fIiwoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X3JlcHIsICAgIE1FVEhfTk9BUkdTLCAgKGNoYXIgKikicmV0dXJucyBvYmplY3QgcmVwcmVzZW50YXRpb24ifSwKKysgIHsoY2hhciAqKSJfX3JlcHJfXyIsKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9yZXByMiwgICBNRVRIX05PQVJHUywgIChjaGFyICopInJldHVybnMgb2JqZWN0IHJlcHJlc2VudGF0aW9uIn0sCisgICB7MCwgMCwgMCwgMH0gIAorIH07CisgI2Vsc2UKK0BAIC02ODksNyArNzA3LDcgQEAgc3dpZ29iamVjdF9tZXRob2RzW10gPSB7CisgICB7KGNoYXIgKikib3duIiwgICAgIChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3Rfb3duLCAgICAgTUVUSF9WQVJBUkdTLCAgKGNoYXIgKikicmV0dXJucy9zZXRzIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlciJ9LAorICAgeyhjaGFyICopImFwcGVuZCIsICAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X2FwcGVuZCwgIE1FVEhfVkFSQVJHUywgIChjaGFyICopImFwcGVuZHMgYW5vdGhlciAndGhpcycgb2JqZWN0In0sCisgICB7KGNoYXIgKikibmV4dCIsICAgIChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfbmV4dCwgICAgTUVUSF9WQVJBUkdTLCAgKGNoYXIgKikicmV0dXJucyB0aGUgbmV4dCAndGhpcycgb2JqZWN0In0sCistICB7KGNoYXIgKikiX19yZXByX18iLChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfcmVwciwgICBNRVRIX1ZBUkFSR1MsICAoY2hhciAqKSJyZXR1cm5zIG9iamVjdCByZXByZXNlbnRhdGlvbiJ9LAorKyAgeyhjaGFyICopIl9fcmVwcl9fIiwoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X3JlcHIsICAgIE1FVEhfVkFSQVJHUywgIChjaGFyICopInJldHVybnMgb2JqZWN0IHJlcHJlc2VudGF0aW9uIn0sCisgICB7MCwgMCwgMCwgMH0gIAorIH07CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvU291cmNlL01vZHVsZXMvcHl0aG9uLmN4eCBiL1NvdXJjZS9Nb2R1bGVzL3B5dGhvbi5jeHgKK2luZGV4IGE2ODAxZmMuLjcyZWFhNzcgMTAwNjQ0CistLS0gYS9Tb3VyY2UvTW9kdWxlcy9weXRob24uY3h4CisrKysgYi9Tb3VyY2UvTW9kdWxlcy9weXRob24uY3h4CitAQCAtMTEwOSw3ICsxMTA5LDcgQEAgcHVibGljOgorICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICBpbnQgYWRkX3B5aW5zdGFuY2VtZXRob2RfbmV3KCkgeworICAgICBTdHJpbmcgKm5hbWUgPSBOZXdTdHJpbmcoIlNXSUdfUHlJbnN0YW5jZU1ldGhvZF9OZXciKTsKKy0gICAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IChjaGFyICopXCIlc1wiLCAoUHlDRnVuY3Rpb24pJXMsIE1FVEhfTywgTlVMTH0sXG4iLCBuYW1lLCBuYW1lKTsKKysgICAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IFwiJXNcIiwgJXMsIE1FVEhfTywgTlVMTH0sXG4iLCBuYW1lLCBuYW1lKTsKKyAgICAgRGVsZXRlKG5hbWUpOworICAgICByZXR1cm4gMDsKKyAgIH0KK0BAIC0yNDc5LDE3ICsyNDc5LDE3IEBAIHB1YmxpYzoKKyAgICAgaWYgKCFrdykgeworICAgICAgIGlmIChuICYmIGZ1bnBhY2spIHsKKyAJaWYgKG51bV9yZXF1aXJlZCA9PSAwICYmIG51bV9hcmd1bWVudHMgPT0gMCkgeworLQkgIFByaW50ZihtZXRob2RzLCAiXHQgeyAoY2hhciAqKVwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCBNRVRIX05PQVJHUywgIiwgbmFtZSwgZnVuY3Rpb24pOworKwkgIFByaW50ZihtZXRob2RzLCAiXHQgeyBcIiVzXCIsICVzLCBNRVRIX05PQVJHUywgIiwgbmFtZSwgZnVuY3Rpb24pOworIAl9IGVsc2UgaWYgKG51bV9yZXF1aXJlZCA9PSAxICYmIG51bV9hcmd1bWVudHMgPT0gMSkgeworLQkgIFByaW50ZihtZXRob2RzLCAiXHQgeyAoY2hhciAqKVwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCBNRVRIX08sICIsIG5hbWUsIGZ1bmN0aW9uKTsKKysJICBQcmludGYobWV0aG9kcywgIlx0IHsgXCIlc1wiLCAlcywgTUVUSF9PLCAiLCBuYW1lLCBmdW5jdGlvbik7CisgCX0gZWxzZSB7CistCSAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IChjaGFyICopXCIlc1wiLCAlcywgTUVUSF9WQVJBUkdTLCAiLCBuYW1lLCBmdW5jdGlvbik7CisrCSAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IFwiJXNcIiwgJXMsIE1FVEhfVkFSQVJHUywgIiwgbmFtZSwgZnVuY3Rpb24pOworIAl9CisgICAgICAgfSBlbHNlIHsKKy0JUHJpbnRmKG1ldGhvZHMsICJcdCB7IChjaGFyICopXCIlc1wiLCAlcywgTUVUSF9WQVJBUkdTLCAiLCBuYW1lLCBmdW5jdGlvbik7CisrCVByaW50ZihtZXRob2RzLCAiXHQgeyBcIiVzXCIsICVzLCBNRVRIX1ZBUkFSR1MsICIsIG5hbWUsIGZ1bmN0aW9uKTsKKyAgICAgICB9CisgICAgIH0gZWxzZSB7CistICAgICAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IChjaGFyICopXCIlc1wiLCAoUHlDRnVuY3Rpb24pICVzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAiLCBuYW1lLCBmdW5jdGlvbik7CisrICAgICAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgIiwgbmFtZSwgZnVuY3Rpb24pOworICAgICB9CisgCisgICAgIGlmICghbikgeworQEAgLTM4NTcsNyArMzg1Nyw3IEBAIHB1YmxpYzoKKyAgICAgaWYgKHNoYWRvdykgeworICAgICAgIGlmIChidWlsdGluKSB7CisgCVN0cmluZyAqcm5hbWUgPSBTd2lnVHlwZV9uYW1lc3RyKHJlYWxfY2xhc3NuYW1lKTsKKy0JUHJpbnRmKGJ1aWx0aW5fbWV0aG9kcywgIiAgeyBcIl9fZGlzb3duX19cIiwgKFB5Q0Z1bmN0aW9uKSBTd2lnOjpEaXJlY3Rvcjo6c3dpZ19weW9ial9kaXNvd248ICVzID4sIE1FVEhfTk9BUkdTLCBcIlwiIH0sXG4iLCBybmFtZSk7CisrCVByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCJfX2Rpc293bl9fXCIsIFN3aWc6OkRpcmVjdG9yOjpzd2lnX3B5b2JqX2Rpc293bjwgJXMgPiwgTUVUSF9OT0FSR1MsIFwiXCIgfSxcbiIsIHJuYW1lKTsKKyAJRGVsZXRlKHJuYW1lKTsKKyAgICAgICB9IGVsc2UgeworIAlTdHJpbmcgKnN5bW5hbWUgPSBHZXRhdHRyKG4sICJzeW06bmFtZSIpOworQEAgLTQ2OTQsMTMgKzQ2OTQsMTMgQEAgcHVibGljOgorIAlpbnQgYXJnY291bnQgPSBHZXRhdHRyKG4sICJweXRob246YXJnY291bnQiKSA/IGF0b2koQ2hhcihHZXRhdHRyKG4sICJweXRob246YXJnY291bnQiKSkpIDogMjsKKyAJU3RyaW5nICpkcyA9IGhhdmVfZG9jc3RyaW5nKG4pID8gY2RvY3N0cmluZyhuLCBBVVRPRE9DX0ZVTkMpIDogTmV3U3RyaW5nKCIiKTsKKyAJaWYgKGNoZWNrX2t3YXJncyhuKSkgeworLQkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pICVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgKGNoYXIgKikgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworKwkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pJXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBcIiVzXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBkcyk7CisgCX0gZWxzZSBpZiAoYXJnY291bnQgPT0gMCkgeworLQkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pICVzLCBNRVRIX05PQVJHUywgKGNoYXIgKikgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworKwkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAlcywgTUVUSF9OT0FSR1MsIFwiJXNcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIGRzKTsKKyAJfSBlbHNlIGlmIChhcmdjb3VudCA9PSAxKSB7CistCSAgUHJpbnRmKGJ1aWx0aW5fbWV0aG9kcywgIiAgeyBcIiVzXCIsIChQeUNGdW5jdGlvbikgJXMsIE1FVEhfTywgKGNoYXIgKikgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworKwkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAlcywgTUVUSF9PLCBcIiVzXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBkcyk7CisgCX0gZWxzZSB7CistCSAgUHJpbnRmKGJ1aWx0aW5fbWV0aG9kcywgIiAgeyBcIiVzXCIsIChQeUNGdW5jdGlvbikgJXMsIE1FVEhfVkFSQVJHUywgKGNoYXIgKikgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworKwkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAlcywgTUVUSF9WQVJBUkdTLCBcIiVzXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBkcyk7CisgCX0KKyAJRGVsZXRlKGZ1bGxuYW1lKTsKKyAJRGVsZXRlKHduYW1lKTsKK0BAIC00ODAxLDEwICs0ODAxLDEwIEBAIHB1YmxpYzoKKyAJICBBcHBlbmQocHlmbGFncywgIk1FVEhfVkFSQVJHUyIpOworIAlpZiAoaGF2ZV9kb2NzdHJpbmcobikpIHsKKyAJICBTdHJpbmcgKmRzID0gY2RvY3N0cmluZyhuLCBBVVRPRE9DX1NUQVRJQ0ZVTkMpOworLQkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pICVzLCAlcywgKGNoYXIgKikgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgcHlmbGFncywgZHMpOworKwkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pJXMsICVzLCBcIiVzXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBweWZsYWdzLCBkcyk7CisgCSAgRGVsZXRlKGRzKTsKKyAJfSBlbHNlIHsKKy0JICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSAlcywgJXMsIFwiXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBweWZsYWdzKTsKKysJICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCAlcywgXCJcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIHB5ZmxhZ3MpOworIAl9CisgCURlbGV0ZShmdWxsbmFtZSk7CisgCURlbGV0ZSh3bmFtZSk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy9zd2lnLTMuMC4xMi1Db3Zlcml0eS1maXgtaXNzdWUtcmVwb3J0ZWQtZm9yLVNXSUdfUHl0aG9uX0ZpeE1ldGhvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnL3N3aWctMy4wLjEyLUNvdmVyaXR5LWZpeC1pc3N1ZS1yZXBvcnRlZC1mb3ItU1dJR19QeXRob25fRml4TWV0aG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBlNGFmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy9zd2lnLTMuMC4xMi1Db3Zlcml0eS1maXgtaXNzdWUtcmVwb3J0ZWQtZm9yLVNXSUdfUHl0aG9uX0ZpeE1ldGhvLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gOTgyNWZjYmFiNWM0ZGRkODY3NDMyZjk5MjJiZWJmYmVjN2I3OGFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgRHVmb3VyIDxtLmR1Zm91ckBrb3Bhbm8uY29tPgorRGF0ZTogVHVlLCAxNCBGZWIgMjAxNyAxMDozNDozNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBbQ292ZXJpdHldIGZpeCBpc3N1ZSByZXBvcnRlZCBmb3IgU1dJR19QeXRob25fRml4TWV0aG9kcworCitGaXggQ292ZXJpdHkgaXNzdWUgcmVwb3J0ZWQgZm9yIFNXSUdfUHl0aG9uX0ZpeE1ldGhvZHM6CisKKyJidWZmZXJfc2l6ZTogQ2FsbGluZyBzdHJuY3B5IHdpdGggYSBzb3VyY2Ugc3RyaW5nIHdob3NlIGxlbmd0aAorKDEwIGNoYXJzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNpemUgYXJndW1lbnQgKDEwKQord2lsbCBmYWlsIHRvIG51bGwtdGVybWluYXRlIGJ1ZmYuIgorCitUaGUgaXNzdWUgaXMgb25seSByZXBvcnRlZCBmb3IgdGhlICJzd2lnX3B0cjogIiBsaW5lLCBidXQgZm9yCitjb25zaXN0ZW5jeSB3ZSByZXBsYWNlIGJvdGggb2NjdXJyZW5jZXMgb2Ygc3RybmNweSB3aXRoIG1lbWNweS4KKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zd2lnL3N3aWcvcHVsbC84OThdCisKKyBMaWIvcHl0aG9uL3B5aW5pdC5zd2cgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogc3dpZy0zLjAuMTIvTGliL3B5dGhvbi9weWluaXQuc3dnCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3dpZy0zLjAuMTIub3JpZy9MaWIvcHl0aG9uL3B5aW5pdC5zd2cKKysrKyBzd2lnLTMuMC4xMi9MaWIvcHl0aG9uL3B5aW5pdC5zd2cKK0BAIC0zMDYsOSArMzA2LDkgQEAgU1dJR19QeXRob25fRml4TWV0aG9kcyhQeU1ldGhvZERlZiAqbWV0aAorIAkgIGNoYXIgKm5kb2MgPSAoY2hhciopbWFsbG9jKGxkb2MgKyBscHRyICsgMTApOworIAkgIGlmIChuZG9jKSB7CisgCSAgICBjaGFyICpidWZmID0gbmRvYzsKKy0JICAgIHN0cm5jcHkoYnVmZiwgbWV0aG9kc1tpXS5tbF9kb2MsIGxkb2MpOworKwkgICAgbWVtY3B5KGJ1ZmYsIG1ldGhvZHNbaV0ubWxfZG9jLCBsZG9jKTsKKyAJICAgIGJ1ZmYgKz0gbGRvYzsKKy0JICAgIHN0cm5jcHkoYnVmZiwgInN3aWdfcHRyOiAiLCAxMCk7CisrCSAgICBtZW1jcHkoYnVmZiwgInN3aWdfcHRyOiAiLCAxMCk7CisgCSAgICBidWZmICs9IDEwOworIAkgICAgU1dJR19QYWNrVm9pZFB0cihidWZmLCBwdHIsIHR5LT5uYW1lLCBscHRyKTsKKyAJICAgIG1ldGhvZHNbaV0ubWxfZG9jID0gbmRvYzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiCmluZGV4IDE1ZjczNDguLmZlOWQwNzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYgpAQCAtMyw2ICszLDggQEAKIFNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVzZS1wcm9jLXNlbGYtZXhlLWZvci1zd2lnLXN3aWdsaWItb24tbm9uLVdpbjMyLXBsYXQucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRldGVjdGlvbi5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zd2lnLTMuMC4xMi1Db3Zlcml0eS1maXgtaXNzdWUtcmVwb3J0ZWQtZm9yLVNXSUdfUHl0aG9uX0ZpeE1ldGhvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9QeXRob24tRml4LW5ldy1HQ0M4LXdhcm5pbmdzLWluLWdlbmVyYXRlZC1jb2RlLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjgyMTMzZGZhN2JiYTc1ZmY5YWQ5OGE3MDQ2YmU2ODdjIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjZjlmNDQ3YWU3ZWQxYzUxNzIyZWZjNDVlN2YxNDQxOGQxNWQ3YTFlMTQzYWM5ZjA5YTY2ODk5OWY0ZmM5NGQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50LzAwMDEtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS1pcy1zcGVjaWZpYy10by1nbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvMDAwMS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLWlzLXNwZWNpZmljLXRvLWdsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjkzYzQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvMDAwMS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLWlzLXNwZWNpZmljLXRvLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAyM2EzNzU5Yjc0ZDA4MWIzYjI4NDliMGQzN2EwZTUyMTlmMzc4MTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAyMjozNzo0OCArMDAwMAotU3ViamVjdDogW1BBVENIXSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIGlzIHNwZWNpZmljIHRvIGdsaWJjCi0KLVdoZW4gb24gTGludXggYW5kIG5vdCB1c2luZyBnbGliYyB0aGVuIHdlIG5lZWQgdG8gZGVmaW5lCi1jYW5vbmljYWxpemVfZmlsZV9uYW1lKCkgQVBJLCB0aGVyZWZvcmUgYWRkIGEgY2hlY2sgZm9yIGZpbmRpbmcgb3V0IGlmCi1pdHMgbm90IGdsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmMgfCAyICstCi0gYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hZ2VudC90Y2YvZnJhbWV3b3JrL21kZXAuYyBiL2FnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5jCi1pbmRleCAyYjUyY2E4Li43ZDA5NjU1IDEwMDY0NAotLS0tIGEvYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmMKLSsrKyBiL2FnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5jCi1AQCAtMTA0Miw3ICsxMDQyLDcgQEAgY2hhciAqIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqIHBhdGgpIHsKLSAgICAgcmV0dXJuIHN0cmR1cChyZXMpOwotIH0KLSAKLS0jZWxpZiBkZWZpbmVkKF9fVUNMSUJDX18pCi0rI2VsaWYgZGVmaW5lZChfX1VDTElCQ19fKSB8fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gCi0gY2hhciAqIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqIHBhdGgpIHsKLSAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgsIE5VTEwpOwotZGlmZiAtLWdpdCBhL2FnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5oIGIvYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmgKLWluZGV4IDFlNzE4YTIuLjE4N2MzOTkgMTAwNjQ0Ci0tLS0gYS9hZ2VudC90Y2YvZnJhbWV3b3JrL21kZXAuaAotKysrIGIvYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmgKLUBAIC0yNzYsNyArMjc2LDcgQEAgZXh0ZXJuIGludCBsb2NfY2xvY2tfZ2V0dGltZShpbnQsIHN0cnVjdCB0aW1lc3BlYyAqKTsKLSAKLSAjZGVmaW5lIE9fQklOQVJZIDAKLSAKLS0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKLSsjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgIWRlZmluZWQoX19HTElCQ19fKQotICMgIGRlZmluZSBPX0xBUkdFRklMRSAwCi0gZXh0ZXJuIGNoYXIgKiogZW52aXJvbjsKLSBleHRlcm4gY2hhciAqIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqIHBhdGgpOwotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50L2ZpeF9yYW5saWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50L2ZpeF9yYW5saWIucGF0Y2gKaW5kZXggYjY2ZjQxYS4uYWJkMzNiYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC9maXhfcmFubGliLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaApAQCAtMSwxNiArMSwxNyBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtwb2t5LXNwZWNpZmljIGZpeF0KK0FjdHVhbGx5IHBhc3MgdGhlIGFyZ3VtZW50cyB0byBSQU5MSUIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAogSW5kZXg6IGFnZW50L01ha2VmaWxlLmluYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFnZW50Lm9yaWcvTWFrZWZpbGUuaW5jCi0rKysgYWdlbnQvTWFrZWZpbGUuaW5jCi1AQCAtODgsNiArODgsOSBAQCBpZm5lcSAoJChPUFNZUyksV2luZG93cykKLSAgIGlmbmVxICgkKENDKSxnKyspCi0gICAgIE9QVFMgKz0gLVdtaXNzaW5nLXByb3RvdHlwZXMKKy0tLSBhL01ha2VmaWxlLmluYworKysrIGIvTWFrZWZpbGUuaW5jCitAQCAtOTIsNiArOTIsNyBAQCBpZmVxICgkKE9QU1lTKSxHTlUvTGludXgpCisgICAgIE9QVFMgKz0gLURVU0VfdXVpZF9nZW5lcmF0ZT0wCiAgICBlbmRpZgotKyAgaWZuZXEgKCQoUkFOTElCKSwpCi0rICAgIFJBTkxJQiArPSAkQAotKyAgZW5kaWYKKyAgIE9QVFMgKz0gLURFTkFCTEVfYXJjaF8kKHNoZWxsIHVuYW1lIC1tKQorKyAgUkFOTElCICs9ICRACiAgZW5kaWYKLSAKLSAjIENvbXBpbGVyIGZsYWdzIGRlZmluaXRpb24KKworIGlmbmVxICgkKE9QU1lTKSxXaW5kb3dzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgppbmRleCBiYTE0YzQyLi5kOTAxYzE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgpAQCAtNSwxNCArNSwxMyBAQAogTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2VkbC12MTAuaHRtbDttZDU9NTIyYTM5MGE4M2RjMTg2NTEzZjA1MDA1NDNhZDM2NzkiCiAKLVNSQ1JFViA9ICIyZGRkZDVmNDQwYTE1ZDU0MDYwMzJmYWMyMGYyMDY0ODQ1MTM2NDZmIgotUFYgPSAiMS40LjArZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiYTAyMmVmMmYxYWNmZDkyMDlhMWJmNzkyZGRhMTRhZTRiMGQxYjYwZiIKK1BWID0gIjEuNy4wK2dpdCR7U1JDUFZ9IgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmVjbGlwc2Uub3JnL2dpdHJvb3QvdGNmL29yZy5lY2xpcHNlLnRjZi5hZ2VudDticmFuY2g9MS40X25lb25fYnVnZml4IFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmVjbGlwc2Uub3JnL2dpdHJvb3QvdGNmL29yZy5lY2xpcHNlLnRjZi5hZ2VudCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfcmFubGliLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLWlzLXNwZWNpZmljLXRvLWdsaWJjLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuc2VydmljZSBcCiAgICAgICAgICAgIgpAQCAtNDYsNiArNDUsNyBAQAogQ0ZMQUdTX2FwcGVuZF9taXBzNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9yaXNjdjY0ID0gIiAke0xDTF9TVE9QX1NFUlZJQ0VTfSIKIAogZG9faW5zdGFsbCgpIHsKIAlvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9JHtEfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczMvMDAwMS1hdHRyLWZpeC11dGltZS1mb3Itc3ltbGluay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzLzAwMDEtYXR0ci1maXgtdXRpbWUtZm9yLXN5bWxpbmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk1N2QxMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzLzAwMDEtYXR0ci1maXgtdXRpbWUtZm9yLXN5bWxpbmsucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSAzZjRmY2I2MjY2MTA1OWJhZDc3YTJlOTU3YjQ2MjExMzc3OTdiYzJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUnVpIFdhbmcgPHJ1aS53YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE1IEp1biAyMDE4IDE0OjE5OjEwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGF0dHI6IGZpeCB1dGltZSBmb3Igc3ltbGluaworCit1bmZzMyBoYXMgYW4gb2xkIGRlZmVjdCB0aGF0IGl0IGNhbiBub3QgY2hhbmdlIHRoZSB0aW1lc3RhbXBzIG9mIGEKK3N5bWxpbmsgZmlsZSBiZWNhdXNlIGl0IG9ubHkgdXNlcyB1dGltZSgpLCB3aGljaCB3aWxsIGZvbGxvdyB0aGUKK3N5bWxpbmsuIFRoaXMgd2lsbCBub3QgY2F1c2UgYW4gZXJyb3IgaWYgdGhlIHN5bWxpbmsgcG9pbnRzIHRvIGFuCitleGlzdGVudCBmaWxlLiBCdXQgdW5kZXIgc29tZSBzcGVjaWFsIHNpdHVhdGlvbiwgc3VjaCBhcyBpbnN0YWxsaW5nCithIHJwbSBwYWNrYWdlLCBycG0gdG9vbCB3aWxsIGNyZWF0ZSB0aGUgc3ltbGluayBmaXJzdCBhbmQgdHJ5IHRvCittb2RpZnkgdGhlIHRpbWVzdGFtcHMgb2YgaXQsIHdoZW4gdGhlIHRhcmdldCBmaWxlIGlzIG5vbi1leGlzdGVudC4KK1RoaXMgd2lsbCBjYXVzZSBhbiBFU1RBTEUgZXJyb3IuIE1ha2luZyBycG0gdG9vbCBpZ25vcmUgdGhpcyBlcnJvcgoraXMgYSBzb2x1dGlvbiwgYnV0IG5vdCB0aGUgYmVzdCBvbmUuIEFuIGFjY2VwdGFibGUgYXBwcm9hY2ggaXMKK01ha2luZyB1bmZzMyBzdXBwb3J0IGx1dGltZXMoKSwgd2hpY2ggY2FuIG1vZGlmeSB0aGUgc3ltbGluayBmaWxlCitpdHNlbGYuIENvbnNpZGVyaW5nIG5vdCBldmVyeSBzeXN0ZW0gc3VwcG9ydCB0aGlzIGZ1bmN0aW9uLCBzbyBhCitmdW5jdGlvbiBjaGVja2luZyBpcyBuZWNlc3NhcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL3VuZnMzL2J1Z3MvMTIvXQorCitTaWduZWQtb2ZmLWJ5OiBSdWkgV2FuZyA8cnVpLndhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGF0dHIuYyAgICAgICAgIHwgMTUgKysrKysrKysrKystLS0tCisgYmFja2VuZF91bml4LmggfCAgMiArKworIGNvbmZpZ3VyZS5hYyAgIHwgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2F0dHIuYyBiL2F0dHIuYworaW5kZXggNzNlNWM3NS4uNDI3ZDBlMiAxMDA2NDQKKy0tLSBhL2F0dHIuYworKysrIGIvYXR0ci5jCitAQCAtMjgwLDcgKzI4MCw3IEBAIHBvc3Rfb3BfYXR0ciBnZXRfcG9zdF9jYWNoZWQoc3RydWN0IHN2Y19yZXEgKiByZXEpCisgc3RhdGljIG5mc3N0YXQzIHNldF90aW1lKGNvbnN0IGNoYXIgKnBhdGgsIGJhY2tlbmRfc3RhdHN0cnVjdCBidWYsIHNhdHRyMyBuZXcpCisgeworICAgICB0aW1lX3QgbmV3X2F0aW1lLCBuZXdfbXRpbWU7CistICAgIHN0cnVjdCB1dGltYnVmIHV0aW07CisrICAgIHN0cnVjdCB0aW1ldmFsIHN0YW1wc1syXTsKKyAgICAgaW50IHJlczsKKworICAgICAvKiBzZXQgYXRpbWUgYW5kIG10aW1lICovCitAQCAtMzAyLDEwICszMDIsMTcgQEAgc3RhdGljIG5mc3N0YXQzIHNldF90aW1lKGNvbnN0IGNoYXIgKnBhdGgsIGJhY2tlbmRfc3RhdHN0cnVjdCBidWYsIHNhdHRyMyBuZXcpCisJZWxzZQkJCSAgICAgICAvKiBET05UX0NIQU5HRSAqLworCSAgICBuZXdfbXRpbWUgPSBidWYuc3RfbXRpbWU7CisKKy0JdXRpbS5hY3RpbWUgPSBuZXdfYXRpbWU7CistCXV0aW0ubW9kdGltZSA9IG5ld19tdGltZTsKKysJc3RhbXBzWzBdLnR2X3NlYyA9IG5ld19hdGltZTsKKysJc3RhbXBzWzBdLnR2X3VzZWMgPSAwOworKwlzdGFtcHNbMV0udHZfc2VjID0gbmV3X210aW1lOworKwlzdGFtcHNbMV0udHZfdXNlYyA9IDA7CisrCisrI2lmIEhBVkVfTFVUSU1FUworKwlyZXMgPSBiYWNrZW5kX2x1dGltZXMocGF0aCwgc3RhbXBzKTsKKysjZWxzZQorKwlyZXMgPSBiYWNrZW5kX3V0aW1lcyhwYXRoLCBzdGFtcHMpOworKyNlbmRpZgorCistCXJlcyA9IGJhY2tlbmRfdXRpbWUocGF0aCwgJnV0aW0pOworCWlmIChyZXMgPT0gLTEpCisJICAgIHJldHVybiBzZXRhdHRyX2VycigpOworICAgICB9CitkaWZmIC0tZ2l0IGEvYmFja2VuZF91bml4LmggYi9iYWNrZW5kX3VuaXguaAoraW5kZXggZmJjMmFmMy4uODEzZmZkMyAxMDA2NDQKKy0tLSBhL2JhY2tlbmRfdW5peC5oCisrKysgYi9iYWNrZW5kX3VuaXguaAorQEAgLTYxLDYgKzYxLDggQEAKKyAjZGVmaW5lIGJhY2tlbmRfc3ltbGluayBzeW1saW5rCisgI2RlZmluZSBiYWNrZW5kX3RydW5jYXRlIHRydW5jYXRlCisgI2RlZmluZSBiYWNrZW5kX3V0aW1lIHV0aW1lCisrI2RlZmluZSBiYWNrZW5kX3V0aW1lcyB1dGltZXMKKysjZGVmaW5lIGJhY2tlbmRfbHV0aW1lcyBsdXRpbWVzCisgI2RlZmluZSBiYWNrZW5kX3N0YXRzdHJ1Y3Qgc3RydWN0IHN0YXQKKyAjZGVmaW5lIGJhY2tlbmRfZGlyc3RyZWFtIERJUgorICNkZWZpbmUgYmFja2VuZF9zdGF0dmZzc3RydWN0IHN0cnVjdCBzdGF0dmZzCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhZWVjNTk4Li5lYTdmMTY3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNyw2ICszNyw3IEBAIEFDX0NIRUNLX0ZVTkNTKHNldHJlc3VpZCBzZXRyZXNnaWQpCisgQUNfQ0hFQ0tfRlVOQ1ModnN5c2xvZykKKyBBQ19DSEVDS19GVU5DUyhsY2hvd24pCisgQUNfQ0hFQ0tfRlVOQ1Moc2V0Z3JvdXBzKQorK0FDX0NIRUNLX0ZVTkNTKGx1dGltZXMpCisgVU5GUzNfU09MQVJJU19SUEMKKyBVTkZTM19QT1JUTUFQX0RFRklORQorIFVORlMzX0NPTVBJTEVfV0FSTklOR1MKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKaW5kZXggODEyN2U0YS4uNWE4MWE4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKQEAgLTI5LDcgKzI5LDggQEAKICAgICAgICAgICAgZmlsZTovL3JlbGF0aXZlX21heF9zb2NrZXRfcGF0aF9sZW4ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdGNwX25vX2RlbGF5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZGFlbW9uLmMtTGlidGlycGMtcG9ydGluZy1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXR0ci1maXgtdXRpbWUtZm9yLXN5bWxpbmsucGF0Y2ggXAorICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIyZTQzZTQ3MWM3N2FkZTAzMzE5MDFjNDBiOGY4ZTlhMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTAwOTQ2OGE5YmEwN2I3MmVhOTM3ODBkMDI1YTYzYWI0ZTU1YmY4ZmMzMTI3ODAzYzI5NmYwOTAwZmUxYmFjIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYwppbmRleCBiMjJmYWFkLi5mNjgwNjQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKQEAgLTI0LDEyICsyNCwxNSBAQAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7U0hSVF9WRVJ9L3ZhcGkgJHtsaWJkaXJ9LyR7QlBOfS0ke1NIUlRfVkVSfS8iCiBGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZGV2aGVscCIKIAorIyAuZ2lyIGZpbGVzIGZyb20gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGFyZSBpbnN0YWxsZWQgdG8gJHtsaWJkaXJ9IHdoZW4gbXVsdGlsaWIgaXMgZW5hYmxlZAorR0lSRElSX09QVCA9ICIke0AnLS1naXJkaXI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lyLTEuMCcgaWYgZC5nZXRWYXIoJ01VTFRJTElCUycpIGVsc2UgJyd9IgorCiBkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CiAgICAgICAgICMgV3JpdGUgb3V0IGEgdmFwaWdlbiB3cmFwcGVyIHRoYXQgd2lsbCBiZSBwcm92aWRlZCBieSBwa2ctY29uZmlnIGZpbGUgaW5zdGFsbGVkIGluIHRhcmdldCBzeXNyb290CiAgICAgICAgICMgVGhlIHdyYXBwZXIgd2lsbCBjYWxsIGEgbmF0aXZlIHZhcGlnZW4KICAgICAgICAgY2F0ID4gJHtCfS92YXBpZ2VuLXdyYXBwZXIgPDwgRU9GCiAjIS9iaW4vc2gKLXZhcGlnZW4tJHtTSFJUX1ZFUn0gIlwkQCIKK3ZhcGlnZW4tJHtTSFJUX1ZFUn0gJHtHSVJESVJfT1BUfSAiXCRAIgogRU9GCiAgICAgICAgIGNobW9kICt4ICR7Qn0vdmFwaWdlbi13cmFwcGVyCiB9CkBAIC01NSwzICs1OCw1IEBACiAgICAgICAgICAgIC1lICJzfHZhcGlnZW49Lip8dmFwaWdlbj0ke2JpbmRpcn0vdmFwaWdlbi13cmFwcGVyfCIgXAogICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL3ZhcGlnZW4tJHtTSFJUX1ZFUn0ucGMKIH0KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gInZhcGlnZW4td3JhcHBlciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS9kaXNhYmxlLWdyYXBodml6LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKaW5kZXggMTVkMTg2ZC4uNDc3NTA0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKQEAgLTEsMTIgKzEsMTQgQEAKLUZyb20gZWI3MTZkYzg1NmMyMGIzZGExNDZhNGU4M2U5ODAwYmQxZjUzYzczOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTdmNmI2NjFkNzg2NWU4Y2VjZDE3YmUzNmZhYjY4ZjdmODQ0Nzk5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJpY28gVHpzY2hpY2hob2x6IDxyaWNvdHpAdWJ1bnR1LmNvbT4KIERhdGU6IFdlZCwgNiBTZXAgMjAxNyAxODo1Mjo1NSArMDIwMAogU3ViamVjdDogW1BBVENIXSBsaWJ2YWxhZG9jOiBBbGxvdyBkaXNhYmxpbmcgdGhlIGdyYXBodml6IGRlcGVuZGVuY3kgb2YKKwogIHZhbGFkb2MKIAogaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM3NQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbYnVnemlsbGEgbGluayBhYm92ZV0KKwogLS0tCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICB8IDYwICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiAgbGlidmFsYWRvYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrLS0tLQpAQCAtMTUsMTAgKzE3LDEwIEBACiAgNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzczZDVkNmIxLi4yOTFlNTAzZDUgMTAwNjQ0CitpbmRleCA3MzBjNzJkLi5hZjgxOTg2IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC05OCwzNCArOTgsMzggQEAgUEtHX0NIRUNLX01PRFVMRVMoR01PRFVMRSwgZ21vZHVsZS0yLjAgPj0gJEdMSUJfUkVRVUlSRUQpCitAQCAtMTE5LDM0ICsxMTksMzggQEAgUEtHX0NIRUNLX01PRFVMRVMoR01PRFVMRSwgZ21vZHVsZS0yLjAgPj0gJEdMSUJfUkVRVUlSRUQpCiAgQUNfU1VCU1QoR01PRFVMRV9DRkxBR1MpCiAgQUNfU1VCU1QoR01PRFVMRV9MSUJTKQogIApAQCAtODYsMTAgKzg4LDEwIEBACiAgCiAgQUNfUEFUSF9QUk9HKFtYU0xUUFJPQ10sIFt4c2x0cHJvY10sIDopCiBkaWZmIC0tZ2l0IGEvbGlidmFsYWRvYy9NYWtlZmlsZS5hbSBiL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0KLWluZGV4IDg5MjQ1ZDg2Yi4uN2MwNzQ5OGI5IDEwMDY0NAoraW5kZXggMzg0MjkyZi4uY2NlNTBkOCAxMDA2NDQKIC0tLSBhL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0KICsrKyBiL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0KLUBAIC0xMjcsMTAgKzEyNyw2IEBAIGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgPSBcCitAQCAtMTI2LDEwICsxMjYsNiBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAogIAljb250ZW50L3RhYmxlcm93LnZhbGEgXAogIAljb250ZW50L3RhZ2xldC52YWxhIFwKICAJY29udGVudC90ZXh0LnZhbGEgXApAQCAtMTAwLDcgKzEwMiw3IEBACiAgCXBhcnNlci9tYW55cnVsZS52YWxhIFwKICAJcGFyc2VyL29uZW9mcnVsZS52YWxhIFwKICAJcGFyc2VyL29wdGlvbmFscnVsZS52YWxhIFwKLUBAIC0xNTgsMTMgKzE1NCwyNCBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAorQEAgLTE1NiwxMyArMTUyLDI0IEBAIGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgPSBcCiAgCWhpZ2hsaWdodGVyL2NvZGV0b2tlbi52YWxhIFwKICAJaGlnaGxpZ2h0ZXIvaGlnaGxpZ2h0ZXIudmFsYSBcCiAgCWh0bWwvYmFzaWNkb2NsZXQudmFsYSBcCkBAIC0xMjYsMTcgKzEyOCwxOCBAQAogIGxpYnZhbGFkb2NAUEFDS0FHRV9TVUZGSVhAX2xhX1NPVVJDRVMgPSBcCiAgCWxpYnZhbGFkb2MudmFsYS5zdGFtcCBcCiAgCSQobGlidmFsYWRvY19sYV9WQUxBU09VUkNFUzoudmFsYT0uYykgXAotQEAgLTE4Miw4ICsxODksOCBAQCBsaWJ2YWxhZG9jLnZhbGEuc3RhbXA6ICQobGlidmFsYWRvY19sYV9WQUxBU09VUkNFUykKK0BAIC0xODIsOSArMTg5LDkgQEAgbGlidmFsYWRvYy52YWxhLnN0YW1wOiAkKGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMpCiAgCQktLWxpYnJhcnkgdmFsYWRvYyBcCiAgCQktLXZhcGkgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAudmFwaSBcCiAgCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGdtb2R1bGUtMi4wIFwKIC0JCS0tdmFwaWRpciAkKHRvcF9zcmNkaXIpL3ZhcGkgLS1wa2cgbGliZ3ZjIFwKICAJCS0tdmFwaWRpciAkKHRvcF9zcmNkaXIpL2dlZSAtLXBrZyBnZWUgXAorIAkJLS12YXBpZGlyICQodG9wX3NyY2RpcikvdmFsYSAtLXBrZyB2YWxhIFwKICsJCSQoTElCR1ZDX1BLRykgXAogIAkJLS1wa2cgY29uZmlnIFwKICAJCSQoZmlsdGVyICUudmFsYSAlLmMsJF4pCiAgCXRvdWNoICRACi1AQCAtMjA5LDYgKzIxNiw5IEBAIG5vZGlzdF9wa2djb25maWdfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnBjCitAQCAtMjExLDYgKzIxOCw5IEBAIG5vZGlzdF9wa2djb25maWdfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnBjCiAgCiAgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAucGM6IHZhbGFkb2MucGMKICAJY3AgJDwgJEAKQEAgLTE0Niw3ICsxNDksNyBAQAogIAogIHZhcGlkaXIgPSAkKGRhdGFkaXIpL3ZhbGEvdmFwaQogIGRpc3RfdmFwaV9EQVRBID0gdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAudmFwaQotQEAgLTIxNiw2ICsyMjYsOSBAQCBub2Rpc3RfdmFwaV9EQVRBID0gdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAuZGVwcworQEAgLTIxOCw2ICsyMjgsOSBAQCBub2Rpc3RfdmFwaV9EQVRBID0gdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAuZGVwcwogIAogIHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALmRlcHM6IHZhbGFkb2MuZGVwcwogIAljcCAkPCAkQApAQCAtMTU3LDcgKzE2MCw3IEBACiAgRVhUUkFfRElTVCA9IFwKICAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKSBcCiBkaWZmIC0tZ2l0IGEvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgYi9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQotaW5kZXggY2M5ZWE0ZWQ3Li40MzJjMzgxOGYgMTAwNjQ0CitpbmRleCAzN2M3MzFjLi5lMDMyNmVmIDEwMDY0NAogLS0tIGEvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEKICsrKyBiL2xpYnZhbGFkb2MvaHRtbC9iYXNpY2RvY2xldC52YWxhCiBAQCAtNDYsNyArNDYsMTEgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgewpAQCAtMTk5LDI1ICsyMDIsMjMgQEAKICAKICAJcHVibGljIHZvaWQgd3JpdGVfbmFtZXNwYWNlX2NvbnRlbnQgKE5hbWVzcGFjZSBub2RlLCBBcGkuTm9kZT8gcGFyZW50KSB7CiBkaWZmIC0tZ2l0IGEvbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYSBiL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEKLWluZGV4IDE1ZWQ5ZWZkMS4uZmUwZDcwNWQ0IDEwMDY0NAoraW5kZXggNWFhNGFmZC4uZTc5YjBiOCAxMDA2NDQKIC0tLSBhL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEKICsrKyBiL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEKLUBAIC00MywxMiArNDMsMTYgQEAgcHVibGljIGNsYXNzIFZhbGFkb2MuSHRtbC5NYXJrdXBXcml0ZXIgOiBWYWxhZG9jLk1hcmt1cFdyaXRlciB7Ci0gCQl9LCB4bWxfZGVjbGFyYXRpb24pOworQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWMgY2xhc3MgVmFsYWRvYy5IdG1sLk1hcmt1cFdyaXRlciA6IFZhbGFkb2MuTWFya3VwV3JpdGVyIHsKKyAJCX0KICAJfQogIAogKyNpZiBIQVZFX0dSQVBIVklaCi0gCXB1YmxpYyBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAoQ2hhcnRzLkNoYXJ0IGNoYXJ0KSB7CisgCXB1YmxpYyB1bm93bmVkIE1hcmt1cFdyaXRlciBhZGRfdXNlbWFwIChDaGFydHMuQ2hhcnQgY2hhcnQpIHsKICAJCXN0cmluZz8gYnVmID0gKHN0cmluZz8pIGNoYXJ0LndyaXRlX2J1ZmZlciAoImNtYXB4Iik7CiAgCQlpZiAoYnVmICE9IG51bGwpIHsKICAJCQlyYXdfdGV4dCAoIlxuIik7CiAgCQkJcmF3X3RleHQgKCghKSBidWYpOwogIAkJfQogKyNlbHNlCi0rCXB1YmxpYyBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAodm9pZCogY2hhcnQpIHsKKysJcHVibGljIHVub3duZWQgTWFya3VwV3JpdGVyIGFkZF91c2VtYXAgKHZvaWQqIGNoYXJ0KSB7CiArI2VuZGlmCiAgCiAgCQlyZXR1cm4gdGhpczsKICAJfQotLS0gCi0yLjE0LjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmJhZjY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAotCSAgICAgZmlsZTovL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2ggXAotCSAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM3ZWRkMDQ2N2QwNTZmZDllMzkzN2QwYmJjZWRhODBiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmYTc0NmI1MWNkNjZlNDM1NzdkMWRhMDZhODBiNzA4YzI4NzVjYWRhYWZlZTc3ZTk3MDBlYTM1Y2YyMzg4MmMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Mi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjAyZTBjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDIuMC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAorCSAgICAgZmlsZTovL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2ggXAorCSAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImFhNmViODA5N2QyNWI1ODQ3YWQzZmFiMzRjMGZmODY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyYTU1OTg2ZGEyM2NmM2FhYWZkNzYyNGMzMmRiMmExYWYxMWM4NDE5ZTBiYjA3NTE3MjdkMTBmMWY3YWI3YmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLUd1YXJkLWFnYWluc3QtX19HTElCQ19QUkVSRVEtZm9yLW11c2wtbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtR3VhcmQtYWdhaW5zdC1fX0dMSUJDX1BSRVJFUS1mb3ItbXVzbC1saWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZmU2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLUd1YXJkLWFnYWluc3QtX19HTElCQ19QUkVSRVEtZm9yLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDFiNWI2ZjgyN2FjMTE1M2E0MWZjOTNlNzhiZjM0Y2NkZjU3MjBiOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE5IE9jdCAyMDE4IDEwOjMxOjEyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEd1YXJkIGFnYWluc3QgX19HTElCQ19QUkVSRVEgZm9yIG11c2wgbGliYworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVtY2hlY2svdGVzdHMvbGludXgvc3lzLXN0YXR4LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzLXN0YXR4LmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zeXMtc3RhdHguYworaW5kZXggZmU5ZjliYTQ1Li40NzNjMmNkN2YgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zeXMtc3RhdHguYworKysrIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzLXN0YXR4LmMKK0BAIC03LDExICs3LDE2IEBACisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKysKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCisgI2lmIF9fR0xJQkNfUFJFUkVRKDIsMjgpCisgLyogc3RydWN0IHN0YXR4IHByb3ZpZGVkIGluIHN5cy9zdGF0LmggKi8KKyAjZWxzZQorICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CisgI2VuZGlmCisrI2Vsc2UKKysjaW5jbHVkZSA8bGludXgvc3RhdC5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxlcnJuby5oPgorIAorIGludCBjaGVja19zdGF0MjsKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtTWFrZS1sb2NhbC1mdW5jdGlvbnMtc3RhdGljLXRvLWF2b2lkLWFzc2VtYmxlci1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtTWFrZS1sb2NhbC1mdW5jdGlvbnMtc3RhdGljLXRvLWF2b2lkLWFzc2VtYmxlci1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWU1ZWEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1NYWtlLWxvY2FsLWZ1bmN0aW9ucy1zdGF0aWMtdG8tYXZvaWQtYXNzZW1ibGVyLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMTgyIEBACitGcm9tIDIxNTVjMWIyY2YwMGU3NDRlMjgwYzQ5M2ViNzRiZjQ1N2RmY2MzYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDIxIE9jdCAyMDE4IDE1OjA5OjMxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbG9jYWwgZnVuY3Rpb25zIHN0YXRpYyB0byBhdm9pZCBhc3NlbWJsZXIgZXJyb3IKKworQXZvaWQgbWlwczMyIHgtY29tcGlsZXIgd2FybmluZ3Mgc3VjaCBhczoKKworfCAuLi8uLi8uLi92YWxncmluZC0zLjE0LjAvaGVsZ3JpbmQvdGVzdHMvYW5ub3RhdGVfaGJlZm9yZS5jOjM2MDo2OiB3YXJuaW5nOiBubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yICdkb19zaWduYWwnIFstV21pc3NpbmctcHJvdG90eXBlc10KK3wgIHZvaWQgZG9fc2lnbmFsICggVVdvcmQqIHcgKQorfCAgICAgICBefn5+fn5+fn4KKworYnkgbWFraW5nIGZ1bmN0aW9ucyBhbmQgZ2xvYmFsIHZhcmlhYmxlcyB0aGF0IGFyZSBmaWxlIHNjb3BlIGJlIHN0YXRpYworYW5kIG1vcmUgaW1wb3J0YW50bHkgYWxzbyBhdm9pZCBhbiBhc3NlbWJsZXIgZXJyb3I6CisKKy90bXAvY2NlMjJpaXcuczogQXNzZW1ibGVyIG1lc3NhZ2VzOgorL3RtcC9jY2UyMmlpdy5zOjQ0NjogRXJyb3I6IHN5bWJvbCBgZXhpdF8wJyBpcyBhbHJlYWR5IGRlZmluZWQKKy90bXAvY2NlMjJpaXcuczo0NDg6IEVycm9yOiBzeW1ib2wgYGV4aXQnIGlzIGFscmVhZHkgZGVmaW5lZAorL3RtcC9jY2UyMmlpdy5zOjkxNTogRXJyb3I6IHN5bWJvbCBgZXhpdF8wJyBpcyBhbHJlYWR5IGRlZmluZWQKKy90bXAvY2NlMjJpaXcuczo5MTc6IEVycm9yOiBzeW1ib2wgYGV4aXQnIGlzIGFscmVhZHkgZGVmaW5lZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorLS0tCisgaGVsZ3JpbmQvdGVzdHMvYW5ub3RhdGVfaGJlZm9yZS5jIHwgMzQgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2hlbGdyaW5kL3Rlc3RzL2Fubm90YXRlX2hiZWZvcmUuYyBiL2hlbGdyaW5kL3Rlc3RzL2Fubm90YXRlX2hiZWZvcmUuYworaW5kZXggZTMxMTcxNGY3Li5mNTU1MTRlNDUgMTAwNjQ0CistLS0gYS9oZWxncmluZC90ZXN0cy9hbm5vdGF0ZV9oYmVmb3JlLmMKKysrKyBiL2hlbGdyaW5kL3Rlc3RzL2Fubm90YXRlX2hiZWZvcmUuYworQEAgLTI0LDcgKzI0LDcgQEAgdHlwZWRlZiAgdW5zaWduZWQgbG9uZyBpbnQgIFVXb3JkOworIAorIC8vIHBwYzY0CisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgIFVXb3JkIG9sZCwgc3VjY2VzczsKKyAKK0BAIC01Nyw3ICs1Nyw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIHBwYzMyCisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgIFVXb3JkIG9sZCwgc3VjY2VzczsKKyAKK0BAIC05MCw3ICs5MCw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIGFtZDY0CisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgICBVV29yZCBibG9ja1s0XSA9IHsgKFVXb3JkKWFkZHIsIGV4cGVjdGVkLCBueXUsIDIgfTsKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKK0BAIC0xMTMsNyArMTEzLDcgQEAgVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisgCisgLy8geDg2CisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgICBVV29yZCBibG9ja1s0XSA9IHsgKFVXb3JkKWFkZHIsIGV4cGVjdGVkLCBueXUsIDIgfTsKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKK0BAIC0xMzgsNyArMTM4LDcgQEAgVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisgCisgLy8gYXJtCisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgIFVXb3JkIG9sZCwgc3VjY2VzczsKKyAgIFVXb3JkIGJsb2NrWzJdID0geyAoVVdvcmQpYWRkciwgbnl1IH07CitAQCAtMTcxLDcgKzE3MSw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIGFybTY0CisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgIFVXb3JkIG9sZCwgc3VjY2VzczsKKyAgIFVXb3JkIGJsb2NrWzJdID0geyAoVVdvcmQpYWRkciwgbnl1IH07CitAQCAtMjA0LDcgKzIwNCw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIHMzOTB4CisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1coVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyhVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisgeworICAgIGludCBjYzsKKyAKK0BAIC0yMjMsNyArMjIzLDcgQEAgVVdvcmQgZG9fYWNhc1coVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIG1pcHMzMgorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICBVV29yZCBzdWNjZXNzOworICAgVVdvcmQgYmxvY2tbM10gPSB7IChVV29yZClhZGRyLCBueXUsIGV4cGVjdGVkfTsKK0BAIC0yNTYsNyArMjU2LDcgQEAgVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisgCisgLy8gbWlwczY0CisgLyogcmV0dXJuIDEgaWYgc3VjY2VzcywgMCBpZiBmYWlsdXJlICovCistVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisrc3RhdGljIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgIFVXb3JkIHN1Y2Nlc3M7CisgICBVV29yZCBibG9ja1szXSA9IHsgKFVXb3JkKWFkZHIsIG55dSwgZXhwZWN0ZWR9OworQEAgLTI4Nyw3ICsyODcsNyBAQCBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyAKKyAjZW5kaWYKKyAKKy12b2lkIGF0b21pY19pbmNXICggVVdvcmQqIHcgKQorK3N0YXRpYyB2b2lkIGF0b21pY19pbmNXICggVVdvcmQqIHcgKQorIHsKKyAgICB3aGlsZSAoMSkgeworICAgICAgIFVXb3JkIG9sZCA9ICp3OworQEAgLTMwMSw3ICszMDEsNyBAQCB2b2lkIGF0b21pY19pbmNXICggVVdvcmQqIHcgKQorIAorICNkZWZpbmUgTk5OIDEwMDAwMDAKKyAKKy12b2lkKiB0aHJlYWRfZm4gKCB2b2lkKiBhcmcgKQorK3N0YXRpYyB2b2lkKiB0aHJlYWRfZm4gKCB2b2lkKiBhcmcgKQorIHsKKyAgIFVXb3JkKiB3ID0gKFVXb3JkKilhcmc7CisgICBpbnQgaTsKK0BAIC0zMzEsMTAgKzMzMSwxMCBAQCBpbnQgbWFpbiAoIHZvaWQgKQorIAorICNlbmRpZgorIAorLWludCBzaGFyZWRfdmFyID0gMDsgIC8vIGlzIG5vdCByYWNlZCB1cG9uCisrc3RhdGljIGludCBzaGFyZWRfdmFyID0gMDsgIC8vIGlzIG5vdCByYWNlZCB1cG9uCisgCisgCistdm9pZCBkZWxheVhtcyAoIGludCBpICkKKytzdGF0aWMgdm9pZCBkZWxheVhtcyAoIGludCBpICkKKyB7CisgICAgc3RydWN0IHRpbWVzcGVjIHRzID0geyAwLCAxICogMTAwMCAqIDEwMDAgfTsKKyAgICAvLyBXZSBkbyB0aGUgc2xlZXAgaW4gc21hbGwgcGllY2VzIHRvIGhhdmUgc2NoZWR1bGluZworQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIGRlbGF5WG1zICggaW50IGkgKQorICAgIH0KKyB9CisgCistdm9pZCBkb193YWl0ICggVVdvcmQqIHcgKQorK3N0YXRpYyB2b2lkIGRvX3dhaXQgKCBVV29yZCogdyApCisgeworICAgVVdvcmQgdzAgPSAqdzsKKyAgIFVXb3JkIHZvbGF0aWxlICogd1YgPSB3OworQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIGRvX3dhaXQgKCBVV29yZCogdyApCisgICBBTk5PVEFURV9IQVBQRU5TX0FGVEVSKHcpOworIH0KKyAKKy12b2lkIGRvX3NpZ25hbCAoIFVXb3JkKiB3ICkKKytzdGF0aWMgdm9pZCBkb19zaWduYWwgKCBVV29yZCogdyApCisgeworICAgQU5OT1RBVEVfSEFQUEVOU19CRUZPUkUodyk7CisgICBhdG9taWNfaW5jVyh3KTsKK0BAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBkb19zaWduYWwgKCBVV29yZCogdyApCisgCisgCisgCistdm9pZCogdGhyZWFkX2ZuMSAoIHZvaWQqIGFyZyApCisrc3RhdGljIHZvaWQqIHRocmVhZF9mbjEgKCB2b2lkKiBhcmcgKQorIHsKKyAgIFVXb3JkKiB3ID0gKFVXb3JkKilhcmc7CisgICBkZWxheVhtcyg1MDApOyAgICAvLyBlbnN1cmUgdDIgZ2V0cyB0byBpdHMgd2FpdCBmaXJzdAorQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkKiB0aHJlYWRfZm4xICggdm9pZCogYXJnICkKKyAgIHJldHVybiBOVUxMOworIH0KKyAKKy12b2lkKiB0aHJlYWRfZm4yICggdm9pZCogYXJnICkKKytzdGF0aWMgdm9pZCogdGhyZWFkX2ZuMiAoIHZvaWQqIGFyZyApCisgeworICAgVVdvcmQqIHcgPSAoVVdvcmQqKWFyZzsKKyAgIGRvX3dhaXQodyk7ICAgICAgLy8gd2FpdCBmb3IgaC1iIGVkZ2UgZnJvbSBmaXJzdCB0aHJlYWQKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYxNmExYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDYyOWFjNDkyYjFkOWJjNzA5ZDE3MzM3ZWI5YjFjMjg2MDNlY2EyNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxMTowMToyNSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBtZW1jaGVjay90ZXN0czogVXNlIHVjb250ZXh0X3QgaW5zdGVhZCBvZiBzdHJ1Y3QgdWNvbnRleHQKLQotZ2xpYmMgMi4yNiBkb2VzIG5vdCBleHBvc2Ugc3RydWN0IHVjb250ZXh0IGFueW1vcmUKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0zODE3NjldCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBtZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKLWluZGV4IGZmYjQ5YzYuLmFjYzQxMDkgMTAwNjQ0Ci0tLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKLSsrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYwotQEAgLTExLDcgKzExLDcgQEAKLSAvLyBjaGVja3MgdGhhdCBWYWxncmluZCBub3RpY2VzIHRoZWlyIHN0YWNrIGNoYW5nZXMgcHJvcGVybHkuCi0gCi0gI2lmZGVmIF9fR0xJQkNfXwotLXR5cGVkZWYgIHN0cnVjdCB1Y29udGV4dCAgbXljb250ZXh0OwotK3R5cGVkZWYgdWNvbnRleHRfdCAgbXljb250ZXh0OwotIAotIG15Y29udGV4dCBjdHgxLCBjdHgyLCBvbGRjOwotIGludCBjb3VudDsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoCmluZGV4IDNmOWYzM2IuLjQ4MGZlMzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1jb250ZXh0LUFQSXMtYXJlLW5vdC1hdmFpbGFibGUtb24tbXVzbC5wYXRjaApAQCAtMSwxNyArMSwyMCBAQAotRnJvbSA4NjJiODA3MDc2ZDU3ZjJmNThlZDlkNTcyZGRhYzhiYjQwMjc3NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MDE6MTAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzZdIGNvbnRleHQgQVBJcyBhcmUgbm90IGF2YWlsYWJsZSBvbiBtdXNsCitGcm9tIGJkNGU5MjZlN2UxNDc0N2IzY2Q0ZDdiMmExYmQ1NDEwYjIyZjNlYTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE2IE9jdCAyMDE4IDIxOjI3OjQ2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbnRleHQgQVBJcyBhcmUgbm90IGF2YWlsYWJsZSBvbiBtdXNsCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCitVcGRhdGVkIHBhdGNoIGZvciB2YWxncmluZC0zLjE0CisKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CiAtLS0KICBtZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgfCA3ICsrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKLWluZGV4IGE5NzhmYzIuLmZmYjQ5YzYgMTAwNjQ0CitpbmRleCA3Zjk3YjkwYTUuLmEyNmNiNGFlNiAxMDA2NDQKIC0tLSBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYwogKysrIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCiBAQCAtMTAsNiArMTAsNyBAQApAQCAtMTksNyArMjIsNyBAQAogIC8vIGNoZWNrcyB0aGF0IFZhbGdyaW5kIG5vdGljZXMgdGhlaXIgc3RhY2sgY2hhbmdlcyBwcm9wZXJseS4KICAKICsjaWZkZWYgX19HTElCQ19fCi0gdHlwZWRlZiAgc3RydWN0IHVjb250ZXh0ICBteWNvbnRleHQ7CisgdHlwZWRlZiAgdWNvbnRleHRfdCAgbXljb250ZXh0OwogIAogIG15Y29udGV4dCBjdHgxLCBjdHgyLCBvbGRjOwogQEAgLTUxLDkgKzUyLDExIEBAIGludCBpbml0X2NvbnRleHQobXljb250ZXh0ICp1YykKQEAgLTQ1LDUgKzQ4LDUgQEAKICAgICAgcmV0dXJuIDA7CiAgfQogLS0gCi0yLjEzLjEKKzIuMTcuMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWZpeC1icm9rZW4taW5saW5lLWFzbS1pbi10ZXN0cy1vbi1taXBzMzItbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWZpeC1icm9rZW4taW5saW5lLWFzbS1pbi10ZXN0cy1vbi1taXBzMzItbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZjI5NWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1maXgtYnJva2VuLWlubGluZS1hc20taW4tdGVzdHMtb24tbWlwczMyLWxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA2M2NlMzYzOTYzNDhlN2M0YzAyMWNmZmE2NTJkMmUzZDIwZjc5NjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyNyBKdWwgMjAxOCAxNzo1MTo1NCArMDgwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZml4IGJyb2tlbiBpbmxpbmUgYXNtIGluIHRlc3RzIG9uIG1pcHMzMi1saW51eAotCi1XaGlsZSBidWlsZCB0ZXN0cyhgbWFrZSBjaGVjaycpIHdpdGggZ2NjIDguMS4wIG9uIG1pcHMzMi1saW51eCwKLXRoZXJlIGlzIGEgZmFpbHVyZQotW3NuaXBdCi18bWlwcy13cnNtbGxpYjMyLWxpbnV4LWdjYyAgLW1lYiAtbWFiaT0zMiAtbWhhcmQtZmxvYXQgLW1hcmNoPW1pcHMzMgotLWMgLW8gdGMwOF9oYmwyLXRjMDhfaGJsMi5vIGB0ZXN0IC1mICd0YzA4X2hibDIuYycgfHwgZWNobyAnLi4vLi4vLi4vCi12YWxncmluZC0zLjEzLjAvaGVsZ3JpbmQvdGVzdHMvJ2B0YzA4X2hibDIuYwotfC90bXAvY2MzN2FKeFEuczogQXNzZW1ibGVyIG1lc3NhZ2VzOgotfC90bXAvY2MzN2FKeFEuczoyNzU6IEVycm9yOiBzeW1ib2wgYEwxeHl6enkxbWFpbicgaXMgYWxyZWFkeSBkZWZpbmVkCi18TWFrZWZpbGU6MTMyMzogcmVjaXBlIGZvciB0YXJnZXQgJ3RjMDhfaGJsMi10YzA4X2hibDIubycgZmFpbGVkCi1bc25pcF0KLQotUmVtb3ZlIHRoZSBkdXBsaWNhdGVkIEwxeHl6enkxbWFpbiwgYW5kIHVzZSBsb2NhbCBzeW1ib2wgdG8gcmVwbGFjZS4KLWh0dHA6Ly90aWdjYy50aWNhbGMub3JnL2RvYy9nbnVhc20uaHRtbCNTRUM0NgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTM5NjkwNl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGhlbGdyaW5kL3Rlc3RzL3RjMDhfaGJsMi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2hlbGdyaW5kL3Rlc3RzL3RjMDhfaGJsMi5jIGIvaGVsZ3JpbmQvdGVzdHMvdGMwOF9oYmwyLmMKLWluZGV4IDJhNzU3YTAwOC4uZjY2MGQ4MmRkIDEwMDY0NAotLS0tIGEvaGVsZ3JpbmQvdGVzdHMvdGMwOF9oYmwyLmMKLSsrKyBiL2hlbGdyaW5kL3Rlc3RzL3RjMDhfaGJsMi5jCi1AQCAtMTIxLDEyICsxMjEsMTIgQEAKLSAjZWxpZiBkZWZpbmVkKFBMQVRfbWlwczMyX2xpbnV4KSB8fCBkZWZpbmVkKFBMQVRfbWlwczY0X2xpbnV4KQotICMgIGRlZmluZSBJTkMoX2x2YWwsX2xxdWFsKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAiTDF4eXp6eTEiIF9scXVhbCI6XG4iICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICIxOlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIiAgICAgICAgbW92ZSAgJHQwLCAlMFxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAiICAgICAgICBsbCAgICAkdDEsIDAoJHQwKVxuIiAgICAgICAgICAgICAgICAgXAotICAgICAgICIgICAgICAgIGFkZGl1ICR0MSwgJHQxLCAxXG4iICAgICAgICAgICAgICAgICBcCi0gICAgICAgIiAgICAgICAgc2MgICAgJHQxLCAwKCR0MClcbiIgICAgICAgICAgICAgICAgIFwKLS0gICAgICAiICAgICAgICBiZXF6ICAkdDEsIEwxeHl6enkxIiBfbHF1YWwgICAgICAgICAgXAotKyAgICAgICIgICAgICAgIGJlcXogICR0MSwgMWJcbiIgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgOiAvKm91dCovIDogLyppbiovICJyIigmKF9sdmFsKSkgICAgICAgICAgICAgIFwKLSAgICAgICA6IC8qdHJhc2gqLyAidDAiLCAidDEiLCAibWVtb3J5IiAgICAgICAgICAgICAgXAotICAgICAgICAgKQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmluZGV4IDM5MDIyZDAuLjc1YmIwYWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDczOTQyMWUyNTNlNmViYTNlYjY0Mzg2NTE4MjJmODBmYTljMDUwMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTUgRGVjIDIwMTUgMTU6MzE6NTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMuCitGcm9tIDhmOTE2ZGNiMzk1ZmU1YTI0MjlmMjg2N2JhNGRhZjhlZjNhZjA3M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE2IE9jdCAyMDE4IDIxOjAxOjA0IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMuCiAKIFRoZSBwYXRocyB0byB0aGVzZSBmaWxlcyBuZWVkIHRvIGJlIGZ1bGx5IHNwZWNpZmllZCBpbgogdGhlIG91dCBvZiB0cmVlIGJ1aWxkIGNhc2UuIGdsaWJjLTIuWC5zdXBwIGlzIGEgZ2VuZXJhdGVkIGZpbGUgc28gdGhlIGZ1bGwgcGF0aApAQCAtOSwxOCArOSwyMSBAQAogCiBSUCAyMDEzLzAzLzIzCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitQYXRjaCByZWZyZXNoZWQgZm9yIHZhbGdyaW5kLTMuMTQuMC4KIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgogLS0tCi0gY29uZmlndXJlLmFjIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY29uZmlndXJlLmFjIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMzg3NDI5NmZkZTBiLi43YTViYTJjODU1N2UgMTAwNjQ0CitpbmRleCBjMThhZTVmMmEuLjk5NjY3Y2U1NyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzczLDUwICszNzMsNTAgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KK0BAIC0zOTIsNTAgKzM5Miw1MCBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgogIAkgICAgIDkuKikKICAJCSAgQUNfTVNHX1JFU1VMVChbRGFyd2luIDkueCAoJHtrZXJuZWx9KSAvIE1hYyBPUyBYIDEwLjUgTGVvcGFyZF0pCiAgCQkgIEFDX0RFRklORShbREFSV0lOX1ZFUlNdLCBEQVJXSU5fMTBfNSwgW0RhcndpbiAvIE1hYyBPUyBYIHZlcnNpb25dKQpAQCAtODUsMTYgKzg4LDE4IEBACiArCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW4xNi5zdXBwICR7REVGQVVMVF9TVVBQfSIKICsJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjEwLWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKICAJCSAgOzsKLSAgICAgICAgICAgICAgKikgCi0gCQkgIEFDX01TR19SRVNVTFQoW3Vuc3VwcG9ydGVkICgke2tlcm5lbH0pXSkKLUBAIC00MjgsMTMgKzQyOCwxMyBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgotICAgICAgc29sYXJpczIuMTEqKQotICAgICAgICAgQUNfTVNHX1JFU1VMVChbb2sgKCR7aG9zdF9vc30pXSkKLSAgICAgICAgIFZHQ09ORl9PUz0ic29sYXJpcyIKLS0gICAgICAgIERFRkFVTFRfU1VQUD0ic29sYXJpczExLnN1cHAgJHtERUZBVUxUX1NVUFB9IgotKyAgICAgICAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL3NvbGFyaXMxMS5zdXBwICR7REVGQVVMVF9TVVBQfSIKKyAJICAgICAxNy4qKQorIAkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gMTcueCAoJHtrZXJuZWx9KSAvIG1hY09TIDEwLjEzIEhpZ2ggU2llcnJhXSkKK0BAIC00NjAsNyArNDYwLDcgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KKyAgICAgICAgICAgICAgICAgIERFRkFVTFRfU1VQUD0ic29sYXJpczEyLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKikKKy0gICAgICAgICAgICAgICAgIERFRkFVTFRfU1VQUD0ic29sYXJpczExLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorKyAgICAgICAgICAgICAgICAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL3NvbGFyaXMxMS5zdXBwICR7REVGQVVMVF9TVVBQfSIKKyAgICAgICAgICAgICAgICAgIDs7CisgCWVzYWMKICAgICAgICAgIDs7Ci0gCitAQCAtNDY4LDcgKzQ2OCw3IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCiAgICAgICBzb2xhcmlzMi4xMiopCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtvayAoJHtob3N0X29zfSldKQogICAgICAgICAgVkdDT05GX09TPSJzb2xhcmlzIgpAQCAtMTAzLDcgKzEwOCw3IEBACiAgICAgICAgICA7OwogIAogICAgICAgKikgCi1AQCAtOTgyLDI5ICs5ODIsMjkgQEAgQUNfTVNHX0NIRUNLSU5HKFt0aGUgZ2xpYmMgdmVyc2lvbl0pCitAQCAtMTA1MSwyOSArMTA1MSwyOSBAQCBBQ19NU0dfQ0hFQ0tJTkcoW3RoZSBnbGliYyB2ZXJzaW9uXSkKICBjYXNlICIke0dMSUJDX1ZFUlNJT059IiBpbgogICAgICAgMi4yKQogIAlBQ19NU0dfUkVTVUxUKCR7R0xJQkNfVkVSU0lPTn0gZmFtaWx5KQpAQCAtMTQzLDcgKzE0OCw3IEBACiAgCTs7CiAgICAgICAyLiopCiAgCUFDX01TR19SRVNVTFQoJHtHTElCQ19WRVJTSU9OfSBmYW1pbHkpCi1AQCAtMTAxMyw4ICsxMDEzLDggQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KK0BAIC0xMDgyLDggKzEwODIsOCBAQCBjYXNlICIke0dMSUJDX1ZFUlNJT059IiBpbgogIAlBQ19ERUZJTkUoW0dMSUJDX01BTkRBVE9SWV9JTkRFWF9BTkRfU1RSTEVOX1JFRElSRUNUXSwgMSwKICAJCSAgW0RlZmluZSB0byAxIGlmIGluZGV4KCkgYW5kIHN0cmxlbigpIGhhdmUgYmVlbiBvcHRpbWl6ZWQgaGVhdmlseSAoeDg2IGdsaWJjID49IDIuMTIpXSkKICAJREVGQVVMVF9TVVBQPSJnbGliYy0yLlguc3VwcCAke0RFRkFVTFRfU1VQUH0iCkBAIC0xNTQsNyArMTU5LDcgQEAKICAJOzsKICAgICAgIGRhcndpbikKICAJQUNfTVNHX1JFU1VMVChEYXJ3aW4pCi1AQCAtMTAyNCw3ICsxMDI0LDcgQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KK0BAIC0xMDkzLDcgKzEwOTMsNyBAQCBjYXNlICIke0dMSUJDX1ZFUlNJT059IiBpbgogICAgICAgYmlvbmljKQogIAlBQ19NU0dfUkVTVUxUKEJpb25pYykKICAJQUNfREVGSU5FKFtCSU9OSUNfTElCQ10sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UncmUgdXNpbmcgQmlvbmljXSkKQEAgLTE2Myw3ICsxNjgsNyBAQAogIAk7OwogICAgICAgc29sYXJpcykKICAJQUNfTVNHX1JFU1VMVChTb2xhcmlzKQotQEAgLTEwNTEsMTEgKzEwNTEsMTEgQEAgaWYgdGVzdCAiJFZHQ09ORl9PUyIgIT0gInNvbGFyaXMiOyB0aGVuCitAQCAtMTEyMCwxMSArMTEyMCwxMSBAQCBpZiB0ZXN0ICIkVkdDT05GX09TIiAhPSAic29sYXJpcyI7IHRoZW4KICAgICAgIyBhdHRlbXB0IHRvIGRldGVjdCB3aGV0aGVyIHN1Y2ggbGlicmFyaWVzIGFyZSBpbnN0YWxsZWQgb24gdGhlCiAgICAgICMgYnVpbGQgbWFjaGluZSAob3IgZXZlbiBpZiBhbnkgWCBmYWNpbGl0aWVzIGFyZSBwcmVzZW50KTsganVzdAogICAgICAjIGFkZCB0aGUgc3VwcHJlc3Npb25zIGFudGlkaXNpcnJlZ2FyZGxlc3MuCkBAIC0xNzksNSArMTg0LDUgQEAKICAKICAKIC0tIAotMi4xMy4yLjMuZzQ0Y2Q4NWMxNAorMi4xNy4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL2xpbmstZ3otdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjMyMjM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL2xpbmstZ3otdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1XaGVuIGNoZWNraW5nIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBjb21wcmVzc2VkIGRlYnVnIHNlY3Rpb25zIHdlIG5lZWQgdG8KLWFjdHVhbGx5IGxpbmsgaW5zdGVhZCBvZiBqdXN0IGNvbXBpbGUuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0Ci10aGV5IGFyZSBzdXBwb3J0ZWQsIGJ1dCBnb2xkIGRvZXMgbm90IHN1cHBvcnQgLWd6PXpsaWIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgKHIxNjQ1OSkKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLSBhL2NvbmZpZ3VyZS5hY34JMjAxNy0wNy0xMSAxMTo1MzoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE3LTA3LTExIDE4OjE2OjEzLjY3NDEzMDQ4MyArMDEwMAotQEAgLTIxMTksNyArMjExOSw3IEBACi0gc2FmZV9DRkxBR1M9JENGTEFHUwotIENGTEFHUz0iLWcgLWd6PXpsaWIiCi0gCi0tQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKLStBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIF1dLCBbWwotICAgcmV0dXJuIDA7Ci0gXV0pXSwgWwotIGFjX2hhdmVfZ3pfemxpYj15ZXMKLUBAIC0yMTM5LDcgKzIxMzksNyBAQAotIHNhZmVfQ0ZMQUdTPSRDRkxBR1MKLSBDRkxBR1M9Ii1nIC1nej16bGliLWdudSIKLSAKLS1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIF1dLCBbWwotK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCi0gICByZXR1cm4gMDsKLSBdXSldLCBbCi0gYWNfaGF2ZV9nel96bGliX2dudT15ZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvbWFzay1DUFVJRC1zdXBwb3J0LWluLUhXQ0FQLW9uLWFhcmNoNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YTk1YjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvbWFzay1DUFVJRC1zdXBwb3J0LWluLUhXQ0FQLW9uLWFhcmNoNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1GaXggcnVudGltZSBWYWxncmluZCBmYWlsdXJlCi0KLVRoaXMgcGF0Y2ggaXMgZGVyaXZlZCBmcm9tCi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE0NjQyMTEKLQotQXQgcnVudGltZSBpdCB3aWxsIGZhaWxzIGxpa2UgdGhpczoKLQotQVJNNjQgZnJvbnQgZW5kOiBicmFuY2hfZXRjCi1kaXNJbnN0cihhcm02NCk6IHVuaGFuZGxlZCBpbnN0cnVjdGlvbiAweEQ1MzgwMDAxCi1kaXNJbnN0cihhcm02NCk6IDExMDEnMDEwMSAwMDExJzEwMDAgMDAwMCcwMDAwIDAwMDAnMDAwMSA9PTIwODI9PQotdmFsZ3JpbmQ6IFVucmVjb2duaXNlZCBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzIDB4NDAxNGU2NC4KLQotVGhpcyBwYXRjaCBpcyBhIHdvcmthcm91bmQgYnkgbWFza2luZyBhbGwgSFdDQVAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hbmp1a3VtYXIgTWF0aGEgPG1hbmp1a3VtYXIuaGFydGhpa290ZS1tYXRoYUB4aWxpbnguY29tPgotCi1JbmRleDogdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS0tLSB2YWxncmluZC0zLjEzLjAub3JpZy9jb3JlZ3JpbmQvbV9pbml0aW1nL2luaXRpbWctbGludXguYyAgIDIwMTgtMDMtMDQgMjI6MjI6MTcuNjk4NTcyNjc1IC0wODAwCi0rKysgdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jICAgICAgICAyMDE4LTAzLTA0IDIyOjIzOjI1LjcyNzgxNTYyNCAtMDgwMAotQEAgLTcwMyw2ICs3MDMsMTIgQEAKLSAgICAgICAgICAgICAgICAgICAoYW5kIGFueXRoaW5nIGFib3ZlKSBhcmUgbm90IHN1cHBvcnRlZCBieSBWYWxncmluZC4gKi8KLSAgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsICY9IFZLSV9IV0NBUF9TMzkwX1RFIC0gMTsKLSAgICAgICAgICAgICB9Ci0rIyAgICAgICAgICAgZWxpZiBkZWZpbmVkKFZHUF9hcm02NF9saW51eCkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgLyogTGludXggNC4xMSBzdGFydGVkIHBvcHVsYXRpbmcgdGhpcyBmb3IgYXJtNjQsIGJ1dCB3ZQotKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFueS4gKi8KLSsgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsID0gMDsKLSsgICAgICAgICAgICB9Ci0gIyAgICAgICAgICAgZW5kaWYKLSAgICAgICAgICAgICBicmVhazsKLSAjICAgICAgICBpZiBkZWZpbmVkKFZHUF9wcGM2NGJlX2xpbnV4KSB8fCBkZWZpbmVkKFZHUF9wcGM2NGxlX2xpbnV4KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcHBjLWhlYWRlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI1MzFiNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1CYWNrcG9ydCBhIHBhdGNoIGZyb20gdXBzdHJlYW0gdG8gZml4IHRlc3QgY29tcGlsYXRpb24gZm9yIFBQQyB3aGVyZQotc3lzdGVtIGhlYWRlcnMgZG9uJ3QgZ2V0IGluY2x1ZGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1yMTY0NTAgfCBtancgfCAyMDE3LTA2LTE2IDEwOjMzOjM1ICswMTAwIChGcmksIDE2IEp1biAyMDE3KSB8IDcgbGluZXMKLQotcHBjNjQgZG9lc24ndCBjb21waWxlIHRlc3RfaXNhXzJfMDZfcGFydHguYyB3aXRob3V0IFZTWCBzdXBwb3J0Ci0KLVRoZSAjaWZkZWYgSEFTX1ZTWCBndWFyZCBpcyB3cm9uZ2x5IHBsYWNlZC4gSXQgbWFrZXMgdGhlIHN0YW5kYXJkCi1pbmNsdWRlIGhlYWRlcnMgbm90IGJlIHVzZWQuIENhdXNpbmcgYSBidWlsZCBmYWlsdXJlLiBGaXggYnkgbW92aW5nCi10aGUgI2lmZGVmIEhBU19WU1ggYWZ0ZXIgdGhlIHN0YW5kYXJkIGluY2x1ZGVzLgotCi1bdjIgY2hhbmdlc10KLS0gQWRkICNpZmRlZiBIQVNfVlNYIGd1YXJkIGNvcnJlY3RseSBmb3IgcHBjNjQgdGVzdF9pc2FfMl8wNl9wYXJ0eC5jIAotICB0ZXN0IGNhc2VzLiBUaGUgY2hhbmdlcyBhcmUgc2ltaWxhciB0byB3aGF0IHdhcyBkb25lIGZvciBwcGMzMi4KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotSW5kZXg6IG5vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDMuYwkocmV2aXNpb24gMTY0NDkpCi0rKysgYi9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDMuYwkocmV2aXNpb24gMTY0NTApCi1AQCAtMjAsMTcgKzIwLDE4IEBACi0gIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KLSAgKi8KLSAKLS0jaWZkZWYgSEFTX1ZTWAotLQotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxtYWxsb2MuaD4KLS0jaW5jbHVkZSA8YWx0aXZlYy5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAvLyBnZXRvcHQKLSAKLSsjaWZkZWYgSEFTX1ZTWAotKwotKyNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0rCi0gI2lmbmRlZiBfX3Bvd2VycGM2NF9fCi0gdHlwZWRlZiB1aW50MzJfdCBIV29yZF90OwotICNlbHNlCi1JbmRleDogbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQxLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCShyZXZpc2lvbiAxNjQ0OSkKLSsrKyBiL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCShyZXZpc2lvbiAxNjQ1MCkKLUBAIC0yMCwxMyArMjAsMTQgQEAKLSAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgotICAqLwotIAotLSNpZmRlZiBIQVNfVlNYCi0tCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hbGxvYy5oPgotKwotKyNpZmRlZiBIQVNfVlNYCi0rCi0gI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSAKLSAjaWZuZGVmIF9fcG93ZXJwYzY0X18KLUluZGV4OiBub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQyLmMJKHJldmlzaW9uIDE2NDQ5KQotKysrIGIvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQyLmMJKHJldmlzaW9uIDE2NDUwKQotQEAgLTIwLDE3ICsyMCwxOCBAQAotICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCi0gICovCi0gCi0tI2lmZGVmIEhBU19WU1gKLS0KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0tI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLy8gZ2V0b3B0Ci0gCi0rI2lmZGVmIEhBU19WU1gKLSsKLSsjaW5jbHVkZSA8YWx0aXZlYy5oPgotKwotICNpZm5kZWYgX19wb3dlcnBjNjRfXwotIHR5cGVkZWYgdWludDMyX3QgSFdvcmRfdDsKLSAjZWxzZQotSW5kZXg6IG5vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9ub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNhXzJfMDZfcGFydDMuYwkocmV2aXNpb24gMTY0NDkpCi0rKysgYi9ub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNhXzJfMDZfcGFydDMuYwkocmV2aXNpb24gMTY0NTApCi1AQCAtMjAsMTcgKzIwLDE4IEBACi0gIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KLSAgKi8KLSAKLS0jaWZkZWYgSEFTX1ZTWAotLQotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxtYWxsb2MuaD4KLS0jaW5jbHVkZSA8YWx0aXZlYy5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAvLyBnZXRvcHQKLSAKLSsjaWZkZWYgSEFTX1ZTWAotKwotKyNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0rCi0gI2lmbmRlZiBfX3Bvd2VycGM2NF9fCi0gdHlwZWRlZiB1aW50MzJfdCBIV29yZF90OwotICNlbHNlCi1JbmRleDogbm9uZS90ZXN0cy9wcGM2NC90ZXN0X2lzYV8yXzA2X3BhcnQxLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL25vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCShyZXZpc2lvbiAxNjQ0OSkKLSsrKyBiL25vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCShyZXZpc2lvbiAxNjQ1MCkKLUBAIC0yMCwxMyArMjAsMTQgQEAKLSAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgotICAqLwotIAotLSNpZmRlZiBIQVNfVlNYCi0tCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hbGxvYy5oPgotKwotKyNpZmRlZiBIQVNfVlNYCi0rCi0gI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSAKLSAjaWZuZGVmIF9fcG93ZXJwYzY0X18KLUluZGV4OiBub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNhXzJfMDZfcGFydDIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbm9uZS90ZXN0cy9wcGM2NC90ZXN0X2lzYV8yXzA2X3BhcnQyLmMJKHJldmlzaW9uIDE2NDQ5KQotKysrIGIvbm9uZS90ZXN0cy9wcGM2NC90ZXN0X2lzYV8yXzA2X3BhcnQyLmMJKHJldmlzaW9uIDE2NDUwKQotQEAgLTIwLDE3ICsyMCwxOCBAQAotICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCi0gICovCi0gCi0tI2lmZGVmIEhBU19WU1gKLS0KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0tI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLy8gZ2V0b3B0Ci0gCi0rI2lmZGVmIEhBU19WU1gKLSsKLSsjaW5jbHVkZSA8YWx0aXZlYy5oPgotKwotICNpZm5kZWYgX19wb3dlcnBjNjRfXwotIHR5cGVkZWYgdWludDMyX3QgSFdvcmRfdDsKLSAjZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWVjNmY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi1TVU1NQVJZID0gIlZhbGdyaW5kIG1lbW9yeSBkZWJ1Z2dlciBhbmQgaW5zdHJ1bWVudGF0aW9uIGZyYW1ld29yayIKLUhPTUVQQUdFID0gImh0dHA6Ly92YWxncmluZC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vdmFsZ3JpbmQub3JnL3N1cHBvcnQvYnVnX3JlcG9ydHMuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3B1Yl90b29sX2Jhc2ljcy5oO2JlZ2lubGluZT02O2VuZGxpbmU9Mjk7bWQ1PWQ0ZGUwNDA3MjM5MzgxNDYzY2YwMWRkMjc2ZDdjMjJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdmFsZ3JpbmQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTU2O21kNT1hZDNiMzE3ZjMyODZiNmI3MDQ1NzVkOWVmZTZjYTVkZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkRPQ1M7bWQ1PTI0ZWE0YzcwOTIyMzM4NDliNDM5NDY5OTMzM2I1YzU2IgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIgotREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcke1gxMURFUEVORFN9JywgJycsIGQpfSBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnYm9vc3QnLCAnJywgZCl9IFwKLSAgICAgICAgIgotCi1TUkNfVVJJID0gImZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi92YWxncmluZC92YWxncmluZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeGVkLXBlcmwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGRlZC1zdXBwb3J0LWZvci1QUEMtaW5zdHJ1Y3Rpb25zLW1mYXRidS1tZmF0YmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LU1vZGlmeS12Z190ZXN0LXdyYXBwZXItdG8tc3VwcG9ydC1QVEVTVC1mb3JtYXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3RzLXRoYXQtZmFpbC10by1idWlsZC1vbi1zb21lLVBQQzMyLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtYXBwcm9wcmlhdGUtbWFyY2gtbWNwdS1tZnB1LWZvci1BUk0tdGVzdC1hcHBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLW5lb24tZm9yLXRhcmdldHMtd2hpY2gtZG9uLXQtc3VwcG9ydC1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92YWxncmluZC1tYWtlLWxkLVhYWC5zby1zdHJsZW4taW50ZXJjZXB0LW9wdGlvbmFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0cl90ZXN0ZXIuYy1MaW1pdC1yYXdtZW1jaHItdGVzdC10by1nbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpZ3F1ZXVlLVJlbmFtZS1fc2lmaWVsZHMtdG8tX19zaV9maWVsZHMtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1jaGVjay1hcm02NC1EZWZpbmUtX19USFJPVy1pZi1ub3QtYWxyZWFkeS1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbWVtY2hlY2steDg2LURlZmluZS1fX1RIUk9XLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rLWd6LXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BwYy1oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LW9wY29kZS1ub3Qtc3VwcG9ydGVkLW9uLW1pcHMzMi1saW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1icm9rZW4taW5saW5lLWFzbS1pbi10ZXN0cy1vbi1taXBzMzItbGludXgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODE3ZGQwOGYxZThhNjYzMzZiOWZmMjA2NDAwYTUzNjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc2NjgwZWYwM2YwMGNkNWU5NzBiYmRjZDRlNTdmYjFmNmRmN2QyZTJjMDcxNjM1ZWYyYmU3NDc5MDE5MGMzYiIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInZhbGdyaW5kLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0fG1pcHN8cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgnCi0KLSMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCi1DT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9hcm12NSA9ICdudWxsJwotQ09NUEFUSUJMRV9IT1NUX2FybXY2ID0gJ251bGwnCi0KLSMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gJ251bGwnCi0KLSMgRGlzYWJsZSBmb3Igc29tZSBNSVBTIHZhcmlhbnRzCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2hyNiA9ICdudWxsJwotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBtdWx0aWxpYl9oZWFkZXIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCi0KLSMgdmFsZ3JpbmQgY2hlY2tzIGhvc3RfY3B1ICJhcm12NyopIiwgc28gd2UgbmVlZCB0byBvdmVyLXJpZGUgdGhlIGF1dG90b29scy5iYmNsYXNzIGRlZmF1bHQgLS1ob3N0IG9wdGlvbgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIC0taG9zdD1hcm12NyR7SE9TVF9WRU5ET1J9LSR7SE9TVF9PU30iCi1UQVJHRVRfQ0NfQVJDSF9yZW1vdmVfYXJtID0gIiR7QGdldF9tY3B1KGQpfSIKLQotRVhUUkFfT0VNQUtFID0gIi13IgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCi0KLSMgdmFsZ3JpbmQgbGlrZXMgdG8gY29udHJvbCBpdHMgb3duIG9wdGltaXNhdGlvbiBmbGFncy4gSXQgZ2VuZXJhbGx5IGRlZmF1bHRzCi0jIHRvIC1PMiBidXQgdXNlcyAtTzAgZm9yIHNvbWUgc3BlY2lmaWMgdGVzdCBhcHBzIGV0Yy4gUGFzc2luZyBvdXIgb3duIGZsYWdzCi0jICh2aWEgQ0ZMQUdTKSBtZWFucyB3ZSBpbnRlcmZlcmUgd2l0aCB0aGF0LiBPbmx5IHBhc3MgREVCVUdfRkxBR1MgdG8gaXQKLSMgd2hpY2ggZml4ZXMgYnVpbGQgcGF0aCBpc3N1ZSBpbiBEV0FSRi4KLVNFTEVDVEVEX09QVElNSVpBVElPTiA9ICIke0RFQlVHX0ZMQUdTfSIKLQotZGVmIGdldF9tY3B1KGQpOgotICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgIHJldHVybiAiIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgcm0gLXJmICR7U30vY29uZmlnLmgKLSAgICBzZWQgLWkgLWUgJ3M6JChhYnNfdG9wX2J1aWxkZGlyKTokKHBrZ2xpYmRpcikvcHRlc3Q6ZycgJHtTfS9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi0gICAgc2VkIC1pIC1lICdzOiQodG9wX2J1aWxkZGlyKTokKHBrZ2xpYmRpcikvcHRlc3Q6ZycgJHtTfS9tZW1jaGVjay90ZXN0cy9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtCfS9kZWZhdWx0LnN1cHAgJHtEfS8ke2xpYmRpcn0vdmFsZ3JpbmQvCi0gICAgb2VfbXVsdGlsaWJfaGVhZGVyIHZhbGdyaW5kL2NvbmZpZy5oCi19Ci0KLVRVTkUgPSAiJHtAc3RyaXBfbWNwdShkKX0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgotCi0jIHZhbGdyaW5kIG5lZWRzIGRlYnVnIGluZm9ybWF0aW9uIGZvciBsZC5zbyBhdCBydW50aW1lIGluIG9yZGVyIHRvCi0jIHJlZGlyZWN0IGZ1bmN0aW9ucyBsaWtlIHN0cmxlbi4KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1RDTElCQ30tZGJnIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHNlZCBwZXJsIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKLQotIyBPbmUgb2YgdGhlIHRlc3RzIGNvbnRhaW5zIGEgYm9ndXMgaW50ZXJwcmV0ZXIgcGF0aCBvbiBwdXJwb3NlLgotIyBTa2lwIGZpbGUgZGVwZW5kZW5jeSBjaGVjawotU0tJUF9GSUxFREVQU18ke1BOfS1wdGVzdCA9ICcxJwotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIG9lX3J1bm1ha2UgY2hlY2sKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBjaG1vZCAreCAke0J9L3Rlc3RzL3ZnX3JlZ3Rlc3QKLQotICAgICMgVGhlIHRlc3QgYXBwbGljYXRpb24gYmluYXJpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZC4KLSAgICAjIEdyYWIgdGhlbSBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0gICAgIwotICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdHMgcmVxdWlyZSBzY3JpcHRzIGFuZCBkYXRhIGZpbGVzIHRoYXQgYXJlIG5vdAotICAgICMgY29waWVkIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGV5IG11c3QgYmUgY29waWVkIGZyb20gdGhlCi0gICAgIyBzb3VyY2UgZGlyZWN0b3J5LiAKLSAgICBzYXZlZF9kaXI9JFBXRAotICAgIGZvciBwYXJlbnRfZGlyIGluICR7U30gJHtCfSA7IGRvCi0gICAgICAgIGNkICRwYXJlbnRfZGlyCi0KLSAgICAgICAgIyBleGNsdWRlIHNoZWxsIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKLSAgICAgICAgcm0gLXJmIG5vbmUvdGVzdHMvc2hlbGwqIDI+L2Rldi9udWxsCi0KLSAgICAgICAgc3ViZGlycz0idGVzdHMgY2FjaGVncmluZC90ZXN0cyBjYWxsZ3JpbmQvdGVzdHMgZHJkL3Rlc3RzIGhlbGdyaW5kL3Rlc3RzIG1hc3NpZi90ZXN0cyBtZW1jaGVjay90ZXN0cyBub25lL3Rlc3RzIgotCi0gICAgICAgICMgR2V0IHRoZSB2ZyB0ZXN0IHNjcmlwdHMsIGZpbHRlcnMsIGFuZCBleHBlY3RlZCBmaWxlcwotICAgICAgICBmb3IgZGlyIGluICRzdWJkaXJzIDsgZG8KLSAgICAgICAgICAgIGZpbmQgJGRpciB8IGNwaW8gLXB2ZHUgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgZG9uZQotICAgICAgICBjZCAkc2F2ZWRfZGlyCi0gICAgZG9uZQotCi0gICAgIyBjbGVhbiBvdXQgYnVpbGQgYXJ0aWZhY3RzIGJlZm9yZSBidWlsZGluZyB0aGUgcnBtCi0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfSBcCi0gICAgICAgICBcKCAtbmFtZSAiTWFrZWZpbGUqIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLm8iIFwKLSAgICAgICAgLW8gLW5hbWUgIiouYyIgXAotICAgICAgICAtbyAtbmFtZSAiKi5TIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLmgiIFwpIFwKLSAgICAgICAgLWV4ZWMgcm0ge30gXDsKLQotICAgICMgbmVlZGVkIGJ5IG1hc3NpZiB0ZXN0cwotICAgIGNwICR7Qn0vbWFzc2lmL21zX3ByaW50ICR7RH0ke1BURVNUX1BBVEh9L21hc3NpZi9tc19wcmludAotCi0gICAgIyBoYW5kbGUgbXVsdGlsaWIKLSAgICBzZWQgLWkgczpAbGliZGlyQDoke2xpYmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2U1OGE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNC4wLmJiCkBAIC0wLDAgKzEsMTU1IEBACitTVU1NQVJZID0gIlZhbGdyaW5kIG1lbW9yeSBkZWJ1Z2dlciBhbmQgaW5zdHJ1bWVudGF0aW9uIGZyYW1ld29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly92YWxncmluZC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vdmFsZ3JpbmQub3JnL3N1cHBvcnQvYnVnX3JlcG9ydHMuaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3B1Yl90b29sX2Jhc2ljcy5oO2JlZ2lubGluZT02O2VuZGxpbmU9Mjk7bWQ1PWQ0ZGUwNDA3MjM5MzgxNDYzY2YwMWRkMjc2ZDdjMjJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdmFsZ3JpbmQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTU2O21kNT1hZDNiMzE3ZjMyODZiNmI3MDQ1NzVkOWVmZTZjYTVkZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkRPQ1M7bWQ1PTI0ZWE0YzcwOTIyMzM4NDliNDM5NDY5OTMzM2I1YzU2IgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIgorREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcke1gxMURFUEVORFN9JywgJycsIGQpfSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnYm9vc3QnLCAnJywgZCl9IFwKKyAgICAgICAgIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cudmFsZ3JpbmQub3JnL2Rvd25sb2Fkcy92YWxncmluZC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeGVkLXBlcmwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9BZGRlZC1zdXBwb3J0LWZvci1QUEMtaW5zdHJ1Y3Rpb25zLW1mYXRidS1tZmF0YmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LU1vZGlmeS12Z190ZXN0LXdyYXBwZXItdG8tc3VwcG9ydC1QVEVTVC1mb3JtYXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3RzLXRoYXQtZmFpbC10by1idWlsZC1vbi1zb21lLVBQQzMyLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtYXBwcm9wcmlhdGUtbWFyY2gtbWNwdS1tZnB1LWZvci1BUk0tdGVzdC1hcHBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkLW5lb24tZm9yLXRhcmdldHMtd2hpY2gtZG9uLXQtc3VwcG9ydC1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly92YWxncmluZC1tYWtlLWxkLVhYWC5zby1zdHJsZW4taW50ZXJjZXB0LW9wdGlvbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0cl90ZXN0ZXIuYy1MaW1pdC1yYXdtZW1jaHItdGVzdC10by1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpZ3F1ZXVlLVJlbmFtZS1fc2lmaWVsZHMtdG8tX19zaV9maWVsZHMtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LW9wY29kZS1ub3Qtc3VwcG9ydGVkLW9uLW1pcHMzMi1saW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUd1YXJkLWFnYWluc3QtX19HTElCQ19QUkVSRVEtZm9yLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbG9jYWwtZnVuY3Rpb25zLXN0YXRpYy10by1hdm9pZC1hc3NlbWJsZXItZXJyb3IucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNzQxNzU0MjZhZmEyODAxODRiNjI1OTFiNThjNjcxYjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDM3YzExYmZlZmQ0NzdjYzZlOWViZThmMTkzYmIyMzdmZTM5N2Y3Y2U3OTFiNGE0Y2UzZmExYzZhNTIwYmFhNSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInZhbGdyaW5kLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0fG1pcHN8cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgnCisKKyMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12NSA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY2ID0gJ251bGwnCisKKyMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKK0NPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gJ251bGwnCisKKyMgRGlzYWJsZSBmb3Igc29tZSBNSVBTIHZhcmlhbnRzCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2hyNiA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudW4zMiA9ICdudWxsJworCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBtdWx0aWxpYl9oZWFkZXIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCitFWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCisKKyMgdmFsZ3JpbmQgY2hlY2tzIGhvc3RfY3B1ICJhcm12NyopIiwgc28gd2UgbmVlZCB0byBvdmVyLXJpZGUgdGhlIGF1dG90b29scy5iYmNsYXNzIGRlZmF1bHQgLS1ob3N0IG9wdGlvbgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIC0taG9zdD1hcm12NyR7SE9TVF9WRU5ET1J9LSR7SE9TVF9PU30iCitUQVJHRVRfQ0NfQVJDSF9yZW1vdmVfYXJtID0gIiR7QGdldF9tY3B1KGQpfSIKKworRVhUUkFfT0VNQUtFID0gIi13IgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCisKKyMgdmFsZ3JpbmQgbGlrZXMgdG8gY29udHJvbCBpdHMgb3duIG9wdGltaXNhdGlvbiBmbGFncy4gSXQgZ2VuZXJhbGx5IGRlZmF1bHRzCisjIHRvIC1PMiBidXQgdXNlcyAtTzAgZm9yIHNvbWUgc3BlY2lmaWMgdGVzdCBhcHBzIGV0Yy4gUGFzc2luZyBvdXIgb3duIGZsYWdzCisjICh2aWEgQ0ZMQUdTKSBtZWFucyB3ZSBpbnRlcmZlcmUgd2l0aCB0aGF0LiBPbmx5IHBhc3MgREVCVUdfRkxBR1MgdG8gaXQKKyMgd2hpY2ggZml4ZXMgYnVpbGQgcGF0aCBpc3N1ZSBpbiBEV0FSRi4KK1NFTEVDVEVEX09QVElNSVpBVElPTiA9ICIke0RFQlVHX0ZMQUdTfSIKKworZGVmIGdldF9tY3B1KGQpOgorICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6CisgICAgICAgICAgICByZXR1cm4gYXJnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250aW51ZQorICAgIHJldHVybiAiIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgcm0gLXJmICR7U30vY29uZmlnLmgKKyAgICBzZWQgLWkgLWUgJ3M6JChhYnNfdG9wX2J1aWxkZGlyKTokKHBrZ2xpYmRpcikvcHRlc3Q6ZycgJHtTfS9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCisgICAgc2VkIC1pIC1lICdzOiQodG9wX2J1aWxkZGlyKTokKHBrZ2xpYmRpcikvcHRlc3Q6ZycgJHtTfS9tZW1jaGVjay90ZXN0cy9NYWtlZmlsZS5hbQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS9kZWZhdWx0LnN1cHAgJHtEfS8ke2xpYmRpcn0vdmFsZ3JpbmQvCisgICAgb2VfbXVsdGlsaWJfaGVhZGVyIHZhbGdyaW5kL2NvbmZpZy5oCit9CisKK1RVTkUgPSAiJHtAc3RyaXBfbWNwdShkKX0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIgorCisjIHZhbGdyaW5kIG5lZWRzIGRlYnVnIGluZm9ybWF0aW9uIGZvciBsZC5zbyBhdCBydW50aW1lIGluIG9yZGVyIHRvCisjIHJlZGlyZWN0IGZ1bmN0aW9ucyBsaWtlIHN0cmxlbi4KK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1RDTElCQ30tZGJnIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHNlZCBwZXJsIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKKworIyBPbmUgb2YgdGhlIHRlc3RzIGNvbnRhaW5zIGEgYm9ndXMgaW50ZXJwcmV0ZXIgcGF0aCBvbiBwdXJwb3NlLgorIyBTa2lwIGZpbGUgZGVwZW5kZW5jeSBjaGVjaworU0tJUF9GSUxFREVQU18ke1BOfS1wdGVzdCA9ICcxJworCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgY2hlY2sKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBjaG1vZCAreCAke0J9L3Rlc3RzL3ZnX3JlZ3Rlc3QKKworICAgICMgVGhlIHRlc3QgYXBwbGljYXRpb24gYmluYXJpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZC4KKyAgICAjIEdyYWIgdGhlbSBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICAgIworICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdHMgcmVxdWlyZSBzY3JpcHRzIGFuZCBkYXRhIGZpbGVzIHRoYXQgYXJlIG5vdAorICAgICMgY29waWVkIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGV5IG11c3QgYmUgY29waWVkIGZyb20gdGhlCisgICAgIyBzb3VyY2UgZGlyZWN0b3J5LiAKKyAgICBzYXZlZF9kaXI9JFBXRAorICAgIGZvciBwYXJlbnRfZGlyIGluICR7U30gJHtCfSA7IGRvCisgICAgICAgIGNkICRwYXJlbnRfZGlyCisKKyAgICAgICAgIyBleGNsdWRlIHNoZWxsIG9yIHRoZSBwYWNrYWdlIHdvbid0IGluc3RhbGwKKyAgICAgICAgcm0gLXJmIG5vbmUvdGVzdHMvc2hlbGwqIDI+L2Rldi9udWxsCisKKyAgICAgICAgc3ViZGlycz0idGVzdHMgY2FjaGVncmluZC90ZXN0cyBjYWxsZ3JpbmQvdGVzdHMgZHJkL3Rlc3RzIGhlbGdyaW5kL3Rlc3RzIG1hc3NpZi90ZXN0cyBtZW1jaGVjay90ZXN0cyBub25lL3Rlc3RzIgorCisgICAgICAgICMgR2V0IHRoZSB2ZyB0ZXN0IHNjcmlwdHMsIGZpbHRlcnMsIGFuZCBleHBlY3RlZCBmaWxlcworICAgICAgICBmb3IgZGlyIGluICRzdWJkaXJzIDsgZG8KKyAgICAgICAgICAgIGZpbmQgJGRpciB8IGNwaW8gLXB2ZHUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgZG9uZQorICAgICAgICBjZCAkc2F2ZWRfZGlyCisgICAgZG9uZQorCisgICAgIyBjbGVhbiBvdXQgYnVpbGQgYXJ0aWZhY3RzIGJlZm9yZSBidWlsZGluZyB0aGUgcnBtCisgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfSBcCisgICAgICAgICBcKCAtbmFtZSAiTWFrZWZpbGUqIiBcCisgICAgICAgIC1vIC1uYW1lICIqLm8iIFwKKyAgICAgICAgLW8gLW5hbWUgIiouYyIgXAorICAgICAgICAtbyAtbmFtZSAiKi5TIiBcCisgICAgICAgIC1vIC1uYW1lICIqLmgiIFwpIFwKKyAgICAgICAgLWV4ZWMgcm0ge30gXDsKKworICAgICMgbmVlZGVkIGJ5IG1hc3NpZiB0ZXN0cworICAgIGNwICR7Qn0vbWFzc2lmL21zX3ByaW50ICR7RH0ke1BURVNUX1BBVEh9L21hc3NpZi9tc19wcmludAorCisgICAgIyBoYW5kbGUgbXVsdGlsaWIKKyAgICBzZWQgLWkgczpAbGliZGlyQDoke2xpYmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3lhc20veWFzbV8xLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3lhc20veWFzbV8xLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFhZjFlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIng4NiAoU1NFKSBhc3NlbWJsZXIgc3VwcG9ydGluZyBOQVNNIGFuZCBHQVMtc3ludGF4ZXMiCi1MSUNFTlNFID0gIkJTRCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudG9ydGFsbC5uZXQvcHJvamVjdHMveWFzbS8iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExMmQ4OTAzNTA4ZmI2YmZkNDlkOGQ4MmM2MTcwZGQ5IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudG9ydGFsbC5uZXQvcHJvamVjdHMveWFzbS9yZWxlYXNlcy8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYzllNTg2NzUxZmY3ODliMzRiMWYyMWQ1NzJkOTZhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGNlNjYwMWI0OTVmNWIzZDQ1YjU5ZjdkMjQ5MmEzNDBlZTdlODRiNWJlY2ExN2U0OGY4NjI1MDJiZDU2MDNmIgotCi1leHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSAiJHtDQ19GT1JfQlVJTER9IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYWU3N2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiQUNQSUNBIHRvb2xzIGZvciB0aGUgZGV2ZWxvcG1lbnQgYW5kIGRlYnVnIG9mIEFDUEkgdGFibGVzIgotREVTQ1JJUFRJT04gPSAiVGhlIEFDUEkgQ29tcG9uZW50IEFyY2hpdGVjdHVyZSAoQUNQSUNBKSBwcm9qZWN0IHByb3ZpZGVzIGFuIFwKLU9TLWluZGVwZW5kZW50IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgXAotUG93ZXIgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gKEFDUEkpLiBBQ1BJQ0EgY29kZSBjb250YWlucyB0aG9zZSBwb3J0aW9ucyBvZiBcCi1BQ1BJIG1lYW50IHRvIGJlIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaG9zdCBPUyBhcyBhIGtlcm5lbC1yZXNpZGVudCBcCi1zdWJzeXN0ZW0sIGFuZCBhIHNtYWxsIHNldCBvZiB0b29scyB0byBhc3Npc3QgaW4gZGV2ZWxvcGluZyBhbmQgZGVidWdnaW5nIFwKLUFDUEkgdGFibGVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLQotTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dlbmVyYXRlL3VuaXgvcmVhZG1lLnR4dDttZDU9MjA0NDA3ZTE5N2MxYTAxMTU0YTQ4ZjZjNjI4MGMzYWEiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCi0KLURFUEVORFMgPSAiYmlzb24gZmxleCIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4Mi0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9yZW5hbWUteXlfc2Nhbl9zdHJpbmctbWFudWFsbHkucGF0Y2ggXAotICAgIGZpbGU6Ly9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICBmaWxlOi8vMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaCBcCi0gICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQ4ZWY0MzE0ZmI0ZmZkZDBjOTZmMTRkY2YyMDU0NGUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyZDgxZTg0MTA3YWM5YTAyYmU4NmVhNDNjYmVhN2FmYThmZDRiNDE1MDI3MGJjODhjMmQ0YzlmZWEwYjhhYWQiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL2Rvd25sb2FkcyIKLQotUyA9ICIke1dPUktESVJ9L2FjcGljYS11bml4Mi0ke1BWfSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFjcGl4dHJhY3QiCi0KLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nICdPUFRfQ0ZMQUdTPS1XYWxsJyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovaWFzbCAke0R9JHtiaW5kaXJ9L2lhc2wKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWJpbiAke0R9JHtiaW5kaXJ9L2FjcGliaW4KLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWV4ZWMgJHtEfSR7YmluZGlyfS9hY3BpZXhlYwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpaGVscCAke0R9JHtiaW5kaXJ9L2FjcGloZWxwCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGluYW1lcyAke0R9JHtiaW5kaXJ9L2FjcGluYW1lcwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3Bpc3JjICR7RH0ke2JpbmRpcn0vYWNwaXNyYwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpeHRyYWN0ICR7RH0ke2JpbmRpcn0vYWNwaXh0cmFjdAotfQotCi0jIGlhc2wqLmJiIGlzIGEgc3Vic2V0IG9mIHRoaXMgcmVjaXBlLCBzbyBSUkVQTEFDRSBpdAotUFJPVklERVMgPSAiaWFzbCIKLVJQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKLVJSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKLVJDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE4MDUwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxODA1MDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVjODlmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxODA1MDguYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJBQ1BJQ0EgdG9vbHMgZm9yIHRoZSBkZXZlbG9wbWVudCBhbmQgZGVidWcgb2YgQUNQSSB0YWJsZXMiCitERVNDUklQVElPTiA9ICJUaGUgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlIChBQ1BJQ0EpIHByb2plY3QgcHJvdmlkZXMgYW4gXAorT1MtaW5kZXBlbmRlbnQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBcCitQb3dlciBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiAoQUNQSSkuIEFDUElDQSBjb2RlIGNvbnRhaW5zIHRob3NlIHBvcnRpb25zIG9mIFwKK0FDUEkgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBob3N0IE9TIGFzIGEga2VybmVsLXJlc2lkZW50IFwKK3N1YnN5c3RlbSwgYW5kIGEgc21hbGwgc2V0IG9mIHRvb2xzIHRvIGFzc2lzdCBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgXAorQUNQSSB0YWJsZXMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFjcGljYS5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorCitMSUNFTlNFID0gIkJTRCB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ2VuZXJhdGUvdW5peC9yZWFkbWUudHh0O21kNT0yMDQ0MDdlMTk3YzFhMDExNTRhNDhmNmM2MjgwYzNhYSIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKKworREVQRU5EUyA9ICJiaXNvbiBmbGV4IGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4Mi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmVuYW1lLXl5X3NjYW5fc3RyaW5nLW1hbnVhbGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMTY5MWUyZWI4MmIyMDY0Zjc4NTM2YTM0MjNjMThkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDhmYzlkOWRiOWUwNDgzMGQ0MGJlYzlhZGQwNGIyMWMwNWQ0NjZlMDE4N2QzNTQ4MTUwMDZmZGQ4MjNjZjE1IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCisKK1MgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyAnT1BUX0NGTEFHUz0tV2FsbCciCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2lhc2wgJHtEfSR7YmluZGlyfS9pYXNsCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGliaW4gJHtEfSR7YmluZGlyfS9hY3BpYmluCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlleGVjICR7RH0ke2JpbmRpcn0vYWNwaWV4ZWMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWhlbHAgJHtEfSR7YmluZGlyfS9hY3BpaGVscAorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpbmFtZXMgJHtEfSR7YmluZGlyfS9hY3BpbmFtZXMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXNyYyAke0R9JHtiaW5kaXJ9L2FjcGlzcmMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXh0cmFjdCAke0R9JHtiaW5kaXJ9L2FjcGl4dHJhY3QKK30KKworIyBpYXNsKi5iYiBpcyBhIHN1YnNldCBvZiB0aGlzIHJlY2lwZSwgc28gUlJFUExBQ0UgaXQKK1BST1ZJREVTID0gImlhc2wiCitSUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCitSUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICJpYXNsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNzQyMDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGQyMjI0MWVmYzA3MDhjOTc5OWYxN2EyMGVhYmI1MmE0OGQ2ZDZlYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyIEphbiAyMDE4IDEyOjM1OjMyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIExpbnV4OiBhZGQgc3VwcG9ydCBmb3IgWDMyIEFCSSBjb21waWxhdGlvbgotCi1YMzIgZm9sbG93cyBJTFAzMiBtb2RlbC4gQ2hlY2sgZm9yIElMUDMyIGFzIHdlbGwgd2hlbiBjaGVja2luZyBmb3IKLXg4Nl82NCB0byBlbnN1cmUgdGhlIGRlZmluZXMgYXJlIGNvcnJlY3QgZm9yIFgzMiBBQkkuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWNwaWNhL2FjcGljYS9wdWxsLzM0OF0KLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIHNvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaCBiL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAotaW5kZXggNzViMWQ4Mi4uNmI4ZmY3MyAxMDA2NDQKLS0tLSBhL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAotKysrIGIvc291cmNlL2luY2x1ZGUvcGxhdGZvcm0vYWNsaW51eC5oCi1AQCAtMzE1LDcgKzMxNSw3IEBACi0gI2RlZmluZSBBQ1BJX0ZMVVNIX0NQVV9DQUNIRSgpCi0gI2RlZmluZSBBQ1BJX0NBU1RfUFRIUkVBRF9UKFB0aHJlYWQpICgoQUNQSV9USFJFQURfSUQpIChQdGhyZWFkKSkKLSAKLS0jaWYgZGVmaW5lZChfX2lhNjRfXykgICAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fFwKLSsjaWYgZGVmaW5lZChfX2lhNjRfXykgICAgfHwgKGRlZmluZWQoX194ODZfNjRfXykgJiYgIWRlZmluZWQoX19JTFAzMl9fKSkgfHxcCi0gICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fFwKLSAgICAgZGVmaW5lZChfX3MzOTB4X18pCi0gI2RlZmluZSBBQ1BJX01BQ0hJTkVfV0lEVEggICAgICAgICAgNjQKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2gKaW5kZXggNTYxMGVkOS4uZDhiNWY5YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2OTE3MWMyMmYzODcyZWNiNGMxYWIyNzk4NWU5M2NhNDQwODQ1OTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NDBkODA0NjllNmE3ZGNlNmJhZjcyMTRkZjkwZTg2ZGFmZmM1MTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIERhdGU6IE1vbiwgNSBKdW4gMjAxNyAxMzoyNjozOCArMDkwMAogU3ViamVjdDogW1BBVENIXSBhc2xmaWxlcy5jOiBtYW5pcHVsYXRlIGZkcyBpbnN0ZWFkIG9mIEZJTEUKQEAgLTE2LDE4ICsxNiwyMCBAQAogUmViYXNlIG9uIGFjcGljYSAyMDE3MDMwMwogCiBTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgotLS0tCi0gYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIHwgMTQgKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYyBiL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotaW5kZXggODA5MDkwYy4uOTc4OThiMSAxMDA2NDQKLS0tLSBhL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotKysrIGIvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCi1AQCAtNDQsNiArNDQsMTAgQEAKKy0tLQorIHNvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIHwgMTUgKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYyBiL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCitpbmRleCA4Mjg2NWRiLi5jYzA3MmRjIDEwMDY0NAorLS0tIGEvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKKysrKyBiL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCitAQCAtNDMsNiArNDMsMTEgQEAKKyAKICAjaW5jbHVkZSAiYXNsY29tcGlsZXIuaCIKICAjaW5jbHVkZSAiYWNhcHBzLmgiCi0gI2luY2x1ZGUgImR0Y29tcGlsZXIuaCIKKysjaW5jbHVkZSAiZHRjb21waWxlci5oIgogKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICsjaW5jbHVkZSA8ZmNudGwuaD4KQEAgLTM1LDcgKzM3LDcgQEAKICAKICAjZGVmaW5lIF9DT01QT05FTlQgICAgICAgICAgQUNQSV9DT01QSUxFUgogICAgICAgICAgQUNQSV9NT0RVTEVfTkFNRSAgICAoImFzbGZpbGVzIikKLUBAIC02MDcsNiArNjExLDggQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKK0BAIC02MDYsNiArNjExLDggQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKICAKICAgICAgaWYgKEdibF9EZWJ1Z0ZsYWcpCiAgICAgIHsKQEAgLTQ0LDcgKzQ2LDcgQEAKICAgICAgICAgIEZpbGVuYW1lID0gRmxHZW5lcmF0ZUZpbGVuYW1lIChGaWxlbmFtZVByZWZpeCwgRklMRV9TVUZGSVhfREVCVUcpOwogICAgICAgICAgaWYgKCFGaWxlbmFtZSkKICAgICAgICAgIHsKLUBAIC02MTgsMTAgKzYyNCwxMCBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAorQEAgLTYxNywxMCArNjI0LDEwIEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCiAgICAgICAgICAvKiBPcGVuIHRoZSBkZWJ1ZyBmaWxlIGFzIFNUREVSUiwgdGV4dCBtb2RlICovCiAgCiAgICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5GaWxlbmFtZSA9IEZpbGVuYW1lOwpAQCAtNTgsNyArNjAsNyBAQAogICAgICAgICAgewogICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICogQSBwcm9ibGVtIHdpdGggZnJlb3BlbiBpcyB0aGF0IG9uIGVycm9yLCB3ZSBubyBsb25nZXIKLUBAIC02MzUsNiArNjQxLDggQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKK0BAIC02MzQsNiArNjQxLDggQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKICAgICAgICAgICAgICBleGl0ICgxKTsKICAgICAgICAgIH0KICAKQEAgLTY3LDYgKzY5LDMgQEAKICAgICAgICAgIEFzbENvbXBpbGVyU2lnbm9uIChBU0xfRklMRV9ERUJVR19PVVRQVVQpOwogICAgICAgICAgQXNsQ29tcGlsZXJGaWxlSGVhZGVyIChBU0xfRklMRV9ERUJVR19PVVRQVVQpOwogICAgICB9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9iYXNoLW1lbWxlYWstYnVnLWZpeC1mb3ItYnVpbHRpbi1jb21tYW5kLXJlYWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmI2YmE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9iYXNoLW1lbWxlYWstYnVnLWZpeC1mb3ItYnVpbHRpbi1jb21tYW5kLXJlYWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGQzYjYzMDNhNjg1M2Y2MTJhNTY4NDhlZTRlNTllYWEwYjBhYjk0ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBaaGFuZyBYaWFvIDx4aWFvLnpoYW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDIxIEZlYiAyMDE3IDExOjMwOjE0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJhc2g6IG1lbWxlYWsgYnVnIGZpeCBmb3IgYnVpbHRpbiBjb21tYW5kIHJlYWQKLQotQnVpbHQgaW4gY29tbWFuZCAicmVhZCIgd2l0aCAiLWUiIHVzZSBSZWFkbGluZSB0byBvYnRhaW4gdGhlIGxpbmUKLWluIGFuIGludGVyYWN0aXZlIHNoZWxsLiBJbiB0aGlzIHByb2Nlc3MsIGEgc3RyaW5nICJybGJ1ZiIgaXMKLWp1c3QgYWxsb2NhdGVkIHdpdGhvdXQgZnJlZSBvcGVyYXRpb24gdGh1cyBjYXVzZSBtZW1vcnkgbGVhay4gRml4IGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTctMDIvbXNnMDAwNjEuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogWmhhbmcgWGlhbyA8eGlhby56aGFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbHRpbnMvcmVhZC5kZWYgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYnVpbHRpbnMvcmVhZC5kZWYgYi9idWlsdGlucy9yZWFkLmRlZgotaW5kZXggNDM5NzE1NC4uZWUwYzVhNiAxMDA2NDQKLS0tLSBhL2J1aWx0aW5zL3JlYWQuZGVmCi0rKysgYi9idWlsdGlucy9yZWFkLmRlZgotQEAgLTY3NCw2ICs2NzQsMTEgQEAgYWRkX2NoYXI6Ci0gICBpbnB1dF9zdHJpbmdbaV0gPSAnXDAnOwotICAgQ0hFQ0tfQUxSTTsKLSAKLSsjaWYgZGVmaW5lZCAoUkVBRExJTkUpCi0rICBpZiAoZWRpdCkKLSsgICAgeGZyZWUgKHJsYnVmKTsKLSsjZW5kaWYKLSsKLSAgIGlmIChyZXR2YWwgPCAwKQotICAgICB7Ci0gICAgICAgdF9lcnJubyA9IGVycm5vOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4MmE3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSBiYXNoLmluYwotCi0jIEdQTHYyKyAoPCA0LjApLCBHUEx2MysgKD49IDQuMCkKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9iYXNoLyR7QlB9LnRhci5nejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBmaWxlOi8vZXhlY3V0ZV9jbWQucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1idWlsdGlucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhlbHAtZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iYXNoLW1lbWxlYWstYnVnLWZpeC1mb3ItYnVpbHRpbi1jb21tYW5kLXJlYWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGF0aGV4cC1kZXAucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjdjMTEyOTcwY2JkY2FkZmMzMzFlMTBlZWI1ZjZhYTQxIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiNTdkODQzMmJlNTQ1NDE1MzFhNDk2ZmQ0OTA0ZmRjMDhjMTI1NDJmNDM2MDVhOTIwMjU5NGZhNWQ1ZjlmMjMzMSIKLQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYTA5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LjE4LmJiCkBAIC0wLDAgKzEsNDEgQEAKK3JlcXVpcmUgYmFzaC5pbmMKKworIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxOTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTkgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDIwO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAyMCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMjE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDIxIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAyMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMjIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDIzO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAyMyBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhdGhleHAtZGVwLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI1MThlMmMxODdjYzExYTE3MDQwZjA5MTVkZGRjZTU0ZSIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjYwNGQ5ZWVjNWU0ZWQ1ZmQyMTgwZWU0NGRkNzU2ZGRjYTkyZTBiNmFhNDIxN2JiYWIyYjYyMjczODAzMTdmMjMiCisKK1NSQ19VUklbcGF0Y2gwMTkubWQ1c3VtXSA9ICI4ZjQzZTFkMjc3YjAyZjMzMTlhMzRjMWNkNGE0ZmYzZSIKK1NSQ19VUklbcGF0Y2gwMTkuc2hhMjU2c3VtXSA9ICIyNzE3MGQ2ZWRmZTg4MTk4MzU0MDdmZGMwOGI0MDFkMmUxNjFiMTQwMGZlOWQwYzUzMTdhNTExMDRjODljMTFlIgorU1JDX1VSSVtwYXRjaDAyMC5tZDVzdW1dID0gIjUyMTdmZjA4YzQ0NDQ0NmVjMzA2ZGNlNjA0MzdjMjg4IgorU1JDX1VSSVtwYXRjaDAyMC5zaGEyNTZzdW1dID0gIjE4NDBlMmNiZjI2YmE4MjI5MTM2NjJmNzQwMzc1OTRlZDU2MjM2MTQ4NTM5MGM1MjgxM2IzODE1NmM5OTUyMmMiCitTUkNfVVJJW3BhdGNoMDIxLm1kNXN1bV0gPSAiMjgyYzdkOWIzOGRhODAwNWQyNWI0ZjgxNjMyOGEyZjQiCitTUkNfVVJJW3BhdGNoMDIxLnNoYTI1NnN1bV0gPSAiYmQ4ZjU5MDU0YTc2M2VjMWM2NDE3OWFkNWNiNjA3ZjU1ODcwOGEzMTdjMmJkYjIyYjgxNGUzZGE0NTYzNzRjMSIKK1NSQ19VUklbcGF0Y2gwMjIubWQ1c3VtXSA9ICIwYjcwOWM5ZDdmOGU2Y2YyNjdhOGI4NjNlZmI4OTlmNyIKK1NSQ19VUklbcGF0Y2gwMjIuc2hhMjU2c3VtXSA9ICI0NTMzMWYwOTM2ZTM2YWI5MWJmZTQ0YjkzNmUzM2VkOGExYjE4NDhmYTg5NmU4YTFkMGYyZWY3NGYyOTdjYjc5IgorU1JDX1VSSVtwYXRjaDAyMy5tZDVzdW1dID0gImZlMmUwY2E0Y2Y5NDA5ZmYwZTk0MjhlMTIzNmY5ODNlIgorU1JDX1VSSVtwYXRjaDAyMy5zaGEyNTZzdW1dID0gIjRmZWMyMzZmM2ZiZDNkMGM0N2I4OTNmZGZhOTEyMjE0MmE0NzRmNmVmNjZjMjBmZmI2YzBmNDg2NGRkNTkxYjYiCisKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iYy9saWJtYXRoLmggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iYy9saWJtYXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNlMWFjYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjL2xpYm1hdGguaApAQCAtMCwwICsxLDQ2IEBACit7IkBpSzIwOnMyOnBAciIsCisiQGlGMSw1LjYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTVbbDA6S0E6I1oxOmwwOnM3OnBLQTpzMDpwbDU6QzEsMDoiLAorInMxNDpwbDc6czA6cGwxNDpSTjE6bDU6MDxaMjoxczEyOnBsNTpuczU6cE4yOmwyOnMxNTpwSzY6bDE1OisiLAorIksuNDQ6bDU6KitzMTM6cGw1OmNTMStzMjpwTjM6bDU6MT5aNDpsMTA6MStzMTA6cGw1OksyOi9zNTpwbDI6IiwKKyIxK3MyOnBKMzpONDpsMTM6czI6cDFsNTorczE0OnBsNTpzNjpwMXM4OnBLMjpzMTE6cE42OjFCNzpKNTpOODoiLAorImwxMTppMTE6cEo2Ok43Omw2Omw1OipzNjpsODpsMTE6KnM4Oi9zOTpwbDk6MD1aOTpsMTA6MD5aMTA6TjExOiIsCisibDEwOmQxMDpaMTI6bDE0OmwxNDoqczE0OnBKMTE6TjEyOk4xMDpsMTU6czI6cGwxMjpaMTM6MWwxNDovUiIsCisiTjEzOmwxNDoxL1JOOTpsMTQ6bDk6K3MxNDpwSjg6TjU6MFJdQHIiLAorIkBpRjIsNS43LDksMTAsMTEsMTIsMTMsMTQsMTVbbDA6S0E6I1oxOmwwOnM3OnBLQTpzMDpwbDU6QzIsMDoiLAorInMxNDpwbDc6czA6cGwxNDpSTjE6bDU6MHtaMjoxSzEwOmwyOl4tMS9STjI6bDI6czE1OnBLNjpsMjorczI6IiwKKyJwSzI6czEwOnAwczExOnBOMzpsNTpLMjp9WjQ6bDEwOksyOipzMTA6cGw1OmNSczU6cEozOk40Ok41Omw1OiIsCisiSy41OntaNjpsMTA6SzI6KnMxMDpwbDU6Y1JzNTpwSjU6TjY6bDU6MS1sNToxKy9zMTM6czE0OnBsMTM6bDEzOiIsCisiKnMxMjpwSzM6czExOnBOODoxQjk6Sjc6TjEwOmwxMTpLMjorczExOnBKODpOOTpsMTM6bDEyOipzMTM6bDExOiIsCisiL3M5OnBsOTowPVoxMTpsMTA6bDE0OipzMTQ6cGwxNTpzMjpwbDE0OjEvUk4xMTpsMTQ6bDk6K3MxNDpwSjEwOk43OiIsCisiMFJdQHIiLAorIkBpRjMsNS43LDksMTEsMTIsMTMsMTYsMTQsMTVbbDA6S0E6I1oxOmwwOnM3OnBLQTpzMDpwbDU6QzMsMDoiLAorInMxNDpwbDc6czA6cGwxNDpSTjE6bDI6czE1OnBLMS4xOmwxNToqSzI6K3MyOnAxQzQsMDpzMTQ6cGw1OjAiLAorIjxaMjoxczEyOnBsNTpuczU6cE4yOjBzMjpwbDU6bDE0Oi9LMjorSzQ6L3MxMzpwbDU6SzQ6bDEzOipsMTQ6IiwKKyIqLXM1OnBsMTM6SzI6JVozOmw1Om5zNTpwTjM6bDE1OksyOitzMjpwbDU6czk6czE0OnBsNTpubDU6KnMxNjoiLAorInBLMzpzMTE6cE41OjFCNjpKNDpONzpsMTE6SzI6K3MxMTpwSjU6TjY6bDk6bDE2OmwxMTpsMTE6MS0qLyoiLAorInM5OnBsOTowPVo4OmwxNTpzMjpwbDEyOlo5OmwxNDpuMS9STjk6bDE0OjEvUk44OmwxNDpsOTorczE0OnAiLAorIko3Ok40OjBSXUByIiwKKyJAaUY1LDUuNywxNCwxNVtsMDpLQTojWjE6bDA6czc6cEtBOnMwOnBsNTpDNSwwOnMxNDpwbDc6czA6cGwxNDoiLAorIlJOMTpsMjpzMTU6cGwyOksxLjI6KnMyOnBsNToxQzQsMDpLMjoqK0MzLDA6czE0OnBsMTU6czI6cGwxNDoiLAorIjEvUjBSXUByIiwKKyJAaUY0LDUuNiw3LDksMTAsMTEsMTIsMTMsMTYsMTQsMTVbbDA6S0E6I1oxOmwwOnM3OnBLQTpzMDpwbDU6IiwKKyJDNCwwOnMxNDpwbDc6czA6cGwxNDpSTjE6MXMxMjpwbDU6MDxaMjoxbnMxMjpwbDU6bnM1OnBOMjpsNToxIiwKKyI9WjM6bDI6SzI1OntaNDpLLjc4NTM5ODE2MzM5NzQ0ODMwOTYxNTY2MDg6bDEyOi9STjQ6bDI6SzQwOntaNToiLAorIksuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1NzIxMDQ5MjpsMTI6L1JONTpsMjpLNjA6e1o2OiIsCisiSy43ODUzOTgxNjMzOTc0NDgzMDk2MTU2NjA4NDU4MTk4NzU3MjEwNDkyOTIzNDk4NDM3NzY0NTUyNDM3MzYiLAorIjpsMTI6L1JONjpOMzpsNTpLLjI6PVo3OmwyOksyNTp7Wjg6Sy4xOTczOTU1NTk4NDk4ODA3NTgzNzAwNDk3IiwKKyI6bDEyOi9STjg6bDI6SzQwOntaOTpLLjE5NzM5NTU1OTg0OTg4MDc1ODM3MDA0OTc2NTE5NDc5MDI5MzQ0NzUiLAorIjpsMTI6L1JOOTpsMjpLNjA6e1oxMDpLLjE5NzM5NTU1OTg0OTg4MDc1ODM3MDA0OTc2NTE5NDc5MDI5MzQ0NzU4NTEwMzc4Nzg1MjEwMTUxNzY4OCIsCisiOmwxMjovUk4xMDpONzpsMjpzMTU6cGw1OksuMjo+WjExOmwxNTpLNTorczI6cEsuMjpDNCwwOnM2OnBOMTE6IiwKKyJsMTU6SzM6K3MyOnBOMTI6bDU6Sy4yOj5aMTM6bDEwOjErczEwOnBsNTpLLjI6LTFsNTpLLjI6KisvczU6IiwKKyJwSjEyOk4xMzpsNTpzMTM6czE0OnBsNTpubDU6KnMxNjpwSzM6czExOnBOMTU6MUIxNjpKMTQ6TjE3OmwxMToiLAorIksyOitzMTE6cEoxNTpOMTY6bDEzOmwxNjoqczEzOmwxMTovczk6cGw5OjA9WjE4OmwxNTpzMjpwbDEwOmw2OiIsCisiKmwxNDorbDEyOi9STjE4OmwxNDpsOTorczE0OnBKMTc6TjE0OjBSXUByIiwKKyJAaUY2LDEzLDUuNiw3LDgsOSwxMCwxMSwxMiwxNiwxNCwxNVtsMDpLQTojWjE6bDA6czc6cEtBOnMwOnBsMTM6IiwKKyJsNTpDNiwwMDpzMTQ6cGw3OnMwOnBsMTQ6Uk4xOmwyOnMxNTpwMHMyOnBsMTM6MS9zMTM6cGwxMzowPFoyOiIsCisibDEzOm5zMTM6cGwxMzpLMjolMT1aMzoxczEyOnBOMzpOMjoxczEwOnBLMjpzMTE6cE41OmwxMTpsMTM6eyIsCisiQjY6SjQ6Tjc6bDExOmkxMTpwSjU6TjY6bDEwOmwxMToqczEwOnBKNzpONDpLMS41OmwxNToqczI6cGw1OiIsCisibDEzOl5LMjpsMTM6Xi9sMTA6L3MxMDpwMXM5OnMxNDpwbDU6bmw1OipLNDovczE2OnBLMS41OmwxNToqbDEwOiIsCisiY0wrbDEwOmNTLXMyOnAxczExOnBOOToxQjEwOko4Ok4xMTpsMTE6aTExOnBKOTpOMTA6bDk6bDE2OipsMTE6IiwKKyIvbDEzOmwxMTorL3M5OnBsOTowPVoxMjpsMTU6czI6cGwxMjpaMTM6bDEwOm5sMTQ6KjEvUk4xMzpsMTA6IiwKKyJsMTQ6KjEvUk4xMjpsMTQ6bDk6K3MxNDpwSjExOk44OjBSXUByIiwwfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmMvbm8tZ2VuLWxpYm1hdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iYy9uby1nZW4tbGlibWF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGNjZTU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmMvbm8tZ2VuLWxpYm1hdGgucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorVGhlc2UgcnVsZXMgYXJlIG5vdCBjcm9zcy1mcmllbmRseSBzbyBkZWxldGUgdGhlbSBhbmQgd2UnbGwgZ2VuZXJhdGUgdGhlIGZpbGUgb2ZmbGluZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvYmMvTWFrZWZpbGUuYW0gYi9iYy9NYWtlZmlsZS5hbQoraW5kZXggZDlkNDEyZS4uZjI0NDI0MSAxMDA2NDQKKy0tLSBhL2JjL01ha2VmaWxlLmFtCisrKysgYi9iYy9NYWtlZmlsZS5hbQorQEAgLTMxLDE0ICszMSw2IEBAIGdsb2JhbC5vOiBsaWJtYXRoLmgKKyAKKyBmYmNPQkogPSBtYWluLm8gYmMubyBzY2FuLm8gZXhlY3V0ZS5vIGxvYWQubyBzdG9yYWdlLm8gdXRpbC5vIHdhcnJhbnR5Lm8KKyAKKy1saWJtYXRoLmg6IGxpYm1hdGguYiAkKGZiY09CSikgJChMSUJCQykKKy0JZWNobyAnezB9JyA+IGxpYm1hdGguaAorLQkkKE1BS0UpIGdsb2JhbC5vCistCSQoTElOSykgLW8gZmJjICQoZmJjT0JKKSBnbG9iYWwubyAkKExJQkJDKSAkKExJQkwpICQoUkVBRExJTkVMSUIpICQoTElCUykKKy0JLi9mYmMgLWMgJChzcmNkaXIpL2xpYm1hdGguYiA8L2Rldi9udWxsID5saWJtYXRoLmgKKy0JJChzcmNkaXIpL2ZpeC1saWJtYXRoX2gKKy0Jcm0gLWYgLi9mYmMgLi9nbG9iYWwubworLQorIHNiY09CSiA9IG1haW4ubyBzYmMubyBzY2FuLm8gZXhlY3V0ZS5vIGdsb2JhbC5vIGxvYWQubyBzdG9yYWdlLm8gdXRpbC5vIFwKKyAgICAgICAgICB3YXJyYW50eS5vCisgc2JjLm86IHNiYy5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iY18xLjA2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmNfMS4wNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhjOGE4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iY18xLjA2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBcmJpdHJhcnkgcHJlY2lzaW9uIGNhbGN1bGF0b3IgbGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmMvYmMuaHRtbCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYy9iY2RlZnMuaDtlbmRsaW5lPTMxO21kNT00NmRmZmRhZjEwYTk5NzI4ZGQ4Y2UzNThlNDVkNDZkOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYy9kYy5oO2VuZGxpbmU9MjU7bWQ1PTJmOWM1NThjZGQ4MGUzMWI0ZDkwNGU0OGMyMzc0MzI4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9udW1iZXIuYztlbmRsaW5lPTMxO21kNT05OTQzNGEwODk4YWJjYTc3ODRhY2ZkMzZiODE5MTE5OSIKLQotU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJmbGV4IgotUFIgPSAicjMiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9iYy9iYy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXNlZ21lbnQtZmF1bHQucGF0Y2ggIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDQ0YjVkZGRlYmQ4YTdhNzMwOWFlYTZjMzZmZGExMTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGVmNmQ5ZjE3YzNjMGQ5MmQ4Nzk4ZTM1NjY2MTc1ZWNkM2Q4ZWZhYzQwMDlkNjQ1N2I1Yzk5Y2VhNzJjMGUzMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImRjIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjXzEuMDcuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjXzEuMDcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODA4NTc3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmNfMS4wNy4xLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiQXJiaXRyYXJ5IHByZWNpc2lvbiBjYWxjdWxhdG9yIGxhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2JjL2JjLmh0bWwiCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2JjL2JjZGVmcy5oO2VuZGxpbmU9MTc7bWQ1PTQyOTVjMDZkZjllODMzNTE5YTM0MmY3YjVkNDNkYjA2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RjL2RjLmg7ZW5kbGluZT0xODttZDU9MzZiOGM2MDBiNjNlZThjM2FlYWRlMjc2NGY2YjJhNGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL251bWJlci5jO2VuZGxpbmU9MjA7bWQ1PWNmNDMwNjhjYzg4ZjgzNzczMWRjNTMyNDA0NTZjZmFmIgorCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gImZsZXgtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1nZW4tbGlibWF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJtYXRoLmgiCitTUkNfVVJJW21kNXN1bV0gPSAiY2RhOTM4NTc0MTg2NTVlYTQzNTkwNzM2ZmMzY2E5ZmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjJhZGZjYTg5YjBhMWMwMTY0YzJjZGNhNTljYTIxMGMxZDQ0YzNmZmM0NmRhZjk5MzFjZjQ5NDI2NjRjYjAyYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1saWJlZGl0LC0td2l0aG91dC1saWJlZGl0LGxpYmVkaXQiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBjcCAtZiAke1dPUktESVJ9L2xpYm1hdGguaCAke0J9L2JjL2xpYm1hdGguaAorfQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJkYyIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvZmlsZXMvZml4LXNlZ21lbnQtZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9maWxlcy9maXgtc2VnbWVudC1mYXVsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBjMGRhMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9maWxlcy9maXgtc2VnbWVudC1mYXVsdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi13aGVuIHJ1biBjb21tYW5kIHN1Y2ggYXMgJ2VjaG8gImEgPSAxMyIgfCBiYyAtbCcsIGl0IHNlZ21lbnRhdGlvbiBmYXVsdHMuCi1UaGlzIHBhdGNoIGlzIGZyb20gaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2JsZnMtc3VwcG9ydEBsaW51eGZyb21zY3JhdGNoLm9yZy9tc2cwNDYwMi5odG1sLgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tIGJjLTEuMDYvbGliL251bWJlci5jLm9yaWcJMjAwMy0wOS0yNiAyMToxNDowMi4wMDAwMDAwMDAgKzAwMDAKLSsrKyBiYy0xLjA2L2xpYi9udW1iZXIuYwkyMDAzLTA5LTI2IDIxOjE0OjI2LjAwMDAwMDAwMCArMDAwMAotQEAgLTM0LDYgKzM0LDcgQEAKLSAjaW5jbHVkZSA8bnVtYmVyLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+LyogUHJvdG90eXBlcyBuZWVkZWQgZm9yIGV4dGVybmFsIHV0aWxpdHkgcm91dGluZXMuICovCi0gCi0gI2RlZmluZSBiY19ydF93YXJuIHJ0X3dhcm4KLS0tLSBiYy0xLjA2L2JjL2xvYWQuYy5vcmlnCTIwMDMtMDktMjYgMjE6MTQ6MTQuMDAwMDAwMDAwICswMDAwCi0rKysgYmMtMS4wNi9iYy9sb2FkLmMJMjAwMy0wOS0yNiAyMToxNDoyNi4wMDAwMDAwMDAgKzAwMDAKLUBAIC0xNTYsNyArMTU2LDcgQEAKLSAgIGxvbmcgIGxhYmVsX25vOwotICAgbG9uZyAgdmFmX25hbWU7CS8qIHZhcmlhYmxlLCBhcnJheSBvciBmdW5jdGlvbiBudW1iZXIuICovCi0gICBsb25nICBmdW5jOwotLSAgcHJvZ3JhbV9jb3VudGVyIHNhdmVfYWRyOwotKyAgc3RhdGljIHByb2dyYW1fY291bnRlciBzYXZlX2FkcjsKLSAKLSAgIC8qIEluaXRpYWxpemUuICovCi0gICBzdHIgPSBjb2RlOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDEtZml4LXR5cG9zLWluLW1hbnBhZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMS1maXgtdHlwb3MtaW4tbWFucGFnZS5wYXRjaAppbmRleCBmZWUzNjhkLi4yNWEyZmFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMS1maXgtdHlwb3MtaW4tbWFucGFnZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMS1maXgtdHlwb3MtaW4tbWFucGFnZS5wYXRjaApAQCAtNyw3ICs3LDcgQEAKIGZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vYi9ibGt0b29sL2Jsa3Rvb2xfNC03LmRlYmlhbi50YXIueHoKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCiAtLS0KICBibGt0b29sLjggfCA0ICsrLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAyLWZpeC1zdHJpbmctZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMi1maXgtc3RyaW5nLWVycm9yLnBhdGNoCmluZGV4IGQwOGFiYTUuLjQwMWU0MWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAyLWZpeC1zdHJpbmctZXJyb3IucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDItZml4LXN0cmluZy1lcnJvci5wYXRjaApAQCAtNyw3ICs3LDcgQEAKIGZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vYi9ibGt0b29sL2Jsa3Rvb2xfNC03LmRlYmlhbi50YXIueHoKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCiAtLS0KICB1dGlsLmMgfCAyICstCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAzLUZpeC0zLWQtYXJndW1lbnQtZm9yLUJMS1JPU0VULWl0LW11c3QtYmUtY29uc3QtaW50LnBhdGNoCmluZGV4IGQ3ZWQwYjkuLmQxZjFlNzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAzLUZpeC0zLWQtYXJndW1lbnQtZm9yLUJMS1JPU0VULWl0LW11c3QtYmUtY29uc3QtaW50LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAzLUZpeC0zLWQtYXJndW1lbnQtZm9yLUJMS1JPU0VULWl0LW11c3QtYmUtY29uc3QtaW50LnBhdGNoCkBAIC0xNCw3ICsxNCw3IEBACiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2IvYmxrdG9vbC9ibGt0b29sXzQtNy5kZWJpYW4udGFyLnh6CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCiAgYmxrdG9vbC5jIHwgMTEgKysrKysrKysrLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC9ibGt0b29sLWdudWxpYi1tYWtlZGV2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sL2Jsa3Rvb2wtZ251bGliLW1ha2VkZXYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlYTYwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC9ibGt0b29sLWdudWxpYi1tYWtlZGV2LnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZm9yIG1ham9yL21pbm9yIGRlZmludGlvbnMKKworRml4ZXMKKworfCAuLi9ibGt0b29sLTQub3JpZy9ibGt0b29sLmM6IEluIGZ1bmN0aW9uICdkZXRlY3RfZGV2X2NsYXNzJzoKK3wgLi4vYmxrdG9vbC00Lm9yaWcvYmxrdG9vbC5jOjI5NToxMDogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ21ham9yJyBbLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KK3wgICBzd2l0Y2ggKG1ham9yKHN0X3JkZXYpKSB7Cit8ICAgICAgICAgICBefn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitJbmRleDogYmxrdG9vbC00Lm9yaWcvYmxrdG9vbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYmxrdG9vbC00Lm9yaWcub3JpZy9ibGt0b29sLmMKKysrKyBibGt0b29sLTQub3JpZy9ibGt0b29sLmMKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgPGxpbnV4L2Nkcm9tLmg+CisgI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+CisgI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgCisgI2luY2x1ZGUgImJsa3Rvb2wuaCIKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbF80LTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2xfNC03LmJiCmluZGV4IDQ1NTFjMzIuLjBlNmY3ZWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbF80LTcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sXzQtNy5iYgpAQCAtMTMsNiArMTMsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtdHlwb3MtaW4tbWFucGFnZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1zdHJpbmctZXJyb3IucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ibGt0b29sLWdudWxpYi1tYWtlZGV2LnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjYyZWRjMDljOTkwODEwN2U2OTM5MWM4N2Y0ZjNmZDQwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgppbmRleCBhY2JmODBhLi4wMjVmNDVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgpAQCAtNSw3ICs1LDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvYnppcDIvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJiemlwMiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTg7ZW5kbGluZT0zNzttZDU9NDBkOWQxZWIwNTczNmQxYmZjODZjZmRkOTEwNmU2YjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO2JlZ2lubGluZT00O2VuZGxpbmU9Mzc7bWQ1PTM5NDA2MzE1ZjU0MGM2OWJkMDViMTUzMWRhZWRkMmFlIgogUFIgPSAicjUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyR7QlB9LnRhci5neiBcCkBAIC0yMCw2ICsyMCw3IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTI4NDhmMzRmY2Q1ZDZjZjQ3ZGVmMDA0NjFmY2I1MjhhMDQ4NGQ4ZWRlZjgyMDhkNmQyZTI5MDlkYzYxZDljZCIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL2J6aXAyLyIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBQQUNLQUdFUyA9KyAibGliYnoyIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZiOGMyMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9uIGRhZW1vbiBmb3IgZXhlY3V0aW5nIHByb2dyYW1zIGF0IHNldCB0aW1lcyIKLURFU0NSSVBUSU9OID0gIkNyb25pZSBjb250YWlucyB0aGUgc3RhbmRhcmQgVU5JWCBkYWVtb24gY3JvbmQgdGhhdCBydW5zIFwKLXNwZWNpZmllZCBwcm9ncmFtcyBhdCBzY2hlZHVsZWQgdGltZXMgYW5kIHJlbGF0ZWQgdG9vbHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBcCi1vcmlnaW5hbCBjcm9uIGFuZCBoYXMgc2VjdXJpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZW5oYW5jZW1lbnRzIGxpa2UgdGhlIFwKLWFiaWxpdHkgdG8gdXNlIHBhbSBhbmQgU0VMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKLQotIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQotTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgotCi1TRUNUSU9OID0gInV0aWxzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC8ke0JQTn0vcmVsZWFzZXMvIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllL3JlbGVhc2VzL2Rvd25sb2FkL2Nyb25pZS0ke1BWfS9jcm9uaWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb25kLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY3JvbnRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9uZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vY3JvbmRfcGFtX2NvbmZpZy5wYXRjaCIKLVBBTV9ERVBTID0gImxpYnBhbSBsaWJwYW0tcnVudGltZSBwYW0tcGx1Z2luLWFjY2VzcyBwYW0tcGx1Z2luLWxvZ2ludWlkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTEwZTZlZmZjYzAzMjk5OGIwYTQ5ZmJkNDYzMjJlMTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM3MzY2NjEwMmE2YjVkMzVlMmVhZjFiZDA2OTI1ZjJkNGIwY2VmOGQzMzIzYzM3Mjg2ZGRhMzA4OWE4NTMzOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCi0KLQkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQotCi0JIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LwotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5Ci0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55Ci0KLQkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKLQotCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQotCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKLQljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgotCi0JIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCi0JY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCi0JY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmNhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4yLmJiCkBAIC0wLDAgKzEsODMgQEAKK1NVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCitERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCitzcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCithYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20iCisKKyMgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtIExpY2Vuc2UKK0xJQ0VOU0UgPSAiSVNDICYgQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQyYTU5MjE3MDc2MGUxMzg2Yzc2OWUxMDQzYjM3MjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Nyb24uYztlbmRsaW5lPTIwO21kNT1iNDI1YzMzNDI2NTAyNjE3NzEyODM1M2ExNDI2MzNiNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcG9wZW4uYztiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1lZGQ1MDc0MmQ4ZGVmNzEyZTk0NzJkYmEzNTM2NjhhOSIKKworU0VDVElPTiA9ICJ1dGlscyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvJHtCUE59L3JlbGVhc2VzLyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS9yZWxlYXNlcy9kb3dubG9hZC9jcm9uaWUtJHtQVn0vY3JvbmllLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9uZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2Nyb250YWIgXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuc2VydmljZSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL2Nyb25kX3BhbV9jb25maWcucGF0Y2giCitQQU1fREVQUyA9ICJsaWJwYW0gbGlicGFtLXJ1bnRpbWUgcGFtLXBsdWdpbi1hY2Nlc3MgcGFtLXBsdWdpbi1sb2dpbnVpZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjcwMzMxNGY1OGE0OWVhMTM2ZTk5NjZkMzkzN2Q5YmY0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3MGJmMzQ2NDE2OTE0ODkzMzBlNzA4YmQ0Y2RiZDc3OTI2NzI5NmEwMzA2NjhhMTJmNzdiN2UzNjg3MmZkNzUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0td2l0aC1hdWRpdCwtLXdpdGhvdXQtYXVkaXQsYXVkaXQsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sJHtQQU1fREVQU30iCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJjcm9uZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkwIDIgMyA0IDUgLiBzdG9wIDYwIDAgMSA2IC4iCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBjcm9udGFiIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY3JvbmQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCWluc3RhbGwgLW0gMDY0NCAke1N9L2Nyb25kLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY3JvbmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9uZC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jcm9uZAorCisJIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jcm9uZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nyb25kLnNlcnZpY2UKKworCSMgYmVsb3cgYXJlIG5lY2Vzc2FyeSBmb3IgYSBjb21wbGV0ZSBjcm9uIGVudmlyb25tZW50CisJaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY3JvbnRhYiAke0R9JHtzeXNjb25mZGlyfS8KKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmQKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLndlZWtseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGVueQorCisJIyBiZWxvdyBzZXR0aW5nIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyBub3JtYWwgdXNlciB1c2luZyBjcm9udGFiCisKKwkjIHNldGdpZCBmb3IgY3JvbnRhYiBiaW5hcnkKKwljaG93biByb290OmNyb250YWIgJHtEfSR7YmluZGlyfS9jcm9udGFiCisJY2htb2QgMjc1NSAke0R9JHtiaW5kaXJ9L2Nyb250YWIKKworCSMgYWxsb3cgJ2Nyb250YWInIGdyb3VwIHdyaXRlIHRvIC92YXIvc3Bvb2wvY3JvbgorCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCisJY2htb2QgNzcwICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKworCWNobW9kIDYwMCAke0R9JHtzeXNjb25mZGlyfS9jcm9udGFiCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2Nyb24qIgorQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2Nyb250YWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwppbmRleCBhYzRkMjI1Li5jMTQyYTRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKQEAgLTIsMTMgKzIsMTQgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmN1cHMub3JnLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1ERVBFTkRTID0gImdudXRscyBsaWJwbmcganBlZyBkYnVzIGRidXMtZ2xpYiB6bGliIGxpYnVzYiIKK0RFUEVORFMgPSAiZ251dGxzIGxpYnBuZyBqcGVnIGRidXMgZGJ1cy1nbGliIHpsaWIgbGlidXNiMSIKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0tc291cmNlLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly91c2VfZWNob19vbmx5X2luX2luaXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jdXBzX3NlcnZlcmJpbi5wYXRjaCBcCi0JICAiCisgICAgICAgICAgIGZpbGU6Ly9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImN1cHMtKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspPyktc291cmNlLnRhciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ODg1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0BDVVBTX1NFUlZFUkJJTkAgaXMgJHtsaWJkaXJ9IHJlbGF0ZWQgdGhhdCBjYXVzZXMgbXVsdGlsaWIgaW5zdGFsbCBmaWxlCitjb25mbGljdC4gUmVtb3ZlIEBDVVBTX1NFUlZFUkJJTkAgZnJvbSB0aGUgY29tbWVudCBsaW5lIG9mIGN1cHMtZmlsZXMuY29uZiB0bworYXZvaWQgdGhlIGNvbmZsaWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluIGIvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KK2luZGV4IDRhNzhiYTYuLjAzYzY1ODIgMTAwNjQ0CistLS0gYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgorKysrIGIvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KK0BAIC03Myw3ICs3Myw3IEBAIFBhZ2VMb2cgQENVUFNfTE9HRElSQC9wYWdlX2xvZworICNSZXF1ZXN0Um9vdCBAQ1VQU19SRVFVRVNUU0AKKyAKKyAjIExvY2F0aW9uIG9mIGhlbHBlciBwcm9ncmFtcy4uLgorLSNTZXJ2ZXJCaW4gQENVUFNfU0VSVkVSQklOQAorKyNTZXJ2ZXJCaW4KKyAKKyAjIFNTTC9UTFMga2V5Y2hhaW4gZm9yIHRoZSBzY2hlZHVsZXIuLi4KKyAjU2VydmVyS2V5Y2hhaW4gQENVUFNfU0VSVkVSS0VZQ0hBSU5ACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhYTkzNGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGN1cHMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mMjEyYjQzMzhkYjBkYThjYjg5MmU5NGJmMjk0OTQ2MCIKLQotU1JDX1VSSVttZDVzdW1dID0gImU5MWMyNmQ4ZDk3YjVhMTYzMGE5NjJmNTMwZjAyMTkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMzg1Nzc4YzJiM2JkZjU1MDMwZDFjOTk5NzM0ZTIyNzc0Yzc5ZTM0MjVkOTEzMzljZTY3NzgyNTYyMDE2OWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUxYmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuOC5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgY3Vwcy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzMxNTBkMDg5OTNhMDRjOGUyMjE3NmU5MzgwNWEwNTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzk2OGZjMWQyNmZjNDg3Mjc1MDhkYjFjMTM4MGUzNmM2Njk0YWI5MDE3N2ZkNjkyMGFlYzVmNmNjNzNhZjllNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKaW5kZXggZGVhZGQ2Mi4uOGJhODk3ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKQEAgLTE5LDYgKzE5LDggQEAKIAogaW5oZXJpdCBwdGVzdAogCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKwogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAl0PSR7RH0ke1BURVNUX1BBVEh9CiAJaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAppbmRleCBkZTM4MTA0Li5kODEzMjBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSAxNDg0NTQ1YTE1MGRlNzk0ODNiNmUyYTc0YmUwMmViZDAzMGYxOTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVHVkb3IgRmxvcmVhIDx0dWRvci5mbG9yZWFAZW5lYS5jb20+CitEYXRlOiBXZWQsIDI4IE1heSAyMDE0IDE4OjU5OjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGV0aHRvb2w6IHVzZSBzZXJpYWwtdGVzdHMgY29uZmlnIG5lZWRlZCBieSBwdGVzdC4KKwogcHRlc3QgbmVlZHMgYnVpbGR0ZXN0LVRFU1RTIGFuZCBydW50ZXN0LVRFU1RTIHRhcmdldHMuCiBzZXJpYWwtdGVzdHMgaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhvc2UgdGFyZ2V0cy4KIApAQCAtNSwxMiArMTAsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogKGRlZmF1bHQgYXV0b21ha2UgYmVoYXZpb3IgaW5jb21wYXRpYmxlIHdpdGggcHRlc3QpCiAKLUluZGV4OiBldGh0b29sLTQuMTMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZXRodG9vbC00LjEzLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZXRodG9vbC00LjEzL2NvbmZpZ3VyZS5hYwotQEAgLTIsNyArMiw3IEBAIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHAKLSBBQ19JTklUKGV0aHRvb2wsIDQuMTMsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGU4OTFkOTEuLjYwMGY4YTggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIsNyArMiw3IEBAIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIEFDX0lOSVQoZXRodG9vbCwgNC4xNywgbmV0ZGV2QHZnZXIua2VybmVsLm9yZykKICBBQ19QUkVSRVEoMi41MikKICBBQ19DT05GSUdfU1JDRElSKFtldGh0b29sLmNdKQogLUFNX0lOSVRfQVVUT01BS0UoW2dudV0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODYyYTU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYmE0NGViMGNhOTY3NTIzOTJlOWJmOGRjODNiYTMwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzExYzRiNTU3YzQ0YzUyNDhhYzU0MzZiOWUxOWMzOTFhNjBkOGU0ODMwYjZhN2Y0MWJlMTZkODljMDU1NmRlIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKLSAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NGE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xNy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjRkYmEwMzQ1YTRhYjlmNTFiNGE0YTk3MzkyODQyMzhkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxMzAxNDJhMTVmNzQwOWQxOGRlMzY2Nzk5OGYzYzk5ZmJhNTJmZDdjOGQ5NGJlN2VjZGFiZjhkY2FiM2Q2YzEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAppbmRleCA4NzI5ZTFiLi42MDY0ZDE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4NmRiMmE1ZjNiN2VmODExM2U1Mzg0YjRlMDJkMmIyOTljODdhMDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKQEAgLTExLDE1ICsxMSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCisgZ2wvbGliL01ha2VmaWxlLmFtIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZmluZHV0aWxzLTQuNS4xNC9nbC9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC41LjE0Lm9yaWcvZ2wvbGliL01ha2VmaWxlLmFtCi0rKysgZmluZHV0aWxzLTQuNS4xNC9nbC9saWIvTWFrZWZpbGUuYW0KLUBAIC0xMjIwLDcgKzEyMjAsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKK2RpZmYgLS1naXQgYS9nbC9saWIvTWFrZWZpbGUuYW0gYi9nbC9saWIvTWFrZWZpbGUuYW0KK2luZGV4IGE5ZTJmZTQuLjFjNmVhOWMgMTAwNjQ0CistLS0gYS9nbC9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2dsL2xpYi9NYWtlZmlsZS5hbQorQEAgLTEyMzQsNyArMTIzNCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAogIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKICAJICAgIGRhcndpbls1Nl0qKSBcCiAgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU3MDQ3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCkBAIC0wLDAgKzEsMTQ0IEBACitGcm9tIGEzZjQ4MjFjNGEzZjcyM2QyMWM5Mjk4ZDU0YmVlOGE2NTZiZmQ3ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZXJuaGFyZCBWb2Vsa2VyIDxtYWlsQGJlcm5oYXJkLXZvZWxrZXIuZGU+CitEYXRlOiBUdWUsIDMwIEphbiAyMDE4IDIzOjMwOjA5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpbmQ6IG1ha2UgLWRlbGV0ZSBob25vdXIgdGhlIC1pZ25vcmVfcmVhZGRpcl9yYWNlIG9wdGlvbgorCisqIGZpbmQvcHJlZC5jIChwcmVkX2RlbGV0ZSk6IFJldHVybiB0cnVlIHdoZW4gdGhlIC1pZ25vcmVfcmVhZGRpcl9yYWNlCitvcHRpb24gaXMgYWN0aXZlIGFuZCB1bmxpbmthdCgpIGNhbWUgYmFjayB3aXRoIEVOT0VOVC4KKyogZG9jL2ZpbmQudGV4aSAoT3B0aW9uIC1pZ25vcmVfcmVhZGRpcl9yYWNlKTogRG9jdW1lbnQgdGhlIGNoYW5nZS4KKyhBY3Rpb24gLWRlbGV0ZSk6IExpa2V3aXNlLgorKiBmaW5kL2ZpbmQuMTogTGlrZXdpc2UuCisqIE5FV1MgKEJ1ZyBGaXhlcyk6IE1lbnRpb24gdGhlIGZpeC4KKworRm9yIG5vdywgaXQgc2VlbXMgYSBiaXQgaGFyZCB0byBhZGQgYSBwcm9wZXIgdGVzdCBmb3IgdGhpcywKK3NvIHRoZSBmb2xsb3dpbmcgc2hlbGwgc25pcHBldCBkZW1vbnN0cmF0ZXMgdGhlIHJhY2U6CisKKyAgJCBzZXEgMTAgfCB4YXJncyB0b3VjaAorICAkIGVudiB0aW1lIC1mICdmaW5kIGV4aXQgc3RhdHVzOiAleFxuZmluZCB0aW1lOiAlZScgXAorICAgICAgZmluZCAtaWdub3JlX3JlYWRkaXJfcmFjZSAtdHlwZSBmIFwKKyAgICAgICAgLWRlbGV0ZSBcCisgICAgICAgIC1leGVjIHNoIC1jICdzbGVlcCAkKGJhc2VuYW1lIHt9KScgXDsgXAorICAgICAgICAtcHJpbnRmICdmaW5kIGRlbGV0ZWQ6ICVwXG4nIFwKKyAgICAgICAgJiBcCisgICAgc2xlZXAgMjA7IFwKKyAgICBzZXEgMTAgfCB4YXJncyBybSAtZnY7IFwKKyAgICB3YWl0ICQhCisKK1JlcG9ydGVkIGJ5IEFsZXhhbmRlciBHb2x1YmV2IGluCitodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/NTI5ODEKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgTkVXUyAgICAgICAgICB8ICA0ICsrKysKKyBkb2MvZmluZC50ZXhpIHwgMTUgKysrKysrKysrKysrKystCisgZmluZC9maW5kLjEgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKysKKyBmaW5kL3ByZWQuYyAgIHwgIDYgKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ORVdTIGIvTkVXUworaW5kZXggNjYwYzI0MS4uYjg2ZWMxZSAxMDA2NDQKKy0tLSBhL05FV1MKKysrKyBiL05FV1MKK0BAIC00Miw2ICs0MiwxMCBAQCBVcGRhdGVkIHRoZSBEYW5pc2ggdHJhbnNsYXRpb24uCisgCisgKiogQnVnIEZpeGVzOgorIAorKyM1Mjk4MTogZmluZDogdGhlICctZGVsZXRlJyBhY3Rpb24gbm8gbG9uZ2VyIGNvbXBsYWlucyBhYm91dCBkaXNhcHBlYXJlZCBmaWxlcworKyAgICAgICAgd2hlbiB0aGUgJy1pZ25vcmVfcmVhZGRpcl9yYWNlJyBvcHRpb24gaXMgZ2l2ZW4sIHRvby4gIFRoYXQgYWN0aW9uIHdpbGwKKysgICAgICAgIGFsc28gcmV0dXJucyB0cnVlIGluIHN1Y2ggYSBjYXNlIG5vdy4KKysKKyBBcHBsaWVkIHBhdGNoICM4Njg4OiBTcGVsbGluZyBmaXhlcy4KKyAKKyAqIE1ham9yIGNoYW5nZXMgaW4gcmVsZWFzZSA0LjUuMTgsIDIwMTUtMTItMjcKK2RpZmYgLS1naXQgYS9kb2MvZmluZC50ZXhpIGIvZG9jL2ZpbmQudGV4aQoraW5kZXggZmRlYjg0MS4uMjQ3YzE5YSAxMDA2NDQKKy0tLSBhL2RvYy9maW5kLnRleGkKKysrKyBiL2RvYy9maW5kLnRleGkKK0BAIC0xNDE4LDcgKzE0MTgsMTUgQEAgZ2l2ZXMgYSBzaWduaWZpY2FudCBpbmNyZWFzZSBpbiBzZWFyY2ggc3BlZWQuCisgSWYgYSBmaWxlIGRpc2FwcGVhcnMgYWZ0ZXIgaXRzIG5hbWUgaGFzIGJlZW4gcmVhZCBmcm9tIGEgZGlyZWN0b3J5IGJ1dAorIGJlZm9yZSBAY29kZXtmaW5kfSBnZXRzIGFyb3VuZCB0byBleGFtaW5pbmcgdGhlIGZpbGUgd2l0aCBAY29kZXtzdGF0fSwKKyBkb24ndCBpc3N1ZSBhbiBlcnJvciBtZXNzYWdlLiAgSWYgeW91IGRvbid0IHNwZWNpZnkgdGhpcyBvcHRpb24sIGFuCistZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGlzc3VlZC4gIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VmdWwgaW4gc3lzdGVtCisrZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGlzc3VlZC4KKysKKytGdXJ0aGVybW9yZSwgQGNvZGV7ZmluZH0gd2l0aCB0aGUgQHNhbXB7LWlnbm9yZV9yZWFkZGlyX3JhY2V9IG9wdGlvbgorK3dpbGwgaWdub3JlIGVycm9ycyBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlCisraGFzIGRpc2FwcGVhcmVkIHNpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcyByZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQKKythbiBlcnJvciBkaWFnbm9zdGljLCBhbmQgdGhlIHJldHVybiBjb2RlIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24KKyt3aWxsIGJlIHRydWUuCisrCisrVGhpcyBvcHRpb24gY2FuIGJlIHVzZWZ1bCBpbiBzeXN0ZW0KKyBzY3JpcHRzIChjcm9uIHNjcmlwdHMsIGZvciBleGFtcGxlKSB0aGF0IGV4YW1pbmUgYXJlYXMgb2YgdGhlCisgZmlsZXN5c3RlbSB0aGF0IGNoYW5nZSBmcmVxdWVudGx5IChtYWlsIHF1ZXVlcywgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzLAorIGFuZCBzbyBmb3J0aCksIGJlY2F1c2UgdGhpcyBzY2VuYXJpbyBpcyBjb21tb24gZm9yIHRob3NlIHNvcnRzIG9mCitAQCAtMjc3OSw2ICsyNzg3LDExIEBAIGV4cGxpY2l0bHkuCisgCisgSWYgQHNhbXB7LWRlbGV0ZX0gZmFpbHMsIEBjb2Rle2ZpbmR9J3MgZXhpdCBzdGF0dXMgd2lsbCBiZSBub256ZXJvCisgKHdoZW4gaXQgZXZlbnR1YWxseSBleGl0cykuCisrCisrVG9nZXRoZXIgd2l0aCB0aGUgQHNhbXB7LWlnbm9yZV9yZWFkZGlyX3JhY2V9IG9wdGlvbiwgQGNvZGV7ZmluZH0gd2lsbAorK2lnbm9yZSBlcnJvcnMgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZSBoYXMgZGlzYXBwZWFyZWQKKytzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMgcmVhZDogaXQgd2lsbCBub3Qgb3V0cHV0IGFuIGVycm9yIGRpYWdub3N0aWMsIGFuZAorK3RoZSByZXR1cm4gY29kZSBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uIHdpbGwgYmUgdHJ1ZS4KKyBAZW5kIGRlZmZuCisgCisgQG5vZGUgQWRkaW5nIFRlc3RzCitkaWZmIC0tZ2l0IGEvZmluZC9maW5kLjEgYi9maW5kL2ZpbmQuMQoraW5kZXggN2IxNDFiOC4uMGVlYzQxYyAxMDA2NDQKKy0tLSBhL2ZpbmQvZmluZC4xCisrKysgYi9maW5kL2ZpbmQuMQorQEAgLTQ3OSw2ICs0NzksMTcgQEAgb25lIHBhcnQgb2YgdGhlIGZpbGVzeXN0ZW0gd2l0aCB0aGlzIG9wdGlvbiBvbiBhbmQgcGFydCBvZiBpdCB3aXRoIHRoaXMgb3B0aW9uCisgb2ZmIChpZiB5b3UgbmVlZCB0byBkbyB0aGF0LCB5b3Ugd2lsbCBuZWVkIHRvIGlzc3VlIHR3byBcZkJmaW5kXGZSIGNvbW1hbmRzCisgaW5zdGVhZCwgb25lIHdpdGggdGhlIG9wdGlvbiBhbmQgb25lIHdpdGhvdXQgaXQpLgorIAorK0Z1cnRoZXJtb3JlLAorKy5CIGZpbmQKKyt3aXRoIHRoZQorKy5CIFwtaWdub3JlX3JlYWRkaXJfcmFjZQorK29wdGlvbiB3aWxsIGlnbm9yZSBlcnJvcnMgb2YgdGhlCisrLkIgXC1kZWxldGUKKythY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUgaGFzIGRpc2FwcGVhcmVkIHNpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcyByZWFkOgorK2l0IHdpbGwgbm90IG91dHB1dCBhbiBlcnJvciBkaWFnbm9zdGljLCBhbmQgdGhlIHJldHVybiBjb2RlIG9mIHRoZQorKy5CIFwtZGVsZXRlCisrYWN0aW9uIHdpbGwgYmUgdHJ1ZS4KKysKKyAuSVAgIlwtbWF4ZGVwdGggXGZJbGV2ZWxzXGZSIgorIERlc2NlbmQgYXQgbW9zdCBcZklsZXZlbHNcZlIgKGEgbm9uLW5lZ2F0aXZlIGludGVnZXIpIGxldmVscyBvZgorIGRpcmVjdG9yaWVzIGJlbG93IHRoZSBzdGFydGluZy1wb2ludHMuCitAQCAtMTAzMCw2ICsxMDQxLDE3IEBAIGFuZAorIC5CIFwtZGVsZXRlCisgdG9nZXRoZXIuCisgCisrVG9nZXRoZXIgd2l0aCB0aGUKKysuQiBcLWlnbm9yZV9yZWFkZGlyX3JhY2UKKytvcHRpb24sCisrLkIgZmluZAorK3dpbGwgaWdub3JlIGVycm9ycyBvZiB0aGUKKysuQiBcLWRlbGV0ZQorK2FjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZSBoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzCisrcmVhZDogaXQgd2lsbCBub3Qgb3V0cHV0IGFuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlCisrLkIgXC1kZWxldGUKKythY3Rpb24gd2lsbCBiZSB0cnVlLgorKworIC5JUCAiXC1leGVjIFxmSWNvbW1hbmRcZlIgOyIKKyBFeGVjdXRlIFxmSWNvbW1hbmRcZlI7IHRydWUgaWYgMCBzdGF0dXMgaXMgcmV0dXJuZWQuICBBbGwgZm9sbG93aW5nCisgYXJndW1lbnRzIHRvCitkaWZmIC0tZ2l0IGEvZmluZC9wcmVkLmMgYi9maW5kL3ByZWQuYworaW5kZXggMzI5MzhmYi4uNDMxZjA2NSAxMDA2NDQKKy0tLSBhL2ZpbmQvcHJlZC5jCisrKysgYi9maW5kL3ByZWQuYworQEAgLTMyNCw2ICszMjQsMTIgQEAgcHJlZF9kZWxldGUgKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3RhdF9idWYsIHN0cnVjdCBwcmVkaWNhdGUgKnByZWQKKyAJfQorICAgICAgIGVsc2UKKyAJeworKwkgIGlmIChFTk9FTlQgPT0gZXJybm8gJiYgb3B0aW9ucy5pZ25vcmVfcmVhZGRpcl9yYWNlKQorKwkgICAgeworKwkgICAgICAvKiBJZ25vcmUgdW5saW5rKCkgZXJyb3IgZm9yIHZhbmlzaGVkIGZpbGVzLiAgKi8KKysJICAgICAgZXJybm8gPSAwOworKwkgICAgICByZXR1cm4gdHJ1ZTsKKysJICAgIH0KKyAJICBpZiAoRUlTRElSID09IGVycm5vKQorIAkgICAgeworIAkgICAgICBpZiAoKGZsYWdzICYgQVRfUkVNT1ZFRElSKSA9PSAwKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLWZmbHVzaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzZThlZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2gKQEAgLTAsMCArMSwxNDAgQEAKK0Zyb20gODBjZGZiYTA3OTYyN2UxNTEyOWE5MjZhMTMzODI1Yjk2MWQ0MWUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBNb24sIDUgTWFyIDIwMTggMTA6NTY6MjkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZmZsdXNoOiBhZGp1c3QgdG8gZ2xpYmMgMi4yOCBsaWJpby5oIHJlbW92YWwKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworUHJvYmxlbSByZXBvcnRlZCBieSBEYW5pZWwgUC4gQmVycmFuZ8OpIGluOgoraHR0cHM6Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudWxpYi8yMDE4LTAzL21zZzAwMDAwLmh0bWwKKyogbGliL2ZmbHVzaC5jIChjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24pCisoZGlzYWJsZV9zZWVrX29wdGltaXphdGlvbiwgcnBsX2ZmbHVzaCk6CisqIGxpYi9mcHVyZ2UuYyAoZnB1cmdlKToKKyogbGliL2ZyZWFkYWhlYWQuYyAoZnJlYWRhaGVhZCk6CisqIGxpYi9mcmVhZGluZy5jIChmcmVhZGluZyk6CisqIGxpYi9mc2Vla28uYyAoZnNlZWtvKToKKyogbGliL3N0ZGlvLWltcGwuaCAoX0lPX0lOX0JBQ0tVUCkgW19JT19FT0ZfU0VFTl06CitEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KKworVXBzdHJlYW0tY29tbWl0OiA0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlCitTaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlXQorLS0tCisgZ2wvbGliL2ZmbHVzaC5jICAgICB8IDYgKysrLS0tCisgZ2wvbGliL2ZwdXJnZS5jICAgICB8IDIgKy0KKyBnbC9saWIvZnJlYWRhaGVhZC5jIHwgMiArLQorIGdsL2xpYi9mcmVhZGluZy5jICAgfCAyICstCisgZ2wvbGliL2ZzZWVrby5jICAgICB8IDQgKystLQorIGdsL2xpYi9zdGRpby1pbXBsLmggfCA2ICsrKysrKworIDYgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZmZsdXNoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZmZsdXNoLmMKKysrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZmbHVzaC5jCitAQCAtMzMsNyArMzMsNyBAQAorICN1bmRlZiBmZmx1c2gKKyAKKyAKKy0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworIAorIC8qIENsZWFyIHRoZSBzdHJlYW0ncyB1bmdldGMgYnVmZmVyLCBwcmVzZXJ2aW5nIHRoZSB2YWx1ZSBvZiBmdGVsbG8gKGZwKS4gICovCisgc3RhdGljIHZvaWQKK0BAIC03Miw3ICs3Miw3IEBAIGNsZWFyX3VuZ2V0Y19idWZmZXIgKEZJTEUgKmZwKQorIAorICNlbmRpZgorIAorLSNpZiAhIChkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKKysjaWYgISAoZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKKyAKKyAjIGlmIChkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXykgJiYgZGVmaW5lZCBfX1NOUFQKKyAvKiBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIERyYWdvbkZseSwgTWFjIE9TIFgsIEN5Z3dpbiwgQW5kcm9pZCAqLworQEAgLTE0OCw3ICsxNDgsNyBAQCBycGxfZmZsdXNoIChGSUxFICpzdHJlYW0pCisgICBpZiAoc3RyZWFtID09IE5VTEwgfHwgISBmcmVhZGluZyAoc3RyZWFtKSkKKyAgICAgcmV0dXJuIGZmbHVzaCAoc3RyZWFtKTsKKyAKKy0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworIAorICAgY2xlYXJfdW5nZXRjX2J1ZmZlcl9wcmVzZXJ2aW5nX3Bvc2l0aW9uIChzdHJlYW0pOworIAorSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnB1cmdlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnB1cmdlLmMKKysrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZwdXJnZS5jCitAQCAtNjIsNyArNjIsNyBAQCBmcHVyZ2UgKEZJTEUgKmZwKQorICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCisgICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKKyAgICAgIGZhc3QgbWFjcm9zLiAgKi8KKy0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICBmcC0+X0lPX3JlYWRfZW5kID0gZnAtPl9JT19yZWFkX3B0cjsKKyAgIGZwLT5fSU9fd3JpdGVfcHRyID0gZnAtPl9JT193cml0ZV9iYXNlOworICAgLyogQXZvaWQgbWVtb3J5IGxlYWsgd2hlbiB0aGVyZSBpcyBhbiBhY3RpdmUgdW5nZXRjIGJ1ZmZlci4gICovCitJbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRhaGVhZC5jCisrKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgc2l6ZV90CisgZnJlYWRhaGVhZCAoRklMRSAqZnApCisgeworLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICBpZiAoZnAtPl9JT193cml0ZV9wdHIgPiBmcC0+X0lPX3dyaXRlX2Jhc2UpCisgICAgIHJldHVybiAwOworICAgcmV0dXJuIChmcC0+X0lPX3JlYWRfZW5kIC0gZnAtPl9JT19yZWFkX3B0cikKK0luZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkaW5nLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRpbmcuYworKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRpbmcuYworQEAgLTMxLDcgKzMxLDcgQEAgZnJlYWRpbmcgKEZJTEUgKmZwKQorICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCisgICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKKyAgICAgIGZhc3QgbWFjcm9zLiAgKi8KKy0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICByZXR1cm4gKChmcC0+X2ZsYWdzICYgX0lPX05PX1dSSVRFUykgIT0gMAorICAgICAgICAgICB8fCAoKGZwLT5fZmxhZ3MgJiAoX0lPX05PX1JFQURTIHwgX0lPX0NVUlJFTlRMWV9QVVRUSU5HKSkgPT0gMAorICAgICAgICAgICAgICAgJiYgZnAtPl9JT19yZWFkX2Jhc2UgIT0gTlVMTCkpOworSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnNlZWtvLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnNlZWtvLmMKKysrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZzZWVrby5jCitAQCAtNDcsNyArNDcsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCisgI2VuZGlmCisgCisgICAvKiBUaGVzZSB0ZXN0cyBhcmUgYmFzZWQgb24gZnB1cmdlLmMuICAqLworLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICBpZiAoZnAtPl9JT19yZWFkX2VuZCA9PSBmcC0+X0lPX3JlYWRfcHRyCisgICAgICAgJiYgZnAtPl9JT193cml0ZV9wdHIgPT0gZnAtPl9JT193cml0ZV9iYXNlCisgICAgICAgJiYgZnAtPl9JT19zYXZlX2Jhc2UgPT0gTlVMTCkKK0BAIC0xMjMsNyArMTIzLDcgQEAgZnNlZWtvIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbgorICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisgCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAgICAgICBmcC0+X2ZsYWdzICY9IH5fSU9fRU9GX1NFRU47CisgICAgICAgZnAtPl9vZmZzZXQgPSBwb3M7CisgI2VsaWYgZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18KK0luZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9zdGRpby1pbXBsLmgKKysrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAorQEAgLTE4LDYgKzE4LDEyIEBACisgICAgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gb2Ygc3RkaW8gZXh0ZW5zaW9uIEFQSSwgZXhjZXB0IHRoYXQgc29tZSBmaWVsZHMKKyAgICBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMsIG9yIHRoZWlyIGFjY2VzcyByZXF1aXJlcyBzb21lIGNhc3RzLiAgKi8KKyAKKysvKiBHbGliYyAyLjI4IG1hZGUgX0lPX0lOX0JBQ0tVUCBwcml2YXRlLiAgRm9yIG5vdywgd29yayBhcm91bmQgdGhpcworKyAgIHByb2JsZW0gYnkgZGVmaW5pbmcgaXQgb3Vyc2VsdmVzLiAgRklYTUU6IERvIG5vdCByZWx5IG9uIGdsaWJjCisrICAgaW50ZXJuYWxzLiAgKi8KKysjaWYgIWRlZmluZWQgX0lPX0lOX0JBQ0tVUCAmJiBkZWZpbmVkIF9JT19FT0ZfU0VFTgorKyMgZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKKysjZW5kaWYKKyAKKyAvKiBCU0Qgc3RkaW8gZGVyaXZlZCBpbXBsZW1lbnRhdGlvbnMuICAqLworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmIzOTUzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorRnJvbSA4MDYyODA0N2E2Y2M4M2Y4MmUwYzQxMGE4MmI4ZjdmYWNkOWQ1MGYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE0IFNlcCAyMDE2IDE5OjIxOjQyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1vdW50bGlzdDogaW5jbHVkZSBzeXNtYWNyb3MuaCBmb3IgZ2xpYmMKKworT24gRmVkb3JhIHJhd2hpZGUgKGdsaWJjIDIuMjUpLCAnLi9nbnVsaWItdG9vbCAtLXRlc3QgbW91bnRsaXN0JworcmVwb3J0czoKKy4uLy4uL2dsbGliL21vdW50bGlzdC5jOiBJbiBmdW5jdGlvbiAncmVhZF9maWxlX3N5c3RlbV9saXN0JzoKKy4uLy4uL2dsbGliL21vdW50bGlzdC5jOjUzNDoxMzogd2FybmluZzogJ19fbWFrZWRldl9mcm9tX3N5c190eXBlcycgaXMgZGVwcmVjYXRlZDoKKyAgSW4gdGhlIEdOVSBDIExpYnJhcnksIGBtYWtlZGV2JyBpcyBkZWZpbmVkIGJ5IDxzeXMvc3lzbWFjcm9zLmg+LgorICBGb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LCBpdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBieQorICA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvIHJlbW92ZSB0aGlzIHNvb24uCisgIFRvIHVzZSBgbWFrZWRldicsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZGlyZWN0bHkuCisgIElmIHlvdSBkaWQgbm90IGludGVuZCB0byB1c2UgYSBzeXN0ZW0tZGVmaW5lZCBtYWNybyBgbWFrZWRldicsCisgIHlvdSBzaG91bGQgI3VuZGVmIGl0IGFmdGVyIGluY2x1ZGluZyA8c3lzL3R5cGVzLmg+LgorICBbLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9uc10KKyAgICAgICAgICAgICBtZS0+bWVfZGV2ID0gbWFrZWRldiAoZGV2bWFqLCBkZXZtaW4pOworICAgICAgICAgICAgIF5+CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmg6Mzk3OjAsCisgICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oOjI1LAorICAgICAgICAgICAgICAgICBmcm9tIC4vc3lzL3R5cGVzLmg6MjgsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2xsaWIvbW91bnRsaXN0Lmg6MjMsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2xsaWIvbW91bnRsaXN0LmM6MjA6CisvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oOjg5OjE6IG5vdGU6IGRlY2xhcmVkIGhlcmUKKyBfX1NZU01BQ1JPU19ERUZJTkVfTUFLRURFViAoX19TWVNNQUNST1NfRlNUX0lNUExfVEVNUEwpCisgXgorCitGaXggaXQgYnkgaW5jbHVkaW5nIHRoZSByaWdodCBoZWFkZXJzLiAgV2UgYWxzbyBuZWVkIGEgZml4IHRvCithdXRvY29uZidzIEFDX0hFQURFUl9NQUpPUiwgYnV0IHRoYXQncyBhIHNlcGFyYXRlIHBhdGNoLgorCisqIG00L21vdW50bGlzdC5tNCAoZ2xfUFJFUkVRX01PVVRMSVNUX0VYVFJBKTogSW5jbHVkZQorQUNfSEVBREVSX01BSk9SLgorKiBsaWIvbW91bnRsaXN0LmMgKGluY2x1ZGVzKTogVXNlIGNvcnJlY3QgaGVhZGVycy4KKworU2lnbmVkLW9mZi1ieTogRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLWNvbW1pdDogNGRhNjNjNTg4MWY2MGY3MTk5OWE5NDM2MTJkYTkxMTIyMzJiOTE2MQorU2lnbmVkLW9mZi1ieTogS2FtaWwgRHVka2EgPGtkdWRrYUByZWRoYXQuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbNGRhNjNjNTg4MWY2MGY3MTk5OWE5NDM2MTJkYTkxMTIyMzJiOTE2MV0KKy0tLQorIGdsL2xpYi9tb3VudGxpc3QuYyB8IDYgKysrKysrCisgZ2wvbTQvbW91bnRsaXN0Lm00IHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9tb3VudGxpc3QuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9tb3VudGxpc3QuYworKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvbW91bnRsaXN0LmMKK0BAIC0zNyw2ICszNywxMiBAQAorICMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgI2VuZGlmCisgCisrI2lmIE1BSk9SX0lOX01LREVWCisrIyBpbmNsdWRlIDxzeXMvbWtkZXYuaD4KKysjZWxpZiBNQUpPUl9JTl9TWVNNQUNST1MKKysjIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZCBNT1VOVEVEX0dFVEZTU1RBVCAgIC8qIE9TRl8xIGFuZCBEYXJ3aW4xLjMueCAqLworICMgaWYgSEFWRV9TWVNfVUNSRURfSAorICMgIGluY2x1ZGUgPGdycC5oPiAvKiBuZWVkZWQgb24gT1NGIFY0LjAgZm9yIGRlZmluaXRpb24gb2YgTkdST1VQUywKK0luZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbTQvbW91bnRsaXN0Lm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbTQvbW91bnRsaXN0Lm00CisrKysgZmluZHV0aWxzLTQuNi4wL2dsL200L21vdW50bGlzdC5tNAorQEAgLTEsNCArMSw0IEBACistIyBzZXJpYWwgMTEKKysjIHNlcmlhbCAxMgorIGRubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNiwgMjAwOS0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorQEAgLTE1LDUgKzE1LDYgQEAgQUNfREVGVU4oW2dsX1BSRVJFUV9NT1VOVExJU1RfRVhUUkFdLAorIFsKKyAgIGRubCBOb3RlIGdsX0xJU1RfTU9VTlRFRF9GSUxFX1NZU1RFTVMgY2hlY2tzIGZvciBtbnRlbnQuaCwgbm90IHN5cy9tbnRlbnQuaC4KKyAgIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9tbnRlbnQuaF0pCisrICBBQ19IRUFERVJfTUFKT1IoKWRubCBmb3IgdXNlIG9mIG1ha2VkZXYgKCkKKyAgIGdsX0ZTVFlQRU5BTUUKKyBdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIKaW5kZXggMDcyZDNiMy4uNWU0Y2E5NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjYuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuNi4wLmJiCkBAIC02LDcgKzYsMTEgQEAKIAogREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaCBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5OTM2YWE4MDA5NDM4Y2UxODViZWEyNjk0YTk5N2ZjMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZWQ0YzlmNzM3MzFjZDQ4ZmVjM2I2YmRhY2NjZTg5NjQ3M2I2ZDhlMzM3ZTk2MTJlMTZjZjE0MzFiYjExNjlkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMS1CdWctNjk5Nzk1LWFkZC1vcGVyYW5kLWNoZWNraW5nLXRvLS5zZXRuYXRpdmVmb250bWFwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMS1CdWctNjk5Nzk1LWFkZC1vcGVyYW5kLWNoZWNraW5nLXRvLS5zZXRuYXRpdmVmb250bWFwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNzVkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAxLUJ1Zy02OTk3OTUtYWRkLW9wZXJhbmQtY2hlY2tpbmctdG8tLnNldG5hdGl2ZWZvbnRtYXAucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSAyNzRiMmNjMDhiMGQxMGE0Y2FjM2ZlOGI1MDAyMjg4OWYyMjU4MGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFRodSwgMjAgU2VwIDIwMTggMTY6MzU6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIEJ1ZyA2OTk3OTU6IGFkZCBvcGVyYW5kIGNoZWNraW5nIHRvCisgLnNldG5hdGl2ZWZvbnRtYXBidWlsdAorCisuc2V0bmF0aXZlZm9udG1hcGJ1aWx0IC5mb3JjZXB1dHMgYSB2YWx1ZSBpbnRvIHN5c3RlbWRpY3QgLSBpdCBpcyBpbnRlbmRlZAordG8gYmUgYSBib29sZWFuLCBidXQgaW4gdGhpcyBjYXNlIHdhcyBiZWluZyBjYWxsZWQgd2l0aCBhIGNvbXBvdW5kIG9iamVjdAorKGEgZGljdGlvbmFyeSkuIFN1Y2ggYW4gb2JqZWN0LCBpbiBsb2NhbCBWTSwgYmVpbmcgZm9yY2VkIGludG8gc3lzdGVtZGljdAord291bGQgdGhlbiBjb25mdXNlIHRoZSBnYXJiYWdlciwgc2luY2UgaXQgY291bGQgYmUgcmVzdG9yZWQgYXdheSB3aXRoIHRoZQorcmVmZXJlbmNlIHJlbWFpbmluZy4KKworVGhpcyBhZGRzIG9wZXJhbmQgY2hlY2tpbmcsIHNvIC5zZXRuYXRpdmVmb250bWFwYnVpbHQgd2lsbCBzaW1wbHkgaWdub3JlCithbnl0aGluZyBvdGhlciB0aGFuIGEgYm9vbGVhbiB2YWx1ZSwgYW5kIGFsc28gcmVtb3ZlcyB0aGUgZGVmaW5pdGlvbiBvZgorLnNldG5hdGl2ZWZvbnRtYXBidWlsdCBhZnRlciB1c2UsIHNpbmNlIGl0IGlzIG9ubHkgdXNlZCBpbiB0d28sIGNsb3NlbHkKK3JlbGF0ZWQgcGxhY2VzLgorCitDVkU6IENWRS0yMDE4LTE3OTYxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfZm9udHMucHMgfCAxMSArKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcworaW5kZXggMzhmMGY2Yy4uNDViNjYxMyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK0BAIC0zNzIsOSArMzcyLDEzIEBAIEZPTlRQQVRIIGxlbmd0aCAwIGVxIHsgKCVFTkQgRk9OVFBBVEgpIC5za2lwZW9mIH0gaWYKKyAlIG9mIHN0cmluZ3M6IHdoYXQgdGhlIHN5c3RlbSB0aGlua3MgaXMgdGhlIHBzIG5hbWUsCisgJSBhbmQgdGhlIGFjY2VzcyBwYXRoLgorIC8uc2V0bmF0aXZlZm9udG1hcGJ1aWx0IHsgJSBzZXQgd2hldGhlciB3ZSd2ZSBiZWVuIHJ1bgorLSAgc3lzdGVtZGljdCBleGNoIC8ubmF0aXZlZm9udG1hcGJ1aWx0IGV4Y2ggLmZvcmNlcHV0CisrICBkdXAgdHlwZSAvYm9vbGVhbnR5cGUgZXEgeworKyAgICAgIHN5c3RlbWRpY3QgZXhjaCAvLm5hdGl2ZWZvbnRtYXBidWlsdCBleGNoIC5mb3JjZXB1dAorKyAgfQorKyAge3BvcH0KKysgIGlmZWxzZQorIH0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmCistc3lzdGVtZGljdCAvTk9OQVRJVkVGT05UTUFQIGtub3duIC5zZXRuYXRpdmVmb250bWFwYnVpbHQKKytzeXN0ZW1kaWN0IC9OT05BVElWRUZPTlRNQVAga25vd24gLy8uc2V0bmF0aXZlZm9udG1hcGJ1aWx0IGV4ZWMKKyAvLmJ1aWxkbmF0aXZlZm9udG1hcCB7ICAgJSAtIC5idWlsZG5hdGl2ZWZvbnRtYXAgPGJvb2w+CisgICBzeXN0ZW1kaWN0IC8ubmF0aXZlZm9udG1hcGJ1aWx0IC5rbm93bmdldCBub3QKKyAgIHsgLy9mYWxzZX0gaWYKK0BAIC00MTUsOSArNDE5LDEwIEBAIHN5c3RlbWRpY3QgL05PTkFUSVZFRk9OVE1BUCBrbm93biAuc2V0bmF0aXZlZm9udG1hcGJ1aWx0CisgICAgICAgfSBmb3JhbGwKKyAgICAgfSBpZgorICAgICAlIHJlY29yZCB0aGF0IHdlJ3ZlIGJlZW4gcnVuCistICAgIC8vdHJ1ZSAuc2V0bmF0aXZlZm9udG1hcGJ1aWx0CisrICAgIC8vdHJ1ZSAvLy5zZXRuYXRpdmVmb250bWFwYnVpbHQgZXhlYworICAgfSBpZmVsc2UKKyB9IGJpbmQgZGVmCisrY3VycmVudGRpY3QgLy5zZXRuYXRpdmVmb250bWFwYnVpbHQgLmZvcmNldW5kZWYKKyAKKyAlIENyZWF0ZSB0aGUgZGljdGlvbmFyeSB0aGF0IHJlZ2lzdGVycyB0aGUgLmJ1aWxkZm9udCBwcm9jZWR1cmUKKyAlIChjYWxsZWQgYnkgZGVmaW5lZm9udCkgZm9yIGVhY2ggRm9udFR5cGUuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDItQnVnLTY5OTgxNi1JbXByb3ZlLWhpZGluZy1vZi1zZWN1cml0eS1jcml0aWNhbC1jdXN0by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDItQnVnLTY5OTgxNi1JbXByb3ZlLWhpZGluZy1vZi1zZWN1cml0eS1jcml0aWNhbC1jdXN0by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDBmOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMi1CdWctNjk5ODE2LUltcHJvdmUtaGlkaW5nLW9mLXNlY3VyaXR5LWNyaXRpY2FsLWN1c3RvLnBhdGNoCkBAIC0wLDAgKzEsNDM0IEBACitGcm9tIDA2NjFiZjIzYTViZTMyOTczNjgyZTE3YWZlZDRhMmYyM2E4MjE0YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgorRGF0ZTogU2F0LCAyOSBTZXAgMjAxOCAxNTozNDo1NSArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNV0gQnVnIDY5OTgxNjogSW1wcm92ZSBoaWRpbmcgb2Ygc2VjdXJpdHkgY3JpdGljYWwgY3VzdG9tCisgb3BlcmF0b3JzCisKK01ha2UgcHJvY2VkdXJlcyB0aGF0IHVzZSAuZm9yY2VwdXQvLmZvcmNlZGVmLy5mb3JjZXVuZGVmIGludG8gb3BlcmF0b3JzLgorCitUaGUgcmVzdWx0IG9mIHRoaXMgaXMgdGhhdCBlcnJvcnMgZ2V0IHJlcG9ydGVkIGFnYWluc3QgdGhlICJ0b3AiIG9wZXJhdG9yLAorcmF0aGVyIHRoYW4gdGhlICJjYWxsZWQiIG9wZXJhdG9yIHdpdGhpbiB0aGUgcHJvY2VkdXJlLgorCitGb3IgZXhhbXBsZToKKy9teXByb2MKK3sKKyAgbXlvcAorfSBiaW5kIGRlZgorCitJZiAnbXlvcCcgdGhyb3dzIGFuIGVycm9yLCB0aGUgZXJyb3IgaGFuZGxlciB3aWxsIGJlIHBhc3NlZCB0aGUgJ215b3AnCitvcGVyYXRvci4gUHJvbW90aW5nICdteXByb2MnIHRvIGEgb3BlcmF0b3IgbWVhbnMgdGhlIGVycm9yIGhhbmRsZXIgd2lsbCBiZQorcGFzc2VkICdteXByb2MnLgorCitDVkU6IENWRS0yMDE4LTE3OTYxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfZGlza24ucHMgfCAgMiArLQorIFJlc291cmNlL0luaXQvZ3NfZHBzLnBzICAgfCAgMiArLQorIFJlc291cmNlL0luaXQvZ3NfZm50ZW0ucHMgfCAgMiArLQorIFJlc291cmNlL0luaXQvZ3NfZm9udHMucHMgfCAxMCArKysrKy0tLS0tCisgUmVzb3VyY2UvSW5pdC9nc19sZXYyLnBzICB8IDEzICsrKysrKysrKy0tLS0KKyBSZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzIHwgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzIHwgMjUgKysrKysrKysrKysrKysrKystLS0tLS0tLQorIFJlc291cmNlL0luaXQvZ3NfdHlwMzIucHMgfCAxNCArKysrKysrKystLS0tLQorIFJlc291cmNlL0luaXQvZ3NfdHlwZTEucHMgfCAgMiArLQorIFJlc291cmNlL0luaXQvcGRmX2Jhc2UucHMgfCAgMiArLQorIFJlc291cmNlL0luaXQvcGRmX2RyYXcucHMgfCAxMCArKysrKy0tLS0tCisgUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcyB8ICA4ICsrKystLS0tCisgUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcyB8ICA0ICsrLS0KKyBSZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMgIHwgIDggKysrKy0tLS0KKyAxNCBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZGlza24ucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2Rpc2tuLnBzCitpbmRleCA1NTQwNzE1Li4yNmVjMGI1IDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19kaXNrbi5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19kaXNrbi5wcworQEAgLTUzLDcgKzUzLDcgQEAgc3lzdGVtZGljdCBiZWdpbgorICAgICBleGNoIC5zZXRnbG9iYWwKKyAgIH0KKyAgIGlmCistfSAuYmluZCBleGVjdXRlb25seSBkZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisgCisgJSBNb2RpZnkgLnB1dGRldnBhcmFtcyB0byBmb3JjZSByZWdlbmVyYXRpb24gb2YgLnNlYXJjaGFibGVkZXZzIGxpc3QKKyAvLnB1dGRldnBhcmFtcyB7CitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19kcHMucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcworaW5kZXggY2FkNzA1Ni4uZGFmN2IwZiAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZHBzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcworQEAgLTcwLDcgKzcwLDcgQEAKKyAgICAgICAgICAgICAgICAgJSBTYXZlIGEgY29weSBvZiB0aGUgaW5pdGlhbCBnc3RhdGUuCisgICAvL3N5c3RlbWRpY3QgL3NhdmVkaW5pdGlhbGdzdGF0ZSBnc3RhdGUgcmVhZG9ubHkgLmZvcmNlcHV0CisgICAuc2V0Z2xvYmFsCistfSAuYmluZCBleGVjdXRlb25seSBkZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisgCisgJSBJbml0aWFsaXplIGxvY2FsIGRpY3Rpb25hcmllcyBhbmQgZ3N0YXRlIHdoZW4gY3JlYXRpbmcgYSBuZXcgY29udGV4dC4KKyAlIE5vdGUgdGhhdCB1bnRpbCB0aGlzIGNvbXBsZXRlcywgd2UgYXJlIGluIHRoZSBhbm9tYWxvdXMgc2l0dWF0aW9uIG9mCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19mbnRlbS5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZm50ZW0ucHMKK2luZGV4IDNjZWVlMTguLmMxZjc2NTEgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2ZudGVtLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2ZudGVtLnBzCitAQCAtNDA4LDcgKzQwOCw3IEBAIGN1cnJlbnRkaWN0IGVuZCBkZWYKKyAgICAgZXhpdAorICAgfSBsb29wCisgICBleGNoIHNldGdsb2JhbAorLX0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorIAorIGN1cnJlbnRkaWN0IGVuZCAvUHJvY1NldCBkZWZpbmVyZXNvdXJjZSBwb3AKKyAKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcworaW5kZXggNDViNjYxMy4uODljM2FiNyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK0BAIC0zNzcsOCArMzc3LDggQEAgRk9OVFBBVEggbGVuZ3RoIDAgZXEgeyAoJUVORCBGT05UUEFUSCkgLnNraXBlb2YgfSBpZgorICAgfQorICAge3BvcH0KKyAgIGlmZWxzZQorLX0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmCistc3lzdGVtZGljdCAvTk9OQVRJVkVGT05UTUFQIGtub3duIC8vLnNldG5hdGl2ZWZvbnRtYXBidWlsdCBleGVjCisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmCisrc3lzdGVtZGljdCAvTk9OQVRJVkVGT05UTUFQIGtub3duIC5zZXRuYXRpdmVmb250bWFwYnVpbHQKKyAvLmJ1aWxkbmF0aXZlZm9udG1hcCB7ICAgJSAtIC5idWlsZG5hdGl2ZWZvbnRtYXAgPGJvb2w+CisgICBzeXN0ZW1kaWN0IC8ubmF0aXZlZm9udG1hcGJ1aWx0IC5rbm93bmdldCBub3QKKyAgIHsgLy9mYWxzZX0gaWYKK0BAIC00MTksNyArNDE5LDcgQEAgc3lzdGVtZGljdCAvTk9OQVRJVkVGT05UTUFQIGtub3duIC8vLnNldG5hdGl2ZWZvbnRtYXBidWlsdCBleGVjCisgICAgICAgfSBmb3JhbGwKKyAgICAgfSBpZgorICAgICAlIHJlY29yZCB0aGF0IHdlJ3ZlIGJlZW4gcnVuCistICAgIC8vdHJ1ZSAvLy5zZXRuYXRpdmVmb250bWFwYnVpbHQgZXhlYworKyAgICAvL3RydWUgLnNldG5hdGl2ZWZvbnRtYXBidWlsdAorICAgfSBpZmVsc2UKKyB9IGJpbmQgZGVmCisgY3VycmVudGRpY3QgLy5zZXRuYXRpdmVmb250bWFwYnVpbHQgLmZvcmNldW5kZWYKK0BAIC0xMTAzLDcgKzExMDMsNyBAQCAkZXJyb3IgL1N1YnN0aXR1dGVGb250IHsgfSBwdXQKKyAKKyAgICAgICAgICAgICAgICAgJSBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGZvbnQgd2FzIGFjdHVhbGx5IGxvYWRlZC4KKyAgICAgICAgIGR1cCAzIGluZGV4IC5mb250a25vd25nZXQKKy0gICAgICAgICB7IGR1cCAvUGF0aExvYWQgNCBpbmRleCAvLy5wdXRnc3RyaW5nY29weSBleGVjCisrICAgICAgICAgeyBkdXAgL1BhdGhMb2FkIDQgaW5kZXggLnB1dGdzdHJpbmdjb3B5CisgICAgICAgICAgICA0IDEgcm9sbCBwb3AgcG9wIHBvcCAvL3RydWUgZXhpdAorICAgICAgICAgIH0gaWYKKyAKK0BAIC0xMTE1LDcgKzExMTUsNyBAQCAkZXJyb3IgL1N1YnN0aXR1dGVGb250IHsgfSBwdXQKKyAgICAgICAgICB7ICAgICAgICAgICAgJSBTdGFjazogb3JpZ2ZvbnRuYW1lIGZvbnRkaXJlY3RvcnkgcGF0aCBmaWxlZm9udG5hbWUKKyAgICAgICAgICAgIDIgaW5kZXggMSBpbmRleCAuZm9udGtub3duZ2V0CisgICAgICAgICAgICAgeyAgICUgWWVzLiAgU3RhY2s6IG9yaWdmb250bmFtZSBmb250ZGlyZWN0b3J5IHBhdGggZmlsZWZvbnRuYW1lIGZvbnRkaWN0CistICAgICAgICAgICAgICBkdXAgNCAtMSByb2xsIC9QYXRoTG9hZCBleGNoIC8vLnB1dGdzdHJpbmdjb3B5IGV4ZWMKKysgICAgICAgICAgICAgIGR1cCA0IC0xIHJvbGwgL1BhdGhMb2FkIGV4Y2ggLnB1dGdzdHJpbmdjb3B5CisgICAgICAgICAgICAgICAgICAgICAgICUgU3RhY2s6IG9yaWdmb250bmFtZSBmb250ZGlyZWN0b3J5IGZpbGVmb250bmFtZSBmb250ZGljdAorICAgICAgICAgICAgICAgMyAtMSByb2xsIHBvcAorICAgICAgICAgICAgICAgICAgICAgICAlIFN0YWNrOiBvcmlnZm9udG5hbWUgZmlsZWZvbnRuYW1lIGZvbnRkaWN0CitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19sZXYyLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19sZXYyLnBzCitpbmRleCBlZWUwYjlmLi5hOGVkODkyIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19sZXYyLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKK0BAIC0xNjMsMTAgKzE2MywxMSBAQCBlbmQKKyAgICAgICAgICUgU2V0IHRoZW0gYWdhaW4gdG8gdGhlIG5ldyB2YWx1ZXMuICBGcm9tIGhlcmUgb24sIHdlIGFyZSBzYWZlLAorICAgICAgICAgJSBzaW5jZSBhIGNvbnRleHQgc3dpdGNoIHdpbGwgY29uc3VsdCB1c2VycGFyYW1zLgorICAgLnNldHVzZXJwYXJhbXMKKy19IC5iaW5kIGV4ZWN1dGVvbmx5IGRlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyAKKyAvc2V0dXNlcnBhcmFtcyB7CQklIDxkaWN0PiBzZXR1c2VycGFyYW1zIC0KKy0gICAgLnNldHVzZXJwYXJhbXMyCisrICAgIHsuc2V0dXNlcnBhcmFtczJ9IHN0b3BwZWQKKysgICAgey9zZXR1c2VycGFyYW1zIGxvYWQgJGVycm9yIC9lcnJvcm5hbWUgZ2V0IHNpZ25hbGVycm9yfSBpZgorIH0gLmJpbmQgb2RlZgorICUgSW5pdGlhbGl6ZSB1c2VyIHBhcmFtZXRlcnMgbWFuYWdlZCBoZXJlLgorIC9Kb2JOYW1lICgpIC5kZWZpbmVwc3VzZXJwYXJhbQorQEAgLTQxNSw3ICs0MTYsOSBAQCBwc3VzZXJwYXJhbXMgL1Byb2Nlc3NEU0NDb21tZW50IHsuY2hlY2twcm9jZXNzY29tbWVudH0gcHV0CisgCisgJSBWTVJlY2xhaW0gYW5kIFZNVGhyZXNob2xkIGFyZSB1c2VyIHBhcmFtZXRlcnMuCisgL3NldHZtdGhyZXNob2xkIHsJCSUgPGludD4gc2V0dm10aHJlc2hvbGQgLQorLSAgbWFyayAvVk1UaHJlc2hvbGQgMiAuYXJnaW5kZXggLmRpY3R0b21hcmsgLnNldHVzZXJwYXJhbXMyIHBvcAorKyAgbWFyayAvVk1UaHJlc2hvbGQgMiAuYXJnaW5kZXggLmRpY3R0b21hcmsgey5zZXR1c2VycGFyYW1zMn0gc3RvcHBlZAorKyAge3BvcCAvc2V0dm10aHJlc2hvbGQgbG9hZCAkZXJyb3IgL2Vycm9ybmFtZSBnZXQgc2lnbmFsZXJyb3J9CisrICB7cG9wfSBpZmVsc2UKKyB9IG9kZWYKKyAvdm1yZWNsYWltIHsJCQklIDxpbnQ+IHZtcmVjbGFpbSAtCisgICBkdXAgMCBndCB7CitAQCAtNDI3LDcgKzQzMCw5IEBAIHBzdXNlcnBhcmFtcyAvUHJvY2Vzc0RTQ0NvbW1lbnQgey5jaGVja3Byb2Nlc3Njb21tZW50fSBwdXQKKyAgICAgaWZlbHNlCisgICB9IHsKKyAgICAgJSBWTVJlY2xhaW0gdXNlcnBhcmFtIGNvbnRyb2xzIGVuYWJsZS9kaXNhYmxlIEdDCistICAgIG1hcmsgL1ZNUmVjbGFpbSAyIGluZGV4IC5kaWN0dG9tYXJrIC5zZXR1c2VycGFyYW1zMiBwb3AKKysgICAgbWFyayAvVk1SZWNsYWltIDIgaW5kZXggLmRpY3R0b21hcmsgey5zZXR1c2VycGFyYW1zMn0gc3RvcHBlZAorKyAgICB7cG9wIC92bXJlY2xhaW0gbG9hZCAkZXJyb3IgL2Vycm9ybmFtZSBnZXQgc2lnbmFsZXJyb3J9CisrICAgIHtwb3B9IGlmZWxzZQorICAgfSBpZmVsc2UKKyB9IG9kZWYKKyAtMSBzZXR2bXRocmVzaG9sZAorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCitpbmRleCBmYjFjNDE5Li41OGU3NWQzIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcworQEAgLTY2MCw3ICs2NjAsNyBAQCBjdXJyZW50ZGljdCAvLnBkZm1hcmtwYXJhbXMgLnVuZGVmCisgICB7CisgICAgIHBvcAorICAgfSBpZmVsc2UKKy19IC5iaW5kIGV4ZWN1dGVvbmx5IGRlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyAKKyAlIFVzZSB0aGUgRFNDIHByb2Nlc3NpbmcgaG9vayB0byBwYXNzIERTQyBjb21tZW50cyB0byB0aGUgZHJpdmVyLgorICUgV2UgdXNlIGEgcHNldWRvLXBhcmFtZXRlciBuYW1lZCBEU0Mgd2hvc2UgdmFsdWUgaXMgYW4gYXJyYXk6CitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcyBiL1Jlc291cmNlL0luaXQvZ3Nfc2V0cGQucHMKK2luZGV4IDhmYTdjNTEuLmFmYjRmZmEgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzCitAQCAtNjA4LDYgKzYwOCwyMCBAQCBOT01FRElBQVRUUlMgeworICUgaW4gdGhlIDxmYWlsZWQ+IGRpY3Rpb25hcnkgd2l0aCB0aGUgcG9saWN5IHZhbHVlLAorICUgYW5kIHdlIHJlcGxhY2UgdGhlIGtleSBpbiB0aGUgPG1lcmdlZD4gZGljdGlvbmFyeSB3aXRoIGl0cyBwcmlvciB2YWx1ZQorICUgKG9yIHJlbW92ZSBpdCBpZiBpdCBoYWQgbm8gcHJpb3IgdmFsdWUpLgorKworKyUgTWFraW5nIHRoaXMgYW4gb3BlcmF0b3IgbWVhbnMgd2UgY2FuIHByb3Blcmx5IGhpZGUKKyslIHRoZSBjb250ZW50cyAtIHNwZWNpZmljYWxseSAuZm9yY2VwdXQKKysvMVBvbGljeQorK3sKKysgICUgUm9sbCBiYWNrIHRoZSBmYWlsZWQgcmVxdWVzdCB0byBpdHMgcHJldmlvdXMgc3RhdHVzLgorKyAgU0VUUERERUJVRyB7IChSb2xsaW5nIGJhY2suKSA9IHBzdGFjayBmbHVzaCB9IGlmCisrICAzIGluZGV4IDIgaW5kZXggMyAtMSByb2xsIC5mb3JjZXB1dAorKyAgNCBpbmRleCAxIGluZGV4IC5rbm93bmdldAorKyAgIHsgNCBpbmRleCAzIDEgcm9sbCAuZm9yY2VwdXQgfQorKyAgIHsgMyBpbmRleCBleGNoIC51bmRlZiB9CisrICBpZmVsc2UKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorKworIC8ucG9saWN5cHJvY3MgbWFyaworICUgVGhlc2UgcHJvY2VkdXJlcyBhcmUgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBvbiB0aGUgc3RhY2s6CisgJSAgIDxvcmlnPiA8bWVyZ2VkPiA8ZmFpbGVkPiA8UG9saWNpZXM+IDxrZXk+IDxwb2xpY3k+CitAQCAtNjMxLDE0ICs2NDUsNyBAQCBOT01FRElBQVRUUlMgeworICAgICAgICAgL3NldHBhZ2VkZXZpY2UgLnN5c3RlbXZhciAvY29uZmlndXJhdGlvbmVycm9yIHNpZ25hbGVycm9yCisgICAgICAgfSBpZmVsc2UKKyAgIH0gYmluZAorLSAgMSB7CQklIFJvbGwgYmFjayB0aGUgZmFpbGVkIHJlcXVlc3QgdG8gaXRzIHByZXZpb3VzIHN0YXR1cy4KKy1TRVRQRERFQlVHIHsgKFJvbGxpbmcgYmFjay4pID0gcHN0YWNrIGZsdXNoIH0gaWYKKy0gICAgICAgIDMgaW5kZXggMiBpbmRleCAzIC0xIHJvbGwgLmZvcmNlcHV0CistICAgICAgICA0IGluZGV4IDEgaW5kZXggLmtub3duZ2V0CistICAgICAgICAgeyA0IGluZGV4IDMgMSByb2xsIC5mb3JjZXB1dCB9CistICAgICAgICAgeyAzIGluZGV4IGV4Y2ggLnVuZGVmIH0KKy0gICAgICAgIGlmZWxzZQorLSAgfSAuYmluZCBleGVjdXRlb25seSAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisrICAxIC8xUG9saWN5IGxvYWQKKyAgIDcgewkJJSBGb3IgUGFnZVNpemUgb25seSwganVzdCBpbXBvc2UgdGhlIHJlcXVlc3QuCisgICAgICAgICAxIGluZGV4IC9QYWdlU2l6ZSBlcQorICAgICAgICAgIHsgcG9wIHBvcCAxIGluZGV4IC9QYWdlU2l6ZSA3IHB1dCB9CitAQCAtNjQ2LDYgKzY1Myw4IEBAIFNFVFBEREVCVUcgeyAoUm9sbGluZyBiYWNrLikgPSBwc3RhY2sgZmx1c2ggfSBpZgorICAgICAgICAgaWZlbHNlCisgICB9IGJpbmQKKyAuZGljdHRvbWFyayByZWFkb25seSBkZWYKKytjdXJyZW50ZGljdCAvMVBvbGljeSB1bmRlZgorKworIC8uYXBwbHlwb2xpY2llcwkJJSA8b3JpZz4gPG1lcmdlZD4gPGZhaWxlZD4gLmFwcGx5cG9saWNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAlICAgPG9yaWc+IDxtZXJnZWQnPiA8ZmFpbGVkJz4KKyAgeyAxIGluZGV4IC9Qb2xpY2llcyBnZXQgMSBpbmRleAorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfdHlwMzIucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3R5cDMyLnBzCitpbmRleCBiNjYwMGIwLi45MTUwZjcxIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc190eXAzMi5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc190eXAzMi5wcworQEAgLTc5LDE1ICs3OSwxOSBAQCBzeXN0ZW1kaWN0IC8ucmVtb3ZlZ2x5cGhzIC51bmRlZgorIC5kaWN0dG9tYXJrIC9Qcm9jU2V0IGRlZmluZXJlc291cmNlIHBvcAorIAorIC8uY2lkZm9udHR5cGVzIHdoZXJlIHsgcG9wIH0geyAvLmNpZGZvbnR0eXBlcyA2IGRpY3QgZGVmIH0gaWZlbHNlCistLmNpZGZvbnR0eXBlcyBiZWdpbgorLQorLTQJJSBDSURGb250VHlwZSA0ID0gRm9udFR5cGUgMzIKKy17IGR1cCAvRm9udFR5cGUgMzIgLmZvcmNlcHV0CisrL0NJREZvbnRUeXBlNAorK3sKKysgIGR1cCAvRm9udFR5cGUgMzIgLmZvcmNlcHV0CisgICBkdXAgL0NoYXJTdHJpbmdzIDIwIGRpY3QgLmZvcmNlcHV0CisgICAxIGluZGV4IGV4Y2ggLmJ1aWxkZm9udDMyIGV4Y2ggcG9wCistfSAuYmluZCBleGVjdXRlb25seSBkZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorKy5jaWRmb250dHlwZXMgYmVnaW4KKysKKysKKys0IC9DSURGb250VHlwZTQgbG9hZCBkZWYgJSBDSURGb250VHlwZSA0ID0gRm9udFR5cGUgMzIKKyAKKyBlbmQJCSUgLmNpZGZvbnR0eXBlcworK2N1cnJlbnRkaWN0IC9DSURGb250VHlwZTQgLmZvcmNldW5kZWYKKyAKKyAlIERlZmluZSB0aGUgQnVpbGRHbHlwaCBwcm9jZWR1cmUuCisgJSBTaW5jZSBUeXBlIDMyIGZvbnRzIGFyZSBpbmRleGVkIGJ5IENJRCwgdGhlcmUgaXMgbm8gQnVpbGRDaGFyIHByb2NlZHVyZS4KK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX3R5cGUxLnBzIGIvUmVzb3VyY2UvSW5pdC9nc190eXBlMS5wcworaW5kZXggZWZkYWU0OC4uMjkzNWQ5YyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfdHlwZTEucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfdHlwZTEucHMKK0BAIC0yODMsNyArMjgzLDcgQEAgY3VycmVudGRpY3QgL2Nsb3Nlc291cmNlZGljdCAudW5kZWYKKyAgIH0gaWYKKyAgIDIgY29weSAvV2VpZ2h0VmVjdG9yIGV4Y2ggLmZvcmNlcHV0CisgICAuc2V0d2VpZ2h0dmVjdG9yCistfSAuYmluZCBleGVjdXRlb25seSBkZWYKKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyBlbmQKKyAKKyAlIFJlZ2lzdGVyIHRoZSBmb250IHR5cGVzIGZvciBkZWZpbmVmb250LgorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzCitpbmRleCBhODJhMmEzLi43Y2NkNGNkIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcworQEAgLTIxOCw3ICsyMTgsNyBAQCBjdXJyZW50ZGljdCAvbnVtLWNoYXJzLWRpY3QgLnVuZGVmCisgICAgICAgfSBpZmVsc2UKKyAgICAgfSBpZmVsc2UKKyAgIH0gaWZlbHNlCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgL1BERlNjYW5SdWxlc190cnVlIDw8IC9QREZTY2FuUnVsZXMgLy90cnVlID4+IGRlZgorIC9QREZTY2FuUnVsZXNfbnVsbCA8PCAvUERGU2NhblJ1bGVzIC8vbnVsbCA+PiBkZWYKKyAvLnBkZnJ1biB7CQkJJSA8ZmlsZT4gPG9wZGljdD4gLnBkZnJ1biAtCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcyBiL1Jlc291cmNlL0luaXQvcGRmX2RyYXcucHMKK2luZGV4IGQxYjZhYzkuLmMyMzlkYWYgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCitAQCAtMTE1OCw3ICsxMTU4LDcgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgorICAgUQorICAgUERGREVCVUcgeyBwZGZkaWN0IC9QREZTVEVQY291bnQgLmtub3duZ2V0IHsgMSBsZSB9IHsgLy90cnVlIH0gaWZlbHNlIHsgKCVFbmQgUGFpbnRQcm9jKSBwcmludCBkdXAgPT09IGZsdXNoIH0gaWYgfSBpZgorICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC8ucGRmcGFpbnRwcm9jIHsKKyAgICAgJSUgR2V0IHRoZSAvbSBmcm9tIHBkZm9wZGljdCAobXVzdCBiZSBwcmVzZW50KQorQEAgLTExODksNyArMTE4OSw3IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKKyAgICAgeworICAgICAgIHN3aXRjaF90b190ZXh0X21hcmtpbmdfb3BzCisgICAgIH0gaWYKKy19YmluZCBleGVjdXRlb25seSBkZWYKKyt9YmluZCBleGVjdXRlb25seSBvZGVmCisgCisgL3Jlc29sdmVwYXR0ZXJuIHsJJSA8cGF0dGVybnN0cmVhbWRpY3Q+IHJlc29sdmVwYXR0ZXJuIDxwYXR0ZXJuZGljdD4KKyAgICAgICAgICAgICAgICAgJSBEb24ndCBkbyB0aGUgcmVzb2x2ZXN0cmVhbSBub3c6IGp1c3QgY2FwdHVyZSB0aGUgZGF0YQorQEAgLTIzNTMsNyArMjM1Myw3IEBAIGN1cnJlbnRkaWN0IC9sYXN0LWRpdGNoLWJwYy1jc3AgdW5kZWYKKyAgIH17CisgICAgIHBkZmRpY3QgL0FwcGVhcmFuY2VOdW1iZXIgMCAuZm9yY2VwdXQKKyAgIH0gaWZlbHNlCistfWJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfWJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC9NYWtlQXBwZWFyYW5jZU5hbWUgeworICAgcGRmZGljdCAvQXBwZWFyYW5jZU51bWJlciBnZXQKK0BAIC0yMzgyLDcgKzIzODIsNyBAQCBjdXJyZW50ZGljdCAvbGFzdC1kaXRjaC1icGMtY3NwIHVuZGVmCisgICBEb0Zvcm0KKyAgIHBkZmRpY3QgLy5QcmVzZXJ2ZVBERkZvcm0gMyAtMSByb2xsIC5mb3JjZXB1dAorICAgZ3Jlc3RvcmUKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvRG9Gb3JtIHsKKyAgICUlIHNhdmUgdGhlIGN1cnJlbnQgdmFsdWUsIGlmIGl0cyB0cnVlIHdlIHdpbGwgc2V0IGl0IHRvIGZhbHNlIGxhdGVyLCBpbiBvcmRlcgorQEAgLTI1NDEsNyArMjU0MSw3IEBAIGN1cnJlbnRkaWN0IC9sYXN0LWRpdGNoLWJwYy1jc3AgdW5kZWYKKyAgICAgZW5kCisgICB9IGlmCisgICBwZGZkaWN0IC8uUHJlc2VydmVQREZGb3JtIDMgLTEgcm9sbCAuZm9yY2VwdXQKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvX2RvcHNfc2F2ZSAxIGFycmF5IGRlZgorIAorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCitpbmRleCBmZWFmMGQwLi41MzViMTRhIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcworQEAgLTcxOCw3ICs3MTgsNyBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCisgICB7cG9wIHBvcCBwb3B9CisgICBpZmVsc2UKKyAKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyBjdXJyZW50ZGljdCAvLkRvVG9Vbmljb2RlPyAuZm9yY2V1bmRlZgorIAorQEAgLTEyNDEsNyArMTI0MSw3IEBAIGN1cnJlbnRkaWN0IC9lZXhlY19wZGZfcGFyYW1fZGljdCAudW5kZWYKKyAgICAgfSBiZGVmCisgICAgIGR1cCBjdXJyZW50ZGljdCBFbmNvZGluZyAucHJvY2Vzc1RvVW5pY29kZQorICAgICBjdXJyZW50ZGljdCBlbmQgLmNvbXBsZXRlZm9udCBleGNoIHBvcAorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIC8uYWRqdXN0Y2hhcndpZHRoIHsJJSA8d3g+IDx3eT4gLmFkanVzdGNoYXJ3aWR0aCA8d3gnPiA8d3knPgorICAgJSBFbmZvcmNlIHRoZSBtZXRyaWNzLCBpbiBnbHlwaCBzcGFjZSwgdG8gdGhlIHZhbHVlcyBmb3VuZCBpbiB0aGUgUERGIEZvbnQgb2JqZWN0CisgICAlIC0gZm9yY2Ugd3kgPT0gMCAoYXNzdW1lZCwgYW5kIG5vdCBzdG9yZWQgaW4gdGhlIFBERiBmb250KQorQEAgLTIwMjYsNyArMjAyNiw3IEBAIGN1cnJlbnRkaWN0IC9DTWFwX3JlYWRfZGljdCB1bmRlZgorICAgICB9IGlmCisgICAgIC9maW5kcmVzb3VyY2UgY3Z4IC91bmRlZmluZWQgc2lnbmFsZXJyb3IKKyAgIH0gbG9vcAorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC9idWlsZENJRFR5cGUwIHsJJSA8Q0lERm9udFR5cGUwLWZvbnQtcmVzb3VyY2U+IGJ1aWxkQ0lEVHlwZTAgPGZvbnQ+CisgICBkdXAgL0Jhc2VGb250IGdldCBmaW5kQ0lERm9udCBleGNoIHBvcAorQEAgLTIyMTEsNyArMjIxMSw3IEBAIGN1cnJlbnRkaWN0IC9DTWFwX3JlYWRfZGljdCB1bmRlZgorICAgL1R5cGUwIC8vYnVpbGRUeXBlMAorICAgL1R5cGUxIC8vYnVpbGRUeXBlMQorICAgL01NVHlwZTEgLy9idWlsZFR5cGUxCistICAvVHlwZTMgLy9idWlsZFR5cGUzCisrICAvVHlwZTMgL2J1aWxkVHlwZTMgbG9hZAorICAgL1RydWVUeXBlIC8vYnVpbGRUcnVlVHlwZQorICAgL0NJREZvbnRUeXBlMCAvL2J1aWxkQ0lEVHlwZTAKKyAgIC9DSURGb250VHlwZTIgLy9idWlsZENJRFR5cGUyCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcyBiL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKK2luZGV4IDA5Zjg3MzUuLmM4MjNlNjkgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzCitAQCAtNjYwLDcgKzY2MCw3IEBAIGN1cnJlbnRkaWN0IC9ydW5wZGZzdHJpbmcgLnVuZGVmCisgICAgIH0gZm9yYWxsCisgICAgIHBvcAorICAgfSBpZmVsc2UKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyBjdXJyZW50ZGljdCAvcGRmX2NvbGxlY3Rpb25fZmlsZXMgLnVuZGVmCisgCitAQCAtMjcxNSw3ICsyNzE1LDcgQEAgY3VycmVudGRpY3QgL1BERjJQU19tYXRyaXhfa2V5IHVuZGVmCisgICAuc2V0Z2xvYmFsCisgICAvUmVwYWlyZWRBbkVycm9yIGV4Y2ggZGVmCisgICAvUmVwYWlyZWQgZXhjaCBkZWYKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAlIERpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIGEgcGFnZSAoaW5jbHVkaW5nIGFubm90YXRpb25zKS4KKyAvc2hvd3BhZ2Vjb250ZW50cyB7CSUgPHBhZ2VkaWN0PiBzaG93cGFnZWNvbnRlbnRzIC0KK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMKK2luZGV4IGM0NWZjNTEuLjg2NzJkNjEgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMKKysrKyBiL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcworQEAgLTE5Myw3ICsxOTMsNyBAQCBjdXJyZW50ZGljdCAvZ3B1dF9hbHdheXNfYWxsb3cgLnVuZGVmCisgICAgICAgcGRmZm9ybWF0ZXJyb3IKKyAgICAgfSBpZmVsc2UKKyAgIH0gaWYKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAlIFNhdmUgUERGIGdzdGF0ZQorIC9xc3RhdGUgeyAgICAgICAlIC0gcXN0YXRlIDxxc3RhdGU+CitAQCAtNDUxLDcgKzQ1MSw3IEBAIGN1cnJlbnRkaWN0IC9ncHV0X2Fsd2F5c19hbGxvdyAudW5kZWYKKyAgICUlIGEgZ3NhdmUsIHNvIHdlIGhhdmVuJ3QgY29waWVkIGl0IHRvIC9zZWxmLCBpZiB3ZSBkb24ndCBkbyB0aGF0IGhlcmUKKyAgICUlIHRoZW4gdHJhbnNwYXJlbnQgYW5ub3RhdGlvbnMgY2F1c2UgYW4gaW52YWxpZCBhY2Nlc3MgZXJyb3IuCisgICBjdXJyZW50ZGljdCAvL25vZGljdCBlcSB7L3NlbGYgZHVwIGxvYWQgZW5kIDUgZGljdCBiZWdpbiBkZWZ9IGlmCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgL0FJUyB7IC5zZXRhbHBoYWlzc2hhcGUgfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorIC9CTSB7CisgICAvLnNldGJsZW5kbW9kZSB3aGVyZSB7CitAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgZW5kIHJlYWRvbmx5IGRlZgorICAgICBwZGZvcGRpY3QgL3Yge2luc2lkZV90ZXh0X3Z9IGJpbmQgLmZvcmNlcHV0CisgICAgIHBkZm9wZGljdCAveSB7aW5zaWRlX3RleHRfeX0gYmluZCAuZm9yY2VwdXQKKyAgICAgcGRmb3BkaWN0IC9yZSB7aW5zaWRlX3RleHRfcmV9IGJpbmQgLmZvcmNlcHV0CistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgL3N3aXRjaF90b19ub3JtYWxfbWFya2luZ19vcHMgeworICAgICBwZGZvcGRpY3QgL20ge25vcm1hbF9tfSBiaW5kIC5mb3JjZXB1dAorQEAgLTEwODYsNyArMTA4Niw3IEBAIGVuZCByZWFkb25seSBkZWYKKyAgICAgcGRmb3BkaWN0IC92IHtub3JtYWxfdn0gYmluZCAuZm9yY2VwdXQKKyAgICAgcGRmb3BkaWN0IC95IHtub3JtYWxfeX0gYmluZCAuZm9yY2VwdXQKKyAgICAgcGRmb3BkaWN0IC9yZSB7bm9ybWFsX3JlfSBiaW5kIC5mb3JjZXB1dAorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC9CVCB7CisgICBjdXJyZW50ZGljdCAvVGV4dFNhdmVNYXRyaXgga25vd24geworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAzLUJ1Zy02OTk4MzItYWRkLWNvbnRyb2wtb3Zlci1oaWRpbmctZXJyb3ItaGFuZGxlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAzLUJ1Zy02OTk4MzItYWRkLWNvbnRyb2wtb3Zlci1oaWRpbmctZXJyb3ItaGFuZGxlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3ODY1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDMtQnVnLTY5OTgzMi1hZGQtY29udHJvbC1vdmVyLWhpZGluZy1lcnJvci1oYW5kbGVycy5wYXRjaApAQCAtMCwwICsxLDE3MiBAQAorRnJvbSAxZjlhOTFjODZiZDU2YWNmNTc4MjZiOWIwZTAyMGViZTE5NTNlMmFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFRodSwgNCBPY3QgMjAxOCAxMDo0MjoxMyArMDEwMAorU3ViamVjdDogW1BBVENIIDMvNV0gQnVnIDY5OTgzMjogYWRkIGNvbnRyb2wgb3ZlciBoaWRpbmcgZXJyb3IgaGFuZGxlcnMuCisKK1dpdGggYSBwcmV2aW91cyBjb21taXQgY2hhbmdpbmcgZXJyb3IgaGFuZGxpbmcgaW4gU0FGRVIgc28gdGhlIGhhbmRsZXIgZ2V0cworcGFzc2VkIGEgbmFtZSBvYmplY3QgKHJhdGhlciB0aGFuIGV4ZWN1dGFibGUgb2JqZWN0KSwgaXQgaXMgbGVzcyBjcml0aWNhbCB0bworaGlkZSB0aGUgZXJyb3IgaGFuZGxlcnMuCisKK1RoaXMgaW50cm9kdWNlcyBhIC1kU0FGRVJFUlJPUlMgb3B0aW9uIHRvIGZvcmNlIG9ubHkgdXNlIG9mIHRoZSBkZWZhdWx0IGVycm9yCitoYW5kbGVycy4KKworSXQgYWxzbyBhZGRzIGEgLnNldHNhZmVyZXJyb3JzIFBvc3RzY3JpcHQgY2FsbCwgbWVhbmluZyBhIGNhbGxlciwgd2l0aG91dAorLWRTQUZFUkVSUk9SUywgY2FuIGNyZWF0ZSB0aGVpciBvd24gZGVmYXVsdCBlcnJvciBoYW5kbGVycyAoaW4gZXJyb3JkaWN0LCBhcworbm9ybWFsKSwgYW5kIHRoZW4gY2FsbCAuc2V0c2FmZXJlcnJvcnMgbWVhbmluZyB0aGVpciBvd24gaGFuZGxlcnMgYXJlIGFsd2F5cworY2FsbGVkLgorCitXaXRoIC1kU0FGRVJFUlJPUlMgb3IgYWZ0ZXIgYSBjYWxsIHRvIC5zZXRzYWZlcmVycm9ycywgLnNldHNhZmVyZXJyb3JzIGlzCityZW1vdmVkLgorCitDVkU6IENWRS0yMDE4LTE3OTYxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfaW5pdC5wcyB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgcHNpL2ludGVycC5jICAgICAgICAgICAgIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworaW5kZXggYmVjMzA3ZC4uZjk1MmYzMiAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzCitAQCAtMTg4LDYgKzE4OCwxNiBAQCBjdXJyZW50ZGljdCAvREVMQVlTQUZFUiBrbm93biB7IC9ERUxBWVNBRkVSIC8vdHJ1ZSBkZWYgL05PU0FGRVIgLy90cnVlIGRlZiB9IGlmCisgICBjdXJyZW50ZGljdCAvUEFSQU5PSURTQUZFUiBrbm93biBvcgklIFBBUkFOT0lEU0FGRVIgaXMgZXF1aXZhbGVudAorIH0KKyBpZmVsc2UgZGVmCisrCisrL1NBRkVSRVJST1JTCisrY3VycmVudGRpY3QgL05PU0FGRVJFUlJPUlMga25vd24KKyt7CisrICAvL2ZhbHNlCisrfQorK3sKKysgIGN1cnJlbnRkaWN0IC9TQUZFUkVSUk9SUyBrbm93bgorK30gaWZlbHNlIGRlZgorKworIGN1cnJlbnRkaWN0IC9TSE9SVEVSUk9SUyBrbm93biAgIC9TSE9SVEVSUk9SUyBleGNoIGRlZgorIGN1cnJlbnRkaWN0IC9UVFlQQVVTRSBrbm93biAgIC9UVFlQQVVTRSBleGNoIGRlZgorIGN1cnJlbnRkaWN0IC9XUklURVNZU1RFTURJQ1Qga25vd24gICAvV1JJVEVTWVNURU1ESUNUIGV4Y2ggZGVmCitAQCAtMTEyMywxMiArMTEzMywyMyBAQCBlcnJvcmRpY3QgYmVnaW4KKyAgfSBiaW5kIGRlZgorIGVuZAkJJSBlcnJvcmRpY3QKKyAKKy0lIFB1dCBhbGwgdGhlIGRlZmF1bHQgaGFuZGxlcnMgaW4gZ3NlcnJvcmRpY3QKKy1nc2Vycm9yZGljdAorLWVycm9yZGljdCB7MiBpbmRleCAzIDEgcm9sbCBwdXR9IGZvcmFsbAorLW5vYWNjZXNzIHBvcAorLSUgcmVtb3ZlIHRoZSBub24tc3RhbmRhcmQgZXJyb3JzIGZyb20gZXJyb3JkaWN0CisrZ3NlcnJvcmRpY3QgL3Vua25vd25lcnJvciBlcnJvcmRpY3QgL3Vua25vd25lcnJvciBnZXQgcHV0CisgZXJyb3JkaWN0IC91bmtub3duZXJyb3IgLnVuZGVmCisrCisrLy5TQUZFUkVSUk9STElTVCBFcnJvck5hbWVzIGRlZgorKy8uc2V0c2FmZXJlcnJvcnMKKyt7CisrJSBQdXQgYWxsIHRoZSByZXF1ZXN0ZWQgaGFuZGxlcnMgaW4gZ3NlcnJvcmRpY3QKKysgIGdzZXJyb3JkaWN0CisrICAvLy5TQUZFUkVSUk9STElTVAorKyAge2R1cCBlcnJvcmRpY3QgZXhjaCBnZXQgMiBpbmRleCAzIDEgcm9sbCBwdXR9IGZvcmFsbAorKyAgbm9hY2Nlc3MgcG9wCisrICBzeXN0ZW1kaWN0IC8uc2V0c2FmZWVycm9ycyAuZm9yY2V1bmRlZgorKyAgc3lzdGVtZGljdCAvLlNBRkVSRVJST1JMSVNUIC5mb3JjZXVuZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKysKKytTQUZFUkVSUk9SUyB7LnNldHNhZmVyZXJyb3JzfSBpZgorKworICUgRGVmaW5lIGEgc3RhYmxlIHByaXZhdGUgY29weSBvZiBoYW5kbGVlcnJvciB0aGF0IHdlIHdpbGwgYWx3YXlzIHVzZSB1bmRlcgorICUgSk9CU0VSVkVSIG1vZGUuCisgLy5HU2hhbmRsZWVycm9yIGVycm9yZGljdCAvaGFuZGxlZXJyb3IgZ2V0IGRlZgorQEAgLTE3NjAsMTggKzE3ODEsMTUgQEAgY3VycmVudGRpY3QgLy5ydW5saWJmaWxlIC51bmRlZgorIAorICUgQmluZCBhbGwgdGhlIG9wZXJhdG9ycyBkZWZpbmVkIGFzIHByb2NlZHVyZXMuCisgLy5iaW5kb3BlcmF0b3JzCQklIGJpbmRzIG9wZXJhdG9ycyBpbiBjdXJyZW50ZGljdAorLSB7ICUgVGVtcG9yYXJpbHkgZGlzYWJsZSB0aGUgdHlwZWNoZWNrIGVycm9yLgorLSAgIGVycm9yZGljdCAvdHlwZWNoZWNrIDIgY29weSBnZXQKKy0gICBlcnJvcmRpY3QgL3R5cGVjaGVjayB7IHBvcCB9IHB1dAklIHBvcCB0aGUgY29tbWFuZAorKyB7CisgICAgY3VycmVudGRpY3QKKyAgICAgeyBkdXAgdHlwZSAvb3BlcmF0b3J0eXBlIGVxCistICAgICAgIHsgJSBUaGlzIG1pZ2h0IGJlIGEgcmVhbCBvcGVyYXRvciwgc28gYmluZCBtaWdodCBjYXVzZSBhIHR5cGVjaGVjaywKKy0gICAgICAgICAlIGJ1dCB3ZSd2ZSBtYWRlIHRoZSBlcnJvciBhIG5vLW9wIHRlbXBvcmFyaWx5LgorLSAgICAgICAgIC5iaW5kCisrICAgICAgIHsKKysgICAgICAgICAlIFRoaXMgbWlnaHQgYmUgYSByZWFsIG9wZXJhdG9yLCBzbyBiaW5kIG1pZ2h0IGNhdXNlIGEgdHlwZWNoZWNrCisrICAgICAgICAgey5iaW5kfSAuaW50ZXJuYWxzdG9wcGVkIHBvcAorICAgICAgICB9CisgICAgICAgaWYgcG9wIHBvcAorICAgICB9IGZvcmFsbAorLSAgIHB1dAorICB9IGRlZgorIERFTEFZQklORCBub3QgeyAuYmluZG9wZXJhdG9ycyB9IGlmCisgCitkaWZmIC0tZ2l0IGEvcHNpL2ludGVycC5jIGIvcHNpL2ludGVycC5jCitpbmRleCAzZGQ1ZjdhLi5jZDg5NGY5IDEwMDY0NAorLS0tIGEvcHNpL2ludGVycC5jCisrKysgYi9wc2kvaW50ZXJwLmMKK0BAIC02NjIsMjcgKzY2MiwxOCBAQCBhZ2FpbjoKKyAgICAgaWYgKGdzX2Vycm9ybmFtZShpX2N0eF9wLCBjb2RlLCAmZXJyb3JfbmFtZSkgPCAwKQorICAgICAgICAgcmV0dXJuIGNvZGU7ICAgICAgICAgICAgLyogb3V0LW9mLXJhbmdlIGVycm9yIGNvZGUhICovCisgCistICAgIC8qICBJZiBMb2NrRmlsZVBlcm1pc3Npb25zIGlzIHRydWUsIHdlIG9ubHkgcmVmZXIgdG8gZ3NlcnJvcmRpY3QsIHdoaWNoCistICAgICAqICBpcyBub3QgYWNjZXNzaWJsZSB0byBQb3N0Y3JpcHQgam9icworKyAgICAvKiAgV2UgcmVmZXIgdG8gZ3NlcnJvcmRpY3QgZmlyc3QsIHdoaWNoIGlzIG5vdCBhY2Nlc3NpYmxlIHRvIFBvc3RjcmlwdCBqb2JzCisrICAgICAqICBJZiB3ZSdyZSBydW5uaW5nIHdpdGggU0FGRVJFUlJPUlMgYWxsIHRoZSBoYW5kbGVycyBhcmUgY29waWVkIHRvIGdzZXJyb3JkaWN0CisrICAgICAqICBzbyB3ZSdsbCBhbHdheXMgZmluZCB0aGUgZGVmYXVsdCBvbmUuIElmIG5vdCBTQUZFUkVSUk9SUywgb25seSBncyBzcGVjaWZpYworKyAgICAgKiAgZXJyb3JzIGFyZSBpbiBnc2Vycm9yZGljdC4KKyAgICAgICovCistICAgIGlmIChpX2N0eF9wLT5Mb2NrRmlsZVBlcm1pc3Npb25zKSB7CistICAgICAgICBpZiAoKChkaWN0X2ZpbmRfc3RyaW5nKHN5c3RlbWRpY3QsICJnc2Vycm9yZGljdCIsICZwZXJyb3JkaWN0KSA8PSAwIHx8CistICAgICAgICAgICAgICBkaWN0X2ZpbmQocGVycm9yZGljdCwgJmVycm9yX25hbWUsICZlcHJlZikgPD0gMCkpCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHJldHVybiBjb2RlOyAgICAgICAgICAgIC8qIGVycm9yIG5hbWUgbm90IGluIGVycm9yZGljdD8/PyAqLworLSAgICB9CistICAgIGVsc2UgeworLSAgICAgICAgLyoKKy0gICAgICAgICAqIEZvciBncmVhdGVyIEFkb2JlIGNvbXBhdGliaWxpdHksIG9ubHkgdGhlIHN0YW5kYXJkIFBvc3RTY3JpcHQgZXJyb3JzCistICAgICAgICAgKiBhcmUgZGVmaW5lZCBpbiBlcnJvcmRpY3Q7IHRoZSByZXN0IGFyZSBpbiBnc2Vycm9yZGljdC4KKy0gICAgICAgICAqLworLSAgICAgICAgaWYgKGRpY3RfZmluZF9zdHJpbmcoc3lzdGVtZGljdCwgImVycm9yZGljdCIsICZwZXJyb3JkaWN0KSA8PSAwIHx8CistICAgICAgICAgICAgKGRpY3RfZmluZChwZXJyb3JkaWN0LCAmZXJyb3JfbmFtZSwgJmVwcmVmKSA8PSAwICYmCistICAgICAgICAgICAgIChkaWN0X2ZpbmRfc3RyaW5nKHN5c3RlbWRpY3QsICJnc2Vycm9yZGljdCIsICZwZXJyb3JkaWN0KSA8PSAwIHx8CistICAgICAgICAgICAgICBkaWN0X2ZpbmQocGVycm9yZGljdCwgJmVycm9yX25hbWUsICZlcHJlZikgPD0gMCkpCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHJldHVybiBjb2RlOyAgICAgICAgICAgIC8qIGVycm9yIG5hbWUgbm90IGluIGVycm9yZGljdD8/PyAqLworLSAgICB9CisrICAgIGlmIChkaWN0X2ZpbmRfc3RyaW5nKHN5c3RlbWRpY3QsICJnc2Vycm9yZGljdCIsICZwZXJyb3JkaWN0KSA8PSAwIHx8CisrICAgICAgICAoZGljdF9maW5kKHBlcnJvcmRpY3QsICZlcnJvcl9uYW1lLCAmZXByZWYpIDw9IDAgJiYKKysgICAgICAgICAoZGljdF9maW5kX3N0cmluZyhzeXN0ZW1kaWN0LCAiZXJyb3JkaWN0IiwgJnBlcnJvcmRpY3QpIDw9IDAgfHwKKysgICAgICAgICAgZGljdF9maW5kKHBlcnJvcmRpY3QsICZlcnJvcl9uYW1lLCAmZXByZWYpIDw9IDApKQorKyAgICAgICAgKQorKyAgICAgICAgcmV0dXJuIGNvZGU7ICAgICAgICAgICAgLyogZXJyb3IgbmFtZSBub3QgaW4gZXJyb3JkaWN0Pz8/ICovCisrCisgICAgIGRvcmVmID0gKmVwcmVmOworICAgICBlcHJlZiA9ICZkb3JlZjsKKyAgICAgLyogUHVzaCB0aGUgZXJyb3Igb2JqZWN0IG9uIHRoZSBvcGVyYW5kIHN0YWNrIGlmIGFwcHJvcHJpYXRlLiAqLworQEAgLTY5NSw2ICs2ODYsMjQgQEAgYWdhaW46CisgICAgICAgICB9CisgICAgICAgICAqb3NwID0gKnBlcnJvcl9vYmplY3Q7CisgICAgICAgICBlcnJvcmV4ZWNfZmluZChpX2N0eF9wLCBvc3ApOworKyAgICAgICAgLyogSWYgdXNpbmcgU0FGRVIsIGhhbmQgYSBuYW1lIG9iamVjdCB0byB0aGUgZXJyb3IgaGFuZGxlciwgcmF0aGVyIHRoYW4gdGhlIGV4ZWN1dGFibGUKKysgICAgICAgICAqIG9iamVjdC9vcGVyYXRvciBpdHNlbGYuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmIChpX2N0eF9wLT5Mb2NrRmlsZVBlcm1pc3Npb25zKSB7CisrICAgICAgICAgICAgY29kZSA9IG9ial9jdnMoaW1lbW9yeSwgb3NwLCBidWYgKyAyLCAyNTYsICZybGVuLCAoY29uc3QgYnl0ZSAqKikmYnVmcHRyKTsKKysgICAgICAgICAgICBpZiAoY29kZSA8IDApIHsKKysgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdW5rbm93bnN0ciA9ICItLXVua25vd24tLSI7CisrICAgICAgICAgICAgICAgIHJsZW4gPSBzdHJsZW4odW5rbm93bnN0cik7CisrICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHVua25vd25zdHIsIHJsZW4pOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICAgICAgYnVmWzBdID0gYnVmWzFdID0gYnVmW3JsZW4gKyAyXSA9IGJ1ZltybGVuICsgM10gPSAnLSc7CisrICAgICAgICAgICAgICAgIHJsZW4gKz0gNDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgY29kZSA9IG5hbWVfcmVmKGltZW1vcnksIGJ1Ziwgcmxlbiwgb3NwLCAxKTsKKysgICAgICAgICAgICBpZiAoY29kZSA8IDApCisrICAgICAgICAgICAgICAgIG1ha2VfbnVsbChvc3ApOworKyAgICAgICAgfQorICAgICB9CisgICAgIGdvdG8gYWdhaW47CisgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA0LUZvci1oaWRkZW4tb3BlcmF0b3JzLXBhc3MtYS1uYW1lLW9iamVjdC10by1lcnJvci1oYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA0LUZvci1oaWRkZW4tb3BlcmF0b3JzLXBhc3MtYS1uYW1lLW9iamVjdC10by1lcnJvci1oYW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3MTVhZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDQtRm9yLWhpZGRlbi1vcGVyYXRvcnMtcGFzcy1hLW5hbWUtb2JqZWN0LXRvLWVycm9yLWhhbi5wYXRjaApAQCAtMCwwICsxLDEwNSBAQAorRnJvbSAzNGE4YzVhYTk4N2Q0ZGI1MjM0MTcyYTYyMjE4YjE2ODM3MTYwNmIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFR1ZSwgMiBPY3QgMjAxOCAxNjowMjo1OCArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNV0gRm9yIGhpZGRlbiBvcGVyYXRvcnMsIHBhc3MgYSBuYW1lIG9iamVjdCB0byBlcnJvcgorIGhhbmRsZXIuCisKK0luIG5vcm1hbCBvcGVyYXRpb24sIFBvc3RzY3JpcHQgZXJyb3IgaGFuZGxlcnMgYXJlIHBhc3NlZCB0aGUgb2JqZWN0IHdoaWNoCit0cmlnZ2VyZWQgdGhlIGVycm9yOiB0aGlzIGlzIGludmFyaWFibHkgYW4gb3BlcmF0b3Igb2JqZWN0LgorCitUaGUgaXNzdWUgYXJpc2VzIHdoZW4gYW4gZXJyb3IgaXMgdHJpZ2dlcmVkIGJ5IGFuIG9wZXJhdG9yIHdoaWNoIGlzIGZvciBpbnRlcm5hbAordXNlIG9ubHksIGFuZCB0aGF0IG9wZXJhdG9yIGlzIHRoZW4gcGFzc2VkIHRvIHRoZSBlcnJvciBoYW5kbGVyLCBtZWFuaW5nIGl0CitiZWNvbWVzIHZpc2libGUgdG8gdGhlIGVycm9yIGhhbmRsZXIgY29kZS4KKworQnkgY29udmVydGluZyB0byBhIG5hbWUgb2JqZWN0LCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBzdGlsbCB2YWxpZCwgYnV0IHdlIG5vCitsb25nZXIgZXhwb3NlIGludGVybmFsIHVzZSBvbmx5IG9wZXJhdG9ycy4KKworVGhlIGNoYW5nZSBpbiBnc19kcHMxLnBzIGlzIHJlbGF0ZWQgdG8gdGhlIGFib3ZlOiBwcmV2aW91c2x5IGFuIGVycm9yIGluCitzY2hlY2sgd291bGQgdGhyb3cgYW4gZXJyb3IgYWdhaW5zdCAuZ2NoZWNrLCBidXQgYXMgLmdjaGVjayBpcyBub3cgYSBoaWRkZW4KK29wZXJhdG9yLCBpdCByZXN1bHRlZCBpbiBhIG5hbWUgb2JqZWN0IGJlaW5nIHBhc3NlZCB0byB0aGUgZXJyb3IgaGFuZGxlci4gQXMKK3NjaGVjayBpcyBhICdyZWFsJyBvcGVyYXRvciwgaXQncyBiZXR0ZXIgdG8gdXNlIHRoZSByZWFsIG9wZXJhdG9yLCByYXRoZXIgdGhhbgordGhlIG5hbWUgb2YgYW4gaW50ZXJuYWwsIGhpZGRlbiBvbmUuCisKK0NWRTogQ1ZFLTIwMTgtMTc5NjEKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgUmVzb3VyY2UvSW5pdC9nc19kcHMxLnBzIHwgIDIgKy0KKyBwc2kvaW50ZXJwLmMgICAgICAgICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19kcHMxLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19kcHMxLnBzCitpbmRleCAxMTgyZjUzLi5lYzVkYjYxIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19kcHMxLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2RwczEucHMKK0BAIC0yMSw3ICsyMSw3IEBAIGxldmVsMmRpY3QgYmVnaW4KKyAlIC0tLS0tLSBWaXJ0dWFsIG1lbW9yeSAtLS0tLS0gJQorIAorIC9jdXJyZW50c2hhcmVkIC8uY3VycmVudGdsb2JhbCBsb2FkIGRlZgorLS9zY2hlY2sgLy5nY2hlY2sgbG9hZCBkZWYKKysvc2NoZWNrIHsuZ2NoZWNrfSBiaW5kIG9kZWYKKyAlKioqKioqIEZPTExPV0lORyBJUyBXUk9ORyAqKioqKioKKyAvc2hhcmVkZGljdCBjdXJyZW50ZGljdCAvZ2xvYmFsZGljdCAua25vd25nZXQgbm90IHsgMjAgZGljdCB9IGlmIGRlZgorIAorZGlmZiAtLWdpdCBhL3BzaS9pbnRlcnAuYyBiL3BzaS9pbnRlcnAuYworaW5kZXggY2Q4OTRmOS4uYjcwNzY5ZCAxMDA2NDQKKy0tLSBhL3BzaS9pbnRlcnAuYworKysrIGIvcHNpL2ludGVycC5jCitAQCAtNjc4LDYgKzY3OCw4IEBAIGFnYWluOgorICAgICBlcHJlZiA9ICZkb3JlZjsKKyAgICAgLyogUHVzaCB0aGUgZXJyb3Igb2JqZWN0IG9uIHRoZSBvcGVyYW5kIHN0YWNrIGlmIGFwcHJvcHJpYXRlLiAqLworICAgICBpZiAoIUdTX0VSUk9SX0lTX0lOVEVSUlVQVChjb2RlKSkgeworKyAgICAgICAgYnl0ZSBidWZbMjYwXSwgKmJ1ZnB0cjsKKysgICAgICAgIHVpbnQgcmxlbjsKKyAgICAgICAgIC8qIFJlcGxhY2UgdGhlIGVycm9yIG9iamVjdCBpZiB3aXRoaW4gYW4gb3BhcnJheSBvciAuZXJyb3JleGVjLiAqLworICAgICAgICAgb3NwKys7CisgICAgICAgICBpZiAob3NwID49IG9zdG9wKSB7CitAQCAtNjg2LDIzICs2ODgsMzYgQEAgYWdhaW46CisgICAgICAgICB9CisgICAgICAgICAqb3NwID0gKnBlcnJvcl9vYmplY3Q7CisgICAgICAgICBlcnJvcmV4ZWNfZmluZChpX2N0eF9wLCBvc3ApOworLSAgICAgICAgLyogSWYgdXNpbmcgU0FGRVIsIGhhbmQgYSBuYW1lIG9iamVjdCB0byB0aGUgZXJyb3IgaGFuZGxlciwgcmF0aGVyIHRoYW4gdGhlIGV4ZWN1dGFibGUKKy0gICAgICAgICAqIG9iamVjdC9vcGVyYXRvciBpdHNlbGYuCistICAgICAgICAgKi8KKy0gICAgICAgIGlmIChpX2N0eF9wLT5Mb2NrRmlsZVBlcm1pc3Npb25zKSB7CisrCisrICAgICAgICBpZiAoIXJfaGFzX3R5cGUob3NwLCB0X3N0cmluZykgJiYgIXJfaGFzX3R5cGUob3NwLCB0X25hbWUpKSB7CisgICAgICAgICAgICAgY29kZSA9IG9ial9jdnMoaW1lbW9yeSwgb3NwLCBidWYgKyAyLCAyNTYsICZybGVuLCAoY29uc3QgYnl0ZSAqKikmYnVmcHRyKTsKKyAgICAgICAgICAgICBpZiAoY29kZSA8IDApIHsKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdW5rbm93bnN0ciA9ICItLXVua25vd24tLSI7CisgICAgICAgICAgICAgICAgIHJsZW4gPSBzdHJsZW4odW5rbm93bnN0cik7CisgICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHVua25vd25zdHIsIHJsZW4pOworKyAgICAgICAgICAgICAgICBidWZwdHIgPSBidWY7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UgeworLSAgICAgICAgICAgICAgICBidWZbMF0gPSBidWZbMV0gPSBidWZbcmxlbiArIDJdID0gYnVmW3JsZW4gKyAzXSA9ICctJzsKKy0gICAgICAgICAgICAgICAgcmxlbiArPSA0OworKyAgICAgICAgICAgICAgICByZWYgKnRvYmo7CisrICAgICAgICAgICAgICAgIGJ1ZnB0cltybGVuXSA9ICdcMCc7CisrICAgICAgICAgICAgICAgIC8qIE9ubHkgcGFzcyBhIG5hbWUgb2JqZWN0IGlmIHRoZSBvcGVyYXRvciBkb2Vzbid0IGV4aXN0IGluIHN5c3RlbWRpY3QKKysgICAgICAgICAgICAgICAgICogaS5lLiBpdCdzIGFuIGludGVybmFsIG9wZXJhdG9yIHdlIGhhdmUgaGlkZGVuCisrICAgICAgICAgICAgICAgICAqLworKyAgICAgICAgICAgICAgICBjb2RlID0gZGljdF9maW5kX3N0cmluZyhzeXN0ZW1kaWN0LCAoY29uc3QgY2hhciAqKWJ1ZnB0ciwgJnRvYmopOworKyAgICAgICAgICAgICAgICBpZiAoY29kZSA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgIGJ1ZlswXSA9IGJ1ZlsxXSA9IGJ1ZltybGVuICsgMl0gPSBidWZbcmxlbiArIDNdID0gJy0nOworKyAgICAgICAgICAgICAgICAgICAgcmxlbiArPSA0OworKyAgICAgICAgICAgICAgICAgICAgYnVmcHRyID0gYnVmOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgYnVmcHRyID0gTlVMTDsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoYnVmcHRyKSB7CisrICAgICAgICAgICAgICAgIGNvZGUgPSBuYW1lX3JlZihpbWVtb3J5LCBidWYsIHJsZW4sIG9zcCwgMSk7CisrICAgICAgICAgICAgICAgIGlmIChjb2RlIDwgMCkKKysgICAgICAgICAgICAgICAgICAgIG1ha2VfbnVsbChvc3ApOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBjb2RlID0gbmFtZV9yZWYoaW1lbW9yeSwgYnVmLCBybGVuLCBvc3AsIDEpOworLSAgICAgICAgICAgIGlmIChjb2RlIDwgMCkKKy0gICAgICAgICAgICAgICAgbWFrZV9udWxsKG9zcCk7CisgICAgICAgICB9CisgICAgIH0KKyAgICAgZ290byBhZ2FpbjsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNS1CdWctNjk5OTM4LS5sb2FkZm9udGxvb3AtbXVzdC1iZS1hbi1vcGVyYXRvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDUtQnVnLTY5OTkzOC0ubG9hZGZvbnRsb29wLW11c3QtYmUtYW4tb3BlcmF0b3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkyNGIzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDUtQnVnLTY5OTkzOC0ubG9hZGZvbnRsb29wLW11c3QtYmUtYW4tb3BlcmF0b3IucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBmMGE2MTY3OWQyOGJjMTU2MTY0MDQwM2Q5MjQ5MmUxOTliYzFjMGYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFdlZCwgMTAgT2N0IDIwMTggMjM6MjU6NTEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIEJ1ZyA2OTk5Mzg6IC5sb2FkZm9udGxvb3AgbXVzdCBiZSBhbiBvcGVyYXRvcgorCitJbiB0aGUgZml4IGZvciBCdWcgNjk5ODE2LCBJIG9taXR0ZWQgdG8gbWFrZSAubG9hZGZvbnRsb29wIGludG8gYW4gb3BlcmF0b3IsIHRvCitiZXR0ZXIgaGlkZSAuZm9yY2V1bmRlZiBhbmQgLnB1dGdzdHJpbmdjb3B5LgorCitDVkU6IENWRS0yMDE4LTE3OTYxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfZm9udHMucHMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcworaW5kZXggODljM2FiNy4uNzJmZWZmMiAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK0BAIC0xMTQ4LDcgKzExNDgsNyBAQCAkZXJyb3IgL1N1YnN0aXR1dGVGb250IHsgfSBwdXQKKyAKKyAgICAgfSBsb29wICAgICAgICAgICAgICAlIGVuZCBvZiBsb29wCisgCistIH0gYmluZCBleGVjdXRlb25seSBkZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5wdXRnc3RyaW5nY29weQorKyB9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLnB1dGdzdHJpbmdjb3B5CisgCisgY3VycmVudGRpY3QgLy5wdXRnc3RyaW5nY29weSAudW5kZWYKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNi1VbmRlZmluZS1zb21lLWFkZGl0aW9uYWwtaW50ZXJuYWwtb3BlcmF0b3JzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNi1VbmRlZmluZS1zb21lLWFkZGl0aW9uYWwtaW50ZXJuYWwtb3BlcmF0b3JzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5Y2Y3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA2LVVuZGVmaW5lLXNvbWUtYWRkaXRpb25hbC1pbnRlcm5hbC1vcGVyYXRvcnMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAzN2Q3YzkxMTdiNzBlNzVlYmVkMjFjNmM4MTkyMjUxZjEyN2MwZmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmFuY3kgRHVyZ2luIDxuYW5jeS5kdXJnaW5AYXJ0aWZleC5jb20+CitEYXRlOiBNb24sIDUgTm92IDIwMTggMTU6MzY6MjcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFVuZGVmaW5lIHNvbWUgYWRkaXRpb25hbCBpbnRlcm5hbCBvcGVyYXRvcnMuCisKKy50eXBlLCAud3JpdGVjdnMsIC5zZXRTTWFzaywgLmN1cnJlbnRTTWFzaworCitUaGVzZSBkb24ndCBzZWVtIHRvIGJlIHJlZmVyZW5jZWQgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSwKK3doaWNoIGJpbmRzIHRoZWlyIHVzYWdlcy4gIFBhc3NlcyBjbHVzdGVyIGlmIHRoZXkgYXJlIHJlbW92ZWQuCisKK0NWRTogQ1ZFLTIwMTgtMTgwNzMKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworaW5kZXggZjk1MmYzMi4uN2M3MWQxOCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzCitAQCAtMjIzMCw2ICsyMjMwLDcgQEAgU0FGRVIgeyAuc2V0c2FmZWdsb2JhbCB9IGlmCisgICAvLmxvY2Fsdm1hcnJheSAvLmxvY2Fsdm1kaWN0IC8ubG9jYWx2bXBhY2tlZGFycmF5IC8ubG9jYWx2bXN0cmluZyAvLnN5c3RlbXZtYXJyYXkgLy5zeXN0ZW12bWRpY3QgLy5zeXN0ZW12bXBhY2tlZGFycmF5IC8uc3lzdGVtdm1zdHJpbmcgLy5zeXN0ZW12bWZpbGUgLy5zeXN0ZW12bWxpYmZpbGUKKyAgIC8uc3lzdGVtdm1TRkQgLy5zZXR0cmFwcGFyYW1zIC8uY3VycmVudHN5c3RlbXBhcmFtcyAvLmN1cnJlbnR1c2VycGFyYW1zIC8uZ2V0c3lzdGVtcGFyYW0gLy5nZXR1c2VycGFyYW0gLy5zZXRzeXN0ZW1wYXJhbXMgLy5zZXR1c2VycGFyYW1zCisgICAvLmNoZWNrcGFzc3dvcmQgLy5sb2NhbGVfdG9fdXRmOCAvLmN1cnJlbnRnbG9iYWwgLy5nY2hlY2sgLy5pbWFnZXBhdGgKKysgIC8udHlwZSAvLndyaXRlY3ZzIC8uc2V0U01hc2sgLy5jdXJyZW50U01hc2sKKyAKKyAgICUgVXNlZCBieSBhIGZyZWUgdXNlciBpbiB0aGUgTGlicmFyeSBvZiBDb25ncmVzcy4gQXBwYXJlbnRseSB0aGlzIGlzIHVzZWQgdG8KKyAgICUgZHJhdyBhIHBhcnRpYWwgcGFnZSwgd2hpY2ggaXMgdGhlbiBmaWxsZWQgaW4gYnkgdGhlIHJlc3VsdHMgb2YgYSBiYXJjb2RlCitAQCAtMjI0OCw3ICsyMjQ5LDcgQEAgU0FGRVIgeyAuc2V0c2FmZWdsb2JhbCB9IGlmCisgICAlIHRlc3QgZmlsZXMvdXRpbGl0aWVzLCBvciBlbmdpbmVlcnMgZXhwcmVzc2VkIGEgZGVzaXJlIHRvIGtlZXAgdGhlbSB2aXNpYmxlLgorICAgJQorICAgJS9jdXJyZW50ZGV2aWNlIC8uc29ydCAvLmJ1aWxkZm9udDAgLy5idWlsZGZvbnQxIC8uYnVpbGRmb250MiAvLmJ1aWxkZm9udDMgLy5idWlsZGZvbnQ0IC8uYnVpbGRmb250OSAvLmJ1aWxkZm9udDEwIC8uYnVpbGRmb250MTEKKy0gICUvLmJ1aWxkZm90bjMyIC8uYnVpbGRmb250NDIgLy50eXBlOW1hcGNpZCAvLnR5cGUxMW1hcGNpZCAvLnN3YXBjb2xvcnMKKysgICUvLmJ1aWxkZm9udDMyIC8uYnVpbGRmb250NDIgLy50eXBlOW1hcGNpZCAvLnR5cGUxMW1hcGNpZCAvLnN3YXBjb2xvcnMKKyAgICUvY3VycmVudGRldmljZSAgLy5xdWl0IC8uc2V0dXNlY2llY29sb3IgLy5uZWVkaW5wdXQgLy5zZXRvdmVycHJpbnRtb2RlIC8uc3BlY2lhbF9vcCAvLmRpY3R0b21hcmsgLy5rbm93bmdldAorICAgJS8uRkFQSWF2YWlsYWJsZSAvLkZBUElwYXNzZm9udCAvLkZBUElyZWJ1aWxkZm9udCAvLkZBUElCdWlsZEdseXBoIC8uRkFQSUJ1aWxkQ2hhciAvLkZBUElCdWlsZEdseXBoOQorICAgJS8udGVtcGZpbGUgLy5udW1pY2NfY29tcG9uZW50cyAvLnNldF9vdXRwdXRpbnRlbnQgIC8ubWF4IC8ubWluIC8udm1yZWNsYWltIC8uZ2V0cGF0aCAvLnNldGdsb2JhbAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA3LUJ1Zy02OTk5MjctZG9uLXQtaW5jbHVkZS1vcGVyYXRvci1hcnJheXMtaW4tZXhlY3N0YWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA3LUJ1Zy02OTk5MjctZG9uLXQtaW5jbHVkZS1vcGVyYXRvci1hcnJheXMtaW4tZXhlY3N0YWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ2NmZjMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDctQnVnLTY5OTkyNy1kb24tdC1pbmNsdWRlLW9wZXJhdG9yLWFycmF5cy1pbi1leGVjc3RhYy5wYXRjaApAQCAtMCwwICsxLDE5NyBAQAorRnJvbSA0MzBmMzkxNDQyNDRiYTRmZDdiNzIwY2Y4NzAzMWU0MTVlMGZhYmNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IE1vbiwgNSBOb3YgMjAxOCAxNTo0Mjo1MiArMDgwMAorU3ViamVjdDogW1BBVENIIDIvMl0gQnVnIDY5OTkyNzogZG9uJ3QgaW5jbHVkZSBvcGVyYXRvciBhcnJheXMgaW4gZXhlY3N0YWNrCisgb3V0cHV0CisKK1doZW4gd2UgdHJhbnNmZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBleGVjdXRpb24gc3RhY2sgaW50byB0aGUgYXJyYXksIHRha2UgdGhlCitleHRyYSBzdGVwIG9mIHJlcGxhY2luZyBhbnkgb3BlcmF0b3IgYXJyYXlzIG9uIHRoZSBzdGFjayB3aXRoIHRoZSBvcGVyYXRvcgordGhhdCByZWZlcmVuY2UgdGhlbS4KKworVGhpcyBwcmV2ZW50cyB0aGUgY29udGVudHMgb2YgUG9zdHNjcmlwdCBkZWZpbmVkLCBpbnRlcm5hbCBvbmx5IG9wZXJhdG9ycyAodGhvc2UKK2NyZWF0ZWQgd2l0aCAubWFrZW9wZXJhdG9yKSBiZWluZyBleHBvc2VkIHZpYSBleGVjc3RhY2sgKGFuZCB0aHVzLCB2aWEgZXJyb3IKK2hhbmRsaW5nKS4KKworVGhpcyBuZWNlc3NpdGF0ZXMgYSBjaGFuZ2UgaW4gdGhlIHJlc291cmNlIHJlbWFwcGluZyAncmVzb3VyY2UnLCB3aGljaCBjb250YWlucworYSBwcm9jZWR1cmUgd2hpY2ggcmVsaWVzIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgb3BlcmF0b3JzIGFycmF5cyBiZWluZyBwcmVzZW50LgorQXMgd2UgYWxyZWFkeSBoYWQgaW50ZXJuYWwtb25seSB2YXJpYW50cyBvZiBjb3VudGV4ZWNzdGFjayBhbmQgZXhlY3N0YWNrCisoLmNvdW50ZXhlY3N0YWNrIGFuZCAuZXhlY3N0YWNrKSAtIHVzaW5nIHRob3NlLCBhbmQgbGVhdmluZyB0aGllciBvcGVyYXRpb24KK2luY2x1ZGluZyB0aGUgb3BlcmF0b3IgYXJyYXlzIG1lYW5zIHRoZSBwcm9jZWR1cmUgY29udGludWVzIHRvIHdvcmsgY29ycmVjdGx5LgorCitCb3RoIC5jb3VudGV4ZWNzdGFjayBhbmQgLmV4ZWNzdGFjayBhcmUgdW5kZWZpbmVkIGFmdGVyIGluaXRpYWxpemF0aW9uLgorCitBbHNvLCB3aGVuIHdlIHN0b3JlIHRoZSBleGVjc3RhY2sgKG9yIHBhcnQgdGhlcmVvZikgZm9yIGFuIGV4ZWNzdGFja292ZXJmbG93CitlcnJvciwgbWFrZSB0aGUgc2FtZSBvcGFycmF5L29wZXJhdG9yIHN1YnN0aXR1dGlvbiBhcyBhYm92ZSBmb3IgZXhlY3N0YWNrLgorCitDVkU6IENWRS0yMDE4LTE4MDczCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfaW5pdC5wcyAgfCAgNCArKy0tCisgUmVzb3VyY2UvSW5pdC9nc19yZXNtcC5wcyB8ICAyICstCisgcHNpL2ludC5tYWsgICAgICAgICAgICAgICB8ICAyICstCisgcHNpL2ludGVycC5jICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrLS0tCisgcHNpL2ludGVycC5oICAgICAgICAgICAgICB8ICAyICsrCisgcHNpL3pjb250cm9sLmMgICAgICAgICAgICB8IDEzICsrKysrKysrKystLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzIGIvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzCitpbmRleCA3YzcxZDE4Li5mNGMxMDUzIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKK0BAIC0yMTkxLDcgKzIxOTEsNyBAQCBTQUZFUiB7IC5zZXRzYWZlZ2xvYmFsIH0gaWYKKyAgICUlIGJ1dCBjYW4gYmUgZWFzaWx5IHJlc3RvcmVkIChqdXN0IGRlbGV0ZSB0aGUgbmFtZSBmcm9tIHRoZSBsaXN0IGluIHRoZSBhcnJheSkuIEluIGZ1dHVyZQorICAgJSUgd2UgbWF5IHJlbW92ZSB0aGUgb3BlcmF0b3IgYW5kIHRoZSBjb2RlIGltcGxlbWVudGF0aW9uIGVudGlyZWx5LgorICAgWworLSAgLy5iaXRhZGQgLy5jaGFyYm94cGF0aCAvLmNvbmQgLy5jb3VudGV4ZWNzdGFjayAvLmV4ZWNzdGFjayAvLnJ1bmFuZGhpZGUgLy5wb3BkZXZpY2VmaWx0ZXIKKysgIC8uYml0YWRkIC8uY2hhcmJveHBhdGggLy5jb25kIC8ucnVuYW5kaGlkZSAvLnBvcGRldmljZWZpbHRlcgorICAgLy5leGVjZmlsZSAvLmZpbGVuYW1lc3BsaXQgLy5maWxlX25hbWVfcGFyZW50CisgICAvLnNldGRlZmF1bHRtYXRyaXggLy5pc3Byb2NmaWx0ZXIgLy51bnJlYWQgLy5wc3N0cmluZ2VuY29kZQorICAgLy5idWlsZHNhbXBsZWRmdW5jdGlvbiAvLmlzZW5jYXBmdW5jdGlvbiAvLmN1cnJlbnRhY2N1cmF0ZWN1cnZlcyAvLmN1cnJlbnRjdXJ2ZWpvaW4gLy5jdXJyZW50ZGFzaGFkYXB0IC8uY3VycmVudGRvdGxlbmd0aAorQEAgLTIyMzAsNyArMjIzMCw3IEBAIFNBRkVSIHsgLnNldHNhZmVnbG9iYWwgfSBpZgorICAgLy5sb2NhbHZtYXJyYXkgLy5sb2NhbHZtZGljdCAvLmxvY2Fsdm1wYWNrZWRhcnJheSAvLmxvY2Fsdm1zdHJpbmcgLy5zeXN0ZW12bWFycmF5IC8uc3lzdGVtdm1kaWN0IC8uc3lzdGVtdm1wYWNrZWRhcnJheSAvLnN5c3RlbXZtc3RyaW5nIC8uc3lzdGVtdm1maWxlIC8uc3lzdGVtdm1saWJmaWxlCisgICAvLnN5c3RlbXZtU0ZEIC8uc2V0dHJhcHBhcmFtcyAvLmN1cnJlbnRzeXN0ZW1wYXJhbXMgLy5jdXJyZW50dXNlcnBhcmFtcyAvLmdldHN5c3RlbXBhcmFtIC8uZ2V0dXNlcnBhcmFtIC8uc2V0c3lzdGVtcGFyYW1zIC8uc2V0dXNlcnBhcmFtcworICAgLy5jaGVja3Bhc3N3b3JkIC8ubG9jYWxlX3RvX3V0ZjggLy5jdXJyZW50Z2xvYmFsIC8uZ2NoZWNrIC8uaW1hZ2VwYXRoCistICAvLnR5cGUgLy53cml0ZWN2cyAvLnNldFNNYXNrIC8uY3VycmVudFNNYXNrCisrICAvLnR5cGUgLy53cml0ZWN2cyAvLnNldFNNYXNrIC8uY3VycmVudFNNYXNrIC8uY291bnRleGVjc3RhY2sgLy5leGVjc3RhY2sKKyAKKyAgICUgVXNlZCBieSBhIGZyZWUgdXNlciBpbiB0aGUgTGlicmFyeSBvZiBDb25ncmVzcy4gQXBwYXJlbnRseSB0aGlzIGlzIHVzZWQgdG8KKyAgICUgZHJhdyBhIHBhcnRpYWwgcGFnZSwgd2hpY2ggaXMgdGhlbiBmaWxsZWQgaW4gYnkgdGhlIHJlc3VsdHMgb2YgYSBiYXJjb2RlCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19yZXNtcC5wcyBiL1Jlc291cmNlL0luaXQvZ3NfcmVzbXAucHMKK2luZGV4IDdjYWNhZjguLjliYjQyNjMgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3Jlc21wLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3Jlc21wLnBzCitAQCAtMTgzLDcgKzE4Myw3IEBAIHNldHBhY2tpbmcKKyAgICUgV2UgZG9uJ3QgY2hlY2sgdGhlbS4KKyAKKyAgIGN1cnJlbnRnbG9iYWwgLy9mYWxzZSBzZXRnbG9iYWwgICAgICAgICAgICAgICAgICAlIDxvYmplY3Q+IGJHbG9iYWwKKy0gIGNvdW50ZXhlY3N0YWNrIGFycmF5IGV4ZWNzdGFjayAgICAgICAgICAgICAgICAgICAlIDxvYmplY3Q+IGJHbG9iYWwgW2V4ZWNzdGFja10KKysgIC8vZmFsc2UgLmNvdW50ZXhlY3N0YWNrIGFycmF5IC8vZmFsc2UgLmV4ZWNzdGFjayAlIDxvYmplY3Q+IGJHbG9iYWwgW2V4ZWNzdGFja10KKyAgIGR1cCAvL251bGwgZXhjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIDxvYmplY3Q+IGJHbG9iYWwgW2V4ZWNzdGFja10gbnVsbCBbZXhlY3N0YWNrXQorICAgbGVuZ3RoIDMgc3ViIC0xIDAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgPG9iamVjdD4gYkdsb2JhbCBbZXhlY3N0YWNrXSBudWxsIGkKKyAgICAgMiBpbmRleCBleGNoIGdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIDxvYmplY3Q+IGJHbG9iYWwgW2V4ZWNzdGFja10gbnVsbCBwcm9jCitkaWZmIC0tZ2l0IGEvcHNpL2ludC5tYWsgYi9wc2kvaW50Lm1haworaW5kZXggNWQ5YjNkNS4uNmFiNWJmMCAxMDA2NDQKKy0tLSBhL3BzaS9pbnQubWFrCisrKysgYi9wc2kvaW50Lm1haworQEAgLTMyMyw3ICszMjMsNyBAQCAkKFBTT0JKKXphcnJheS4kKE9CSikgOiAkKFBTU1JDKXphcnJheS5jICQoT1ApICQobWVtb3J5X19oKVwKKyAKKyAkKFBTT0JKKXpjb250cm9sLiQoT0JKKSA6ICQoUFNTUkMpemNvbnRyb2wuYyAkKE9QKSAkKHN0cmluZ19faClcCisgICQoZXN0YWNrX2gpICQoZmlsZXNfaCkgJChpcGFja2VkX2gpICQoaXV0aWxfaCkgJChzdG9yZV9oKSAkKHN0cmVhbV9oKVwKKy0gJChJTlRfTUFLKSAkKE1BS0VESVJTKQorKyAkKGludGVycF9oKSAkKElOVF9NQUspICQoTUFLRURJUlMpCisgCSQoUFNDQykgJChQU09fKXpjb250cm9sLiQoT0JKKSAkKENfKSAkKFBTU1JDKXpjb250cm9sLmMKKyAKKyAkKFBTT0JKKXpkaWN0LiQoT0JKKSA6ICQoUFNTUkMpemRpY3QuYyAkKE9QKVwKK2RpZmYgLS1naXQgYS9wc2kvaW50ZXJwLmMgYi9wc2kvaW50ZXJwLmMKK2luZGV4IGI3MDc2OWQuLjZkYzBkZGEgMTAwNjQ0CistLS0gYS9wc2kvaW50ZXJwLmMKKysrKyBiL3BzaS9pbnRlcnAuYworQEAgLTE0Miw3ICsxNDIsNiBAQCBzdGF0aWMgaW50IG9wYXJyYXlfcG9wKGlfY3R4X3QgKik7Cisgc3RhdGljIGludCBvcGFycmF5X2NsZWFudXAoaV9jdHhfdCAqKTsKKyBzdGF0aWMgaW50IHplcnJvcmV4ZWMoaV9jdHhfdCAqKTsKKyBzdGF0aWMgaW50IHpmaW5kZXJyb3JvYmplY3QoaV9jdHhfdCAqKTsKKy1zdGF0aWMgaW50IGVycm9yZXhlY19maW5kKGlfY3R4X3QgKiwgcmVmICopOworIHN0YXRpYyBpbnQgZXJyb3JleGVjX3BvcChpX2N0eF90ICopOworIHN0YXRpYyBpbnQgZXJyb3JleGVjX2NsZWFudXAoaV9jdHhfdCAqKTsKKyBzdGF0aWMgaW50IHpzZXRzdGFja3Byb3RlY3QoaV9jdHhfdCAqKTsKK0BAIC03NjEsNyArNzYwLDcgQEAgY29weV9zdGFjayhpX2N0eF90ICppX2N0eF9wLCBjb25zdCByZWZfc3RhY2tfdCAqIHBzdGFjaywgaW50IHNraXAsIHJlZiAqIGFycikKKyB7CisgICAgIHVpbnQgc2l6ZSA9IHJlZl9zdGFja19jb3VudChwc3RhY2spIC0gc2tpcDsKKyAgICAgdWludCBzYXZlX3NwYWNlID0gaWFsbG9jX3NwYWNlKGlkbWVtb3J5KTsKKy0gICAgaW50IGNvZGU7CisrICAgIGludCBjb2RlLCBpOworIAorICAgICBpZiAoc2l6ZSA+IDY1NTM1KQorICAgICAgICAgc2l6ZSA9IDY1NTM1OworQEAgLTc3MCw2ICs3NjksMTUgQEAgY29weV9zdGFjayhpX2N0eF90ICppX2N0eF9wLCBjb25zdCByZWZfc3RhY2tfdCAqIHBzdGFjaywgaW50IHNraXAsIHJlZiAqIGFycikKKyAgICAgaWYgKGNvZGUgPj0gMCkKKyAgICAgICAgIGNvZGUgPSByZWZfc3RhY2tfc3RvcmUocHN0YWNrLCBhcnIsIHNpemUsIDAsIDEsIHRydWUsIGlkbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29weV9zdGFjayIpOworKyAgICAvKiBJZiB3ZSBhcmUgY29weWluZyB0aGUgZXhlYyBzdGFjaywgdHJ5IHRvIHJlcGxhY2UgYW55IG9wYXJyYXlzIHdpdGgKKysgICAgICogd2l0aCB0aGUgb3BlcmF0b3IgdGhhbiByZWZlcmVuY2VzIHRoZW0KKysgICAgICovCisrICAgIGlmIChwc3RhY2sgPT0gJmVfc3RhY2spIHsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKysgICAgICAgICAgICBpZiAoZXJyb3JleGVjX2ZpbmQoaV9jdHhfcCwgJmFyci0+dmFsdWUucmVmc1tpXSkgPCAwKQorKyAgICAgICAgICAgICAgICBtYWtlX251bGwoJmFyci0+dmFsdWUucmVmc1tpXSk7CisrICAgICAgICB9CisrICAgIH0KKyAgICAgaWFsbG9jX3NldF9zcGFjZShpZG1lbW9yeSwgc2F2ZV9zcGFjZSk7CisgICAgIHJldHVybiBjb2RlOworIH0KK0BAIC0xOTM0LDcgKzE5NDIsNyBAQCB6ZmluZGVycm9yb2JqZWN0KGlfY3R4X3QgKmlfY3R4X3ApCisgICogLmVycm9yZXhlYyB3aXRoIGVycm9iaiAhPSBudWxsLCBzdG9yZSBpdCBpbiAqcGVycm9yX29iamVjdCBhbmQgcmV0dXJuIDEsCisgICogb3RoZXJ3aXNlIHJldHVybiAwOworICAqLworLXN0YXRpYyBpbnQKKytpbnQKKyBlcnJvcmV4ZWNfZmluZChpX2N0eF90ICppX2N0eF9wLCByZWYgKnBlcnJvcl9vYmplY3QpCisgeworICAgICBsb25nIGk7CitkaWZmIC0tZ2l0IGEvcHNpL2ludGVycC5oIGIvcHNpL2ludGVycC5oCitpbmRleCBlOTI3NWI5Li40ZjU1MWQxIDEwMDY0NAorLS0tIGEvcHNpL2ludGVycC5oCisrKysgYi9wc2kvaW50ZXJwLmgKK0BAIC05MSw1ICs5MSw3IEBAIHZvaWQgZ3NfaW50ZXJwX3Jlc2V0KGlfY3R4X3QgKmlfY3R4X3ApOworIC8qIERlZmluZSB0aGUgdG9wLWxldmVsIGludGVyZmFjZSB0byB0aGUgaW50ZXJwcmV0ZXIuICovCisgaW50IGdzX2ludGVycHJldChpX2N0eF90ICoqcGlfY3R4X3AsIHJlZiAqIHByZWYsIGludCB1c2VyX2Vycm9ycywKKyAgICAgICAgICAgICAgICAgIGludCAqcGV4aXRfY29kZSwgcmVmICogcGVycm9yX29iamVjdCk7CisraW50CisrZXJyb3JleGVjX2ZpbmQoaV9jdHhfdCAqaV9jdHhfcCwgcmVmICpwZXJyb3Jfb2JqZWN0KTsKKyAKKyAjZW5kaWYgLyogaW50ZXJwX0lOQ0xVREVEICovCitkaWZmIC0tZ2l0IGEvcHNpL3pjb250cm9sLmMgYi9wc2kvemNvbnRyb2wuYworaW5kZXggMzZkYTIyYy4uMDM2MmNmNCAxMDA2NDQKKy0tLSBhL3BzaS96Y29udHJvbC5jCisrKysgYi9wc2kvemNvbnRyb2wuYworQEAgLTI0LDYgKzI0LDcgQEAKKyAjaW5jbHVkZSAiaXBhY2tlZC5oIgorICNpbmNsdWRlICJpdXRpbC5oIgorICNpbmNsdWRlICJzdG9yZS5oIgorKyNpbmNsdWRlICJpbnRlcnAuaCIKKyAKKyAvKiBGb3J3YXJkIHJlZmVyZW5jZXMgKi8KKyBzdGF0aWMgaW50IGNoZWNrX2Zvcl9leGVjKGNvbnN0X29zX3B0cik7CitAQCAtNzg3LDcgKzc4OCw3IEBAIHpleGVjc3RhY2syKGlfY3R4X3QgKmlfY3R4X3ApCisgLyogQ29udGludWF0aW9uIG9wZXJhdG9yIHRvIGRvIHRoZSBhY3R1YWwgdHJhbnNmZXIuICovCisgLyogcl9zaXplKG9wMSkgd2FzIHNldCBqdXN0IGFib3ZlLiAqLworIHN0YXRpYyBpbnQKKy1kb19leGVjc3RhY2soaV9jdHhfdCAqaV9jdHhfcCwgYm9vbCBpbmNsdWRlX21hcmtzLCBvc19wdHIgb3AxKQorK2RvX2V4ZWNzdGFjayhpX2N0eF90ICppX2N0eF9wLCBib29sIGluY2x1ZGVfbWFya3MsIGJvb2wgaW5jbHVkZV9vcGFycmF5cywgb3NfcHRyIG9wMSkKKyB7CisgICAgIG9zX3B0ciBvcCA9IG9zcDsKKyAgICAgcmVmICphcmVmcyA9IG9wMS0+dmFsdWUucmVmczsKK0BAIC04MjksNiArODMwLDEyIEBAIGRvX2V4ZWNzdGFjayhpX2N0eF90ICppX2N0eF9wLCBib29sIGluY2x1ZGVfbWFya3MsIG9zX3B0ciBvcDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbih0bmFtZSksIChjb25zdCBieXRlICopdG5hbWUpOworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CisrICAgICAgICAgICAgY2FzZSB0X2FycmF5OgorKyAgICAgICAgICAgIGNhc2UgdF9zaG9ydGFycmF5OgorKyAgICAgICAgICAgIGNhc2UgdF9taXhlZGFycmF5OgorKyAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVfb3BhcnJheXMgJiYgZXJyb3JleGVjX2ZpbmQoaV9jdHhfcCwgcnEpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgIG1ha2VfbnVsbChycSk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgIDsKKyAgICAgICAgIH0KK0BAIC04NDEsMTQgKzg0OCwxNCBAQCBleGVjc3RhY2tfY29udGludWUoaV9jdHhfdCAqaV9jdHhfcCkKKyB7CisgICAgIG9zX3B0ciBvcCA9IG9zcDsKKyAKKy0gICAgcmV0dXJuIGRvX2V4ZWNzdGFjayhpX2N0eF9wLCBmYWxzZSwgb3ApOworKyAgICByZXR1cm4gZG9fZXhlY3N0YWNrKGlfY3R4X3AsIGZhbHNlLCBmYWxzZSwgb3ApOworIH0KKyBzdGF0aWMgaW50CisgZXhlY3N0YWNrMl9jb250aW51ZShpX2N0eF90ICppX2N0eF9wKQorIHsKKyAgICAgb3NfcHRyIG9wID0gb3NwOworIAorLSAgICByZXR1cm4gZG9fZXhlY3N0YWNrKGlfY3R4X3AsIG9wLT52YWx1ZS5ib29sdmFsLCBvcCAtIDEpOworKyAgICByZXR1cm4gZG9fZXhlY3N0YWNrKGlfY3R4X3AsIG9wLT52YWx1ZS5ib29sdmFsLCB0cnVlLCBvcCAtIDEpOworIH0KKyAKKyAvKiAtIC5uZWVkaW5wdXQgLSAqLworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA4LU1ha2UtLmZvcmNlcHV0LXVuYXZhaWxhYmxlLWZyb20tLnBvbGljeXByb2NzLWhlbHBlci0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA4LU1ha2UtLmZvcmNlcHV0LXVuYXZhaWxhYmxlLWZyb20tLnBvbGljeXByb2NzLWhlbHBlci0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NjNTE2MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDgtTWFrZS0uZm9yY2VwdXQtdW5hdmFpbGFibGUtZnJvbS0ucG9saWN5cHJvY3MtaGVscGVyLS5wYXRjaApAQCAtMCwwICsxLDI0NSBAQAorRnJvbSA5MDk2YmVhYTQ0NTFjMTJkZDJhMmNhZjAwMDY1OGZiYWM0YTViY2RmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+CitEYXRlOiBNb24sIDUgTm92IDIwMTggMTU6NTE6MzIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSAuZm9yY2VwdXQgdW5hdmFpbGFibGUgZnJvbSAnLnBvbGljeXByb2NzJyBoZWxwZXIKKyBkaWN0aW9uYXJ5CisKK0J1ZyAjNjk5NjMgIjFQb2xpY3kgaXMgYSBkYW5nZXJvdXMgb3BlcmF0b3IsIGFueSBjYWxsZXJzIHNob3VsZCBiZSBvZGVmIgorCitMZWF2aW5nIHRoZSAucG9saWN5cHJvY3MgZGljdGlvbmFyeSB3aXRoIGEgcHJvY2VkdXJlIHdoaWNoIGlzIGEgc2ltcGxlCit3cmFwcGVyIGZvciAuZm9yY2VwdXQgZWZmZWN0aXZlbHkgbGVhdmVzIC5mb3JjZXB1dCBhdmFpbGFibGUuCisKK0l0IHNlZW1zIHRoYXQgdGhlIG9ubHkgcmVhc29uIHRvIGhhdmUgLnBvbGljeXByb2NzIGlzIHRvIG1pbmltaXNlIHRoZQorY29kZSBpbiAuYXBwbHlwb2xpY2llcywgc28gd2UgY2FuIHJlbW92ZSB0aGUgZGljdGlvbmFyeSBhbmQgcHV0IHRoZQorY29kZSBzdHJhaWdodCBpbnRvIC5hcHBseXBvbGljaWVzLCB3aGljaCB3ZSBjYW4gdGhlbiBiaW5kIGFuZCBtYWtlCitleGVjdXRlb25seSwgd2hpY2ggaGlkZXMgdGhlIC5mb3JjZXB1dC4gQWxzbywgc2luY2Ugd2UgZG9uJ3QgbmVlZAorLmFwcGx5cG9saWNpZXMgYWZ0ZXIgc3RhcnR1cCwgd2UgY2FuIHVuZGVmaW5lIHRoYXQgZnJvbSBzeXN0ZW1kaWN0IHRvby4KKworV2hpbGUgd2UncmUgaGVyZSwgcmV2aWV3IGFsbCB0aGUgdXNlcyBvZiAuZm9yY2UqIHRvIG1ha2UgY2VydGFpbiB0aGF0Cit0aGVyZSBhcmUgbm8gb3RoZXIgc2ltaWxhciBjYXNlcy4gVGhpcyBzaG93ZWQgYSBmZXcgcGxhY2VzIHdoZXJlIHdlCitoYWRuJ3QgbWFkZSBhIGZ1bmN0aW9uIGV4ZWN1dGVvbmx5LCBzbyBkbyB0aGF0IHRvby4gSXRzIHByb2JhYmx5IG5vdAorcmVxdWlyZWQsIHNpbmNlIEknbSByZWFzb25hYmx5IHN1cmUgaXRzIGltcG9zc2libGUgdG8gbG9hZCB0aG9zZQorZnVuY3Rpb25zIGFzIHBhY2tlZCBhcnJheXMgKHRoZXkgYXJlIGFsbCBkZWZpbmVkIGFzIG9wZXJhdG9ycyksIGJ1dCBsZXRzCitoYXZlIGEgYmVsdCBhbmQgYnJhY2VzIGFwcHJvYWNoLCB0aGUgYWRkaXRpb25hbCB0aW1lIGNvc3QgaXMgbmVnbGlnaWJsZS4KKworQ1ZFOiBDVkUtMjAxOC0xODI4NAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfZGlza24ucHMgfCAgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcyAgIHwgICAyICstCisgUmVzb3VyY2UvSW5pdC9nc19lcHNmLnBzICB8ICAgMiArLQorIFJlc291cmNlL0luaXQvZ3NfZm9udHMucHMgfCAgIDQgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgIHwgICAyICstCisgUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcyB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZGlza24ucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2Rpc2tuLnBzCitpbmRleCAyNmVjMGI1Li5mZDY5NGJjIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19kaXNrbi5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19kaXNrbi5wcworQEAgLTYxLDcgKzYxLDcgQEAgc3lzdGVtZGljdCBiZWdpbgorICAgJSBkb2Vzbid0IGdldCBydW4gZW5vdWdoIHRvIGp1c3RpZnkgdGhlIGNvbXBsaWNhdGlvbgorICAgLy8ucHV0ZGV2cGFyYW1zCisgICAvL3N5c3RlbWRpY3QgLy5zZWFyY2hhYmxlZGV2cyAuZm9yY2V1bmRlZgorLX0gLmJpbmQgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNldW5kZWYKKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXVuZGVmCisgCisgJSAtLS0tLS0gZXh0ZW5kIGZpbGVuYW1lZm9yYWxsIHRvIGhhbmRsZSB3aWxkY2FyZHMgaW4gJWRldiUgcGFydCBvZiBwYXR0ZXJuIC0tLS0tLS0lCisgL2ZpbGVuYW1lZm9yYWxsIHsKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZHBzLnBzCitpbmRleCBkYWY3YjBmLi4wMGMxNGQ1IDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19kcHMucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfZHBzLnBzCitAQCAtMTI0LDcgKzEyNCw3IEBACisgICAvc2F2ZWRpbml0aWFsZ3N0YXRlIC5zeXN0ZW12YXIgc2V0Z3N0YXRlIGdzYXZlCisgICAgICAgICAgICAgICAgICUgV3JhcCB1cC4KKyAgIGVuZCAuc2V0Z2xvYmFsCistfSBvZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAlIENoZWNrIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGEgcHJvY2VkdXJlLgorIC8ucHJvY2NoZWNrIHsJCQklIDxvYmo+IC5wcm9jY2hlY2sgPGJvb2w+CitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19lcHNmLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19lcHNmLnBzCitpbmRleCBlNDAzN2Q5Li4yZDBmNjc3IDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19lcHNmLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2Vwc2YucHMKK0BAIC0zMSw3ICszMSw3IEBACisgL0VQU0JvdW5kaW5nQm94U3RhdGUgNSBkZWYKKyAvRVBTQm91bmRpbmdCb3hTZXRTdGF0ZSB7CisgICAvL3N5c3RlbWRpY3QgL0VQU0JvdW5kaW5nQm94U3RhdGUgMyAtMSByb2xsIC5mb3JjZXB1dAorLX0gLmJpbmQgb2RlZiAlIC5mb3JjZXB1dCBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4KKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSAuZm9yY2VwdXQgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuCisgCisgJSBQYXJzZSA0IG51bWJlcnMgZm9yIGEgYm91bmRpbmcgYm94CisgL0VQU0JvdW5kaW5nQm94UGFyc2UgeyAlIChsbHggbGx5IHVyeCB1cnkpIC0tIGxseCBsbHkgdXJ4IHVyeSB0cnVlIE9SIGZhbHNlCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK2luZGV4IDcyZmVmZjIuLjgwM2ZhY2EgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCitAQCAtNTgzLDcgKzU4Myw3IEBAIGJ1aWxkZm9udGRpY3QgMyAvLmJ1aWxkZm9udDMgY3Z4IHB1dAorIH0gYmluZCBkZWYKKyAvLnNldGxvYWRpbmdmb250IHsKKyAgICAvL3N5c3RlbWRpY3QgLy5sb2FkaW5nZm9udCAzIC0xIHJvbGwgLmZvcmNlcHV0CistfSAuYmluZCBvZGVmICUgLmZvcmNlcHV0IG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbgorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIC5mb3JjZXB1dCBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4KKyAvLmxvYWRmb250CisgIHsgICAgICAgICAgICAgICUgU29tZSBidWdneSBmb250cyBsZWF2ZSBleHRyYSBqdW5rIG9uIHRoZSBzdGFjaywKKyAgICAgICAgICAgICAgICAgJSBzbyB3ZSBoYXZlIHRvIG1ha2UgYSBjbG9zdXJlIHRoYXQgcmVjb3JkcyB0aGUgc3RhY2sgZGVwdGgKK0BAIC0xMDEyLDcgKzEwMTIsNyBAQCAkZXJyb3IgL1N1YnN0aXR1dGVGb250IHsgfSBwdXQKKyAgICAgZHVwIGxlbmd0aCBzdHJpbmcgY29weQorICAgICAuZm9yY2VwdXQgc2V0Z2xvYmFsCisgICB9IGlmZWxzZQorLX0gLmJpbmQgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyAKKyAlIEF0dGVtcHQgdG8gbG9hZCBhIGZvbnQgZnJvbSBhIGZpbGUuCisgLy50cnlsb2FkZm9udCB7ICAgICAgICAgJSA8Zm9udG5hbWU+IC50cnlsb2FkZm9udCA8Zm9udD4gdHJ1ZQorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworaW5kZXggZjRjMTA1My4uMDdlZTk2OCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzCitAQCAtMjIzMCw3ICsyMjMwLDcgQEAgU0FGRVIgeyAuc2V0c2FmZWdsb2JhbCB9IGlmCisgICAvLmxvY2Fsdm1hcnJheSAvLmxvY2Fsdm1kaWN0IC8ubG9jYWx2bXBhY2tlZGFycmF5IC8ubG9jYWx2bXN0cmluZyAvLnN5c3RlbXZtYXJyYXkgLy5zeXN0ZW12bWRpY3QgLy5zeXN0ZW12bXBhY2tlZGFycmF5IC8uc3lzdGVtdm1zdHJpbmcgLy5zeXN0ZW12bWZpbGUgLy5zeXN0ZW12bWxpYmZpbGUKKyAgIC8uc3lzdGVtdm1TRkQgLy5zZXR0cmFwcGFyYW1zIC8uY3VycmVudHN5c3RlbXBhcmFtcyAvLmN1cnJlbnR1c2VycGFyYW1zIC8uZ2V0c3lzdGVtcGFyYW0gLy5nZXR1c2VycGFyYW0gLy5zZXRzeXN0ZW1wYXJhbXMgLy5zZXR1c2VycGFyYW1zCisgICAvLmNoZWNrcGFzc3dvcmQgLy5sb2NhbGVfdG9fdXRmOCAvLmN1cnJlbnRnbG9iYWwgLy5nY2hlY2sgLy5pbWFnZXBhdGgKKy0gIC8udHlwZSAvLndyaXRlY3ZzIC8uc2V0U01hc2sgLy5jdXJyZW50U01hc2sgLy5jb3VudGV4ZWNzdGFjayAvLmV4ZWNzdGFjaworKyAgLy50eXBlIC8ud3JpdGVjdnMgLy5zZXRTTWFzayAvLmN1cnJlbnRTTWFzayAvLmNvdW50ZXhlY3N0YWNrIC8uZXhlY3N0YWNrIC8uYXBwbHlwb2xpY2llcworIAorICAgJSBVc2VkIGJ5IGEgZnJlZSB1c2VyIGluIHRoZSBMaWJyYXJ5IG9mIENvbmdyZXNzLiBBcHBhcmVudGx5IHRoaXMgaXMgdXNlZCB0bworICAgJSBkcmF3IGEgcGFydGlhbCBwYWdlLCB3aGljaCBpcyB0aGVuIGZpbGxlZCBpbiBieSB0aGUgcmVzdWx0cyBvZiBhIGJhcmNvZGUKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcworaW5kZXggYWZiNGZmYS4uN2MwNzZhZCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3Nfc2V0cGQucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3Nfc2V0cGQucHMKK0BAIC02MDksNiArNjA5LDIzIEBAIE5PTUVESUFBVFRSUyB7CisgJSBhbmQgd2UgcmVwbGFjZSB0aGUga2V5IGluIHRoZSA8bWVyZ2VkPiBkaWN0aW9uYXJ5IHdpdGggaXRzIHByaW9yIHZhbHVlCisgJSAob3IgcmVtb3ZlIGl0IGlmIGl0IGhhZCBubyBwcmlvciB2YWx1ZSkuCisgCisrJSBUaGVzZSBwcm9jZWR1cmVzIGFyZSBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIG9uIHRoZSBzdGFjazoKKyslICAgPG9yaWc+IDxtZXJnZWQ+IDxmYWlsZWQ+IDxQb2xpY2llcz4gPGtleT4gPHBvbGljeT4KKyslIFRoZXkgYXJlIGV4cGVjdGVkIHRvIGNvbnN1bWUgdGhlIHRvcCAyIG9wZXJhbmRzLgorKyUgTk9URTogd2UgY3VycmVudGx5IHRyZWF0IGFsbCB2YWx1ZXMgb3RoZXIgdGhhbiAwLCAxLCBvciA3IChmb3IgUGFnZVNpemUpCisrJSB0aGUgc2FtZSBhcyAwLCBpLmUuLCB3ZSBzaWduYWwgYW4gZXJyb3IuCisrLzBQb2xpY3kgewkJJSBTZXQgZXJyb3JpbmZvIGFuZCBzaWduYWwgYSBjb25maWd1cmF0aW9uZXJyb3IuCisrICBOT01FRElBQVRUUlMgeworKyAgICAlIE5PTUVESUFBVFRSUyBtZWFucyB0aGF0IHRoZSBkZWZhdWx0IHBvbGljeSBpcyA3Li4uCisrICAgIHBvcCAyIGluZGV4IGV4Y2ggNyBwdXQKKysgIH0geworKyAgICBwb3AgZHVwIDQgaW5kZXggZXhjaCBnZXQgMiBhcnJheSBhc3RvcmUKKysgICAgJGVycm9yIC9lcnJvcmluZm8gMyAtMSByb2xsIHB1dAorKyAgICBjbGVhcnRvbWFyaworKyAgICAvc2V0cGFnZWRldmljZSAuc3lzdGVtdmFyIC9jb25maWd1cmF0aW9uZXJyb3Igc2lnbmFsZXJyb3IKKysgIH0gaWZlbHNlCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKysKKyAlIE1ha2luZyB0aGlzIGFuIG9wZXJhdG9yIG1lYW5zIHdlIGNhbiBwcm9wZXJseSBoaWRlCisgJSB0aGUgY29udGVudHMgLSBzcGVjaWZpY2FsbHkgLmZvcmNlcHV0CisgLzFQb2xpY3kKK0BAIC02MTcsNTkgKzYzNCw0NiBAQCBOT01FRElBQVRUUlMgeworICAgU0VUUERERUJVRyB7IChSb2xsaW5nIGJhY2suKSA9IHBzdGFjayBmbHVzaCB9IGlmCisgICAzIGluZGV4IDIgaW5kZXggMyAtMSByb2xsIC5mb3JjZXB1dAorICAgNCBpbmRleCAxIGluZGV4IC5rbm93bmdldAorLSAgIHsgNCBpbmRleCAzIDEgcm9sbCAuZm9yY2VwdXQgfQorLSAgIHsgMyBpbmRleCBleGNoIC51bmRlZiB9CisrICB7IDQgaW5kZXggMyAxIHJvbGwgLmZvcmNlcHV0IH0KKysgIHsgMyBpbmRleCBleGNoIC51bmRlZiB9CisgICBpZmVsc2UKKyB9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorLS8ucG9saWN5cHJvY3MgbWFyaworLSUgVGhlc2UgcHJvY2VkdXJlcyBhcmUgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBvbiB0aGUgc3RhY2s6CistJSAgIDxvcmlnPiA8bWVyZ2VkPiA8ZmFpbGVkPiA8UG9saWNpZXM+IDxrZXk+IDxwb2xpY3k+CistJSBUaGV5IGFyZSBleHBlY3RlZCB0byBjb25zdW1lIHRoZSB0b3AgMiBvcGVyYW5kcy4KKy0lIE5PVEU6IHdlIGN1cnJlbnRseSB0cmVhdCBhbGwgdmFsdWVzIG90aGVyIHRoYW4gMCwgMSwgb3IgNyAoZm9yIFBhZ2VTaXplKQorLSUgdGhlIHNhbWUgYXMgMCwgaS5lLiwgd2Ugc2lnbmFsIGFuIGVycm9yLgorLSUKKy0lIE0uIFN3ZWV0LCBFYXN5IFNvZnR3YXJlIFByb2R1Y3RzOgorLSUKKy0lIERlZmluZSBOT01FRElBQVRUUlMgdG8gdHVybiBvZmYgdGhlIGRlZmF1bHQgKGJ1dCB1bmltcGxlbWVudGFibGUpIG1lZGlhCistJSBzZWxlY3Rpb24gcG9saWNpZXMgZm9yIHNldHBhZ2VkZXZpY2UuICBUaGlzIGlzIHVzZWQgYnkgQ1VQUyB0byBzdXBwb3J0CistJSB0aGUgc3RhbmRhcmQgQWRvYmUgbWVkaWEgYXR0cmlidXRlcy4KKy0gIDAgewkJJSBTZXQgZXJyb3JpbmZvIGFuZCBzaWduYWwgYSBjb25maWd1cmF0aW9uZXJyb3IuCistICAgICAgTk9NRURJQUFUVFJTIHsKKy0gICAgICAgICUgTk9NRURJQUFUVFJTIG1lYW5zIHRoYXQgdGhlIGRlZmF1bHQgcG9saWN5IGlzIDcuLi4KKy0gICAgICAgIHBvcCAyIGluZGV4IGV4Y2ggNyBwdXQKKy0gICAgICB9IHsKKy0gICAgICAgIHBvcCBkdXAgNCBpbmRleCBleGNoIGdldCAyIGFycmF5IGFzdG9yZQorLSAgICAgICAgJGVycm9yIC9lcnJvcmluZm8gMyAtMSByb2xsIHB1dAorLSAgICAgICAgY2xlYXJ0b21hcmsKKy0gICAgICAgIC9zZXRwYWdlZGV2aWNlIC5zeXN0ZW12YXIgL2NvbmZpZ3VyYXRpb25lcnJvciBzaWduYWxlcnJvcgorLSAgICAgIH0gaWZlbHNlCistICB9IGJpbmQKKy0gIDEgLzFQb2xpY3kgbG9hZAorLSAgNyB7CQklIEZvciBQYWdlU2l6ZSBvbmx5LCBqdXN0IGltcG9zZSB0aGUgcmVxdWVzdC4KKy0gICAgICAgIDEgaW5kZXggL1BhZ2VTaXplIGVxCistICAgICAgICAgeyBwb3AgcG9wIDEgaW5kZXggL1BhZ2VTaXplIDcgcHV0IH0KKy0gICAgICAgICB7IC5wb2xpY3lwcm9jcyAwIGdldCBleGVjIH0KKy0gICAgICAgIGlmZWxzZQorLSAgfSBiaW5kCistLmRpY3R0b21hcmsgcmVhZG9ubHkgZGVmCistY3VycmVudGRpY3QgLzFQb2xpY3kgdW5kZWYKKysvN1BvbGljeSB7CQklIEZvciBQYWdlU2l6ZSBvbmx5LCBqdXN0IGltcG9zZSB0aGUgcmVxdWVzdC4KKysgIDEgaW5kZXggL1BhZ2VTaXplIGVxCisrICB7IHBvcCBwb3AgMSBpbmRleCAvUGFnZVNpemUgNyBwdXQgfQorKyAgeyAucG9saWN5cHJvY3MgMCBnZXQgZXhlYyB9CisrICBpZmVsc2UKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC8uYXBwbHlwb2xpY2llcwkJJSA8b3JpZz4gPG1lcmdlZD4gPGZhaWxlZD4gLmFwcGx5cG9saWNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAlICAgPG9yaWc+IDxtZXJnZWQnPiA8ZmFpbGVkJz4KKy0geyAxIGluZGV4IC9Qb2xpY2llcyBnZXQgMSBpbmRleAorLSAgICB7IHR5cGUgL2ludGVnZXJ0eXBlIGVxCistICAgICAgIHsgcG9wCQklIGFscmVhZHkgcHJvY2Vzc2VkCistICAgICAgIH0KKy0gICAgICAgeyAyIGNvcHkgLmtub3duZ2V0IG5vdCB7IDEgaW5kZXggL1BvbGljeU5vdEZvdW5kIGdldCB9IGlmCistICAgICAgICAgICAgICAgICAgICAgICAgJSBTdGFjazogPG9yaWc+IDxtZXJnZWQ+IDxmYWlsZWQ+IDxQb2xpY2llcz4gPGtleT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAlICAgPHBvbGljeT4KKy0gICAgICAgICAucG9saWN5cHJvY3MgMSBpbmRleCAua25vd25nZXQgbm90IHsgLnBvbGljeXByb2NzIDAgZ2V0IH0gaWYgZXhlYworLSAgICAgICB9CistICAgICAgaWZlbHNlCistICAgIH0KKy0gICBmb3JhbGwgcG9wCistIH0gYmluZCBkZWYKKyt7CisrICAxIGluZGV4IC9Qb2xpY2llcyBnZXQgMSBpbmRleAorKyAgeyB0eXBlIC9pbnRlZ2VydHlwZSBlcQorKyAgICAgeworKyAgICAgICBwb3AJCSUgYWxyZWFkeSBwcm9jZXNzZWQKKysgICAgIH17CisrICAgICAgIDIgY29weSAua25vd25nZXQgbm90IHsgMSBpbmRleCAvUG9saWN5Tm90Rm91bmQgZ2V0IH0gaWYKKysgICAgICAgICAgICAgICAgICAgICAgJSBTdGFjazogPG9yaWc+IDxtZXJnZWQ+IDxmYWlsZWQ+IDxQb2xpY2llcz4gPGtleT4KKysgICAgICAgICAgICAgICAgICAgICAgJSAgIDxwb2xpY3k+CisrICAgICAgICBkdXAgMSBlcSB7CisrICAgICAgICAgIDFQb2xpY3kKKysgICAgICAgIH17CisrICAgICAgICAgIGR1cCA3IGVxIHsKKysgICAgICAgICAgICA3UG9saWN5CisrICAgICAgICAgIH17CisrICAgICAgICAgICAgMFBvbGljeQorKyAgICAgICAgICB9IGlmZWxzZQorKyAgICAgICAgfSBpZmVsc2UKKysgICAgIH0gaWZlbHNlCisrICB9CisrICBmb3JhbGwgcG9wCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKysKKytjdXJyZW50ZGljdCAvMFBvbGljeSB1bmRlZgorK2N1cnJlbnRkaWN0IC8xUG9saWN5IHVuZGVmCisrY3VycmVudGRpY3QgLzdQb2xpY3kgdW5kZWYKKyAKKyAlIFByZXBhcmUgdG8gcHJlc2VudCBwYXJhbWV0ZXJzIHRvIHRoZSBkZXZpY2UsIGJ5IHNwcmVhZGluZyB0aGVtIG9udG8gdGhlCisgJSBvcGVyYW5kIHN0YWNrIGFuZCByZW1vdmluZyBhbnkgdGhhdCBzaG91bGRuJ3QgYmUgcHJlc2VudGVkLgorQEAgLTEwMDYsNyArMTAxMCw3IEBAIFNFVFBEREVCVUcgeyAoSW5zdGFsbGluZy4pID0gcHN0YWNrIGZsdXNoIH0gaWYKKyAgICAgLnBvc3RpbnN0YWxsCisgICB9IGlmZWxzZQorICAgc2V0Z2xvYmFsICAgICAgICAgICAlIHJldHVybiB0byBvcmlnaW5hbCBWTSBhbGxvY2F0aW9uIG1vZGUKKy19IG9kZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorICUgV2UgYnJlYWsgb3V0IHRoZSBjb2RlIGFmdGVyIGNhbGxpbmcgdGhlIEluc3RhbGwgcHJvY2VkdXJlIGludG8gYQorICUgc2VwYXJhdGUgcHJvY2VkdXJlLCBzaW5jZSBpdCBpcyBleGVjdXRlZCBldmVuIGlmIEluc3RhbGwgY2F1c2VzIGFuIGVycm9yLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy9kby1ub3QtY2hlY2stbG9jYWwtbGlicG5nLXNvdXJjZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoCmluZGV4IGMzZTQ0ZmUuLjU4MzRmZmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1ZWY4Yjg1YmM5OGYzYmQ5YTE1ZDVmNDdlMjRkM2UyM2FlMjdjMjY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOTU0YmYyOWE1ZjkwNmIzMTUxZGZmYmVjYjU4NTZlMDJlMTU2NWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAxOCBKYW4gMjAxNiAwMTowMDozMCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGRvIG5vdCBjaGVjayBsb2NhbCBwbmcgc291cmNlCitTdWJqZWN0OiBbUEFUQ0ggMDMvMTBdIGNvbmZpZ3VyZS5hYzogZG8gbm90IGNoZWNrIGxvY2FsIHBuZyBzb3VyY2UKIAogSW4gb2UtY29yZSwgaXQgZGlkIG5vdCBuZWVkIHRvIGNvbXBpbGUgbG9jYWwgbGlicG5nCiBzb3VyY2UgaW4gZ2hvc3RzY3JpcHQsIHNvIGRvIG5vdCBjaGVjayBsb2NhbCBwbmcKQEAgLTE2LDEwICsxNiwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGJmNmQzZjUuLjAxZGYwM2YgMTAwNjQ0CitpbmRleCA5MzQxOTMwLi44MGE2MGIxIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC05MzAsMTEgKzkzMCwxMSBAQCBBQ19TVUJTVChaTElCRElSKQorQEAgLTExMTQsMTEgKzExMTQsMTEgQEAgQUNfU1VCU1QoWkxJQkRJUikKICBBQ19TVUJTVChGVF9TWVNfWkxJQikKICAKICBkbmwgcG5nIGZvciB0aGUgcG5nIG91dHB1dCBkZXZpY2U7IGl0IGFsc28gcmVxdWlyZXMgemxpYgpAQCAtMzQsNSArMzQsNSBAQAogICAgICAgICAgU0hBUkVfTElCUE5HPTAKICAgICAgICAgIExJQlBOR0RJUj0kc3JjZGlyL2xpYnBuZwogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy0xMTcxNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTExNzE0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk4M2M1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTExNzE0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSA2NzFmZDU5ZWI2NTc3NDNhYTg2ZmJjMTg5NWNiMTU4NzJhMzE3Y2FhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxNDo1NDowMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk4MTU4OiBwcmV2ZW50IHRyeWluZyB0byByZWxvYyBhIGZyZWVkIG9iamVjdAotCi1JbiB0aGUgdG9rZW4gcmVhZGVyLCB3ZSBwYXNzIHRoZSBzY2FubmVyIHN0YXRlIHN0cnVjdHVyZSBhcm91bmQgYXMgYQotdF9zdHJ1Y3QgcmVmIG9uIHRoZSBQb3N0c2NyaXB0IG9wZXJhbmQgc3RhY2suCi0KLUJ1dCB3ZSBleHBsaWNpdGx5IGZyZWUgdGhlIHNjYW5uZXIgc3RhdGUgd2hlbiB3ZSdyZSBkb25lLCB3aGljaCBsZWF2ZXMgYQotZGFuZ2xpbmcgcmVmZXJlbmNlIG9uIHRoZSBvcGVyYW5kIHN0YWNrIGFuZCwgdW5sZXNzIHRoYXQgcmVmZXJlbmNlIGdldHMKLW92ZXJ3cml0dGVuIGJlZm9yZSB0aGUgbmV4dCBnYXJiYWdlciBydW4sIHdlIGNhbiBlbmQgdXAgd2l0aCB0aGUgZ2FyYmFnZXIKLXRyeWluZyB0byBkZWFsIHdpdGggYW4gYWxyZWFkeSBmcmVlZCBvYmplY3QgLSB0aGF0IGNhbiBjYXVzZSBhIGNyYXNoLCBvcgotbWVtb3J5IGNvcnJ1cHRpb24uCi0tLS0KLSBwc2kvenRva2VuLmMgfCAgIDE0ICsrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy0xMTcxNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvcHNpL3p0b2tlbi5jIGIvcHNpL3p0b2tlbi5jCi1pbmRleCA0ZGJhN2M1Li5hZjFjZWViIDEwMDY0NAotLS0tIGEvcHNpL3p0b2tlbi5jCi0rKysgYi9wc2kvenRva2VuLmMKLUBAIC0xMDcsNiArMTA3LDEyIEBAIHRva2VuX2NvbnRpbnVlKGlfY3R4X3QgKmlfY3R4X3AsIHNjYW5uZXJfc3RhdGUgKiBwc3RhdGUsIGJvb2wgc2F2ZSkKLSAgICAgaW50IGNvZGU7Ci0gICAgIHJlZiB0b2tlbjsKLSAKLSsgICAgLyogU2luY2Ugd2UgbWlnaHQgZnJlZSBwc3RhdGUgYmVsb3csIGFuZCB3ZSdyZSBkZWFsaW5nIHdpdGgKLSsgICAgICogZ2MgbWVtb3J5IHJlZmVyZW5jZWQgYnkgdGhlIHN0YWNrLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkKLSsgICAgICogcmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8gcHN0YXRlIGZyb20gdGhlIHN0YWNrLCBvdGhlcndpc2UKLSsgICAgICogdGhlIGdhcmJhZ2VyIHdpbGwgZmFsbCBvdmVyCi0rICAgICAqLwotKyAgICBtYWtlX251bGwob3NwKTsKLSAgICAgLyogTm90ZSB0aGF0IGdzX3NjYW5fdG9rZW4gbWF5IGNoYW5nZSBvc3AhICovCi0gICAgIHBvcCgxKTsgICAgICAgICAgICAgICAgICAgICAvKiByZW1vdmUgdGhlIGZpbGUgb3Igc2Nhbm5lciBzdGF0ZSAqLwotIGFnYWluOgotQEAgLTE4Myw4ICsxODksMTQgQEAgenRva2VuZXhlY19jb250aW51ZShpX2N0eF90ICppX2N0eF9wKQotIHN0YXRpYyBpbnQKLSB0b2tlbmV4ZWNfY29udGludWUoaV9jdHhfdCAqaV9jdHhfcCwgc2Nhbm5lcl9zdGF0ZSAqIHBzdGF0ZSwgYm9vbCBzYXZlKQotIHsKLS0gICAgb3NfcHRyIG9wOwotKyAgICBvc19wdHIgb3AgPSBvc3A7Ci0gICAgIGludCBjb2RlOwotKyAgICAvKiBTaW5jZSB3ZSBtaWdodCBmcmVlIHBzdGF0ZSBiZWxvdywgYW5kIHdlJ3JlIGRlYWxpbmcgd2l0aAotKyAgICAgKiBnYyBtZW1vcnkgcmVmZXJlbmNlZCBieSB0aGUgc3RhY2ssIHdlIG5lZWQgdG8gZXhwbGljaXRseQotKyAgICAgKiByZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBwc3RhdGUgZnJvbSB0aGUgc3RhY2ssIG90aGVyd2lzZQotKyAgICAgKiB0aGUgZ2FyYmFnZXIgd2lsbCBmYWxsIG92ZXIKLSsgICAgICovCi0rICAgIG1ha2VfbnVsbChvc3ApOwotICAgICAvKiBOb3RlIHRoYXQgZ3Nfc2Nhbl90b2tlbiBtYXkgY2hhbmdlIG9zcCEgKi8KLSAgICAgcG9wKDEpOwotIGFnYWluOgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTU5NTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy01OTUxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmNjMTM0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTU5NTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGJmYTZiMmVjYmU0OGVkYzY5YTdkOWQyMmExMjQxOWFlZDI1OTYwYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgotRGF0ZTogVGh1LCA2IEFwciAyMDE3IDE2OjQ0OjU0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTc1NDg6IHVzZSB0aGUgY29ycmVjdCBwYXJhbSBsaXN0IGVudW1lcmF0b3IKLQotV2hlbiB3ZSBlbmNvdW50ZXJlZCBkaWN0aW9uYXJ5IGluIGEgcmVmX3BhcmFtX2xpc3QsIHdlIHdlcmUgdXNpbmcgdGhlIGVudW1lcmF0b3IKLWZvciB0aGUgInBhcmVudCIgcGFyYW1fbGlzdCwgcmF0aGVyIHRoYW4gdGhlIGVudW1lcmF0b3IgZm9yIHRoZSBwYXJhbV9saXN0Ci13ZSBqdXN0IGNyZWF0ZWQgZm9yIHRoZSBkaWN0aW9uYXJ5LiBUaGF0IHBhcmVudCB3YXMgdXN1YWxseSB0aGUgc3RhY2sKLWxpc3QgZW51bWVyYXRvciwgYW5kIGNhdXNlZCBhIHNlZ2ZhdWx0LgotCi1Vc2luZyB0aGUgY29ycmVjdCBlbnVtZXJhdG9yIHdvcmtzIGJldHRlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy01OTUxCi0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcHNpL2lwYXJhbS5jIHwgNyArKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BzaS9pcGFyYW0uYyBiL3BzaS9pcGFyYW0uYwotaW5kZXggNGU2M2I2ZC4uYjJmYTg1ZiAxMDA2NDQKLS0tLSBhL3BzaS9pcGFyYW0uYwotKysrIGIvcHNpL2lwYXJhbS5jCi1AQCAtNzcwLDEyICs3NzAsMTMgQEAgcmVmX3BhcmFtX3JlYWRfdHlwZWQoZ3NfcGFyYW1fbGlzdCAqIHBsaXN0LCBnc19wYXJhbV9uYW1lIHBrZXksCi0gICAgICAgICAgICAgICAgIGdzX3BhcmFtX2VudW1lcmF0b3JfdCBlbnVtcjsKLSAgICAgICAgICAgICAgICAgZ3NfcGFyYW1fa2V5X3Qga2V5OwotICAgICAgICAgICAgICAgICByZWZfdHlwZSBrZXl0eXBlOwotKyAgICAgICAgICAgICAgICBkaWN0X3BhcmFtX2xpc3QgKmRsaXN0ID0gKGRpY3RfcGFyYW1fbGlzdCAqKSBwdmFsdWUtPnZhbHVlLmQubGlzdDsKLSAKLSAgICAgICAgICAgICAgICAgcGFyYW1faW5pdF9lbnVtZXJhdG9yKCZlbnVtcik7Ci0tICAgICAgICAgICAgICAgIGlmICghKCooKGlwYXJhbV9saXN0ICopIHBsaXN0KS0+ZW51bWVyYXRlKQotLSAgICAgICAgICAgICAgICAgICAgKChpcGFyYW1fbGlzdCAqKSBwdmFsdWUtPnZhbHVlLmQubGlzdCwgJmVudW1yLCAma2V5LCAma2V5dHlwZSkKLSsgICAgICAgICAgICAgICAgaWYgKCEoKihkbGlzdC0+ZW51bWVyYXRlKSkKLSsgICAgICAgICAgICAgICAgICAgICgoaXBhcmFtX2xpc3QgKikgZGxpc3QsICZlbnVtciwgJmtleSwgJmtleXR5cGUpCi0gICAgICAgICAgICAgICAgICAgICAmJiBrZXl0eXBlID09IHRfaW50ZWdlcikgewotLSAgICAgICAgICAgICAgICAgICAgKChkaWN0X3BhcmFtX2xpc3QgKikgcHZhbHVlLT52YWx1ZS5kLmxpc3QpLT5pbnRfa2V5cyA9IDE7Ci0rICAgICAgICAgICAgICAgICAgICBkbGlzdC0+aW50X2tleXMgPSAxOwotICAgICAgICAgICAgICAgICAgICAgcHZhbHVlLT50eXBlID0gZ3NfcGFyYW1fdHlwZV9kaWN0X2ludF9rZXlzOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzIwNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTcyMDcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNWRjMDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzIwNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMGU4OGJlZTEzMDQ5OTM2NjhmZWRlNzI0OThkNjU2YTJkZDMzYTM1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotRGF0ZTogTW9uLCAyMCBNYXIgMjAxNyAwOTozNDoxMSArMDAwMAotU3ViamVjdDogW1BBVENIXSBFbnN1cmUgYSBkZXZpY2UgaGFzIHJhc3RlciBtZW1vcnksIGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBpdC4KLQotQnVnICM2OTc2NzYgIk51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBtZW1fZ2V0X2JpdHNfcmVjdGFuZ2xlKCkiCi0KLVRoaXMgaXMgb25seSBwb3NzaWJsZSBieSBhYnVzaW5nL21pcy11c2luZyBHaG9zdHNjcmlwdC1zcGVjaWZpYwotbGFuZ3VhZ2UgZXh0ZW5zaW9ucywgc28gY2Fubm90IGhhcHBlbiBpbiBhIGdlbmVyYWwgUG9zdFNjcmlwdCBwcm9ncmFtLgotCi1OZXZlcnRoZWxlc3MsIEdob3N0c2NyaXB0IHNob3VsZCBub3QgY3Jhc2guIFNvIHRoaXMgY29tbWl0IGNoZWNrcyB0aGUKLW1lbW9yeSBkZXZpY2UgdG8gc2VlIGlmIHJhc3RlciBtZW1vcnkgaGFzIGJlZW4gYWxsb2NhdGVkLCBiZWZvcmUgdHJ5aW5nCi10byByZWFkIGZyb20gaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctNzIwNwotCi1BdXRob3I6IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiYXNlL2dkZXZtZW0uYyB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL2dkZXZtZW0uYyBiL2Jhc2UvZ2Rldm1lbS5jCi1pbmRleCA0MTEwOGJhLi4xODNmOTZkIDEwMDY0NAotLS0tIGEvYmFzZS9nZGV2bWVtLmMKLSsrKyBiL2Jhc2UvZ2Rldm1lbS5jCi1AQCAtNjA1LDYgKzYwNSw4IEBAIG1lbV9nZXRfYml0c19yZWN0YW5nbGUoZ3hfZGV2aWNlICogZGV2LCBjb25zdCBnc19pbnRfcmVjdCAqIHByZWN0LAotICAgICAgICAgICAgIEdCX1BBQ0tJTkdfQ0hVTktZIHwgR0JfQ09MT1JTX05BVElWRSB8IEdCX0FMUEhBX05PTkU7Ci0gICAgICAgICByZXR1cm5fZXJyb3IoZ3NfZXJyb3JfcmFuZ2VjaGVjayk7Ci0gICAgIH0KLSsgICAgaWYgKG1kZXYtPmxpbmVfcHRycyA9PSAweDAwKQotKyAgICAgICAgcmV0dXJuX2Vycm9yKGdzX2Vycm9yX3JhbmdlY2hlY2spOwotICAgICBpZiAoKHcgPD0gMCkgfCAoaCA8PSAwKSkgewotICAgICAgICAgaWYgKCh3IHwgaCkgPCAwKQotICAgICAgICAgICAgIHJldHVybl9lcnJvcihnc19lcnJvcl9yYW5nZWNoZWNrKTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03OTc1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDA2MDg2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGIzOWJlMTAxOWI0YWNjMWFhNTBjNjAyNjQ2M2M1NDMzMzJlOTVhMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjoxODoxNCArMDMwMAotCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTc2OTM6IFByZXZlbnQgU0VHViBkdWUgdG8gaW50ZWdlciBvdmVyZmxvdy4KLQotV2hpbGUgYnVpbGRpbmcgYSBIdWZmbWFuIHRhYmxlLCB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgd2VyZSBzdXNjZXB0aWJsZQotdG8gaW50ZWdlciBvdmVyZmxvdy4KLQotVGhhbmsgeW91IHRvIEppYXFpIGZvciBmaW5kaW5nIHRoaXMgaXNzdWUgYW5kIHN1Z2dlc3RpbmcgYSBwYXRjaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy03OTc1Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotCi1Db250ZW50cyBvZiB0aGlzIHBhdGNoIHdlcmUgZXh0cmFjdGVkIGZyb20gYSBsYXJnZXIgcGF0Y2ggd2hpY2ggYWRkcmVzc2VkCi10d28gQ1ZFJ3MuICBUaGUgY29udGV4dCAobG9jYXRpb24gb2Ygeykgd2FzIGFsc28gbW9kaWZpZWQgdG8gYXBwbHkgdG8KLWdob3N0c2NyaXB0IDkuMjEuCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotCi0tLS0gYS9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMKLSsrKyBiL2piaWcyZGVjL2piaWcyX2h1ZmZtYW4uYwotQEAgLTQyMSw4ICs0MjEsOCBAQCBqYmlnMl9idWlsZF9odWZmbWFuX3RhYmxlKEpiaWcyQ3R4ICpjdHgsCi0gCi0gICAgICAgICAgICAgaWYgKFBSRUZMRU4gPT0gQ1VSTEVOKSB7Ci0gICAgICAgICAgICAgICAgIGludCBSQU5HRUxFTiA9IGxpbmVzW0NVUlRFTVBdLlJBTkdFTEVOOwotLSAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaiA9IENVUkNPREUgPDwgc2hpZnQ7Ci0tICAgICAgICAgICAgICAgIGludCBlbmRfaiA9IChDVVJDT0RFICsgMSkgPDwgc2hpZnQ7Ci0rICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0YXJ0X2ogPSBDVVJDT0RFIDw8IHNoaWZ0OwotKyAgICAgICAgICAgICAgICB1aW50MzJfdCBlbmRfaiA9IChDVVJDT0RFICsgMSkgPDwgc2hpZnQ7Ci0gICAgICAgICAgICAgICAgIGJ5dGUgZWZsYWdzID0gMDsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKGVuZF9qID4gbWF4X2opIHsKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTIxNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTkyMTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYWViM2UuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTIxNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gM2ViZmZiMWQ5NmJhMGNhY2VjMjMwMTZlY2NiNDA0N2RhYjM2NTg1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNoYWlsZXNoIE1pc3RyeSA8c2hhaWxlc2gubWlzdHJ5QGhvdG1haWwuY28udWs+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDE5OjI5OjU3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTc5MzQ6IEZpeCBTRUdWIGR1ZSB0byBlcnJvciBjb2RlIGJlaW5nIGlnbm9yZWQuCi0KLVRoZSByZXR1cm4gY29kZSBmcm9tIGpiaWcyX2RlY29kZV90ZXh0X3JlZ2lvbiB3YXMgYmVpbmcgaWdub3JlZCBzbyB0aGUKLWNvZGUgY29udGludWVkIHRvIHRyeSBhbmQgcGFyc2UgdGhlIGludmFsaWQgZmlsZSB1c2luZyBpbmNvbXBsZXRlL2VtcHR5Ci1zdHJ1Y3R1cmVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTkyMTYKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBqYmlnMmRlYy9qYmlnMl9zeW1ib2xfZGljdC5jIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvamJpZzJkZWMvamJpZzJfc3ltYm9sX2RpY3QuYyBiL2piaWcyZGVjL2piaWcyX3N5bWJvbF9kaWN0LmMKLWluZGV4IDNjYzE3MzEuLjY3MjQyNWQgMTAwNjQ0Ci0tLS0gYS9qYmlnMmRlYy9qYmlnMl9zeW1ib2xfZGljdC5jCi0rKysgYi9qYmlnMmRlYy9qYmlnMl9zeW1ib2xfZGljdC5jCi1AQCAtNDkzLDggKzQ5MywxMCBAQCBqYmlnMl9kZWNvZGVfc3ltYm9sX2RpY3QoSmJpZzJDdHggKmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgLyogbXVsdGlwbGUgc3ltYm9scyBhcmUgaGFuZGxlZCBhcyBhIHRleHQgcmVnaW9uICovCi0tICAgICAgICAgICAgICAgICAgICAgICAgamJpZzJfZGVjb2RlX3RleHRfcmVnaW9uKGN0eCwgc2VnbWVudCwgdHBhcmFtcywgKGNvbnN0IEpiaWcyU3ltYm9sRGljdCAqIGNvbnN0ICopcmVmYWdnX2RpY3RzLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBqYmlnMl9kZWNvZGVfdGV4dF9yZWdpb24oY3R4LCBzZWdtZW50LCB0cGFyYW1zLCAoY29uc3QgSmJpZzJTeW1ib2xEaWN0ICogY29uc3QgKilyZWZhZ2dfZGljdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVmYWdnX2RpY3RzLCBpbWFnZSwgZGF0YSwgc2l6ZSwgR1Jfc3RhdHMsIGFzLCB3cyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA0OwotIAotICAgICAgICAgICAgICAgICAgICAgICAgIFNETkVXU1lNUy0+Z2x5cGhzW05TWU1TREVDT0RFRF0gPSBpbWFnZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWZhZ2dfZGljdHNbMF0tPmdseXBoc1twYXJhbXMtPlNETlVNSU5TWU1TICsgTlNZTVNERUNPREVEXSA9IGpiaWcyX2ltYWdlX2Nsb25lKGN0eCwgU0RORVdTWU1TLT5nbHlwaHNbTlNZTVNERUNPREVEXSk7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NjExLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTYxMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThlZjA0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NjExLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBjN2M1NTk3Mjc1OGE5MzM1MDg4MmMzMjE0NzgwMWEzNDg1YjAxMGZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMTM6MDg6NDAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5ODAyNDogYm91bmRzIGNoZWNrIHpvbmUgcG9pbnRlciBpbiBJbnNfTUlSUCgpCi0KLS0tLQotIGJhc2UvdHRpbnRlcnAuYyB8ICAgIDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gZW5kIG9mIG9yaWdpbmFsIGhlYWRlcgotCi1DVkU6IENWRS0yMDE3LTk2MTEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL2Jhc2UvdHRpbnRlcnAuYyBiL2Jhc2UvdHRpbnRlcnAuYwotaW5kZXggZTU2YWVjNi4uZjZhNmQ5NSAxMDA2NDQKLS0tLSBhL2Jhc2UvdHRpbnRlcnAuYwotKysrIGIvYmFzZS90dGludGVycC5jCi1AQCAtMzg1OCw3ICszODU4LDggQEAgc3RhdGljIGludCBuSW5zdHJDb3VudD0wOwotICAgICAvKiBYWFg6IFVORE9DVU1FTlRFRCEgY3Z0Wy0xXSA9IDAgYWx3YXlzICovCi0gCi0gICAgIGlmICggQk9VTkRTKCBhcmdzWzBdLCAgIENVUi56cDEubl9wb2ludHMgKSB8fAotLSAgICAgICAgIEJPVU5EUyggYXJnc1sxXSsxLCBDVVIuY3Z0U2l6ZSsxICkgICAgKQotKyAgICAgICAgIEJPVU5EUyggYXJnc1sxXSsxLCBDVVIuY3Z0U2l6ZSsxICkgICAgfHwKLSsgICAgICAgICBCT1VORFMoQ1VSLkdTLnJwMCwgIENVUi56cDAubl9wb2ludHMpICkKLSAgICAgewotICAgICAgIENVUi5lcnJvciA9IFRUX0Vycl9JbnZhbGlkX1JlZmVyZW5jZTsKLSAgICAgICByZXR1cm47Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTYxMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk2MTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MzdjYzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTYxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOThmNmRhNjBiOWQ0NjNjNjE3ZTYzMWZjMjU0Y2Y2ZDY2ZjJlOGUzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBNb24sIDEyIEp1biAyMDE3IDEzOjE1OjE3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTgwMjY6IGJvdW5kcyBjaGVjayB6b25lIHBvaW50ZXJzIGluIEluc19JUCgpCi0KLS0tLQotIGJhc2UvdHRpbnRlcnAuYyB8ICAgIDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05NjEyCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9iYXNlL3R0aW50ZXJwLmMgYi9iYXNlL3R0aW50ZXJwLmMKLWluZGV4IGY2YTZkOTUuLmU3YzlkNjggMTAwNjQ0Ci0tLS0gYS9iYXNlL3R0aW50ZXJwLmMKLSsrKyBiL2Jhc2UvdHRpbnRlcnAuYwotQEAgLTQxMjksNyArNDEyOSw5IEBAIHN0YXRpYyBpbnQgbkluc3RyQ291bnQ9MDsKLSAgICAgSW50ICAgICAgICAgcG9pbnQ7Ci0gICAgICh2b2lkKWFyZ3M7Ci0gCi0tICAgIGlmICggQ1VSLnRvcCA8IENVUi5HUy5sb29wICkKLSsgICAgaWYgKCBDVVIudG9wIDwgQ1VSLkdTLmxvb3AgfHwKLSsgICAgICAgICBCT1VORFMoQ1VSLkdTLnJwMSwgQ1VSLnpwMC5uX3BvaW50cykgfHwKLSsgICAgICAgICBCT1VORFMoQ1VSLkdTLnJwMiwgQ1VSLnpwMS5uX3BvaW50cykpCi0gICAgIHsKLSAgICAgICBDVVIuZXJyb3IgPSBUVF9FcnJfSW52YWxpZF9SZWZlcmVuY2U7Ci0gICAgICAgcmV0dXJuOwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk3MjYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NzI2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTZjNjU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk3MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDc3NTVlNjcxMTZlODk3M2VlMGUzYjIyZDY1M2RmMDI2YTg0ZmEwMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAwODo1ODozMSArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk4MDU1OiBib3VuZHMgY2hlY2sgem9uZSBwb2ludGVyIGluIEluc19NRFJQCi0KLS0tLQotIGJhc2UvdHRpbnRlcnAuYyB8ICAgIDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gZW5kIG9mIG9yaWdpbmFsIGhlYWRlcgotCi1DVkU6IENWRS0yMDE3LTk3MjYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLWRpZmYgLS1naXQgYS9iYXNlL3R0aW50ZXJwLmMgYi9iYXNlL3R0aW50ZXJwLmMKLWluZGV4IGU3YzlkNjguLmFmNDU3ZTggMTAwNjQ0Ci0tLS0gYS9iYXNlL3R0aW50ZXJwLmMKLSsrKyBiL2Jhc2UvdHRpbnRlcnAuYwotQEAgLTM3NzAsNyArMzc3MCw4IEBAIHN0YXRpYyBpbnQgbkluc3RyQ291bnQ9MDsKLSAKLSAgICAgcG9pbnQgPSAoSW50KWFyZ3NbMF07Ci0gCi0tICAgIGlmICggQk9VTkRTKCBhcmdzWzBdLCBDVVIuenAxLm5fcG9pbnRzICkgKQotKyAgICBpZiAoIEJPVU5EUyggYXJnc1swXSwgQ1VSLnpwMS5uX3BvaW50cyApIHx8Ci0rICAgICAgICAgQk9VTkRTKCBDVVIuR1MucnAwLCBDVVIuenAwLm5fcG9pbnRzKSApCi0gICAgIHsKLSAgICAgICAgIC8qIEN1cnJlbnQgdmVyc2lvbiBvZiBGcmVlVHlwZSBzaWxlbnRseSBpZ25vcmVzIHRoaXMgb3V0IG9mIGJvdW5kcyBlcnJvcgotICAgICAgICAgICogYW5kIGRyb3BzIHRoZSBpbnN0cnVjdGlvbiwgc2VlIGJ1ZyAjNjkxMTIxCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTcyNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk3MjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZjdiZmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTcyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOTM3Y2NkMTdhYzY1OTM1NjMzYjJlYmMwNmNiNzA4OWI5MWUxN2U2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDA5OjA1OjIwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTgwNTY6IG1ha2UgYm91bmRzIGNoZWNrIGluIGd4X3R0ZlJlYWRlcl9fUmVhZCBtb3JlCi0gcm9idXN0Ci0KLS0tLQotIGJhc2UvZ3h0dGZiLmMgfCAgICAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05NzI3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9iYXNlL2d4dHRmYi5jIGIvYmFzZS9neHR0ZmIuYwotaW5kZXggMGU5YTQ0NC4uZTE1NjFhZiAxMDA2NDQKLS0tLSBhL2Jhc2UvZ3h0dGZiLmMKLSsrKyBiL2Jhc2UvZ3h0dGZiLmMKLUBAIC03OSw3ICs3OSw4IEBAIHN0YXRpYyB2b2lkIGd4X3R0ZlJlYWRlcl9fUmVhZCh0dGZSZWFkZXIgKnNlbGYsIHZvaWQgKnAsIGludCBuKQotICAgICBpZiAoIXItPmVycm9yKSB7Ci0gICAgICAgICBpZiAoci0+ZXh0cmFfZ2x5cGhfaW5kZXggIT0gLTEpIHsKLSAgICAgICAgICAgICBxID0gci0+Z2x5cGhfZGF0YS5iaXRzLmRhdGEgKyByLT5wb3M7Ci0tICAgICAgICAgICAgci0+ZXJyb3IgPSAoci0+Z2x5cGhfZGF0YS5iaXRzLnNpemUgLSByLT5wb3MgPCBuID8KLSsgICAgICAgICAgICByLT5lcnJvciA9ICgoci0+cG9zID49IHItPmdseXBoX2RhdGEuYml0cy5zaXplIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgci0+Z2x5cGhfZGF0YS5iaXRzLnNpemUgLSByLT5wb3MgPCBuKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzX25vdGVfZXJyb3IoZ3NfZXJyb3JfaW52YWxpZGZvbnQpIDogMCk7Ci0gICAgICAgICAgICAgaWYgKHItPmVycm9yID09IDApCi0gICAgICAgICAgICAgICAgIG1lbWNweShwLCBxLCBuKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NzM5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTczOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlhOTRkZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NzM5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBjNTAxYTU4ZjhkNTY1MGM4YmEyMWQ0NDdjMGQ2ZjA3ZWFmY2IwZjE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMDg6Mjk6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5ODA2MzogQm91bmRzIGNoZWNrIEluc19KTVBSCi0KLS0tLQotIGJhc2UvdHRpbnRlcnAuYyB8ICAgIDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi0tLS0gZW5kIG9mIG9yaWdpbmFsIGhlYWRlcgotCi1DVkU6IENWRS0yMDE3LTk3MzkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL2Jhc2UvdHRpbnRlcnAuYyBiL2Jhc2UvdHRpbnRlcnAuYwotaW5kZXggYWY0NTdlOC4uYWRmM2YwYyAxMDA2NDQKLS0tLSBhL2Jhc2UvdHRpbnRlcnAuYwotKysrIGIvYmFzZS90dGludGVycC5jCi1AQCAtMTc5NCw2ICsxNzk0LDEyIEBAIHN0YXRpYyBpbnQgbkluc3RyQ291bnQ9MDsKLSAKLSAgIHN0YXRpYyB2b2lkICBJbnNfSk1QUiggSU5TX0FSRyApCi0gICB7Ci0rICAgIGlmICggQk9VTkRTKENVUi5JUCArIGFyZ3NbMF0sIENVUi5jb2RlU2l6ZSApICkKLSsgICAgewotKyAgICAgIENVUi5lcnJvciA9IFRUX0Vycl9JbnZhbGlkX1JlZmVyZW5jZTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgICAgQ1VSLklQICAgICAgKz0gKEludCkoYXJnc1swXSk7Ci0gICAgIENVUi5zdGVwX2lucyA9IEZBTFNFOwotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk4MzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05ODM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzY1NjkwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk4MzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSBjZmRlOTRiZTFkNDI4NmJjNDc2MzNjNmU2ZWFmNGU2NTliZDc4MDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgNyBKdW4gMjAxNyAxNDo1NToxMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3OTg1OiBib3VuZHMgY2hlY2sgdGhlIGFycmF5IGFsbG9jYXRpb25zIG1ldGhvZHMKLQotVGhlIGNsdW1wIGFsbG9jYXRvciBoYXMgZm91ciBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB0aGF0IHVzZSAnbnVtYmVyIG9mIGVsZW1lbnRzJwotYW5kICdzaXplIG9mIGVsZW1lbnRzJyBwYXJhbWV0ZXJzIChyYXRoZXIgdGhhbiBhIHNpbXBsZSAnbnVtYmVyIG9mIGJ5dGVzJykuCi0KLVRob3NlIG5lZWQgc3BlY2lmaWMgYm91bmRzIGNoZWNraW5nLgotLS0tCi0gYmFzZS9nc2FsbG9jLmMgfCAgIDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05ODM1Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9iYXNlL2dzYWxsb2MuYyBiL2Jhc2UvZ3NhbGxvYy5jCi1pbmRleCA3NDFiYTAwLi4xMGMwNGRkIDEwMDY0NAotLS0tIGEvYmFzZS9nc2FsbG9jLmMKLSsrKyBiL2Jhc2UvZ3NhbGxvYy5jCi1AQCAtMTI0OCwxOSArMTI0OCwzMiBAQCBpX2FsbG9jX3N0cnVjdF9pbW1vdmFibGUoZ3NfbWVtb3J5X3QgKiBtZW0sIGdzX21lbW9yeV90eXBlX3B0cl90IHBzdHlwZSwKLSAgICAgYWxsb2NfdHJhY2UoInwrPC4iLCBpbWVtLCBjbmFtZSwgcHN0eXBlLCBzaXplLCBvYmopOwotICAgICByZXR1cm4gb2JqOwotIH0KLSsKLStzdGF0aWMgaW5saW5lIGJvb2wKLSthbGxvY19hcnJheV9jaGVja19zaXplKHVsb25nIG51bV9lbGVtZW50cywgdWxvbmcgZWx0X3NpemUsIHVsb25nICpsc2l6ZSkKLSt7Ci0rICAgIGludDY0X3QgcyA9IChpbnQ2NF90KW51bV9lbGVtZW50cyAqIGVsdF9zaXplOwotKyAgICBpZiAocyA+IG1heF91aW50KSB7Ci0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgIH0KLSsgICAgKmxzaXplID0gKHVsb25nKXM7Ci0rICAgIHJldHVybiB0cnVlOwotK30KLSsKLSBzdGF0aWMgYnl0ZSAqCi0gaV9hbGxvY19ieXRlX2FycmF5KGdzX21lbW9yeV90ICogbWVtLCB1aW50IG51bV9lbGVtZW50cywgdWludCBlbHRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X25hbWVfdCBjbmFtZSkKLSB7Ci0gICAgIGdzX3JlZl9tZW1vcnlfdCAqIGNvbnN0IGltZW0gPSAoZ3NfcmVmX21lbW9yeV90ICopbWVtOwotICAgICBvYmpfaGVhZGVyX3QgKm9iajsKLS0KLSsgICAgdWxvbmcgbHNpemU7Ci0gI2lmZGVmIE1FTUVOVE8KLSAgICAgaWYgKE1lbWVudG9fZmFpbFRoaXNFdmVudCgpKQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gI2VuZGlmCi0tCi0tICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLCAodWxvbmcpIG51bV9lbGVtZW50cyAqIGVsdF9zaXplLAotKyAgICBpZiAoYWxsb2NfYXJyYXlfY2hlY2tfc2l6ZShudW1fZWxlbWVudHMsIGVsdF9zaXplLCAmbHNpemUpID09IGZhbHNlKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLCBsc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICZzdF9ieXRlcywgQUxMT0NfRElSRUNULCBjbmFtZSk7Ci0gCi0gICAgIGlmX2RlYnVnNm0oJ0EnLCBtZW0sICJbYSVkOitiLl0lcyAtYnl0ZXMtKiglbHU9JXUqJXUpID0gMHglbHhcbiIsCi1AQCAtMTI3NSwxMyArMTI4OCwxNCBAQCBpX2FsbG9jX2J5dGVfYXJyYXlfaW1tb3ZhYmxlKGdzX21lbW9yeV90ICogbWVtLCB1aW50IG51bV9lbGVtZW50cywKLSB7Ci0gICAgIGdzX3JlZl9tZW1vcnlfdCAqIGNvbnN0IGltZW0gPSAoZ3NfcmVmX21lbW9yeV90ICopbWVtOwotICAgICBvYmpfaGVhZGVyX3QgKm9iajsKLS0KLSsgICAgdWxvbmcgbHNpemU7Ci0gI2lmZGVmIE1FTUVOVE8KLSAgICAgaWYgKE1lbWVudG9fZmFpbFRoaXNFdmVudCgpKQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gI2VuZGlmCi0tCi0tICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLCAodWxvbmcpIG51bV9lbGVtZW50cyAqIGVsdF9zaXplLAotKyAgICBpZiAoYWxsb2NfYXJyYXlfY2hlY2tfc2l6ZShudW1fZWxlbWVudHMsIGVsdF9zaXplLCAmbHNpemUpID09IGZhbHNlKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLCBsc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICZzdF9ieXRlcywgQUxMT0NfSU1NT1ZBQkxFIHwgQUxMT0NfRElSRUNULAotICAgICAgICAgICAgICAgICAgICAgY25hbWUpOwotIAotQEAgLTEyOTcsNyArMTMxMSw3IEBAIGlfYWxsb2Nfc3RydWN0X2FycmF5KGdzX21lbW9yeV90ICogbWVtLCB1aW50IG51bV9lbGVtZW50cywKLSB7Ci0gICAgIGdzX3JlZl9tZW1vcnlfdCAqIGNvbnN0IGltZW0gPSAoZ3NfcmVmX21lbW9yeV90ICopbWVtOwotICAgICBvYmpfaGVhZGVyX3QgKm9iajsKLS0KLSsgICAgdWxvbmcgbHNpemU7Ci0gI2lmZGVmIE1FTUVOVE8KLSAgICAgaWYgKE1lbWVudG9fZmFpbFRoaXNFdmVudCgpKQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTMxMSw5ICsxMzI1LDkgQEAgaV9hbGxvY19zdHJ1Y3RfYXJyYXkoZ3NfbWVtb3J5X3QgKiBtZW0sIHVpbnQgbnVtX2VsZW1lbnRzLAotICAgICAgICAgcmV0dXJuIE5VTEw7CQkvKiBmYWlsICovCi0gICAgIH0KLSAjZW5kaWYKLS0gICAgb2JqID0gYWxsb2Nfb2JqKGltZW0sCi0tICAgICAgICAgICAgICAgICAgICAodWxvbmcpIG51bV9lbGVtZW50cyAqIHBzdHlwZS0+c3NpemUsCi0tICAgICAgICAgICAgICAgICAgICBwc3R5cGUsIEFMTE9DX0RJUkVDVCwgY25hbWUpOwotKyAgICBpZiAoYWxsb2NfYXJyYXlfY2hlY2tfc2l6ZShudW1fZWxlbWVudHMsIHBzdHlwZS0+c3NpemUsICZsc2l6ZSkgPT0gZmFsc2UpCi0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgb2JqID0gYWxsb2Nfb2JqKGltZW0sIGxzaXplLCBwc3R5cGUsIEFMTE9DX0RJUkVDVCwgY25hbWUpOwotICAgICBpZl9kZWJ1ZzdtKCdBJywgbWVtLCAiW2ElZDorPC5dJXMgJXMqKCVsdT0ldSoldSkgPSAweCVseFxuIiwKLSAgICAgICAgICAgICAgICBhbGxvY190cmFjZV9zcGFjZShpbWVtKSwgY2xpZW50X25hbWVfc3RyaW5nKGNuYW1lKSwKLSAgICAgICAgICAgICAgICBzdHJ1Y3RfdHlwZV9uYW1lX3N0cmluZyhwc3R5cGUpLAotQEAgLTEzMjcsMTYgKzEzNDEsMTYgQEAgaV9hbGxvY19zdHJ1Y3RfYXJyYXlfaW1tb3ZhYmxlKGdzX21lbW9yeV90ICogbWVtLCB1aW50IG51bV9lbGVtZW50cywKLSB7Ci0gICAgIGdzX3JlZl9tZW1vcnlfdCAqIGNvbnN0IGltZW0gPSAoZ3NfcmVmX21lbW9yeV90ICopbWVtOwotICAgICBvYmpfaGVhZGVyX3QgKm9iajsKLS0KLSsgICAgdWxvbmcgbHNpemU7Ci0gI2lmZGVmIE1FTUVOVE8KLSAgICAgaWYgKE1lbWVudG9fZmFpbFRoaXNFdmVudCgpKQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gI2VuZGlmCi0gCi0gICAgIEFMTE9DX0NIRUNLX1NJWkUobWVtLHBzdHlwZSk7Ci0tICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLAotLSAgICAgICAgICAgICAgICAgICAgKHVsb25nKSBudW1fZWxlbWVudHMgKiBwc3R5cGUtPnNzaXplLAotLSAgICAgICAgICAgICAgICAgICAgcHN0eXBlLCBBTExPQ19JTU1PVkFCTEUgfCBBTExPQ19ESVJFQ1QsIGNuYW1lKTsKLSsgICAgaWYgKGFsbG9jX2FycmF5X2NoZWNrX3NpemUobnVtX2VsZW1lbnRzLCBwc3R5cGUtPnNzaXplLCAmbHNpemUpID09IGZhbHNlKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLCBsc2l6ZSwgcHN0eXBlLCBBTExPQ19JTU1PVkFCTEUgfCBBTExPQ19ESVJFQ1QsIGNuYW1lKTsKLSAgICAgaWZfZGVidWc3bSgnQScsIG1lbSwgIlthJWR8KzwuXSVzICVzKiglbHU9JXUqJXUpID0gMHglbHhcbiIsCi0gICAgICAgICAgICAgICAgYWxsb2NfdHJhY2Vfc3BhY2UoaW1lbSksIGNsaWVudF9uYW1lX3N0cmluZyhjbmFtZSksCi0gICAgICAgICAgICAgICAgc3RydWN0X3R5cGVfbmFtZV9zdHJpbmcocHN0eXBlKSwKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKaW5kZXggYzQ3OTRlNy4uZThjYjE2YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApAQCAtMSwxNCArMSwyNSBAQAorRnJvbSAwY2NiYWExMzQwOTNiZjZhZmM3OWYyZDIwZDA2MWJjYTVhODc1NGVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE2OjAyOjA1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTBdIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbgorCiBSZW1vdmUgaGFyZGNvZGUgcGF0aCByZWZlciB0byBob3N0IHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byA5LjIzCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KKyBkZXZpY2VzL2RldnMubWFrIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCiBkaWZmIC0tZ2l0IGEvZGV2aWNlcy9kZXZzLm1hayBiL2RldmljZXMvZGV2cy5tYWsKLWluZGV4IDMwNzBkMmUuLmRmNjYzZjAgMTAwNjQ0CitpbmRleCA4NDZhYTUwLi45NTcwMTgyIDEwMDY0NAogLS0tIGEvZGV2aWNlcy9kZXZzLm1hawogKysrIGIvZGV2aWNlcy9kZXZzLm1hawotQEAgLTU0Niw3ICs1NDYsNyBAQCAkKERFVk9CSilnZGV2eGFsdC4kKE9CSikgOiAkKERFVlNSQylnZGV2eGFsdC5jICQoR0RFVlgpICQobWF0aF9faCkgJChtZW1vcnlfX2gpXAorQEAgLTM5Myw3ICszOTMsNyBAQCAkKERFVk9CSilnZGV2eGFsdC4kKE9CSikgOiAkKERFVlNSQylnZGV2eGFsdC5jICQoR0RFVlgpICQobWF0aF9faCkgJChtZW1vcnlfX2gpXAogICMjIyBOT04gUE9SVEFCTEUsIE9OTFkgVU5JWCBXSVRIIEdDQyBTVVBQT1JUCiAgCiAgJChERVZPQkopWDExLnNvIDogJCh4MTFhbHRfKSAkKHgxMV8pICQoREVWU19NQUspICQoTUFLRURJUlMpCkBAIC0xNywzICsyOCw2IEBACiAgCiAgIyMjIyMjIC0tLS0tLS0tLS0tLS0tLSBNZW1vcnktYnVmZmVyZWQgcHJpbnRlciBkZXZpY2VzIC0tLS0tLS0tLS0tLS0tLSAjIyMjIyMKICAKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaAppbmRleCBkOTdkNGVjLi43ZDgwMDY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2Jhc2UtZ2VuaHQuYy1hZGQtYS1wcmVwcm9jZXNzb3ItZGVmaW5lLXRvLWFsbG93LWZvcGUucGF0Y2gKQEAgLTEsNCArMSw4IEBACi1iYXNlL2dlbmh0LmM6IGFkZCBhIHByZXByb2Nlc3NvciBkZWZpbmUgdG8gYWxsb3cgZm9wZW4gY2FsbGluZworRnJvbSA5Y2E2Zjc5NTQwOWI5ODhkMzhkZDk4YmMyYTZlY2I2OGE5MzkyMzEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBNYXIgMjAxOCAxNjozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIIDEwLzEwXSBiYXNlL2dlbmh0LmM6IGFkZCBhIHByZXByb2Nlc3NvciBkZWZpbmUgdG8gYWxsb3cgZm9wZW4KKyBjYWxsaW5nCiAKIFRoZSBjb21taXQgaW4gdXBzdHJlYW06CiBodHRwOi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS8/cD1naG9zdHBkbC5naXQ7YT1jb21taXRkaWZmO2g9NzczYzY5ZTQ2ZTcwYmRkNTQ4MjY3NjQzN2RhZmQyY2E4MzM5NzY0MwpAQCAtNywxNyArMTEsMTkgQEAKIHRoYXQgYW55IHVuaW50ZW50aWFsIGNhbGxzIGRpcmVjdGx5IHRvIGZvcGVuIHdpbGwgY2F1c2UgYW4gZXJyb3IuCiAKIE9ubHkgZXhjZXB0aW9ucyBhcmUgdGhvc2UgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUsIGFuZCBta3JvbWZzLmMuCi1UaGlzIHBhdGNoIGFkZCBhIHByZXByb2Nlc3NvciBkZWZpbmUgdG8gYWxsb3cgZm9wZW4gY2FsbGluZyBpbiBiYXNlL2dlbmh0LmMuCitUaGlzIHBhdGNoIGFkZCBhIHByZXByb2Nlc3NvciBkZWZpbmUgdG8gYWxsb3cgZm9wZW4gY2FsbGluZyBpbgorYmFzZS9nZW5odC5jLgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorUmViYXNlIHRvIDkuMjMKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGJhc2UvZ2VuaHQuYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2Jhc2UvZ2VuaHQuYyBiL2Jhc2UvZ2VuaHQuYwotaW5kZXggNGIwNDA4NS4uY2M4MmZmZiAxMDA2NDQKK2luZGV4IGU1OTdlNzIuLmU5NmJmYjUgMTAwNjQ0CiAtLS0gYS9iYXNlL2dlbmh0LmMKICsrKyBiL2Jhc2UvZ2VuaHQuYwogQEAgLTE2LDYgKzE2LDEwIEBACkBAIC0zMiw1ICszOCw1IEBACiAgI2luY2x1ZGUgInN0cmluZ18uaCIKICAjaW5jbHVkZSAiZ3NjZGVmcy5oIgogLS0gCi0xLjguMS4yCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2N1cHMtbm8tZ2NyeXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvY3Vwcy1uby1nY3J5cHQucGF0Y2gKaW5kZXggYTFjOTM2OC4uNGM5YmIyMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvY3Vwcy1uby1nY3J5cHQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvY3Vwcy1uby1nY3J5cHQucGF0Y2gKQEAgLTEsNiArMSwxMiBAQAotU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZC1kZXBlbmQgb24gbGliZ2NyeXB0LCBhcyBub3RoaW5nIGlzIHVzZWQgZnJvbSBpdAorRnJvbSA5MTI5ZWI3ZmE5ZGMxNjBkNjRhN2Q5ZGY5Mjc5YTNiMWRhZTRkNzkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMTY6MTY6MTggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xMF0gY3VwcyBubyBnY3J5cHQKIAotQmFja3BvcnRlZCBmcm9tIGh0dHA6Ly93d3cuY3Vwcy5vcmcvc3RyZmlsZXMucGhwLzMzMDgvY3Vwcy1uby1nY3J5cHQucGF0Y2gKK0Rvbid0IGJ1aWxkLWRlcGVuZCBvbiBsaWJnY3J5cHQsIGFzIG5vdGhpbmcgaXMgdXNlZCBmcm9tIGl0CisKK0JhY2twb3J0ZWQgZnJvbQoraHR0cDovL3d3dy5jdXBzLm9yZy9zdHJmaWxlcy5waHAvMzMwOC9jdXBzLW5vLWdjcnlwdC5wYXRjaAogCiBUaGlzIGFkZHJlc3NlcyB0aGUgY3J5dG8gZGVwZW5kZW5jeSBzZWVuIGR1cmluZyBidWlsZC4KIApAQCAtOCw3ICsxNCw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiAKLVJlYmFzZSB0aGUgcGF0Y2ggdG8gZ2hvc3RzY3JpcHQtOS4xNQorUmViYXNlIHRvIDkuMjMKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGN1cHMvbGlicy9jdXBzL2h0dHAtcHJpdmF0ZS5oIHwgMSAtCkBAIC0yNyw1ICszMyw1IEBACiAgIyAgICBpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogICMgICAgaW5jbHVkZSA8U2VjdXJpdHkvU2VjdXJpdHkuaD4KIC0tIAotMS45LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoCmluZGV4IGI0YzE0ZWEuLmZjMTQ0ZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKQEAgLTEsMjIgKzEsMjggQEAKLUltcG9ydCBwYXRjaCBmcm9tIHdpbmRyaXZlciBsaW51eCBmb3IgY3Jvc3MgY29tcGlsYXRpb24sIGFuZCBzcGxpdCBwYXRjaGVzCi1pbnRvIG9lIHdheSB1bmRlciBkaWZmZXJlbnQgZGlyZWN0b3JpZXMgc3VjaCBhcyBpNTg2LCBwb3dlcnBjIGV0YyBhY2NvcmRpbmcgCi10byBSaWNoYXJkJ3Mgb3Bpbmlvbi4KK0Zyb20gOTQ4NTA5NTRiODg0NDBkZjZjNDFkMmRkMTMzYzQyMmZmYzg0ZDlhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMTY6MTI6NDggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8xMF0gbm90IGdlbmVyYXRlIG9iamFyY2guaCBhdCBjb21waWxlIHRpbWUKKworSW1wb3J0IHBhdGNoIGZyb20gd2luZHJpdmVyIGxpbnV4IGZvciBjcm9zcyBjb21waWxhdGlvbiwgYW5kIHNwbGl0CitwYXRjaGVzIGludG8gb2Ugd2F5IHVuZGVyIGRpZmZlcmVudCBkaXJlY3RvcmllcyBzdWNoIGFzIGk1ODYsIHBvd2VycGMgZXRjCithY2NvcmRpbmcgdG8gUmljaGFyZCdzIG9waW5pb24uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLYW5nIEthaSA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgogCi0jIEF1dGhvcjogQ2hpIFh1IDxjaGkueHVAd2luZHJpdmVyLmNvbT4KLSMgRGF0ZTogRmViIDI2IDIwMTAKLSMgU3VtbWFyeTogR2VuZXJhdGUgYXJjaC5oIGZvciBwcGMzMgotIworUmViYXNlIHRvIDkuMjMKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhc2UvbGliLm1hayB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBnaG9zdHNjcmlwdC05LjIxL2Jhc2UvbGliLm1hawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdob3N0c2NyaXB0LTkuMjEub3JpZy9iYXNlL2xpYi5tYWsKLSsrKyBnaG9zdHNjcmlwdC05LjIxL2Jhc2UvbGliLm1hawotQEAgLTczLDggKzczLDggQEAgYXJjaF9oPSQoR0xHRU4pYXJjaC5oCitkaWZmIC0tZ2l0IGEvYmFzZS9saWIubWFrIGIvYmFzZS9saWIubWFrCitpbmRleCAwMDM2ZDFlLi4zMDI4NzdlIDEwMDY0NAorLS0tIGEvYmFzZS9saWIubWFrCisrKysgYi9iYXNlL2xpYi5tYWsKK0BAIC04Nyw4ICs4Nyw4IEBAIGFyY2hfaD0kKEdMR0VOKWFyY2guaAogIHN0ZHByZV9oPSQoR0xTUkMpc3RkcHJlLmgKICBzdGRpbnRfX2g9JChHTFNSQylzdGRpbnRfLmggJChzdGRfaCkKICAKQEAgLTI3LDMgKzMzLDYgQEAKICAKICAjIFBsYXRmb3JtIGludGVyZmFjZXMKICAKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKaW5kZXggM2VjMzk1Ni4uZmZhMjY5ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaApAQCAtMSwyNSArMSwyMyBAQAotRnJvbSAxNDkzN2Q5MjQ3MzMwMDY1MzU5Y2EwZmI2NDhjMjhkZmE1YzNiMjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgotRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxODoxNjo0MSArMDkwMAotU3ViamVjdDogW1BBVENIXSBnaG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UKK0Zyb20gODRiYjY5MmQ2YjA0N2MwOTI2NmRlMTU0ZjQwNGFmOTgxN2ZhMDRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBNYXIgMjAxOCAxNTo1OTowNSArMDgwMAorU3ViamVjdDogW1BBVENIIDAxLzEwXSBjb250cmliLm1hazogZml4IGZvciBwYXJhbGxlbCBidWlsZAogCi1Gcm9tIDc2N2JkZjhhNDEyYjBjY2UyYjczNDk5OGU5YjdlNTVhYmVhZjkzMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBUdWUsIDEzIERlYyAyMDE2IDE3OjU1OjU0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiBEYXRlOiBGcmksIDMwIEphbgotMjAxNSAwMDo0MDoyMiAtMDgwMCAgU3ViamVjdDogW1BBVENIXSBjb250cmliLm1hazogZml4IGZvciBwYXJhbGxlbCBidWlsZAotCi1TaWduZWQtb2ZmLWJ5OiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byA5LjIzCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBjb250cmliL2NvbnRyaWIubWFrIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29udHJpYi5tYWsgYi9jb250cmliL2NvbnRyaWIubWFrCi1pbmRleCA1NTQxNWIzLi4wYjZiNWFlIDEwMDY0NAoraW5kZXggZjVhMmZhNC4uNDk5OTc1MiAxMDA2NDQKIC0tLSBhL2NvbnRyaWIvY29udHJpYi5tYWsKICsrKyBiL2NvbnRyaWIvY29udHJpYi5tYWsKLUBAIC0xMDk5LDYgKzEwOTksNyBAQCAkKERFVk9CSilkdmlwcmxpYi4kKE9CSikgOiAkKEpBUFNSQylkdmlwcmxpYi5jICQoSkFQU1JDKWR2aXBybGliLmggXAorQEAgLTEwNjcsNiArMTA2Nyw3IEBAICQoREVWT0JKKWR2aXBybGliLiQoT0JKKSA6ICQoSkFQU1JDKWR2aXBybGliLmMgJChKQVBTUkMpZHZpcHJsaWIuaCBcCiAgCSQoREVWQ0MpICQoT18pJEAgJChDXykgJChKQVBTUkMpZHZpcHJsaWIuYwogIAogIGV4dHJhLWRtcHJ0LWluc3RhbGw6IGluc3RhbGwtbGliZGF0YQpAQCAtMjcsNyArMjUsNyBAQAogIAkkKElOU1RBTExfREFUQSkgJChKQVBTUkMpZG1wX2luaXQucHMgJChERVNURElSKSQoZ3NkYXRhZGlyKSQoRClsaWIgfHwgZXhpdCAxCiAgCSQoSU5TVEFMTF9EQVRBKSAkKEpBUFNSQylkbXBfc2l0ZS5wcyAkKERFU1RESVIpJChnc2RhdGFkaXIpJChEKWxpYiB8fCBleGl0IDEKICAJJChJTlNUQUxMX0RBVEEpICQoSkFQU1JDKWVzY3BfMjQuc3JjICQoREVTVERJUikkKGdzZGF0YWRpcikkKEQpbGliIHx8IGV4aXQgMQotQEAgLTEyNjcsNiArMTI2OCw3IEBAICQoREVWT0JKKWdkZXZhbHBzLiQoT0JKKSA6ICQoSkFQU1JDKWdkZXZhbHBzLmMgJChQREVWSCkgXAorQEAgLTEyMzUsNiArMTIzNiw3IEBAICQoREVWT0JKKWdkZXZhbHBzLiQoT0JKKSA6ICQoSkFQU1JDKWdkZXZhbHBzLmMgJChQREVWSCkgXAogICMjIyAtLS0tLS0tLS0tLS0tLS0tLSBBZGRpdGlvbmFsIC51cHAgZmlsZXMgLS0tLS0tLS0tLS0tLS0tLSAjIyMKICAKICBleHRyYS11cHAtaW5zdGFsbDogaW5zdGFsbC1saWJkYXRhCkBAIC0zNiw1ICszNCw1IEBACiAgCSAgICAkKElOU1RBTExfREFUQSkgJCRmICQoREVTVERJUikkKGdzZGF0YWRpcikkKEQpbGliIHx8IGV4aXQgMTsgXAogIAlkb25lCiAtLSAKLTIuNy40CisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNi1XZXJyb3ItcmV0dXJuLXR5cGUucGF0Y2gKaW5kZXggZDc4NjQ4Mi4uOGM0YTVkNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNi1XZXJyb3ItcmV0dXJuLXR5cGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNi1XZXJyb3ItcmV0dXJuLXR5cGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDVkNWM4M2M4OWJlMGNmZjI5ZGRlMjI2N2ZhMTY4ZTZmNzE0NmJlOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM0ODFiMDU1Y2Q0NjQ3MzRhM2MyZDgwNzE5ZWFkNGMxYzkyYTQwYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgNCBNYXkgMjAxNSAyMjozMTo0OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBiYXNlL2dlbmRldi5jOiBmaXggZm9yIC1XZXJyb3I9cmV0dXJuLXR5cGUKK1N1YmplY3Q6IFtQQVRDSCAwMi8xMF0gYmFzZS9nZW5kZXYuYzogZml4IGZvciAtV2Vycm9yPXJldHVybi10eXBlCiAKIEZpeGVkOgogYmFzZS9nZW5kZXYuYzo4MDoxOiBlcnJvcjogcmV0dXJuIHR5cGUgZGVmYXVsdHMgdG8gJ2ludCcgWy1XZXJyb3I9cmV0dXJuLXR5cGVdCkBAIC0xMCwxMSArMTAsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLSBiYXNlL2dlbmRldi5jIHwgICAgMSArCisgYmFzZS9nZW5kZXYuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvYmFzZS9nZW5kZXYuYyBiL2Jhc2UvZ2VuZGV2LmMKLWluZGV4IDY4YTc0NWYuLjgwNThiNWEgMTAwNjQ0CitpbmRleCA1OWQ1OTk5Li43NzY2YjA4IDEwMDY0NAogLS0tIGEvYmFzZS9nZW5kZXYuYwogKysrIGIvYmFzZS9nZW5kZXYuYwogQEAgLTc3LDYgKzc3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmluZGVudF9pdGVtID0gIiI7CkBAIC0yNiw1ICsyNiw1IEBACiAgewogICAgICBjb25maWcgY29uZjsKIC0tIAotMS43LjkuNQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCmluZGV4IGJmZjNlNjEuLmEzODJjN2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCkBAIC0xLDMxICsxLDM4IEBACi1naG9zdHNjcmlwdC1uYXRpdmU6Zml4IGRpc2FibGUtc3lzdGVtLWxpYnRpZmYKK0Zyb20gMDEyNGIxYzI5YjljZmU0NmQ3M2FlODJjZTAyM2RkN2M1YjA1NTc0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMTY6MzY6MTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xMF0gZ2hvc3RzY3JpcHQtbmF0aXZlOmZpeCBkaXNhYmxlLXN5c3RlbS1saWJ0aWZmCiAKIE1vZGlmeSBjb25maWd1cmUgdG8gYWRkIHRoZSBjaGVjayB0byBtYWtlIHN1cmUKIGdob3N0c2NyaXAgY291bGQgd29yayB3aGlsZSBzeXN0ZW0tbGlidGlmZiBpcwogZGlzYWJsZWQuCiAKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotVXBkYXRlZCB0byBhcHBseSB0byBnaG9zdHNjcmlwdCA5LjIxLgotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAKK1JlYmFzZSB0byBnaG9zdHNjcmlwdCA5LjI1LgogCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA4MGE2MGIxLi5mM2U5ZWZiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMjU5LDYgKzEyNTksNyBAQCBjYXNlICJ4JHdpdGhfc3lzdGVtX2xpYnRpZmYiIGluCi0gZXNhYworQEAgLTEzMTksNiArMTMxOSw3IEBAIEFDX1RSWV9DT01QSUxFKFtdLCBbcmV0dXJuIDA7XSwKKyBDRkxBR1M9JENHTEFHU19TVE9SRQogIAogIGlmIHRlc3QgeCIkU0hBUkVfTElCVElGRiIgPSB4IjAiIDsgdGhlbgogKyAgICBpZiB0ZXN0IC1lICRMSUJUSUZGRElSL2NvbmZpZ3VyZTsgdGhlbgogICAgICAgIGVjaG8gIlJ1bm5pbmcgbGlidGlmZiBjb25maWd1cmUgc2NyaXB0Li4uIgogICAgICAgIG9sZGRpcj1gcHdkYAogICAgICAgIGlmICEgdGVzdCAtZCAiJExJQlRJRkZDT05GRElSIiA7IHRoZW4KLUBAIC0xMjcyLDYgKzEyNzMsMTAgQEAgaWYgdGVzdCB4IiRTSEFSRV9MSUJUSUZGIiA9IHgiMCIgOyB0aGVuCi0gICAgICAgY2QgIiRvbGRkaXIiCitAQCAtMTMzNyw2ICsxMzM4LDEwIEBAIGlmIHRlc3QgeCIkU0hBUkVfTElCVElGRiIgPSB4IjAiIDsgdGhlbgorIAogICAgICAgIGVjaG8KICAgICAgICBlY2hvICJDb250aW51aW5nIHdpdGggR2hvc3RzY3JpcHQgY29uZmlndXJhdGlvbi4uLiIKICsgICAgZWxzZQpAQCAtMzUsMyArNDIsNiBAQAogIGZpCiAgCiAgQUNfU1VCU1QoU0hBUkVfTElCVElGRikKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKaW5kZXggZjJjNmQwNC4uYzc2OTE1ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaApAQCAtMSwzMiArMSw0MSBAQAotSnVzdCB1c2UgY29tbWFuZHMgcHJvdmlkZWQgYnkgZ2hvc3RzY3JpcHQtbmF0aXZlLCBwcmV2ZW50aW5nIHJlY29tcGlsZSB0aGVtIHdoZW4KLWNvbXBpbGUgZ2hvc3RzY3JpcHQuCi1XYXkgdG8gZW5hYmxlIGNyb3NzIGNvbXBpbGUuCitGcm9tIDIzOWQ2ODEzMDZhOGQ5N2VkMTA5NTQ3ODhkMzJiYTJmNGI1NWY3N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYW5nIEthaSA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMTY6MTA6MTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMF0gcHJldmVudCByZWNvbXBpbGluZworCitKdXN0IHVzZSBjb21tYW5kcyBwcm92aWRlZCBieSBnaG9zdHNjcmlwdC1uYXRpdmUsIHByZXZlbnRpbmcgcmVjb21waWxlCit0aGVtIHdoZW4gY29tcGlsZSBnaG9zdHNjcmlwdC4gV2F5IHRvIGVuYWJsZSBjcm9zcyBjb21waWxlLgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KIAotUmViYXNlIHRvIDkuMTkKK1JlYmFzZSB0byA5LjI1CiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+CistLS0KKyBiYXNlL3VuaXgtYXV4Lm1hayB8IDQ0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ0IGRlbGV0aW9ucygtKQogCi1SZWJhc2UgdG8gOS4yMQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCitkaWZmIC0tZ2l0IGEvYmFzZS91bml4LWF1eC5tYWsgYi9iYXNlL3VuaXgtYXV4Lm1haworaW5kZXggNWJmNzJlOS4uOWNiMzlkNyAxMDA2NDQKIC0tLSBhL2Jhc2UvdW5peC1hdXgubWFrCiArKysgYi9iYXNlL3VuaXgtYXV4Lm1hawotQEAgLTY2LDQ1ICs2Niw0NSBAQCAkKEdMT0JKKWdwX3N5c3YuJChPQkopOiAkKEdMU1JDKWdwX3N5c3YuCitAQCAtNTQsNTAgKzU0LDYgQEAgJChBVVgpZ3Bfc3RkaWEuJChPQkopOiAkKEdMU1JDKWdwX3N0ZGlhLgorICAgJChzdGRpb19faCkgJCh0aW1lX19oKSAkKHVuaXN0ZF9faCkgJChneF9oKSAkKGdwX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorIAkkKEdMQ0NBVVgpICQoQVVYT18pZ3Bfc3RkaWEuJChPQkopICQoQ18pICQoR0xTUkMpZ3Bfc3RkaWEuYwogIAotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXV4aWxpYXJ5IHByb2dyYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCi0gCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBdXhpbGlhcnkgcHJvZ3JhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKKy0KIC0kKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKIC0KLSsjJChFQ0hPR1NfWEUpOiAkKEdMU1JDKWVjaG9ncy5jICQoQUspICQoc3RkcHJlX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIE9uIHRoZSBSUy82MDAwIChhdCBsZWFzdCksIGNvbXBpbGluZyBnZW5hcmNoLmMgd2l0aCBnY2Mgd2l0aCAtTwotICMgcHJvZHVjZXMgYSBidWdneSBleGVjdXRhYmxlLgorLSQoUEFDS1BTX1hFKTogJChHTFNSQylwYWNrX3BzLmMgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKFBBQ0tQU19YRSkgJChHTFNSQylwYWNrX3BzLmMgJChBVVhFWFRSQUxJQlMpCistCistIyBPbiB0aGUgUlMvNjAwMCAoYXQgbGVhc3QpLCBjb21waWxpbmcgZ2VuYXJjaC5jIHdpdGggZ2NjIHdpdGggLU8KKy0jIHByb2R1Y2VzIGEgYnVnZ3kgZXhlY3V0YWJsZS4KIC0kKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQogLQpAQCAtMzksMjEgKzQ4LDkgQEAKIC0kKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCiAtCi0rIyQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5DT05GX1hFKTogJChHTFNSQylnZW5jb25mLmMgJChBSykgJChHRU5DT05GX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQ09ORl9YRSkgJChHTFNSQylnZW5jb25mLmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkRFVl9YRSk6ICQoR0xTUkMpZ2VuZGV2LmMgJChBSykgJChHRU5ERVZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5ERVZfWEUpICQoR0xTUkMpZ2VuZGV2LmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIFRvIGdldCBHUyB0byB1c2UgdGhlIHN5c3RlbSB6bGliLCB5b3UgcmVtb3ZlL2hpZGUgdGhlIGdzL3psaWIgZGlyZWN0b3J5Ci0gIyB3aGljaCBtZWFucyB0aGF0IHRoZSBta3JvbWZzIGJ1aWxkIGNhbid0IGZpbmQgdGhlIHpsaWIgc291cmNlIGl0IG5lZWRzLgotICMgU28gaXQncyBzcGxpdCBpbnRvIHR3byB0YXJnZXRzLCBvbmUgdXNpbmcgdGhlIHpsaWIgc291cmNlIGRpcmVjdGx5Li4uLi4KKy0jIFRvIGdldCBHUyB0byB1c2UgdGhlIHN5c3RlbSB6bGliLCB5b3UgcmVtb3ZlL2hpZGUgdGhlIGdzL3psaWIgZGlyZWN0b3J5CistIyB3aGljaCBtZWFucyB0aGF0IHRoZSBta3JvbWZzIGJ1aWxkIGNhbid0IGZpbmQgdGhlIHpsaWIgc291cmNlIGl0IG5lZWRzLgorLSMgU28gaXQncyBzcGxpdCBpbnRvIHR3byB0YXJnZXRzLCBvbmUgdXNpbmcgdGhlIHpsaWIgc291cmNlIGRpcmVjdGx5Li4uLi4KIC1NS1JPTUZTX09CSlNfMD0kKE1LUk9NRlNfWkxJQl9PQkpTKSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCiAtICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAogLSAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQpAQCAtNjEsMTQgKzU4LDcgQEAKIC0kKE1LUk9NRlNfWEUpXzA6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ0NBVVhfKSAkKEdFTk9QVEFVWCkgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKIC0KLSsjTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotKyMgJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0rIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQotKyMKLSsjJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoR0VOT1BUQVVYKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8wICQoTUtST01GU19PQkpTXzApICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIC4uLi4gYW5kIG9uZSB1c2luZyB0aGUgemxpYiBsaWJyYXJ5IGxpbmtlZCB2aWEgdGhlIGNvbW1hbmQgbGluZQorLSMgLi4uLiBhbmQgb25lIHVzaW5nIHRoZSB6bGliIGxpYnJhcnkgbGlua2VkIHZpYSB0aGUgY29tbWFuZCBsaW5lCiAtTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAogLSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCiAtICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXApAQCAtODAsMTcgKzcwLDkgQEAKIC0kKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCiAtCSQoQ1BfKSAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChNS1JPTUZTX1hFKQogLQotKyNNS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCi0rIyAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCi0rIyAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKLSsjICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCi0rIwotKyMkKE1LUk9NRlNfWEUpXzE6ICQoR0xTUkMpbWtyb21mcy5jICQoTUtST01GU19DT01NT05fREVQUykgJChNS1JPTUZTX09CSlNfMSkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKLSsjCiAgIyBRdWVyeSB0aGUgZW52aXJvbm1lbnQgdG8gY29uc3RydWN0IGdjb25maWdfLmguCiAgIyBUaGVzZSBhcmUgYWxsIGRlZmluZWQgY29uZGl0aW9uYWxseSAoZXhjZXB0IHRoZSBKYXNQRVIgb25lKSwgc28gdGhhdAogICMgdGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5ncyBmcm9tIHRoZSBjb25maWd1cmUgc2NyaXB0LgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoCmluZGV4IDVhN2VhYjEuLjNlNmQzZTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWtkaXItcC5wYXRjaApAQCAtMSw0ICsxLDggQEAKLWdob3N0c2NyaXB0OiBhbGxvdyBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkIG1vcmUgdGhhbiBvbmNlCitGcm9tIDJiMjMwMjZmOGUyYTM1MjQxN2ZiMWM0ZGE5NGJmNjliMTliZWYyNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE2OjA0OjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIGdob3N0c2NyaXB0OiBhbGxvdyBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkIG1vcmUgdGhhbgorIG9uY2UKIAogV2hlbiBkb2luZyBwYXJhbGxlbCBidWlsZHMsIHdlIG1pZ2h0IHRyeSB0byBjcmVhdGUgZGlyZWN0b3JpZXMKIG1vcmUgdGhhbiBvbmNlLiAgVGhpcyBzaG91bGQgbm90IGNhdXNlIGFuIGVycm9yLgpAQCAtNyw3ICsxMSwxNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CiAKK1JlYmFzZSB0byA5LjIzCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYXNlL3VuaXgtZW5kLm1hayB8IDE3ICsrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIAorZGlmZiAtLWdpdCBhL2Jhc2UvdW5peC1lbmQubWFrIGIvYmFzZS91bml4LWVuZC5tYWsKK2luZGV4IDljZTU5OWEuLmZlZmY1YTYgMTAwNjQ0CiAtLS0gYS9iYXNlL3VuaXgtZW5kLm1hawogKysrIGIvYmFzZS91bml4LWVuZC5tYWsKIEBAIC0xNywxNSArMTcsMTQgQEAKQEAgLTM0LDMgKzQ1LDYgQEAKICAKICAKICBnczogLmdzc3VidGFyZ2V0ICQoVU5JWF9FTkRfTUFLKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGVjN2UyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgotREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKLWEgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAotZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAotXAotRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAotb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCi1kb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKLQotREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTIxLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTcyMDcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNTk1MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03OTc1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTkyMTYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTYxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NjEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MzkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTcyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzI3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk4MzUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTE3MTQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7U1JDX1VSSV9CQVNFfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Jhc2UtZ2VuaHQuYy1hZGQtYS1wcmVwcm9jZXNzb3ItZGVmaW5lLXRvLWFsbG93LWZvcGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWYyMTMyODE3NjFkMjc1MGZjZjI3NDc2YzQwNGQxN2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDJiY2VhZGJjNGRkZGViNmYyZWVjOWM4YjE2MjNkOTQ1ZDM1NWNhMTFiOGI0ZGYwMzUzMzJiMjE3ZDU4Y2U4NSIKLQotIyBQdXQgc29tZXRoaW5nIGxpa2UKLSMKLSMgICBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1naG9zdHNjcmlwdCA9ICIgeDExIgotIwotIyBpbiBsb2NhbC5jb25mIHRvIGVuYWJsZSBidWlsZGluZyB3aXRoIFgxMS4gIEJlIGNhcmVmdWwuICBUaGUgb3JkZXIKLSMgb2YgdGhlIG92ZXJyaWRlcyBtYXR0ZXJzIQotIwotI1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sIFwKLSAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteCwgdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4dCBndGsrM1wKLSAgICAgICAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc3lzdGVtLWxpYnRpZmYgLS13aXRob3V0LWpiaWcyZGVjIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLXdpdGgtY3Vwcy1zZXJ2ZXJiaW49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1jdXBzLWRhdGFkaXI9JHtkYXRhZGlyfS9jdXBzIFwKLSAgICAgICAgICAgICAgICBDVVBTQ09ORklHPSIke1NUQUdJTkdfQklORElSX0NST1NTfS9jdXBzLWNvbmZpZyIgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzYXJjaG8zMiA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCi0KLSMgRXhwbGljaXR5IGRpc2FibGUgbGlidGlmZiwgZm9udGNvbmZpZywKLSMgZnJlZXR5cGUsIGN1cHMgZm9yIGdob3N0c2NyaXB0LW5hdGl2ZQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmY9bm8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamJpZzJkZWMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCi0KLSMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKLUNGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLUJVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wIG9iagotCW1rZGlyIC1wIHNvb2JqCi0JaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCi0JCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKLQlmaQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLQkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCi0JaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KLQkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagotCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbwotCQkJY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dob3N0c2NyaXB0LSR7UFZ9LyRpIG9iai9hdXgvJGkKLQkJZG9uZQotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L1Jlc291cmNlICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotICAgIGNwIC1yICR7U30vaWNjcHJvZmlsZXMgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi19Ci0KLWRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBta2RpciAtcCBvYmoKLSAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbwotICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KLSAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0OyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKLSAgICBkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGdob3N0c2NyaXB0IGRvZXMgbm90IHN1cHBvcnRzICJhcmMiCi1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFyYykuKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkY2E4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjI1LmJiCkBAIC0wLDAgKzEsMTMzIEBACitTVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAorYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCitkb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCitcCitGdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCitvbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKK2RvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcwZGMyYmFjNGQwY2U0NDQ4ZGE4NzNjZDg2YjEyM2ZjIgorCitERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5MjUvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9ta2Rpci1wLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWctNjk5Nzk1LWFkZC1vcGVyYW5kLWNoZWNraW5nLXRvLS5zZXRuYXRpdmVmb250bWFwLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1CdWctNjk5ODE2LUltcHJvdmUtaGlkaW5nLW9mLXNlY3VyaXR5LWNyaXRpY2FsLWN1c3RvLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1CdWctNjk5ODMyLWFkZC1jb250cm9sLW92ZXItaGlkaW5nLWVycm9yLWhhbmRsZXJzLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vMDAwNC1Gb3ItaGlkZGVuLW9wZXJhdG9ycy1wYXNzLWEtbmFtZS1vYmplY3QtdG8tZXJyb3ItaGFuLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vMDAwNS1CdWctNjk5OTM4LS5sb2FkZm9udGxvb3AtbXVzdC1iZS1hbi1vcGVyYXRvci5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDYtVW5kZWZpbmUtc29tZS1hZGRpdGlvbmFsLWludGVybmFsLW9wZXJhdG9ycy5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDctQnVnLTY5OTkyNy1kb24tdC1pbmNsdWRlLW9wZXJhdG9yLWFycmF5cy1pbi1leGVjc3RhYy5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDgtTWFrZS0uZm9yY2VwdXQtdW5hdmFpbGFibGUtZnJvbS0ucG9saWN5cHJvY3MtaGVscGVyLS5wYXRjaCBcCisiCisKK1NSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImVlYmQwZmFkYmZhOGU4MDAwOTQ0MjJjZTY1ZTk0ZDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhYWZhNjQ3NDBiMDkwYmZmNTBiMjIwYTZkZjNiZTk1YzQ2MDY5YjdlMzBmNGI0ZWZmZWQyODMxNmU1YjIzODkiCisKKyMgUHV0IHNvbWV0aGluZyBsaWtlCisjCisjICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKKyMKKyMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCisjIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKKyMKKyNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCisgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCisgICAgICAgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCisgICAgICAgICAgICAgICAgQ1VQU0NPTkZJRz0iJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vY3Vwcy1jb25maWciIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2hvMzIgPSAiIC0td2l0aC1sYXJnZV9jb2xvcl9pbmRleD0wIgorCisjIEV4cGxpY2l0eSBkaXNhYmxlIGxpYnRpZmYsIGZvbnRjb25maWcsCisjIGZyZWV0eXBlLCBjdXBzIGZvciBnaG9zdHNjcmlwdC1uYXRpdmUKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmPW5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWpiaWcyZGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgorCisjIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2CitDRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCitCVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCBvYmoKKwlta2RpciAtcCBzb29iagorCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgorCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCisJZmkKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAorCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCisJCW1rZGlyIC1wIG9iai9hdXggc29vYmoKKwkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbworICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCisgICAgZG9uZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBnaG9zdHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0cyAiYXJjIgorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhcmMpLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZi0xLjIyLjMvZ3JvZmYtbm90LXNlYXJjaC1mb250cy1vbi1idWlsZC1ob3N0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4yMi4zL2dyb2ZmLW5vdC1zZWFyY2gtZm9udHMtb24tYnVpbGQtaG9zdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjhmMzIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4yMi4zL2dyb2ZmLW5vdC1zZWFyY2gtZm9udHMtb24tYnVpbGQtaG9zdC5wYXRjaApAQCAtMCwwICsxLDIwIEBACitncm9mZiBzZWFyY2hzIGZvbnRzIHdoaWNoIGFyZSBwcm92aWRlZCBieSBnaG9zdHNjcmlwdCBvbiBidWlsZCBob3N0LgorSXQgY2F1c2VzIG5vbi1kZXRlcm1pbmlzbSBpc3N1ZS4gU28gbm90IHNlYXJjaCBmb250IGRpcnMgb24gaG9zdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjcm9zcyBidWlsZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9mb250L2RldnBkZi9Gb3VuZHJ5LmluIGIvZm9udC9kZXZwZGYvRm91bmRyeS5pbgoraW5kZXggYTZlOTY4Zi4uODA5NDY0MiAxMDA2NDQKKy0tLSBhL2ZvbnQvZGV2cGRmL0ZvdW5kcnkuaW4KKysrKyBiL2ZvbnQvZGV2cGRmL0ZvdW5kcnkuaW4KK0BAIC02NSw3ICs2NSw3IEBAIFpEfFl8fHx8RGluZ2JhdHMhZDA1MDAwMGwucGZiCisgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAKKyAjRm91bmRyeXxOYW1lfFNlYXJjaHBhdGgKKy1mb3VuZHJ5fFV8KGdzKTovdXNyL3NoYXJlL2ZvbnRzL3R5cGUxL2dzZm9udHMgOi9vcHQvbG9jYWwvc2hhcmUvZm9udHMvdXJ3LWZvbnRzICMgdGhlIFVSVyBmb250cyBkZWxpdmVyZWQgd2l0aCBnaG9zdHNjcmlwdCAobWF5IGJlIGRpZmZlcmVudCkKKytmb3VuZHJ5fFV8KGdzKSAjIHRoZSBVUlcgZm9udHMgZGVsaXZlcmVkIHdpdGggZ2hvc3RzY3JpcHQgKG1heSBiZSBkaWZmZXJlbnQpCisgI0RlZmluZSBGbGFncyBmb3IgYWZtdG9kaXQKKyAKKyByPS1pIDAgLW0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuMy5iYgppbmRleCA3NDcyZjU5Li5iYTkwY2FkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi4zLmJiCkBAIC0xMSw2ICsxMSw3IEBACiAJZmlsZTovL2dyb2ZmLTEuMjIuMi1jb3JyZWN0LW1hbi5sb2NhbC1pbnN0YWxsLXBhdGgucGF0Y2ggXAogCWZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKIAlmaWxlOi8vMDAwMS1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCisJZmlsZTovL2dyb2ZmLW5vdC1zZWFyY2gtZm9udHMtb24tYnVpbGQtaG9zdC5wYXRjaCBcCiAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjYzgyNWZhNjRiYzczMDZhODg1ZjJmYjIyNjhkM2VjNSIKQEAgLTIwLDcgKzIxLDkgQEAKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKIFJERVBFTkRTXyR7UE59ICs9ICJwZXJsIHNlZCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vZ3BpbnlpbiAke1BOfToke2JpbmRpcn0vZ3JvZmZlciAke1BOfToke2JpbmRpcn0vZ3JvZyIKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC14IgogUEFSQUxMRUxfTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS45L2dudWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvZ251bGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzY2RkNzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS45L2dudWxpYi5wYXRjaApAQCAtMCwwICsxLDE4OSBAQAorRnJvbSAxODMxNjI4YzA2MzBhZTk2YTQzNTg2YjJhMjVjYTUxY2JkYmEzZTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGFkZHJlc3NAaGlkZGVuPgorRGF0ZTogTW9uLCA1IE1hciAyMDE4IDEwOjU2OjI5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZmbHVzaDogYWRqdXN0IHRvIGdsaWJjIDIuMjggbGliaW8uaCByZW1vdmFsCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Byb2JsZW0gcmVwb3J0ZWQgYnkgRGFuaWVsIFAuIEJlcnJhbmfDqSBpbjoKK2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9yL2J1Zy1nbnVsaWIvMjAxOC0wMy9tc2cwMDAwMC5odG1sCisqIGxpYi9mYnVmbW9kZS5jIChmYnVmbW9kZSk6CisqIGxpYi9mZmx1c2guYyAoY2xlYXJfdW5nZXRjX2J1ZmZlcl9wcmVzZXJ2aW5nX3Bvc2l0aW9uKQorKGRpc2FibGVfc2Vla19vcHRpbWl6YXRpb24sIHJwbF9mZmx1c2gpOgorKiBsaWIvZnBlbmRpbmcuYyAoX19mcGVuZGluZyk6CisqIGxpYi9mcHVyZ2UuYyAoZnB1cmdlKToKKyogbGliL2ZyZWFkYWJsZS5jIChmcmVhZGFibGUpOgorKiBsaWIvZnJlYWRhaGVhZC5jIChmcmVhZGFoZWFkKToKKyogbGliL2ZyZWFkaW5nLmMgKGZyZWFkaW5nKToKKyogbGliL2ZyZWFkcHRyLmMgKGZyZWFkcHRyKToKKyogbGliL2ZyZWFkc2Vlay5jIChmcmVhZHB0cmluYyk6CisqIGxpYi9mc2Vla28uYyAoZnNlZWtvKToKKyogbGliL2ZzZXRlcnIuYyAoZnNldGVycik6CisqIGxpYi9md3JpdGFibGUuYyAoZndyaXRhYmxlKToKKyogbGliL2Z3cml0aW5nLmMgKGZ3cml0aW5nKToKK0NoZWNrIF9JT19FT0ZfU0VFTiBpbnN0ZWFkIG9mIF9JT19mdHJ5bG9ja2ZpbGUuCisqIGxpYi9zdGRpby1pbXBsLmggKF9JT19JTl9CQUNLVVApIFtfSU9fRU9GX1NFRU5dOgorRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCistLS0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgQ2hhbmdlTG9nICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCisgbGliL2ZidWZtb2RlLmMgICB8ICAyICstCisgbGliL2ZmbHVzaC5jICAgICB8ICA2ICsrKy0tLQorIGxpYi9mcGVuZGluZy5jICAgfCAgMiArLQorIGxpYi9mcHVyZ2UuYyAgICAgfCAgMiArLQorIGxpYi9mcmVhZGFibGUuYyAgfCAgMiArLQorIGxpYi9mcmVhZGFoZWFkLmMgfCAgMiArLQorIGxpYi9mcmVhZGluZy5jICAgfCAgMiArLQorIGxpYi9mcmVhZHB0ci5jICAgfCAgMiArLQorIGxpYi9mcmVhZHNlZWsuYyAgfCAgMiArLQorIGxpYi9mc2Vla28uYyAgICAgfCAgNCArKy0tCisgbGliL2ZzZXRlcnIuYyAgICB8ICAyICstCisgbGliL2Z3cml0YWJsZS5jICB8ICAyICstCisgbGliL2Z3cml0aW5nLmMgICB8ICAyICstCisgbGliL3N0ZGlvLWltcGwuaCB8ICA2ICsrKysrKworIDE1IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitJbmRleDogZ3ppcC0xLjkvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9DaGFuZ2VMb2cKKysrKyBnemlwLTEuOS9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMjYgQEAKKysyMDE4LTAzLTA1ICBQYXVsIEVnZ2VydCAgPGFkZHJlc3NAaGlkZGVuPgorKworKwlmZmx1c2g6IGFkanVzdCB0byBnbGliYyAyLjI4IGxpYmlvLmggcmVtb3ZhbAorKwlQcm9ibGVtIHJlcG9ydGVkIGJ5IERhbmllbCBQLiBCZXJyYW5nw6kgaW46CisrCWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9yL2J1Zy1nbnVsaWIvMjAxOC0wMy9tc2cwMDAwMC5odG1sCisrCSogbGliL2ZidWZtb2RlLmMgKGZidWZtb2RlKToKKysJKiBsaWIvZmZsdXNoLmMgKGNsZWFyX3VuZ2V0Y19idWZmZXJfcHJlc2VydmluZ19wb3NpdGlvbikKKysJKGRpc2FibGVfc2Vla19vcHRpbWl6YXRpb24sIHJwbF9mZmx1c2gpOgorKwkqIGxpYi9mcGVuZGluZy5jIChfX2ZwZW5kaW5nKToKKysJKiBsaWIvZnB1cmdlLmMgKGZwdXJnZSk6CisrCSogbGliL2ZyZWFkYWJsZS5jIChmcmVhZGFibGUpOgorKwkqIGxpYi9mcmVhZGFoZWFkLmMgKGZyZWFkYWhlYWQpOgorKwkqIGxpYi9mcmVhZGluZy5jIChmcmVhZGluZyk6CisrCSogbGliL2ZyZWFkcHRyLmMgKGZyZWFkcHRyKToKKysJKiBsaWIvZnJlYWRzZWVrLmMgKGZyZWFkcHRyaW5jKToKKysJKiBsaWIvZnNlZWtvLmMgKGZzZWVrbyk6CisrCSogbGliL2ZzZXRlcnIuYyAoZnNldGVycik6CisrCSogbGliL2Z3cml0YWJsZS5jIChmd3JpdGFibGUpOgorKwkqIGxpYi9md3JpdGluZy5jIChmd3JpdGluZyk6CisrCUNoZWNrIF9JT19FT0ZfU0VFTiBpbnN0ZWFkIG9mIF9JT19mdHJ5bG9ja2ZpbGUuCisrCSogbGliL3N0ZGlvLWltcGwuaCAoX0lPX0lOX0JBQ0tVUCkgW19JT19FT0ZfU0VFTl06CisrCURlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgorKworIDIwMTgtMDEtMDcgIEppbSBNZXllcmluZyAgPG1leWVyaW5nQGZiLmNvbT4KKyAKKyAJdmVyc2lvbiAxLjkKK0luZGV4OiBnemlwLTEuOS9saWIvZmZsdXNoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnemlwLTEuOS5vcmlnL2xpYi9mZmx1c2guYworKysrIGd6aXAtMS45L2xpYi9mZmx1c2guYworQEAgLTMzLDcgKzMzLDcgQEAKKyAjdW5kZWYgZmZsdXNoCisgCisgCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAKKyAvKiBDbGVhciB0aGUgc3RyZWFtJ3MgdW5nZXRjIGJ1ZmZlciwgcHJlc2VydmluZyB0aGUgdmFsdWUgb2YgZnRlbGxvIChmcCkuICAqLworIHN0YXRpYyB2b2lkCitAQCAtNzIsNyArNzIsNyBAQCBjbGVhcl91bmdldGNfYnVmZmVyIChGSUxFICpmcCkKKyAKKyAjZW5kaWYKKyAKKy0jaWYgISAoZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8pCisrI2lmICEgKGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8pCisgCisgIyBpZiAoZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18pICYmIGRlZmluZWQgX19TTlBUCisgLyogRnJlZUJTRCwgTmV0QlNELCBPcGVuQlNELCBEcmFnb25GbHksIE1hYyBPUyBYLCBDeWd3aW4sIE1pbml4IDMsIEFuZHJvaWQgKi8KK0BAIC0xNDgsNyArMTQ4LDcgQEAgcnBsX2ZmbHVzaCAoRklMRSAqc3RyZWFtKQorICAgaWYgKHN0cmVhbSA9PSBOVUxMIHx8ICEgZnJlYWRpbmcgKHN0cmVhbSkpCisgICAgIHJldHVybiBmZmx1c2ggKHN0cmVhbSk7CisgCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAKKyAgIGNsZWFyX3VuZ2V0Y19idWZmZXJfcHJlc2VydmluZ19wb3NpdGlvbiAoc3RyZWFtKTsKKyAKK0luZGV4OiBnemlwLTEuOS9saWIvZnB1cmdlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnemlwLTEuOS5vcmlnL2xpYi9mcHVyZ2UuYworKysrIGd6aXAtMS45L2xpYi9mcHVyZ2UuYworQEAgLTYyLDcgKzYyLDcgQEAgZnB1cmdlIChGSUxFICpmcCkKKyAgIC8qIE1vc3Qgc3lzdGVtcyBwcm92aWRlIEZJTEUgYXMgYSBzdHJ1Y3QgYW5kIHRoZSBuZWNlc3NhcnkgYml0bWFzayBpbgorICAgICAgPHN0ZGlvLmg+LCBiZWNhdXNlIHRoZXkgbmVlZCBpdCBmb3IgaW1wbGVtZW50aW5nIGdldGMoKSBhbmQgcHV0YygpIGFzCisgICAgICBmYXN0IG1hY3Jvcy4gICovCistIyBpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyMgaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworICAgZnAtPl9JT19yZWFkX2VuZCA9IGZwLT5fSU9fcmVhZF9wdHI7CisgICBmcC0+X0lPX3dyaXRlX3B0ciA9IGZwLT5fSU9fd3JpdGVfYmFzZTsKKyAgIC8qIEF2b2lkIG1lbW9yeSBsZWFrIHdoZW4gdGhlcmUgaXMgYW4gYWN0aXZlIHVuZ2V0YyBidWZmZXIuICAqLworSW5kZXg6IGd6aXAtMS45L2xpYi9mcmVhZGluZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9saWIvZnJlYWRpbmcuYworKysrIGd6aXAtMS45L2xpYi9mcmVhZGluZy5jCitAQCAtMzEsNyArMzEsNyBAQCBmcmVhZGluZyAoRklMRSAqZnApCisgICAvKiBNb3N0IHN5c3RlbXMgcHJvdmlkZSBGSUxFIGFzIGEgc3RydWN0IGFuZCB0aGUgbmVjZXNzYXJ5IGJpdG1hc2sgaW4KKyAgICAgIDxzdGRpby5oPiwgYmVjYXVzZSB0aGV5IG5lZWQgaXQgZm9yIGltcGxlbWVudGluZyBnZXRjKCkgYW5kIHB1dGMoKSBhcworICAgICAgZmFzdCBtYWNyb3MuICAqLworLSMgaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjIGlmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAgIHJldHVybiAoKGZwLT5fZmxhZ3MgJiBfSU9fTk9fV1JJVEVTKSAhPSAwCisgICAgICAgICAgIHx8ICgoZnAtPl9mbGFncyAmIChfSU9fTk9fUkVBRFMgfCBfSU9fQ1VSUkVOVExZX1BVVFRJTkcpKSA9PSAwCisgICAgICAgICAgICAgICAmJiBmcC0+X0lPX3JlYWRfYmFzZSAhPSBOVUxMKSk7CitJbmRleDogZ3ppcC0xLjkvbGliL2ZzZWVrby5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9saWIvZnNlZWtvLmMKKysrKyBnemlwLTEuOS9saWIvZnNlZWtvLmMKK0BAIC00Nyw3ICs0Nyw3IEBAIGZzZWVrbyAoRklMRSAqZnAsIG9mZl90IG9mZnNldCwgaW50IHdoZW4KKyAjZW5kaWYKKyAKKyAgIC8qIFRoZXNlIHRlc3RzIGFyZSBiYXNlZCBvbiBmcHVyZ2UuYy4gICovCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAgIGlmIChmcC0+X0lPX3JlYWRfZW5kID09IGZwLT5fSU9fcmVhZF9wdHIKKyAgICAgICAmJiBmcC0+X0lPX3dyaXRlX3B0ciA9PSBmcC0+X0lPX3dyaXRlX2Jhc2UKKyAgICAgICAmJiBmcC0+X0lPX3NhdmVfYmFzZSA9PSBOVUxMKQorQEAgLTEyMyw3ICsxMjMsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCisgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0KKyAKKy0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworICAgICAgIGZwLT5fZmxhZ3MgJj0gfl9JT19FT0ZfU0VFTjsKKyAgICAgICBmcC0+X29mZnNldCA9IHBvczsKKyAjZWxpZiBkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXworSW5kZXg6IGd6aXAtMS45L2xpYi9mc2V0ZXJyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnemlwLTEuOS5vcmlnL2xpYi9mc2V0ZXJyLmMKKysrKyBnemlwLTEuOS9saWIvZnNldGVyci5jCitAQCAtMjksNyArMjksNyBAQCBmc2V0ZXJyIChGSUxFICpmcCkKKyAgIC8qIE1vc3Qgc3lzdGVtcyBwcm92aWRlIEZJTEUgYXMgYSBzdHJ1Y3QgYW5kIHRoZSBuZWNlc3NhcnkgYml0bWFzayBpbgorICAgICAgPHN0ZGlvLmg+LCBiZWNhdXNlIHRoZXkgbmVlZCBpdCBmb3IgaW1wbGVtZW50aW5nIGdldGMoKSBhbmQgcHV0YygpIGFzCisgICAgICBmYXN0IG1hY3Jvcy4gICovCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAgIGZwLT5fZmxhZ3MgfD0gX0lPX0VSUl9TRUVOOworICNlbGlmIGRlZmluZWQgX19zZmVycm9yIHx8IGRlZmluZWQgX19EcmFnb25GbHlfXyB8fCBkZWZpbmVkIF9fQU5EUk9JRF9fCisgICAvKiBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIERyYWdvbkZseSwgTWFjIE9TIFgsIEN5Z3dpbiwgTWluaXggMywgQW5kcm9pZCAqLworSW5kZXg6IGd6aXAtMS45L2xpYi9zdGRpby1pbXBsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnemlwLTEuOS5vcmlnL2xpYi9zdGRpby1pbXBsLmgKKysrKyBnemlwLTEuOS9saWIvc3RkaW8taW1wbC5oCitAQCAtMTgsNiArMTgsMTIgQEAKKyAgICB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGRpbyBleHRlbnNpb24gQVBJLCBleGNlcHQgdGhhdCBzb21lIGZpZWxkcworICAgIGhhdmUgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucywgb3IgdGhlaXIgYWNjZXNzIHJlcXVpcmVzIHNvbWUgY2FzdHMuICAqLworIAorKy8qIEdsaWJjIDIuMjggbWFkZSBfSU9fSU5fQkFDS1VQIHByaXZhdGUuICBGb3Igbm93LCB3b3JrIGFyb3VuZCB0aGlzCisrICAgcHJvYmxlbSBieSBkZWZpbmluZyBpdCBvdXJzZWx2ZXMuICBGSVhNRTogRG8gbm90IHJlbHkgb24gZ2xpYmMKKysgICBpbnRlcm5hbHMuICAqLworKyNpZiAhZGVmaW5lZCBfSU9fSU5fQkFDS1VQICYmIGRlZmluZWQgX0lPX0VPRl9TRUVOCisrIyBkZWZpbmUgX0lPX0lOX0JBQ0tVUCAweDEwMAorKyNlbmRpZgorIAorIC8qIEJTRCBzdGRpbyBkZXJpdmVkIGltcGxlbWVudGF0aW9ucy4gICovCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOS5iYgppbmRleCBhOGVlYmExLi4xOWY2NTg2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIKQEAgLTMsNyArMyw5IEBACiBMSUNFTlNFID0gIkdQTHYzKyIKIAogU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2d6aXAvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZ251bGliLnBhdGNoIFwKKyAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly93cm9uZy1wYXRoLWZpeC5wYXRjaCIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzNlYzVjNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdHkgZm9yIHZpZXdpbmcvbWFuaXB1bGF0aW5nIElERSBkaXNrIGRyaXZlL2RyaXZlciBwYXJhbWV0ZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9oZHBhcm0vIgotREVTQ1JJUFRJT04gPSAiaGRwYXJtIGlzIGEgTGludXggc2hlbGwgdXRpbGl0eSBmb3Igdmlld2luZyBcCi1hbmQgbWFuaXB1bGF0aW5nIHZhcmlvdXMgSURFIGRyaXZlIGFuZCBkcml2ZXIgcGFyYW1ldGVycy4iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIiCi1MSUNFTlNFXyR7UE59ID0gIkJTRCIKLUxJQ0VOU0VfJHtQTn0tZGJnID0gIkJTRCIKLUxJQ0VOU0Vfd2lwZXIgPSAiR1BMdjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT00OTVkMDNlNTBkYzZjODlkNmEzMDEwN2FiMGRmNWIwMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1hODJkN2JhM2FkZTllOGVjOTAyNzQ5ZGI5OGM1OTJmMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci9HUEx2Mi50eHQ7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL3dpcGVyLnNoO2JlZ2lubGluZT03O2VuZGxpbmU9MzE7bWQ1PWI3YmM2NDJhZGRjMTUyZWEzMDc1MDViZjFhMjk2ZjA5IgotCi0KLVBBQ0tBR0VTID0rICJ3aXBlciIKLQotRklMRVNfd2lwZXIgPSAiJHtiaW5kaXJ9L3dpcGVyLnNoIgotCi1SREVQRU5EU193aXBlciA9ICJiYXNoIGdhd2sgY29yZXV0aWxzIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlNTRiNTJlMGM4Y2I3OTM4OWQ0ZDQ3ZWFjYmE0MTFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2NzNmNTkxZGY2OTE2YzZhMWZhZWMwNzA2OWE3ZWIxY2I4ZWUzMDc2MTVhNjE1ZDgwODE5MmZiMGMwMjY1ZTUiCi0KLUVYVFJBX09FTUFLRSA9ICdTVFJJUD0iZWNobyIgTERGTEFHUz0iJHtMREZMQUdTfSInCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJoZHBhcm0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGRwYXJtXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGRwYXJtIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9ICR7RH0vJHttYW5kaXJ9L21hbjggJHtEfS8ke2JpbmRpcn0KLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdzYmluZGlyPSR7YmFzZV9zYmluZGlyfScgaW5zdGFsbAotCWNwICR7U30vd2lwZXIvd2lwZXIuc2ggJHtEfS8ke2JpbmRpcn0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Ni5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzkzMmFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjU2LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCitERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKK2FuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKK0xJQ0VOU0VfJHtQTn0gPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgorTElDRU5TRV93aXBlciA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCisKKworUEFDS0FHRVMgPSsgIndpcGVyIgorCitGSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCisKK1JERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBjb3JldXRpbHMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vd2lwZXIuc2gtZml4LXN0YXQtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzkwMDYwOGUzMjgzNGY2NWQyNjU0ZmRiNjk2ZTcxYTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZmOWVkNjk1ZjEwMTczOTZlZWM0MTAxZjk5MGYxMTRiN2IwZTBhMDRjNWFhNjM2OWMwMzk0MDUzZDE2ZTRkYSIKKworRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCisJY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgppbmRleCAzOGE4M2QyLi5lMDA4MjRmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpAQCAtNywxNyArNyw2IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2M1wKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwdGFibGVzL2lwdGFibGVzLmM7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjU7bWQ1PWM1Y2ZmZDA5OTc0NTU4Y2YyN2QwZjc2M2RmMmExMmRjIgogCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXgtdGFibGVzIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXAtdGFibGVzIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLW5hdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWRlZnJhZy1pcHY0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrLWlwdjQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1uYXQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSIKLUZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0veHRhYmxlcy8gJHtkYXRhZGlyfS94dGFibGVzIgotCiBTUkNfVVJJID0gImh0dHA6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2ZpbGVzL2lwdGFibGVzLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCkBAIC0yOCw4ICsxNyw4IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfSU5DRElSfSIKKwogUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKQEAgLTQ1LDMgKzM0LDMxIEBACiAJIyBLZWVwIGF4X2NoZWNrX2xpbmtlcl9mbGFncy5tNCB3aGljaCBiZWxvbmdzIHRvIGF1dG9jb25mLWFyY2hpdmUuCiAJcm0gLWYgbGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQKIH0KKworUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tbW9kdWxlLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBtb2R1bGVzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgJyR7bGliZGlyfS94dGFibGVzJywgJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKKyAgICBpZiBtb2R1bGVzOgorICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3h0YWJsZXMiCisKK0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tbW9kdWxlLXh0LXN0YW5kYXJkIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiIFwKKyAgICAke1BOfS1tb2R1bGVzIFwKKyAgICBrZXJuZWwtbW9kdWxlLXgtdGFibGVzIFwKKyAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCisgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLWZpbHRlciBcCisgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLW5hdCBcCisgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCisgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2sgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrLWlwdjQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKKyAgICBrZXJuZWwtbW9kdWxlLWlwdC1tYXNxdWVyYWRlIFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4Y2ZlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLW9uLU1VU0wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1Gcm9tIGM2YzU5NjZkOWZhZTI3YmMyZjBhMzRhYjU5Yjk5OTU1NTExMWJkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmljIEJlbHNpdG8gPGxsdWl4aGlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBPY3QgMjAxNyAyMzoxNzowMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gTVVTTAotCi1BZGQgbWlzc2luZyBBSV9JRE4gYW5kIE5JX0lETiBkZWNsYXJhdGlvbnMuCi0KLUJ1ZzogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNTAzOTE0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBhcnBpbmcuYyAgICAgIHwgIDcgKysrKysrKwotIHBpbmcuaCAgICAgICAgfCAxMSArKysrKysrKysrKwotIHRyYWNlcGF0aC5jICAgfCAgOCArKysrKysrKwotIHRyYWNlcm91dGU2LmMgfCAgNCArKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9hcnBpbmcuYyBiL2FycGluZy5jCi1pbmRleCAxYTNmNDBiLi41MzFkMjlkIDEwMDY0NAotLS0tIGEvYXJwaW5nLmMKLSsrKyBiL2FycGluZy5jCi1AQCAtNDUsNiArNDUsMTMgQEAgc3RydWN0IHN5c2ZzX2RldmF0dHJfdmFsdWVzOwotICNpZmRlZiBVU0VfSUROCi0gI2luY2x1ZGUgPGlkbmEuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rI2lmbmRlZiBBSV9JRE4KLSsjZGVmaW5lIEFJX0lETiAweDAwNDAKLSsjZW5kaWYKLSsjaWZuZGVmIEFJX0NBTk9OSUROCi0rI2RlZmluZSBBSV9DQU5PTklETiAweDAwODAKLSsjZW5kaWYKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSAiU05BUFNIT1QuaCIKLWRpZmYgLS1naXQgYS9waW5nLmggYi9waW5nLmgKLWluZGV4IDc0OWYzZmYuLjIyNzMxNWYgMTAwNjQ0Ci0tLS0gYS9waW5nLmgKLSsrKyBiL3BpbmcuaAotQEAgLTM4LDYgKzM4LDE3IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxpZG5hLmg+Ci0gI2luY2x1ZGUgPHN0cmluZ3ByZXAuaD4KLSsKLSsjaWZuZGVmIEFJX0lETgotKyNkZWZpbmUgQUlfSUROIDB4MDA0MAotKyNlbmRpZgotKyNpZm5kZWYgQUlfQ0FOT05JRE4KLSsjZGVmaW5lIEFJX0NBTk9OSUROIDB4MDA4MAotKyNlbmRpZgotKyNpZm5kZWYgTklfSUROCi0rI2RlZmluZSBOSV9JRE4gMzIKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIGdldGFkZHJpbmZvX2ZsYWdzIChBSV9DQU5PTk5BTUUgfCBBSV9JRE4gfCBBSV9DQU5PTklETikKLSAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzIE5JX0lETgotICNlbHNlCi1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYwotaW5kZXggNzRhODI5ZC4uZGNlYzViOSAxMDA2NDQKLS0tLSBhL3RyYWNlcGF0aC5jCi0rKysgYi90cmFjZXBhdGguYwotQEAgLTMwLDYgKzMwLDE0IEBACi0gI2lmZGVmIFVTRV9JRE4KLSAjaW5jbHVkZSA8aWRuYS5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsjaWZuZGVmIEFJX0lETgotKyNkZWZpbmUgQUlfSUROIDB4MDA0MAotKyNlbmRpZgotKyNpZm5kZWYgTklfSUROCi0rI2RlZmluZSBOSV9JRE4gMzIKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgotICNlbHNlCi0gI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCi1kaWZmIC0tZ2l0IGEvdHJhY2Vyb3V0ZTYuYyBiL3RyYWNlcm91dGU2LmMKLWluZGV4IDQ4ZmM1YzUuLjhkMWVlYmYgMTAwNjQ0Ci0tLS0gYS90cmFjZXJvdXRlNi5jCi0rKysgYi90cmFjZXJvdXRlNi5jCi1AQCAtMjUxLDYgKzI1MSwxMCBAQAotICNpbmNsdWRlIDxpZG5hLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotKyNpZm5kZWYgTklfSUROCi0rI2RlZmluZSBOSV9JRE4gMzIKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgotICNlbHNlCi0gI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvYWlfY2Fub25pZG4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvYWlfY2Fub25pZG4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q5MTI2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy9haV9jYW5vbmlkbi5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIDcxNGUyYjQ1OGMxNTFjNWJkZmU5MzY0NzQ0NWNkMDBkZDhlMzZmZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjEgSnVsIDIwMTggMTc6NDY6MTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gcGluZzogRml4IEFJX0NBTk9OSUROIHVzYWdlIG9uIHNvbWUgc3lzdGVtcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitDb21taXQgOTlmNjdkYiB1c2VkIEFJX0NBTk9OSUROIGluIGEgd2F5LCB3aGljaCBicm9rZSBjb21waWxhdGlvbiBvbgorc3lzdGVtcyB3aGVyZSBBSV9DQU5PTklETiBpcyBub3QgZGVmaW5lZCBpbiBuZXRkYi5oIChlLmcuIGdsaWJjIDwgMi4zLjQsCithbHRlcm5hdGl2ZSBsaWJjcyB0aGF0IGRvbid0IHN1cHBvcnQgSUROOiBlLmcuIGN1cnJlbnQgbXVzbCAxLjEuMTkgYW5kCit1Q2xpYmMtbmcgMS4wLjMwKSB3aGVuIG5vdCB1c2luZyB0aGUgc3lzdGVtIGxpYmlkbjIuCisKK0ZpeGVzOiA5OWY2N2RiIHBpbmc6IEZpeCBwaW5nIG5hbWUgZW5jb2RlZCB1c2luZyBBQ0Ugb24gQyBsb2NhbGUKKworUmVwb3J0ZWQtYnk6IE5pY2hvbGFzIEZpc2gKK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHBldHIudm9yZWxAZ21haWwuY29tPgorCistLS0KKyBwaW5nLmMgfCAyICstCisgcGluZy5oIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGluZy5jIGIvcGluZy5jCitpbmRleCA3MzM0NzdmLi5iMjQxODE1IDEwMDY0NAorLS0tIGEvcGluZy5jCisrKysgYi9waW5nLmMKK0BAIC0yMDcsOSArMjA3LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgI2lmZGVmIFVTRV9JRE4KKyAJc2V0bG9jYWxlKExDX0FMTCwgIiIpOworLSNlbmRpZgorIAlpZiAoIXN0cmNtcChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSwgIkMiKSkKKyAJCWhpbnRzLmFpX2ZsYWdzICY9IH4gQUlfQ0FOT05JRE47CisrI2VuZGlmCisgCisgCS8qIFN1cHBvcnQgYmVpbmcgY2FsbGVkIHVzaW5nIGBwaW5nNGAgb3IgYHBpbmc2YCBzeW1saW5rcyAqLworIAlpZiAoYXJndlswXVtzdHJsZW4oYXJndlswXSktMV0gPT0gJzQnKQorZGlmZiAtLWdpdCBhL3BpbmcuaCBiL3BpbmcuaAoraW5kZXggM2UwOTY4NS4uOGEwYzRlZiAxMDA2NDQKKy0tLSBhL3BpbmcuaAorKysrIGIvcGluZy5oCitAQCAtMjgsNyArMjgsNiBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2ljbXA2Lmg+CisgI2luY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgorICNpbmNsdWRlIDxyZXNvbHYuaD4KKy0jaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgI2lmZGVmIENBUEFCSUxJVElFUworICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KK0BAIC0zNiw2ICszNSw3IEBACisgI2VuZGlmCisgCisgI2lmZGVmIFVTRV9JRE4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGlkbjIuaD4KKyAjZGVmaW5lIGdldGFkZHJpbmZvX2ZsYWdzIChBSV9DQU5PTk5BTUUgfCBBSV9JRE4gfCBBSV9DQU5PTklETikKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzIE5JX0lETgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2luc3RhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvaW5zdGFsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmZlZmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2luc3RhbGwucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA1YzhjM2IwNGQ3MzMwNDY3OTM0MGY4OTM2MzZlODc2OTE5OTIwNTNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3NAYnVydG9uaW5pLmNvbT4KK0RhdGU6IE1vbiwgMjMgSnVsIDIwMTggMTQ6MjE6MDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGluc3RhbGwKKworQWRkIGEgc2ltcGxlIGluc3RhbGwgcnVsZSBzbyB0aGF0IHdlIGFsd2F5cyBpbnN0YWxsIHRoZSBiaW5hcmllcyB0aGF0IHdlcmUgYnVpbHQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tCisgTWFrZWZpbGUgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAxN2ZjNWM5Li5lMGMyNzg0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMjMxLDMgKzIzMSw3IEBAIHJwbToKKyAJQCQoUlBNQlVJTEQpIC10YSAtLWRlZmluZSAnY3VycmVudCB5ZXMnICQoUlBNVE1QKS9pcHV0aWxzLnRhci5iejIKKyAJQHJtIC1mICQoUlBNVE1QKS9pcHV0aWxzLnRhci5iejIKKyAKKytpbnN0YWxsOgorKwlmb3IgdCBpbiAkKFRBUkdFVFMpOyBkbyBcCisrCQlpbnN0YWxsIC1EICQkdCAkKERFU1RESVIpJChiaW5kaXIpLyQkdDsgXAorKwlkb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEyNTczOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJVdGlsaXRpZXMgZm9yIHRoZSBJUCBwcm90b2NvbCwgaW5jbHVkaW5nIHRyYWNlcm91dGU2LCBcCi10cmFjZXBhdGgsIHRyYWNlcGF0aDYsIHBpbmcsIHBpbmc2IGFuZCBhcnBpbmcuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGluZy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzU7bWQ1PWY5Y2ViMjAxNzMzZTlhNmNmOGYwMDc2NmRkMjc4ZDgyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyYWNlcGF0aC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTA7bWQ1PTBlY2VhMmJmNjBiZmYyZjNkODQwMDk2ZDg3NjQ3ZjNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2FycGluZy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTE7bWQ1PWZlODQzMDFiNWMyNjU1Yzk1MGY4YjkyYTA1N2ZhZmE2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RmdHBkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zMjttZDU9Mjg4MzRiZjhhOTFhNWI4YTkyNzU1ZGJlZTcwOWVmOTYgIgotCi1ERVBFTkRTID0gImdudXRscyBsaWJjYXAgbGliZ2NyeXB0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLU1VU0wucGF0Y2ggXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gImJmZmMwZTk1N2I5OGQ2MjZhYjRjZWEyMThjODkyNTEyMDE0MjU0NDIiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPnNcZCspIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIlVTRV9JRE49eWVzLFVTRV9JRE49bm8sbGliaWRuIgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICdDQz0ke0NDfSAtRF9HTlVfU09VUkNFJyBWUEFUSD0iJHtTVEFHSU5HX0xJQkRJUn06JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2Jhc2VfbGliZGlyfSIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBhbGwKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCSMgU1VJRCByb290IHByb2dyYW1zCi0JaW5zdGFsbCAtbSA0NTU1IHBpbmcgJHtEfSR7YmFzZV9iaW5kaXJ9L3BpbmcKLQlpbnN0YWxsIC1tIDQ1NTUgdHJhY2Vyb3V0ZTYgJHtEfSR7YmFzZV9iaW5kaXJ9LwotCWluc3RhbGwgLW0gNDU1NSBjbG9ja2RpZmYgJHtEfSR7YmFzZV9iaW5kaXJ9LwotCSMgT3RoZXIgcHJvZ3JhbWdzCi0JZm9yIGkgaW4gYXJwaW5nIHRyYWNlcGF0aDsgZG8KLQkgIGluc3RhbGwgLW0gMDc1NSAkaSAke0R9JHtiYXNlX2JpbmRpcn0vCi0JZG9uZQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKLQotRklMRVNfJHtQTn0JPSAiIgotRklMRVNfJHtQTn0tcGluZyA9ICIke2Jhc2VfYmluZGlyfS9waW5nLiR7QlBOfSIKLUZJTEVTXyR7UE59LWFycGluZyA9ICIke2Jhc2VfYmluZGlyfS9hcnBpbmciCi1GSUxFU18ke1BOfS10cmFjZXBhdGggPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoIgotRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCi1GSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE4MDYyOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxODA2MjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmNDRiZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxODA2MjkuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJOZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMiCitERVNDUklQVElPTiA9ICJVdGlsaXRpZXMgZm9yIHRoZSBJUCBwcm90b2NvbCwgaW5jbHVkaW5nIHRyYWNlcm91dGU2LCBcCit0cmFjZXBhdGgsIHRyYWNlcGF0aDYsIHBpbmcsIHBpbmc2IGFuZCBhcnBpbmcuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Yjc5MmUzOGFiZGM1OWY3NjZhMzE1MzkwOGYyM2U3NjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5CU0QzO21kNT0wZjAwZDk5MjM5ZDkyMmZmZDEzY2FiZWY4M2IzMzQ0NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImdudXRscyBsaWJjYXAgbGliZ2NyeXB0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIFwKKyAgICAgICAgICAgZmlsZTovL2FpX2Nhbm9uaWRuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGwucGF0Y2giCitTUkNSRVYgPSAiZjZhYWM4ZGJlM2Y4YzQ1YzUzNDI0ODU0YTMzMTJiZGQ4Y2RkNThkMyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+c1xkKykiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIlVTRV9JRE49eWVzLFVTRV9JRE49bm8sbGliaWRuMiIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAnQ0M9JHtDQ30gLURfR05VX1NPVVJDRScgVlBBVEg9IiR7U1RBR0lOR19MSUJESVJ9OiR7U1RBR0lOR19ESVJfSE9TVH0vJHtiYXNlX2xpYmRpcn0iICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gYWxsCit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gYmluZGlyPSR7YmFzZV9iaW5kaXJ9IGluc3RhbGwKKwlmb3IgYiBpbiBwaW5nIHRyYWNlcm91dGU2IGNsb2NrZGlmZjsgZG8KKwkJY2htb2QgdStzICR7RH0ke2Jhc2VfYmluZGlyfS8kYgorCWRvbmUKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCisKK1NQTElUUEtHUyA9ICIke1BOfS1waW5nICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmICR7UE59LXRmdHBkICR7UE59LXJhcnBkICR7UE59LXJkaXNjIgorUEFDS0FHRVMgKz0gIiR7U1BMSVRQS0dTfSIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1NQTElUUEtHU30iCisKK0ZJTEVTXyR7UE59CT0gIiIKK0ZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCitGSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgorRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKK0ZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKK0ZJTEVTXyR7UE59LXRmdHBkID0gIiR7YmFzZV9iaW5kaXJ9L3RmdHBkIgorRklMRVNfJHtQTn0tcmFycGQgPSAiJHtiYXNlX2JpbmRpcn0vcmFycGQiCitGSUxFU18ke1BOfS1yZGlzYyA9ICIke2Jhc2VfYmluZGlyfS9yZGlzYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNTI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODZmNzU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgotREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAotYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAotcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcwotIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKLSMKLSMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgotIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCi0jIERhdGU6IDEyLzE5LzExCi0jCi0jIEhpIEVsaXphYmV0aCwKLSMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KLSMgVGhhbmtzLAotIwotIyAtLU1hcmsKLSMKLQotTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMjAxOGI1M2ExZjczMTlhYjU0MzQ5YmFmODBlNmFhOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmE0MmNkNGMzODE3NGI3YmQwZDQyNmQ4YTM5ZGYyYmU2YmNjMWVjMTg5NDZhNDY0MjcxMzI5MGY2YmY5YTBiIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCi19Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNTMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUzMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDdiMTIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUzMC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgorREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAorYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAorcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcworIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKKyMKKyMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgorIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCisjIERhdGU6IDEyLzE5LzExCisjCisjIEhpIEVsaXphYmV0aCwKKyMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KKyMgVGhhbmtzLAorIworIyAtLU1hcmsKKyMKKworTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKK0RFUEVORFMgPSAibmN1cnNlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YTM5YmNjZjQyMGM5NDZiMGZkN2ZmYzY0OTYxMzE1YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MDNmOTFhYjBhZjQ4NDZmMzRmMDQ0NGFiNzFjNGIyODYxMjNmMDA0NGE0OTY0ZjFhZTc4MTQ4NmM2MTdmMmUyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvLzAwX2FyY2hlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vMDBfYXJjaGVzLnBhdGNoCmluZGV4IDlkNjQ0N2QuLmJlYzE4OWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vMDBfYXJjaGVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vMDBfYXJjaGVzLnBhdGNoCkBAIC0xLDExICsxLDI3IEBACitGcm9tIGNlYmExZTAzZTViNTdjZGFlMGIzYjJkMmM5YWZlYmMwODVjOTg2ZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMjcgQXVnIDIwMTAgMTA6MTU6MzEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliYWlvOiBhZGQgbmV3IHJlY2lwZQorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCiBmcm9tIG9wZW5lbWJlZGRlZCwgYWRkZWQgYnkgUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+CiAKLUluZGV4OiBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1tNjhrLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLQorIHNyYy9zeXNjYWxsLW02OGsuaCAgIHwgIDc4ICsrKysrKysrKysrKysrKysrKworIHNyYy9zeXNjYWxsLW1pcHMuaCAgIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9zeXNjYWxsLXBhcmlzYy5oIHwgMTQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9zeXNjYWxsLmggICAgICAgIHwgICA2ICsrCisgNCBmaWxlcyBjaGFuZ2VkLCA0NTMgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvc3lzY2FsbC1tNjhrLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3N5c2NhbGwtbWlwcy5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9zeXNjYWxsLXBhcmlzYy5oCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2FsbC1tNjhrLmggYi9zcmMvc3lzY2FsbC1tNjhrLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mNDQwNDEyCiAtLS0gL2Rldi9udWxsCi0rKysgbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtbTY4ay5oCisrKysgYi9zcmMvc3lzY2FsbC1tNjhrLmgKIEBAIC0wLDAgKzEsNzggQEAKICsjZGVmaW5lIF9fTlJfaW9fc2V0dXAJCTI0MQogKyNkZWZpbmUgX19OUl9pb19kZXN0cm95CQkyNDIKQEAgLTg1LDI3ICsxMDEsMTEgQEAKICtyZXR1cm4gKHR5cGUpIF9fcmVzOyBcCiArfQogKwotSW5kZXg6IGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhaW8tMC4zLjExMC5vcmlnL3NyYy9zeXNjYWxsLmgKLSsrKyBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC5oCi1AQCAtMjgsNiArMjgsMTIgQEAKLSAjaW5jbHVkZSAic3lzY2FsbC1zcGFyYy5oIgotICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gI2luY2x1ZGUgInN5c2NhbGwtYXJtNjQuaCIKLSsjZWxpZiBkZWZpbmVkKF9fbTY4a19fKQotKyNpbmNsdWRlICJzeXNjYWxsLW02OGsuaCIKLSsjZWxpZiBkZWZpbmVkKF9faHBwYV9fKQotKyNpbmNsdWRlICJzeXNjYWxsLXBhcmlzYy5oIgotKyNlbGlmIGRlZmluZWQoX19taXBzX18pCi0rI2luY2x1ZGUgInN5c2NhbGwtbWlwcy5oIgotICNlbHNlCi0gI3dhcm5pbmcgInVzaW5nIGdlbmVyaWMgc3lzY2FsbCBtZXRob2QiCi0gI2luY2x1ZGUgInN5c2NhbGwtZ2VuZXJpYy5oIgotSW5kZXg6IGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLW1pcHMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3NyYy9zeXNjYWxsLW1pcHMuaCBiL3NyYy9zeXNjYWxsLW1pcHMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQxNDI0OTkKIC0tLSAvZGV2L251bGwKLSsrKyBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1taXBzLmgKKysrKyBiL3NyYy9zeXNjYWxsLW1pcHMuaAogQEAgLTAsMCArMSwyMjMgQEAKICsvKgogKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCkBAIC0zMzAsMTAgKzMzMCwxMSBAQAogKwogKyNlbmRpZiAvKiAoX01JUFNfU0lNID09IF9NSVBTX1NJTV9OQUJJMzIpIHx8IChfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTY0KSAqLwogKwotSW5kZXg6IGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLXBhcmlzYy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0IGEvc3JjL3N5c2NhbGwtcGFyaXNjLmggYi9zcmMvc3lzY2FsbC1wYXJpc2MuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmZmNjE3NDYKIC0tLSAvZGV2L251bGwKLSsrKyBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1wYXJpc2MuaAorKysrIGIvc3JjL3N5c2NhbGwtcGFyaXNjLmgKIEBAIC0wLDAgKzEsMTQ2IEBACiArLyoKICsgKiBMaW51eCBzeXN0ZW0gY2FsbCBudW1iZXJzLgpAQCAtNDgxLDEyNyArNDgyLDIwIEBACiArICAgIHJldHVybiBLX0lOTElORV9TWVNDQUxMKHNuYW1lLCA1LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsJXAogK30KICsKLUluZGV4OiBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1hcm0uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFpby0wLjMuMTEwLm9yaWcvc3JjL3N5c2NhbGwtYXJtLmgKLSsrKyBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1hcm0uaAotQEAgLTExNCwzICsxMTQsMTE5IEBAIHR5cGUgZm5hbWUodHlwZTEgYXJnMSwgdHlwZTIgYXJnMiwgdHlwZTMKLSAgIHJldHVybiAodHlwZSkgX19yZXNfcjA7CQkJCQkJXAotIH0KLSAKLSsvKgotKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vdW5pc3RkLmgKLSsgKgotKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNSBSdXNzZWxsIEtpbmcKLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSsgKgotKyAqIFBsZWFzZSBmb3J3YXJkIF9hbGxfIGNoYW5nZXMgdG8gdGhpcyBmaWxlIHRvIHJta0Bhcm0ubGludXgub3JnLnVrLAotKyAqIG5vIG1hdHRlciB3aGF0IHRoZSBjaGFuZ2UgaXMuICBUaGFua3MhCi0rICovCi0rCi0rI2RlZmluZSBfX05SX09BQklfU1lTQ0FMTF9CQVNFCTB4OTAwMDAwCi0rCi0rI2lmIGRlZmluZWQoX190aHVtYl9fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykKLSsjZGVmaW5lIF9fTlJfU1lTQ0FMTF9CQVNFCTAKLSsjZWxzZQotKyNkZWZpbmUgX19OUl9TWVNDQUxMX0JBU0UJX19OUl9PQUJJX1NZU0NBTExfQkFTRQotKyNlbmRpZgotKwotKyNkZWZpbmUgX19OUl9pb19zZXR1cAkJCShfX05SX1NZU0NBTExfQkFTRSsyNDMpCi0rI2RlZmluZSBfX05SX2lvX2Rlc3Ryb3kJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQ0KQotKyNkZWZpbmUgX19OUl9pb19nZXRldmVudHMJCShfX05SX1NZU0NBTExfQkFTRSsyNDUpCi0rI2RlZmluZSBfX05SX2lvX3N1Ym1pdAkJCShfX05SX1NZU0NBTExfQkFTRSsyNDYpCi0rI2RlZmluZSBfX05SX2lvX2NhbmNlbAkJCShfX05SX1NZU0NBTExfQkFTRSsyNDcpCi0rCi0rI2RlZmluZSBfX3N5czIoeCkgI3gKLSsjZGVmaW5lIF9fc3lzMSh4KSBfX3N5czIoeCkKLSsKLSsjaWYgZGVmaW5lZChfX3RodW1iX18pIHx8IGRlZmluZWQoX19BUk1fRUFCSV9fKQotKyNkZWZpbmUgX19TWVNfUkVHKG5hbWUpIHJlZ2lzdGVyIGxvbmcgX19zeXNyZWcgX19hc21fXygicjciKSA9IF9fTlJfIyNuYW1lOwotKyNkZWZpbmUgX19TWVNfUkVHX0xJU1QocmVncy4uLikgInIiIChfX3N5c3JlZykgLCAjI3JlZ3MKLSsjZGVmaW5lIF9fc3lzY2FsbChuYW1lKSAic3dpXHQwIgotKyNlbHNlCi0rI2RlZmluZSBfX1NZU19SRUcobmFtZSkKLSsjZGVmaW5lIF9fU1lTX1JFR19MSVNUKHJlZ3MuLi4pIHJlZ3MKLSsjZGVmaW5lIF9fc3lzY2FsbChuYW1lKSAic3dpXHQiIF9fc3lzMShfX05SXyMjbmFtZSkgIiIKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIGlvX3N5c2NhbGwxKHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSkJCQlcCi0rdHlwZSBmbmFtZSh0eXBlMSBhcmcxKSB7CQkJCQkJXAotKyAgX19TWVNfUkVHKHNuYW1lKQkJCQkJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKLSsgIF9fc3lzY2FsbChzbmFtZSkJCQkJCQkJXAotKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKLSsJOiBfX1NZU19SRUdfTElTVCggIjAiIChfX3IwKSApCQkJCQlcCi0rCTogIm1lbW9yeSIgKTsJCQkJCQkJXAotKyAgcmV0dXJuICh0eXBlKSBfX3Jlc19yMDsJCQkJCQlcCi0rfQotKwotKyNkZWZpbmUgaW9fc3lzY2FsbDIodHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIpCQlcCi0rdHlwZSBmbmFtZSh0eXBlMSBhcmcxLHR5cGUyIGFyZzIpIHsJCQkJCVwKLSsgIF9fU1lTX1JFRyhzbmFtZSkJCQkJCQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMSBfX2FzbV9fKCJyMSIpID0gKGxvbmcpYXJnMjsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCi0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAotKyAgX19zeXNjYWxsKHNuYW1lKQkJCQkJCQlcCi0rCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAotKwk6IF9fU1lTX1JFR19MSVNUKCAiMCIgKF9fcjApLCAiciIgKF9fcjEpICkJCQlcCi0rCTogIm1lbW9yeSIgKTsJCQkJCQkJXAotKyAgcmV0dXJuICh0eXBlKSBfX3Jlc19yMDsJCQkJCQlcCi0rfQotKwotKyNkZWZpbmUgaW9fc3lzY2FsbDModHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIsdHlwZTMsYXJnMykJXAotK3R5cGUgZm5hbWUodHlwZTEgYXJnMSx0eXBlMiBhcmcyLHR5cGUzIGFyZzMpIHsJCQkJXAotKyAgX19TWVNfUkVHKHNuYW1lKQkJCQkJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IxIF9fYXNtX18oInIxIikgPSAobG9uZylhcmcyOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMiBfX2FzbV9fKCJyMiIpID0gKGxvbmcpYXJnMzsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCi0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAotKyAgX19zeXNjYWxsKHNuYW1lKQkJCQkJCQlcCi0rCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAotKwk6IF9fU1lTX1JFR19MSVNUKCAiMCIgKF9fcjApLCAiciIgKF9fcjEpLCAiciIgKF9fcjIpICkJCVwKLSsJOiAibWVtb3J5IiApOwkJCQkJCQlcCi0rICByZXR1cm4gKHR5cGUpIF9fcmVzX3IwOwkJCQkJCVwKLSt9Ci0rCi0rI2RlZmluZSBpb19zeXNjYWxsNCh0eXBlLGZuYW1lLHNuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMix0eXBlMyxhcmczLHR5cGU0LGFyZzQpXAotK3R5cGUgZm5hbWUodHlwZTEgYXJnMSwgdHlwZTIgYXJnMiwgdHlwZTMgYXJnMywgdHlwZTQgYXJnNCkgewkJXAotKyAgX19TWVNfUkVHKHNuYW1lKQkJCQkJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjAgX19hc21fXygicjAiKSA9IChsb25nKWFyZzE7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IxIF9fYXNtX18oInIxIikgPSAobG9uZylhcmcyOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMiBfX2FzbV9fKCJyMiIpID0gKGxvbmcpYXJnMzsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjMgX19hc21fXygicjMiKSA9IChsb25nKWFyZzQ7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKLSsgIF9fc3lzY2FsbChzbmFtZSkJCQkJCQkJXAotKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKLSsJOiBfX1NZU19SRUdfTElTVCggIjAiIChfX3IwKSwgInIiIChfX3IxKSwgInIiIChfX3IyKSwgInIiIChfX3IzKSApIFwKLSsJOiAibWVtb3J5IiApOwkJCQkJCQlcCi0rICByZXR1cm4gKHR5cGUpIF9fcmVzX3IwOwkJCQkJCVwKLSt9Ci0rCi0rI2RlZmluZSBpb19zeXNjYWxsNSh0eXBlLGZuYW1lLHNuYW1lLHR5cGUxLGFyZzEsdHlwZTIsYXJnMix0eXBlMyxhcmczLHR5cGU0LGFyZzQsdHlwZTUsYXJnNSkJXAotK3R5cGUgZm5hbWUodHlwZTEgYXJnMSwgdHlwZTIgYXJnMiwgdHlwZTMgYXJnMywgdHlwZTQgYXJnNCwgdHlwZTUgYXJnNSkge1wKLSsgIF9fU1lTX1JFRyhzbmFtZSkJCQkJCQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMSBfX2FzbV9fKCJyMSIpID0gKGxvbmcpYXJnMjsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjIgX19hc21fXygicjIiKSA9IChsb25nKWFyZzM7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IzIF9fYXNtX18oInIzIikgPSAobG9uZylhcmc0OwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yNCBfX2FzbV9fKCJyNCIpID0gKGxvbmcpYXJnNTsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcmVzX3IwIF9fYXNtX18oInIwIik7CQkJCQlcCi0rICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCQkJCQkJXAotKyAgX19zeXNjYWxsKHNuYW1lKQkJCQkJCQlcCi0rCTogIj1yIiAoX19yZXNfcjApCQkJCQkJXAotKwk6IF9fU1lTX1JFR19MSVNUKCAiMCIgKF9fcjApLCAiciIgKF9fcjEpLCAiciIgKF9fcjIpLAkJXAotKwkJCSAgInIiIChfX3IzKSwgInIiIChfX3I0KSApCQkJXAotKwk6ICJtZW1vcnkiICk7CQkJCQkJCVwKLSsgIHJldHVybiAodHlwZSkgX19yZXNfcjA7CQkJCQkJXAotK30KLSsKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2FsbC5oIGIvc3JjL3N5c2NhbGwuaAoraW5kZXggOWI5ZTljMS4uOWVjZDNiNCAxMDA2NDQKKy0tLSBhL3NyYy9zeXNjYWxsLmgKKysrKyBiL3NyYy9zeXNjYWxsLmgKK0BAIC0yOSw2ICsyOSwxMiBAQAorICNpbmNsdWRlICJzeXNjYWxsLXNwYXJjLmgiCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Jpc2N2KQorICNpbmNsdWRlICJzeXNjYWxsLWdlbmVyaWMuaCIKKysjZWxpZiBkZWZpbmVkKF9fbTY4a19fKQorKyNpbmNsdWRlICJzeXNjYWxsLW02OGsuaCIKKysjZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorKyNpbmNsdWRlICJzeXNjYWxsLXBhcmlzYy5oIgorKyNlbGlmIGRlZmluZWQoX19taXBzX18pCisrI2luY2x1ZGUgInN5c2NhbGwtbWlwcy5oIgorICNlbHNlCisgI3dhcm5pbmcgInVzaW5nIHN5c3RlbSBjYWxsIG51bWJlcnMgZnJvbSBzeXMvc3lzY2FsbC5oIgorICNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9nZW5lcmljLWFyY2gtZGVjdGVjdGlvbi1mb3ItcGFkZGluZy1kZWZpbmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9nZW5lcmljLWFyY2gtZGVjdGVjdGlvbi1mb3ItcGFkZGluZy1kZWZpbmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmE3ZTU1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZ2VuZXJpYy1hcmNoLWRlY3RlY3Rpb24tZm9yLXBhZGRpbmctZGVmaW5lcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb206IE5hdGhhbiBSb3NzaSA8bmF0aGFuLnJvc3NpQHhpbGlueC5jb20+Ci1EYXRlOiBUdWUsIDI3IEphbiAyMDE1IDE0OjU5OjM1ICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEdlbmVyaWMgYXJjaCBkZWN0ZWN0aW9uIGZvciBwYWRkaW5nIGRlZmluZXMKLQotV2hlbiBhdmFpbGFibGUgdXNlIHRoZSBHTlUgQyBkZWZpbmVzIGZvciBlbmRpYW4gYW5kIGJpdHdpZHRoIHRvCi1kZXRlcm1pbmUgdGhlIHBhZGRpbmcgcmVxdWlyZWQuIFRoaXMgcmVkdWNlcyB0aGUgbmVlZCB0byBkZWZpbmUgdGhlCi1wYWRkaW5nIHNlbGVjdGlvbiBmb3IgZXZlcnkgYXJjaGl0ZWN0dXJlLgotCi1TaWduZWQtb2ZmLWJ5OiBOYXRoYW4gUm9zc2kgPG5hdGhhbi5yb3NzaUB4aWxpbnguY29tPgotU2lnbmVkLW9mZi1ieTogSmVmZiBNb3llciA8am1veWVyQHJlZGhhdC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSBzcmMvbGliYWlvLmggfCAxNiArKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliYWlvLmggYi9zcmMvbGliYWlvLmgKLWluZGV4IDEyMjMxNDYuLjRhNGUwZjUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliYWlvLmgKLSsrKyBiL3NyYy9saWJhaW8uaAotQEAgLTUyLDE0ICs1MiwxOCBAQCB0eXBlZGVmIGVudW0gaW9faW9jYl9jbWQgewotIC8qIGxpdHRsZSBlbmRpYW4sIDMyIGJpdHMgKi8KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgKGRlZmluZWQoX19hcm1fXykgJiYgIWRlZmluZWQoX19BUk1FQl9fKSkgfHwgXAotICAgICBkZWZpbmVkKF9fc2hfXykgfHwgZGVmaW5lZChfX2JmaW5fXykgfHwgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBcCi0tICAgIGRlZmluZWQoX19jcmlzX18pCi0rICAgIGRlZmluZWQoX19jcmlzX18pIHx8IFwKLSsgICAgKGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19CWVRFX09SREVSX18pICYmIFwKLSsgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gNCkKLSAjZGVmaW5lIFBBRERFRCh4LCB5KQl4OyB1bnNpZ25lZCB5Ci0gI2RlZmluZSBQQURERURwdHIoeCwgeSkJeDsgdW5zaWduZWQgeQotICNkZWZpbmUgUEFEREVEdWwoeCwgeSkJdW5zaWduZWQgbG9uZyB4OyB1bnNpZ25lZCB5Ci0gCi0gLyogbGl0dGxlIGVuZGlhbiwgNjQgYml0cyAqLwotICNlbGlmIGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IFwKLS0gICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKSkKLSsgICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKSkgfHwgXAotKyAgICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCi0rICAgICAgICAgIF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fICYmIF9fU0laRU9GX0xPTkdfXyA9PSA4KQotICNkZWZpbmUgUEFEREVEKHgsIHkpCXgsIHkKLSAjZGVmaW5lIFBBRERFRHB0cih4LCB5KQl4Ci0gI2RlZmluZSBQQURERUR1bCh4LCB5KQl1bnNpZ25lZCBsb25nIHgKLUBAIC02Nyw3ICs3MSw5IEBAIHR5cGVkZWYgZW51bSBpb19pb2NiX2NtZCB7Ci0gLyogYmlnIGVuZGlhbiwgNjQgYml0cyAqLwotICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3MzOTB4X18pIHx8IFwKLSAgICAgICAoZGVmaW5lZChfX3NwYXJjX18pICYmIGRlZmluZWQoX19hcmNoNjRfXykpIHx8IFwKLS0gICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFQl9fKSkKLSsgICAgICAoZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFQl9fKSkgfHwgXAotKyAgICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCi0rICAgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gOCkKLSAjZGVmaW5lIFBBRERFRCh4LCB5KQl1bnNpZ25lZCB5OyB4Ci0gI2RlZmluZSBQQURERURwdHIoeCx5KQl4Ci0gI2RlZmluZSBQQURERUR1bCh4LCB5KQl1bnNpZ25lZCBsb25nIHgKLUBAIC03Niw3ICs4Miw5IEBAIHR5cGVkZWYgZW51bSBpb19pb2NiX2NtZCB7Ci0gI2VsaWYgZGVmaW5lZChfX1BQQ19fKSB8fCBkZWZpbmVkKF9fczM5MF9fKSB8fCBcCi0gICAgICAgKGRlZmluZWQoX19hcm1fXykgJiYgZGVmaW5lZChfX0FSTUVCX18pKSB8fCBcCi0gICAgICAgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX202OGtfXykgfHwgXAotLSAgICAgIGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19mcnZfXykgfHwgZGVmaW5lZChfX2F2cjMyX18pCi0rICAgICAgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX2Zydl9fKSB8fCBkZWZpbmVkKF9fYXZyMzJfXykgfHwgXAotKyAgICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCi0rICAgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gNCkKLSAjZGVmaW5lIFBBRERFRCh4LCB5KQl1bnNpZ25lZCB5OyB4Ci0gI2RlZmluZSBQQURERURwdHIoeCwgeSkJdW5zaWduZWQgeTsgeAotICNkZWZpbmUgUEFEREVEdWwoeCwgeSkJdW5zaWduZWQgeTsgdW5zaWduZWQgbG9uZyB4Ci0tLSAKLTIuMS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vbGliYWlvX2ZpeF9mb3JfeDMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl94MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNGJhNTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9saWJhaW9fZml4X2Zvcl94MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUHJvcGVybHkgbG9hZCBhcmd1bWVudHMgNSBhbiA2IGZvciB4ODYtNjQgc3lzY2FsbAotVXNlIGFzbSAoInIxMCIpIGFuZCBhc20gKCJyOCIpIHRvIGxvYWQgYXJndW1lbnRzIDUgYW4gNiBmb3IgeDg2LTY0Ci1zeXNjYWxsIHNvIHRoYXQgaXQgd29ya3Mgd2l0aCBib3RoIHgzMiBhbmQgeDg2LTY0LgotCi1SZWNlaXZlZCB0aGlzIHBhdGNoIGZyb20gSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTEvMTIvMDIKLQotLS0tIGxpYmFpby0wLjMuMTA5L3NyYy9zeXNjYWxsLXg4Nl82NC5oLngzMgkyMDA5LTEwLTA5IDExOjE3OjAyLjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmFpby0wLjMuMTA5L3NyYy9zeXNjYWxsLXg4Nl82NC5oCTIwMTEtMTItMDIgMDk6MDk6MDcuNTM3NjAzMjI0IC0wODAwCi1AQCAtMSw4ICsxLDE4IEBACi0rI2lmbmRlZiBfX05SX2lvX3NldHVwCi0gI2RlZmluZSBfX05SX2lvX3NldHVwCQkyMDYKLSsjZW5kaWYKLSsjaWZuZGVmIF9fTlJfaW9fZGVzdHJveQotICNkZWZpbmUgX19OUl9pb19kZXN0cm95CQkyMDcKLSsjZW5kaWYKLSsjaWZuZGVmIF9fTlJfaW9fZ2V0ZXZlbnRzCi0gI2RlZmluZSBfX05SX2lvX2dldGV2ZW50cwkyMDgKLSsjZW5kaWYKLSsjaWZuZGVmIF9fTlJfaW9fc3VibWl0Ci0gI2RlZmluZSBfX05SX2lvX3N1Ym1pdAkJMjA5Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX05SX2lvX2NhbmNlbAotICNkZWZpbmUgX19OUl9pb19jYW5jZWwJCTIxMAotKyNlbmRpZgotIAotICNkZWZpbmUgX19zeXNjYWxsX2Nsb2JiZXIgInIxMSIsInJjeCIsIm1lbW9yeSIgCi0gI2RlZmluZSBfX3N5c2NhbGwgInN5c2NhbGwiCi1AQCAtNDIsMTAgKzUyLDExIEBAIHJldHVybiBfX3JlczsJCQkJCQkJCVwKLSB0eXBlIGZuYW1lICh0eXBlMSBhcmcxLCB0eXBlMiBhcmcyLCB0eXBlMyBhcmczLCB0eXBlNCBhcmc0KQkJXAotIHsJCQkJCQkJCQlcCi0gbG9uZyBfX3JlczsJCQkJCQkJCVwKLS1fX2FzbV9fIHZvbGF0aWxlICgibW92cSAlNSwlJXIxMCA7IiBfX3N5c2NhbGwJCQkJXAotK3JlZ2lzdGVyIGxvbmcgX19hNCBhc20gKCJyMTAiKSA9IChsb25nKSBhcmc0OwkJCQlcCi0rX19hc21fXyB2b2xhdGlsZSAoX19zeXNjYWxsCQkJCQkJXAotIAk6ICI9YSIgKF9fcmVzKQkJCQkJCQlcCi0gCTogIjAiIChfX05SXyMjc25hbWUpLCJEIiAoKGxvbmcpKGFyZzEpKSwiUyIgKChsb25nKShhcmcyKSksCVwKLS0JICAiZCIgKChsb25nKShhcmczKSksImciICgobG9uZykoYXJnNCkpIDogX19zeXNjYWxsX2Nsb2JiZXIsInIxMCIgKTsgXAotKwkgICJkIiAoKGxvbmcpKGFyZzMpKSwiciIgKF9fYTQpKTsgXAotIHJldHVybiBfX3JlczsJCQkJCQkJCVwKLSB9IAotIAotQEAgLTU0LDEwICs2NSwxMSBAQCByZXR1cm4gX19yZXM7CQkJCQkJCQlcCi0gdHlwZSBmbmFtZSAodHlwZTEgYXJnMSx0eXBlMiBhcmcyLHR5cGUzIGFyZzMsdHlwZTQgYXJnNCx0eXBlNSBhcmc1KQlcCi0gewkJCQkJCQkJCVwKLSBsb25nIF9fcmVzOwkJCQkJCQkJXAotLV9fYXNtX18gdm9sYXRpbGUgKCJtb3ZxICU1LCUlcjEwIDsgbW92cSAlNiwlJXI4IDsgIiBfX3N5c2NhbGwJCVwKLStyZWdpc3RlciBsb25nIF9fYTQgYXNtICgicjEwIikgPSAobG9uZykgYXJnNDsJCQkJXAotK3JlZ2lzdGVyIGxvbmcgX19hNSBhc20gKCJyOCIpID0gKGxvbmcpIGFyZzU7CQkJCVwKLStfX2FzbV9fIHZvbGF0aWxlICggX19zeXNjYWxsCQkJCQkJXAotIAk6ICI9YSIgKF9fcmVzKQkJCQkJCQlcCi0gCTogIjAiIChfX05SXyMjc25hbWUpLCJEIiAoKGxvbmcpKGFyZzEpKSwiUyIgKChsb25nKShhcmcyKSksCVwKLS0JICAiZCIgKChsb25nKShhcmczKSksImciICgobG9uZykoYXJnNCkpLCJnIiAoKGxvbmcpKGFyZzUpKSA6CVwKLS0JX19zeXNjYWxsX2Nsb2JiZXIsInI4IiwicjEwIiApOwkJCQkJXAotKwkgICJkIiAoKGxvbmcpKGFyZzMpKSwiciIgKF9fYTQpLCJyIiAoX19hNSkpOwkJCVwKLSByZXR1cm4gX19yZXM7CQkJCQkJCQlcCi0gfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTk3NWQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW9fMC4zLjExMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQXN5bmNocm9ub3VzIEkvTyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiQXN5bmNocm9ub3VzIGlucHV0L291dHB1dCBsaWJyYXJ5IHRoYXQgdXNlcyB0aGUga2VybmVscyBuYXRpdmUgaW50ZXJmYWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2xzZS5zb3VyY2Vmb3JnZS5uZXQvaW8vYWlvLmh0bWwiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vbGliYS8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyaWMtYXJjaC1kZWN0ZWN0aW9uLWZvci1wYWRkaW5nLWRlZmluZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDBfYXJjaGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rlc3RkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliYWlvX2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmFpb19maXhfZm9yX21pcHNfc3lzY2FsbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3lzdGVtLWxpbmthZ2UucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTM1NjAyZTQzNzc4MzgzZTJmNDkwN2E0Y2EzOWFiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDE5MDI4ZTYzMTcyNTcyOTM3NjI1MGUzMmI0NzMwMTJmN2NiNjhlMWY3Mjc1YmZjMWJiY2RkMGY4NzQ1ZjdlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYmEvbGliYWlvLyIKLQotRVhUUkFfT0VNQUtFID0rICJwcmVmaXg9JHtwcmVmaXh9IGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSBsaWJkaXI9JHtsaWJkaXJ9IgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvXzAuMy4xMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvXzAuMy4xMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRiNTBiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW9fMC4zLjExMS5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkFzeW5jaHJvbm91cyBJL08gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkFzeW5jaHJvbm91cyBpbnB1dC9vdXRwdXQgbGlicmFyeSB0aGF0IHVzZXMgdGhlIGtlcm5lbHMgbmF0aXZlIGludGVyZmFjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sc2Uuc291cmNlZm9yZ2UubmV0L2lvL2Fpby5odG1sIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgorCitTUkNfVVJJID0gImdpdDovL3BhZ3VyZS5pby9saWJhaW8uZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwX2FyY2hlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXN0ZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmFpb19maXhfZm9yX21pcHNfc3lzY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3lzdGVtLWxpbmthZ2UucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiZjY2YmUyMmFiMGE1OWEzOTg1ODkwMGFiNzJhOGM2YTZlOGIwYjdlYyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FTUFLRSA9KyAicHJlZml4PSR7cHJlZml4fSBpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0gbGliZGlyPSR7bGliZGlyfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDE2Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDE2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg1ZmVjNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1saWJhcmNoaXZlLTMuMy4yOiBGaXggQ1ZFLTIwMTctMTQxNjYKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvOTM1Ci0KLWFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXI6IGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93IGluIHhtbF9kYXRhCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0L2ZhNzQzOGEwZmY0MDMzZTQ3NDFjODA3Mzk0YTlhZjYyMDc5NDBkNzFdCi1DVkU6IENWRS0yMDE3LTE0MTY2Ci1CdWc6IDkzNQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCi1pbmRleCA3YTIyYmViLi45M2VlYWNjIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCi1AQCAtMTA0MCw2ICsxMDQwLDkgQEAgYXRvbDEwKGNvbnN0IGNoYXIgKnAsIHNpemVfdCBjaGFyX2NudCkKLSAJdWludDY0X3QgbDsKLSAJaW50IGRpZ2l0OwotIAotKwlpZiAoY2hhcl9jbnQgPT0gMCkKLSsJCXJldHVybiAoMCk7Ci0rCi0gCWwgPSAwOwotIAlkaWdpdCA9ICpwIC0gJzAnOwotIAl3aGlsZSAoZGlnaXQgPj0gMCAmJiBkaWdpdCA8IDEwICAmJiBjaGFyX2NudC0tID4gMCkgewotQEAgLTEwNTQsNyArMTA1NywxMCBAQCBhdG9sOChjb25zdCBjaGFyICpwLCBzaXplX3QgY2hhcl9jbnQpCi0gewotIAlpbnQ2NF90IGw7Ci0gCWludCBkaWdpdDsKLS0gICAgICAgIAotKwotKwlpZiAoY2hhcl9jbnQgPT0gMCkKLSsJCXJldHVybiAoMCk7Ci0rCi0gCWwgPSAwOwotIAl3aGlsZSAoY2hhcl9jbnQtLSA+IDApIHsKLSAJCWlmICgqcCA+PSAnMCcgJiYgKnAgPD0gJzcnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDM4MTAyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gZjk1NjljMDg2ZmYyOTI1OWM3Mzc5MGRiOWNiZjM5ZmU4ZmI5ZDg2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvaG4gU3RhcmtzIDxqb3N0YXJrc0BtaWNyb3NvZnQuY29tPgotRGF0ZTogV2VkLCAyNSBKdWwgMjAxOCAxMjoxNjozNCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpc285NjYwOiB2YWxpZGF0ZSBkaXJlY3RvcnkgcmVjb3JkIGxlbmd0aAotCi1DVkU6IENWRS0yMDE3LTE0NTAxCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbW1hdHVza2EvbGliYXJjaGl2ZS9jb21taXQvMTNlODdkY2Q5YzM3YjUzMzEyN2NjZWI5ZjNlMWU1YTM4ZDk1ZTc4NF0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jIHwgMTcgKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2lzbzk2NjAuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2lzbzk2NjAuYwotaW5kZXggZjAxZDM3YmYuLjA4OWJiNzIzIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKLUBAIC00MDksNyArNDA5LDggQEAgc3RhdGljIGludAluZXh0X2VudHJ5X3NlZWsoc3RydWN0IGFyY2hpdmVfcmVhZCAqLCBzdHJ1Y3QgaXNvOTY2MCAqLAotIAkJICAgIHN0cnVjdCBmaWxlX2luZm8gKiopOwotIHN0YXRpYyBzdHJ1Y3QgZmlsZV9pbmZvICoKLSAJCXBhcnNlX2ZpbGVfaW5mbyhzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLAotLQkJICAgIHN0cnVjdCBmaWxlX2luZm8gKnBhcmVudCwgY29uc3QgdW5zaWduZWQgY2hhciAqaXNvZGlycmVjKTsKLSsJCSAgICBzdHJ1Y3QgZmlsZV9pbmZvICpwYXJlbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlzb2RpcnJlYywKLSsJCSAgICBzaXplX3QgcmVjbGVuKTsKLSBzdGF0aWMgaW50CXBhcnNlX3JvY2tyaWRnZShzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLAotIAkJICAgIHN0cnVjdCBmaWxlX2luZm8gKmZpbGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0YXJ0LAotIAkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCk7Ci1AQCAtMTAyMiw3ICsxMDIzLDcgQEAgcmVhZF9jaGlsZHJlbihzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgZmlsZV9pbmZvICpwYXJlbnQpCi0gCQkJaWYgKCoocCArIERSX25hbWVfbGVuX29mZnNldCkgPT0gMQotIAkJCSAgICAmJiAqKHAgKyBEUl9uYW1lX29mZnNldCkgPT0gJ1wwMDEnKQotIAkJCQljb250aW51ZTsKLS0JCQljaGlsZCA9IHBhcnNlX2ZpbGVfaW5mbyhhLCBwYXJlbnQsIHApOwotKwkJCWNoaWxkID0gcGFyc2VfZmlsZV9pbmZvKGEsIHBhcmVudCwgcCwgYiAtIHApOwotIAkJCWlmIChjaGlsZCA9PSBOVUxMKSB7Ci0gCQkJCV9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUoYSwgc2tpcF9zaXplKTsKLSAJCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLUBAIC0xMTEyLDcgKzExMTMsNyBAQCBjaG9vc2Vfdm9sdW1lKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBpc285NjYwICppc285NjYwKQotIAkgKi8KLSAJc2VlbkpvbGlldCA9IGlzbzk2NjAtPnNlZW5Kb2xpZXQ7LyogU2F2ZSBmbGFnLiAqLwotIAlpc285NjYwLT5zZWVuSm9saWV0ID0gMDsKLS0JZmlsZSA9IHBhcnNlX2ZpbGVfaW5mbyhhLCBOVUxMLCBibG9jayk7Ci0rCWZpbGUgPSBwYXJzZV9maWxlX2luZm8oYSwgTlVMTCwgYmxvY2ssIHZkLT5zaXplKTsKLSAJaWYgKGZpbGUgPT0gTlVMTCkKLSAJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci0gCWlzbzk2NjAtPnNlZW5Kb2xpZXQgPSBzZWVuSm9saWV0OwotQEAgLTExNDQsNyArMTE0NSw3IEBAIGNob29zZV92b2x1bWUoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGlzbzk2NjAgKmlzbzk2NjApCi0gCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLSAJCX0KLSAJCWlzbzk2NjAtPnNlZW5Kb2xpZXQgPSAwOwotLQkJZmlsZSA9IHBhcnNlX2ZpbGVfaW5mbyhhLCBOVUxMLCBibG9jayk7Ci0rCQlmaWxlID0gcGFyc2VfZmlsZV9pbmZvKGEsIE5VTEwsIGJsb2NrLCB2ZC0+c2l6ZSk7Ci0gCQlpZiAoZmlsZSA9PSBOVUxMKQotIAkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci0gCQlpc285NjYwLT5zZWVuSm9saWV0ID0gc2VlbkpvbGlldDsKLUBAIC0xNzQ5LDcgKzE3NTAsNyBAQCBhcmNoaXZlX3JlYWRfZm9ybWF0X2lzbzk2NjBfY2xlYW51cChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphKQotICAqLwotIHN0YXRpYyBzdHJ1Y3QgZmlsZV9pbmZvICoKLSBwYXJzZV9maWxlX2luZm8oc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGZpbGVfaW5mbyAqcGFyZW50LAotLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppc29kaXJyZWMpCi0rICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlzb2RpcnJlYywgc2l6ZV90IHJlY2xlbikKLSB7Ci0gCXN0cnVjdCBpc285NjYwICppc285NjYwOwotIAlzdHJ1Y3QgZmlsZV9pbmZvICpmaWxlLCAqZmlsZXA7Ci1AQCAtMTc2Myw3ICsxNzY0LDExIEBAIHBhcnNlX2ZpbGVfaW5mbyhzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgZmlsZV9pbmZvICpwYXJlbnQsCi0gCi0gCWlzbzk2NjAgPSAoc3RydWN0IGlzbzk2NjAgKikoYS0+Zm9ybWF0LT5kYXRhKTsKLSAKLS0JZHJfbGVuID0gKHNpemVfdClpc29kaXJyZWNbRFJfbGVuZ3RoX29mZnNldF07Ci0rCWlmIChyZWNsZW4gPT0gMCB8fCByZWNsZW4gPCAoZHJfbGVuID0gKHNpemVfdClpc29kaXJyZWNbRFJfbGVuZ3RoX29mZnNldF0pKSB7Ci0rCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJCSJJbnZhbGlkIGRpcmVjdG9yeSByZWNvcmQgbGVuZ3RoIik7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0gCW5hbWVfbGVuID0gKHNpemVfdClpc29kaXJyZWNbRFJfbmFtZV9sZW5fb2Zmc2V0XTsKLSAJbG9jYXRpb24gPSBhcmNoaXZlX2xlMzJkZWMoaXNvZGlycmVjICsgRFJfZXh0ZW50X29mZnNldCk7Ci0gCWZzaXplID0gdG9pKGlzb2RpcnJlYyArIERSX3NpemVfb2Zmc2V0LCBEUl9zaXplX3NpemUpOwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmUxNTQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gNTU2MjU0NWI1NTYyZjZkMTJhNGVmOTkxZmFlMTU4YmY0Y2NmOTJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvZXJnIFNvbm5lbmJlcmdlciA8am9lcmdAYmVjLmRlPgotRGF0ZTogU2F0LCA5IFNlcCAyMDE3IDE3OjQ3OjMyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGEgcmVhZCBvZmYtYnktb25lIGVycm9yIGZvciBVVEYxNiBuYW1lcyBpbiBSQVIKLSBhcmNoaXZlcy4KLQotUmVwb3J0ZWQtQnk6IE9TUy1GdXp6IGlzc3VlIDU3MwotCi1DVkU6IENWRS0yMDE3LTE0NTAyCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi1pbmRleCBjYmIxNGMzLi43NTFkZTY5IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi1AQCAtMTQ5Niw3ICsxNDk2LDExIEBAIHJlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwKLSAgICAgICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci0gICAgICAgfQotICAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemUrK10gPSAnXDAnOwotLSAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemUrK10gPSAnXDAnOwotKyAgICAgIC8qCi0rICAgICAgICogRG8gbm90IGluY3JlbWVudCBmaWxlbmFtZV9zaXplIGhlcmUgYXMgdGhlIGNvbXB1dGF0aW9ucyBiZWxvdwotKyAgICAgICAqIGFkZCB0aGUgc3BhY2UgZm9yIHRoZSB0ZXJtaW5hdGluZyBOVUwgZXhwbGljaXRseS4KLSsgICAgICAgKi8KLSsgICAgICBmaWxlbmFtZVtmaWxlbmFtZV9zaXplXSA9ICdcMCc7Ci0gCi0gICAgICAgLyogRGVjb2RlZCB1bmljb2RlIGZvcm0gaXMgVVRGLTE2QkUsIHNvIHdlIGhhdmUgdG8gdXBkYXRlIGEgc3RyaW5nCi0gICAgICAgICogY29udmVyc2lvbiBvYmplY3QgZm9yIGl0LiAqLwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZmE2OGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAyYzhjODNiOTczMWZmODIyZmFkNmNjOGM2NzBlYTU1MTljMzY2YTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9lcmcgU29ubmVuYmVyZ2VyIDxqb2VyZ0BiZWMuZGU+Ci1EYXRlOiBUaHUsIDE5IEp1bCAyMDE4IDIxOjE0OjUzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlamVjdCBMSEEgYXJjaGl2ZSBlbnRyaWVzIHdpdGggbmVnYXRpdmUgc2l6ZS4KLQotQ1ZFOiBDVkUtMjAxNy0xNDUwMwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9jb21taXQvMmM4YzgzYjk3MzFmZjgyMmZhZDZjYzhjNjcwZWE1NTE5YzM2NmExNF0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfbGhhLmMgfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2xoYS5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfbGhhLmMKLWluZGV4IGI4ZWY0YWUxLi45NWM5OWJiMSAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2xoYS5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9saGEuYwotQEAgLTcwMSw2ICs3MDEsMTIgQEAgYXJjaGl2ZV9yZWFkX2Zvcm1hdF9saGFfcmVhZF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwKLSAJICogUHJlcGFyZSB2YXJpYWJsZXMgdXNlZCB0byByZWFkIGEgZmlsZSBjb250ZW50LgotIAkgKi8KLSAJbGhhLT5lbnRyeV9ieXRlc19yZW1haW5pbmcgPSBsaGEtPmNvbXBzaXplOwotKwlpZiAobGhhLT5lbnRyeV9ieXRlc19yZW1haW5pbmcgPCAwKSB7Ci0rCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLSsJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotKwkJICAgICJJbnZhbGlkIExIYSBlbnRyeSBzaXplIik7Ci0rCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotKwl9Ci0gCWxoYS0+ZW50cnlfb2Zmc2V0ID0gMDsKLSAJbGhhLT5lbnRyeV9jcmNfY2FsY3VsYXRlZCA9IDA7Ci0gCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnMTA2Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWcxMDY2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNjYyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnMTA2Ni5wYXRjaApAQCAtMCwwICsxLDU0IEBACitsaWJhcmNoaXZlLTMuMy4zOiBGaXggYnVnMTA2NgorCitbTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcHVsbC8xMDY2CisKK2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF8qLmM6IGZpeCBvdXQgb2YgYm91bmRzIHJlYWQgb24gZW1wdHkgc3RyaW5nICgpIGZpbGVuYW1lCitmb3IgZ3VudGFyLCBwYXggYW5kIHY3dGFyCisKK1RoZXJlIGlzIGFuIG91dCBvZiBib3VuZHMgcmVhZCBmbGF3IGluIHRoZSBhcmNoaXZlX3dyaXRlX2dudXRhcl9oZWFkZXIsCithcmNoaXZlX3dyaXRlX3BheF9oZWFkZXIgYW5kIGFyY2hpdmVfd3JpdGVfdjd0YXJfaGVhZGVyIGZ1bmN0aW9ucyB3aGljaAorY291bGQgbGVkcyB0byBjYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL2NvbW1pdC9jMjQ2ZWM1ZDA1OGEzZjcwYTJkM2ZiNzY1ZjkyZmU5ZGI3N2IyNWRmXQorQnVnOiAxMDY2CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfZ251dGFyLmMKK2luZGV4IDJkODU4YzkuLjE5NjZjNTMgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfZ251dGFyLmMKK0BAIC0zMzksNyArMzM5LDcgQEAgYXJjaGl2ZV93cml0ZV9nbnV0YXJfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3dyaXRlICphLAorIAkJICogY2FzZSBnZXR0aW5nIFdDUyBmYWlsZWQuIE9uIFBPU0lYLCB0aGlzIGlzIGEKKyAJCSAqIG5vcm1hbCBvcGVyYXRpb24uCisgCQkgKi8KKy0JCWlmIChwICE9IE5VTEwgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKKysJCWlmIChwICE9IE5VTEwgJiYgcFswXSAhPSAnXDAnICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7CisgCQkJc3RydWN0IGFyY2hpdmVfc3RyaW5nIGFzOworIAorIAkJCWFyY2hpdmVfc3RyaW5nX2luaXQoJmFzKTsKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jCitpbmRleCA2YTMwMWFjLi40Y2ZhOGZmIDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcGF4LmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jCitAQCAtNjYwLDcgKzY2MCw3IEBAIGFyY2hpdmVfd3JpdGVfcGF4X2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqYSwKKyAJCQkgKiBjYXNlIGdldHRpbmcgV0NTIGZhaWxlZC4gT24gUE9TSVgsIHRoaXMgaXMgYQorIAkJCSAqIG5vcm1hbCBvcGVyYXRpb24uCisgCQkJICovCistCQkJaWYgKHAgIT0gTlVMTCAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgeworKwkJCWlmIChwICE9IE5VTEwgJiYgcFswXSAhPSAnXDAnICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7CisgCQkJCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBhczsKKyAKKyAJCQkJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmYXMpOworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3Rhci5jCitpbmRleCA2MmIxNTIyLi41M2MwZGIwIDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYworQEAgLTI4NCw3ICsyODQsNyBAQCBhcmNoaXZlX3dyaXRlX3Y3dGFyX2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqYSwgc3RydWN0IGFyY2hpdmVfZW50cnkgKmVudHJ5KQorIAkJICogY2FzZSBnZXR0aW5nIFdDUyBmYWlsZWQuIE9uIFBPU0lYLCB0aGlzIGlzIGEKKyAJCSAqIG5vcm1hbCBvcGVyYXRpb24uCisgCQkgKi8KKy0JCWlmIChwICE9IE5VTEwgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKKysJCWlmIChwICE9IE5VTEwgJiYgcFswXSAhPSAnXDAnICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7CisgCQkJc3RydWN0IGFyY2hpdmVfc3RyaW5nIGFzOworIAorIAkJCWFyY2hpdmVfc3RyaW5nX2luaXQoJmFzKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWc5MjkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnOTI5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjMyNTRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWc5MjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1saWJhcmNoaXZlLTMuMy4yOiBGaXggYnVnOTI5Ci0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzkyOQotCi1hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3BpbzogaGVhZGVyX25ld2MoKTogQXZvaWQgb3ZlcmZsb3cgd2hlbiByZWFkaW5nIGNvcnJ1cHQKLWNwaW8gYXJjaGl2ZQotCi1BIGNwaW8gIm5ld2MiIGFyY2hpdmUgd2l0aCBhIG5hbWVsZW5ndGggb2YgIkZGRkZGRkZGIiwgaWYgcmVhZCBvbiBhCi1zeXN0ZW0gd2l0aCBhIDMyLWJpdCBzaXplX3QsIHdvdWxkIHJlc3VsdCBpbiBuYW1lbGVuZ3RoICsgbmFtZV9wYWQKLW92ZXJmbG93aW5nIDMyIGJpdHMgYW5kIGxpYmFyY2hpdmUgYXR0ZW1wdGluZyB0byBjb3B5IDJeMzItMSBieXRlcwotZnJvbSBhIDItYnl0ZSBidWZmZXIsIHdpdGggYXBwcm9wcmlhdGVseSBoaWxhcmlvdXMgcmVzdWx0cy4KLQotQ2hlY2sgZm9yIHRoaXMgb3ZlcmZsb3cgYW5kIGZhaWw7IHRoZXJlJ3Mgbm8gbGVnaXRpbWF0ZSByZWFzb24gZm9yIGEKLWNwaW8gYXJjaGl2ZSB0byBjb250YWluIGEgZmlsZSB3aXRoIGEgbmFtZSBvdmVyIDQgYmlsbGlvbiBjaGFyYWN0ZXJzCi1pbiBsZW5ndGguCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0L2JhYzQ2NTllMGI5NzA5OTBlN2UzZjNhM2QyMzkyOTRlOTYzMTE2MzBdCi1CdWc6IDkyOQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKLWluZGV4IGFkOWY3ODIuLjFmYWE2NGQgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYwotQEAgLTYzMyw2ICs2MzMsMTMgQEAgaGVhZGVyX25ld2Moc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGNwaW8gKmNwaW8sCi0gCS8qIFBhZCBuYW1lIHRvIDIgbW9yZSB0aGFuIGEgbXVsdGlwbGUgb2YgNC4gKi8KLSAJKm5hbWVfcGFkID0gKDIgLSAqbmFtZWxlbmd0aCkgJiAzOwotIAotKwkvKiBNYWtlIHN1cmUgdGhhdCB0aGUgcGFkZGVkIG5hbWUgbGVuZ3RoIGZpdHMgaW50byBzaXplX3QuICovCi0rCWlmICgoc2l6ZV90KSgqbmFtZWxlbmd0aCArICpuYW1lX3BhZCkgPCAqbmFtZWxlbmd0aCkgewotKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0rCQkgICAgImNwaW8gYXJjaGl2ZSBoYXMgaW52YWxpZCBuYW1lbGVuZ3RoIik7Ci0rCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotKwl9Ci0rCi0gCS8qCi0gCSAqIE5vdGU6IGVudHJ5X2J5dGVzX3JlbWFpbmluZyBpcyBhdCBsZWFzdCA2NCBiaXRzIGFuZAotIAkgKiB0aGVyZWZvcmUgZ3VhcmFudGVlZCB0byBiZSBiaWcgZW5vdWdoIGZvciBhIDMzLWJpdCBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZDkwYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgotREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWQ5OWFjYTAwNmJjMzQ2OTc0YmI3NDVhMzUzMzY0MjUiCi0KLURFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIgeHogbHpvIgotCi1QQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotCWxpYnhtbDIgXAotCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCi0iCi0KLURFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgotUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKLVBBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsJHtERVBFTkRTX0JaSVAyfSwiCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiwiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wsIgotUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgteG1sMiwtLXdpdGhvdXQteG1sMixsaWJ4bWwyLCIKLVBBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQsIgotUEFDS0FHRUNPTkZJR1tsem9dID0gIi0td2l0aC1sem8yLC0td2l0aG91dC1sem8yLGx6bywiCi1QQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLW5ldHRsZSwtLXdpdGhvdXQtbmV0dGxlLG5ldHRsZSwiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGFyZ2VmaWxlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9saWJhcmNoaXZlLm9yZy9kb3dubG9hZHMvbGliYXJjaGl2ZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYnVnOTI5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTY2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0NTAyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDUwMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDUwMS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDU4M2JkNmIyZWJmN2UwZTg5NjNkOTA4NzllYjFiMjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQyZGJkNjk1NDc5MmIyYzA1NGNjZjhlYzRiMzMwYTU0Yjg1OTA0YTgwY2VmNDc3YTFjNzQ2NDNkZGFmYTBjZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKLQotQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLQotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bwotCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAotCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCi0KLVBBQ0tBR0VTID0rICJic2R0YXIiCi1GSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKLUFMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCi0KLVBBQ0tBR0VTID0rICJic2RjcGlvIgotRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCi1BTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmEzZDQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4zLmJiCkBAIC0wLDAgKzEsNjkgQEAKK1NVTU1BUlkgPSAiU3VwcG9ydCBmb3IgcmVhZGluZyB2YXJpb3VzIGFyY2hpdmUgZm9ybWF0cyIKK0RFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBhbmQgY29tbWFuZC1saW5lIHRvb2xzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRhciwgY3BpbywgemlwLCBJU08sIGFuZCBvdGhlciBhcmNoaXZlIGZvcm1hdHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkOTlhY2EwMDZiYzM0Njk3NGJiNzQ1YTM1MzM2NDI1IgorCitERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCisKK1BBQ0tBR0VDT05GSUcgPz0gInpsaWIgYnoyIHh6IGx6byIKKworUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKwlsaWJ4bWwyIFwKKwkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAorIgorCitERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2J6Ml0gPSAiLS13aXRoLWJ6MmxpYiwtLXdpdGhvdXQtYnoybGliLCR7REVQRU5EU19CWklQMn0sIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHosIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCitQQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKK1BBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgorUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi0td2l0aC1sejQsLS13aXRob3V0LWx6NCxsejQsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWcxMDY2LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQwMzhlMzY2Y2E1YjY1OWRhZTNlZmNjNzQ0ZTcyMTIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhN2ViMTc4MWM5ZmJiYWUxNzhjNGM2YmFkMWM2ZWIwOGVkYWI5YTE0OTZjNjQ4MzNkMTcxNWQwMjJiMzBlMmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCisKK0NQUEZMQUdTICs9ICItSSR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCisKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBXZSBqdXN0IG5lZWQgdGhlIGhlYWRlcnMgZm9yIHNvbWUgdHlwZSBjb25zdGFudHMsIHNvIG5vIG5lZWQgdG8KKwkjIGJ1aWxkIGFsbCBvZiBlMmZzcHJvZ3MgZm9yIHRoZSB0YXJnZXQKKwljcCAtUiAke1NUQUdJTkdfSU5DRElSX05BVElWRX0vZXh0MmZzICR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMvCit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgorCitQQUNLQUdFUyA9KyAiYnNkdGFyIgorRklMRVNfYnNkdGFyID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK0FMVEVSTkFUSVZFX2JzZHRhciA9ICJ0YXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCitBTFRFUk5BVElWRV9UQVJHRVRbdGFyXSA9ICIke2JpbmRpcn0vYnNkdGFyIgorCitQQUNLQUdFUyA9KyAiYnNkY3BpbyIKK0ZJTEVTX2JzZGNwaW8gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0FMVEVSTkFUSVZFX2JzZGNwaW8gPSAiY3BpbyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGlvXSA9ICIke2Jhc2VfYmluZGlyfS9jcGlvIgorQUxURVJOQVRJVkVfVEFSR0VUW2NwaW9dID0gIiR7YmluZGlyfS9ic2RjcGlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ1ZmFhYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjk0ICswLDAgQEAKLUZyb20gNzE0OGFkZjM0ZGFlMzAzNDVjMmU0ZDlkNDM3ODM4YTQ1YmE2ZjZlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/dXRmOD9xP1RpbT0yMFI9QzM9QkNoc2VuPz0gPHRpbS5ydWVoc2VuQGdteC5kZT4KLURhdGU6IFdlZCwgMSBGZWIgMjAxNyAxMTowNjozOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggLVdmb3JtYXQgd2FybmluZ3MKLQotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZXhhbXBsZXMvZXhhbXBsZS5jICAgICB8ICA2ICsrKy0tLQotIGV4YW1wbGVzL2V4YW1wbGUzLmMgICAgfCAgNCArKy0tCi0gZXhhbXBsZXMvZXhhbXBsZTQuYyAgICB8ICA0ICsrLS0KLSBleGFtcGxlcy9leGFtcGxlNS5jICAgIHwgIDIgKy0KLSBzcmMvaWRuLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy90c3RfaWRuYS5jICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIHRlc3RzL3RzdF9pZG5hMi5jICAgICAgfCAgOCArKysrLS0tLQotIHRlc3RzL3RzdF9pZG5hMy5jICAgICAgfCAgOCArKysrLS0tLQotIHRlc3RzL3RzdF9uZmtjLmMgICAgICAgfCAgOCArKysrLS0tLQotIHRlc3RzL3RzdF9wcjI5LmMgICAgICAgfCAxMiArKysrKystLS0tLS0KLSB0ZXN0cy90c3RfcHVueWNvZGUuYyAgIHwgMTMgKysrKysrKy0tLS0tLQotIHRlc3RzL3RzdF9zdHJlcnJvci5jICAgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQotIHRlc3RzL3RzdF9zdHJpbmdwcmVwLmMgfCAxMiArKysrKystLS0tLS0KLSB0ZXN0cy90c3RfdGxkLmMgICAgICAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KLSB0ZXN0cy91dGlscy5jICAgICAgICAgIHwgIDYgKysrLS0tCi0gMTUgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlLmMgYi9leGFtcGxlcy9leGFtcGxlLmMKLWluZGV4IDZlOTE3ODMuLjI0ZjY0ZTAgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9leGFtcGxlLmMKLSsrKyBiL2V4YW1wbGVzL2V4YW1wbGUuYwotQEAgLTU1LDcgKzU1LDcgQEAgbWFpbiAodm9pZCkKLSAKLSAgIHByaW50ZiAoIkJlZm9yZSBsb2NhbGUydXRmOCAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKLS0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKLSsgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOwotICAgcHJpbnRmICgiXG4iKTsKLSAKLSAgIHAgPSBzdHJpbmdwcmVwX2xvY2FsZV90b191dGY4IChidWYpOwotQEAgLTY5LDcgKzY5LDcgQEAgbWFpbiAodm9pZCkKLSAKLSAgIHByaW50ZiAoIkJlZm9yZSBzdHJpbmdwcmVwIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOwotICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQotLSAgICBwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOwotKyAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7Ci0gICBwcmludGYgKCJcbiIpOwotIAotICAgcmMgPSBzdHJpbmdwcmVwIChidWYsIEJVRlNJWiwgMCwgc3RyaW5ncHJlcF9uYW1lcHJlcCk7Ci1AQCAtNzksNyArNzksNyBAQCBtYWluICh2b2lkKQotICAgICB7Ci0gICAgICAgcHJpbnRmICgiQWZ0ZXIgc3RyaW5ncHJlcCAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCi0tCXByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7Ci0rCXByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKLSAgICAgICBwcmludGYgKCJcbiIpOwotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTMuYyBiL2V4YW1wbGVzL2V4YW1wbGUzLmMKLWluZGV4IGZjMTFjMWMuLmZmYjkwNDIgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9leGFtcGxlMy5jCi0rKysgYi9leGFtcGxlcy9leGFtcGxlMy5jCi1AQCAtNTYsNyArNTYsNyBAQCBtYWluICh2b2lkKQotIAotICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCi0tICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7Ci0rICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKLSAgIHByaW50ZiAoIlxuIik7Ci0gCi0gICByYyA9IGlkbmFfdG9fYXNjaWlfbHogKGJ1ZiwgJnAsIDApOwotQEAgLTY4LDcgKzY4LDcgQEAgbWFpbiAodm9pZCkKLSAKLSAgIHByaW50ZiAoIkFDRSBsYWJlbCAobGVuZ3RoICVsZCk6ICclcydcbiIsIChsb25nIGludCkgc3RybGVuIChwKSwgcCk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChwKTsgaSsrKQotLSAgICBwcmludGYgKCIlMDJ4ICIsIHBbaV0gJiAweEZGKTsKLSsgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIHBbaV0gJiAweEZGKTsKLSAgIHByaW50ZiAoIlxuIik7Ci0gCi0gICBmcmVlIChwKTsKLWRpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlNC5jIGIvZXhhbXBsZXMvZXhhbXBsZTQuYwotaW5kZXggMWIzMTljOS4uYTMzMTVhMSAxMDA2NDQKLS0tLSBhL2V4YW1wbGVzL2V4YW1wbGU0LmMKLSsrKyBiL2V4YW1wbGVzL2V4YW1wbGU0LmMKLUBAIC01Niw3ICs1Niw3IEBAIG1haW4gKHZvaWQpCi0gCi0gICBwcmludGYgKCJSZWFkIHN0cmluZyAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKLS0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKLSsgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOwotICAgcHJpbnRmICgiXG4iKTsKLSAKLSAgIHJjID0gaWRuYV90b191bmljb2RlX2x6bHogKGJ1ZiwgJnAsIDApOwotQEAgLTY4LDcgKzY4LDcgQEAgbWFpbiAodm9pZCkKLSAKLSAgIHByaW50ZiAoIkFDRSBsYWJlbCAobGVuZ3RoICVsZCk6ICclcydcbiIsIChsb25nIGludCkgc3RybGVuIChwKSwgcCk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChwKTsgaSsrKQotLSAgICBwcmludGYgKCIlMDJ4ICIsIHBbaV0gJiAweEZGKTsKLSsgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIHBbaV0gJiAweEZGKTsKLSAgIHByaW50ZiAoIlxuIik7Ci0gCi0gICBmcmVlIChwKTsKLWRpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlNS5jIGIvZXhhbXBsZXMvZXhhbXBsZTUuYwotaW5kZXggZGY1NTc5OC4uMjlkNDBiOSAxMDA2NDQKLS0tLSBhL2V4YW1wbGVzL2V4YW1wbGU1LmMKLSsrKyBiL2V4YW1wbGVzL2V4YW1wbGU1LmMKLUBAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCi0gCi0gICBwcmludGYgKCJSZWFkIHN0cmluZyAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKLS0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKLSsgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOwotICAgcHJpbnRmICgiXG4iKTsKLSAKLSAgIHAgPSBzdHJpbmdwcmVwX2xvY2FsZV90b191dGY4IChidWYpOwotZGlmZiAtLWdpdCBhL3NyYy9pZG4uYyBiL3NyYy9pZG4uYwotaW5kZXggYmUxYzdkMS4uMTNlYjNjOSAxMDA2NDQKLS0tLSBhL3NyYy9pZG4uYwotKysrIGIvc3JjL2lkbi5jCi1AQCAtNDE5LDcgKzQxOSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgICAgIHNpemVfdCBpOwotIAkgICAgICBmb3IgKGkgPSAwOyBwW2ldOyBpKyspCi0gCQlmcHJpbnRmIChzdGRlcnIsICJvdXRwdXRbJWx1XSA9IFUrJTA0eFxuIiwKLS0JCQkgKHVuc2lnbmVkIGxvbmcpIGksIHBbaV0pOwotKwkJCSAodW5zaWduZWQgbG9uZykgaSwgKHVuc2lnbmVkKSBwW2ldKTsKLSAJICAgIH0KLSAKLSAJICBmcHJpbnRmIChzdGRvdXQsICIlc1xuIiwgcCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X2lkbmEuYyBiL3Rlc3RzL3RzdF9pZG5hLmMKLWluZGV4IDQxNTc2NGUuLjRhYzA0NmYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90c3RfaWRuYS5jCi0rKysgYi90ZXN0cy90c3RfaWRuYS5jCi1AQCAtMjIwLDEzICsyMjAsMTQgQEAgZG9pdCAodm9pZCkKLSAgIGNoYXIgbGFiZWxbMTAwXTsKLSAgIHVpbnQzMl90ICp1Y3M0bGFiZWwgPSBOVUxMOwotICAgdWludDMyX3QgdG1wWzEwMF07Ci0tICBzaXplX3QgbGVuLCBsZW4yLCBpOwotKyAgc2l6ZV90IGxlbiwgbGVuMjsKLSAgIGludCByYzsKLSsgIHVuc2lnbmVkIGk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChpZG5hKSAvIHNpemVvZiAoaWRuYVswXSk7IGkrKykKLSAgICAgewotICAgICAgIGlmIChkZWJ1ZykKLS0JcHJpbnRmICgiSUROQSBlbnRyeSAlbGQ6ICVzXG4iLCBpLCBpZG5hW2ldLm5hbWUpOwotKwlwcmludGYgKCJJRE5BIGVudHJ5ICV1OiAlc1xuIiwgaSwgaWRuYVtpXS5uYW1lKTsKLSAKLSAgICAgICBpZiAoZGVidWcpCi0gCXsKLUBAIC0yMzcsNyArMjM4LDcgQEAgZG9pdCAodm9pZCkKLSAgICAgICByYyA9IGlkbmFfdG9fYXNjaWlfNGkgKGlkbmFbaV0uaW4sIGlkbmFbaV0uaW5sZW4sIGxhYmVsLCBpZG5hW2ldLmZsYWdzKTsKLSAgICAgICBpZiAocmMgIT0gaWRuYVtpXS50b2FzY2lpcmMpCi0gCXsKLS0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJGQVRBTFxuIik7Ci0gCSAgY29udGludWU7Ci1AQCAtMjU2LDcgKzI1Nyw3IEBAIGRvaXQgKHZvaWQpCi0gCSAgaWYgKHN0cmxlbiAoaWRuYVtpXS5vdXQpICE9IHN0cmxlbiAobGFiZWwpIHx8Ci0gCSAgICAgIHN0cmNhc2VjbXAgKGlkbmFbaV0ub3V0LCBsYWJlbCkgIT0gMCkKLSAJICAgIHsKLS0JICAgICAgZmFpbCAoIklETkEgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7Ci0rCSAgICAgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7Ci0gCSAgICAgIGlmIChkZWJ1ZykKLSAJCXByaW50ZiAoIkVSUk9SXG4iKTsKLSAJICAgIH0KLUBAIC0yNzMsOCArMjc0LDggQEAgZG9pdCAodm9pZCkKLSAKLSAgICAgICBpZiAoZGVidWcpCi0gCXsKLS0JICBwcmludGYgKCJpbjogJXMgKCVsZD09JWxkKVxuIiwgaWRuYVtpXS5vdXQsIHN0cmxlbiAoaWRuYVtpXS5vdXQpLAotLQkJICBsZW4pOwotKwkgIHByaW50ZiAoImluOiAlcyAoJWQ9PSVkKVxuIiwgaWRuYVtpXS5vdXQsIChpbnQpIHN0cmxlbiAoaWRuYVtpXS5vdXQpLAotKwkJICAoaW50KSBsZW4pOwotIAkgIHVjczRwcmludCAodWNzNGxhYmVsLCBsZW4pOwotIAl9Ci0gCi1AQCAtMjgyLDIwICsyODMsMjAgQEAgZG9pdCAodm9pZCkKLSAgICAgICByYyA9IGlkbmFfdG9fdW5pY29kZV80NGkgKHVjczRsYWJlbCwgbGVuLCB0bXAsICZsZW4yLCBpZG5hW2ldLmZsYWdzKTsKLSAgICAgICBpZiAoZGVidWcpCi0gCXsKLS0JICBwcmludGYgKCJleHBlY3RlZCBvdXQgKCVsZCk6XG4iLAotKwkgIHByaW50ZiAoImV4cGVjdGVkIG91dCAoJWx1KTpcbiIsCi0gCQkgIHJjID09IElETkFfU1VDQ0VTUyA/IGlkbmFbaV0uaW5sZW4gOiBsZW4pOwotIAkgIGlmIChyYyA9PSBJRE5BX1NVQ0NFU1MpCi0gCSAgICB1Y3M0cHJpbnQgKGlkbmFbaV0uaW4sIGlkbmFbaV0uaW5sZW4pOwotIAkgIGVsc2UKLSAJICAgIHVjczRwcmludCAodWNzNGxhYmVsLCBsZW4pOwotIAotLQkgIHByaW50ZiAoImNvbXB1dGVkIG91dCAoJWxkKTpcbiIsIGxlbjIpOwotKwkgIHByaW50ZiAoImNvbXB1dGVkIG91dCAoJWQpOlxuIiwgKGludCkgbGVuMik7Ci0gCSAgdWNzNHByaW50ICh0bXAsIGxlbjIpOwotIAl9Ci0gCi0gICAgICAgaWYgKHJjICE9IGlkbmFbaV0udG91bmljb2RlcmMpCi0gCXsKLS0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJGQVRBTFxuIik7Ci0gCSAgY29udGludWU7Ci1AQCAtMzA5LDExICszMTAsMTEgQEAgZG9pdCAodm9pZCkKLSAJICBpZiAoZGVidWcpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChyYyA9PSBJRE5BX1NVQ0NFU1MpCi0tCQlwcmludGYgKCJsZW49JWxkIGxlbjI9JWxkXG4iLCBsZW4yLCBpZG5hW2ldLmlubGVuKTsKLSsJCXByaW50ZiAoImxlbj0lZCBsZW4yPSVkXG4iLCAoaW50KSBsZW4yLCAoaW50KSBpZG5hW2ldLmlubGVuKTsKLSAJICAgICAgZWxzZQotLQkJcHJpbnRmICgibGVuPSVsZCBsZW4yPSVsZFxuIiwgbGVuLCBsZW4yKTsKLSsJCXByaW50ZiAoImxlbj0lZCBsZW4yPSVkXG4iLCAoaW50KSBsZW4sIChpbnQpIGxlbjIpOwotIAkgICAgfQotLQkgIGZhaWwgKCJJRE5BIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRVJST1JcbiIpOwotIAl9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X2lkbmEyLmMgYi90ZXN0cy90c3RfaWRuYTIuYwotaW5kZXggNjViM2E0ZC4uMzg5MzJjYSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RzdF9pZG5hMi5jCi0rKysgYi90ZXN0cy90c3RfaWRuYTIuYwotQEAgLTQ2MSwxNCArNDYxLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWRuYSBpZG5hW10gPSB7Ci0gdm9pZAotIGRvaXQgKHZvaWQpCi0gewotLSAgc2l6ZV90IGk7Ci0rICB1bnNpZ25lZCBpOwotICAgY2hhciAqb3V0OwotICAgaW50IHJjOwotIAotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoaWRuYSkgLyBzaXplb2YgKGlkbmFbMF0pOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoZGVidWcpCi0tCXByaW50ZiAoIklETkEyIGVudHJ5ICVsZFxuIiwgaSk7Ci0rCXByaW50ZiAoIklETkEyIGVudHJ5ICV1XG4iLCBpKTsKLSAKLSAgICAgICBpZiAoZGVidWcpCi0gCXsKLUBAIC00ODcsNyArNDg3LDcgQEAgZG9pdCAodm9pZCkKLSAJCQkgICAgIElETkFfVVNFX1NURDNfQVNDSUlfUlVMRVMpOwotICAgICAgIGlmIChyYyAhPSBJRE5BX1NVQ0NFU1MgJiYgc3RybGVuIChpZG5hW2ldLm91dCkgPiAwKQotIAl7Ci0tCSAgZmFpbCAoIklETkEyIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0rCSAgZmFpbCAoIklETkEyIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSAJICBjb250aW51ZTsKLSAJfQotIAotQEAgLTUwNCw3ICs1MDQsNyBAQCBkb2l0ICh2b2lkKQotIAkgIGlmIChzdHJsZW4gKGlkbmFbaV0ub3V0KSAhPSBzdHJsZW4gKG91dCkgfHwKLSAJICAgICAgc3RyY2FzZWNtcCAoaWRuYVtpXS5vdXQsIG91dCkgIT0gMCkKLSAJICAgIHsKLS0JICAgICAgZmFpbCAoIklETkEyIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgICAgICBmYWlsICgiSUROQTIgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKLSAJICAgICAgaWYgKGRlYnVnKQotIAkJcHJpbnRmICgiRVJST1JcbiIpOwotIAkgICAgfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hMy5jIGIvdGVzdHMvdHN0X2lkbmEzLmMKLWluZGV4IGExODkzNzguLmY2NTYyOGMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90c3RfaWRuYTMuYwotKysrIGIvdGVzdHMvdHN0X2lkbmEzLmMKLUBAIC01OSwxMyArNTksMTMgQEAgZG9pdCAodm9pZCkKLSB7Ci0gICBpbnQgcmM7Ci0gICBjaGFyICpvdXQgPSBOVUxMOwotLSAgc2l6ZV90IGk7Ci0rICB1bnNpZ25lZCBpOwotIAotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoaWRuYSkgLyBzaXplb2YgKGlkbmFbMF0pOyBpKyspCi0gICAgIHsKLSAgICAgICByYyA9IGlkbmFfdG9fdW5pY29kZV84ejh6IChpZG5hW2ldLmluLCAmb3V0LCAwKTsKLSAgICAgICBpZiAocmMgIT0gSUROQV9TVUNDRVNTKQotLQlmYWlsICgiSUROQTNbJWxkXSBmYWlsZWQgJWRcbiIsIGksIHJjKTsKLSsJZmFpbCAoIklETkEzWyV1XSBmYWlsZWQgJWRcbiIsIGksIHJjKTsKLSAKLSAgICAgICBpZiAoZGVidWcgJiYgcmMgPT0gSUROQV9TVUNDRVNTKQotIAl7Ci1AQCAtNzUsOSArNzUsOSBAQCBkb2l0ICh2b2lkKQotIAl9Ci0gCi0gICAgICAgaWYgKHN0cmNtcCAob3V0LCBpZG5hW2ldLm91dCkgIT0gMCkKLS0JZmFpbCAoIklETkEzWyVsZF0gZmFpbGVkXG4iLCBpKTsKLSsJZmFpbCAoIklETkEzWyV1XSBmYWlsZWRcbiIsIGkpOwotICAgICAgIGVsc2UgaWYgKGRlYnVnKQotLQlwcmludGYgKCJJRE5BM1slbGRdIHN1Y2Nlc3NcbiIsIGkpOwotKwlwcmludGYgKCJJRE5BM1sldV0gc3VjY2Vzc1xuIiwgaSk7Ci0gCi0gICAgICAgaWYgKG91dCkKLSAJaWRuX2ZyZWUgKG91dCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X25ma2MuYyBiL3Rlc3RzL3RzdF9uZmtjLmMKLWluZGV4IGQxNTBmZWMuLmY1YWY5YzYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90c3RfbmZrYy5jCi0rKysgYi90ZXN0cy90c3RfbmZrYy5jCi1AQCAtNjgsMTggKzY4LDE4IEBAIHZvaWQKLSBkb2l0ICh2b2lkKQotIHsKLSAgIGNoYXIgKm91dDsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKG5ma2MpIC8gc2l6ZW9mIChuZmtjWzBdKTsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotLQlwcmludGYgKCJORktDIGVudHJ5ICVsZFxuIiwgaSk7Ci0rCXByaW50ZiAoIk5GS0MgZW50cnkgJXVcbiIsIGkpOwotIAotICAgICAgIG91dCA9IHN0cmluZ3ByZXBfdXRmOF9uZmtjX25vcm1hbGl6ZSAobmZrY1tpXS5pbiwKLSAJCQkJCSAgICAoc3NpemVfdCkgc3RybGVuIChuZmtjW2ldLmluKSk7Ci0gICAgICAgaWYgKG91dCA9PSBOVUxMKQotIAl7Ci0tCSAgZmFpbCAoIk5GS0MgZW50cnkgJWxkIGZhaWxlZCBmYXRhbGx5XG4iLCBpKTsKLSsJICBmYWlsICgiTkZLQyBlbnRyeSAldSBmYWlsZWQgZmF0YWxseVxuIiwgaSk7Ci0gCSAgY29udGludWU7Ci0gCX0KLSAKLUBAIC0xMTQsNyArMTE0LDcgQEAgZG9pdCAodm9pZCkKLSAgICAgICBpZiAoc3RybGVuIChuZmtjW2ldLm91dCkgIT0gc3RybGVuIChvdXQpIHx8Ci0gCSAgbWVtY21wIChuZmtjW2ldLm91dCwgb3V0LCBzdHJsZW4gKG91dCkpICE9IDApCi0gCXsKLS0JICBmYWlsICgiTkZLQyBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKLSsJICBmYWlsICgiTkZLQyBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKLSAJfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9wcjI5LmMgYi90ZXN0cy90c3RfcHIyOS5jCi1pbmRleCAzZGM1NDY2Li4xMWQwZWRlIDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X3ByMjkuYwotKysrIGIvdGVzdHMvdHN0X3ByMjkuYwotQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0diB0dltdID0gewotIHZvaWQKLSBkb2l0ICh2b2lkKQotIHsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQgaTsKLSAgIGludCByYzsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHR2KSAvIHNpemVvZiAodHZbMF0pOyBpKyspCi1AQCAtMTAwLDcgKzEwMCw3IEBAIGRvaXQgKHZvaWQpCi0gCXsKLSAJICB1aW50MzJfdCAqcCwgKnE7Ci0gCi0tCSAgcHJpbnRmICgiUFIyOSBlbnRyeSAlbGQ6ICVzXG4iLCBpLCB0dltpXS5uYW1lKTsKLSsJICBwcmludGYgKCJQUjI5IGVudHJ5ICV1OiAlc1xuIiwgaSwgdHZbaV0ubmFtZSk7Ci0gCi0gCSAgcHJpbnRmICgiaW46XG4iKTsKLSAJICB1Y3M0cHJpbnQgKHR2W2ldLmluLCB0dltpXS5pbmxlbik7Ci1AQCAtMTIwLDcgKzEyMCw3IEBAIGRvaXQgKHZvaWQpCi0gICAgICAgcmMgPSBwcjI5XzQgKHR2W2ldLmluLCB0dltpXS5pbmxlbik7Ci0gICAgICAgaWYgKHJjICE9IHR2W2ldLnJjKQotIAl7Ci0tCSAgZmFpbCAoIlBSMjkgZW50cnkgJWxkIGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwgaSwgdHZbaV0ucmMsIHJjKTsKLSsJICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOwotIAkgIGNvbnRpbnVlOwotQEAgLTEyOSw3ICsxMjksNyBAQCBkb2l0ICh2b2lkKQotICAgICAgIHJjID0gcHIyOV80eiAodHZbaV0uaW4pOwotICAgICAgIGlmIChyYyAhPSB0dltpXS5yYykKLSAJewotLQkgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7Ci0rCSAgZmFpbCAoIlBSMjkgZW50cnkgJXUgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLCBpLCB0dltpXS5yYywgcmMpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBjb250aW51ZTsKLUBAIC0xNDIsNyArMTQyLDcgQEAgZG9pdCAodm9pZCkKLSAJcCA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4ICh0dltpXS5pbiwgKHNzaXplX3QpIHR2W2ldLmlubGVuLAotIAkJCQkgICAgICZpdGVtc19yZWFkLCAmaXRlbXNfd3JpdHRlbik7Ci0gCWlmIChwID09IE5VTEwpCi0tCSAgZmFpbCAoIkZBSUw6IHN0cmluZ3ByZXBfdWNzNF90b191dGY4KHR2WyVsZF0pID09IE5VTExcbiIsIGkpOwotKwkgIGZhaWwgKCJGQUlMOiBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCh0dlsldV0pID09IE5VTExcbiIsIGkpOwotIAlpZiAoZGVidWcpCi0gCSAgaGV4cHJpbnQgKHAsIHN0cmxlbiAocCkpOwotIAotQEAgLTE1MCw3ICsxNTAsNyBAQCBkb2l0ICh2b2lkKQotIAlmcmVlIChwKTsKLSAJaWYgKHJjICE9IHR2W2ldLnJjKQotIAkgIHsKLS0JICAgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsCi0rCSAgICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsCi0gCQkgIGksIHR2W2ldLnJjLCByYyk7Ci0gCSAgICBpZiAoZGVidWcpCi0gCSAgICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLWRpZmYgLS1naXQgYS90ZXN0cy90c3RfcHVueWNvZGUuYyBiL3Rlc3RzL3RzdF9wdW55Y29kZS5jCi1pbmRleCA0OTNiOGEyLi45OTc3NDRhIDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X3B1bnljb2RlLmMKLSsrKyBiL3Rlc3RzL3RzdF9wdW55Y29kZS5jCi1AQCAtMTczLDcgKzE3Myw4IEBAIGRvaXQgKHZvaWQpCi0gICBjaGFyICpwOwotICAgdWludDMyX3QgKnE7Ci0gICBpbnQgcmM7Ci0tICBzaXplX3QgaSwgb3V0bGVuOwotKyAgc2l6ZV90IG91dGxlbjsKLSsgIHVuc2lnbmVkIGk7Ci0gCi0gICBwID0gbWFsbG9jIChzaXplb2YgKCpwKSAqIEJVRlNJWik7Ci0gICBpZiAocCA9PSBOVUxMKQotQEAgLTE4Niw3ICsxODcsNyBAQCBkb2l0ICh2b2lkKQotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAocHVueWNvZGUpIC8gc2l6ZW9mIChwdW55Y29kZVswXSk7IGkrKykKLSAgICAgewotICAgICAgIGlmIChkZWJ1ZykKLS0JcHJpbnRmICgiUFVOWUNPREUgZW50cnkgJWxkOiAlc1xuIiwgaSwgcHVueWNvZGVbaV0ubmFtZSk7Ci0rCXByaW50ZiAoIlBVTllDT0RFIGVudHJ5ICV1OiAlc1xuIiwgaSwgcHVueWNvZGVbaV0ubmFtZSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci1AQCAtMTk5LDcgKzIwMCw3IEBAIGRvaXQgKHZvaWQpCi0gCQkJICAgIE5VTEwsICZvdXRsZW4sIHApOwotICAgICAgIGlmIChyYyAhPSBwdW55Y29kZVtpXS5yYykKLSAJewotLQkgIGZhaWwgKCJwdW55Y29kZV9lbmNvZGUoKSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotKwkgIGZhaWwgKCJwdW55Y29kZV9lbmNvZGUoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOwotIAkgIGNvbnRpbnVlOwotQEAgLTIyMSw3ICsyMjIsNyBAQCBkb2l0ICh2b2lkKQotIAkgIGlmIChzdHJsZW4gKHB1bnljb2RlW2ldLm91dCkgIT0gc3RybGVuIChwKSB8fAotIAkgICAgICBtZW1jbXAgKHB1bnljb2RlW2ldLm91dCwgcCwgc3RybGVuIChwKSkgIT0gMCkKLSAJICAgIHsKLS0JICAgICAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7Ci0rCSAgICAgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7Ci0gCSAgICAgIGlmIChkZWJ1ZykKLSAJCXByaW50ZiAoIkVSUk9SXG4iKTsKLSAJICAgIH0KLUBAIC0yNDEsNyArMjQyLDcgQEAgZG9pdCAodm9pZCkKLSAJCQkgICAgJm91dGxlbiwgcSwgTlVMTCk7Ci0gICAgICAgaWYgKHJjICE9IHB1bnljb2RlW2ldLnJjKQotIAl7Ci0tCSAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSsJICBmYWlsICgicHVueWNvZGUoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOwotIAkgIGNvbnRpbnVlOwotQEAgLTI2Miw3ICsyNjMsNyBAQCBkb2l0ICh2b2lkKQotIAkgIGlmIChwdW55Y29kZVtpXS5pbmxlbiAhPSBvdXRsZW4gfHwKLSAJICAgICAgbWVtY21wIChwdW55Y29kZVtpXS5pbiwgcSwgb3V0bGVuKSAhPSAwKQotIAkgICAgewotLQkgICAgICBmYWlsICgicHVueWNvZGVfZGVjb2RlKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7Ci0rCSAgICAgIGZhaWwgKCJwdW55Y29kZV9kZWNvZGUoKSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgICAgICBpZiAoZGVidWcpCi0gCQlwcmludGYgKCJFUlJPUlxuIik7Ci0gCSAgICB9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3N0cmVycm9yLmMgYi90ZXN0cy90c3Rfc3RyZXJyb3IuYwotaW5kZXggNzFmZmY1OS4uNzMwZjVlNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RzdF9zdHJlcnJvci5jCi0rKysgYi90ZXN0cy90c3Rfc3RyZXJyb3IuYwotQEAgLTExMCw3ICsxMTAsNyBAQCBkb2l0ICh2b2lkKQotICAgLyogSXRlcmF0ZSB0aHJvdWdoIGFsbCBlcnJvciBjb2Rlcy4gKi8KLSAKLSAgIHsKLS0gICAgc2l6ZV90IGk7Ci0rICAgIHVuc2lnbmVkIGk7Ci0gICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7Ci0gCi0gICAgIGZvciAoaSA9IDA7OyBpKyspCi1AQCAtMTI2LDEzICsxMjYsMTMgQEAgZG9pdCAodm9pZCkKLSAJICAgIGJyZWFrOwotIAkgIH0KLSAJaWYgKGRlYnVnKQotLQkgIHByaW50ZiAoImlkbmEgJWxkOiAlc1xuIiwgaSwgcCk7Ci0rCSAgcHJpbnRmICgiaWRuYSAldTogJXNcbiIsIGksIHApOwotIAlsYXN0X3AgPSBwOwotICAgICAgIH0KLSAgIH0KLSAKLSAgIHsKLS0gICAgc2l6ZV90IGk7Ci0rICAgIHVuc2lnbmVkIGk7Ci0gICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7Ci0gCi0gICAgIGZvciAoaSA9IDA7OyBpKyspCi1AQCAtMTQxLDEzICsxNDEsMTMgQEAgZG9pdCAodm9pZCkKLSAJaWYgKHAgPT0gbGFzdF9wKQotIAkgIGJyZWFrOwotIAlpZiAoZGVidWcpCi0tCSAgcHJpbnRmICgicHIyOSAlbGQ6ICVzXG4iLCBpLCBwKTsKLSsJICBwcmludGYgKCJwcjI5ICV1OiAlc1xuIiwgaSwgcCk7Ci0gCWxhc3RfcCA9IHA7Ci0gICAgICAgfQotICAgfQotIAotICAgewotLSAgICBzaXplX3QgaTsKLSsgICAgdW5zaWduZWQgaTsKLSAgICAgY29uc3QgY2hhciAqbGFzdF9wID0gTlVMTDsKLSAKLSAgICAgZm9yIChpID0gMDs7IGkrKykKLUBAIC0xNTYsMTMgKzE1NiwxMyBAQCBkb2l0ICh2b2lkKQotIAlpZiAocCA9PSBsYXN0X3ApCi0gCSAgYnJlYWs7Ci0gCWlmIChkZWJ1ZykKLS0JICBwcmludGYgKCJwdW55Y29kZSAlbGQ6ICVzXG4iLCBpLCBwKTsKLSsJICBwcmludGYgKCJwdW55Y29kZSAldTogJXNcbiIsIGksIHApOwotIAlsYXN0X3AgPSBwOwotICAgICAgIH0KLSAgIH0KLSAKLSAgIHsKLS0gICAgc2l6ZV90IGk7Ci0rICAgIHVuc2lnbmVkIGk7Ci0gICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7Ci0gCi0gICAgIGZvciAoaSA9IDA7OyBpKyspCi1AQCAtMTgzLDEzICsxODMsMTMgQEAgZG9pdCAodm9pZCkKLSAJICAgIGJyZWFrOwotIAkgIH0KLSAJaWYgKGRlYnVnKQotLQkgIHByaW50ZiAoInN0cmluZ3ByZXAgJWxkOiAlc1xuIiwgaSwgcCk7Ci0rCSAgcHJpbnRmICgic3RyaW5ncHJlcCAldTogJXNcbiIsIGksIHApOwotIAlsYXN0X3AgPSBwOwotICAgICAgIH0KLSAgIH0KLSAKLSAgIHsKLS0gICAgc2l6ZV90IGk7Ci0rICAgIHVuc2lnbmVkIGk7Ci0gICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7Ci0gCi0gICAgIGZvciAoaSA9IDA7OyBpKyspCi1AQCAtMTk4LDcgKzE5OCw3IEBAIGRvaXQgKHZvaWQpCi0gCWlmIChwID09IGxhc3RfcCkKLSAJICBicmVhazsKLSAJaWYgKGRlYnVnKQotLQkgIHByaW50ZiAoInRsZCAlbGQ6ICVzXG4iLCBpLCBwKTsKLSsJICBwcmludGYgKCJ0bGQgJXU6ICVzXG4iLCBpLCBwKTsKLSAJbGFzdF9wID0gcDsKLSAgICAgICB9Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYyBiL3Rlc3RzL3RzdF9zdHJpbmdwcmVwLmMKLWluZGV4IDE0OWNlNmYuLjdjOWFiMDYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCi0rKysgYi90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCi1AQCAtMjA1LDcgKzIwNSw3IEBAIGRvaXQgKHZvaWQpCi0gewotICAgY2hhciAqcDsKLSAgIGludCByYzsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQgaTsKLSAKLSAgIGlmICghc3RyaW5ncHJlcF9jaGVja192ZXJzaW9uIChTVFJJTkdQUkVQX1ZFUlNJT04pKQotICAgICBmYWlsICgic3RyaW5ncHJlcF9jaGVja192ZXJzaW9uIGZhaWxlZCAoaGVhZGVyICVzIHJ1bnRpbWUgJXMpXG4iLAotQEAgLTIyNCw3ICsyMjQsNyBAQCBkb2l0ICh2b2lkKQotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoc3RycHJlcCkgLyBzaXplb2YgKHN0cnByZXBbMF0pOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoZGVidWcpCi0tCXByaW50ZiAoIlNUUklOR1BSRVAgZW50cnkgJWxkXG4iLCBpKTsKLSsJcHJpbnRmICgiU1RSSU5HUFJFUCBlbnRyeSAldVxuIiwgaSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci1AQCAtMjQ3LDEyICsyNDcsMTIgQEAgZG9pdCAodm9pZCkKLSAJICBjb250aW51ZTsKLSAJZWxzZSBpZiAobCA9PSBOVUxMKQotIAkgIHsKLS0JICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJWxkXG4iLCBpKTsKLSsJICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJXVcbiIsIGkpOwotIAkgICAgY29udGludWU7Ci0gCSAgfQotIAllbHNlIGlmIChzdHJjbXAgKHN0cnByZXBbaV0uaW4sIHgpICE9IDApCi0gCSAgewotLQkgICAgZmFpbCAoImJhZCBVVEYtOCBpbiBlbnRyeSAlbGRcbiIsIGkpOwotKwkgICAgZmFpbCAoImJhZCBVVEYtOCBpbiBlbnRyeSAldVxuIiwgaSk7Ci0gCSAgICBpZiAoZGVidWcpCi0gCSAgICAgIHsKLSAJCXB1dHMgKCJleHBlY3RlZDoiKTsKLUBAIC0yNzQsNyArMjc0LDcgQEAgZG9pdCAodm9pZCkKLSAJCQkgICAgICAgIk5hbWVwcmVwIiwgc3RycHJlcFtpXS5mbGFncyk7Ci0gICAgICAgaWYgKHJjICE9IHN0cnByZXBbaV0ucmMpCi0gCXsKLS0JICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0rCSAgZmFpbCAoInN0cmluZ3ByZXAoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOwotIAkgIGlmIChyYyA9PSBTVFJJTkdQUkVQX09LKQotQEAgLTMwMiw3ICszMDIsNyBAQCBkb2l0ICh2b2lkKQotIAkgIGlmIChzdHJsZW4gKHN0cnByZXBbaV0ub3V0KSAhPSBzdHJsZW4gKHApIHx8Ci0gCSAgICAgIG1lbWNtcCAoc3RycHJlcFtpXS5vdXQsIHAsIHN0cmxlbiAocCkpICE9IDApCi0gCSAgICB7Ci0tCSAgICAgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7Ci0rCSAgICAgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJWxkIGZhaWxlZFxuIiwgKGxvbmcpIGkpOwotIAkgICAgICBpZiAoZGVidWcpCi0gCQlwcmludGYgKCJFUlJPUlxuIik7Ci0gCSAgICB9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3RsZC5jIGIvdGVzdHMvdHN0X3RsZC5jCi1pbmRleCAyZjhlMTJlLi5kMDM4Yzc5IDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X3RsZC5jCi0rKysgYi90ZXN0cy90c3RfdGxkLmMKLUBAIC04MCw3ICs4MCw3IEBAIGNvbnN0IFRsZF90YWJsZSAqIG15X3RsZF90YWJsZXNbXSA9Ci0gdm9pZAotIGRvaXQgKHZvaWQpCi0gewotLSAgc2l6ZV90IGk7Ci0rICB1bnNpZ25lZCBpOwotICAgY29uc3QgVGxkX3RhYmxlICp0bGR0YWJsZTsKLSAgIGNoYXIgKm91dDsKLSAgIHNpemVfdCBlcnJwb3M7Ci1AQCAtMjA2LDcgKzIwNiw3IEBAIGRvaXQgKHZvaWQpCi0gICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mICh0bGQpIC8gc2l6ZW9mICh0bGRbMF0pOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoZGVidWcpCi0tCXByaW50ZiAoIlRMRCBlbnRyeSAlbGQ6ICVzXG4iLCBpLCB0bGRbaV0ubmFtZSk7Ci0rCXByaW50ZiAoIlRMRCBlbnRyeSAldTogJXNcbiIsIGksIHRsZFtpXS5uYW1lKTsKLSAKLSAgICAgICBpZiAoZGVidWcpCi0gCXsKLUBAIC0yMTcsNyArMjE3LDcgQEAgZG9pdCAodm9pZCkKLSAgICAgICB0bGR0YWJsZSA9IHRsZF9kZWZhdWx0X3RhYmxlICh0bGRbaV0udGxkLCBOVUxMKTsKLSAgICAgICBpZiAodGxkdGFibGUgPT0gTlVMTCkKLSAJewotLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIHRsZF9nZXRfdGFibGUgKCVzKVxuIiwgaSwgdGxkW2ldLnRsZCk7Ci0rCSAgZmFpbCAoIlRMRCBlbnRyeSAldSB0bGRfZ2V0X3RhYmxlICglcylcbiIsIGksIHRsZFtpXS50bGQpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBjb250aW51ZTsKLUBAIC0yMjYsNyArMjI2LDcgQEAgZG9pdCAodm9pZCkKLSAgICAgICByYyA9IHRsZF9jaGVja180dCAodGxkW2ldLmluLCB0bGRbaV0uaW5sZW4sICZlcnJwb3MsIHRsZHRhYmxlKTsKLSAgICAgICBpZiAocmMgIT0gdGxkW2ldLnJjKQotIAl7Ci0tCSAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotKwkgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBjb250aW51ZTsKLUBAIC0yMzcsNyArMjM3LDcgQEAgZG9pdCAodm9pZCkKLSAKLSAgICAgICBpZiAocmMgIT0gdGxkW2ldLnJjKQotIAl7Ci0tCSAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKLSsJICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRVJST1JcbiIpOwotIAl9Ci1AQCAtMjQ1LDEyICsyNDUsMTIgQEAgZG9pdCAodm9pZCkKLSAJewotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoInJldHVybmVkIGVycnBvcyAlbGQgZXhwZWN0ZWQgZXJycG9zICVsZFxuIiwKLS0JCSAgICBlcnJwb3MsIHRsZFtpXS5lcnJwb3MpOwotKwkJICAgIChsb25nKSBlcnJwb3MsIChsb25nKSB0bGRbaV0uZXJycG9zKTsKLSAKLSAJICBpZiAodGxkW2ldLmVycnBvcyAhPSBlcnJwb3MpCi0gCSAgICB7Ci0tCSAgICAgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZCBiZWNhdXNlIGVycnBvcyAlbGQgIT0gJWxkXG4iLCBpLAotLQkJICAgIHRsZFtpXS5lcnJwb3MsIGVycnBvcyk7Ci0rCSAgICAgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkIGJlY2F1c2UgZXJycG9zICVsZCAhPSAlbGRcbiIsIGksCi0rCQkgICAgKGxvbmcpIHRsZFtpXS5lcnJwb3MsIChsb25nKSBlcnJwb3MpOwotIAkgICAgICBpZiAoZGVidWcpCi0gCQlwcmludGYgKCJFUlJPUlxuIik7Ci0gCSAgICB9Ci1AQCAtMjYyLDEyICsyNjIsMTIgQEAgZG9pdCAodm9pZCkKLSAJcmMgPSB0bGRfY2hlY2tfOHogKHRsZFtpXS5leGFtcGxlLCAmZXJycG9zLCBOVUxMKTsKLSAJaWYgKHJjICE9IHRsZFtpXS5yYykKLSAJICB7Ci0tCSAgICBmYWlsICgiVExEIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgICAgZmFpbCAoIlRMRCBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgICAgaWYgKGRlYnVnKQotIAkgICAgICBwcmludGYgKCJFUlJPUlxuIik7Ci0gCSAgfQotIAlpZiAoZGVidWcpCi0tCSAgcHJpbnRmICgiVExEIGVudHJ5ICVsZCB0bGRfY2hlY2tfOHogKCVzKVxuIiwgaSwgdGxkW2ldLmV4YW1wbGUpOwotKwkgIHByaW50ZiAoIlRMRCBlbnRyeSAldSB0bGRfY2hlY2tfOHogKCVzKVxuIiwgaSwgdGxkW2ldLmV4YW1wbGUpOwotICAgICAgIH0KLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS90ZXN0cy91dGlscy5jIGIvdGVzdHMvdXRpbHMuYwotaW5kZXggNzE3ZWUwMS4uNTU3N2RjMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL3V0aWxzLmMKLSsrKyBiL3Rlc3RzL3V0aWxzLmMKLUBAIC00OSw3ICs0OSw3IEBAIGVzY2FwZXByaW50IChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi0gewotICAgc2l6ZV90IGk7Ci0gCi0tICBwcmludGYgKCIgKGxlbmd0aCAlbGQgYnl0ZXMpOlxuXHQiLCBsZW4pOwotKyAgcHJpbnRmICgiIChsZW5ndGggJWxkIGJ5dGVzKTpcblx0IiwgKGxvbmcpIGxlbik7Ci0gICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoKChzdHJbaV0gJiAweEZGKSA+PSAnQScgJiYgKHN0cltpXSAmIDB4RkYpIDw9ICdaJykgfHwKLUBAIC01OCw3ICs1OCw3IEBAIGVzY2FwZXByaW50IChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi0gCSAgfHwgKHN0cltpXSAmIDB4RkYpID09ICcgJyB8fCAoc3RyW2ldICYgMHhGRikgPT0gJy4nKQotIAlwcmludGYgKCIlYyIsIChzdHJbaV0gJiAweEZGKSk7Ci0gICAgICAgZWxzZQotLQlwcmludGYgKCJcXHglMDJYIiwgKHN0cltpXSAmIDB4RkYpKTsKLSsJcHJpbnRmICgiXFx4JTAyWCIsICh1bnNpZ25lZCkgKHN0cltpXSAmIDB4RkYpKTsKLSAgICAgICBpZiAoKGkgKyAxKSAlIDE2ID09IDAgJiYgKGkgKyAxKSA8IGxlbikKLSAJcHJpbnRmICgiJ1xuXHQnIik7Ci0gICAgIH0KLUBAIC03Myw3ICs3Myw3IEBAIGhleHByaW50IChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi0gICBwcmludGYgKCJcdDs7ICIpOwotICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICB7Ci0tICAgICAgcHJpbnRmICgiJTAyeCAiLCAoc3RyW2ldICYgMHhGRikpOwotKyAgICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSAoc3RyW2ldICYgMHhGRikpOwotICAgICAgIGlmICgoaSArIDEpICUgOCA9PSAwKQotIAlwcmludGYgKCIgIik7Ci0gICAgICAgaWYgKChpICsgMSkgJSAxNiA9PSAwICYmIGkgKyAxIDwgbGVuKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoCmluZGV4IDk4YmE0ZDYuLjQzYmQyMzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoCkBAIC0xLDI1ICsxLDM0IEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgCitGcm9tIGNkZDllMmU5NjBlZWI0ZWRhN2IwOGYwMTEzZDBjZDAzNTI0YzFkNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxMCBKdWwgMjAxMiAwMjo0NDozMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsaWJpZG46IGZpeCBidWlsZCB3aXRoIGF1dG9tYWtlIDEuMTIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKIGF1dG9tYWtlIDEuMTIueCBoYXMgZGVwcmVjYXRlZCBBTV9QUk9HX01LRElSX1AgLCBhbmQgdGhyb3dzIGEgd2FybmluZyBmb3IgdGhhdCwKIGFuZCB0aGUgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIGJlY2F1c2Ugb2YgdGhlIC1XZXJyb3IgcGFyYW1ldGVyLgogCi1UaGVzZSBBTV9QUk9HX01LRElSX1AgYXJlIGNvbWluZyBmcm9tIGdldHRleHQsIGFuZCB0aGUgbGF0ZXN0IGdldHRleHQgY29kZSBoYXMgbm90IAorVGhlc2UgQU1fUFJPR19NS0RJUl9QIGFyZSBjb21pbmcgZnJvbSBnZXR0ZXh0LCBhbmQgdGhlIGxhdGVzdCBnZXR0ZXh0IGNvZGUgaGFzIG5vdAogZWxpbWluYXRlZCB0aGVzZSBkZXByZWNhdGVkIG1hY3JvcyB5ZXQuIFNvIGRpc2FibGUgdGhlIHRyZWF0bWVudCBvZiB3YXJuaW5ncwogYXMgZXJyb3JzIHVudGlsIGdldHRleHQgaXMgdXBkYXRlZCB0byByZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWFjcm9zLgogCiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNy8xMAogCi1JbmRleDogbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWRuLTEuMjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJpZG4tMS4yNC9jb25maWd1cmUuYWMKLUBAIC0yMyw3ICsyMyw3IEBAIEFDX0NPUFlSSUdIVChbQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgU2kKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjYxZGFkMi4uYzRmOTM1ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtHTlUgTGliaWRuXSwgWzEuMzRdLCBbYnVnLWxpYmlkbkBnbnUub3JnXSkKICBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKICBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiAgQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCiAtQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCAtV2Vycm9yIC1Xbm8tb3ZlcnJpZGVdKQogK0FNX0lOSVRfQVVUT01BS0UoWzEuMTAgLVdhbGwgLVduby1vdmVycmlkZV0pCi0gQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKQorIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCiAgCiAgIyBMaWJyYXJ5IGNvZGUgbW9kaWZpZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWSVNJT04rKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2YTZlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzNCArMCwwIEBACi1Gcm9tIDIzMDkzMGIzYmMzZTQzMWI4MTllYjQ1NDIwY2I0MjQ3NWQ4M2NhOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P3V0Zjg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1EYXRlOiBXZWQsIDEgRmViIDIwMTcgMTA6NDQ6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIGludHByb3BzLmggZm9yIGdjYy03IGNvbXBhdGliaWxpdHkKLQotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ2wvaW50cHJvcHMuaCAgICAgICAgICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbGliL2dsdGVzdHMvaW50cHJvcHMuaCB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dsL2ludHByb3BzLmggYi9nbC9pbnRwcm9wcy5oCi1pbmRleCBlMWZjZTVjLi5lYjA2YjY5IDEwMDY0NAotLS0tIGEvZ2wvaW50cHJvcHMuaAotKysrIGIvZ2wvaW50cHJvcHMuaAotQEAgLTEsMTggKzEsMTggQEAKLSAvKiBpbnRwcm9wcy5oIC0tIHByb3BlcnRpZXMgb2YgaW50ZWdlciB0eXBlcwotIAotLSAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLS0gICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gLyogV3JpdHRlbiBieSBQYXVsIEVnZ2VydC4gICovCi1AQCAtNDcsMTIgKzQ3LDE2IEBACi0gCi0gLyogTWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgZm9yIGludGVnZXIgdHlwZXMgYW5kIGV4cHJlc3Npb25zLiAgKi8KLSAKLSsvKiBUaGUgd2lkdGggaW4gYml0cyBvZiB0aGUgaW50ZWdlciB0eXBlIG9yIGV4cHJlc3Npb24gVC4KLSsgICBQYWRkaW5nIGJpdHMgYXJlIG5vdCBzdXBwb3J0ZWQ7IHRoaXMgaXMgY2hlY2tlZCBhdCBjb21waWxlLXRpbWUgYmVsb3cuICAqLwotKyNkZWZpbmUgVFlQRV9XSURUSCh0KSAoc2l6ZW9mICh0KSAqIENIQVJfQklUKQotKwotIC8qIFRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlcyBmb3IgdGhlIGludGVnZXIgdHlwZSBULiAgKi8KLSAjZGVmaW5lIFRZUEVfTUlOSU1VTSh0KSAoKHQpIH4gVFlQRV9NQVhJTVVNICh0KSkKLSAjZGVmaW5lIFRZUEVfTUFYSU1VTSh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAoKHQpICghIFRZUEVfU0lHTkVEICh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgPyAodCkgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIDogKCgoKHQpIDEgPDwgKHNpemVvZiAodCkgKiBDSEFSX0JJVCAtIDIpKSAtIDEpICogMiArIDEpKSkKLSsgICAgICAgIDogKCgoKHQpIDEgPDwgKFRZUEVfV0lEVEggKHQpIC0gMikpIC0gMSkgKiAyICsgMSkpKQotIAotIC8qIFRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlcyBmb3IgdGhlIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24gRSwKLSAgICBhZnRlciBpbnRlZ2VyIHByb21vdGlvbi4gIEUgc2hvdWxkIG5vdCBoYXZlIHNpZGUgZWZmZWN0cy4gICovCi1AQCAtNjUsNyArNjksMTMgQEAKLSAgICA/IF9HTF9TSUdORURfSU5UX01BWElNVU0gKGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOiBfR0xfSU5UX05FR0FURV9DT05WRVJUIChlLCAxKSkKLSAjZGVmaW5lIF9HTF9TSUdORURfSU5UX01BWElNVU0oZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAoKChfR0xfSU5UX0NPTlZFUlQgKGUsIDEpIDw8IChzaXplb2YgKChlKSArIDApICogQ0hBUl9CSVQgLSAyKSkgLSAxKSAqIDIgKyAxKQotKyAgKCgoX0dMX0lOVF9DT05WRVJUIChlLCAxKSA8PCAoVFlQRV9XSURUSCAoKGUpICsgMCkgLSAyKSkgLSAxKSAqIDIgKyAxKQotKwotKy8qIFdvcmsgYXJvdW5kIE9wZW5WTVMgaW5jb21wYXRpYmlsaXR5IHdpdGggQzk5LiAgKi8KLSsjaWYgIWRlZmluZWQgTExPTkdfTUFYICYmIGRlZmluZWQgX19JTlQ2NF9NQVgKLSsjIGRlZmluZSBMTE9OR19NQVggX19JTlQ2NF9NQVgKLSsjIGRlZmluZSBMTE9OR19NSU4gX19JTlQ2NF9NSU4KLSsjZW5kaWYKLSAKLSAvKiBUaGlzIGluY2x1ZGUgZmlsZSBhc3N1bWVzIHRoYXQgc2lnbmVkIHR5cGVzIGFyZSB0d28ncyBjb21wbGVtZW50IHdpdGhvdXQKLSAgICBwYWRkaW5nIGJpdHM7IHRoZSBhYm92ZSBtYWNyb3MgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3Igb3RoZXJ3aXNlLgotQEAgLTg0LDEwICs5NCwxNSBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBpbnQpID09IExPTkdfTUFYKTsKLSB2ZXJpZnkgKFRZUEVfTUlOSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUlOKTsKLSB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAjZW5kaWYKLSsvKiBTaW1pbGFybHksIHNhbml0eS1jaGVjayBvbmUgSVNPL0lFQyBUUyAxODY2MS0xOjIwMTQgbWFjcm8gaWYgZGVmaW5lZC4gICovCi0rI2lmZGVmIFVJTlRfV0lEVEgKLSt2ZXJpZnkgKFRZUEVfV0lEVEggKHVuc2lnbmVkIGludCkgPT0gVUlOVF9XSURUSCk7Ci0rI2VuZGlmCi0gCi0gLyogRG9lcyB0aGUgX190eXBlb2ZfXyBrZXl3b3JkIHdvcms/ICBUaGlzIGNvdWxkIGJlIGRvbmUgYnkKLSAgICAnY29uZmlndXJlJywgYnV0IGZvciBub3cgaXQncyBlYXNpZXIgdG8gZG8gaXQgYnkgaGFuZC4gICovCi0tI2lmICgyIDw9IF9fR05VQ19fIHx8IGRlZmluZWQgX19JQk1fX1RZUEVPRl9fIFwKLSsjaWYgKDIgPD0gX19HTlVDX18gXAotKyAgICAgfHwgKDEyMTAgPD0gX19JQk1DX18gJiYgZGVmaW5lZCBfX0lCTV9fVFlQRU9GX18pIFwKLSAgICAgIHx8ICgweDUxMTAgPD0gX19TVU5QUk9fQyAmJiAhX19TVERDX18pKQotICMgZGVmaW5lIF9HTF9IQVZFX19fVFlQRU9GX18gMQotICNlbHNlCi1AQCAtMTE2LDggKzEzMSw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICAgIHNpZ25lZCwgdGhpcyBtYWNybyBtYXkgb3ZlcmVzdGltYXRlIHRoZSB0cnVlIGJvdW5kIGJ5IG9uZSBieXRlIHdoZW4KLSAgICBhcHBsaWVkIHRvIHVuc2lnbmVkIHR5cGVzIG9mIHNpemUgMiwgNCwgMTYsIC4uLiBieXRlcy4gICovCi0gI2RlZmluZSBJTlRfU1RSTEVOX0JPVU5EKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gIChJTlRfQklUU19TVFJMRU5fQk9VTkQgKHNpemVvZiAodCkgKiBDSEFSX0JJVCAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgLSBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpICAgICAgICBcCi0rICAoSU5UX0JJVFNfU1RSTEVOX0JPVU5EIChUWVBFX1dJRFRIICh0KSAtIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkgXAotICAgICsgX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKQotIAotIC8qIEJvdW5kIG9uIGJ1ZmZlciBzaXplIG5lZWRlZCB0byByZXByZXNlbnQgYW4gaW50ZWdlciB0eXBlIG9yIGV4cHJlc3Npb24gVCwKLUBAIC0yMjIsMjAgKzIzNiwyMyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgICA/IChhKSA8IChtaW4pID4+IChiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA6IChtYXgpID4+IChiKSA8IChhKSkKLSAKLS0vKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4gUCBpcyBudWxsLiAgKi8KLS0jZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19XSVRIX05VTEwgKDcgPD0gX19HTlVDX18pCi0rLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChBLCBCLCBQKSB3b3JrcyB3aGVuIFAgaXMgbm9uLW51bGwuICAqLwotKyNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XICg1IDw9IF9fR05VQ19fKQotKwotKy8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvd19wIChBLCBCLCBDKSB3b3Jrcy4gICovCi0rI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUCAoNyA8PSBfX0dOVUNfXykKLSAKLSAvKiBUaGUgX0dMKl9PVkVSRkxPVyBtYWNyb3MgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgYXMgdGhlCi0gICAgKl9SQU5HRV9PVkVSRkxPVyBtYWNyb3MsIGV4Y2VwdCB0aGF0IHRoZXkgZG8gbm90IGFzc3VtZSB0aGF0IG9wZXJhbmRzCi0gICAgKGUuZy4sIEEgYW5kIEIpIGhhdmUgdGhlIHNhbWUgdHlwZSBhcyBNSU4gYW5kIE1BWC4gIEluc3RlYWQsIHRoZXkgYXNzdW1lCi0gICAgdGhhdCB0aGUgcmVzdWx0IChlLmcuLCBBICsgQikgaGFzIHRoYXQgdHlwZS4gICovCi0tI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19XSVRIX05VTEwKLS0jIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KQotLSAgIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKyAoYikpICopIDApCi0tIyBkZWZpbmUgX0dMX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KQotLSAgIF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgLSAoYikpICopIDApCi0tIyBkZWZpbmUgX0dMX01VTFRJUExZX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KQotLSAgIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKiAoYikpICopIDApCi0rI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QCi0rIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3dfcCAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSArIChiKSkpIDApCi0rIyBkZWZpbmUgX0dMX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3dfcCAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAtIChiKSkpIDApCi0rIyBkZWZpbmUgX0dMX01VTFRJUExZX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3dfcCAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAqIChiKSkpIDApCi0gI2Vsc2UKLSAjIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgobWluKSA8IDAgPyBJTlRfQUREX1JBTkdFX09WRVJGTE9XIChhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICBcCi1AQCAtMzE1LDcgKzMzMiw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICAgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyAoYSwgYiwgX0dMX0FERF9PVkVSRkxPVykKLSAjZGVmaW5lIElOVF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiKSBcCi0gICBfR0xfQklOQVJZX09QX09WRVJGTE9XIChhLCBiLCBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1cpCi0tI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19XSVRIX05VTEwKLSsjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AKLSAjIGRlZmluZSBJTlRfTkVHQVRFX09WRVJGTE9XKGEpIElOVF9TVUJUUkFDVF9PVkVSRkxPVyAoMCwgYSkKLSAjZWxzZQotICMgZGVmaW5lIElOVF9ORUdBVEVfT1ZFUkZMT1coYSkgXAotQEAgLTM0OSwxMCArMzY2LDYgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7Ci0gI2RlZmluZSBJTlRfTVVMVElQTFlfV1JBUFYoYSwgYiwgcikgXAotICAgX0dMX0lOVF9PUF9XUkFQViAoYSwgYiwgciwgKiwgX19idWlsdGluX211bF9vdmVyZmxvdywgSU5UX01VTFRJUExZX09WRVJGTE9XKQotIAotLSNpZm5kZWYgX19oYXNfYnVpbHRpbgotLSMgZGVmaW5lIF9faGFzX2J1aWx0aW4oeCkgMAotLSNlbmRpZgotLQotIC8qIE5vbnplcm8gaWYgdGhpcyBjb21waWxlciBoYXMgR0NDIGJ1ZyA2ODE5MyBvciBDbGFuZyBidWcgMjUzOTAuICBTZWU6Ci0gICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjgxOTMKLSAgICBodHRwczovL2xsdm0ub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTI1MzkwCi1AQCAtMzY5LDcgKzM4Miw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICAgIHRoZSBvcGVyYXRpb24uICBCVUlMVElOIGlzIHRoZSBidWlsdGluIG9wZXJhdGlvbiwgYW5kIE9WRVJGTE9XIHRoZQotICAgIG92ZXJmbG93IHByZWRpY2F0ZS4gIFJldHVybiAxIGlmIHRoZSByZXN1bHQgb3ZlcmZsb3dzLiAgU2VlIGFib3ZlCi0gICAgZm9yIHJlc3RyaWN0aW9ucy4gICovCi0tI2lmIDUgPD0gX19HTlVDX18gfHwgX19oYXNfYnVpbHRpbiAoX19idWlsdGluX2FkZF9vdmVyZmxvdykKLSsjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XCi0gIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBvcCwgYnVpbHRpbiwgb3ZlcmZsb3cpIGJ1aWx0aW4gKGEsIGIsIHIpCi0gI2VsaWYgMjAxMTEyIDw9IF9fU1REQ19WRVJTSU9OX18gJiYgIV9HTF9fR0VORVJJQ19CT0dVUwotICMgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFYoYSwgYiwgciwgb3AsIGJ1aWx0aW4sIG92ZXJmbG93KSBcCi1AQCAtNDEyLDcgKzQyNSw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICMgZWxzZQotICMgIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWX0xPTkdJU0goYSwgYiwgciwgb3AsIG92ZXJmbG93KSBcCi0gICAgIF9HTF9JTlRfT1BfQ0FMQyAoYSwgYiwgciwgb3AsIG92ZXJmbG93LCB1bnNpZ25lZCBsb25nIGludCwgXAotLSAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50LCBMT05HX01JTiwgTE9OR19NQVgpKQotKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50LCBMT05HX01JTiwgTE9OR19NQVgpCi0gIyBlbmRpZgotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2xpYi9nbHRlc3RzL2ludHByb3BzLmggYi9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oCi1pbmRleCBlMWZjZTVjLi5lYjA2YjY5IDEwMDY0NAotLS0tIGEvbGliL2dsdGVzdHMvaW50cHJvcHMuaAotKysrIGIvbGliL2dsdGVzdHMvaW50cHJvcHMuaAotQEAgLTEsMTggKzEsMTggQEAKLSAvKiBpbnRwcm9wcy5oIC0tIHByb3BlcnRpZXMgb2YgaW50ZWdlciB0eXBlcwotIAotLSAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLS0gICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gLyogV3JpdHRlbiBieSBQYXVsIEVnZ2VydC4gICovCi1AQCAtNDcsMTIgKzQ3LDE2IEBACi0gCi0gLyogTWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgZm9yIGludGVnZXIgdHlwZXMgYW5kIGV4cHJlc3Npb25zLiAgKi8KLSAKLSsvKiBUaGUgd2lkdGggaW4gYml0cyBvZiB0aGUgaW50ZWdlciB0eXBlIG9yIGV4cHJlc3Npb24gVC4KLSsgICBQYWRkaW5nIGJpdHMgYXJlIG5vdCBzdXBwb3J0ZWQ7IHRoaXMgaXMgY2hlY2tlZCBhdCBjb21waWxlLXRpbWUgYmVsb3cuICAqLwotKyNkZWZpbmUgVFlQRV9XSURUSCh0KSAoc2l6ZW9mICh0KSAqIENIQVJfQklUKQotKwotIC8qIFRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlcyBmb3IgdGhlIGludGVnZXIgdHlwZSBULiAgKi8KLSAjZGVmaW5lIFRZUEVfTUlOSU1VTSh0KSAoKHQpIH4gVFlQRV9NQVhJTVVNICh0KSkKLSAjZGVmaW5lIFRZUEVfTUFYSU1VTSh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAoKHQpICghIFRZUEVfU0lHTkVEICh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgPyAodCkgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIDogKCgoKHQpIDEgPDwgKHNpemVvZiAodCkgKiBDSEFSX0JJVCAtIDIpKSAtIDEpICogMiArIDEpKSkKLSsgICAgICAgIDogKCgoKHQpIDEgPDwgKFRZUEVfV0lEVEggKHQpIC0gMikpIC0gMSkgKiAyICsgMSkpKQotIAotIC8qIFRoZSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlcyBmb3IgdGhlIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24gRSwKLSAgICBhZnRlciBpbnRlZ2VyIHByb21vdGlvbi4gIEUgc2hvdWxkIG5vdCBoYXZlIHNpZGUgZWZmZWN0cy4gICovCi1AQCAtNjUsNyArNjksMTMgQEAKLSAgICA/IF9HTF9TSUdORURfSU5UX01BWElNVU0gKGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOiBfR0xfSU5UX05FR0FURV9DT05WRVJUIChlLCAxKSkKLSAjZGVmaW5lIF9HTF9TSUdORURfSU5UX01BWElNVU0oZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAoKChfR0xfSU5UX0NPTlZFUlQgKGUsIDEpIDw8IChzaXplb2YgKChlKSArIDApICogQ0hBUl9CSVQgLSAyKSkgLSAxKSAqIDIgKyAxKQotKyAgKCgoX0dMX0lOVF9DT05WRVJUIChlLCAxKSA8PCAoVFlQRV9XSURUSCAoKGUpICsgMCkgLSAyKSkgLSAxKSAqIDIgKyAxKQotKwotKy8qIFdvcmsgYXJvdW5kIE9wZW5WTVMgaW5jb21wYXRpYmlsaXR5IHdpdGggQzk5LiAgKi8KLSsjaWYgIWRlZmluZWQgTExPTkdfTUFYICYmIGRlZmluZWQgX19JTlQ2NF9NQVgKLSsjIGRlZmluZSBMTE9OR19NQVggX19JTlQ2NF9NQVgKLSsjIGRlZmluZSBMTE9OR19NSU4gX19JTlQ2NF9NSU4KLSsjZW5kaWYKLSAKLSAvKiBUaGlzIGluY2x1ZGUgZmlsZSBhc3N1bWVzIHRoYXQgc2lnbmVkIHR5cGVzIGFyZSB0d28ncyBjb21wbGVtZW50IHdpdGhvdXQKLSAgICBwYWRkaW5nIGJpdHM7IHRoZSBhYm92ZSBtYWNyb3MgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3Igb3RoZXJ3aXNlLgotQEAgLTg0LDEwICs5NCwxNSBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBpbnQpID09IExPTkdfTUFYKTsKLSB2ZXJpZnkgKFRZUEVfTUlOSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUlOKTsKLSB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAjZW5kaWYKLSsvKiBTaW1pbGFybHksIHNhbml0eS1jaGVjayBvbmUgSVNPL0lFQyBUUyAxODY2MS0xOjIwMTQgbWFjcm8gaWYgZGVmaW5lZC4gICovCi0rI2lmZGVmIFVJTlRfV0lEVEgKLSt2ZXJpZnkgKFRZUEVfV0lEVEggKHVuc2lnbmVkIGludCkgPT0gVUlOVF9XSURUSCk7Ci0rI2VuZGlmCi0gCi0gLyogRG9lcyB0aGUgX190eXBlb2ZfXyBrZXl3b3JkIHdvcms/ICBUaGlzIGNvdWxkIGJlIGRvbmUgYnkKLSAgICAnY29uZmlndXJlJywgYnV0IGZvciBub3cgaXQncyBlYXNpZXIgdG8gZG8gaXQgYnkgaGFuZC4gICovCi0tI2lmICgyIDw9IF9fR05VQ19fIHx8IGRlZmluZWQgX19JQk1fX1RZUEVPRl9fIFwKLSsjaWYgKDIgPD0gX19HTlVDX18gXAotKyAgICAgfHwgKDEyMTAgPD0gX19JQk1DX18gJiYgZGVmaW5lZCBfX0lCTV9fVFlQRU9GX18pIFwKLSAgICAgIHx8ICgweDUxMTAgPD0gX19TVU5QUk9fQyAmJiAhX19TVERDX18pKQotICMgZGVmaW5lIF9HTF9IQVZFX19fVFlQRU9GX18gMQotICNlbHNlCi1AQCAtMTE2LDggKzEzMSw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICAgIHNpZ25lZCwgdGhpcyBtYWNybyBtYXkgb3ZlcmVzdGltYXRlIHRoZSB0cnVlIGJvdW5kIGJ5IG9uZSBieXRlIHdoZW4KLSAgICBhcHBsaWVkIHRvIHVuc2lnbmVkIHR5cGVzIG9mIHNpemUgMiwgNCwgMTYsIC4uLiBieXRlcy4gICovCi0gI2RlZmluZSBJTlRfU1RSTEVOX0JPVU5EKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gIChJTlRfQklUU19TVFJMRU5fQk9VTkQgKHNpemVvZiAodCkgKiBDSEFSX0JJVCAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgLSBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpICAgICAgICBcCi0rICAoSU5UX0JJVFNfU1RSTEVOX0JPVU5EIChUWVBFX1dJRFRIICh0KSAtIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkgXAotICAgICsgX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKQotIAotIC8qIEJvdW5kIG9uIGJ1ZmZlciBzaXplIG5lZWRlZCB0byByZXByZXNlbnQgYW4gaW50ZWdlciB0eXBlIG9yIGV4cHJlc3Npb24gVCwKLUBAIC0yMjIsMjAgKzIzNiwyMyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgICA/IChhKSA8IChtaW4pID4+IChiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA6IChtYXgpID4+IChiKSA8IChhKSkKLSAKLS0vKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4gUCBpcyBudWxsLiAgKi8KLS0jZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19XSVRIX05VTEwgKDcgPD0gX19HTlVDX18pCi0rLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChBLCBCLCBQKSB3b3JrcyB3aGVuIFAgaXMgbm9uLW51bGwuICAqLwotKyNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XICg1IDw9IF9fR05VQ19fKQotKwotKy8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvd19wIChBLCBCLCBDKSB3b3Jrcy4gICovCi0rI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUCAoNyA8PSBfX0dOVUNfXykKLSAKLSAvKiBUaGUgX0dMKl9PVkVSRkxPVyBtYWNyb3MgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgYXMgdGhlCi0gICAgKl9SQU5HRV9PVkVSRkxPVyBtYWNyb3MsIGV4Y2VwdCB0aGF0IHRoZXkgZG8gbm90IGFzc3VtZSB0aGF0IG9wZXJhbmRzCi0gICAgKGUuZy4sIEEgYW5kIEIpIGhhdmUgdGhlIHNhbWUgdHlwZSBhcyBNSU4gYW5kIE1BWC4gIEluc3RlYWQsIHRoZXkgYXNzdW1lCi0gICAgdGhhdCB0aGUgcmVzdWx0IChlLmcuLCBBICsgQikgaGFzIHRoYXQgdHlwZS4gICovCi0tI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19XSVRIX05VTEwKLS0jIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KQotLSAgIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKyAoYikpICopIDApCi0tIyBkZWZpbmUgX0dMX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KQotLSAgIF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3cgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgLSAoYikpICopIDApCi0tIyBkZWZpbmUgX0dMX01VTFRJUExZX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KQotLSAgIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3cgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKiAoYikpICopIDApCi0rI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QCi0rIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3dfcCAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSArIChiKSkpIDApCi0rIyBkZWZpbmUgX0dMX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3dfcCAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAtIChiKSkpIDApCi0rIyBkZWZpbmUgX0dMX01VTFRJUExZX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3dfcCAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAqIChiKSkpIDApCi0gI2Vsc2UKLSAjIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgobWluKSA8IDAgPyBJTlRfQUREX1JBTkdFX09WRVJGTE9XIChhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICBcCi1AQCAtMzE1LDcgKzMzMiw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICAgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyAoYSwgYiwgX0dMX0FERF9PVkVSRkxPVykKLSAjZGVmaW5lIElOVF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiKSBcCi0gICBfR0xfQklOQVJZX09QX09WRVJGTE9XIChhLCBiLCBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1cpCi0tI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19XSVRIX05VTEwKLSsjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AKLSAjIGRlZmluZSBJTlRfTkVHQVRFX09WRVJGTE9XKGEpIElOVF9TVUJUUkFDVF9PVkVSRkxPVyAoMCwgYSkKLSAjZWxzZQotICMgZGVmaW5lIElOVF9ORUdBVEVfT1ZFUkZMT1coYSkgXAotQEAgLTM0OSwxMCArMzY2LDYgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7Ci0gI2RlZmluZSBJTlRfTVVMVElQTFlfV1JBUFYoYSwgYiwgcikgXAotICAgX0dMX0lOVF9PUF9XUkFQViAoYSwgYiwgciwgKiwgX19idWlsdGluX211bF9vdmVyZmxvdywgSU5UX01VTFRJUExZX09WRVJGTE9XKQotIAotLSNpZm5kZWYgX19oYXNfYnVpbHRpbgotLSMgZGVmaW5lIF9faGFzX2J1aWx0aW4oeCkgMAotLSNlbmRpZgotLQotIC8qIE5vbnplcm8gaWYgdGhpcyBjb21waWxlciBoYXMgR0NDIGJ1ZyA2ODE5MyBvciBDbGFuZyBidWcgMjUzOTAuICBTZWU6Ci0gICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjgxOTMKLSAgICBodHRwczovL2xsdm0ub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTI1MzkwCi1AQCAtMzY5LDcgKzM4Miw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICAgIHRoZSBvcGVyYXRpb24uICBCVUlMVElOIGlzIHRoZSBidWlsdGluIG9wZXJhdGlvbiwgYW5kIE9WRVJGTE9XIHRoZQotICAgIG92ZXJmbG93IHByZWRpY2F0ZS4gIFJldHVybiAxIGlmIHRoZSByZXN1bHQgb3ZlcmZsb3dzLiAgU2VlIGFib3ZlCi0gICAgZm9yIHJlc3RyaWN0aW9ucy4gICovCi0tI2lmIDUgPD0gX19HTlVDX18gfHwgX19oYXNfYnVpbHRpbiAoX19idWlsdGluX2FkZF9vdmVyZmxvdykKLSsjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XCi0gIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBvcCwgYnVpbHRpbiwgb3ZlcmZsb3cpIGJ1aWx0aW4gKGEsIGIsIHIpCi0gI2VsaWYgMjAxMTEyIDw9IF9fU1REQ19WRVJTSU9OX18gJiYgIV9HTF9fR0VORVJJQ19CT0dVUwotICMgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFYoYSwgYiwgciwgb3AsIGJ1aWx0aW4sIG92ZXJmbG93KSBcCi1AQCAtNDEyLDcgKzQyNSw3IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICMgZWxzZQotICMgIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWX0xPTkdJU0goYSwgYiwgciwgb3AsIG92ZXJmbG93KSBcCi0gICAgIF9HTF9JTlRfT1BfQ0FMQyAoYSwgYiwgciwgb3AsIG92ZXJmbG93LCB1bnNpZ25lZCBsb25nIGludCwgXAotLSAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50LCBMT05HX01JTiwgTE9OR19NQVgpKQotKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50LCBMT05HX01JTiwgTE9OR19NQVgpCi0gIyBlbmRpZgotICNlbmRpZgotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKaW5kZXggZGI5MTMxNy4uM2MwNTU5ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gZDRmNjRiNzg0MTkxMzllZGEzYzBlMWM2ZWUxMTZiYjVmNzBlYTY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIgTWF5IDIwMTIgMTg6MDU6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlidGFzbjE6IGZpeCBidWlsZCB3aXRoIGF1dG9tYWtlIDEuMTIKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFRoaXMgcGF0Y2ggZml4ZXMgZm9sbG93aW5nIGlzc3VlIHdpdGggYXV0b21ha2UgMS4xMgpAQCAtOSwxMiArMTQsMTYgQEAKIFNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDEyLzA1LzAzCiAKLUluZGV4OiBsaWJpZG4tMS4zMy9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJpZG4tMS4zMy5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGxpYmlkbi0xLjMzL2NvbmZpZ3VyZS5hYwotQEAgLTMzLDYgKzMzLDEwIEBAIEFDX1NVQlNUKExUX0NVUlJFTlQsIDE3KQotIEFDX1NVQlNUKExUX1JFVklTSU9OLCAxNikKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODI5NzY0OS4uN2I5NjI2ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzMsNiArMzMsMTAgQEAgQUNfU1VCU1QoTFRfQ1VSUkVOVCwgMTgpCisgQUNfU1VCU1QoTFRfUkVWSVNJT04sIDApCiAgQUNfU1VCU1QoTFRfQUdFLCA2KQogIAogKyMgYXV0b21ha2UgMS4xMiBzZWVtcyB0byByZXF1aXJlIHRoaXMsIGJ1dCBhdXRvbWFrZSAxLjExIGRvZXNuJ3QgcmVjb2duaXplIGl0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMi9VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yL1Vuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZTUwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMi9VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApAQCAtMCwwICsxLDIzIEBACitVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAorCitsb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Cit3aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCitwcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KK2NvcmV1dGlscworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0luZGV4OiBsaWJpZG4yLTIuMC41L3VuaXN0cmluZy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmlkbjItMi4wLjUub3JpZy91bmlzdHJpbmcvTWFrZWZpbGUuYW0KKysrKyBsaWJpZG4yLTIuMC41L3VuaXN0cmluZy9NYWtlZmlsZS5hbQorQEAgLTI5Myw3ICsyOTMsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKKyAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCisgCSAgICBkYXJ3aW5bNTZdKikgXAorIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCistCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCisrCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKKyAJICAgICopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjJfMi4wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGFmN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjJfMi4wLjUuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiKEdQTHYyKyB8IExHUEx2MykgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYjkwZTc1ZWY5N2NjNjMxOGNlNGYyZmJkYTYyZmU0ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4yLmM7ZW5kbGluZT0xNjttZDU9MDI4M2FlYzI4ZTA0OWY1YmNhYWVlZTUyYWE4NjU4NzQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbjIuaC5pbjtlbmRsaW5lPTI3O21kNT1jMmNkMjhkM2Y4NzI2MGYxNTdmMDIyZWFiYjgzNzE0ZiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL1Vuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWFmOWE1YjlkMDNiMGNjZTM3NjBmMzRiMzEyNGViMzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTNmNjkxNzA4ODZmMWZhNmZhNWIzMzI0MzljN2E3N2E3ZDIyNjI2YTgyZWYxN2UyYzEyMjQ4NThiYjRjYTJiOCIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBndGstZG9jIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitMSUNFTlNFXyR7UE59ID0gIihHUEx2MisgfCBMR1BMdjMpIgorTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOGJkYmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiKExHUEx2Mi4xKyB8IExHUEx2MykgJiBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZjRiZTQ3OTQwYTkxZWU2OTU1NmY1ZjcxZWVkNGFlYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbmEuaDtlbmRsaW5lPTIxO21kNT0zN2NmZmFkMjQ4MDdmNDQ2YTI0ZGUzZTczNzFmMjBiOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaWRuLmM7ZW5kbGluZT0yMDttZDU9MDllOTcwMzRhODg3N2IzNDUxY2I2NTA2NWZjMmMwNmUiCi1ERVBFTkRTID0gInZpcnR1YWwvbGliaWNvbnYiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNy1jb21wYXRpYmlsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaWRuLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhOWFhN2UwMDM2NjVkZTljODJiZDNmOWZjNmNjZjMwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NGE3YWFiNjM1YmI3MjFjZWVmNmJlZWNjNGQ0OWRmZDE5NDc4MzI1ZTFiNDdmMzE5NmY3ZDJhY2M0OTMwZTE5IgotCi0jIGNvbW1hbmQgdG9vbCBpcyB1bmRlciBHUEx2MyssIHdoaWxlIGxpYmlkbiBpdHNlbGYgaXMgdW5kZXIgTEdQTHYyLjErIG9yIExHUEx2MwotIyBzbyBwYWNrYWdlIGNvbW1hbmQgaW50byBhIHNlcGFyYXRlIHBhY2thZ2UKLVBBQ0tBR0VTID0rICJpZG4iCi1GSUxFU19pZG4gPSAiJHtiaW5kaXJ9LyoiCi0KLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIHwgTEdQTHYzIgotTElDRU5TRV9pZG4gPSAiR1BMdjMrIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWNzaGFycCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2VtYWNzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1Y2U1YjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzUuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiKExHUEx2Mi4xKyB8IExHUEx2MykgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZjRiZTQ3OTQwYTkxZWU2OTU1NmY1ZjcxZWVkNGFlYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbmEuaDtlbmRsaW5lPTIxO21kNT0zN2NmZmFkMjQ4MDdmNDQ2YTI0ZGUzZTczNzFmMjBiOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaWRuLmM7ZW5kbGluZT0yMDttZDU9MDllOTcwMzRhODg3N2IzNDUxY2I2NTA2NWZjMmMwNmUiCitERVBFTkRTID0gInZpcnR1YWwvbGliaWNvbnYgYXV0b2NvbmYtYXJjaGl2ZSIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBndGstZG9jCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJpZG4vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZWY2MzQxNDFmZTM5MzI2Y2IzNTRiNzVlODkxZmVhZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTFhZjEwMDViNDZiN2IxNWQwNTdkN2YxMDczMTVhMWFkNDY5MzVjN2ZjZGYyNDNjMTZlNDZlYzE0ZjBmZTFlIgorCisjIGNvbW1hbmQgdG9vbCBpcyB1bmRlciBHUEx2MyssIHdoaWxlIGxpYmlkbiBpdHNlbGYgaXMgdW5kZXIgTEdQTHYyLjErIG9yIExHUEx2MworIyBzbyBwYWNrYWdlIGNvbW1hbmQgaW50byBhIHNlcGFyYXRlIHBhY2thZ2UKK1BBQ0tBR0VTID0rICJpZG4iCitGSUxFU19pZG4gPSAiJHtiaW5kaXJ9LyoiCisKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIHwgTEdQTHYzIgorTElDRU5TRV9pZG4gPSAiR1BMdjMrIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWNzaGFycCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2VtYWNzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ2NDdhYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gNTA4YTBmZjY5MGRmZWJjMTdjNGY1NWE1ZjgxODI0ZWQ1NDliZWQ2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEFwciAyMDE3IDA5OjEzOjMzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBpbmNsdWRlIHN5cy9jZGVmcy5oIGV4cGxpY2l0bHkKLQotZ2xpYmMgaW5jbHVkZXMgdGhpcyBoZWFkZXIgaW5kaXJlY3RseSBidXQgbm90IG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvcnBjc3ZjL25pcy5oICAgIHwgMSArCi0gc3JjL3JwY3N2Yy9uaXNsaWIuaCB8IDEgKwotIHNyYy9ycGNzdmMveXBjbG50LmggfCAxICsKLSBzcmMvcnBjc3ZjL3lwdXBkLmggIHwgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9ycGNzdmMvbmlzLmggYi9zcmMvcnBjc3ZjL25pcy5oCi1pbmRleCA5MzNjNGQ5Li44OGNiY2EwIDEwMDY0NAotLS0tIGEvc3JjL3JwY3N2Yy9uaXMuaAotKysrIGIvc3JjL3JwY3N2Yy9uaXMuaAotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaWZuZGVmIF9SUENTVkNfTklTX0gKLSAjZGVmaW5lIF9SUENTVkNfTklTX0ggMQotIAotKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotICNpbmNsdWRlIDxycGNzdmMvbmlzX3RhZ3MuaD4KLWRpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL25pc2xpYi5oIGIvc3JjL3JwY3N2Yy9uaXNsaWIuaAotaW5kZXggYTU5YzE5Yi4uYTUzZmFiMyAxMDA2NDQKLS0tLSBhL3NyYy9ycGNzdmMvbmlzbGliLmgKLSsrKyBiL3NyYy9ycGNzdmMvbmlzbGliLmgKLUBAIC0xOSw2ICsxOSw3IEBACi0gI2lmbmRlZglfX1JQQ1NWQ19OSVNMSUJfSF9fCi0gI2RlZmluZQlfX1JQQ1NWQ19OSVNMSUJfSF9fCi0gCi0rI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotIAotIF9fQkVHSU5fREVDTFMKLWRpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL3lwY2xudC5oIGIvc3JjL3JwY3N2Yy95cGNsbnQuaAotaW5kZXggZmU0M2ZkNC4uYTY4NmI2MSAxMDA2NDQKLS0tLSBhL3NyYy9ycGNzdmMveXBjbG50LmgKLSsrKyBiL3NyYy9ycGNzdmMveXBjbG50LmgKLUBAIC0yMCw2ICsyMCw3IEBACi0gI2lmbmRlZglfX1JQQ1NWQ19ZUENMTlRfSF9fCi0gI2RlZmluZQlfX1JQQ1NWQ19ZUENMTlRfSF9fCi0gCi0rI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotIAotIC8qIFNvbWUgZGVmaW5lcyAqLwotZGlmZiAtLWdpdCBhL3NyYy9ycGNzdmMveXB1cGQuaCBiL3NyYy9ycGNzdmMveXB1cGQuaAotaW5kZXggZDA3ZmQ0ZC4uMmM1NzMwMSAxMDA2NDQKLS0tLSBhL3NyYy9ycGNzdmMveXB1cGQuaAotKysrIGIvc3JjL3JwY3N2Yy95cHVwZC5oCi1AQCAtMzMsNiArMzMsNyBAQAotICNpZm5kZWYgX19SUENTVkNfWVBVUERfSF9fCi0gI2RlZmluZSBfX1JQQ1NWQ19ZUFVQRF9IX18KLSAKLSsjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0gI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gCi0gI2luY2x1ZGUgPHJwYy9ycGMuaD4KLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlhZTUxNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLW5pc19jYWxsLmMtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LWRlZmluaXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIGQ3MWNiZWIzYjc2ZTU0Nzc4YTRkNWVlYzZkMzg3Y2NlNjUzNTM3Y2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCA5IEp1biAyMDE3IDA5OjQ5OjM1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5pc19jYWxsLmM6IEluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdCBkZWZpbml0aW9uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL25pc3BsdXMvbmlzX2NhbGwuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25pc3BsdXMvbmlzX2NhbGwuYyBiL3NyYy9uaXNwbHVzL25pc19jYWxsLmMKLWluZGV4IDFhMmI5MGMuLjFkYzk4MmQgMTAwNjQ0Ci0tLS0gYS9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCi0rKysgYi9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCi1AQCAtMjMsNiArMjMsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotICNpbmNsdWRlIDxycGMvYXV0aC5oPgotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMi1EZWZpbmUtZ2xpYmMtc3BlY2lmaWMtbWFjcm9zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMi1EZWZpbmUtZ2xpYmMtc3BlY2lmaWMtbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWZkYTRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gNjAyODI1MTRlYTAxYWYwMDRkN2Y5ZTY2ZGQzOTI5MjIzYjdkMmU3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEFwciAyMDE3IDA5OjE2OjEyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBEZWZpbmUgZ2xpYmMgc3BlY2lmaWMgbWFjcm9zCi0KLUNoZWNrIGFuZCBkZWZpbmUKLXJhd21lbWNociwgX19hc3ByaW50ZiwgX19tZW1wY3B5LCBfX3N0cnRva19yCi1fX2Fsd2F5c19pbmxpbmUsIFRFTVBfRkFJTFVSRV9SRVRSWQotCi1pZiBub3QgZXhpc3RpbmcuIEhlbHBzIGNvbXBpbGluZyB3aXRoIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL25pcy5oIGIvc3JjL3JwY3N2Yy9uaXMuaAotaW5kZXggODhjYmNhMC4uMjNmYzIwYyAxMDA2NDQKLS0tLSBhL3NyYy9ycGNzdmMvbmlzLmgKLSsrKyBiL3NyYy9ycGNzdmMvbmlzLmgKLUBAIC01Nyw2ICs1NywzNCBAQCBfX0JFR0lOX0RFQ0xTCi0gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGt1a3VrQHN1c2UuZGU+Ci0gICovCi0gCi0rI2lmbmRlZiByYXdtZW1jaHIKLSsjZGVmaW5lIHJhd21lbWNocihzLGMpIG1lbWNocigocyksKHNpemVfdCktMSwoYykpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX2FzcHJpbnRmCi0rI2RlZmluZSBfX2FzcHJpbnRmIGFzcHJpbnRmCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX21lbXBjcHkKLSsjZGVmaW5lIF9fbWVtcGNweSBtZW1wY3B5Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX3N0cnRva19yCi0rI2RlZmluZSBfX3N0cnRva19yIHN0cnRva19yCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX2Fsd2F5c19pbmxpbmUKLSsjZGVmaW5lIF9fYWx3YXlzX2lubGluZSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKLSsjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHApICh7IFwKLSt0eXBlb2YgKGV4cCkgX3JjOyBcCi0rIGRvIHsgXAotKyAgX3JjID0gKGV4cCk7IFwKLSsgfSB3aGlsZSAoX3JjID09IC0xICYmIGVycm5vID09IEVJTlRSKTsgXAotKyBfcmM7IH0pCi0rI2VuZGlmCi0gCi0gI2lmbmRlZiBfX25pc19vYmplY3RfaAotICNkZWZpbmUgX19uaXNfb2JqZWN0X2gKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYgppbmRleCBhNTM5MTQ4Li5jM2EyNGZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDJfZ2l0LmJiCkBAIC05LDI5ICs5LDE2IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIFNFQ1RJT04gPSAibGlicyIKIERFUEVORFMgPSAibGlidGlycGMiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGJzZC1oZWFkZXJzIgogCi1QViA9ICIxLjAuNStnaXQke1NSQ1BWfSIKK1BWID0gIjEuMi4wK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiZGZhMmYzMTM1MjRhZmY5MjQzYzRkOGNlMWJhY2U3Mzc4NjQ3ODM1NiIKK1NSQ1JFViA9ICIzN2M1ZmZlMzAzOGQ0MmU5ZmE5ZWQyMzJhZDJjYmNhNGQ4ZjE0NjgxIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc2wgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1EZWZpbmUtZ2xpYmMtc3BlY2lmaWMtbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAogCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7bGliZGlyfS9uc2wgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vbnNsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KLQltdiAke0R9JHtsaWJkaXJ9L25zbC9wa2djb25maWcgJHtEfSR7bGliZGlyfQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L25zbC8qLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7aW5jbHVkZWRpcn0vbnNsICR7bGliZGlyfS9uc2wvKi5zbyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25zbC8qLmEiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc3MtbmlzL2xpYm5zcy1uaXMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc3MtbmlzL2xpYm5zcy1uaXMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc0NDdhYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zcy1uaXMvbGlibnNzLW5pcy5iYgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAxOCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIk5TUyBtb2R1bGUgZm9yIGdsaWJjLCB0byBwcm92aWRlIE5JUyBzdXBwb3J0IGZvciBnbGliYyIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBOU1MgTklTIHBsdWdpbiBmb3IgZ2xpYmMuXAorVGhpcyBjb2RlIHdhcyBmb3JtZXJseSBwYXJ0IG9mIGdsaWJjLCBidXQgaXMgbm93IHN0YW5kYWxvbmUgdG9cCitiZSBhYmxlIHRvIGxpbmsgYWdhaW5zdCBUSS1SUEMgZm9yIElQdjYgc3VwcG9ydC4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aGt1a3VrL2xpYm5zc19uaXMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTICs9ICJsaWJ0aXJwYyBsaWJuc2wyIgorCitQViA9ICIzLjArZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICJkNGFlYTQ4NjU3YThlOTBkNzkyMjU3NGI4MDIxZWUwMzkxNWEzNmNiIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc3NfbmlzIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUgbmF0aXZlc2RrIgorIworIyBXZSB3aWxsIHNraXAgcGFyc2luZyB0aGlzIHBhY2thZ2VnZW91cCBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKKyMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjMzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDAxY2VkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKLQotREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKLSAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDUkVWID0gIjY5ZjE4MDM5NzhiYTdhNDZhNTc5MjhmYTRiZTY0MzA3OTI0MTllNGUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmRmYzVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zNS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKKworREVQRU5EUyA9ICJleHBhdCB6bGliIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDUkVWID0gIjM4YzUzNzRkNDcxMjY2N2IwYjZhZGE0YmY3OGRkYmIzNDMwOTVkMGMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gInJwbSIKK1BBQ0tBR0VDT05GSUdbcnBtXSA9ICItREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiwscnBtIgorCitFWFRSQV9PRUNNQUtFID0gIi1ETElCPSR7YmFzZWxpYn0gLURNVUxUSV9TRU1BTlRJQ1M9T04gLURFTkFCTEVfQ09NUExFWF9ERVBTPU9OIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMgJHtQTn1leHQiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlM2UyZjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGFjYjlhMzc5NzdjZjBhOTYzMGVhYzc0YWY5YWRlYmYzNWUzOGU3MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9yc3RlbiBLdWt1ayA8a3VrdWtAdGhrdWt1ay5kZT4KLURhdGU6IFR1ZSwgMTQgTm92IDIwMTcgMTA6Mzk6MDggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBzdGRpbnQuaCBmcm9tIHhkcl9zaXplb2YuYyB0byBhdm9pZCBtaXNzaW5nCi0gZGVjbGFyYXRpb24gZXJyb3JzLgotCi1TaWduZWQtb2ZmLWJ5OiBUaG9yc3RlbiBLdWt1ayA8a3VrdWtAc3VzZS5kZT4KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgotLS0tCi0gc3JjL3hkcl9zaXplb2YuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3hkcl9zaXplb2YuYyBiL3NyYy94ZHJfc2l6ZW9mLmMKLWluZGV4IGQyM2ZiZDEuLjc5ZDY3MDcgMTAwNjQ0Ci0tLS0gYS9zcmMveGRyX3NpemVvZi5jCi0rKysgYi9zcmMveGRyX3NpemVvZi5jCi1AQCAtMzksNiArMzksNyBAQAotICNpbmNsdWRlIDxycGMveGRyLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgInVuLW5hbWVzcGFjZS5oIgotIAotIC8qIEFSR1NVU0VEICovCi0tLSAKLTEuOC4zLjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FlMTljYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLXJlcGxhY2UtX19iemVyby13aXRoLW1lbXNldC1BUEkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDUzNTZiNjMwMDVlOWQ4MTY5ZTAzOTljYjc2ZjI2ZmJkMjlhNzhkZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3NodWEgS2luYXJkIDxrdW1iYUBnZW50b28ub3JnPgotRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxNDozMTozNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBSZXBsYWNlIGJ6ZXJvKCkgY2FsbHMgd2l0aCBlcXVpdmFsZW50IG1lbXNldCgpIGNhbGxzCi0KLUFzIGFubm90YXRlZCBpbiB0aGUgYnplcm8oMykgbWFuIHBhZ2UsIGJ6ZXJvKCkgd2FzIG1hcmtlZCBhcyBMRUdBQ1kgaW4KLVBPU0lYLjEtMjAwMSBhbmQgcmVtb3ZlZCBpbiBQT1NJWC4xLTIwMDgsIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aAotbWVtc2V0KCkgY2FsbHMgdG8gd3JpdGUgemVyb3MgdG8gYSBtZW1vcnkgcmVnaW9uLiAgVGhlIGF0dGFjaGVkIHBhdGNoCi1yZXBsYWNlcyB0d28gYnplcm8oKSBjYWxscyBhbmQgb25lIF9fYnplcm8oKSBjYWxsIGluIGxpYnRpcnBjIHdpdGgKLWVxdWl2YWxlbnQgbWVtc2V0KCkgY2FsbHMuICBUaGUgbGF0dGVyIHJlcGxhY2VtZW50IGZpeGVzIGEgY29tcGlsZSBlcnJvcgotdW5kZXIgdWNsaWJjLW5nLCB3aGljaCBsYWNrcyBhIGRlZmluaXRpb24gZm9yIF9fYnplcm8oKQotCi1TaWduZWQtb2ZmLWJ5OiBKb3NodWEgS2luYXJkIDxrdW1iYUBnZW50b28ub3JnPgotU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+Ci0tLS0KLSBzcmMvYXV0aF90aW1lLmMgICAgfCAyICstCi0gc3JjL2Rlc19pbXBsLmMgICAgIHwgMiArLQotIHNyYy9zdmNfYXV0aF9kZXMuYyB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9hdXRoX3RpbWUuYyBiL3NyYy9hdXRoX3RpbWUuYwotaW5kZXggN2Y4M2FiNC4uNjk0MDBiYyAxMDA2NDQKLS0tLSBhL3NyYy9hdXRoX3RpbWUuYwotKysrIGIvc3JjL2F1dGhfdGltZS5jCi1AQCAtMzE3LDcgKzMxNyw3IEBAIF9fcnBjX2dldF90aW1lX29mZnNldCh0ZCwgc3J2LCB0aG9zdCwgdWFkZHIsIG5ldGlkKQotIAlzcHJpbnRmKGlwdWFkZHIsICIlZC4lZC4lZC4lZC4wLjExMSIsIGExLCBhMiwgYTMsIGE0KTsKLSAJdXNldWEgPSAmaXB1YWRkclswXTsKLSAKLS0JYnplcm8oKGNoYXIgKikmc2luLCBzaXplb2Yoc2luKSk7Ci0rCW1lbXNldCgmc2luLCAwLCBzaXplb2Yoc2luKSk7Ci0gCWlmICh1YWRkcl90b19zb2NrYWRkcih1c2V1YSwgJnNpbikpIHsKLSAJCW1zZygidW5hYmxlIHRvIHRyYW5zbGF0ZSB1YWRkciB0byBzb2NrYWRkci4iKTsKLSAJCWlmIChuZWVkZnJlZSkKLWRpZmYgLS1naXQgYS9zcmMvZGVzX2ltcGwuYyBiL3NyYy9kZXNfaW1wbC5jCi1pbmRleCA5ZGJjY2FmLi4xNWJlYzJhIDEwMDY0NAotLS0tIGEvc3JjL2Rlc19pbXBsLmMKLSsrKyBiL3NyYy9kZXNfaW1wbC5jCi1AQCAtNTg4LDcgKzU4OCw3IEBAIF9kZXNfY3J5cHQgKGNoYXIgKmJ1ZiwgdW5zaWduZWQgbGVuLCBzdHJ1Y3QgZGVzcGFyYW1zICpkZXNwKQotICAgICB9Ci0gICB0aW4wID0gdGluMSA9IHRvdXQwID0gdG91dDEgPSB4b3IwID0geG9yMSA9IDA7Ci0gICB0YnVmWzBdID0gdGJ1ZlsxXSA9IDA7Ci0tICBfX2J6ZXJvIChzY2hlZHVsZSwgc2l6ZW9mIChzY2hlZHVsZSkpOwotKyAgbWVtc2V0IChzY2hlZHVsZSwgMCwgc2l6ZW9mIChzY2hlZHVsZSkpOwotIAotICAgcmV0dXJuICgxKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvc3JjL3N2Y19hdXRoX2Rlcy5jIGIvc3JjL3N2Y19hdXRoX2Rlcy5jCi1pbmRleCAyZTkwMTQ2Li4xOWE3YzYwIDEwMDY0NAotLS0tIGEvc3JjL3N2Y19hdXRoX2Rlcy5jCi0rKysgYi9zcmMvc3ZjX2F1dGhfZGVzLmMKLUBAIC0zNTYsNyArMzU2LDcgQEAgY2FjaGVfaW5pdCgpCi0gCi0gCWF1dGhkZXNfY2FjaGUgPSAoc3RydWN0IGNhY2hlX2VudHJ5ICopCi0gCQltZW1fYWxsb2Moc2l6ZW9mKHN0cnVjdCBjYWNoZV9lbnRyeSkgKiBBVVRIREVTX0NBQ0hFU1opOwkKLS0JYnplcm8oKGNoYXIgKilhdXRoZGVzX2NhY2hlLCAKLSsJbWVtc2V0KGF1dGhkZXNfY2FjaGUsIDAsCi0gCQlzaXplb2Yoc3RydWN0IGNhY2hlX2VudHJ5KSAqIEFVVEhERVNfQ0FDSEVTWik7Ci0gCi0gCWF1dGhkZXNfbHJ1ID0gKHNob3J0ICopbWVtX2FsbG9jKHNpemVvZihzaG9ydCkgKiBBVVRIREVTX0NBQ0hFU1opOwotLS0gCi0xLjguMy4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9Vc2UtbmV0YnNkLXF1ZXVlLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9Vc2UtbmV0YnNkLXF1ZXVlLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MzIyM2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvVXNlLW5ldGJzZC1xdWV1ZS5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODc4ICswLDAgQEAKLW11c2wgZG9lcyBub3QgcHJvdmlkZSBzeXMvcXVldWUuaCBpbXBsZW1lbnRhdGlvbi4gQm9ycm93IHF1ZXVlLmggZnJvbQotdGhlIE5ldEJTRCBwcm9qZWN0Ci1odHRwOi8vY3Zzd2ViLm5ldGJzZC5vcmcvYnNkd2ViLmNnaS9zcmMvc3lzL3N5cy9xdWV1ZS5oP3Jldj0xLjY4Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSsO2cmcgS3JhdXNlIDxqb2VyZy5rcmF1c2VAZW1iZWRkZWQucm9ja3M+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotZGlmZiAtTmF1ciBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9jbG50X2JjYXN0LmMgbGlidGlycGMtMS4wLjEvc3JjL2NsbnRfYmNhc3QuYwotLS0tIGxpYnRpcnBjLTEuMC4xLW9yaWcvc3JjL2NsbnRfYmNhc3QuYwkyMDE1LTEwLTMwIDE3OjE1OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGxpYnRpcnBjLTEuMC4xL3NyYy9jbG50X2JjYXN0LmMJMjAxNS0xMi0yMSAxNzowMzo1Mi4wNjYwMDgzMTEgKzAyMDAKLUBAIC00MCw3ICs0MCw2IEBACi0gICovCi0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgotIAotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotQEAgLTYyLDYgKzYxLDcgQEAKLSAjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotKyNpbmNsdWRlICJxdWV1ZS5oIgotICNpbmNsdWRlICJycGNfY29tLmgiCi0gI2luY2x1ZGUgImRlYnVnLmgiCi0gCi1kaWZmIC1OYXVyIGxpYnRpcnBjLTEuMC4xLW9yaWcvdGlycGMvcXVldWUuaCBsaWJ0aXJwYy0xLjAuMS90aXJwYy9xdWV1ZS5oCi0tLS0gbGlidGlycGMtMS4wLjEtb3JpZy90aXJwYy9xdWV1ZS5oCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgbGlidGlycGMtMS4wLjEvdGlycGMvcXVldWUuaAkyMDE1LTEyLTIxIDE3OjAyOjQ0LjQyNzg1MzkwNSArMDIwMAotQEAgLTAsMCArMSw4NDYgQEAKLSsvKgkkTmV0QlNEOiBxdWV1ZS5oLHYgMS42OCAyMDE0LzExLzE5IDA4OjEwOjAxIHVlYmF5YXNpIEV4cCAkCSovCi0rCi0rLyoKLSsgKiBDb3B5cmlnaHQgKGMpIDE5OTEsIDE5OTMKLSsgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyAqIGFyZSBtZXQ6Ci0rICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0rICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0rICogU1VDSCBEQU1BR0UuCi0rICoKLSsgKglAKCMpcXVldWUuaAk4LjUgKEJlcmtlbGV5KSA4LzIwLzk0Ci0rICovCi0rCi0rI2lmbmRlZglfU1lTX1FVRVVFX0hfCi0rI2RlZmluZQlfU1lTX1FVRVVFX0hfCi0rCi0rLyoKLSsgKiBUaGlzIGZpbGUgZGVmaW5lcyBmaXZlIHR5cGVzIG9mIGRhdGEgc3RydWN0dXJlczogc2luZ2x5LWxpbmtlZCBsaXN0cywKLSsgKiBsaXN0cywgc2ltcGxlIHF1ZXVlcywgdGFpbCBxdWV1ZXMsIGFuZCBjaXJjdWxhciBxdWV1ZXMuCi0rICoKLSsgKiBBIHNpbmdseS1saW5rZWQgbGlzdCBpcyBoZWFkZWQgYnkgYSBzaW5nbGUgZm9yd2FyZCBwb2ludGVyLiBUaGUKLSsgKiBlbGVtZW50cyBhcmUgc2luZ2x5IGxpbmtlZCBmb3IgbWluaW11bSBzcGFjZSBhbmQgcG9pbnRlciBtYW5pcHVsYXRpb24KLSsgKiBvdmVyaGVhZCBhdCB0aGUgZXhwZW5zZSBvZiBPKG4pIHJlbW92YWwgZm9yIGFyYml0cmFyeSBlbGVtZW50cy4gTmV3Ci0rICogZWxlbWVudHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyIGFuIGV4aXN0aW5nIGVsZW1lbnQgb3IgYXQgdGhlCi0rICogaGVhZCBvZiB0aGUgbGlzdC4gIEVsZW1lbnRzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgaGVhZCBvZiB0aGUgbGlzdAotKyAqIHNob3VsZCB1c2UgdGhlIGV4cGxpY2l0IG1hY3JvIGZvciB0aGlzIHB1cnBvc2UgZm9yIG9wdGltdW0KLSsgKiBlZmZpY2llbmN5LiBBIHNpbmdseS1saW5rZWQgbGlzdCBtYXkgb25seSBiZSB0cmF2ZXJzZWQgaW4gdGhlIGZvcndhcmQKLSsgKiBkaXJlY3Rpb24uICBTaW5nbHktbGlua2VkIGxpc3RzIGFyZSBpZGVhbCBmb3IgYXBwbGljYXRpb25zIHdpdGggbGFyZ2UKLSsgKiBkYXRhc2V0cyBhbmQgZmV3IG9yIG5vIHJlbW92YWxzIG9yIGZvciBpbXBsZW1lbnRpbmcgYSBMSUZPIHF1ZXVlLgotKyAqCi0rICogQSBsaXN0IGlzIGhlYWRlZCBieSBhIHNpbmdsZSBmb3J3YXJkIHBvaW50ZXIgKG9yIGFuIGFycmF5IG9mIGZvcndhcmQKLSsgKiBwb2ludGVycyBmb3IgYSBoYXNoIHRhYmxlIGhlYWRlcikuIFRoZSBlbGVtZW50cyBhcmUgZG91Ymx5IGxpbmtlZAotKyAqIHNvIHRoYXQgYW4gYXJiaXRyYXJ5IGVsZW1lbnQgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCBhIG5lZWQgdG8KLSsgKiB0cmF2ZXJzZSB0aGUgbGlzdC4gTmV3IGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdCBiZWZvcmUKLSsgKiBvciBhZnRlciBhbiBleGlzdGluZyBlbGVtZW50IG9yIGF0IHRoZSBoZWFkIG9mIHRoZSBsaXN0LiBBIGxpc3QKLSsgKiBtYXkgb25seSBiZSB0cmF2ZXJzZWQgaW4gdGhlIGZvcndhcmQgZGlyZWN0aW9uLgotKyAqCi0rICogQSBzaW1wbGUgcXVldWUgaXMgaGVhZGVkIGJ5IGEgcGFpciBvZiBwb2ludGVycywgb25lIHRoZSBoZWFkIG9mIHRoZQotKyAqIGxpc3QgYW5kIHRoZSBvdGhlciB0byB0aGUgdGFpbCBvZiB0aGUgbGlzdC4gVGhlIGVsZW1lbnRzIGFyZSBzaW5nbHkKLSsgKiBsaW5rZWQgdG8gc2F2ZSBzcGFjZSwgc28gZWxlbWVudHMgY2FuIG9ubHkgYmUgcmVtb3ZlZCBmcm9tIHRoZQotKyAqIGhlYWQgb2YgdGhlIGxpc3QuIE5ldyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgYWZ0ZXIKLSsgKiBhbiBleGlzdGluZyBlbGVtZW50LCBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdCwgb3IgYXQgdGhlIGVuZCBvZiB0aGUKLSsgKiBsaXN0LiBBIHNpbXBsZSBxdWV1ZSBtYXkgb25seSBiZSB0cmF2ZXJzZWQgaW4gdGhlIGZvcndhcmQgZGlyZWN0aW9uLgotKyAqCi0rICogQSB0YWlsIHF1ZXVlIGlzIGhlYWRlZCBieSBhIHBhaXIgb2YgcG9pbnRlcnMsIG9uZSB0byB0aGUgaGVhZCBvZiB0aGUKLSsgKiBsaXN0IGFuZCB0aGUgb3RoZXIgdG8gdGhlIHRhaWwgb2YgdGhlIGxpc3QuIFRoZSBlbGVtZW50cyBhcmUgZG91Ymx5Ci0rICogbGlua2VkIHNvIHRoYXQgYW4gYXJiaXRyYXJ5IGVsZW1lbnQgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCBhIG5lZWQgdG8KLSsgKiB0cmF2ZXJzZSB0aGUgbGlzdC4gTmV3IGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdCBiZWZvcmUgb3IKLSsgKiBhZnRlciBhbiBleGlzdGluZyBlbGVtZW50LCBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdCwgb3IgYXQgdGhlIGVuZCBvZgotKyAqIHRoZSBsaXN0LiBBIHRhaWwgcXVldWUgbWF5IGJlIHRyYXZlcnNlZCBpbiBlaXRoZXIgZGlyZWN0aW9uLgotKyAqCi0rICogQSBjaXJjbGUgcXVldWUgaXMgaGVhZGVkIGJ5IGEgcGFpciBvZiBwb2ludGVycywgb25lIHRvIHRoZSBoZWFkIG9mIHRoZQotKyAqIGxpc3QgYW5kIHRoZSBvdGhlciB0byB0aGUgdGFpbCBvZiB0aGUgbGlzdC4gVGhlIGVsZW1lbnRzIGFyZSBkb3VibHkKLSsgKiBsaW5rZWQgc28gdGhhdCBhbiBhcmJpdHJhcnkgZWxlbWVudCBjYW4gYmUgcmVtb3ZlZCB3aXRob3V0IGEgbmVlZCB0bwotKyAqIHRyYXZlcnNlIHRoZSBsaXN0LiBOZXcgZWxlbWVudHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGJlZm9yZSBvciBhZnRlcgotKyAqIGFuIGV4aXN0aW5nIGVsZW1lbnQsIGF0IHRoZSBoZWFkIG9mIHRoZSBsaXN0LCBvciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LgotKyAqIEEgY2lyY2xlIHF1ZXVlIG1heSBiZSB0cmF2ZXJzZWQgaW4gZWl0aGVyIGRpcmVjdGlvbiwgYnV0IGhhcyBhIG1vcmUKLSsgKiBjb21wbGV4IGVuZCBvZiBsaXN0IGRldGVjdGlvbi4KLSsgKgotKyAqIEZvciBkZXRhaWxzIG9uIHRoZSB1c2Ugb2YgdGhlc2UgbWFjcm9zLCBzZWUgdGhlIHF1ZXVlKDMpIG1hbnVhbCBwYWdlLgotKyAqLwotKwotKy8qCi0rICogSW5jbHVkZSB0aGUgZGVmaW5pdGlvbiBvZiBOVUxMIG9ubHkgb24gTmV0QlNEIGJlY2F1c2Ugc3lzL251bGwuaAotKyAqIGlzIG5vdCBhdmFpbGFibGUgZWxzZXdoZXJlLiAgVGhpcyBjb25kaXRpb25hbCBtYWtlcyB0aGUgaGVhZGVyCi0rICogcG9ydGFibGUgYW5kIGl0IGNhbiBzaW1wbHkgYmUgZHJvcHBlZCB2ZXJiYXRpbSBpbnRvIGFueSBzeXN0ZW0uCi0rICogVGhlIGNhdmVhdCBpcyB0aGF0IG9uIG90aGVyIHN5c3RlbXMgc29tZSBvdGhlciBoZWFkZXIKLSsgKiBtdXN0IHByb3ZpZGUgTlVMTCBiZWZvcmUgdGhlIG1hY3JvcyBjYW4gYmUgdXNlZC4KLSsgKi8KLSsjaWZkZWYgX19OZXRCU0RfXwotKyNpbmNsdWRlIDxzeXMvbnVsbC5oPgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkKFFVRVVFREVCVUcpCi0rIyBpZiBkZWZpbmVkKF9LRVJORUwpCi0rIyAgZGVmaW5lIFFVRVVFREVCVUdfQUJPUlQoLi4uKSBwYW5pYyhfX1ZBX0FSR1NfXykKLSsjIGVsc2UKLSsjICBpbmNsdWRlIDxlcnIuaD4KLSsjICBkZWZpbmUgUVVFVUVERUJVR19BQk9SVCguLi4pIGVycigxLCBfX1ZBX0FSR1NfXykKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBTaW5nbHktbGlua2VkIExpc3QgZGVmaW5pdGlvbnMuCi0rICovCi0rI2RlZmluZQlTTElTVF9IRUFEKG5hbWUsIHR5cGUpCQkJCQkJXAotK3N0cnVjdCBuYW1lIHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKnNsaF9maXJzdDsJLyogZmlyc3QgZWxlbWVudCAqLwkJCVwKLSt9Ci0rCi0rI2RlZmluZQlTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpCQkJCQlcCi0rCXsgTlVMTCB9Ci0rCi0rI2RlZmluZQlTTElTVF9FTlRSWSh0eXBlKQkJCQkJCVwKLStzdHJ1Y3QgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqc2xlX25leHQ7CS8qIG5leHQgZWxlbWVudCAqLwkJCVwKLSt9Ci0rCi0rLyoKLSsgKiBTaW5nbHktbGlua2VkIExpc3QgYWNjZXNzIG1ldGhvZHMuCi0rICovCi0rI2RlZmluZQlTTElTVF9GSVJTVChoZWFkKQkoKGhlYWQpLT5zbGhfZmlyc3QpCi0rI2RlZmluZQlTTElTVF9FTkQoaGVhZCkJCU5VTEwKLSsjZGVmaW5lCVNMSVNUX0VNUFRZKGhlYWQpCSgoaGVhZCktPnNsaF9maXJzdCA9PSBOVUxMKQotKyNkZWZpbmUJU0xJU1RfTkVYVChlbG0sIGZpZWxkKQkoKGVsbSktPmZpZWxkLnNsZV9uZXh0KQotKwotKyNkZWZpbmUJU0xJU1RfRk9SRUFDSCh2YXIsIGhlYWQsIGZpZWxkKQkJCQkJXAotKwlmb3IoKHZhcikgPSAoaGVhZCktPnNsaF9maXJzdDsJCQkJCVwKLSsJICAgICh2YXIpICE9IFNMSVNUX0VORChoZWFkKTsJCQkJCVwKLSsJICAgICh2YXIpID0gKHZhciktPmZpZWxkLnNsZV9uZXh0KQotKwotKyNkZWZpbmUJU0xJU1RfRk9SRUFDSF9TQUZFKHZhciwgaGVhZCwgZmllbGQsIHR2YXIpCQkJXAotKwlmb3IgKCh2YXIpID0gU0xJU1RfRklSU1QoKGhlYWQpKTsJCQkJXAotKwkgICAgKHZhcikgIT0gU0xJU1RfRU5EKGhlYWQpICYmCQkJCQlcCi0rCSAgICAoKHR2YXIpID0gU0xJU1RfTkVYVCgodmFyKSwgZmllbGQpLCAxKTsJCQlcCi0rCSAgICAodmFyKSA9ICh0dmFyKSkKLSsKLSsvKgotKyAqIFNpbmdseS1saW5rZWQgTGlzdCBmdW5jdGlvbnMuCi0rICovCi0rI2RlZmluZQlTTElTVF9JTklUKGhlYWQpIGRvIHsJCQkJCQlcCi0rCShoZWFkKS0+c2xoX2ZpcnN0ID0gU0xJU1RfRU5EKGhlYWQpOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTTElTVF9JTlNFUlRfQUZURVIoc2xpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCShlbG0pLT5maWVsZC5zbGVfbmV4dCA9IChzbGlzdGVsbSktPmZpZWxkLnNsZV9uZXh0OwkJXAotKwkoc2xpc3RlbG0pLT5maWVsZC5zbGVfbmV4dCA9IChlbG0pOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTTElTVF9JTlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwkoZWxtKS0+ZmllbGQuc2xlX25leHQgPSAoaGVhZCktPnNsaF9maXJzdDsJCQlcCi0rCShoZWFkKS0+c2xoX2ZpcnN0ID0gKGVsbSk7CQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTTElTVF9SRU1PVkVfQUZURVIoc2xpc3RlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwkoc2xpc3RlbG0pLT5maWVsZC5zbGVfbmV4dCA9CQkJCQlcCi0rCSAgICBTTElTVF9ORVhUKFNMSVNUX05FWFQoKHNsaXN0ZWxtKSwgZmllbGQpLCBmaWVsZCk7CQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTTElTVF9SRU1PVkVfSEVBRChoZWFkLCBmaWVsZCkgZG8gewkJCQlcCi0rCShoZWFkKS0+c2xoX2ZpcnN0ID0gKGhlYWQpLT5zbGhfZmlyc3QtPmZpZWxkLnNsZV9uZXh0OwkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0xJU1RfUkVNT1ZFKGhlYWQsIGVsbSwgdHlwZSwgZmllbGQpIGRvIHsJCQlcCi0rCWlmICgoaGVhZCktPnNsaF9maXJzdCA9PSAoZWxtKSkgewkJCQlcCi0rCQlTTElTVF9SRU1PVkVfSEVBRCgoaGVhZCksIGZpZWxkKTsJCQlcCi0rCX0JCQkJCQkJCVwKLSsJZWxzZSB7CQkJCQkJCQlcCi0rCQlzdHJ1Y3QgdHlwZSAqY3VyZWxtID0gKGhlYWQpLT5zbGhfZmlyc3Q7CQlcCi0rCQl3aGlsZShjdXJlbG0tPmZpZWxkLnNsZV9uZXh0ICE9IChlbG0pKQkJCVwKLSsJCQljdXJlbG0gPSBjdXJlbG0tPmZpZWxkLnNsZV9uZXh0OwkJXAotKwkJY3VyZWxtLT5maWVsZC5zbGVfbmV4dCA9CQkJCVwKLSsJCSAgICBjdXJlbG0tPmZpZWxkLnNsZV9uZXh0LT5maWVsZC5zbGVfbmV4dDsJCVwKLSsJfQkJCQkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKwotKy8qCi0rICogTGlzdCBkZWZpbml0aW9ucy4KLSsgKi8KLSsjZGVmaW5lCUxJU1RfSEVBRChuYW1lLCB0eXBlKQkJCQkJCVwKLStzdHJ1Y3QgbmFtZSB7CQkJCQkJCQlcCi0rCXN0cnVjdCB0eXBlICpsaF9maXJzdDsJLyogZmlyc3QgZWxlbWVudCAqLwkJCVwKLSt9Ci0rCi0rI2RlZmluZQlMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCkJCQkJCVwKLSsJeyBOVUxMIH0KLSsKLSsjZGVmaW5lCUxJU1RfRU5UUlkodHlwZSkJCQkJCQlcCi0rc3RydWN0IHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKmxlX25leHQ7CS8qIG5leHQgZWxlbWVudCAqLwkJCVwKLSsJc3RydWN0IHR5cGUgKipsZV9wcmV2OwkvKiBhZGRyZXNzIG9mIHByZXZpb3VzIG5leHQgZWxlbWVudCAqLwlcCi0rfQotKwotKy8qCi0rICogTGlzdCBhY2Nlc3MgbWV0aG9kcy4KLSsgKi8KLSsjZGVmaW5lCUxJU1RfRklSU1QoaGVhZCkJCSgoaGVhZCktPmxoX2ZpcnN0KQotKyNkZWZpbmUJTElTVF9FTkQoaGVhZCkJCQlOVUxMCi0rI2RlZmluZQlMSVNUX0VNUFRZKGhlYWQpCQkoKGhlYWQpLT5saF9maXJzdCA9PSBMSVNUX0VORChoZWFkKSkKLSsjZGVmaW5lCUxJU1RfTkVYVChlbG0sIGZpZWxkKQkJKChlbG0pLT5maWVsZC5sZV9uZXh0KQotKwotKyNkZWZpbmUJTElTVF9GT1JFQUNIKHZhciwgaGVhZCwgZmllbGQpCQkJCQlcCi0rCWZvciAoKHZhcikgPSAoKGhlYWQpLT5saF9maXJzdCk7CQkJCVwKLSsJICAgICh2YXIpICE9IExJU1RfRU5EKGhlYWQpOwkJCQkJXAotKwkgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLmxlX25leHQpKQotKwotKyNkZWZpbmUJTElTVF9GT1JFQUNIX1NBRkUodmFyLCBoZWFkLCBmaWVsZCwgdHZhcikJCQlcCi0rCWZvciAoKHZhcikgPSBMSVNUX0ZJUlNUKChoZWFkKSk7CQkJCVwKLSsJICAgICh2YXIpICE9IExJU1RfRU5EKGhlYWQpICYmCQkJCQlcCi0rCSAgICAoKHR2YXIpID0gTElTVF9ORVhUKCh2YXIpLCBmaWVsZCksIDEpOwkJCVwKLSsJICAgICh2YXIpID0gKHR2YXIpKQotKwotKyNkZWZpbmUJTElTVF9NT1ZFKGhlYWQxLCBoZWFkMikgZG8gewkJCQkJXAotKwlMSVNUX0lOSVQoKGhlYWQyKSk7CQkJCQkJXAotKwlpZiAoIUxJU1RfRU1QVFkoKGhlYWQxKSkpIHsJCQkJCVwKLSsJCShoZWFkMiktPmxoX2ZpcnN0ID0gKGhlYWQxKS0+bGhfZmlyc3Q7CQkJXAotKwkJTElTVF9JTklUKChoZWFkMSkpOwkJCQkJXAotKwl9CQkJCQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rLyoKLSsgKiBMaXN0IGZ1bmN0aW9ucy4KLSsgKi8KLSsjaWYgZGVmaW5lZChRVUVVRURFQlVHKQotKyNkZWZpbmUJUVVFVUVERUJVR19MSVNUX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpCQkJXAotKwlpZiAoKGhlYWQpLT5saF9maXJzdCAmJgkJCQkJCVwKLSsJICAgIChoZWFkKS0+bGhfZmlyc3QtPmZpZWxkLmxlX3ByZXYgIT0gJihoZWFkKS0+bGhfZmlyc3QpCVwKLSsJCVFVRVVFREVCVUdfQUJPUlQoIkxJU1RfSU5TRVJUX0hFQUQgJXAgJXM6JWQiLCAoaGVhZCksCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyNkZWZpbmUJUVVFVUVERUJVR19MSVNUX09QKGVsbSwgZmllbGQpCQkJCQlcCi0rCWlmICgoZWxtKS0+ZmllbGQubGVfbmV4dCAmJgkJCQkJXAotKwkgICAgKGVsbSktPmZpZWxkLmxlX25leHQtPmZpZWxkLmxlX3ByZXYgIT0JCQlcCi0rCSAgICAmKGVsbSktPmZpZWxkLmxlX25leHQpCQkJCQlcCi0rCQlRVUVVRURFQlVHX0FCT1JUKCJMSVNUXyogZm9ydyAlcCAlczolZCIsIChlbG0pLAkJXAotKwkJICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7CQkJCVwKLSsJaWYgKCooZWxtKS0+ZmllbGQubGVfcHJldiAhPSAoZWxtKSkJCQkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiTElTVF8qIGJhY2sgJXAgJXM6JWQiLCAoZWxtKSwJCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyNkZWZpbmUJUVVFVUVERUJVR19MSVNUX1BPU1RSRU1PVkUoZWxtLCBmaWVsZCkJCQkJXAotKwkoZWxtKS0+ZmllbGQubGVfbmV4dCA9ICh2b2lkICopMUw7CQkJCVwKLSsJKGVsbSktPmZpZWxkLmxlX3ByZXYgPSAodm9pZCAqKTFMOwotKyNlbHNlCi0rI2RlZmluZQlRVUVVRURFQlVHX0xJU1RfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkKLSsjZGVmaW5lCVFVRVVFREVCVUdfTElTVF9PUChlbG0sIGZpZWxkKQotKyNkZWZpbmUJUVVFVUVERUJVR19MSVNUX1BPU1RSRU1PVkUoZWxtLCBmaWVsZCkKLSsjZW5kaWYKLSsKLSsjZGVmaW5lCUxJU1RfSU5JVChoZWFkKSBkbyB7CQkJCQkJXAotKwkoaGVhZCktPmxoX2ZpcnN0ID0gTElTVF9FTkQoaGVhZCk7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUxJU1RfSU5TRVJUX0FGVEVSKGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfTElTVF9PUCgobGlzdGVsbSksIGZpZWxkKQkJCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLmxlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLmxlX25leHQpICE9IAlcCi0rCSAgICBMSVNUX0VORChoZWFkKSkJCQkJCQlcCi0rCQkobGlzdGVsbSktPmZpZWxkLmxlX25leHQtPmZpZWxkLmxlX3ByZXYgPQkJXAotKwkJICAgICYoZWxtKS0+ZmllbGQubGVfbmV4dDsJCQkJXAotKwkobGlzdGVsbSktPmZpZWxkLmxlX25leHQgPSAoZWxtKTsJCQkJXAotKwkoZWxtKS0+ZmllbGQubGVfcHJldiA9ICYobGlzdGVsbSktPmZpZWxkLmxlX25leHQ7CQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlMSVNUX0lOU0VSVF9CRUZPUkUobGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJUVVFVUVERUJVR19MSVNUX09QKChsaXN0ZWxtKSwgZmllbGQpCQkJCVwKLSsJKGVsbSktPmZpZWxkLmxlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLmxlX3ByZXY7CQlcCi0rCShlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGxpc3RlbG0pOwkJCQlcCi0rCSoobGlzdGVsbSktPmZpZWxkLmxlX3ByZXYgPSAoZWxtKTsJCQkJXAotKwkobGlzdGVsbSktPmZpZWxkLmxlX3ByZXYgPSAmKGVsbSktPmZpZWxkLmxlX25leHQ7CQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlMSVNUX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQkJXAotKwlRVUVVRURFQlVHX0xJU1RfSU5TRVJUX0hFQUQoKGhlYWQpLCAoZWxtKSwgZmllbGQpCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLmxlX25leHQgPSAoaGVhZCktPmxoX2ZpcnN0KSAhPSBMSVNUX0VORChoZWFkKSlcCi0rCQkoaGVhZCktPmxoX2ZpcnN0LT5maWVsZC5sZV9wcmV2ID0gJihlbG0pLT5maWVsZC5sZV9uZXh0O1wKLSsJKGhlYWQpLT5saF9maXJzdCA9IChlbG0pOwkJCQkJXAotKwkoZWxtKS0+ZmllbGQubGVfcHJldiA9ICYoaGVhZCktPmxoX2ZpcnN0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUxJU1RfUkVNT1ZFKGVsbSwgZmllbGQpIGRvIHsJCQkJCVwKLSsJUVVFVUVERUJVR19MSVNUX09QKChlbG0pLCBmaWVsZCkJCQkJXAotKwlpZiAoKGVsbSktPmZpZWxkLmxlX25leHQgIT0gTlVMTCkJCQkJXAotKwkJKGVsbSktPmZpZWxkLmxlX25leHQtPmZpZWxkLmxlX3ByZXYgPSAJCQlcCi0rCQkgICAgKGVsbSktPmZpZWxkLmxlX3ByZXY7CQkJCVwKLSsJKihlbG0pLT5maWVsZC5sZV9wcmV2ID0gKGVsbSktPmZpZWxkLmxlX25leHQ7CQkJXAotKwlRVUVVRURFQlVHX0xJU1RfUE9TVFJFTU9WRSgoZWxtKSwgZmllbGQpCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUgTElTVF9SRVBMQUNFKGVsbSwgZWxtMiwgZmllbGQpIGRvIHsJCQkJXAotKwlpZiAoKChlbG0yKS0+ZmllbGQubGVfbmV4dCA9IChlbG0pLT5maWVsZC5sZV9uZXh0KSAhPSBOVUxMKQlcCi0rCQkoZWxtMiktPmZpZWxkLmxlX25leHQtPmZpZWxkLmxlX3ByZXYgPQkJCVwKLSsJCSAgICAmKGVsbTIpLT5maWVsZC5sZV9uZXh0OwkJCQlcCi0rCShlbG0yKS0+ZmllbGQubGVfcHJldiA9IChlbG0pLT5maWVsZC5sZV9wcmV2OwkJCVwKLSsJKihlbG0yKS0+ZmllbGQubGVfcHJldiA9IChlbG0yKTsJCQkJXAotKwlRVUVVRURFQlVHX0xJU1RfUE9TVFJFTU9WRSgoZWxtKSwgZmllbGQpCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKy8qCi0rICogU2ltcGxlIHF1ZXVlIGRlZmluaXRpb25zLgotKyAqLwotKyNkZWZpbmUJU0lNUExFUV9IRUFEKG5hbWUsIHR5cGUpCQkJCQlcCi0rc3RydWN0IG5hbWUgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqc3FoX2ZpcnN0OwkvKiBmaXJzdCBlbGVtZW50ICovCQkJXAotKwlzdHJ1Y3QgdHlwZSAqKnNxaF9sYXN0OwkvKiBhZGRyIG9mIGxhc3QgbmV4dCBlbGVtZW50ICovCQlcCi0rfQotKwotKyNkZWZpbmUJU0lNUExFUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpCQkJCQlcCi0rCXsgTlVMTCwgJihoZWFkKS5zcWhfZmlyc3QgfQotKwotKyNkZWZpbmUJU0lNUExFUV9FTlRSWSh0eXBlKQkJCQkJCVwKLStzdHJ1Y3QgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqc3FlX25leHQ7CS8qIG5leHQgZWxlbWVudCAqLwkJCVwKLSt9Ci0rCi0rLyoKLSsgKiBTaW1wbGUgcXVldWUgYWNjZXNzIG1ldGhvZHMuCi0rICovCi0rI2RlZmluZQlTSU1QTEVRX0ZJUlNUKGhlYWQpCQkoKGhlYWQpLT5zcWhfZmlyc3QpCi0rI2RlZmluZQlTSU1QTEVRX0VORChoZWFkKQkJTlVMTAotKyNkZWZpbmUJU0lNUExFUV9FTVBUWShoZWFkKQkJKChoZWFkKS0+c3FoX2ZpcnN0ID09IFNJTVBMRVFfRU5EKGhlYWQpKQotKyNkZWZpbmUJU0lNUExFUV9ORVhUKGVsbSwgZmllbGQpCSgoZWxtKS0+ZmllbGQuc3FlX25leHQpCi0rCi0rI2RlZmluZQlTSU1QTEVRX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkJCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+c3FoX2ZpcnN0KTsJCQkJXAotKwkgICAgKHZhcikgIT0gU0lNUExFUV9FTkQoaGVhZCk7CQkJCQlcCi0rCSAgICAodmFyKSA9ICgodmFyKS0+ZmllbGQuc3FlX25leHQpKQotKwotKyNkZWZpbmUJU0lNUExFUV9GT1JFQUNIX1NBRkUodmFyLCBoZWFkLCBmaWVsZCwgbmV4dCkJCQlcCi0rCWZvciAoKHZhcikgPSAoKGhlYWQpLT5zcWhfZmlyc3QpOwkJCQlcCi0rCSAgICAodmFyKSAhPSBTSU1QTEVRX0VORChoZWFkKSAmJgkJCQlcCi0rCSAgICAoKG5leHQgPSAoKHZhciktPmZpZWxkLnNxZV9uZXh0KSksIDEpOwkJCVwKLSsJICAgICh2YXIpID0gKG5leHQpKQotKwotKy8qCi0rICogU2ltcGxlIHF1ZXVlIGZ1bmN0aW9ucy4KLSsgKi8KLSsjZGVmaW5lCVNJTVBMRVFfSU5JVChoZWFkKSBkbyB7CQkJCQkJXAotKwkoaGVhZCktPnNxaF9maXJzdCA9IE5VTEw7CQkJCQlcCi0rCShoZWFkKS0+c3FoX2xhc3QgPSAmKGhlYWQpLT5zcWhfZmlyc3Q7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNJTVBMRVFfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJaWYgKCgoZWxtKS0+ZmllbGQuc3FlX25leHQgPSAoaGVhZCktPnNxaF9maXJzdCkgPT0gTlVMTCkJXAotKwkJKGhlYWQpLT5zcWhfbGFzdCA9ICYoZWxtKS0+ZmllbGQuc3FlX25leHQ7CQlcCi0rCShoZWFkKS0+c3FoX2ZpcnN0ID0gKGVsbSk7CQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTSU1QTEVRX0lOU0VSVF9UQUlMKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCShlbG0pLT5maWVsZC5zcWVfbmV4dCA9IE5VTEw7CQkJCQlcCi0rCSooaGVhZCktPnNxaF9sYXN0ID0gKGVsbSk7CQkJCQlcCi0rCShoZWFkKS0+c3FoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnNxZV9uZXh0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNJTVBMRVFfSU5TRVJUX0FGVEVSKGhlYWQsIGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCVwKLSsJaWYgKCgoZWxtKS0+ZmllbGQuc3FlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLnNxZV9uZXh0KSA9PSBOVUxMKVwKLSsJCShoZWFkKS0+c3FoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnNxZV9uZXh0OwkJXAotKwkobGlzdGVsbSktPmZpZWxkLnNxZV9uZXh0ID0gKGVsbSk7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNJTVBMRVFfUkVNT1ZFX0hFQUQoaGVhZCwgZmllbGQpIGRvIHsJCQkJXAotKwlpZiAoKChoZWFkKS0+c3FoX2ZpcnN0ID0gKGhlYWQpLT5zcWhfZmlyc3QtPmZpZWxkLnNxZV9uZXh0KSA9PSBOVUxMKSBcCi0rCQkoaGVhZCktPnNxaF9sYXN0ID0gJihoZWFkKS0+c3FoX2ZpcnN0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lIFNJTVBMRVFfUkVNT1ZFX0FGVEVSKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLnNxZV9uZXh0ID0gKGVsbSktPmZpZWxkLnNxZV9uZXh0LT5maWVsZC5zcWVfbmV4dCkgXAotKwkgICAgPT0gTlVMTCkJCQkJCQkJXAotKwkJKGhlYWQpLT5zcWhfbGFzdCA9ICYoZWxtKS0+ZmllbGQuc3FlX25leHQ7CQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTSU1QTEVRX1JFTU9WRShoZWFkLCBlbG0sIHR5cGUsIGZpZWxkKSBkbyB7CQkJXAotKwlpZiAoKGhlYWQpLT5zcWhfZmlyc3QgPT0gKGVsbSkpIHsJCQkJXAotKwkJU0lNUExFUV9SRU1PVkVfSEVBRCgoaGVhZCksIGZpZWxkKTsJCQlcCi0rCX0gZWxzZSB7CQkJCQkJCVwKLSsJCXN0cnVjdCB0eXBlICpjdXJlbG0gPSAoaGVhZCktPnNxaF9maXJzdDsJCVwKLSsJCXdoaWxlIChjdXJlbG0tPmZpZWxkLnNxZV9uZXh0ICE9IChlbG0pKQkJCVwKLSsJCQljdXJlbG0gPSBjdXJlbG0tPmZpZWxkLnNxZV9uZXh0OwkJXAotKwkJaWYgKChjdXJlbG0tPmZpZWxkLnNxZV9uZXh0ID0JCQkJXAotKwkJCWN1cmVsbS0+ZmllbGQuc3FlX25leHQtPmZpZWxkLnNxZV9uZXh0KSA9PSBOVUxMKSBcCi0rCQkJICAgIChoZWFkKS0+c3FoX2xhc3QgPSAmKGN1cmVsbSktPmZpZWxkLnNxZV9uZXh0OyBcCi0rCX0JCQkJCQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNJTVBMRVFfQ09OQ0FUKGhlYWQxLCBoZWFkMikgZG8gewkJCQlcCi0rCWlmICghU0lNUExFUV9FTVBUWSgoaGVhZDIpKSkgewkJCQkJXAotKwkJKihoZWFkMSktPnNxaF9sYXN0ID0gKGhlYWQyKS0+c3FoX2ZpcnN0OwkJXAotKwkJKGhlYWQxKS0+c3FoX2xhc3QgPSAoaGVhZDIpLT5zcWhfbGFzdDsJCVwKLSsJCVNJTVBMRVFfSU5JVCgoaGVhZDIpKTsJCQkJCVwKLSsJfQkJCQkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0lNUExFUV9MQVNUKGhlYWQsIHR5cGUsIGZpZWxkKQkJCQkJXAotKwkoU0lNUExFUV9FTVBUWSgoaGVhZCkpID8JCQkJCQlcCi0rCQlOVUxMIDoJCQkJCQkJXAotKwkgICAgICAgICgoc3RydWN0IHR5cGUgKikodm9pZCAqKQkJCQlcCi0rCQkoKGNoYXIgKikoKGhlYWQpLT5zcWhfbGFzdCkgLSBvZmZzZXRvZihzdHJ1Y3QgdHlwZSwgZmllbGQpKSkpCi0rCi0rLyoKLSsgKiBUYWlsIHF1ZXVlIGRlZmluaXRpb25zLgotKyAqLwotKyNkZWZpbmUJX1RBSUxRX0hFQUQobmFtZSwgdHlwZSwgcXVhbCkJCQkJCVwKLStzdHJ1Y3QgbmFtZSB7CQkJCQkJCQlcCi0rCXF1YWwgdHlwZSAqdHFoX2ZpcnN0OwkJLyogZmlyc3QgZWxlbWVudCAqLwkJXAotKwlxdWFsIHR5cGUgKnF1YWwgKnRxaF9sYXN0OwkvKiBhZGRyIG9mIGxhc3QgbmV4dCBlbGVtZW50ICovCVwKLSt9Ci0rI2RlZmluZSBUQUlMUV9IRUFEKG5hbWUsIHR5cGUpCV9UQUlMUV9IRUFEKG5hbWUsIHN0cnVjdCB0eXBlLCkKLSsKLSsjZGVmaW5lCVRBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCkJCQkJCVwKLSsJeyBUQUlMUV9FTkQoaGVhZCksICYoaGVhZCkudHFoX2ZpcnN0IH0KLSsKLSsjZGVmaW5lCV9UQUlMUV9FTlRSWSh0eXBlLCBxdWFsKQkJCQkJXAotK3N0cnVjdCB7CQkJCQkJCQlcCi0rCXF1YWwgdHlwZSAqdHFlX25leHQ7CQkvKiBuZXh0IGVsZW1lbnQgKi8JCVwKLSsJcXVhbCB0eXBlICpxdWFsICp0cWVfcHJldjsJLyogYWRkcmVzcyBvZiBwcmV2aW91cyBuZXh0IGVsZW1lbnQgKi9cCi0rfQotKyNkZWZpbmUgVEFJTFFfRU5UUlkodHlwZSkJX1RBSUxRX0VOVFJZKHN0cnVjdCB0eXBlLCkKLSsKLSsvKgotKyAqIFRhaWwgcXVldWUgYWNjZXNzIG1ldGhvZHMuCi0rICovCi0rI2RlZmluZQlUQUlMUV9GSVJTVChoZWFkKQkJKChoZWFkKS0+dHFoX2ZpcnN0KQotKyNkZWZpbmUJVEFJTFFfRU5EKGhlYWQpCQkJKE5VTEwpCi0rI2RlZmluZQlUQUlMUV9ORVhUKGVsbSwgZmllbGQpCQkoKGVsbSktPmZpZWxkLnRxZV9uZXh0KQotKyNkZWZpbmUJVEFJTFFfTEFTVChoZWFkLCBoZWFkbmFtZSkgXAotKwkoKigoKHN0cnVjdCBoZWFkbmFtZSAqKSgoaGVhZCktPnRxaF9sYXN0KSktPnRxaF9sYXN0KSkKLSsjZGVmaW5lCVRBSUxRX1BSRVYoZWxtLCBoZWFkbmFtZSwgZmllbGQpIFwKLSsJKCooKChzdHJ1Y3QgaGVhZG5hbWUgKikoKGVsbSktPmZpZWxkLnRxZV9wcmV2KSktPnRxaF9sYXN0KSkKLSsjZGVmaW5lCVRBSUxRX0VNUFRZKGhlYWQpCQkoVEFJTFFfRklSU1QoaGVhZCkgPT0gVEFJTFFfRU5EKGhlYWQpKQotKwotKwotKyNkZWZpbmUJVEFJTFFfRk9SRUFDSCh2YXIsIGhlYWQsIGZpZWxkKQkJCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+dHFoX2ZpcnN0KTsJCQkJXAotKwkgICAgKHZhcikgIT0gVEFJTFFfRU5EKGhlYWQpOwkJCQkJXAotKwkgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLnRxZV9uZXh0KSkKLSsKLSsjZGVmaW5lCVRBSUxRX0ZPUkVBQ0hfU0FGRSh2YXIsIGhlYWQsIGZpZWxkLCBuZXh0KQkJCVwKLSsJZm9yICgodmFyKSA9ICgoaGVhZCktPnRxaF9maXJzdCk7CQkJCVwKLSsJICAgICh2YXIpICE9IFRBSUxRX0VORChoZWFkKSAmJgkJCQkJXAotKwkgICAgKChuZXh0KSA9IFRBSUxRX05FWFQodmFyLCBmaWVsZCksIDEpOyAodmFyKSA9IChuZXh0KSkKLSsKLSsjZGVmaW5lCVRBSUxRX0ZPUkVBQ0hfUkVWRVJTRSh2YXIsIGhlYWQsIGhlYWRuYW1lLCBmaWVsZCkJCVwKLSsJZm9yICgodmFyKSA9ICgqKCgoc3RydWN0IGhlYWRuYW1lICopKChoZWFkKS0+dHFoX2xhc3QpKS0+dHFoX2xhc3QpKTtcCi0rCSAgICAodmFyKSAhPSBUQUlMUV9FTkQoaGVhZCk7CQkJCQlcCi0rCSAgICAodmFyKSA9ICgqKCgoc3RydWN0IGhlYWRuYW1lICopKCh2YXIpLT5maWVsZC50cWVfcHJldikpLT50cWhfbGFzdCkpKQotKwotKyNkZWZpbmUJVEFJTFFfRk9SRUFDSF9SRVZFUlNFX1NBRkUodmFyLCBoZWFkLCBoZWFkbmFtZSwgZmllbGQsIHByZXYpCVwKLSsJZm9yICgodmFyKSA9IFRBSUxRX0xBU1QoKGhlYWQpLCBoZWFkbmFtZSk7CQkJXAotKwkgICAgKHZhcikgIT0gVEFJTFFfRU5EKGhlYWQpICYmIAkJCQlcCi0rCSAgICAoKHByZXYpID0gVEFJTFFfUFJFVigodmFyKSwgaGVhZG5hbWUsIGZpZWxkKSwgMSk7ICh2YXIpID0gKHByZXYpKQotKwotKy8qCi0rICogVGFpbCBxdWV1ZSBmdW5jdGlvbnMuCi0rICovCi0rI2lmIGRlZmluZWQoUVVFVUVERUJVRykKLSsjZGVmaW5lCVFVRVVFREVCVUdfVEFJTFFfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkJCQlcCi0rCWlmICgoaGVhZCktPnRxaF9maXJzdCAmJgkJCQkJXAotKwkgICAgKGhlYWQpLT50cWhfZmlyc3QtPmZpZWxkLnRxZV9wcmV2ICE9ICYoaGVhZCktPnRxaF9maXJzdCkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiVEFJTFFfSU5TRVJUX0hFQUQgJXAgJXM6JWQiLCAoaGVhZCksCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9JTlNFUlRfVEFJTChoZWFkLCBlbG0sIGZpZWxkKQkJCVwKLSsJaWYgKCooaGVhZCktPnRxaF9sYXN0ICE9IE5VTEwpCQkJCQlcCi0rCQlRVUVVRURFQlVHX0FCT1JUKCJUQUlMUV9JTlNFUlRfVEFJTCAlcCAlczolZCIsIChoZWFkKSwJXAotKwkJICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX09QKGVsbSwgZmllbGQpCQkJCQlcCi0rCWlmICgoZWxtKS0+ZmllbGQudHFlX25leHQgJiYJCQkJCVwKLSsJICAgIChlbG0pLT5maWVsZC50cWVfbmV4dC0+ZmllbGQudHFlX3ByZXYgIT0JCQlcCi0rCSAgICAmKGVsbSktPmZpZWxkLnRxZV9uZXh0KQkJCQkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiVEFJTFFfKiBmb3J3ICVwICVzOiVkIiwgKGVsbSksCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwkJCQlcCi0rCWlmICgqKGVsbSktPmZpZWxkLnRxZV9wcmV2ICE9IChlbG0pKQkJCQlcCi0rCQlRVUVVRURFQlVHX0FCT1JUKCJUQUlMUV8qIGJhY2sgJXAgJXM6JWQiLCAoZWxtKSwJXAotKwkJICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX1BSRVJFTU9WRShoZWFkLCBlbG0sIGZpZWxkKQkJCVwKLSsJaWYgKChlbG0pLT5maWVsZC50cWVfbmV4dCA9PSBOVUxMICYmCQkJCVwKLSsJICAgIChoZWFkKS0+dHFoX2xhc3QgIT0gJihlbG0pLT5maWVsZC50cWVfbmV4dCkJCQlcCi0rCQlRVUVVRURFQlVHX0FCT1JUKCJUQUlMUV9QUkVSRU1PVkUgaGVhZCAlcCBlbG0gJXAgJXM6JWQiLFwKLSsJCSAgICAoaGVhZCksIChlbG0pLCBfX0ZJTEVfXywgX19MSU5FX18pOwotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9QT1NUUkVNT1ZFKGVsbSwgZmllbGQpCQkJCVwKLSsJKGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKHZvaWQgKikxTDsJCQkJXAotKwkoZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAodm9pZCAqKTFMOwotKyNlbHNlCi0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpCi0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX0lOU0VSVF9UQUlMKGhlYWQsIGVsbSwgZmllbGQpCi0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX09QKGVsbSwgZmllbGQpCi0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX1BSRVJFTU9WRShoZWFkLCBlbG0sIGZpZWxkKQotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9QT1NUUkVNT1ZFKGVsbSwgZmllbGQpCi0rI2VuZGlmCi0rCi0rI2RlZmluZQlUQUlMUV9JTklUKGhlYWQpIGRvIHsJCQkJCQlcCi0rCShoZWFkKS0+dHFoX2ZpcnN0ID0gVEFJTFFfRU5EKGhlYWQpOwkJCQlcCi0rCShoZWFkKS0+dHFoX2xhc3QgPSAmKGhlYWQpLT50cWhfZmlyc3Q7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVRBSUxRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfVEFJTFFfSU5TRVJUX0hFQUQoKGhlYWQpLCAoZWxtKSwgZmllbGQpCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGhlYWQpLT50cWhfZmlyc3QpICE9IFRBSUxRX0VORChoZWFkKSlcCi0rCQkoaGVhZCktPnRxaF9maXJzdC0+ZmllbGQudHFlX3ByZXYgPQkJCVwKLSsJCSAgICAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCQlcCi0rCWVsc2UJCQkJCQkJCVwKLSsJCShoZWFkKS0+dHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJXAotKwkoaGVhZCktPnRxaF9maXJzdCA9IChlbG0pOwkJCQkJXAotKwkoZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAmKGhlYWQpLT50cWhfZmlyc3Q7CQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJVEFJTFFfSU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJUVVFVUVERUJVR19UQUlMUV9JTlNFUlRfVEFJTCgoaGVhZCksIChlbG0pLCBmaWVsZCkJCVwKLSsJKGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gVEFJTFFfRU5EKGhlYWQpOwkJCVwKLSsJKGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gKGhlYWQpLT50cWhfbGFzdDsJCQlcCi0rCSooaGVhZCktPnRxaF9sYXN0ID0gKGVsbSk7CQkJCQlcCi0rCShoZWFkKS0+dHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVRBSUxRX0lOU0VSVF9BRlRFUihoZWFkLCBsaXN0ZWxtLCBlbG0sIGZpZWxkKSBkbyB7CQlcCi0rCVFVRVVFREVCVUdfVEFJTFFfT1AoKGxpc3RlbG0pLCBmaWVsZCkJCQkJXAotKwlpZiAoKChlbG0pLT5maWVsZC50cWVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQudHFlX25leHQpICE9IAlcCi0rCSAgICBUQUlMUV9FTkQoaGVhZCkpCQkJCQkJXAotKwkJKGVsbSktPmZpZWxkLnRxZV9uZXh0LT5maWVsZC50cWVfcHJldiA9IAkJXAotKwkJICAgICYoZWxtKS0+ZmllbGQudHFlX25leHQ7CQkJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGhlYWQpLT50cWhfbGFzdCA9ICYoZWxtKS0+ZmllbGQudHFlX25leHQ7CQlcCi0rCShsaXN0ZWxtKS0+ZmllbGQudHFlX25leHQgPSAoZWxtKTsJCQkJXAotKwkoZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAmKGxpc3RlbG0pLT5maWVsZC50cWVfbmV4dDsJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVRBSUxRX0lOU0VSVF9CRUZPUkUobGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJUVVFVUVERUJVR19UQUlMUV9PUCgobGlzdGVsbSksIGZpZWxkKQkJCQlcCi0rCShlbG0pLT5maWVsZC50cWVfcHJldiA9IChsaXN0ZWxtKS0+ZmllbGQudHFlX3ByZXY7CQlcCi0rCShlbG0pLT5maWVsZC50cWVfbmV4dCA9IChsaXN0ZWxtKTsJCQkJXAotKwkqKGxpc3RlbG0pLT5maWVsZC50cWVfcHJldiA9IChlbG0pOwkJCQlcCi0rCShsaXN0ZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJVEFJTFFfUkVNT1ZFKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQkJXAotKwlRVUVVRURFQlVHX1RBSUxRX1BSRVJFTU9WRSgoaGVhZCksIChlbG0pLCBmaWVsZCkJCVwKLSsJUVVFVUVERUJVR19UQUlMUV9PUCgoZWxtKSwgZmllbGQpCQkJCVwKLSsJaWYgKCgoZWxtKS0+ZmllbGQudHFlX25leHQpICE9IFRBSUxRX0VORChoZWFkKSkJCQlcCi0rCQkoZWxtKS0+ZmllbGQudHFlX25leHQtPmZpZWxkLnRxZV9wcmV2ID0gCQlcCi0rCQkgICAgKGVsbSktPmZpZWxkLnRxZV9wcmV2OwkJCQlcCi0rCWVsc2UJCQkJCQkJCVwKLSsJCShoZWFkKS0+dHFoX2xhc3QgPSAoZWxtKS0+ZmllbGQudHFlX3ByZXY7CQlcCi0rCSooZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAoZWxtKS0+ZmllbGQudHFlX25leHQ7CQkJXAotKwlRVUVVRURFQlVHX1RBSUxRX1BPU1RSRU1PVkUoKGVsbSksIGZpZWxkKTsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZSBUQUlMUV9SRVBMQUNFKGhlYWQsIGVsbSwgZWxtMiwgZmllbGQpIGRvIHsJCQlcCi0rICAgICAgICBpZiAoKChlbG0yKS0+ZmllbGQudHFlX25leHQgPSAoZWxtKS0+ZmllbGQudHFlX25leHQpICE9IAlcCi0rCSAgICBUQUlMUV9FTkQoaGVhZCkpICAgCQkJCQkJXAotKyAgICAgICAgICAgICAgICAoZWxtMiktPmZpZWxkLnRxZV9uZXh0LT5maWVsZC50cWVfcHJldiA9CQlcCi0rICAgICAgICAgICAgICAgICAgICAmKGVsbTIpLT5maWVsZC50cWVfbmV4dDsJCQkJXAotKyAgICAgICAgZWxzZQkJCQkJCQkJXAotKyAgICAgICAgICAgICAgICAoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0yKS0+ZmllbGQudHFlX25leHQ7CQlcCi0rICAgICAgICAoZWxtMiktPmZpZWxkLnRxZV9wcmV2ID0gKGVsbSktPmZpZWxkLnRxZV9wcmV2OwkJCVwKLSsgICAgICAgICooZWxtMiktPmZpZWxkLnRxZV9wcmV2ID0gKGVsbTIpOwkJCQlcCi0rCVFVRVVFREVCVUdfVEFJTFFfUE9TVFJFTU9WRSgoZWxtKSwgZmllbGQpOwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVRBSUxRX0NPTkNBVChoZWFkMSwgaGVhZDIsIGZpZWxkKSBkbyB7CQkJCVwKLSsJaWYgKCFUQUlMUV9FTVBUWShoZWFkMikpIHsJCQkJCVwKLSsJCSooaGVhZDEpLT50cWhfbGFzdCA9IChoZWFkMiktPnRxaF9maXJzdDsJCVwKLSsJCShoZWFkMiktPnRxaF9maXJzdC0+ZmllbGQudHFlX3ByZXYgPSAoaGVhZDEpLT50cWhfbGFzdDsJXAotKwkJKGhlYWQxKS0+dHFoX2xhc3QgPSAoaGVhZDIpLT50cWhfbGFzdDsJCQlcCi0rCQlUQUlMUV9JTklUKChoZWFkMikpOwkJCQkJXAotKwl9CQkJCQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rLyoKLSsgKiBTaW5nbHktbGlua2VkIFRhaWwgcXVldWUgZGVjbGFyYXRpb25zLgotKyAqLwotKyNkZWZpbmUJU1RBSUxRX0hFQUQobmFtZSwgdHlwZSkJCQkJCQlcCi0rc3RydWN0IG5hbWUgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqc3RxaF9maXJzdDsJLyogZmlyc3QgZWxlbWVudCAqLwkJXAotKwlzdHJ1Y3QgdHlwZSAqKnN0cWhfbGFzdDsJLyogYWRkciBvZiBsYXN0IG5leHQgZWxlbWVudCAqLwlcCi0rfQotKwotKyNkZWZpbmUJU1RBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCkJCQkJCVwKLSsJeyBOVUxMLCAmKGhlYWQpLnN0cWhfZmlyc3QgfQotKwotKyNkZWZpbmUJU1RBSUxRX0VOVFJZKHR5cGUpCQkJCQkJXAotK3N0cnVjdCB7CQkJCQkJCQlcCi0rCXN0cnVjdCB0eXBlICpzdHFlX25leHQ7CS8qIG5leHQgZWxlbWVudCAqLwkJCVwKLSt9Ci0rCi0rLyoKLSsgKiBTaW5nbHktbGlua2VkIFRhaWwgcXVldWUgYWNjZXNzIG1ldGhvZHMuCi0rICovCi0rI2RlZmluZQlTVEFJTFFfRklSU1QoaGVhZCkJKChoZWFkKS0+c3RxaF9maXJzdCkKLSsjZGVmaW5lCVNUQUlMUV9FTkQoaGVhZCkJTlVMTAotKyNkZWZpbmUJU1RBSUxRX05FWFQoZWxtLCBmaWVsZCkJKChlbG0pLT5maWVsZC5zdHFlX25leHQpCi0rI2RlZmluZQlTVEFJTFFfRU1QVFkoaGVhZCkJKFNUQUlMUV9GSVJTVChoZWFkKSA9PSBTVEFJTFFfRU5EKGhlYWQpKQotKwotKy8qCi0rICogU2luZ2x5LWxpbmtlZCBUYWlsIHF1ZXVlIGZ1bmN0aW9ucy4KLSsgKi8KLSsjZGVmaW5lCVNUQUlMUV9JTklUKGhlYWQpIGRvIHsJCQkJCQlcCi0rCShoZWFkKS0+c3RxaF9maXJzdCA9IE5VTEw7CQkJCQlcCi0rCShoZWFkKS0+c3RxaF9sYXN0ID0gJihoZWFkKS0+c3RxaF9maXJzdDsJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU1RBSUxRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLnN0cWVfbmV4dCA9IChoZWFkKS0+c3RxaF9maXJzdCkgPT0gTlVMTCkJXAotKwkJKGhlYWQpLT5zdHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnN0cWVfbmV4dDsJCVwKLSsJKGhlYWQpLT5zdHFoX2ZpcnN0ID0gKGVsbSk7CQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTVEFJTFFfSU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJKGVsbSktPmZpZWxkLnN0cWVfbmV4dCA9IE5VTEw7CQkJCQlcCi0rCSooaGVhZCktPnN0cWhfbGFzdCA9IChlbG0pOwkJCQkJXAotKwkoaGVhZCktPnN0cWhfbGFzdCA9ICYoZWxtKS0+ZmllbGQuc3RxZV9uZXh0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNUQUlMUV9JTlNFUlRfQUZURVIoaGVhZCwgbGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8gewkJXAotKwlpZiAoKChlbG0pLT5maWVsZC5zdHFlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLnN0cWVfbmV4dCkgPT0gTlVMTClcCi0rCQkoaGVhZCktPnN0cWhfbGFzdCA9ICYoZWxtKS0+ZmllbGQuc3RxZV9uZXh0OwkJXAotKwkobGlzdGVsbSktPmZpZWxkLnN0cWVfbmV4dCA9IChlbG0pOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTVEFJTFFfUkVNT1ZFX0hFQUQoaGVhZCwgZmllbGQpIGRvIHsJCQkJXAotKwlpZiAoKChoZWFkKS0+c3RxaF9maXJzdCA9IChoZWFkKS0+c3RxaF9maXJzdC0+ZmllbGQuc3RxZV9uZXh0KSA9PSBOVUxMKSBcCi0rCQkoaGVhZCktPnN0cWhfbGFzdCA9ICYoaGVhZCktPnN0cWhfZmlyc3Q7CQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU1RBSUxRX1JFTU9WRShoZWFkLCBlbG0sIHR5cGUsIGZpZWxkKSBkbyB7CQkJXAotKwlpZiAoKGhlYWQpLT5zdHFoX2ZpcnN0ID09IChlbG0pKSB7CQkJCVwKLSsJCVNUQUlMUV9SRU1PVkVfSEVBRCgoaGVhZCksIGZpZWxkKTsJCQlcCi0rCX0gZWxzZSB7CQkJCQkJCVwKLSsJCXN0cnVjdCB0eXBlICpjdXJlbG0gPSAoaGVhZCktPnN0cWhfZmlyc3Q7CQlcCi0rCQl3aGlsZSAoY3VyZWxtLT5maWVsZC5zdHFlX25leHQgIT0gKGVsbSkpCQkJXAotKwkJCWN1cmVsbSA9IGN1cmVsbS0+ZmllbGQuc3RxZV9uZXh0OwkJXAotKwkJaWYgKChjdXJlbG0tPmZpZWxkLnN0cWVfbmV4dCA9CQkJCVwKLSsJCQljdXJlbG0tPmZpZWxkLnN0cWVfbmV4dC0+ZmllbGQuc3RxZV9uZXh0KSA9PSBOVUxMKSBcCi0rCQkJICAgIChoZWFkKS0+c3RxaF9sYXN0ID0gJihjdXJlbG0pLT5maWVsZC5zdHFlX25leHQ7IFwKLSsJfQkJCQkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU1RBSUxRX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkJCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+c3RxaF9maXJzdCk7CQkJCVwKLSsJCSh2YXIpOwkJCQkJCQlcCi0rCQkodmFyKSA9ICgodmFyKS0+ZmllbGQuc3RxZV9uZXh0KSkKLSsKLSsjZGVmaW5lCVNUQUlMUV9GT1JFQUNIX1NBRkUodmFyLCBoZWFkLCBmaWVsZCwgdHZhcikJCQlcCi0rCWZvciAoKHZhcikgPSBTVEFJTFFfRklSU1QoKGhlYWQpKTsJCQkJXAotKwkgICAgKHZhcikgJiYgKCh0dmFyKSA9IFNUQUlMUV9ORVhUKCh2YXIpLCBmaWVsZCksIDEpOwkJXAotKwkgICAgKHZhcikgPSAodHZhcikpCi0rCi0rI2RlZmluZQlTVEFJTFFfQ09OQ0FUKGhlYWQxLCBoZWFkMikgZG8gewkJCQlcCi0rCWlmICghU1RBSUxRX0VNUFRZKChoZWFkMikpKSB7CQkJCQlcCi0rCQkqKGhlYWQxKS0+c3RxaF9sYXN0ID0gKGhlYWQyKS0+c3RxaF9maXJzdDsJCVwKLSsJCShoZWFkMSktPnN0cWhfbGFzdCA9IChoZWFkMiktPnN0cWhfbGFzdDsJCVwKLSsJCVNUQUlMUV9JTklUKChoZWFkMikpOwkJCQkJXAotKwl9CQkJCQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTVEFJTFFfTEFTVChoZWFkLCB0eXBlLCBmaWVsZCkJCQkJCVwKLSsJKFNUQUlMUV9FTVBUWSgoaGVhZCkpID8JCQkJCQlcCi0rCQlOVUxMIDoJCQkJCQkJXAotKwkgICAgICAgICgoc3RydWN0IHR5cGUgKikodm9pZCAqKQkJCQlcCi0rCQkoKGNoYXIgKikoKGhlYWQpLT5zdHFoX2xhc3QpIC0gb2Zmc2V0b2Yoc3RydWN0IHR5cGUsIGZpZWxkKSkpKQotKwotKwotKyNpZm5kZWYgX0tFUk5FTAotKy8qCi0rICogQ2lyY3VsYXIgcXVldWUgZGVmaW5pdGlvbnMuIERvIG5vdCB1c2UuIFdlIHN0aWxsIGtlZXAgdGhlIG1hY3JvcwotKyAqIGZvciBjb21wYXRpYmlsaXR5IGJ1dCBiZWNhdXNlIG9mIHBvaW50ZXIgYWxpYXNpbmcgaXNzdWVzIHRoZWlyIHVzZQotKyAqIGlzIGRpc2NvdXJhZ2VkIQotKyAqLwotKwotKy8qCi0rICogX19sYXVuZGVyX3R5cGUoKTogIFdlIHVzZSB0aGlzIHVnbHkgaGFjayB0byB3b3JrIGFyb3VuZCB0aGUgdGhlIGNvbXBpbGVyCi0rICogbm90aWNpbmcgdGhhdCB0d28gdHlwZXMgbWF5IG5vdCBhbGlhcyBlYWNoIG90aGVyIGFuZCBlbGlkZSB0ZXN0cyBpbiBjb2RlLgotKyAqIFdlIGhpdCB0aGlzIGluIHRoZSBDSVJDTEVRIG1hY3JvcyB3aGVuIGNvbXBhcmluZyAnc3RydWN0IG5hbWUgKicgYW5kCi0rICogJ3N0cnVjdCB0eXBlIConIChzZWUgQ0lSQ0xFUV9IRUFEKCkpLiAgTW9kZXJuIGNvbXBpbGVycyAoc3VjaCBhcyBHQ0MKLSsgKiA0LjgpIGRlY2xhcmUgdGhlc2UgY29tcGFyaXNvbnMgYXMgYWx3YXlzIGZhbHNlLCBjYXVzaW5nIHRoZSBjb2RlIHRvCi0rICogbm90IHJ1biBhcyBkZXNpZ25lZC4KLSsgKgotKyAqIFRoaXMgaGFjayBpcyBvbmx5IHRvIGJlIHVzZWQgZm9yIGNvbXBhcmlzb25zIGFuZCB0aHVzIGNhbiBiZSBmdWxseSBjb25zdC4KLSsgKiBEbyBub3QgdXNlIGZvciBhc3NpZ25tZW50LgotKyAqCi0rICogSWYgd2UgZXZlciBjaG9vc2UgdG8gY2hhbmdlIHRoZSBBQkkgb2YgdGhlIENJUkNMRVEgbWFjcm9zLCB3ZSBjb3VsZCBmaXgKLSsgKiB0aGlzIGJ5IGNoYW5naW5nIHRoZSBoZWFkL3RhaWwgc2VudGluYWwgdmFsdWVzLCBidXQgc2VlIHRoZSBub3RlIGFib3ZlCi0rICogdGhpcyBvbmUuCi0rICovCi0rc3RhdGljIF9faW5saW5lIGNvbnN0IHZvaWQgKiBfX2xhdW5kZXJfdHlwZShjb25zdCB2b2lkICopOwotK3N0YXRpYyBfX2lubGluZSBjb25zdCB2b2lkICoKLStfX2xhdW5kZXJfdHlwZShjb25zdCB2b2lkICpfX3gpCi0rewotKwlfX2FzbSBfX3ZvbGF0aWxlKCIiIDogIityIiAoX194KSk7Ci0rCXJldHVybiBfX3g7Ci0rfQotKwotKyNpZiBkZWZpbmVkKFFVRVVFREVCVUcpCi0rI2RlZmluZSBRVUVVRURFQlVHX0NJUkNMRVFfSEVBRChoZWFkLCBmaWVsZCkJCQkJXAotKwlpZiAoKGhlYWQpLT5jcWhfZmlyc3QgIT0gQ0lSQ0xFUV9FTkRDKGhlYWQpICYmCQkJXAotKwkgICAgKGhlYWQpLT5jcWhfZmlyc3QtPmZpZWxkLmNxZV9wcmV2ICE9IENJUkNMRVFfRU5EQyhoZWFkKSkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiQ0lSQ0xFUSBoZWFkIGZvcncgJXAgJXM6JWQiLCAoaGVhZCksCVwKLSsJCSAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7CQkJCVwKLSsJaWYgKChoZWFkKS0+Y3FoX2xhc3QgIT0gQ0lSQ0xFUV9FTkRDKGhlYWQpICYmCQkJXAotKwkgICAgKGhlYWQpLT5jcWhfbGFzdC0+ZmllbGQuY3FlX25leHQgIT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKQlcCi0rCQlRVUVVRURFQlVHX0FCT1JUKCJDSVJDTEVRIGhlYWQgYmFjayAlcCAlczolZCIsIChoZWFkKSwJXAotKwkJICAgICAgX19GSUxFX18sIF9fTElORV9fKTsKLSsjZGVmaW5lIFFVRVVFREVCVUdfQ0lSQ0xFUV9FTE0oaGVhZCwgZWxtLCBmaWVsZCkJCQlcCi0rCWlmICgoZWxtKS0+ZmllbGQuY3FlX25leHQgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKSB7CQlcCi0rCQlpZiAoKGhlYWQpLT5jcWhfbGFzdCAhPSAoZWxtKSkJCQkJXAotKwkJCVFVRVVFREVCVUdfQUJPUlQoIkNJUkNMRVEgZWxtIGxhc3QgJXAgJXM6JWQiLAlcCi0rCQkJICAgIChlbG0pLCBfX0ZJTEVfXywgX19MSU5FX18pOwkJCVwKLSsJfSBlbHNlIHsJCQkJCQkJXAotKwkJaWYgKChlbG0pLT5maWVsZC5jcWVfbmV4dC0+ZmllbGQuY3FlX3ByZXYgIT0gKGVsbSkpCVwKLSsJCQlRVUVVRURFQlVHX0FCT1JUKCJDSVJDTEVRIGVsbSBmb3J3ICVwICVzOiVkIiwJXAotKwkJCSAgICAoZWxtKSwgX19GSUxFX18sIF9fTElORV9fKTsJCQlcCi0rCX0JCQkJCQkJCVwKLSsJaWYgKChlbG0pLT5maWVsZC5jcWVfcHJldiA9PSBDSVJDTEVRX0VOREMoaGVhZCkpIHsJCVwKLSsJCWlmICgoaGVhZCktPmNxaF9maXJzdCAhPSAoZWxtKSkJCQkJXAotKwkJCVFVRVVFREVCVUdfQUJPUlQoIkNJUkNMRVEgZWxtIGZpcnN0ICVwICVzOiVkIiwJXAotKwkJCSAgICAoZWxtKSwgX19GSUxFX18sIF9fTElORV9fKTsJCQlcCi0rCX0gZWxzZSB7CQkJCQkJCVwKLSsJCWlmICgoZWxtKS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ICE9IChlbG0pKQlcCi0rCQkJUVVFVUVERUJVR19BQk9SVCgiQ0lSQ0xFUSBlbG0gcHJldiAlcCAlczolZCIsCVwKLSsJCQkgICAgKGVsbSksIF9fRklMRV9fLCBfX0xJTkVfXyk7CQkJXAotKwl9Ci0rI2RlZmluZSBRVUVVRURFQlVHX0NJUkNMRVFfUE9TVFJFTU9WRShlbG0sIGZpZWxkKQkJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gKHZvaWQgKikxTDsJCQkJXAotKwkoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPSAodm9pZCAqKTFMOwotKyNlbHNlCi0rI2RlZmluZSBRVUVVRURFQlVHX0NJUkNMRVFfSEVBRChoZWFkLCBmaWVsZCkKLSsjZGVmaW5lIFFVRVVFREVCVUdfQ0lSQ0xFUV9FTE0oaGVhZCwgZWxtLCBmaWVsZCkKLSsjZGVmaW5lIFFVRVVFREVCVUdfQ0lSQ0xFUV9QT1NUUkVNT1ZFKGVsbSwgZmllbGQpCi0rI2VuZGlmCi0rCi0rI2RlZmluZQlDSVJDTEVRX0hFQUQobmFtZSwgdHlwZSkJCQkJCVwKLStzdHJ1Y3QgbmFtZSB7CQkJCQkJCQlcCi0rCXN0cnVjdCB0eXBlICpjcWhfZmlyc3Q7CQkvKiBmaXJzdCBlbGVtZW50ICovCQlcCi0rCXN0cnVjdCB0eXBlICpjcWhfbGFzdDsJCS8qIGxhc3QgZWxlbWVudCAqLwkJXAotK30KLSsKLSsjZGVmaW5lCUNJUkNMRVFfSEVBRF9JTklUSUFMSVpFUihoZWFkKQkJCQkJXAotKwl7IENJUkNMRVFfRU5EKCZoZWFkKSwgQ0lSQ0xFUV9FTkQoJmhlYWQpIH0KLSsKLSsjZGVmaW5lCUNJUkNMRVFfRU5UUlkodHlwZSkJCQkJCQlcCi0rc3RydWN0IHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKmNxZV9uZXh0OwkJLyogbmV4dCBlbGVtZW50ICovCQlcCi0rCXN0cnVjdCB0eXBlICpjcWVfcHJldjsJCS8qIHByZXZpb3VzIGVsZW1lbnQgKi8JCVwKLSt9Ci0rCi0rLyoKLSsgKiBDaXJjdWxhciBxdWV1ZSBmdW5jdGlvbnMuCi0rICovCi0rI2RlZmluZQlDSVJDTEVRX0lOSVQoaGVhZCkgZG8gewkJCQkJCVwKLSsJKGhlYWQpLT5jcWhfZmlyc3QgPSBDSVJDTEVRX0VORChoZWFkKTsJCQkJXAotKwkoaGVhZCktPmNxaF9sYXN0ID0gQ0lSQ0xFUV9FTkQoaGVhZCk7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUNJUkNMRVFfSU5TRVJUX0FGVEVSKGhlYWQsIGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0hFQUQoKGhlYWQpLCBmaWVsZCkJCQkJXAotKwlRVUVVRURFQlVHX0NJUkNMRVFfRUxNKChoZWFkKSwgKGxpc3RlbG0pLCBmaWVsZCkJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gKGxpc3RlbG0pLT5maWVsZC5jcWVfbmV4dDsJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9wcmV2ID0gKGxpc3RlbG0pOwkJCQlcCi0rCWlmICgobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCVwKLSsJCShoZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKTsJCQkJXAotKwllbHNlCQkJCQkJCQlcCi0rCQkobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0LT5maWVsZC5jcWVfcHJldiA9IChlbG0pOwlcCi0rCShsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQgPSAoZWxtKTsJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJQ0lSQ0xFUV9JTlNFUlRfQkVGT1JFKGhlYWQsIGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0hFQUQoKGhlYWQpLCBmaWVsZCkJCQkJXAotKwlRVUVVRURFQlVHX0NJUkNMRVFfRUxNKChoZWFkKSwgKGxpc3RlbG0pLCBmaWVsZCkJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gKGxpc3RlbG0pOwkJCQlcCi0rCShlbG0pLT5maWVsZC5jcWVfcHJldiA9IChsaXN0ZWxtKS0+ZmllbGQuY3FlX3ByZXY7CQlcCi0rCWlmICgobGlzdGVsbSktPmZpZWxkLmNxZV9wcmV2ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCVwKLSsJCShoZWFkKS0+Y3FoX2ZpcnN0ID0gKGVsbSk7CQkJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGxpc3RlbG0pLT5maWVsZC5jcWVfcHJldi0+ZmllbGQuY3FlX25leHQgPSAoZWxtKTsJXAotKwkobGlzdGVsbSktPmZpZWxkLmNxZV9wcmV2ID0gKGVsbSk7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUNJUkNMRVFfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0hFQUQoKGhlYWQpLCBmaWVsZCkJCQkJXAotKwkoZWxtKS0+ZmllbGQuY3FlX25leHQgPSAoaGVhZCktPmNxaF9maXJzdDsJCQlcCi0rCShlbG0pLT5maWVsZC5jcWVfcHJldiA9IENJUkNMRVFfRU5EKGhlYWQpOwkJCVwKLSsJaWYgKChoZWFkKS0+Y3FoX2xhc3QgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKQkJCVwKLSsJCShoZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKTsJCQkJXAotKwllbHNlCQkJCQkJCQlcCi0rCQkoaGVhZCktPmNxaF9maXJzdC0+ZmllbGQuY3FlX3ByZXYgPSAoZWxtKTsJCVwKLSsJKGhlYWQpLT5jcWhfZmlyc3QgPSAoZWxtKTsJCQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUNJUkNMRVFfSU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0hFQUQoKGhlYWQpLCBmaWVsZCkJCQkJXAotKwkoZWxtKS0+ZmllbGQuY3FlX25leHQgPSBDSVJDTEVRX0VORChoZWFkKTsJCQlcCi0rCShlbG0pLT5maWVsZC5jcWVfcHJldiA9IChoZWFkKS0+Y3FoX2xhc3Q7CQkJXAotKwlpZiAoKGhlYWQpLT5jcWhfZmlyc3QgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKQkJCVwKLSsJCShoZWFkKS0+Y3FoX2ZpcnN0ID0gKGVsbSk7CQkJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGhlYWQpLT5jcWhfbGFzdC0+ZmllbGQuY3FlX25leHQgPSAoZWxtKTsJCVwKLSsJKGhlYWQpLT5jcWhfbGFzdCA9IChlbG0pOwkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJQ0lSQ0xFUV9SRU1PVkUoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9IRUFEKChoZWFkKSwgZmllbGQpCQkJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0VMTSgoaGVhZCksIChlbG0pLCBmaWVsZCkJCQlcCi0rCWlmICgoZWxtKS0+ZmllbGQuY3FlX25leHQgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKQkJXAotKwkJKGhlYWQpLT5jcWhfbGFzdCA9IChlbG0pLT5maWVsZC5jcWVfcHJldjsJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGVsbSktPmZpZWxkLmNxZV9uZXh0LT5maWVsZC5jcWVfcHJldiA9CQkJXAotKwkJICAgIChlbG0pLT5maWVsZC5jcWVfcHJldjsJCQkJXAotKwlpZiAoKGVsbSktPmZpZWxkLmNxZV9wcmV2ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCVwKLSsJCShoZWFkKS0+Y3FoX2ZpcnN0ID0gKGVsbSktPmZpZWxkLmNxZV9uZXh0OwkJXAotKwllbHNlCQkJCQkJCQlcCi0rCQkoZWxtKS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ID0JCQlcCi0rCQkgICAgKGVsbSktPmZpZWxkLmNxZV9uZXh0OwkJCQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9QT1NUUkVNT1ZFKChlbG0pLCBmaWVsZCkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlDSVJDTEVRX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkJCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+Y3FoX2ZpcnN0KTsJCQkJXAotKwkJKHZhcikgIT0gQ0lSQ0xFUV9FTkRDKGhlYWQpOwkJCQlcCi0rCQkodmFyKSA9ICgodmFyKS0+ZmllbGQuY3FlX25leHQpKQotKwotKyNkZWZpbmUJQ0lSQ0xFUV9GT1JFQUNIX1JFVkVSU0UodmFyLCBoZWFkLCBmaWVsZCkJCQlcCi0rCWZvciAoKHZhcikgPSAoKGhlYWQpLT5jcWhfbGFzdCk7CQkJCVwKLSsJCSh2YXIpICE9IENJUkNMRVFfRU5EQyhoZWFkKTsJCQkJXAotKwkJKHZhcikgPSAoKHZhciktPmZpZWxkLmNxZV9wcmV2KSkKLSsKLSsvKgotKyAqIENpcmN1bGFyIHF1ZXVlIGFjY2VzcyBtZXRob2RzLgotKyAqLwotKyNkZWZpbmUJQ0lSQ0xFUV9GSVJTVChoZWFkKQkJKChoZWFkKS0+Y3FoX2ZpcnN0KQotKyNkZWZpbmUJQ0lSQ0xFUV9MQVNUKGhlYWQpCQkoKGhlYWQpLT5jcWhfbGFzdCkKLSsvKiBGb3IgY29tcGFyaXNvbnMgKi8KLSsjZGVmaW5lCUNJUkNMRVFfRU5EQyhoZWFkKQkJKF9fbGF1bmRlcl90eXBlKGhlYWQpKQotKy8qIEZvciBhc3NpZ25tZW50cyAqLwotKyNkZWZpbmUJQ0lSQ0xFUV9FTkQoaGVhZCkJCSgodm9pZCAqKShoZWFkKSkKLSsjZGVmaW5lCUNJUkNMRVFfTkVYVChlbG0sIGZpZWxkKQkoKGVsbSktPmZpZWxkLmNxZV9uZXh0KQotKyNkZWZpbmUJQ0lSQ0xFUV9QUkVWKGVsbSwgZmllbGQpCSgoZWxtKS0+ZmllbGQuY3FlX3ByZXYpCi0rI2RlZmluZQlDSVJDTEVRX0VNUFRZKGhlYWQpCQkJCQkJXAotKyAgICAoQ0lSQ0xFUV9GSVJTVChoZWFkKSA9PSBDSVJDTEVRX0VOREMoaGVhZCkpCi0rCi0rI2RlZmluZSBDSVJDTEVRX0xPT1BfTkVYVChoZWFkLCBlbG0sIGZpZWxkKQkJCQlcCi0rCSgoKGVsbSktPmZpZWxkLmNxZV9uZXh0ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCQlcCi0rCSAgICA/ICgoaGVhZCktPmNxaF9maXJzdCkJCQkJCVwKLSsJICAgIDogKGVsbS0+ZmllbGQuY3FlX25leHQpKQotKyNkZWZpbmUgQ0lSQ0xFUV9MT09QX1BSRVYoaGVhZCwgZWxtLCBmaWVsZCkJCQkJXAotKwkoKChlbG0pLT5maWVsZC5jcWVfcHJldiA9PSBDSVJDTEVRX0VOREMoaGVhZCkpCQkJXAotKwkgICAgPyAoKGhlYWQpLT5jcWhfbGFzdCkJCQkJCVwKLSsJICAgIDogKGVsbS0+ZmllbGQuY3FlX3ByZXYpKQotKyNlbmRpZiAvKiAhX0tFUk5FTCAqLwotKwotKyNlbmRpZgkvKiAhX1NZU19RVUVVRV9IXyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvZXhwb3J0X2tleV9zZWNyZXRrZXlfaXNfc2V0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvZXhwb3J0X2tleV9zZWNyZXRrZXlfaXNfc2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2Y0OTY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gZTUxZDY3NTQ5YjUxNmIyZGFjNmM3MWQ5MmM4NDk5ZjZlNjcxMjVhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob3JzdGVuIEt1a3VrIDxrdWt1a0B0aGt1a3VrLmRlPgotRGF0ZTogVHVlLCAxNCBOb3YgMjAxNyAxMDo0Mzo1MyAtMDUwMAotU3ViamVjdDogW1BBVENIXSBGaXggdHlwbyBpbiBzcmMvbGlidGlycGMubWFwCi0KLVdoaWNoIHByZXZlbnRzIHRoYXQga2V5X3NlY3JldGtleV9pc19zZXQgd2lsbCBiZSBleHBvcnRlZC4KLQotU2lnbmVkLW9mZi1ieTogVGhvcnN0ZW4gS3VrdWsgPGt1a3VrQHN1c2UuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KLS0tLQotIHNyYy9saWJ0aXJwYy5tYXAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGlidGlycGMubWFwIGIvc3JjL2xpYnRpcnBjLm1hcAotaW5kZXggZjM4NWRlNS4uMjFkNjA2NSAxMDA2NDQKLS0tLSBhL3NyYy9saWJ0aXJwYy5tYXAKLSsrKyBiL3NyYy9saWJ0aXJwYy5tYXAKLUBAIC0yOTgsNyArMjk4LDcgQEAgVElSUENfMC4zLjIgewotICAgICBrZXlfZ2VuZGVzOwotICAgICBrZXlfZ2V0X2NvbnY7Ci0gICAgIGtleV9zZXRzZWNyZXQ7Ci0tICAgIGtleV9zZWNyZXRfaXNfc2V0OwotKyAgICBrZXlfc2VjcmV0a2V5X2lzX3NldDsKLSAgICAga2V5X3NldG5ldDsKLSAgICAgbmV0bmFtZTJob3N0OwotICAgICBuZXRuYW1lMnVzZXI7Ci0tLSAKLTEuOC4zLjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTEuMC40LXJjMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTEuMC40LXJjMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQwZDNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbGlidGlycGMtMS4wLjQtcmMxLnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitQYXRjaCBmcm9tIEZlZG9yYSBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2xpYnRpcnBjL3Jhdy9tYXN0ZXIvZi9saWJ0aXJwYy0xLjAuNC1yYzEucGF0Y2gKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworZGlmZiAtLWdpdCBhL3NyYy9jbG50X2dlbmVyaWMuYyBiL3NyYy9jbG50X2dlbmVyaWMuYworaW5kZXggZTVhMzE0Zi4uM2YzZGFiZiAxMDA2NDQKKy0tLSBhL3NyYy9jbG50X2dlbmVyaWMuYworKysrIGIvc3JjL2NsbnRfZ2VuZXJpYy5jCitAQCAtNDcsNyArNDcsNiBAQAorIAorIGV4dGVybiBib29sX3QgX19ycGNfaXNfbG9jYWxfaG9zdChjb25zdCBjaGFyICopOworIGludCBfX3JwY19yYWlzZV9mZChpbnQpOworLWV4dGVybiBpbnQgX19iaW5kZHlucG9ydChpbnQgZmQpOworIAorICNpZm5kZWYgTkVUSURMRU4KKyAjZGVmaW5lCU5FVElETEVOIDMyCitAQCAtMzQxLDggKzM0MCw3IEBAIGNsbnRfdGxpX2NyZWF0ZShpbnQgZmQsIGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKm5jb25mLAorIAkJc2VydnR5cGUgPSBuY29uZi0+bmNfc2VtYW50aWNzOworIAkJaWYgKCFfX3JwY19mZDJzb2NraW5mbyhmZCwgJnNpKSkKKyAJCQlnb3RvIGVycjsKKy0JCWlmIChfX2JpbmRkeW5wb3J0KGZkKSA9PSAtMSkKKy0JCQlnb3RvIGVycjsKKysJCWJpbmRyZXN2cG9ydChmZCwgTlVMTCk7CisgCX0gZWxzZSB7CisgCQlpZiAoIV9fcnBjX2ZkMnNvY2tpbmZvKGZkLCAmc2kpKQorIAkJCWdvdG8gZXJyOworZGlmZiAtLWdpdCBhL3NyYy9ycGNfc29jLmMgYi9zcmMvcnBjX3NvYy5jCitpbmRleCBhZjZjNDgyLi41YTZlZWI3IDEwMDY0NAorLS0tIGEvc3JjL3JwY19zb2MuYworKysrIGIvc3JjL3JwY19zb2MuYworQEAgLTY3LDggKzY3LDYgQEAKKyAKKyBleHRlcm4gbXV0ZXhfdAlycGNzb2NfbG9jazsKKyAKKy1leHRlcm4gaW50IF9fYmluZGR5bnBvcnQoaW50IGZkKTsKKy0KKyBzdGF0aWMgQ0xJRU5UICpjbG50X2NvbV9jcmVhdGUoc3RydWN0IHNvY2thZGRyX2luICosIHJwY3Byb2dfdCwgcnBjdmVyc190LAorICAgICBpbnQgKiwgdV9pbnQsIHVfaW50LCBjaGFyICosIGludCk7Cisgc3RhdGljIFNWQ1hQUlQgKnN2Y19jb21fY3JlYXRlKGludCwgdV9pbnQsIHVfaW50LCBjaGFyICopOworQEAgLTE0Nyw4ICsxNDUsNyBAQCBjbG50X2NvbV9jcmVhdGUocmFkZHIsIHByb2csIHZlcnMsIHNvY2twLCBzZW5kc3osIHJlY3ZzeiwgdHAsIGZsYWdzKQorIAliaW5kYWRkci5tYXhsZW4gPSBiaW5kYWRkci5sZW4gPSAgc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW4pOworIAliaW5kYWRkci5idWYgPSByYWRkcjsKKyAKKy0JaWYgKF9fYmluZGR5bnBvcnQoZmQpID09IC0xKQorLQkJZ290byBlcnI7CisrCWJpbmRyZXN2cG9ydChmZCwgTlVMTCk7CisgCWNsID0gY2xudF90bGlfY3JlYXRlKGZkLCBuY29uZiwgJmJpbmRhZGRyLCBwcm9nLCB2ZXJzLAorIAkJCQlzZW5kc3osIHJlY3Zzeik7CisgCWlmIChjbCkgeworZGlmZiAtLWdpdCBhL3NyYy9ycGNiX2NsbnQuYyBiL3NyYy9ycGNiX2NsbnQuYworaW5kZXggYTk0ZmM3My4uNGI0NDM2NCAxMDA2NDQKKy0tLSBhL3NyYy9ycGNiX2NsbnQuYworKysrIGIvc3JjL3JwY2JfY2xudC5jCitAQCAtNzUyLDcgKzc1Miw3IEBAIF9fdHJ5X3Byb3RvY29sX3ZlcnNpb25fMihwcm9ncmFtLCB2ZXJzaW9uLCBuY29uZiwgaG9zdCwgdHApCisgCisgCWNsaWVudCA9IGdldHBtYXBoYW5kbGUobmNvbmYsIGhvc3QsICZwYXJtcy5yX2FkZHIpOworIAlpZiAoY2xpZW50ID09IE5VTEwpCistCQlyZXR1cm4gKE5VTEwpOworKwkJZ290byBlcnJvcjsKKyAKKyAJLyoKKyAJICogU2V0IHJldHJ5IHRpbWVvdXQuCitAQCAtNzcxLDExICs3NzEsMTEgQEAgX190cnlfcHJvdG9jb2xfdmVyc2lvbl8yKHByb2dyYW0sIHZlcnNpb24sIG5jb25mLCBob3N0LCB0cCkKKyAJaWYgKGNsbnRfc3QgIT0gUlBDX1NVQ0NFU1MpIHsKKyAJCXJwY19jcmVhdGVlcnIuY2Zfc3RhdCA9IFJQQ19QTUFQRkFJTFVSRTsKKyAJCWNsbnRfZ2V0ZXJyKGNsaWVudCwgJnJwY19jcmVhdGVlcnIuY2ZfZXJyb3IpOworLQkJcmV0dXJuIChOVUxMKTsKKysJCWdvdG8gZXJyb3I7CisgCX0gZWxzZSBpZiAocG9ydCA9PSAwKSB7CisgCQlwbWFwYWRkcmVzcyA9IE5VTEw7CisgCQlycGNfY3JlYXRlZXJyLmNmX3N0YXQgPSBSUENfUFJPR05PVFJFR0lTVEVSRUQ7CistCQlyZXR1cm4gKE5VTEwpOworKwkJZ290byBlcnJvcjsKKyAJfQorIAlwb3J0ID0gaHRvbnMocG9ydCk7CisgCUNMTlRfQ09OVFJPTChjbGllbnQsIENMR0VUX1NWQ19BRERSLCAoY2hhciAqKSZyZW1vdGUpOworQEAgLTc4OSwxNCArNzg5LDI0IEBAIF9fdHJ5X3Byb3RvY29sX3ZlcnNpb25fMihwcm9ncmFtLCB2ZXJzaW9uLCBuY29uZiwgaG9zdCwgdHApCisgCQkJZnJlZShwbWFwYWRkcmVzcyk7CisgCQkJcG1hcGFkZHJlc3MgPSBOVUxMOworIAkJfQorLQkJcmV0dXJuIChOVUxMKTsKKysJCWdvdG8gZXJyb3I7CisgCX0KKyAJbWVtY3B5KHBtYXBhZGRyZXNzLT5idWYsIHJlbW90ZS5idWYsIHJlbW90ZS5sZW4pOworIAltZW1jcHkoJigoY2hhciAqKXBtYXBhZGRyZXNzLT5idWYpW3NpemVvZiAoc2hvcnQpXSwKKyAJCQkoY2hhciAqKSh2b2lkICopJnBvcnQsIHNpemVvZiAoc2hvcnQpKTsKKyAJcG1hcGFkZHJlc3MtPmxlbiA9IHBtYXBhZGRyZXNzLT5tYXhsZW4gPSByZW1vdGUubGVuOworIAorKwlDTE5UX0RFU1RST1koY2xpZW50KTsKKyAJcmV0dXJuIHBtYXBhZGRyZXNzOworKworK2Vycm9yOgorKwlpZiAoY2xpZW50KSB7CisrCQlDTE5UX0RFU1RST1koY2xpZW50KTsKKysJCWNsaWVudCA9IE5VTEw7CisrCisrCX0KKysJcmV0dXJuIChOVUxMKTsKKysKKyB9CisgI2VuZGlmCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzNjZTYwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitDb25zaWRlciBtdXNsIHByb3ZpZGVkIGJ1aWx0LWluIGRlZmluZXMKKworSGVscHMgY29tcGlsZSBsaWJ0aXJwYyB3aXRoIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gLi90aXJwYy9ycGMvdHlwZXMuaC5vcmlnCTIwMTgtMDMtMTcgMTA6MjM6MTAuMDIyMDU1MjU1ICswMTAwCisrKysgLi90aXJwYy9ycGMvdHlwZXMuaAkyMDE4LTAzLTE3IDEwOjIzOjMwLjg3Nzc1MTY1NiArMDEwMAorQEAgLTY2LDcgKzY2LDcgQEAKKyAjZGVmaW5lIG1lbV9mcmVlKHB0ciwgYnNpemUpCWZyZWUocHRyKQorIAorIAorLSNpZiBkZWZpbmVkIF9fQVBQTEVfQ0NfXyB8fCBkZWZpbmVkIF9fRnJlZUJTRF9fCisrI2lmIGRlZmluZWQgX19BUFBMRV9DQ19fIHx8IGRlZmluZWQgX19GcmVlQlNEX18gfHwgIWRlZmluZWQoX19HTElCQ19fKQorICMgZGVmaW5lIF9fdV9jaGFyX2RlZmluZWQKKyAjIGRlZmluZSBfX2RhZGRyX3RfZGVmaW5lZAorICNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkyMTI2MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1VzZS1uZXRic2QtcXVldWUuaC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNWEzN2YxZGNjZWM0ODRmOWNhYmUyYjk3ZTU0ZTlhNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjNjNWNlOTI3MDZjYmI2MDFhOGRiMDkxMTBkZjFiNGI2OTM5MTY0MzE1OGYyMGZmNTg3ZTIwZTdjNWY5MGY1IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nc3NhcGkiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICBjaG93biByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vbmV0Y29uZmlnCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiYzAzOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4zLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0aXJwYy0xLjAuNC1yYzEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImY4NDAzYTEwNjk1MzQ4ODU0ZTcxZDUyNWM0ZGI1OTMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2YzNhNzhmYzFiZGRlZmE5NjExMWRkMjMzMTI0YzcwM2IyMmE3ODg4NDIwM2M1NWMzZTA2YjNiZTZhMGZkNWUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdzc2FwaSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIGNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQ4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQ4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzQ0NDRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgaGlnaC1wZXJmb3JtYW5jZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWdodHRwZC5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvcHJvamVjdHMvbGlnaHR0cGQvaXNzdWVzIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0ZGFjNWM2YWIxNjlhYTIxMmZlYjUwMjg4NTNhNTc5IgotCi1TRUNUSU9OID0gIm5ldCIKLVJERVBFTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1kaXJsaXN0aW5nIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1pbmRleGZpbGUgXAotICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLXN0YXRpY2ZpbGUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtYWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3Nsb2ciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmxpZ2h0dHBkLm5ldC9saWdodHRwZC9yZWxlYXNlcy0xLjQueC9saWdodHRwZC0ke1BWfS50YXIueHogXAotICAgICAgICBmaWxlOi8vaW5kZXguaHRtbC5saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5jb25mIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkLnNlcnZpY2UgXAotICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXBlbmRlbmN5LWluc3RlYWQtb2YtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWUzYTllYjUwNzhmNDgxZTNhOGExZDBhYWFjOGMzYzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY4YWQ1YWFjNzUyOWQ3Yjk0OGI5ZDdlOGNkMGI0YTllMTc3MzA5ZDg1ZDZiZjY1MTZlMjhlNmU0MGQ3NGYzNiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wgcGNyZSB6bGliIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKLSIKLQotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgotUEFDS0FHRUNPTkZJR1ttbWFwXSA9ICItLWVuYWJsZS1tbWFwLC0tZGlzYWJsZS1tbWFwIgotUEFDS0FHRUNPTkZJR1tsaWJldl0gPSAiLS13aXRoLWxpYmV2LC0td2l0aG91dC1saWJldixsaWJldiIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbCwtLXdpdGhvdXQtbXlzcWwsbWFyaWFkYiIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgta3JiNSwtLXdpdGhvdXQta3JiNSxrcmI1IgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZSwtLXdpdGhvdXQtcGNyZSxsaWJwY3JlIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZmFtXSA9ICItLXdpdGgtZmFtLC0td2l0aG91dC1mYW0sZ2FtaW4iCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1wcm9wc10gPSAiLS13aXRoLXdlYmRhdi1wcm9wcywtLXdpdGhvdXQtd2ViZGF2LXByb3BzLGxpYnhtbDIgc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbd2ViZGF2LWxvY2tzXSA9ICItLXdpdGgtd2ViZGF2LWxvY2tzLC0td2l0aG91dC13ZWJkYXYtbG9ja3MsdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLS13aXRoLWdkYm0sLS13aXRob3V0LWdkYm0sZ2RibSIKLVBBQ0tBR0VDT05GSUdbbWVtY2FjaGVdID0gIi0td2l0aC1tZW1jYWNoZWQsLS13aXRob3V0LW1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YTUuMSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sZnMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKLQotSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQotCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmNvbmYiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsICdebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM3M2E2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41MC5iYgpAQCAtMCwwICsxLDg1IEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKKworU0VDVElPTiA9ICJuZXQiCitSREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKKyAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCisgICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKKyAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA1NDc4MzFlZmRhODQ5MjY0OGI3ZjBjNjUyODY1ZGZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5Mzc4MzEyZDg4ODdjYmMxNGZmZThhN2ZhZGVmMmQ1YTA4YzdlN2UxYmU5NDI3OTUxNDIzNDZhZDk1NjI5ZWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKK1BBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKK1BBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCitQQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCitQQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKKwkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQorCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC5jb25mIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkwY2Y5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLVNVTU1BUlkgPSAiUm90YXRlcywgY29tcHJlc3NlcywgcmVtb3ZlcyBhbmQgbWFpbHMgc3lzdGVtIGxvZyBmaWxlcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL2lzc3VlcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLSMgVE9ETzogRG9jdW1lbnQgY29yZXV0aWxzIGRlcGVuZGVuY3kuIFdoeSBub3QgUkRFUEVORFM/IFdoeSBub3QgYnVzeWJveD8KLQotREVQRU5EUz0iY29yZXV0aWxzIHBvcHQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi0jIFdoZW4gdXBkYXRpbmcgbG9ncm90YXRlIHRvIGxhdGVzdCB1cHN0cmVhbSwgU1JDX1VSSSBzaG91bGQgcG9pbnQgdG8KLSMgYSBwcm9wZXIgcmVsZWFzZSB0YXJiYWxsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMKLSMgYW5kIHdlIGhhdmUgdG8gdGFrZSB0aGUgc25hcHNob3QgZm9yIG5vdyBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2gKLSMgdGFyYmFsbCBhdmFpbGFibGUgZm9yIDMuOS4xLgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsb2dyb3RhdGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXBkYXRlLXRoZS1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtY2hlY2stZGlmZmVyZW50LWZpbGVzeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc4ZWYyNGQ2ZmRkY2M0ZGY4ZTQxMmRkNzVjNTUxYjRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyMjJjYTAzMmY5OWJlOGQ3YTRhOGM2YWQ2OWYzZGNjNDliOTUxMWJmZTM4NGJkNWEyNzFlYmNkOWJkM2U1MmMiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCBzZWxpbnV4JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLCxhY2wiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIiwsbGlic2VsaW51eCIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzIFwKLQkJICAgICR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmNvbmYiCi0KLSMgSWYgUlBNX09QVF9GTEFHUyBpcyB1bnNldCwgaXQgYWRkcyAtZyBpdHNlbGYgcmF0aGVyIHRoYW4gb2JleWluZyBvdXIKLSMgb3B0aW1pemF0aW9uIHZhcmlhYmxlcywgc28gdXNlIGl0IHJhdGhlciB0aGFuIEVYVFJBX0NGTEFHUy4KLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgTEZTPSBcCi0gICAgT1NfTkFNRT0nJHtPU19OQU1FfScgXAotICAgICdDQz0ke0NDfScgXAotICAgICdSUE1fT1BUX0ZMQUdTPSR7Q0ZMQUdTfScgXAotICAgICdFWFRSQV9MREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhY2wnLCAnV0lUSF9BQ0w9eWVzJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VsaW51eCcsICdXSVRIX1NFTElOVVg9eWVzJywgJycsIGQpfSBcCi0iCi0KLSMgT1NfTkFNRSBpbiB0aGUgbWFrZWZpbGUgZGVmYXVsdHMgdG8gYHVuYW1lIC1zYC4gVGhlIGJlaGF2aW9yIGZvcgotIyBmcmVlYnNkL25ldGJzZCBpcyBxdWVzdGlvbmFibGUsIHNvIGxlYXZlIGl0IGFzIExpbnV4LCB3aGljaCBvbmx5IHNldHMKLSMgSU5TVEFMTD1pbnN0YWxsIGFuZCBCQVNFRElSPS91c3IuCi1PU19OQU1FID0gIkxpbnV4IgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJcCi0gICAgJHtCUE59LnNlcnZpY2UgXAotICAgICR7QlBOfS50aW1lciBcCi0iCi0KLUxPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTID89ICJkYWlseSIKLUxPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZID89ICIxMmgiCi0KLWRvX2luc3RhbGwoKXsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke0R9IE1BTkRJUj0ke21hbmRpcn0KLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZAotICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYgotICAgIGluc3RhbGwgLXAgLW0gNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLWRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmNvbmYKLSAgICB0b3VjaCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cwotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUuc2VydmljZQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUudGltZXIgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCi0gICAgICAgIHNlZCAtaSAtZSAncyxPbkNhbGVuZGFyPS4qJCxPbkNhbGVuZGFyPSR7TE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVN9LGcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgICAgICBzZWQgLWkgLWUgJ3MsQWNjdXJhY3lTZWM9LiokLEFjY3VyYWN5U2VjPSR7TE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1l9LGcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgIGZpCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotICAgICAgICBpbnN0YWxsIC1wIC1tIDA3NTUgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUuY3JvbiAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5L2xvZ3JvdGF0ZQotICAgIGZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYzY4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTQuMC5iYgpAQCAtMCwwICsxLDk5IEBACitTVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCitMSUNFTlNFID0gIkdQTHYyIgorCisjIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/CisKK0RFUEVORFM9ImNvcmV1dGlscyBwb3B0IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCisjIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCisjIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCisjIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYzBmNmU2ZTQ5MGM0YmNhYzBhMWU3N2FkMTMxMDY4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzAzYmRjMGUyZGYzYjMyMmY5ZGZmMGFhZmM5OWFhOTE3MmM5ZTRhY2FlMjhiN2M5MjRjYzdkNGU1YjI5ZDU1IgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL2J0bXAgXAorICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL3d0bXAiCisKKyMgSWYgUlBNX09QVF9GTEFHUyBpcyB1bnNldCwgaXQgYWRkcyAtZyBpdHNlbGYgcmF0aGVyIHRoYW4gb2JleWluZyBvdXIKKyMgb3B0aW1pemF0aW9uIHZhcmlhYmxlcywgc28gdXNlIGl0IHJhdGhlciB0aGFuIEVYVFJBX0NGTEFHUy4KK0VYVFJBX09FTUFLRSA9ICJcCisgICAgTEZTPSBcCisgICAgT1NfTkFNRT0nJHtPU19OQU1FfScgXAorICAgICdDQz0ke0NDfScgXAorICAgICdSUE1fT1BUX0ZMQUdTPSR7Q0ZMQUdTfScgXAorICAgICdFWFRSQV9MREZMQUdTPSR7TERGTEFHU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhY2wnLCAnV0lUSF9BQ0w9eWVzJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VsaW51eCcsICdXSVRIX1NFTElOVVg9eWVzJywgJycsIGQpfSBcCisiCisKKyMgT1NfTkFNRSBpbiB0aGUgbWFrZWZpbGUgZGVmYXVsdHMgdG8gYHVuYW1lIC1zYC4gVGhlIGJlaGF2aW9yIGZvcgorIyBmcmVlYnNkL25ldGJzZCBpcyBxdWVzdGlvbmFibGUsIHNvIGxlYXZlIGl0IGFzIExpbnV4LCB3aGljaCBvbmx5IHNldHMKKyMgSU5TVEFMTD1pbnN0YWxsIGFuZCBCQVNFRElSPS91c3IuCitPU19OQU1FID0gIkxpbnV4IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJcCisgICAgJHtCUE59LnNlcnZpY2UgXAorICAgICR7QlBOfS50aW1lciBcCisiCisKK0xPR1JPVEFURV9PUFRJT05TID89ICIiCisKK0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTID89ICJkYWlseSIKK0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZID89ICIxMmgiCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9QRVJTSVNURU5UID89ICJ0cnVlIgorCitkb19pbnN0YWxsKCl7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9CisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKKyAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9idG1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL2J0bXAKKyAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL3d0bXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQvd3RtcAorICAgIHRvdWNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS50aW1lciAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgWyAteiAiJHtMT0dST1RBVEVfT1BUSU9OU30iIF0gfHwKKyAgICAgICAgICAgIHNlZCAtcmkgXAorICAgICAgICAgICAgICAgIC1lICdzfChFeGVjU3RhcnQ9LiovbG9ncm90YXRlLiopJHxcMSAke0xPR1JPVEFURV9PUFRJT05TfXxnJyBcCisgICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKKyAgICAgICAgc2VkIC1yaSBcCisgICAgICAgICAgICAtZSAnc3woT25DYWxlbmRhcj0pLiokfFwxJHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJU318ZycgXAorICAgICAgICAgICAgLWUgJ3N8KEFjY3VyYWN5U2VjPSkuKiR8XDEke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfXxnJyBcCisgICAgICAgICAgICAtZSAnc3woUGVyc2lzdGVudD0pLiokfFwxJHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9QRVJTSVNURU5UfXxnJyBcCisgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKKyAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzUuMC5iYgppbmRleCBkZjQ4MTJlLi5kMWRlMzM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzUuMC5iYgpAQCAtMzQsNyArMzQsNyBAQAogQ0xFQU5CUk9LRU4gPSAiMSIKIAogZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgcHJlZml4PSR7RH0ke2Jhc2VfcHJlZml4fSBtYW5kaXI9JHtEfSR7ZGF0YWRpcn0vbWFuLyBERVNURElSPSR7RH0KKwlvZV9ydW5tYWtlIGluc3RhbGwgcHJlZml4PSR7RH0ke3Jvb3RfcHJlZml4fSBtYW5kaXI9JHtEfSR7ZGF0YWRpcn0vbWFuLyBERVNURElSPSR7RH0KIAogCSMgdGhlc2UgdHdvIGRpcnMgYXJlIG5lZWRlZCBieSBwYWNrYWdlIGxzYi1kaXN0LWNoZWNrZXIKIAlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9vcHQKQEAgLTk5LDcgKzk5LDkgQEAKICAgICAgICBmaQogCiAgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgorICAgICAgIAkgICAgICAgIyBkb24ndCBzeW1saW5rIGlmIHVzcm1lcmdlIGlzIGluIERJU1RST19GRUFUVVJFUyBhcyBpdCBtYW5hZ2VzIHRoZSBzeW1saW5rCisgICAgICAgICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywndXNybWVyZ2UnLCdmYWxzZScsJ3RydWUnLGQpfSAmJiBcCisJICAgICAgIAkgIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAogICAgICAgICAgICAgICAgZmkKIAkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiCmluZGV4IDQ2ZWRlZWQuLjZkM2ZjZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiCkBAIC0yLDcgKzIsNiBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkdQTHYyIgotREVQRU5EUyA9ICJwb3B0IGdsaWItMi4wIgogCiBSUFJPVklERVNfJHtQTn0gKz0gImluaXRkLWZ1bmN0aW9ucyIKIFJERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ1NDZkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlTdCBPcGVuIEZpbGVzIHRvb2wiCi1ERVNDUklQVElPTiA9ICJMc29mIGlzIGEgVW5peC1zcGVjaWZpYyBkaWFnbm9zdGljIHRvb2wuIFwKLUl0cyBuYW1lIHN0YW5kcyBmb3IgTGlTdCBPcGVuIEZpbGVzLCBhbmQgaXQgZG9lcyBqdXN0IHRoYXQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+YWJlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLzAwUkVBRE1FO2JlZ2lubGluZT02NDU7ZW5kbGluZT02Nzk7bWQ1PTk2NGRmMjc1ZDI2NDI5YmEzYjM5ZGJiOWYyMDUxNzJhIgotCi0jIFVwc3RyZWFtIGxzb2YgcmVsZWFzZXMgYXJlIGhvc3RlZCBvbiBhbiBmdHAgc2VydmVyIHdoaWNoIHRpbWVzIG91dCBkb3dubG9hZAotIyBhdHRlbXB0cyBmcm9tIGhvc3RzIGZvciB3aGljaCBpdCBjYW4gbm90IHBlcmZvcm0gYSBETlMgcmV2ZXJzZS1sb29rdXAgKFNlZToKLSMgaHR0cHM6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfmFiZS8gKS4gaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZyBzZWVtcyB0byBiZQotIyB0aGUgbW9zdCBjb21tb25seSB1c2VkIGFsdGVybmF0aXZlLgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi9sc29mXyR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbHNvZi1yZW1vdmUtaG9zdC1pbmZvcm1hdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWI5Y2QzNGYzZmI4Njg1NmExMjVhYmJmMmJlM2EzODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODFhYzJmYzVmZGM5NDQ3OTNiYWY0MWExNDAwMmI2ZGViNWEyOTA5NmIzODc3NDRlMjhmOGMzMGEzNjBhMzcxOCIKLQotTE9DQUxTUkMgPSAiZmlsZTovLyR7V09SS0RJUn0vbHNvZl8ke1BWfS9sc29mXyR7UFZ9X3NyYy50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9sc29mXyR7UFZ9X3NyYyIKLQotcHl0aG9uIGRvX3VucGFjayAoKSB7Ci0gICAgIyB0ZW1wb3JhcmlseSBjaGFuZ2UgUyBmb3IgdW5wYWNrCi0gICAgIyBvZiBsc29mXyR7UFZ9Ci0gICAgcyA9IGQuZ2V0VmFyKCdTJywgRmFsc2UpCi0gICAgZC5zZXRWYXIoJ1MnLCAnJHtXT1JLRElSfS9sc29mXyR7UFZ9JykKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2Jhc2VfZG9fdW5wYWNrJywgZCkKLSAgICAjIHRlbXBvcmFyaWx5IGNoYW5nZSBTUkNfVVJJIGZvciB1bnBhY2sKLSAgICAjIG9mIGxzb2ZfJHtQVn1fc3JjCi0gICAgc3JjX3VyaSA9IGQuZ2V0VmFyKCdTUkNfVVJJJywgRmFsc2UpCi0gICAgZC5zZXRWYXIoJ1NSQ19VUkknLCAnJHtMT0NBTFNSQ30nKQotICAgIGQuc2V0VmFyKCdTJywgcykKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2Jhc2VfZG9fdW5wYWNrJywgZCkKLSAgICBkLnNldFZhcignU1JDX1VSSScsIHNyY191cmkpCi19Ci0KLWV4cG9ydCBMU09GX0lOQ0xVREUgPSAiJHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JZXhwb3J0IExTT0ZfQVI9IiR7QVJ9IGNyIgotCWV4cG9ydCBMU09GX1JBTkxJQj0iJHtSQU5MSUJ9IgotCWlmIFsgIngke0dMSUJDVkVSU0lPTn0iICE9ICJ4IiBdOyB0aGVuCi0JCUxJTlVYX0NMSUI9YGVjaG8gJHtHTElCQ1ZFUlNJT059IHxzZWQgLWUgJ3MsXC4sLGcnYAotCQlMSU5VWF9DTElCPSItREdMSUJDVj0ke0xJTlVYX0NMSUJ9IgotCQlleHBvcnQgTElOVVhfQ0xJQgotCWZpCi0JeWVzIHwgLi9Db25maWd1cmUgbGludXgKLX0KLQotZXhwb3J0IEkgPSAiJHtTVEFHSU5HX0lOQ0RJUn0iCi1leHBvcnQgTCA9ICIke1NUQUdJTkdfSU5DRElSfSIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSAnQ0M9JHtDQ30nICdDRkdMPSR7TERGTEFHU30gLUwuL2xpYiAtbGxzb2YnICdERUJVRz0nICdJTkNMPSR7Q0ZMQUdTfScKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSAke0R9JHttYW5kaXJ9L21hbjgKLQlpbnN0YWxsIC1tIDA3NTUgbHNvZiAke0R9JHtzYmluZGlyfS9sc29mCi0JaW5zdGFsbCAtbSAwNjQ0IGxzb2YuOCAke0R9JHttYW5kaXJ9L21hbjgvbHNvZi44Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC45MS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80LjkxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYWRmZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC45MS5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIkxpU3QgT3BlbiBGaWxlcyB0b29sIgorREVTQ1JJUFRJT04gPSAiTHNvZiBpcyBhIFVuaXgtc3BlY2lmaWMgZGlhZ25vc3RpYyB0b29sLiBcCitJdHMgbmFtZSBzdGFuZHMgZm9yIExpU3QgT3BlbiBGaWxlcywgYW5kIGl0IGRvZXMganVzdCB0aGF0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfmFiZS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8wMFJFQURNRTtiZWdpbmxpbmU9NjQ1O2VuZGxpbmU9Njc5O21kNT05NjRkZjI3NWQyNjQyOWJhM2IzOWRiYjlmMjA1MTcyYSIKKworIyBVcHN0cmVhbSBsc29mIHJlbGVhc2VzIGFyZSBob3N0ZWQgb24gYW4gZnRwIHNlcnZlciB3aGljaCB0aW1lcyBvdXQgZG93bmxvYWQKKyMgYXR0ZW1wdHMgZnJvbSBob3N0cyBmb3Igd2hpY2ggaXQgY2FuIG5vdCBwZXJmb3JtIGEgRE5TIHJldmVyc2UtbG9va3VwIChTZWU6CisjIGh0dHBzOi8vcGVvcGxlLmZyZWVic2Qub3JnL35hYmUvICkuIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcgc2VlbXMgdG8gYmUKKyMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBhbHRlcm5hdGl2ZS4KKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0OGVkNDEwY2I1MmUwOGMyYWRjMGM2MGY0ODBmMTFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM5ZGE5NDZhNTI1ZmJmODJmZjgwMDkwYjZkMTg3OWMzOGRmMDkwNTU2ZjNmZTBlNmQ3ODJjYjQ0MTcyNDUwYTMiCisKK0xPQ0FMU1JDID0gImZpbGU6Ly8ke1dPUktESVJ9L2xzb2ZfJHtQVn0vbHNvZl8ke1BWfV9zcmMudGFyIgorCitTID0gIiR7V09SS0RJUn0vbHNvZl8ke1BWfV9zcmMiCisKK3B5dGhvbiBkb191bnBhY2sgKCkgeworICAgIGlmIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdleHRlcm5hbHNyYycsIGQpIG9yIG5vdCBkLmdldFZhcignRVhURVJOQUxTUkMnKToKKyAgICAgICAgIyB0ZW1wb3JhcmlseSBjaGFuZ2UgUyBmb3IgdW5wYWNrIG9mIGxzb2ZfJHtQVn0KKyAgICAgICAgcyA9IGQuZ2V0VmFyKCdTJywgRmFsc2UpCisgICAgICAgIGQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vbHNvZl8ke1BWfScpCisgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYmFzZV9kb191bnBhY2snLCBkKQorICAgICAgICAjIHRlbXBvcmFyaWx5IGNoYW5nZSBTUkNfVVJJIGZvciB1bnBhY2sgb2YgbHNvZl8ke1BWfV9zcmMKKyAgICAgICAgc3JjX3VyaSA9IGQuZ2V0VmFyKCdTUkNfVVJJJywgRmFsc2UpCisgICAgICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgJyR7TE9DQUxTUkN9JykKKyAgICAgICAgZC5zZXRWYXIoJ1MnLCBzKQorICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2Jhc2VfZG9fdW5wYWNrJywgZCkKKyAgICAgICAgZC5zZXRWYXIoJ1NSQ19VUkknLCBzcmNfdXJpKQorfQorCitleHBvcnQgTFNPRl9JTkNMVURFID0gIiR7U1RBR0lOR19JTkNESVJ9IgorCitkb19jb25maWd1cmUgKCkgeworCWV4cG9ydCBMU09GX0FSPSIke0FSfSBjciIKKwlleHBvcnQgTFNPRl9SQU5MSUI9IiR7UkFOTElCfSIKKwlpZiBbICJ4JHtHTElCQ1ZFUlNJT059IiAhPSAieCIgXTsgdGhlbgorCQlMSU5VWF9DTElCPWBlY2hvICR7R0xJQkNWRVJTSU9OfSB8c2VkIC1lICdzLFwuLCxnJ2AKKwkJTElOVVhfQ0xJQj0iLURHTElCQ1Y9JHtMSU5VWF9DTElCfSIKKwkJZXhwb3J0IExJTlVYX0NMSUIKKwlmaQorCXllcyB8IC4vQ29uZmlndXJlIGxpbnV4Cit9CisKK2V4cG9ydCBJID0gIiR7U1RBR0lOR19JTkNESVJ9IgorZXhwb3J0IEwgPSAiJHtTVEFHSU5HX0lOQ0RJUn0iCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAnQ0ZHTD0ke0xERkxBR1N9IC1MLi9saWIgLWxsc29mJyAnREVCVUc9JyAnSU5DTD0ke0NGTEFHU30nCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW44CisJaW5zdGFsbCAtbSAwNzU1IGxzb2YgJHtEfSR7c2JpbmRpcn0vbHNvZgorCWluc3RhbGwgLW0gMDY0NCBsc29mLjggJHtEfSR7bWFuZGlyfS9tYW44L2xzb2YuOAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLUZpeC1kZWZhdWx0LXZhbHVlLW9mLXdpdGhvdXQtbnVtYS1zd2l0Y2gtaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2MjY4Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLUZpeC1kZWZhdWx0LXZhbHVlLW9mLXdpdGhvdXQtbnVtYS1zd2l0Y2gtaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNGFjZTY4YTZiYTUwMTkwN2EwNzQxZGJhNWY1ZjE1NWUwNmE3NGMzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgotRGF0ZTogV2VkLCA3IEZlYiAyMDE4IDExOjA5OjQ5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogRml4IGRlZmF1bHQgdmFsdWUgb2YgLS13aXRob3V0LW51bWEgc3dpdGNoIGluIGhlbHAKLQotVGhlIGRlZmF1bHQgdmFsdWUgaXMgbm8uCi0KLUZpeGVzOiAzOWE4NWExZjEgKCJjb25maWd1cmU6IGFkZCBrbm9iIHRvIGNvbnRyb2wgbnVtYSBzdXBwb3J0IikKLQotU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+Ci1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGIzOWEzMWQuLmQ2NmVhMDAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTg2LDcgKzg2LDcgQEAgZmkKLSAjIE51bWEKLSBBQ19BUkdfV0lUSChbbnVtYV0sCi0gICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAotLSAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAotKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9bm8pXSksCi0gICBbd2l0aF9udW1hPW5vXSwKLSAgIFt3aXRoX251bWE9eWVzXQotICkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWEyODcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gMzlhODVhMWYxZTY2MjRmNTU0MjE1YmE0YjY4NDNkMzY4OWE4NDE1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAbGluYXJvLm9yZz4KLURhdGU6IE1vbiwgNSBGZWIgMjAxOCAxMTo1NjowNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IGFkZCBrbm9iIHRvIGNvbnRyb2wgbnVtYSBzdXBwb3J0Ci0KLUFsbG93IHRvIGRpc2FibGUgbnVtYSBmcm9tIHRoZSB0b3AgbGV2ZWwuCi0KLUJhc2VkIG9uIHBhdGNoOgotaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9jb21taXQvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cD9pZD00Yzc4NzM1NTJlMTNkZmRiYTk2YWZjYTc1NjJjMzk4ZDI5NjZjYTcxCi0KLVJlcG9ydGVkLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1YzhkNGVhLi5iMzlhMzFkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04Myw2ICs4MywxNCBAQCBlbHNlCi0gICAgIEFDX1NVQlNUKFtXSVRIX0VYUEVDVF0sWyJubyJdKQotIGZpCi0gCi0rIyBOdW1hCi0rQUNfQVJHX1dJVEgoW251bWFdLAotKyAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1udW1hXSwKLSsgICAgW3dpdGhvdXQgbnVtYSBzdXBwb3J0IChkZWZhdWx0PXllcyldKSwKLSsgIFt3aXRoX251bWE9bm9dLAotKyAgW3dpdGhfbnVtYT15ZXNdCi0rKQotKwotICMgUGVybAotIEFDX0FSR19XSVRIKFtwZXJsXSwKLSAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLXBlcmxdLAotQEAgLTE1Nyw3ICsxNjUsOSBAQCBMVFBfQ0hFQ0tfU0VMSU5VWAotIExUUF9DSEVDS19TSUdOQUwKLSBMVFBfQ0hFQ0tfU1lTQ0FMTF9FVkVOVEZECi0gTFRQX0NIRUNLX1NZU0NBTExfTU9ESUZZX0xEVAotK2lmIHRlc3QgIngkd2l0aF9udW1hIiA9IHh5ZXM7IHRoZW4KLSBMVFBfQ0hFQ0tfU1lTQ0FMTF9OVU1BCi0rZmkKLSBMVFBfQ0hFQ0tfU1lTQ0FMTF9RVU9UQUNUTAotIExUUF9DSEVDS19TWVNDQUxMX1NJR05BTEZECi0gTFRQX0NIRUNLX1NZU0NBTExfVU5TSEFSRQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbW1hcDE1LW1pcHM2NC1yZXR1cm4tRUlOVkFMLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1tYXAxNS1taXBzNjQtcmV0dXJuLUVJTlZBTC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGViYTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1tYXAxNS1taXBzNjQtcmV0dXJuLUVJTlZBTC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGI5MDk4MDViNGZjMWI3MmUwY2UyOTlhZmI0YWJjMDI3MjBlZTgxZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMiBTZXAgMjAxOCAxNDoyNDozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBtbWFwMTU6IG1pcHM2NCByZXR1cm4gRUlOVkFMCisKK0luIG1pcHM2NCBrZXJuZWwsIHN5c3RlbSBjaGVjayB0aGUgYWRkciB0aGF0IHBhc3NlZCB0byBtbWFwOgorCisgICAgaWYgKFRBU0tfU0laRSAtIGxlbiA8IGFkZHIpCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCitMaW5rOiBodHRwczovL2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgvYmxvYi9tYXN0ZXIvYXJjaC9taXBzL21tL21tYXAuYyNMNzEKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL3B1bGwvMzk0XQorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tbWFwL21tYXAxNS5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbW1hcC9tbWFwMTUuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbW1hcC9tbWFwMTUuYworaW5kZXggZWZmMjdkNi4uYTEwYjVjNyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbW1hcC9tbWFwMTUuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tbWFwL21tYXAxNS5jCitAQCAtODEsOSArODEsMTQgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCisgCQl9CisgCisgCQlpZiAoZXJybm8gIT0gRU5PTUVNKSB7CisrI2lmZGVmIF9fbWlwc19fCisrCQkJdHN0X3Jlc20oVFBBU1MgfCBURVJSTk8sICJtbWFwIGludG8gaGlnaCByZWdpb24gIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgYXMgZXhwZWN0ZWQiKTsgICAgICAgICAgICAgICAgICAgICAgICAKKysjZWxzZQorIAkJCXRzdF9yZXNtKFRGQUlMIHwgVEVSUk5PLCAibW1hcCBpbnRvIGhpZ2ggcmVnaW9uICIKKyAJCQkJICJmYWlsZWQgdW5leHBlY3RlZGx5IC0gZXhwZWN0ICIKKyAJCQkJICJlcnJubz1FTk9NRU0sIGdvdCIpOworKyNlbmRpZgorIAkJfSBlbHNlIHsKKyAJCQl0c3RfcmVzbShUUEFTUyB8IFRFUlJOTywgIm1tYXAgaW50byBoaWdoIHJlZ2lvbiAiCisgCQkJCSAiZmFpbGVkIGFzIGV4cGVjdGVkIik7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1uZXRuc19oZWxwZXIuc2gtdXNlLXBpbmctNi13aGVuLXBpbmc2LWlzLW5vdC1hdmFsaWFiLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW5ldG5zX2hlbHBlci5zaC11c2UtcGluZy02LXdoZW4tcGluZzYtaXMtbm90LWF2YWxpYWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJlN2EwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1uZXRuc19oZWxwZXIuc2gtdXNlLXBpbmctNi13aGVuLXBpbmc2LWlzLW5vdC1hdmFsaWFiLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNzZkODM0M2FkMzAwZjY1MDcyMzNhYmNkZjk3NjI5MjkwZTM1ODQ4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExlaSBZYW5nIDxMZWkuWWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOSBBdWcgMjAxOCAxMTo1MToyNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZXRuc19oZWxwZXIuc2g6IHVzZSAncGluZyAtNicgd2hlbiBwaW5nNiBpcyBub3QgYXZhbGlhYmxlCisKK3Bpbmc2IGhhcyBiZWVuIG1lcmdlZCBpbnRvIHBpbmcgc2luY2UgMjAxNSBieSB1c2luZyAicGluZyAtNiIKK2luIHNvbWUgZGlzdHJpYnV0aW9ucyAoZS5nLiBPcGVuRW1iZWRkZWQpIHRoZXkgZHJvcHBlZCBwaW5nNiBjb21wbGV0ZWx5Cit0aGlzIHBhdGNoIHdpbGwgbGV0IGJvdGggInBpbmcgLTYiIGFuZCBwaW5nNiB3b3JrLgorCitbcHZvcmVsOiBjaGFuZ2Ugd2FzIGRvbmUgaW4gczIwMTUwODE1OgorZWJhZDM1ZiAoInBpbmc6IG1lcmdlIGBwaW5nNmAgY29tbWFuZCBpbnRvIGBwaW5nYCIpLAorYmVmb3JlIHRoYXQgcmVsZWFzZSBzd2l0Y2ggJy02JyBkaWRuJ3QgZXhpc3QuCitVcHN0cmVhbSBsZWF2ZXMgcGluZzYgc3ltbGluayB0byBkaXN0cmlidXRpb25zLl0KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC83NmQ4MzQzYWQzMDBmNjUwNzIzM2FiY2RmOTc2MjkyOTBlMzU4NDhhXQorCitTaWduZWQtb2ZmLWJ5OiBMZWkgWWFuZyA8TGVpLllhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL25ldG5zL25ldG5zX2hlbHBlci5zaCB8IDcgKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9uZXRucy9uZXRuc19oZWxwZXIuc2ggYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRhaW5lcnMvbmV0bnMvbmV0bnNfaGVscGVyLnNoCitpbmRleCA2YWVhMTBiLi5hOWQwNDU5IDEwMDc1NQorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL25ldG5zL25ldG5zX2hlbHBlci5zaAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL25ldG5zL25ldG5zX2hlbHBlci5zaAorQEAgLTE2OCw3ICsxNjgsMTIgQEAgbmV0bnNfc2V0dXAoKQorIAlpcHY2KQorIAkJSUZDT05GX0lONl9BUkc9ImluZXQ2IGFkZCIKKyAJCUlQMD0kNjsgSVAxPSQ3OworLQkJdHBpbmc9InBpbmc2IjsgTkVUTUFTSz02NAorKwkJaWYgd2hpY2ggcGluZzYgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrCQkgICAgdHBpbmc9InBpbmc2IgorKwkJZWxzZQorKwkJICAgIHRwaW5nPSJwaW5nIC02IgorKwkJZmkKKysJCU5FVE1BU0s9NjQKKyAJCTs7CisgCSopCisgCQl0c3RfYnJrbSBUQlJPSyAic2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYW4gaXAgdmVyc2lvbiAoaXB2NHxpcHY2KSIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ3NzFjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSA4NWM5NzJmNzMwZThlZmU4OTFhMDZlYTNhMmRmYjVjYmJkZmJmYmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkhvbmd6aGkuU29uZyIgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBPY3QgMjAxOCAyMjowNzowNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBvcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9tbWFwMjQtMjogUmVsYXggY29uZGl0aW9uIGEgYml0CisKK01pcHMgd2lsbCByZXR1cm4gRUlOVkFMIGluc3RlYWQgb2YgRU5PTUVNIGFzIGV4cGVjdGVkCitpZiB0aGUgcmFuZ2UgW2FkZHIgKyBsZW4pIGV4Y2VlZHMgVEFTS19TSVpFLgorCitMaW51eCBrZXJuZWwgY29kZTogYXJjaC9taXBzL21tL21tYXAuYworaWYgKGZsYWdzICYgTUFQX0ZJWEVEKSB7CisgICAgLyogRXZlbiBNQVBfRklYRUQgbWFwcGluZ3MgbXVzdCByZXNpZGUgd2l0aGluIFRBU0tfU0laRSAqLworICAgIGlmIChUQVNLX1NJWkUgLSBsZW4gPCBhZGRyKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworUmVsYXggdGhlIGNvbmRpdGlvbiBhbmQgYWNjZXB0IGJvdGggRU5PTUVNIGFuZCBFSU5WQUwKK2FzIGV4cGVjdGVkIG91dGNvbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLmxpbnV4Lml0L3BpcGVybWFpbC9sdHAvMjAxOC1PY3RvYmVyLzAwOTYyNC5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgLi4uL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMgICAgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jIGIvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMKK2luZGV4IGRlNTFkNDMuLjgxMGU1YzggMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYworKysrIGIvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMKK0BAIC03LDcgKzcsNyBAQAorICAqIHNvdXJjZSB0cmVlLgorICAqCisgICogVGhlIG1tYXAoKSBmdW5jdGlvbiBzaGFsbCBmYWlsIGlmOgorLSAqIFtFTk9NRU1dIE1BUF9GSVhFRCB3YXMgc3BlY2lmaWVkLAorKyAqIFtFTk9NRU0gb3IgRUlOVkFMXSBNQVBfRklYRUQgd2FzIHNwZWNpZmllZCwKKyAgKiBhbmQgdGhlIHJhbmdlIFthZGRyLGFkZHIrbGVuKSBleGNlZWRzIHRoYXQgYWxsb3dlZAorICAqIGZvciB0aGUgYWRkcmVzcyBzcGFjZSBvZiBhIHByb2Nlc3M7IG9yLCBpZiBNQVBfRklYRUQgd2FzIG5vdCBzcGVjaWZpZWQgYW5kCisgICogdGhlcmUgaXMgaW5zdWZmaWNpZW50IHJvb20gaW4gdGhlIGFkZHJlc3Mgc3BhY2UgdG8gZWZmZWN0IHRoZSBtYXBwaW5nLgorQEAgLTE1LDcgKzE1LDcgQEAKKyAgKiBUZXN0IFN0ZXA6CisgICogMS4gTWFwIGEgc2hhcmVkIG1lbW9yeSBvYmplY3QsIHdpdGggc2l6ZSBleGNlZWRpbmcgdGhlIHZhbHVlIGdldCBmcm9tCisgICogICAgcmxpbV9jdXIgb2YgcmVzb3VyY2UgUkxJTUlUX0FTLCBzZXR0aW5nIE1BUF9GSVhFRDsKKy0gKiAzLiBTaG91bGQgZ2V0IEVOT01FTS4KKysgKiAzLiBTaG91bGQgZ2V0IEVOT01FTSBvciBFSU5WQUwuCisgICovCisgCisgI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMAorQEAgLTkzLDggKzkzLDggQEAgaW50IG1haW4odm9pZCkKKyAJICAgICAgICh1bnNpZ25lZCBsb25nKWxlbik7CisgCXBhID0gbW1hcChhZGRyLCBsZW4sIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9GSVhFRCB8IE1BUF9TSEFSRUQsIGZkLAorIAkJICAwKTsKKy0JaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgZXJybm8gPT0gRU5PTUVNKSB7CistCQlwcmludGYoIkdvdCBFTk9NRU06ICVzXG5UZXN0IFBBU1NFRFxuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysJaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgKGVycm5vID09IEVOT01FTSB8fCBlcnJubyA9PSBFSU5WQUwpKSB7CisrCQlwcmludGYoIkdvdCBFTk9NRU0gb3IgRUlOVkFMOiAlc1xuVGVzdCBQQVNTRURcbiIsIHN0cmVycm9yKGVycm5vKSk7CisgCQlleGl0KFBUU19QQVNTKTsKKyAJfQorIAorQEAgLTEwMyw2ICsxMDMsNiBAQCBpbnQgbWFpbih2b2lkKQorIAllbHNlCisgCQltdW5tYXAocGEsIGxlbik7CisgCWNsb3NlKGZkKTsKKy0JcHJpbnRmKCJUZXN0IEZhaWw6IERpZCBub3QgZ2V0IEVOT01FTSBhcyBleHBlY3RlZFxuIik7CisrCXByaW50ZigiVGVzdCBGYWlsZWQ6IERpZCBub3QgZ2V0IEVOT01FTSBvciBFSU5WQUwgYXMgZXhwZWN0ZWRcbiIpOworIAlyZXR1cm4gUFRTX0ZBSUw7CisgfQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc2lnd2FpdGluZm8wMS1yZWNlbnQtZ2xpYmMtY2FsbHMtc3lzY2FsbC1kaXJlY3RseS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zaWd3YWl0aW5mbzAxLXJlY2VudC1nbGliYy1jYWxscy1zeXNjYWxsLWRpcmVjdGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MTJjODkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc2lnd2FpdGluZm8wMS1yZWNlbnQtZ2xpYmMtY2FsbHMtc3lzY2FsbC1kaXJlY3RseS5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIGJiOTc3Y2EwNzE2YWU5OGYxMDEwMmM3MTIyZmUxNWJjMGRkYjUzNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSG9uZ3poaS5Tb25nIiA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIFNlcCAyMDE4IDIxOjQ5OjAyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHNpZ3dhaXRpbmZvMDE6IHJlY2VudCBnbGliYyBjYWxscyBzeXNjYWxsIGRpcmVjdGx5CisKK2dsaWJjIGNvbW1pdAorICA4YjBlNzk1YWFhNDQgKCJTaW1wbGlmeSBMaW51eCBzaWd7dGltZWR9d2FpdHtpbmZvfSBpbXBsZW1lbnRhdGlvbnMiKQorY2hhbmdlZCBzaWd3YWl0aW5mbyB0byBjYWxsIHNpZ3RpbWVkd2FpdCwgd2hpY2ggY2FsbHMgcnRfc2lndGltZWR3YWl0CitzeXNjYWxsIGRpcmVjdGx5LgorCitTbywgYW4gaW52YWxpZCBwb2ludGVyIG5vIGxvbmdlciBjcmFzaGVzIGNoaWxkIHByb2Nlc3MgYW5kIHRlc3QKK3JlcG9ydHMgZmFpbHVyZS4gRml4IGl0IGJ5IGFjY2VwdGluZyBlaXRoZXIgY3Jhc2ggb3IgRUZBVUxULgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE4LVNlcHRlbWJlci8wMDkzMzguaHRtbF0KKworU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIC4uLi9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYworaW5kZXggOTVhOTQzNmE0Li44ZmE4YWMzNGIgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKK0BAIC0zNzEsMTkgKzM3MSw0MSBAQCB2b2lkIHRlc3RfYmFkX2FkZHJlc3MyKHN3aV9mdW5jIHNpZ3dhaXRpbmZvLCBpbnQgc2lnbm8pCisgCQl0c3RfYnJrbShUQlJPSyB8IFRFUlJOTywgTlVMTCwgImZvcmsoKSBmYWlsZWQiKTsKKyAJY2FzZSAwOgorIAkJc2lnbmFsKFNJR1NFR1YsIFNJR19ERkwpOworKworKyAgICAgICAvKgorKyAgICAgICAgKiBkZXBlbmRpbmcgb24gZ2xpYmMgaW1wbGVtZW50YXRpb24gd2Ugc2hvdWxkCisrICAgICAgICAqIGVpdGhlciBjcmFzaCBvciBnZXQgRUZBVUxUCisrICAgICAgICAqLworIAkJVEVTVChzaWd3YWl0aW5mbygodm9pZCAqKTEsIE5VTEwsIE5VTEwpKTsKKyAKKy0JCV9leGl0KDApOworKyAgICAgICBpZiAoVEVTVF9SRVRVUk4gPT0gLTEgJiYgVEVTVF9FUlJOTyA9PSBFRkFVTFQpCisrICAgICAgICAgICBfZXhpdCgwKTsKKysKKysgICAgICAgdHN0X3Jlc20oVElORk8sICJzd2lfZnVuYyByZXR1cm5lZDogJWxkLCBlcnJubzogJWQiLAorKyAgICAgICAgICAgVEVTVF9SRVRVUk4sIFRFU1RfRVJSTk8pOworKyAgICAgICBfZXhpdCgxKTsKKysKKyAJCWJyZWFrOworIAlkZWZhdWx0OgorIAkJYnJlYWs7CisgCX0KKyAKKyAJU1VDQ0VFRF9PUl9ESUUod2FpdHBpZCwgIndhaXRwaWQgZmFpbGVkIiwgcGlkLCAmc3RhdHVzLCAwKTsKKy0JaWYgKFdJRlNJR05BTEVEKHN0YXR1cykgJiYgV1RFUk1TSUcoc3RhdHVzKSA9PSBTSUdTRUdWKQorKworKyAgIGlmICgoV0lGU0lHTkFMRUQoc3RhdHVzKSAmJiBXVEVSTVNJRyhzdGF0dXMpID09IFNJR1NFR1YpCisrICAgICAgIHx8IChXSUZFWElURUQoc3RhdHVzKSAmJiBXRVhJVFNUQVRVUyhzdGF0dXMpID09IDApKSB7CisgCQl0c3RfcmVzbShUUEFTUywgIlRlc3QgcGFzc2VkIik7CistCWVsc2UKKy0JCXRzdF9yZXNtKFRGQUlMLCAiVW5yZWNvZ25pc2VkIGNoaWxkIGV4aXQgY29kZSIpOworKyAgICAgICByZXR1cm47CisrICAgfQorKworKyAgIGlmIChXSUZFWElURUQoc3RhdHVzKSkgeworKyAgICAgICB0c3RfcmVzbShURkFJTCwgIlVucmVjb2duaXNlZCBjaGlsZCBleGl0IGNvZGU6ICVkIiwKKysgICAgICAgICAgIFdFWElUU1RBVFVTKHN0YXR1cykpOworKyAgIH0KKysgICBpZiAoV0lGU0lHTkFMRUQoc3RhdHVzKSkgeworKyAgICAgICB0c3RfcmVzbShURkFJTCwgIlVucmVjb2duaXNlZCBjaGlsZCB0ZXJtc2lnOiAlZCIsCisrICAgICAgICAgICBXVEVSTVNJRyhzdGF0dXMpKTsKKysgICB9CisgfQorIAorIHZvaWQgdGVzdF9iYWRfYWRkcmVzczMoc3dpX2Z1bmMgc2lnd2FpdGluZm8sIGludCBzaWdubykKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy1mY250bC1tYWtlLU9GRC1jb21tYW5kLXVzZS1mY250bDY0LXN5c2NhbGwtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGxzLWZjbnRsLW1ha2UtT0ZELWNvbW1hbmQtdXNlLWZjbnRsNjQtc3lzY2FsbC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1NTU5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy1mY250bC1tYWtlLU9GRC1jb21tYW5kLXVzZS1mY250bDY0LXN5c2NhbGwtLnBhdGNoCkBAIC0wLDAgKzEsMTg0IEBACitGcm9tIDhkZTAzZWExMjAwNDgwYjkyMmQ1YmEwNWI2OWRjOTRkYjYwNDk2ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSG9uZ3poaS5Tb25nIiA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDE1IFNlcCAyMDE4IDIyOjM5OjMyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGxzL2ZjbnRsOiBtYWtlIE9GRCBjb21tYW5kIHVzZSBmY250bDY0KCkgc3lzY2FsbCBvbgorIDMyLWJpdAorCitUbyBjb3BlIHdpdGggZ2xpYmMgY29tbWl0OgorICAwNmFiNzE5ZDMwYjAgKCJGaXggTGludXggZmNudGwgT0ZEIGxvY2tzIGZvciBub24tTEZTIGFyY2hpdGVjdHVyZXMKKyhCWiMyMDI1MSkiKQorCitXSVA6IFN0aWxsIG5lZWQgdG8gdGVzdCB0aGlzIHdpdGggbmV3IGdsaWJjLgorICAgICBUZXN0IHdpdGggb2xkIGdsaWJjIGxvb2sgT0sgc28gZmFyLgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorICAgIEJhY2twb3J0ZWQgZnJvbSB1cHN0cmVhbSBtYWlsbGlzdAorICAgIGh0dHBzOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE4LVNlcHRlbWJlci8wMDkzNzAuaHRtbAorCitTaWduZWQtb2ZmLWJ5OiBIb25nemhpIFNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM0LmMgICAgICB8IDEyICsrKysrKystLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzYuYyAgICAgIHwgMjMgKysrKysrKysrKysrKy0tLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bF9jb21tb24uaCB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsX2NvbW1vbi5oCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwzNC5jCitpbmRleCBhYTI5Y2Y5Li4xMDlmODM0IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM0LmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwzNC5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlICJsYXBpL2ZjbnRsLmgiCisgI2luY2x1ZGUgInRzdF9zYWZlX3B0aHJlYWQuaCIKKyAjaW5jbHVkZSAidHN0X3Rlc3QuaCIKKysjaW5jbHVkZSAiZmNudGxfY29tbW9uLmgiCisgCisgc3RhdGljIGludCB0aHJlYWRfY250OworIHN0YXRpYyBjb25zdCBpbnQgbWF4X3RocmVhZF9jbnQgPSAzMjsKK0BAIC02OCw3ICs2OSwxMiBAQCB2b2lkICp0aHJlYWRfZm5fMDEodm9pZCAqYXJnKQorIAorIAltZW1zZXQoYnVmLCAoaW50cHRyX3QpYXJnLCB3cml0ZV9zaXplKTsKKyAKKy0Jc3RydWN0IGZsb2NrNjQgbGNrID0geworKyAgICAvKiBzZWUgZXhwbGFuYXRpb24gaW4gZmNudGxfY29tbW9uLmggKi8KKysgICAgI2lmZGVmIFVTRV9TVFJVQ1RfRkxPQ0sKKysgICAgICAgIHN0cnVjdCBmbG9jayBsY2sgPSB7CisrICAgICNlbHNlCisrICAgICAgICBzdHJ1Y3QgZmxvY2s2NCBsY2sgPSB7CisrICAgICNlbmRpZgorIAkJLmxfd2hlbmNlID0gU0VFS19TRVQsCisgCQkubF9zdGFydCAgPSAwLAorIAkJLmxfbGVuICAgID0gMSwKK0BAIC03NiwxMyArODIsMTMgQEAgdm9pZCAqdGhyZWFkX2ZuXzAxKHZvaWQgKmFyZykKKyAKKyAJZm9yIChpID0gMDsgaSA8IHdyaXRlc19udW07ICsraSkgeworIAkJbGNrLmxfdHlwZSA9IEZfV1JMQ0s7CistCQlTQUZFX0ZDTlRMKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworKyAgICAgICAgbXlfZmNudGwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisgCisgCQlTQUZFX0xTRUVLKGZkLCAwLCBTRUVLX0VORCk7CisgCQlTQUZFX1dSSVRFKDEsIGZkLCBidWYsIHdyaXRlX3NpemUpOworIAorIAkJbGNrLmxfdHlwZSA9IEZfVU5MQ0s7CistCQlTQUZFX0ZDTlRMKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworKyAgICAgICAgbXlfZmNudGwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisgCisgCQlzY2hlZF95aWVsZCgpOworIAl9CitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM2LmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzYuYworaW5kZXggMzI0NmQxMy4uZjI2M2I2YiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwzNi5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzYuYworQEAgLTU3LDYgKzU3LDcgQEAKKyAjaW5jbHVkZSAibGFwaS9mY250bC5oIgorICNpbmNsdWRlICJ0c3Rfc2FmZV9wdGhyZWFkLmgiCisgI2luY2x1ZGUgInRzdF90ZXN0LmgiCisrI2luY2x1ZGUgImZjbnRsX2NvbW1vbi5oIgorIAorIHN0YXRpYyBpbnQgdGhyZWFkX2NudDsKKyBzdGF0aWMgaW50IGZhaWxfZmxhZyA9IDA7CitAQCAtODcsNyArODgsMTIgQEAgc3RhdGljIHZvaWQgKmZuX29mZF93KHZvaWQgKmFyZykKKyAJaW50IGZkID0gU0FGRV9PUEVOKGZuYW1lLCBPX1JEV1IpOworIAlsb25nIHd0ID0gcGEtPmNudDsKKyAKKy0Jc3RydWN0IGZsb2NrNjQgbGNrID0geworKyAgICAvKiBzZWUgZXhwbGFuYXRpb24gaW4gZmNudGxfY29tbW9uLmggKi8KKysgICAgI2lmZGVmIFVTRV9TVFJVQ1RfRkxPQ0sKKysgICAgICAgIHN0cnVjdCBmbG9jayBsY2sgPSB7CisrICAgICNlbHNlCisrICAgICAgICBzdHJ1Y3QgZmxvY2s2NCBsY2sgPSB7CisrICAgICNlbmRpZgorIAkJLmxfd2hlbmNlID0gU0VFS19TRVQsCisgCQkubF9zdGFydCAgPSBwYS0+b2Zmc2V0LAorIAkJLmxfbGVuICAgID0gcGEtPmxlbmd0aCwKK0BAIC05OSwxMyArMTA1LDEzIEBAIHN0YXRpYyB2b2lkICpmbl9vZmRfdyh2b2lkICphcmcpCisgCQltZW1zZXQoYnVmLCB3dCwgcGEtPmxlbmd0aCk7CisgCisgCQlsY2subF90eXBlID0gRl9XUkxDSzsKKy0JCVNBRkVfRkNOVEwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisrICAgICAgICBteV9mY250bChmZCwgRl9PRkRfU0VUTEtXLCAmbGNrKTsKKyAKKyAJCVNBRkVfTFNFRUsoZmQsIHBhLT5vZmZzZXQsIFNFRUtfU0VUKTsKKyAJCVNBRkVfV1JJVEUoMSwgZmQsIGJ1ZiwgcGEtPmxlbmd0aCk7CisgCisgCQlsY2subF90eXBlID0gRl9VTkxDSzsKKy0JCVNBRkVfRkNOVEwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisrICAgICAgICBteV9mY250bChmZCwgRl9PRkRfU0VUTEtXLCAmbGNrKTsKKyAKKyAJCXd0Kys7CisgCQlpZiAod3QgPj0gMjU1KQorQEAgLTE2Niw3ICsxNzIsMTIgQEAgc3RhdGljIHZvaWQgKmZuX29mZF9yKHZvaWQgKmFyZykKKyAJaW50IGk7CisgCWludCBmZCA9IFNBRkVfT1BFTihmbmFtZSwgT19SRFdSKTsKKyAKKy0Jc3RydWN0IGZsb2NrNjQgbGNrID0geworKyAgICAvKiBzZWUgZXhwbGFuYXRpb24gaW4gZmNudGxfY29tbW9uLmggKi8KKysgICAgI2lmZGVmIFVTRV9TVFJVQ1RfRkxPQ0sKKysgICAgICAgIHN0cnVjdCBmbG9jayBsY2sgPSB7CisrICAgICNlbHNlCisrICAgICAgICBzdHJ1Y3QgZmxvY2s2NCBsY2sgPSB7CisrICAgICNlbmRpZgorIAkJLmxfd2hlbmNlID0gU0VFS19TRVQsCisgCQkubF9zdGFydCAgPSBwYS0+b2Zmc2V0LAorIAkJLmxfbGVuICAgID0gcGEtPmxlbmd0aCwKK0BAIC0xNzgsNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgKmZuX29mZF9yKHZvaWQgKmFyZykKKyAJCW1lbXNldChidWYsIDAsIHBhLT5sZW5ndGgpOworIAorIAkJbGNrLmxfdHlwZSA9IEZfUkRMQ0s7CistCQlTQUZFX0ZDTlRMKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworKyAgICAgICAgbXlfZmNudGwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisgCisgCQkvKiBybG9jayBhY3F1aXJlZCAqLworIAkJU0FGRV9MU0VFSyhmZCwgcGEtPm9mZnNldCwgU0VFS19TRVQpOworQEAgLTIwOSw3ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCAqZm5fb2ZkX3Iodm9pZCAqYXJnKQorIAkJfQorIAorIAkJbGNrLmxfdHlwZSA9IEZfVU5MQ0s7CistCQlTQUZFX0ZDTlRMKGZkLCBGX09GRF9TRVRMSywgJmxjayk7CisrICAgICAgICBteV9mY250bChmZCwgRl9PRkRfU0VUTEssICZsY2spOworIAorIAkJc2NoZWRfeWllbGQoKTsKKyAJfQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGxfY29tbW9uLmggYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsX2NvbW1vbi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uM2ZlMzk5YgorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bF9jb21tb24uaAorQEAgLTAsMCArMSwzMiBAQAorKyNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCisrCisrLyoKKysgKiBnbGliYyBjb21taXQ6CisrICogICAwNmFiNzE5ZDMwYjAgKCJGaXggTGludXggZmNudGwgT0ZEIGxvY2tzIGZvciBub24tTEZTIGFyY2hpdGVjdHVyZXMgKEJaIzIwMjUxKSIpCisrICogY2hhbmdlZCBiZWhhdmlvciBvZiBhcmcgcGFyYW1ldGVyIGZvciBPRkQgY29tbWFuZHMuIEl0IGlzIG5vCisrICogbG9uZ2VyIHBhc3NpbmcgYXJnIGRpcmVjdGx5IHRvIHN5c2NhbGwsIGJ1dCBleHBlY3RzIGl0IHRvIGJlCisrICogJ3N0cnVjdCBmbG9jaycuCisrICoKKysgKiBPbiA2NC1iaXQgb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQgd2UgY2FuIHVzZSBmY250bCgpIGFuZAorKyAqIHN0cnVjdCBmbG9jayB3aXRoIGFueSBnbGliYyB2ZXJzaW9uLiBzdHJ1Y3QgZmxvY2sgYW5kIGZsb2NrNjQKKysgKiBzaG91bGQgYmUgaWRlbnRpY2FsLgorKyAqCisrICogT24gMzItYml0LCBvbGRlciBnbGliYyB3b3VsZCBwYXNzIGFyZyBkaXJlY3RseSwgcmVjZW50IG9uZSB0cmVhdHMKKysgKiBpdCBhcyAnc3RydWN0IGZsb2NrJyBhbmQgY29udmVydHMgaXQgdG8gJ3N0cnVjdCBmbG9jazY0Jy4KKysgKiBTbywgZm9yIDMyLWJpdCB3ZSB1c2UgZmNudGw2NCBzeXNjYWxsIGRpcmVjdGx5IHdpdGggc3RydWN0IGZsb2NrNjQuCisrICovCisrI2lmIF9fV09SRFNJWkUgPT0gNjQgfHwgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKKysjZGVmaW5lIFVTRV9TVFJVQ1RfRkxPQ0sKKytzdGF0aWMgaW50IG15X2ZjbnRsKGludCBmZCwgaW50IGNtZCwgdm9pZCAqbGNrKQorK3sKKysgICAgICAgIHJldHVybiBTQUZFX0ZDTlRMKGZkLCBjbWQsIGxjayk7CisrfQorKyNlbHNlCisrc3RhdGljIGludCBteV9mY250bChpbnQgZmQsIGludCBjbWQsIHZvaWQgKmxjaykKKyt7CisrICAgICAgICBpbnQgcmV0ID0gdHN0X3N5c2NhbGwoX19OUl9mY250bDY0LCBmZCwgY21kLCBsY2spOworKyAgICAgICAgaWYgKHJldCA9PSAtMSkKKysgICAgICAgICAgICAgICAgdHN0X2JyayhUQlJPS3xURVJSTk8sICJmY250bDY0Iik7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysjZW5kaWYKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZjFlMDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gYjE5MzAxMWRhMzAxYjNkOTQ0ZThmZGRjZjQ4MTc1MTNjMzFjNWI4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci1EYXRlOiBUaHUsIDcgSmFuIDIwMTYgMTc6MzY6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8zMl0gQWRkIGtub2IgdG8gY29udHJvbCB0aXJwYyBzdXBwb3J0Ci0KLWFsbG93IHRvIGRpc2FibGUgdGlycGMuIEhlbHBzIHRvIGRpc2FibGUgaXQgYXQgdG9wIGxldmVsIGZvciBlZy4gbXVzbCBpdAotZG9lcyBub3QgeWV0IHdvcmsuCi0KLVNpZ25lZC1vZmYtYnk6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuYWMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2M1MDM5Ny4uOWUyOTM2YiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTgsNiArOTgsMTMgQEAgaWYgdGVzdCAieCR3aXRoX3B5dGhvbiIgPSB4eWVzOyB0aGVuCi0gZWxzZQotICAgICBBQ19TVUJTVChbV0lUSF9QWVRIT05dLFsibm8iXSkKLSBmaQotKwotKyMgVEkgUlBDCi0rQUNfQVJHX1dJVEgoW3RpcnBjXSwKLSsgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtdGlycGNdLAotKyAgICBbd2l0aG91dCBsaWJ0aXJwYyBzdXBwb3J0XSksCi0rICBbXSxbd2l0aF90aXJwYz15ZXNdLAotKykKLSAjIEVORCB0b29scyBrbm9icwotIAotICMgVGVzdHN1aXRlcyBrbm9icwotQEAgLTE2OSw3ICsxNzYsOSBAQCBMVFBfQ0hFQ0tfUkVOQU1FQVQyCi0gTFRQX0NIRUNLX0ZBTExPQ0FURQotIExUUF9DSEVDS19TWVNDQUxMX0ZDTlRMCi0gTFRQX0NIRUNLX1NZU0NBTExfUEVSRl9FVkVOVF9PUEVOCi0raWYgdGVzdCAieCR3aXRoX3RpcnBjIiA9IHh5ZXM7IHRoZW4KLSBMVFBfQ0hFQ0tfVElSUEMKLStmaQotIExUUF9DSEVDS19URUUKLSBMVFBfQ0hFQ0tfU1BMSUNFCi0gTFRQX0NIRUNLX1ZNU1BMSUNFCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggODRhYjM3ZS4uMmRmMzg1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTIyLDEwICsyMiwxMCBAQAogIHRlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUgfCA1ICsrKysrCiAgOCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogZ2l0L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKLSsrKyBnaXQvTWFrZWZpbGUKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAyOTdmOGU3Li45MDZiMjgwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCiBAQCAtNDksNiArNDksMTEgQEAgU0tJUF9JRENIRUNLCQk/PSAwCiAgVUNMSU5VWAkJCT89IDAKICBleHBvcnQgVUNMSU5VWApAQCAtMzgsMTAgKzM4LDEwIEBACiAgIyBDTEVBTl9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IHNvbGVseSBpbiBjbGVhbi4KICAjIENPTU1PTl9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IGluIGFsbCwgY2xlYW4sIGFuZCBpbnN0YWxsLgogICMgSU5TVEFMTF9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IGluIGNsZWFuIGFuZCBpbnN0YWxsIChjb250YWlucwotSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKK2luZGV4IDUwYTEyZmEuLjRmMTk4N2YgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCiBAQCAtNDgsMTMgKzQ4LDE2IEBAIFNVQkRJUlMJCQkrPSBjb25uZWN0b3JzIFwKICAJCQkgICBsb2dnaW5nIFwKICAJCQkgICBtZW0gXApAQCAtNjAsMTAgKzYwLDEwIEBACiAgaWZlcSAoJChXSVRIX1BPV0VSX01BTkFHRU1FTlRfVEVTVFNVSVRFKSx5ZXMpCiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgotSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUKK2luZGV4IDYyNDVlZDAuLmFhNGViN2YgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uCiAgCkBAIC03MywxMCArNzMsMTAgQEAKICsJRklMVEVSX09VVF9ESVJTICs9IHByb2Nlc3Nfc3RyZXNzCiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawotSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKK2luZGV4IDhhY2IzOTUuLmI3NDkxMjYgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCiBAQCAtMjgsNiArMjgsMTEgQEAgaWZlcSAoJChVQ0xJTlVYKSwxKQogIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAogIAkJICAgbWluY29yZSBtcHJvdGVjdCBuZnR3IHByb2ZpbCByZW1hcF9maWxlX3BhZ2VzIHNicmsKQEAgLTg5LDExICs4OSwxMSBAQAogIAogIGlmZXEgKCQoVUNMSUJDKSwxKQogIEZJTFRFUl9PVVRfRElSUwkrPSBwcm9maWwKLUluZGV4OiBnaXQvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQotQEAgLTI2LDQgKzI2LDggQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQoraW5kZXggOGJjNzhjMi4uYzM2Y2Y1MCAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCitAQCAtMjYsNCArMjYsOCBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCiAgCiAgTERMSUJTCQkJKz0gJChBQ0xfTElCUykKICAKQEAgLTEwMiwxMCArMTAyLDEwIEBACiArZW5kaWYKICsKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKK2luZGV4IDMxNjA4MTMuLjliZGY1ZDAgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQogQEAgLTIzLDQgKzIzLDkgQEAKICB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgogIApAQCAtMTE2LDExICsxMTYsMTEgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfdHJ1bmtfdGFyZ2V0Lm1rCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLUBAIC0yNyw1ICsyNyw5IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCitpbmRleCA3YTdhNTdhLi41ODA4ODY2IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCitAQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCiAgaW5jbHVkZSAkKGFic19zcmNkaXIpLy4uLy4uL2NvbmZpZy5tawogIAogIE1BS0VfVEFSR0VUUwkJOj0gdGVzdHBpLTAgdGVzdHBpLTEgdGVzdHBpLTIgdGVzdHBpLTQgdGVzdHBpLTUgdGVzdHBpLTYgdGVzdHBpLTcgc2Jya19tdXRleApAQCAtMTMwLDEwICsxMzAsMTAgQEAKICsKICAKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi0rKysgZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQoraW5kZXggNWVkYzNiNC4uYWE1OTg3YSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKIEBAIC0yNCw0ICsyNCw5IEBAIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCiAgCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZS5tawpAQCAtMTQ0LDMgKzE0NCw2IEBACiArZW5kaWYKICsKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCistLSAKKzIuNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAppbmRleCBlMzI1Y2U0Li40MjhhYzMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCkBAIC0xMSw5ICsxMSw5IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgICAgIHwgIDkgKysrKy0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGNwdS9nZXRjcHUwMS5jICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKy0KLSAuLi4vc2NoZWRfZ2V0YWZmaW5pdHkvc2NoZWRfZ2V0YWZmaW5pdHkwMS5jICAgICAgICB8IDI2ICsrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0Y3B1L2dldGNwdTAxLmMgICAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrLQorIC4uLi9zY2hlZF9nZXRhZmZpbml0eS9zY2hlZF9nZXRhZmZpbml0eTAxLmMgICAgICAgIHwgMjYgKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMKIGluZGV4IDYwNzJiZmEuLjJiMDkwY2IgMTAwNjQ0CkBAIC0xMDIsNyArMTAyLDcgQEAKICAJKmNwdV9pZCA9IHNjaGVkX2dldGNwdSgpOwogICNlbmRpZgogIAlyZXR1cm4gMDsKLUBAIC0xOTEsMTUgKzIwNCwyMCBAQCB1bnNpZ25lZCBpbnQgc2V0X2NwdV9hZmZpbml0eSh2b2lkKQorQEAgLTE5MSwxNSArMjAzLDIwIEBAIHVuc2lnbmVkIGludCBzZXRfY3B1X2FmZmluaXR5KHZvaWQpCiAgCWNwdV9zZXRfdCAqc2V0OwogIAlzaXplX3Qgc2l6ZTsKICAJaW50IG5yY3B1cyA9IDEwMjQ7CkBAIC0xMjMsNyArMTIzLDcgQEAKICAjaWYgX19HTElCQ19QUkVSRVEoMiwgNykKICAJc2l6ZSA9IENQVV9BTExPQ19TSVpFKG5yY3B1cyk7CiAgCUNQVV9aRVJPX1Moc2l6ZSwgc2V0KTsKLUBAIC0yMDcsOCArMjI1LDEzIEBAIHJlYWxsb2M6CitAQCAtMjA3LDggKzIyNCwxMyBAQCByZWFsbG9jOgogIAlzaXplID0gc2l6ZW9mKGNwdV9zZXRfdCk7CiAgCUNQVV9aRVJPKHNldCk7CiAgI2VuZGlmCkBAIC0xMzcsNyArMTM3LDcgQEAKICAjaWYgX19HTElCQ19QUkVSRVEoMiwgNykKICAJCWlmIChlcnJubyA9PSBFSU5WQUwgJiYgbnJjcHVzIDwgKDEwMjQgPDwgOCkpIHsKICAJCQlucmNwdXMgPSBucmNwdXMgPDwgMjsKLUBAIC0yMjAsMTAgKzI0MywxNyBAQCByZWFsbG9jOgorQEAgLTIyMCwxMCArMjQyLDE3IEBAIHJlYWxsb2M6CiAgCQkJCSAiTlJfQ1BVUyBvZiB0aGUga2VybmVsIGlzIG1vcmUgdGhhbiAxMDI0LCBzbyB3ZSdkIGJldHRlciB1c2UgYSBuZXdlciBnbGliYyg+PSAyLjcpIik7CiAgCQllbHNlCiAgI2VuZGlmCkBAIC0xNTUsNyArMTU1LDcgQEAKICAjaWYgX19HTElCQ19QUkVSRVEoMiwgNykKICAJQ1BVX1pFUk9fUyhzaXplLCBzZXQpOwogIAlDUFVfU0VUX1MoY3B1X21heCwgc2l6ZSwgc2V0KTsKLUBAIC0yMzEsNiArMjYxLDEwIEBAIHJlYWxsb2M6CitAQCAtMjMxLDYgKzI2MCwxMCBAQCByZWFsbG9jOgogIAlDUFVfWkVSTyhzZXQpOwogIAlDUFVfU0VUKGNwdV9tYXgsIHNldCk7CiAgI2VuZGlmCkBAIC0xNjYsNyArMTY2LDcgQEAKICAJaWYgKHNjaGVkX3NldGFmZmluaXR5KDAsIHNpemUsIHNldCkgPCAwKSB7CiAgCQlDUFVfRlJFRShzZXQpOwogIAkJdHN0X2Jya20oVEZBSUwsIE5VTEwsICJzY2hlZF9zZXRhZmZpbml0eTplcnJubzolZCIsIGVycm5vKTsKLUBAIC0yNDcsMTEgKzI4MSwxNSBAQCB1bnNpZ25lZCBpbnQgbWF4X2NwdWlkKHNpemVfdCBzaXplLCBjcHVfc2V0X3QgKiBzZXQpCitAQCAtMjQ3LDExICsyODAsMTUgQEAgdW5zaWduZWQgaW50IG1heF9jcHVpZChzaXplX3Qgc2l6ZSwgY3B1X3NldF90ICogc2V0KQogIHsKICAJdW5zaWduZWQgaW50IGluZGV4LCBtYXggPSAwOwogIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzaXplICogQklUU19QRVJfQllURTsgaW5kZXgrKykKQEAgLTE4Niw3ICsxODYsNyBAQAogaW5kZXggOWQ2YTgxYS4uNGVkMTNiMiAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2NoZWRfZ2V0YWZmaW5pdHkvc2NoZWRfZ2V0YWZmaW5pdHkwMS5jCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NjaGVkX2dldGFmZmluaXR5L3NjaGVkX2dldGFmZmluaXR5MDEuYwotQEAgLTY2LDkgKzY2LDExIEBAIGRvIHsgXAorQEAgLTY3LDkgKzY3LDExIEBAIGRvIHsgXAogIAl0c3RfcmVzbSgoVEVTVF9SRVRVUk4gPT0gLTEgPyBUUEFTUyA6IFRGQUlMKSB8IFRURVJSTk8sICN0KTsgXAogIH0gd2hpbGUgKDApCiAgCkBAIC0xOTgsNyArMTk4LDcgQEAKICAKICBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKICB7Ci1AQCAtOTUsMTQgKzk3LDE5IEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3Qodm9pZCkKK0BAIC05NiwxNCArOTgsMTkgQEAgc3RhdGljIHZvaWQgZG9fdGVzdCh2b2lkKQogIAlwaWRfdCB1bnVzZWRfcGlkOwogIAl1bnNpZ25lZCBsZW47CiAgCkBAIC0yMTgsNyArMjE4LDcgQEAKICAjaWYgX19HTElCQ19QUkVSRVEoMiwgNykKICAJbGVuID0gQ1BVX0FMTE9DX1NJWkUobnJjcHVzKTsKICAJQ1BVX1pFUk9fUyhsZW4sIG1hc2spOwotQEAgLTExMCwxMCArMTE3LDE1IEBAIHJlYWxsb2M6CitAQCAtMTExLDEwICsxMTgsMTUgQEAgcmVhbGxvYzoKICAJbGVuID0gc2l6ZW9mKGNwdV9zZXRfdCk7CiAgCUNQVV9aRVJPKG1hc2spOwogICNlbmRpZgpAQCAtMjM0LDcgKzIzNCw3IEBACiAgI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDcpCiAgCQlpZiAoZXJybm8gPT0gRUlOVkFMICYmIG5yY3B1cyA8ICgxMDI0IDw8IDgpKSB7CiAgCQkJbnJjcHVzID0gbnJjcHVzIDw8IDI7Ci1AQCAtMTI1LDE3ICsxMzcsMjcgQEAgcmVhbGxvYzoKK0BAIC0xMjYsMTcgKzEzOCwyNyBAQCByZWFsbG9jOgogIAkJCQkgIm5ld2VyIGdsaWJjKD49IDIuNykiKTsKICAJCWVsc2UKICAjZW5kaWYKQEAgLTI2Miw3ICsyNjIsNyBAQAogIAkJCWlmIChURVNUX1JFVFVSTiAhPSAtMSkKICAJCQkJdHN0X3Jlc20oVFBBU1MsICJzY2hlZF9nZXRhZmZpbml0eSgpIHN1Y2NlZWQsICIKICAJCQkJCSAidGhpcyBwcm9jZXNzICVkIGlzIHJ1bm5pbmcgIgotQEAgLTE0MywxMSArMTY1LDE1IEBAIHJlYWxsb2M6CitAQCAtMTQ0LDExICsxNjYsMTUgQEAgcmVhbGxvYzoKICAJCX0KICAJfQogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtcmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlmY2U4OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtcmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gMDEzMGY0MTQ2Y2VkMzIwYWFkYjAxYjIyZTM2YjEzZDI2OWE4ZWJiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDcgSmFuIDIwMTYgMTk6NDg6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8zMl0gcmVwbGFjZSBfX0JFR0lOX0RFQ0xTIGFuZCBfX0VORF9ERUNMUwotCi1UaGV5IGFyZSBub3QgcG9ydGFibGUgYWNyb3NzIGxpYmMgaW1wbGVtZW50YXRpb25zCi10aGVyZWZvcmUgcmVwbGFjZSB0aGVtIHdpdGggZXhwYW5kZWQgbWFjcm9zCi0KLUluY2x1ZGUgPGFzbS1nZW5lcmljL3R5cGVzLmg+IHRvIGdldCBfX3MzMiBkZWZpbml0aW9ucwotaXRzIG5vdCBhIGdlbmVyYWxseSBhdmFpbGFibGUgdHlwZWRlZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZXBvbGwyL2luY2x1ZGUvZXBvbGwuaCB8IDggKysrKysrLS0KLSB1dGlscy9zY3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmggICAgICAgICAgICAgICAgfCA5ICsrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZXBvbGwyL2luY2x1ZGUvZXBvbGwuaCBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZXBvbGwyL2luY2x1ZGUvZXBvbGwuaAotaW5kZXggYmU1OTljNy4uOGNjNWU3ZSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZXBvbGwyL2luY2x1ZGUvZXBvbGwuaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9lcG9sbDIvaW5jbHVkZS9lcG9sbC5oCi1AQCAtODUsNyArODUsOSBAQCBzdHJ1Y3QgZXBvbGxfZXZlbnQKLSB9IEVQT0xMX1BBQ0tFRDsKLSAKLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gLyogQ3JlYXRlcyBhbiBlcG9sbCBpbnN0YW5jZS4gIFJldHVybnMgYW4gZmQgZm9yIHRoZSBuZXcgaW5zdGFuY2UuCi0gICAgVGhlICJzaXplIiBwYXJhbWV0ZXIgaXMgYSBoaW50IHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBmaWxlCi1AQCAtMTE0LDYgKzExNiw4IEBAIGV4dGVybiBpbnQgZXBvbGxfY3RsIChpbnQgX19lcGZkLCBpbnQgX19vcCwgaW50IF9fZmQsCi0gZXh0ZXJuIGludCBlcG9sbF93YWl0IChpbnQgX19lcGZkLCBzdHJ1Y3QgZXBvbGxfZXZlbnQgKl9fZXZlbnRzLAotIAkJICAgICAgIGludCBfX21heGV2ZW50cywgaW50IF9fdGltZW91dCkgX19USFJPVzsKLSAKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogc3lzL2Vwb2xsLmggKi8KLWRpZmYgLS1naXQgYS91dGlscy9zY3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmggYi91dGlscy9zY3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmgKLWluZGV4IDUxZjViZmIuLmM2MWFlZjMgMTAwNjQ0Ci0tLS0gYS91dGlscy9zY3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmgKLSsrKyBiL3V0aWxzL3NjdHAvaW5jbHVkZS9uZXRpbmV0L3NjdHAuaAotQEAgLTM1LDkgKzM1LDEyIEBACi0gCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIAotIHR5cGVkZWYgX19zMzIgc2N0cF9hc3NvY190OwotIAotQEAgLTg2Miw2ICs4NjUsOCBAQCBpbnQgc2N0cF9yZWN2bXNnKGludCBzLCB2b2lkICptc2csIHNpemVfdCBsZW4sIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwKLSAvKiBSZXR1cm4gdGhlIGFkZHJlc3MgbGVuZ3RoIGZvciBhbiBhZGRyZXNzIGZhbWlseS4gKi8KLSBpbnQgc2N0cF9nZXRhZGRybGVuKHNhX2ZhbWlseV90IGZhbWlseSk7Ci0gCi0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0gCi0gI2VuZGlmIC8qIF9fbGludXhfc2N0cF9oX18gKi8KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKaW5kZXggNDYyOTc2ZC4uNmM1ZjM2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCkBAIC0xOCwxMCArMTgsMTAgQEAKICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jIHwgMiArKwogIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKLSsrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCitpbmRleCBkNjNkMWU0Li4yNGNhMTc0IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYwogQEAgLTc2LDEwICs3NiwxMiBAQAogICAqLwogICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTM2LDEwICszNiwxMCBAQAogIAogICNpbmNsdWRlICJ0ZXN0LmgiCiAgI2luY2x1ZGUgInNhZmVfbWFjcm9zLmgiCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCi0rKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYworaW5kZXggNWE1MWI5YS4uYTUzMGE2YiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKIEBAIC03NSw5ICs3NSwxMSBAQAogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTUyLDEwICs1MiwxMCBAQAogIAogICNpbmNsdWRlICJ0ZXN0LmgiCiAgCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCi0rKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYworaW5kZXggMTJlMzgyOS4uOWIzOWY4YiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKIEBAIC03Niw5ICs3NiwxMSBAQAogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTY4LDMgKzY4LDYgQEAKICAKICAjaW5jbHVkZSAidGVzdC5oIgogIAorLS0gCisyLjcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoCmluZGV4IGM3MzBkNDYuLjQwZWU4OTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoCkBAIC0xMSwxNCArMTEsMTQgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KLSBpbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmggICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdzdXNwZW5kL01ha2VmaWxlIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogZ2l0L2luY2x1ZGUvbGFwaS9ydF9zaWdhY3Rpb24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2luY2x1ZGUvbGFwaS9ydF9zaWdhY3Rpb24uaAotKysrIGdpdC9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmggYi9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmgKK2luZGV4IDE4MjM2ZGIuLjE1ZmFjZGEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmgKKysrKyBiL2luY2x1ZGUvbGFwaS9ydF9zaWdhY3Rpb24uaAogQEAgLTM2LDEyICszNiwxMiBAQAogICNpZiBkZWZpbmVkKF9fbWlwc19fKQogIHN0cnVjdCBrZXJuZWxfc2lnYWN0aW9uIHsKQEAgLTM0LDEwICszNCwxMCBAQAogIAl1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogIAl2b2lkICgqc2FfcmVzdG9yZXIpICh2b2lkKTsKICAJc2lnc2V0X3Qgc2FfbWFzazsKLUluZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdzdXNwZW5kL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdzdXNwZW5kL01ha2VmaWxlCi0rKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZQoraW5kZXggMzdiYzNhOS4uMmNhN2Y3YyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdzdXNwZW5kL01ha2VmaWxlCiBAQCAtMTksNCArMTksNyBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNi10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoCmluZGV4IDA0NTMyYmUuLmU4MjZkNDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNi10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNi10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoCkBAIC0yNyw3ICsyNyw3IEBACiBpbmRleCBiOGI2N2I0Li43YzdjNTA2IDEwMDY0NAogLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYwogKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYwotQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIHRlc3RfYWNsX2RlZmF1bHQoY2hhciAqZGlyLCBhY2xfdCBhY2wpCitAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgdGVzdF9hY2xfZGVmYXVsdChjaGFyICpkaXIsIGFjbF90IGFjbCkKICAJY2hhciAqY21kID0gbWFsbG9jKDI1Nik7CiAgCiAgCXN0cmNweShjbWQsICJjaG1vZCA3Nzc3ICIpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXJlYWRfYWxsLURlZmluZS1GTk1fRVhUTUFUQ0gtaWYtbm90LWFscmVhZHktbGlrZS11bmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtcmVhZF9hbGwtRGVmaW5lLUZOTV9FWFRNQVRDSC1pZi1ub3QtYWxyZWFkeS1saWtlLXVuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjQ1YTg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXJlYWRfYWxsLURlZmluZS1GTk1fRVhUTUFUQ0gtaWYtbm90LWFscmVhZHktbGlrZS11bmQucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSAyMzUxODUwOGRlMzA3NzkwMjMxZDE2YWYzMDcyOTFmMWI0NWU5MDNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0RhbmllbD0yMEQ9QzM9QURhej89IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgorRGF0ZTogVHVlLCA1IEp1biAyMDE4IDE1OjM2OjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlYWRfYWxsOiBEZWZpbmUgRk5NX0VYVE1BVENIIGlmIG5vdCBhbHJlYWR5IChsaWtlIHVuZGVyCisgbXVzbCkuCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1dpdGggbXVzbCwgRk5NX0VYVE1BVENIIGlzIG5vdCBkZWZpbmVkOgorfCByZWFkX2FsbC5jOiBJbiBmdW5jdGlvbiAncmVhZF90ZXN0JzoKK3wgcmVhZF9hbGwuYzoyMDE6NDE6IGVycm9yOiAnRk5NX0VYVE1BVENIJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnRk5NX05PTUFUQ0gnPworfCAgIGlmIChleGNsdWRlICYmICFmbm1hdGNoKGV4Y2x1ZGUsIHBhdGgsIEZOTV9FWFRNQVRDSCkpIHsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTk1fTk9NQVRDSAorfCByZWFkX2FsbC5jOjIwMTo0MTogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlIGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4KK3wgPGJ1aWx0aW4+OiByZWNpcGUgZm9yIHRhcmdldCAncmVhZF9hbGwnIGZhaWxlZAorfCBtYWtlWzRdOiAqKiogW3JlYWRfYWxsXSBFcnJvciAxCisKK1NpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyB0ZXN0Y2FzZXMva2VybmVsL2ZzL3JlYWRfYWxsL3JlYWRfYWxsLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2ZzL3JlYWRfYWxsL3JlYWRfYWxsLmMgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL3JlYWRfYWxsL3JlYWRfYWxsLmMKK2luZGV4IGE4ZTE2MTEuLmU5ZmY0N2EgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL2ZzL3JlYWRfYWxsL3JlYWRfYWxsLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvZnMvcmVhZF9hbGwvcmVhZF9hbGwuYworQEAgLTU5LDYgKzU5LDEwIEBACisgI2RlZmluZSBNQVhfUEFUSCA0MDk2CisgI2RlZmluZSBNQVhfRElTUExBWSA0MAorIAorKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCisrI2RlZmluZSBGTk1fRVhUTUFUQ0ggMAorKyNlbmRpZgorKworIHN0cnVjdCBxdWV1ZSB7CisgCXNlbV90IHNlbTsKKyAJaW50IGZyb250OworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDk2YTg1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA2N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE3OjQ2OjM1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNhZmVfbWFjcm9zOiBtYWtlIGlzX2Z1c2UoKSByZXR1cm4gemVybyBpZiBmc190eXBlIGlzIE5VTEwKLQotVGhpcyBjb21tbWl0IDI4NTA3ZTUxNGMoc2FmZV9tb3VudDogRG8gbm90IHRyeSBtb3VudCgpIHN5c2NhbGwgZm9yIEZVU0UgZnMpCi1pbnZvbHZlcyBGVVNFIGZzIGNoZWNrIGluIHNhZmVfbW91bnQoKSwgYnV0IHdlJ2QgYmV0dGVyIGd1YXJhbnRlZSB0aGUgImZzX3R5cGUiCi1pcyBsZWdhbCB0byBjaGVjayBpbiBpc19mdXNlKCkgZnVuY3Rpb24gb3RoZXJ3aXNlIHN5c3RlbSB3aWxsIGtpbGwgdGhlIHByb2dyYW0uCi0KLSAgY21kbGluZT0iZmFub3RpZnkwNiIKLSAgY29udGFjdHM9IiIKLSAgYW5hbHlzaXM9ZXhpdAotICA8PDx0ZXN0X291dHB1dD4+PgotICB0c3RfdGVzdC5jOjk4MDogSU5GTzogVGltZW91dCBwZXIgcnVuIGlzIDBoIDEwbSAwMHMKLSAgdHN0X3Rlc3QuYzoxMDI1OiBCUk9LOiBUZXN0IGtpbGxlZCBieSBTSUdTRUdWIQotCi1TaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaXdhbmdAcmVkaGF0LmNvbT4KLUFja2VkLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC82N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkXQotLS0tCi0gbGliL3NhZmVfbWFjcm9zLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYi9zYWZlX21hY3Jvcy5jIGIvbGliL3NhZmVfbWFjcm9zLmMKLWluZGV4IGM0OGU0MzZkYy4uYWJkZWNhMDEzIDEwMDY0NAotLS0tIGEvbGliL3NhZmVfbWFjcm9zLmMKLSsrKyBiL2xpYi9zYWZlX21hY3Jvcy5jCi1AQCAtNzA4LDYgKzcwOCw5IEBAIHN0YXRpYyBpbnQgaXNfZnVzZShjb25zdCBjaGFyICpmc190eXBlKQotIHsKLSAJdW5zaWduZWQgaW50IGk7Ci0gCi0rCWlmICghZnNfdHlwZSkKLSsJCXJldHVybiAwOwotKwotIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmdXNlX2ZzX3R5cGVzKTsgaSsrKSB7Ci0gCQlpZiAoIXN0cmNtcChmdXNlX2ZzX3R5cGVzW2ldLCBmc190eXBlKSkKLSAJCQlyZXR1cm4gMTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MS1jdmUtMjAxNy01NjY5LXNobWF0LWZvci0wLW9yLVBBR0VTSVpFLXdpdGgtUk5ELWZsYWctLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQxLWN2ZS0yMDE3LTU2Njktc2htYXQtZm9yLTAtb3ItUEFHRVNJWkUtd2l0aC1STkQtZmxhZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyZDJjYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MS1jdmUtMjAxNy01NjY5LXNobWF0LWZvci0wLW9yLVBBR0VTSVpFLXdpdGgtUk5ELWZsYWctLnBhdGNoCkBAIC0wLDAgKzEsOTcgQEAKK0Zyb20gYjc2N2I3M2VmMDI3YmE4ZDM1ZjI5N2M3ZDM2NTkyNjVhYzgwNDI1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhZmFlbCBEYXZpZCBUaW5vY28gPHJhZmFlbC50aW5vY29AY2Fub25pY2FsLmNvbT4KK0RhdGU6IFdlZCwgMzAgTWF5IDIwMTggMDk6MTQ6MzQgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY3ZlLTIwMTctNTY2OTogc2htYXQoKSBmb3IgMCAob3IgPFBBR0VTSVpFIHdpdGggUk5EIGZsYWcpIGhhcworIHRvIGZhaWwgd2l0aCBSRU1BUHMKKworRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2lzc3Vlcy8zMTkKKworQWNjb3JkaW5nIHRvIHVwc3RyZWFtIHRocmVhZCAoaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTgvNS8yOC8yMDU2KSwKK2N2ZS0yMDE3LTU2NjkgbmVlZHMgdG8gYWRkcmVzcyB0aGUgIm5ldyIgd2F5IG9mIGhhbmRsaW5nIG5pbCBhZGRyZXNzZXMKK2ZvciBzaG1hdCgpIHdoZW4gdXNlZCB3aXRoIE1BUF9GSVhFRCBvciBTSE1fUkVNQVAgZmxhZ3MuCisKKy0gbWFwcGluZyBuaWwtcGFnZSBpcyBPSyBvbiBsb3dlciBhZGRyZXNzZXMgd2l0aCBNQVBfRklYRUQgKG9yIGVsc2UgWDExIGlzIGJyb2tlbikKKy0gbWFwcGluZyBuaWwtcGFnZSBpcyBOT1QgT0sgd2l0aCBTSE1fUkVNQVAgb24gbG93ZXIgYWRkcmVzc2VzCisKK0FkZHJlc3NlcyBEYXZpZGxvaHIgQnVlc28ncyBjb21tZW50cy9jaGFuZ2VzOgorCitjb21taXQgOGY4OWMwMDdiNmRlCitBdXRob3I6IERhdmlkbG9ociBCdWVzbyA8ZGF2ZUBzdGdvbGFicy5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgMjUgMTQ6NDc6MzAgMjAxOCAtMDcwMAorCisgICAgaXBjL3NobTogZml4IHNobWF0KCkgbmlsIGFkZHJlc3MgYWZ0ZXIgcm91bmQtZG93biB3aGVuIHJlbWFwcGluZworCitjb21taXQgYTczYWIyNDRmMGRhCitBdXRob3I6IERhdmlkbG9ociBCdWVzbyA8ZGF2ZUBzdGdvbGFicy5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgMjUgMTQ6NDc6MjcgMjAxOCAtMDcwMAorCisgICAgUmV2ZXJ0ICJpcGMvc2htOiBGaXggc2htYXQgbW1hcCBuaWwtcGFnZSBwcm90ZWN0aW9uIgorCitGb3IgcHJldmlvdXNseSB0ZXN0LCBhbmQgbm93IGJyb2tlbiwgbWFkZSBiYXNlZCBvbjoKKworY29tbWl0IDk1ZTkxYjgzMWY4NworQXV0aG9yOiBEYXZpZGxvaHIgQnVlc28gPGRhdmVAc3Rnb2xhYnMubmV0PgorRGF0ZTogICBNb24gRmViIDI3IDE0OjI4OjI0IDIwMTcgLTA4MDAKKworICAgIGlwYy9zaG06IEZpeCBzaG1hdCBtbWFwIG5pbC1wYWdlIHByb3RlY3Rpb24KKworU2lnbmVkLW9mZi1ieTogUmFmYWVsIERhdmlkIFRpbm9jbyA8cmFmYWVsLnRpbm9jb0BsaW5hcm8ub3JnPgorVGVzdGVkLWJ5OiBOYXJlc2ggS2FtYm9qdSA8bmFyZXNoLmthbWJvanVAbGluYXJvLm9yZz4KK1Jldmlld2VkLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvcHVsbC8zMjRdCitDVkU6IENWRS0yMDE3LTU2NjkKK1NpZ25lZC1vZmYtYnk6IFJhZmFlbCBEYXZpZCBUaW5vY28gPHJhZmFlbC50aW5vY29AbGluYXJvLm9yZz4KKy0tLQorIHRlc3RjYXNlcy9jdmUvY3ZlLTIwMTctNTY2OS5jIHwgMjAgKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy01NjY5LmMgYi90ZXN0Y2FzZXMvY3ZlL2N2ZS0yMDE3LTU2NjkuYworaW5kZXggMWNhNTk4My4uMDgzNDYyNiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctNTY2OS5jCisrKysgYi90ZXN0Y2FzZXMvY3ZlL2N2ZS0yMDE3LTU2NjkuYworQEAgLTI4LDcgKzI4LDIwIEBACisgICogaXMganVzdCB0byBzZWUgaWYgd2UgZ2V0IGFuIGFjY2VzcyBlcnJvciBvciBzb21lIG90aGVyIHVuZXhwZWN0ZWQgYmVoYXZpb3VyLgorICAqCisgICogU2VlIGNvbW1pdCA5NWU5MWI4MzFmIChpcGMvc2htOiBGaXggc2htYXQgbW1hcCBuaWwtcGFnZSBwcm90ZWN0aW9uKQorKyAqCisrICogVGhlIGNvbW1pdCBhYm92ZSBkaXNhbGxvd2VkIFNITV9STkQgbWFwcyB0byB6ZXJvIChhbmQgcm91bmRlZCkgZW50aXJlbHkgYW5kCisrICogdGhhdCBicm9rZSB1c2VybGFuZCBmb3IgY2FzZXMgbGlrZSBYb3JnLiBOZXcgYmVoYXZpb3IgZGlzYWxsb3dzIFJFTUFQcyB0bworKyAqIGxvd2VyIGFkZHJlc3NlcyAoMDw9UEFHRVNJWkUpLgorKyAqCisrICogU2VlIGNvbW1pdCBhNzNhYjI0NGYwZGEgKFJldmVydCAiaXBjL3NobTogRml4IHNobWF0IG1tYXAgbmlsLXBhZ2UgcHJvdGVjdC4uLikKKysgKiBTZWUgY29tbWl0IDhmODljMDA3YjZkZSAoaXBjL3NobTogZml4IHNobWF0KCkgbmlsIGFkZHJlc3MgYWZ0ZXIgcm91bmQtZG93Li4uKQorKyAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9pc3N1ZXMvMzE5CisrICoKKysgKiBUaGlzIHRlc3QgbmVlZHMgcm9vdCBwZXJtaXNzaW9ucyBvciBlbHNlIHNlY3VyaXR5X21tYXBfYWRkcigpLCBmcm9tCisrICogZ2V0X3VubWFwcGVkX2FyZWEoKSwgd2lsbCBjYXVzZSBwZXJtaXNzaW9uIGVycm9ycyB3aGVuIHRyeWluZyB0byBtbWFwIGxvd2VyCisrICogYWRkcmVzc2VzLgorICAqLworKworICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL2lwYy5oPgorICNpbmNsdWRlIDxzeXMvc2htLmg+CitAQCAtNjAsNyArNzMsMTEgQEAgc3RhdGljIHZvaWQgY2xlYW51cCh2b2lkKQorIHN0YXRpYyB2b2lkIHJ1bih2b2lkKQorIHsKKyAJdHN0X3JlcyhUSU5GTywgIkF0dGVtcHRpbmcgdG8gYXR0YWNoIHNoYXJlZCBtZW1vcnkgdG8gbnVsbCBwYWdlIik7CistCXNobV9hZGRyID0gc2htYXQoc2htX2lkLCAoKHZvaWQgKikxKSwgU0hNX1JORCk7CisrCS8qCisrCSAqIHNobWF0KCkgZm9yIDAgKG9yIDwgUEFHRVNJWkUgd2l0aCBSTkQgZmxhZykgaGFzIHRvIGZhaWwgd2l0aCBSRU1BUHMKKysJICogaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvaXNzdWVzLzMxOQorKwkgKi8KKysJc2htX2FkZHIgPSBzaG1hdChzaG1faWQsICgodm9pZCAqKTEpLCBTSE1fUk5EIHwgU0hNX1JFTUFQKTsKKyAJaWYgKHNobV9hZGRyID09ICh2b2lkICopLTEpIHsKKyAJCXNobV9hZGRyID0gTlVMTDsKKyAJCWlmIChlcnJubyA9PSBFSU5WQUwpIHsKK0BAIC04OSw2ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBydW4odm9pZCkKKyB9CisgCisgc3RhdGljIHN0cnVjdCB0c3RfdGVzdCB0ZXN0ID0geworKwkubmVlZHNfcm9vdCA9IDEsCisgCS5zZXR1cCA9IHNldHVwLAorIAkuY2xlYW51cCA9IGNsZWFudXAsCisgCS50ZXN0X2FsbCA9IHJ1biwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQyLWZzLWZ0ZXN0LWZ0ZXN0MDYuYy1GaXgtdG9vLXNtYWxsLW5hbWUtc3RyaW5nLWFuZC1yZWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDItZnMtZnRlc3QtZnRlc3QwNi5jLUZpeC10b28tc21hbGwtbmFtZS1zdHJpbmctYW5kLXJlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDdkOThlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQyLWZzLWZ0ZXN0LWZ0ZXN0MDYuYy1GaXgtdG9vLXNtYWxsLW5hbWUtc3RyaW5nLWFuZC1yZWwucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBiYWVlZjAyNmY4MGUxOWE2MzRhNDA5NmU5NzI4NjQxOWFjYTFjZjY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXVnIDIwMTggMDA6MjI6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZnMvZnRlc3QvZnRlc3QwNi5jOiBGaXggdG9vIHNtYWxsIG5hbWUgc3RyaW5nIGFuZCByZWxhdGVkCisgZmFpbHVyZQorCitUaGUgbmFtZSBzdHJpbmcgaXMgdG9vIHNtYWxsIHRvIGNvbnRhaW4gbm9ybWFsIGZ1bGwgcGF0aCBuYW1lcyBhbmQgY2F1c2VzCit0aGUgZm9sbG93aW5nIGZhaWx1cmUuCisKKyJmdGVzdDA2ICAgICAyICBURkFJTCAgOiAgZnRlc3QwNi5jOjIyMzogQ2FuJ3QgY2hkaXIoKTogZXJybm89RU5PRU5UKDIpOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbHRwLWxpc3RAbGlzdHMuc291cmNlZm9yZ2UubmV0XQorCitTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9mcy9mdGVzdC9mdGVzdDA2LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2ZzL2Z0ZXN0L2Z0ZXN0MDYuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvZnMvZnRlc3QvZnRlc3QwNi5jCitpbmRleCAyY2E3Yzg4Li5iNDM0MDY3IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9mcy9mdGVzdC9mdGVzdDA2LmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvZnMvZnRlc3QvZnRlc3QwNi5jCitAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBjaGFyICpmc3R5cDsKKyBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKmF2W10pCisgeworIAlpbnQgcGlkLCBjaGlsZCwgc3RhdHVzLCBjb3VudCwgaywgajsKKy0JY2hhciBuYW1lWzNdOworKwljaGFyIG5hbWVbTUFYUEFUSExFTl07CisgCisgCWludCBsYzsKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQzLW9wZW4tY3JlYXQtc2tpcC1TX0lTR0lELWNoZWNrLW9uLWZpbGVzLWNyZWF0ZWQtYnktbm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDMtb3Blbi1jcmVhdC1za2lwLVNfSVNHSUQtY2hlY2stb24tZmlsZXMtY3JlYXRlZC1ieS1uby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzYxZmNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQzLW9wZW4tY3JlYXQtc2tpcC1TX0lTR0lELWNoZWNrLW9uLWZpbGVzLWNyZWF0ZWQtYnktbm8ucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSAzYzg3ZWYyOTYxZGVkYjEwZDFmNjc0YzZhNTMwZTAwZGJhYjhlYzFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDE3IEp1bCAyMDE4IDEwOjI2OjM5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wZW58Y3JlYXQ6IHNraXAgU19JU0dJRCBjaGVjayBvbiBmaWxlcyBjcmVhdGVkIGJ5IG5vbi1ncm91cAorIG1lbWJlcnMKKworMGZhM2VjZDg3ODQ4ICgiRml4IHVwIG5vbi1kaXJlY3RvcnkgY3JlYXRpb24gaW4gU0dJRCBkaXJlY3RvcmllcyIpCitmaXhlcyBwcm9ibGVtIGRlc2NyaWJlZCBpbiBDVkUtMjAxOC0xMzQwNS4gVGhpcyBjb21taXQgaXMgZ2V0dGluZworYmFja3BvcnRlZCB0byBvbGRlciBzdHJlYW1zIGFzIHdlbGwuCisKK1RoaXMgcGF0Y2ggcmVtb3ZlcyBTX0lTR0lEIGNoZWNrIGZvciBmaWxlcyBjcmVhdGVkIGJ5IG5vbi1ncm91cCBtZW1iZXJzCitpbiBMVFAgdGVzdHMgY3JlYXQwOCBhbmQgb3BlbjEwLgorCitPbmNlIDBmYTNlY2Q4Nzg0OCB3aWxsIGJlIGluIG5vbi1yYyBrZXJuZWwsIHdlIGNvdWxkIGFkZCBhIG5ldyB0ZXN0Citmb3IgdGhpcyBDVkUgdGhhdCB3b3VsZCBiZSBsaW1pdGVkIHRvIDQuMTgrIGtlcm5lbHMuCisKK1NpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgorUmV2aWV3ZWQtYnk6IE5hcmVzaCBLYW1ib2p1IDxuYXJlc2gua2FtYm9qdUBsaW5hcm8ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbIGdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQKKyAgM2M4N2VmMjk2MWRlZGIxMGQxZjY3NGM2YTUzMGUwMGRiYWI4ZWMxYgorICAib3BlbnxjcmVhdDogc2tpcCBTX0lTR0lEIGNoZWNrIG9uIGZpbGVzIGNyZWF0ZWQgYnkgbm9uLWdyb3VwIG1lbWJlcnMiIF0KKworU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvY3JlYXQvY3JlYXQwOC5jIHwgMTMgKysrKysrLS0tLS0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvb3Blbi9vcGVuMTAuYyAgIHwgMTIgKysrKystLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvY3JlYXQvY3JlYXQwOC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9jcmVhdC9jcmVhdDA4LmMKK2luZGV4IDUwZjJiMzk5My4uZDIyNTU4YWMzIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9jcmVhdC9jcmVhdDA4LmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvY3JlYXQvY3JlYXQwOC5jCitAQCAtMzYxLDEzICszNjEsMTIgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCisgCQkJbG9jYWxfZmxhZyA9IEZBSUxFRDsKKyAJCX0KKyAKKy0JCS8qIFZlcmlmeSBtb2RlcyAqLworLQkJaWYgKCEoYnVmLnN0X21vZGUgJiBTX0lTR0lEKSkgeworLQkJCXRzdF9yZXNtKFRGQUlMLAorLQkJCQkgIiVzOiBJbmNvcnJlY3QgbW9kZXMsIHNldGdpZCBiaXQgc2hvdWxkIGJlIHNldCIsCistCQkJCSBzZXRnaWRfQik7CistCQkJbG9jYWxfZmxhZyA9IEZBSUxFRDsKKy0JCX0KKysJCS8qCisrCQkgKiBTa2lwIFNfSVNHSUQgY2hlY2sKKysJCSAqIDBmYTNlY2Q4Nzg0OCAoIkZpeCB1cCBub24tZGlyZWN0b3J5IGNyZWF0aW9uIGluIFNHSUQgZGlyZWN0b3JpZXMiKQorKwkJICogY2xlYXJzIFNfSVNHSUQgZm9yIGZpbGVzIGNyZWF0ZWQgYnkgbm9uLWdyb3VwIG1lbWJlcnMKKysJCSAqLworKworIAkJY2xvc2UoZmQpOworIAorIAkJaWYgKGxvY2FsX2ZsYWcgPT0gUEFTU0VEKSB7CitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9vcGVuL29wZW4xMC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9vcGVuL29wZW4xMC5jCitpbmRleCA2MTNmMjI4OGYuLjE0ZmVlYzllMSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvb3Blbi9vcGVuMTAuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9vcGVuL29wZW4xMC5jCitAQCAtMzQ1LDEzICszNDUsMTEgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICphdltdKQorIAkJCWxvY2FsX2ZsYWcgPSBGQUlMRUQ7CisgCQl9CisgCistCQkvKiBWZXJpZnkgbW9kZXMgKi8KKy0JCWlmICghKGJ1Zi5zdF9tb2RlICYgU19JU0dJRCkpIHsKKy0JCQl0c3RfcmVzbShURkFJTCwKKy0JCQkJICIlczogSW5jb3JyZWN0IG1vZGVzLCBzZXRnaWQgYml0IG5vdCBzZXQiLAorLQkJCQkgc2V0Z2lkX0IpOworLQkJCWxvY2FsX2ZsYWcgPSBGQUlMRUQ7CistCQl9CisrCQkvKgorKwkJICogU2tpcCBTX0lTR0lEIGNoZWNrCisrCQkgKiAwZmEzZWNkODc4NDggKCJGaXggdXAgbm9uLWRpcmVjdG9yeSBjcmVhdGlvbiBpbiBTR0lEIGRpcmVjdG9yaWVzIikKKysJCSAqIGNsZWFycyBTX0lTR0lEIGZvciBmaWxlcyBjcmVhdGVkIGJ5IG5vbi1ncm91cCBtZW1iZXJzCisrCQkgKi8KKyAKKyAJCWlmIChsb2NhbF9mbGFnID09IFBBU1NFRCkgeworIAkJCXRzdF9yZXNtKFRQQVNTLCAiVGVzdCBwYXNzZWQgaW4gYmxvY2syLiIpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NTRmY2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRlc3QgUHJvamVjdCIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBqb2ludCBwcm9qZWN0IHdpdGggU0dJLCBJQk0sIE9TREwsIGFuZCBCdWxsIHdpdGggYSBnb2FsIHRvIGRlbGl2ZXIgdGVzdCBzdWl0ZXMgdG8gdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSB0aGF0IHZhbGlkYXRlIHRoZSByZWxpYWJpbGl0eSwgcm9idXN0bmVzcywgYW5kIHN0YWJpbGl0eSBvZiBMaW51eC4gVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIHRlc3RpbmcgdGhlIExpbnV4IGtlcm5lbCBhbmQgcmVsYXRlZCBmZWF0dXJlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbHRwLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKLSAgICBmaWxlOi8vdG9vbHMvcG91bmRlcjIxL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICBmaWxlOi8vdXRpbHMvZmZzYi02LjAtcmMyL0NPUFlJTkc7bWQ1PWM0NjA4MjE2N2EzMTRkNzg1ZDAxMmEyNDQ3NDhkODAzIFwKLSIKLQotREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgotQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1TUkNSRVYgPSAiNzMxY2QzNGU2ODJkMjk3YjIwNzY2OGJlOGIxZDE1MzIwYTlhYzFiMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUZpeC1kZWZhdWx0LXZhbHVlLW9mLXdpdGhvdXQtbnVtYS1zd2l0Y2gtaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LWZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKLWV4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKLQotUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgotRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlIC0td2l0aC1vcGVuLXBvc2l4LXRlc3RzdWl0ZSAiCi0jIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCi0KLWRvX2luc3RhbGwoKXsKLSAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCi0KLSAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgotICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKLSAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCi0gICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcwotICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCi0gICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQotICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCi0KLSAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCi0gICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIGFjbCBcCi0gICAgYXQgXAotICAgIGF0dHIgXAotICAgIGJhc2ggXAotICAgIGNwaW8gXAotICAgIGNyb25pZSBcCi0gICAgY3VybCBcCi0gICAgZTJmc3Byb2dzLW1rZTJmcyBcCi0gICAgZXhwZWN0IFwKLSAgICBnYXdrIFwKLSAgICBnemlwIFwKLSAgICBpcHJvdXRlMiBcCi0gICAgbGRkIFwKLSAgICBsaWJhaW8gXAotICAgIGxvZ3JvdGF0ZSBcCi0gICAgcGVybCBcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHByb2NwcyBcCi0gICAgdW56aXAgXAotICAgIHV0aWwtbGludXggXAotICAgIHdoaWNoIFwKLSAgICB0YXIgXAotIgotCi1GSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgotCi0jIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKLUlOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTgwNTE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDUxNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjg1YmU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDUxNS5iYgpAQCAtMCwwICsxLDEyNyBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCisiCisKK0RFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKKworIyBzaW5jZSBsdHAgY29udGFpbnMgeDg2LTY0IGFzc2VtYmxlciB3aGljaCB1c2VzIHRoZSBmcmFtZS1wb2ludGVyIHJlZ2lzdGVyLAorIyBzZXQgLWZvbWl0LWZyYW1lLXBvaW50ZXIgeDg2LTY0IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBvcHRpbWlzYXRpb24KKyMgaXMgc2V0IHRvIC1PMCBvciBmcmFtZSBwb2ludGVycyBoYXZlIGJlZW4gZW5hYmxlZCBieSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgorIyBlYXJsaWVyIGluIENGTEFHUywgZXRjLgorQ0ZMQUdTX2FwcGVuZF94ODYtNjQgPSAiIC1mb21pdC1mcmFtZS1wb2ludGVyIgorCitDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitDRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK1NSQ1JFViA9ICI5NmNiZjQ4MzEzYWZhNjVlZjRkNjkzZDM0NDFjYmZkNjBhOGQ5YjI3IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tbWFwMTUtbWlwczY0LXJldHVybi1FSU5WQUwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LWZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQwLXJlYWRfYWxsLURlZmluZS1GTk1fRVhUTUFUQ0gtaWYtbm90LWFscmVhZHktbGlrZS11bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MS1jdmUtMjAxNy01NjY5LXNobWF0LWZvci0wLW9yLVBBR0VTSVpFLXdpdGgtUk5ELWZsYWctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDItZnMtZnRlc3QtZnRlc3QwNi5jLUZpeC10b28tc21hbGwtbmFtZS1zdHJpbmctYW5kLXJlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQzLW9wZW4tY3JlYXQtc2tpcC1TX0lTR0lELWNoZWNrLW9uLWZpbGVzLWNyZWF0ZWQtYnktbm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNjYWxscy1mY250bC1tYWtlLU9GRC1jb21tYW5kLXVzZS1mY250bDY0LXN5c2NhbGwtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2lnd2FpdGluZm8wMS1yZWNlbnQtZ2xpYmMtY2FsbHMtc3lzY2FsbC1kaXJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5ldG5zX2hlbHBlci5zaC11c2UtcGluZy02LXdoZW4tcGluZzYtaXMtbm90LWF2YWxpYWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKK2V4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKKworUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlIC0td2l0aC1vcGVuLXBvc2l4LXRlc3RzdWl0ZSAiCisjIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCisKK2RvX2luc3RhbGwoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCisKKyAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgorICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKKyAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCisgICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcworICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCisgICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQorICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCisgICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGFjbCBcCisgICAgYXQgXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNwaW8gXAorICAgIGNyb25pZSBcCisgICAgY3VybCBcCisgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgZXhwZWN0IFwKKyAgICBnYXdrIFwKKyAgICBnemlwIFwKKyAgICBpcHJvdXRlMiBcCisgICAgbGRkIFwKKyAgICBsaWJhaW8gXAorICAgIGxvZ3JvdGF0ZSBcCisgICAgcGVybCBcCisgICAgcHl0aG9uLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgdW56aXAgXAorICAgIHV0aWwtbGludXggXAorICAgIHdoaWNoIFwKKyAgICB0YXIgXAorIgorCitGSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgorCisjIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKKworIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90CisjIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgorIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKKyMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCitTS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTliMzY0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJMb3NzbGVzcyBkYXRhIGNvbXByZXNzb3IgYmFzZWQgb24gdGhlIExaTUEgYWxnb3JpdGhtIgotSE9NRVBBR0UgPSAiaHR0cDovL2x6aXAubm9uZ251Lm9yZy9semlwLmh0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlY29kZXIuY2M7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ZGIwOWZlM2Y5NTczZjk0ZDAwNzZmN2YwNzk1OWU2ZTEiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9semlwL2x6aXAtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGRkODc5MGQ3NTI4NDQwZDAzNGZjNzEzYTg2ODBiZDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZhZGM0ZjU2YmUxYmMwZDNhZTE1NWVjNDUyN2JkMDAzMTMzYmRjNzAzYTc1M2IyY2M2ODNmNjEwZTY0NmJhOSIKLQotQ09ORklHVVJFT1BUUyA9ICJcCi0gICAgJy0tc3JjZGlyPSR7U30nIFwKLSAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCi0gICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKLSAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCi0gICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCi0gICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCi0gICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCi0gICAgJ0NYWD0ke0NYWH0nIFwKLSAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKLSAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKLSAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCi0iCi1FWFRSQV9PRU1BS0UgPSAiIgotCi1CID0gIiR7U30vb2JqIgotZG9fY29uZmlndXJlICgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCi0gICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCi0gICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgotICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFmYzJhMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjIwLmJiCkBAIC0wLDAgKzEsNDEgQEAKK1NVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc29yIGJhc2VkIG9uIHRoZSBMWk1BIGFsZ29yaXRobSIKK0hPTUVQQUdFID0gImh0dHA6Ly9semlwLm5vbmdudS5vcmcvbHppcC5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmQ2ZTMwMGZmZDhmYjlkMThiZDliMTM2YTliYmExMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWNvZGVyLmNjO2JlZ2lubGluZT0zO2VuZGxpbmU9MTY7bWQ1PWRiMDlmZTNmOTU3M2Y5NGQwMDc2ZjdmMDc5NTllNmUxIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbHppcC9semlwLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjIxYzE1MTdkYTJhY2U5Njg5ZmQ5NTM5MTg2NjBiM2MzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM5M2I4MWE1YTc3ODhlZjU4MTI0MjNkMzExMzQ1YmE1ZDNiZDRmNWViZjFmNjkzOTExZTNhMTM1NTNjMTI5MGMiCisKK0NPTkZJR1VSRU9QVFMgPSAiXAorICAgICctLXNyY2Rpcj0ke1N9JyBcCisgICAgJy0tcHJlZml4PSR7cHJlZml4fScgXAorICAgICctLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9JyBcCisgICAgJy0tYmluZGlyPSR7YmluZGlyfScgXAorICAgICctLWRhdGFkaXI9JHtkYXRhZGlyfScgXAorICAgICctLWluZm9kaXI9JHtpbmZvZGlyfScgXAorICAgICctLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAorICAgICdDWFg9JHtDWFh9JyBcCisgICAgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyBcCisgICAgJ0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyBcCisgICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAorIgorRVhUUkFfT0VNQUtFID0gIiIKKworQiA9ICIke1N9L29iaiIKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKyAgICAjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgorICAgIGlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgorICAgICAgICBybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKKyAgICBmaQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvZmlsZXMvOTlfbWFuZGIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvZmlsZXMvOTlfbWFuZGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI4YTE3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9maWxlcy85OV9tYW5kYgpAQCAtMCwwICsxIEBACitkIG1hbiBtYW4gMDc1NSAvdmFyL2NhY2hlL21hbiBub25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvZmlsZXMvbWFuX2RiLmNvbmYtYXZvaWQtbXVsdGlsaWItaW5zdGFsbC1maWxlLWNvbmZsaWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL2ZpbGVzL21hbl9kYi5jb25mLWF2b2lkLW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzI3M2QzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL2ZpbGVzL21hbl9kYi5jb25mLWF2b2lkLW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdC5wYXRjaApAQCAtMCwwICsxLDE2IEBACitUaGUgZmlyc3QgbGluZSBvZiBtYW5fZGIuY29uZiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHBhY2thZ2UgbmFtZS4gQW5kIGl0IGNhdXNlcworbXVsdGlsaWIgaW5zdGFsbCBmaWxlIGNvbmZsaWN0LiBSZW1vdmUgdGhlIGxpbmUgdG8gYXZvaWQgdGhlIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9zcmMvbWFuX2RiLmNvbmYuaW4gYi9zcmMvbWFuX2RiLmNvbmYuaW4KK2luZGV4IGJjOGJiN2UuLjA0Y2ZiMzEgMTAwNjQ0CistLS0gYS9zcmMvbWFuX2RiLmNvbmYuaW4KKysrKyBiL3NyYy9tYW5fZGIuY29uZi5pbgorQEAgLTEsNCArMSwzIEBACistIyBAY29uZmlnX2ZpbGVfYmFzZW5hbWVACisgIworICMgVGhpcyBmaWxlIGlzIHVzZWQgYnkgdGhlIG1hbi1kYiBwYWNrYWdlIHRvIGNvbmZpZ3VyZSB0aGUgbWFuIGFuZCBjYXQgcGF0aHMuCisgIyBJdCBpcyBhbHNvIHVzZWQgdG8gcHJvdmlkZSBhIG1hbnBhdGggZm9yIHRob3NlIHdpdGhvdXQgb25lIGJ5IGV4YW1pbmluZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjhhNjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgotSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTg0Mjk3OGUwNjY4NjI4NjQyMWY5NDk4ZDEwMDliNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNmFlYzY0MWNhM2Q5OTQyYjA1NGNjMGU5YzNmMDVjYjQ2YTNhOTkyYmMwMDA2Nzk1NzU1ZTJmZWQxMzU3ZjNlIgotCi1ERVBFTkRTID0gImxpYnBpcGVsaW5lIGdkYm0gZ3JvZmYtbmF0aXZlIgotCi0jIHwgL3Vzci9zcmMvZGVidWcvbWFuLWRiLzIuOC4wLXIwL21hbi1kYi0yLjguMC9zcmMvd2hhdGlzLmM6OTM5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfbmxfbXNnX2NhdF9jbnRyJwotVVNFX05MU19saWJjLW11c2wgPSAibm8iCi0KLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLWRpc2FibGUtY2FjaGUtb3duZXIiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLSAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKLQotUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCi1SUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q4ZDI3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjMuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhbmRhcmQgVW5peCBkb2N1bWVudGF0aW9uIHN5c3RlbSBhY2Nlc3NlZCB1c2luZyB0aGUgbWFuIGNvbW1hbmQiCitIT01FUEFHRSA9ICJodHRwOi8vbWFuLWRiLm5vbmdudS5vcmcvIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9DT1BZSU5HLkxJQjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX05PTkdOVV9NSVJST1J9L21hbi1kYi9tYW4tZGItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzk5X21hbmRiIFwKKyAgICAgICAgICAgZmlsZTovL21hbl9kYi5jb25mLWF2b2lkLW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZjMwNTVlMThmZGQxY2U1Y2JiZGIzMDQwMzk5MWVjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTMyYTFjYTM2NmUxZWM2MWEzZWNlMWEzYWZhMGU5MmYyZmRjMTI1YjYxZDIzNmYyMGNjNmZmOWQ4MGNjNGFjIgorCitERVBFTkRTID0gImxpYnBpcGVsaW5lIGdkYm0gZ3JvZmYtbmF0aXZlIGJhc2UtcGFzc3dkIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2UtcGFzc3dkIgorCisjIHwgL3Vzci9zcmMvZGVidWcvbWFuLWRiLzIuOC4wLXIwL21hbi1kYi0yLjguMC9zcmMvd2hhdGlzLmM6OTM5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfbmxfbXNnX2NhdF9jbnRyJworVVNFX05MU19saWJjLW11c2wgPSAibm8iCisKK2luaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJICAgICAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X21hbmRiICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworICAgICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS9saWIvdG1wZmlsZXMuZCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbWFuLWRiL2xpYm1hbi5zbyAke2xpYmRpcn0vJHtCUE59L2xpYm1hbmRiLnNvIgorCitSREVQRU5EU18ke1BOfSArPSAiZ3JvZmYiCitSUkVDT01NRU5EU18ke1BOfSArPSAibGVzcyIKK1JQUk9WSURFU18ke1BOfSArPSAiIG1hbiIKKworZGVmIGNvbXByZXNzX3BrZyhkKToKKyAgICBpZiBiYi51dGlscy5jb250YWlucygiSU5IRVJJVCIsICJjb21wcmVzc19kb2MiLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiKQorICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKKyAgICAgICAgICAgICByZXR1cm4gImd6aXAiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgorICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6CisgICAgICAgICAgICAgcmV0dXJuICJ4eiIKKyAgICByZXR1cm4gIiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YmQwOTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgotTElDRU5TRSA9ICJHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9Nzk0ZjcwMTYxN2NjMDNmZTUwYzUzMjU3NjYwZDhlYzQiCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MmJkMmQwNWM0ZDBkYmE1ZTdhOTBkMzljOTU1NTE5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWViYzZiMDlhMTFlN2Y3YmJjOThmMzk4NGZlOGI4YjJiZGU5ZDJmNWY5ZGNiZDQzNDhhOWUwZDkzNzA0MjM4IgotCi1SREVQRU5EU18ke1BOfSA9ICJtYW4iCi0KLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi0jIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi1GSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY0NTg3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xNi5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImQxZmI4YmEzMTJhMWMxNWUwYmZkYTkxMWE5OGM1NTQ0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzOGIwNDYwYmYzZjM1Yzk1ZmFmN2Y4Y2Y1MmRhYzEyMTZkODZhNDc4NjZmNWU1ZjJmZGE4OGM2MWRhMDQ5NjAiCisKK2luaGVyaXQgbWFucGFnZXMKKworTUFOX1BLRyA9ICIke1BOfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIiIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CisKKyMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZworRklMRVNfJHtQTn0tZG9jID0gIiIKK0ZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBkMWI1ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1jLXJlcGxhY2UtcGVybC13LXdpdGgtdXNlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImRjZmM3YWE2MTNjNjIyOTFhMGY3MWY2YjY5OGQ4MjY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkODVkYWFhNmFiMjZlNTI0OTQ2ZGY0ODIzYWMyZjY5ODAyYmMxNmJjOTY3NzgxYjVlMjhkNWI4NmZjM2I5NzkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLSMKLSMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKLSMKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCi1QQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCi0gICAgICAgIAotICAgICAgICBybSAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3MzKyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MQotfQotCi1QQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycyAke0JQTn0tZmlzaCIKLQotU1VNTUFSWV8ke0JQTn0taGVscGVycy1wZXJsID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQZXJsLWJhc2VkIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYSsgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2FwdCsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmQgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2Rwa2crIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL21haWxmcyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcGF0Y2hmcyBcIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcnBtcysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VsaWIgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3V6aXAiCi1SREVQRU5EU18ke0JQTn0taGVscGVycy1wZXJsID0gInBlcmwiCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgotCi1TVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNDUwMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKK1JERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1jLXJlcGxhY2UtcGVybC13LXdpdGgtdXNlLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzZDJiOTBlMjE5OGVlNzlkMDhlYjRhODk4OTIyMGUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1MWQ5ZjBlZjkzMDllZjNlZWEwZmRjNGMxMmI4YjYxMTQ5ZTUwNTZiZWYxYjJkZTJjY2M3ZjAxNWQ5NzM0NDQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKKyMKKyMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKKyMKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCitQQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCisgICAgICAgIAorICAgICAgICBybSAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3MzKyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MQorfQorCitQQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycyAke0JQTn0tZmlzaCIKKworU1VNTUFSWV8ke0JQTn0taGVscGVycy1wZXJsID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQZXJsLWJhc2VkIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYSsgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2FwdCsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmQgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2Rwa2crIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL21haWxmcyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcGF0Y2hmcyBcIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcnBtcysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VsaWIgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3V6aXAiCitSREVQRU5EU18ke0JQTn0taGVscGVycy1wZXJsID0gInBlcmwiCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgorCitTVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCitGSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLURpc2FibGUtZ2NjOC13YXJuaW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtRGlzYWJsZS1nY2M4LXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczOTY1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLURpc2FibGUtZ2NjOC13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDE1MiBAQAorRnJvbSBiODMyMThkZTI2MjNjMGJiZTlhZjM1NWE4MWFlODM4NWQ3ZjMwY2ZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgOSBNYXkgMjAxOCAxMjo1Njo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGdjYzggd2FybmluZ3MKKworVGhpcyBpcyBuZWVkZWQgdW50aWwKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTU1Mzk1OAorCitGaXggc3VwZXIwLmMgaXNzdWUgd2hpY2ggaXMgdHJpZ2dlcmVkIG9ubHkgaW4gREVCVUdfQlVJTEQgd2l0aCAtTzEgKG9yIGFueQorY29uZmlndXJhdGlvbiB3aXRob3V0IC1mdHJlZS12cnAgb3Igd2l0aCAtZm5vLXRyZWUtdnJwKQorCitzdXBlcjAuYzogSW4gZnVuY3Rpb24gJ2V4YW1pbmVfc3VwZXIwJzoKK3N1cGVyMC5jOjIzODozMjogZXJyb3I6ICdzbnByaW50Zicgb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgYmVmb3JlIHRoZSBsYXN0IGZvcm1hdCBjaGFyYWN0ZXIgWy1XZXJyb3I9Zm9ybWF0LXRydW5jYXRpb249XQorICAgc25wcmludGYobmIsIHNpemVvZihuYiksICIlNGQiLCBkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1dvcmthcm91bmRdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIE1vbml0b3IuYyAgICAgfCA0ICsrKy0KKyBtZG9wZW4uYyAgICAgIHwgNCArKysrCisgc3VwZXItZGRmLmMgICB8IDQgKysrKworIHN1cGVyLWludGVsLmMgfCA2ICsrKysrKworIHN1cGVyMS5jICAgICAgfCA1ICsrKysrCisgc3VwZXIwLmMgICAgICB8IDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N1cGVyMC5jIGIvc3VwZXIwLmMKK2luZGV4IGY1YjQ1MDcuLjI2NGI1OTggMTAwNjQ0CistLS0gYS9zdXBlcjAuYworKysrIGIvc3VwZXIwLmMKK0BAIC0yMzEsNyArMjMxLDcgQEAKKyAJICAgICBkKyspIHsKKyAJCW1kcF9kaXNrX3QgKmRwOworIAkJY2hhciAqZHY7CistCQljaGFyIG5iWzExXTsKKysJCWNoYXIgbmJbMTJdOworIAkJaW50IHdvbmx5LCBmYWlsZmFzdDsKKyAJCWlmIChkPj0wKSBkcCA9ICZzYi0+ZGlza3NbZF07CisgCQllbHNlIGRwID0gJnNiLT50aGlzX2Rpc2s7CitkaWZmIC0tZ2l0IGEvTW9uaXRvci5jIGIvTW9uaXRvci5jCitpbmRleCA4MDJhOWQ5Li4yM2IyNDZiIDEwMDY0NAorLS0tIGEvTW9uaXRvci5jCisrKysgYi9Nb25pdG9yLmMKK0BAIC00NDEsNyArNDQxLDggQEAgc3RhdGljIHZvaWQgYWxlcnQoY2hhciAqZXZlbnQsIGNoYXIgKmRldiwgY2hhciAqZGlzYywgc3RydWN0IGFsZXJ0X2luZm8gKmluZm8pCisgCQkJICAgICAgIGV2ZW50LCBkZXYpOworIAl9CisgfQorLQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtdHJ1bmNhdGlvbiIKKyBzdGF0aWMgaW50IGNoZWNrX2FycmF5KHN0cnVjdCBzdGF0ZSAqc3QsIHN0cnVjdCBtZHN0YXRfZW50ICptZHN0YXQsCisgCQkgICAgICAgaW50IHRlc3QsIHN0cnVjdCBhbGVydF9pbmZvICphaW5mbywKKyAJCSAgICAgICBpbnQgaW5jcmVtZW50cywgY2hhciAqcHJlZmVyKQorQEAgLTY4Myw2ICs2ODQsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2FycmF5KHN0cnVjdCBzdGF0ZSAqc3QsIHN0cnVjdCBtZHN0YXRfZW50ICptZHN0YXQsCisgCQlyZXR1cm4gMTsKKyAJcmV0dXJuIDA7CisgfQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgCisgc3RhdGljIGludCBhZGRfbmV3X2FycmF5cyhzdHJ1Y3QgbWRzdGF0X2VudCAqbWRzdGF0LCBzdHJ1Y3Qgc3RhdGUgKipzdGF0ZWxpc3QsCisgCQkJICBpbnQgdGVzdCwgc3RydWN0IGFsZXJ0X2luZm8gKmluZm8pCitkaWZmIC0tZ2l0IGEvbWRvcGVuLmMgYi9tZG9wZW4uYworaW5kZXggNjg1Y2EzMi4uNDA2YWJhNCAxMDA2NDQKKy0tLSBhL21kb3Blbi5jCisrKysgYi9tZG9wZW4uYworQEAgLTI2LDYgKzI2LDkgQEAKKyAjaW5jbHVkZSAibWRfcC5oIgorICNpbmNsdWRlIDxjdHlwZS5oPgorIAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtdHJ1bmNhdGlvbiIKKysKKyB2b2lkIG1ha2VfcGFydHMoY2hhciAqZGV2LCBpbnQgY250KQorIHsKKyAJLyogbWFrZSAnY250JyBwYXJ0aXRpb24gZGV2aWNlcyBmb3IgJ2RldicKK0BAIC05OSw2ICsxMDIsNyBAQCB2b2lkIG1ha2VfcGFydHMoY2hhciAqZGV2LCBpbnQgY250KQorIAl9CisgCWZyZWUobmFtZSk7CisgfQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgCisgLyoKKyAgKiBXZSBuZWVkIGEgbmV3IG1kIGRldmljZSB0byBhc3NlbWJsZS9idWlsZC9jcmVhdGUgYW4gYXJyYXkuCitkaWZmIC0tZ2l0IGEvc3VwZXItZGRmLmMgYi9zdXBlci1kZGYuYworaW5kZXggMTcwN2FkMS4uZTA4ZDI4OSAxMDA2NDQKKy0tLSBhL3N1cGVyLWRkZi5jCisrKysgYi9zdXBlci1kZGYuYworQEAgLTI4NDYsNiArMjg0Niw5IEBAIHN0YXRpYyB2b2lkIF9zZXRfY29uZmlnX3NpemUoc3RydWN0IHBoeXNfZGlza19lbnRyeSAqcGRlLCBjb25zdCBzdHJ1Y3QgZGwgKmRsKQorIAkJKHVuc2lnbmVkIGxvbmcgbG9uZyljZnMsICh1bnNpZ25lZCBsb25nIGxvbmcpKGRsLT5zaXplLWNmcykpOworIH0KKyAKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW92ZXJmbG93IgorKworIC8qIEFkZCBhIGRldmljZSB0byBhIGNvbnRhaW5lciwgZWl0aGVyIHdoaWxlIGNyZWF0aW5nIGl0IG9yIHdoaWxlCisgICogZXhwYW5kaW5nIGEgcHJlLWV4aXN0aW5nIGNvbnRhaW5lcgorICAqLworQEAgLTI5ODEsNiArMjk4NCw3IEBAIHN0YXRpYyBpbnQgYWRkX3RvX3N1cGVyX2RkZihzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwKKyAKKyAJcmV0dXJuIDA7CisgfQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgCisgc3RhdGljIGludCByZW1vdmVfZnJvbV9zdXBlcl9kZGYoc3RydWN0IHN1cGVydHlwZSAqc3QsIG1kdV9kaXNrX2luZm9fdCAqZGspCisgeworZGlmZiAtLWdpdCBhL3N1cGVyLWludGVsLmMgYi9zdXBlci1pbnRlbC5jCitpbmRleCAwMGEyOTI1Li40NGZiZWFkIDEwMDY0NAorLS0tIGEvc3VwZXItaW50ZWwuYworKysrIGIvc3VwZXItaW50ZWwuYworQEAgLTI5OCw2ICsyOTgsMTEgQEAgc3RydWN0IG1kX2xpc3QgeworIH07CisgCisgI2RlZmluZSBwcl92cmIoZm10LCBhcmcuLi4pICh2b2lkKSAodmVyYm9zZSAmJiBwcl9lcnIoZm10LCAjI2FyZykpCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrIyBpZiBfX0dOVUNfXyA9PSA4CisrIyBwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzdHJpbmdvcC10cnVuY2F0aW9uIgorKyMgZW5kaWYKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LXRydW5jYXRpb24iCisgCisgc3RhdGljIF9fdTggbWlncl90eXBlKHN0cnVjdCBpbXNtX2RldiAqZGV2KQorIHsKK0BAIC0xMTYxOCwzICsxMTYyMyw0IEBAIHN0cnVjdCBzdXBlcnN3aXRjaCBzdXBlcl9pbXNtID0geworIAkuZ2V0X2JhZF9ibG9ja3MgICA9IGltc21fZ2V0X2JhZGJsb2NrcywKKyAjZW5kaWYgLyogTURBU1NFTUJMRSAqLworIH07CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKK2RpZmYgLS1naXQgYS9zdXBlcjEuYyBiL3N1cGVyMS5jCitpbmRleCA4N2E3NGNiLi43MWM1MTVmIDEwMDY0NAorLS0tIGEvc3VwZXIxLmMKKysrKyBiL3N1cGVyMS5jCitAQCAtMTA5MSw2ICsxMDkxLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgbWRpbmZvICpjb250YWluZXJfY29udGVudDEoc3RydWN0IHN1cGVydHlwZSAqc3QsIGNoYXIgKnN1YmFycmF5KQorIAlyZXR1cm4gaW5mbzsKKyB9CisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrIyBpZiBfX0dOVUNfXyA9PSA4CisrIyBwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzdHJpbmdvcC10cnVuY2F0aW9uIgorKyNlbmRpZgorIHN0YXRpYyBpbnQgdXBkYXRlX3N1cGVyMShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgc3RydWN0IG1kaW5mbyAqaW5mbywKKyAJCQkgY2hhciAqdXBkYXRlLAorIAkJCSBjaGFyICpkZXZuYW1lLCBpbnQgdmVyYm9zZSwKK0BAIC0xNDczLDYgKzE0NzcsNyBAQCBzdGF0aWMgaW50IGluaXRfc3VwZXIxKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBtZHVfYXJyYXlfaW5mb190ICppbmZvLAorIAorIAlyZXR1cm4gMTsKKyB9CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAKKyBzdHJ1Y3QgZGV2aW5mbyB7CisgCWludCBmZDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtdXNlLW1lbW1vdmUtaW5zdGVhZC1vZi1tZW1jcHktb24tb3ZlcmxhcHBpbmctcmVnaW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS11c2UtbWVtbW92ZS1pbnN0ZWFkLW9mLW1lbWNweS1vbi1vdmVybGFwcGluZy1yZWdpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQzNTFiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtdXNlLW1lbW1vdmUtaW5zdGVhZC1vZi1tZW1jcHktb24tb3ZlcmxhcHBpbmctcmVnaW9uLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYWIxOGYwNGNmODllZjRlODUyMWM4MWM1MDQ3N2UxMzYzYjJkMzMzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI4IEFwciAyMDE4IDA5OjQ2OjEyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzZSBtZW1tb3ZlIGluc3RlYWQgb2YgbWVtY3B5IG9uIG92ZXJsYXBwaW5nIHJlZ2lvbgorCitGaXhlcworc3VwZXIwLmM6NTI2OjM6IGVycm9yOiAnbWVtY3B5JyBhY2Nlc3NpbmcgMzkzNiBieXRlcyBhdCBvZmZzZXRzIDE1NiBhbmQgMTYwIG92ZXJsYXBzIDM5MzIgYnl0ZXMgYXQgb2Zmc2V0IDE2MCBbLVdlcnJvcj1yZXN0cmljdF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzdXBlcjAuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N1cGVyMC5jIGIvc3VwZXIwLmMKK2luZGV4IGY1YjQ1MDcuLjI2NGI1OTggMTAwNjQ0CistLS0gYS9zdXBlcjAuYworKysrIGIvc3VwZXIwLmMKK0BAIC01MjMsNyArNTIzLDcgQEAgc3RhdGljIGludCB1cGRhdGVfc3VwZXIwKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBzdHJ1Y3QgbWRpbmZvICppbmZvLAorIAkJICogdXAgNCBieXRlcyBiZWZvcmUgY29udGludWluZworIAkJICovCisgCQlfX3UzMiAqc2IzMiA9IChfX3UzMiopc2I7CistCQltZW1jcHkoc2IzMitNRF9TQl9HRU5FUklDX0NPTlNUQU5UX1dPUkRTKzcsCisrCQltZW1tb3ZlKHNiMzIrTURfU0JfR0VORVJJQ19DT05TVEFOVF9XT1JEUys3LAorIAkJICAgICAgIHNiMzIrTURfU0JfR0VORVJJQ19DT05TVEFOVF9XT1JEUys3KzEsCisgCQkgICAgICAgKE1EX1NCX1dPUkRTIC0gKE1EX1NCX0dFTkVSSUNfQ09OU1RBTlRfV09SRFMrNysxKSkqNCk7CisgCQlpZiAodmVyYm9zZSA+PSAwKQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiCmluZGV4IGRjMDk4ZjEuLjJjNGQ4OGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjAuYmIKQEAgLTIyLDYgKzIyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDQtbWRhZG0tRm9yY2VkLXR5cGUtY29udmVyc2lvbi10by1hdm9pZC10cnVuY2F0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLWEtY29tbWVudC10by1pbmRpY2F0ZS12YWxpZC1mYWxsdGhyb3VnaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy10by1jaGVjay1mb3ItaW1wbGljaXQtZmFsbHRocm91Z2gtd2FybmluZy1zdXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11c2UtbWVtbW92ZS1pbnN0ZWFkLW9mLW1lbWNweS1vbi1vdmVybGFwcGluZy1yZWdpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWdjYzgtd2FybmluZ3MucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMmNiNGZlZmZlYTkxNjdiYTcxYjVmMzQ2YTBjMGE0MGQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWQ2YWU3ZjI0Y2VkM2EwZmE3YjU2MTNiMzJmNGE1ODliYjQ4ODFlMzk0NmE1YTJjMzcyNDA1NjI1NGFkYTNhOSIKQEAgLTQwLDcgKzQyLDcgQEAKIAogZG9fY29tcGlsZSgpIHsKIAkjIFBvaW50IHRvIHJpZ2h0IHNiaW5kaXIKLQlzZWQgLWkgLWUgInM7QklORElSICA9IC9zYmluO0JJTkRJUiA9ICRiYXNlX3NiaW5kaXI7IiAke1N9L01ha2VmaWxlCisJc2VkIC1pIC1lICJzO0JJTkRJUiAgPSAvc2JpbjtCSU5ESVIgPSAkYmFzZV9zYmluZGlyOyIgLWUgInM7VURFVkRJUiA9IC9saWI7VURFVkRJUiA9ICRub25hcmNoX2Jhc2VfbGliZGlyOyIgJHtTfS9NYWtlZmlsZQogCW9lX3J1bm1ha2UgU1lTUk9PVD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5nZXR0eS9taW5nZXR0eV8xLjA4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluZ2V0dHkvbWluZ2V0dHlfMS4wOC5iYgppbmRleCAzYzE2MjI4Li40OTFiODkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5nZXR0eS9taW5nZXR0eV8xLjA4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmdldHR5L21pbmdldHR5XzEuMDguYmIKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgICAgICBDRkxBR1M9JyR7Q0ZMQUdTfSAtRF9HTlVfU09VUkNFJyIKIAogZG9faW5zdGFsbCgpeworICAgIHNlZCAtaSAtZSAicztTQklORElSPS9zYmluO1NCSU5ESVI9JGJhc2Vfc2JpbmRpcjsiICAke1N9L01ha2VmaWxlCiAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9CiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKaW5kZXggYmUwYjQ4ZC4uMWU2ZjEzMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYgpAQCAtMTYsOCArMTYsNiBAQAogU1JDX1VSSVttZDVzdW1dID0gIjkwMjFjYjhjNTQ0NWY2ZTZlNzRiMmFjYzM5OTYyZDYyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMmY4MzZiN2E2NzdlYjBjYjFkY2E4ZDcwMzAyYjczNzI5YzNkMzBkZjI2ZDU4MzY4ZDcxMmU1Y2NhMDQxZjEiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL2Zycy8/Z3JvdXBfaWQ9MzAwMTgiCi0KIFBBQ0tBR0VDT05GSUcgPz89ICIiCiBQQUNLQUdFQ09ORklHW2xvY2tkZXZdID0gIi0tZW5hYmxlLWxvY2tkZXYsLS1kaXNhYmxlLWxvY2tkZXYsbG9ja2RldiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL2ZpbGVzL2Rpc2FibGUtc3RyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZGlzYWJsZS1zdHJpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2ODY5ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZGlzYWJsZS1zdHJpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDM3YjNjYzkuLmYxMDI2ZjMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC05NSw3ICs5NSw3IEBAIGluc3RhbGwtZGlyczoKLSAJICAgICQoREVTVERJUikkKG1hbmRpcikvbWFuMQotIAotIGluc3RhbGwtYmluYXJpZXM6ICQoUFJPRykKLS0JJChJTlNUQUxMKSAtbSAwNTU1IC1zICQoUFJPRykgJChERVNURElSKSQoYmluZGlyKS8kKFBST0cpCi0rCSQoSU5TVEFMTCkgLW0gMDU1NSAkKFBST0cpICQoREVTVERJUikkKGJpbmRpcikvJChQUk9HKQotIAotIGluc3RhbGwtbWFuOgotIAkkKElOU1RBTEwpIC1tIDA0NDQgJChzcmNkaXIpL21rdGVtcC4kKG1hbnR5cGUpIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21rdGVtcC9maWxlcy9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21rdGVtcC9maWxlcy9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNiNmRjYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGlzIGZpeGVzIHRoZSBwYXJhbGxlbCBtYWtlIGluc3RhbGwgZmFpbHVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi1odHRwOi8vd3d3LmdyYXRpc29mdC51cy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTI4Ci0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IG1rdGVtcC0xLjcvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBta3RlbXAtMS43Lm9yaWcvTWFrZWZpbGUuaW4KLSsrKyBta3RlbXAtMS43L01ha2VmaWxlLmluCi1AQCAtOTQsMTAgKzk0LDEwIEBAIGluc3RhbGwtZGlyczoKLSAJJChTSEVMTCkgJChzcmNkaXIpL21raW5zdGFsbGRpcnMgJChERVNURElSKSQoYmluZGlyKSBcCi0gCSAgICAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKLSAKLS1pbnN0YWxsLWJpbmFyaWVzOiAkKFBST0cpCi0raW5zdGFsbC1iaW5hcmllczogaW5zdGFsbC1kaXJzICQoUFJPRykKLSAJJChJTlNUQUxMKSAtbSAwNTU1ICQoUFJPRykgJChERVNURElSKSQoYmluZGlyKS8kKFBST0cpCi0gCi0taW5zdGFsbC1tYW46Ci0raW5zdGFsbC1tYW46IGluc3RhbGwtZGlycwotIAkkKElOU1RBTEwpIC1tIDA0NDQgJChzcmNkaXIpL21rdGVtcC4kKG1hbnR5cGUpIFwKLSAJICAgICQoREVTVERJUikkKG1hbmRpcikvbWFuMS9ta3RlbXAuMQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL21rdGVtcF8xLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvbWt0ZW1wXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThhZTVjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvbWt0ZW1wXzEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiRW5hYmxlcyBzYWZlIHRlbXBvcmFyeSBmaWxlIGNyZWF0aW9uIGZyb20gc2hlbGwgc2NyaXB0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWt0ZW1wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly93d3cubWt0ZW1wLm9yZy9idWdzIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MzA2ODBmNjMyMmExZWI4NzE5OWI1ZTAxYTgyYzBkNCIKLQotUFIgPSAicjMiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLm1rdGVtcC5vcmcvcHViL21rdGVtcC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgZmlsZTovL2Rpc2FibGUtc3RyaXAucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODdiYmVkOWZhMmVlOGU3NjQ1NzMzYzBlOGU2NTE3MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTk0YjllMWVkZjg2NmIyNjA5NTQ1ZGE2NWI2Mjc5OTZhYzVkMTU4ZmRhMDcxZTQ5MmJkZGIyZjRhNDgyNjc1IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtbGliYyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdIDsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCQltdiAke0R9JHtiaW5kaXJ9L21rdGVtcCAke0R9JHtiYXNlX2JpbmRpcn0vbWt0ZW1wCi0JCXJtZGlyICR7RH0ke2JpbmRpcn0KLQlmaQotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJta3RlbXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI2MCIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1rdGVtcC4xIgotQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tZG9jID0gIjMwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKaW5kZXggNTY1N2ZkOC4uYTRlMzI4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYgpAQCAtNDgsNyArNDgsMTYgQEAKICMgdXAgYWxsIHByZXZpb3VzbHkgYXBwbGllZCBwYXRjaGVzIGluIHRoZSBzdGFydAogbmV0dG9vbHNfZG9fcGF0Y2goKSB7CiAJY2QgJHtTfQotCXF1aWx0IHBvcCAtYSB8fCB0cnVlCisJIyBpdCdzIGltcG9ydGFudCB0aGF0IHdlIG9ubHkgcG9wIHRoZSBleGlzdGluZyBwYXRjaGVzIHdoZW4gdGhleSd2ZQorCSMgYmVlbiBhcHBsaWVkLCBvdGhlcndpc2UgcXVpbHQgd2lsbCBjbGltYiB0aGUgZGlyZWN0b3J5IHRyZWUKKwkjIGFuZCByZXZlcnNlIG91dCBzb21lIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNldCBvZiBwYXRjaGVzCisJaWYgWyAtZCAke1N9L3BhdGNoZXMgXTsgdGhlbgorCQkjIHdoaWxzdCB0aGlzIGlzIHRoZSBkZWZhdWx0IGRpcmVjdG9yeSwgZG9pbmcgaXQgbGlrZSB0aGlzCisJCSMgZGVmZWF0cyB0aGUgZGlyZWN0b3J5IGNsaW1iaW5nIHRoYXQgcXVpbHQgd2lsbCBvdGhlcndpc2UKKwkJIyBkbzsgbm90ZSB0aGUgZGlyZWN0b3J5IG11c3QgZXhpc3QgdG8gZGVmZWF0IHRoaXMsIGhlbmNlCisJCSMgdGhlIHRlc3QgaW5zaWRlIHdoaWNoIHdlIG9wZXJhdGUKKwkJUVVJTFRfUEFUQ0hFUz0ke1N9L3BhdGNoZXMgcXVpbHQgcG9wIC1hCisJZmkKIAlpZiBbIC1kICR7U30vLnBjLW5ldHRvb2xzIF07IHRoZW4KIAkJcm0gLXJmICR7U30vLnBjCiAJCW12ICR7U30vLnBjLW5ldHRvb2xzICR7U30vLnBjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMjAuYmIKaW5kZXggMjAzNjllZi4uNDMzZDE4NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjIwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dC1weXRob25fMC41Mi4yMC5iYgpAQCAtMjUsNCArMjUsNCBAQAogCiBGSUxFU18ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMjAuYmIKaW5kZXggNjVjZTcwYy4uMjY0ZWYzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMjAuYmIKQEAgLTUxLDQgKzUxLDQgQEAKIAogRklMRVNfd2hpcHRhaWwgPSAiJHtiaW5kaXJ9L3doaXB0YWlsIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKaW5kZXggOTAwMmZiYy4uZmZhODM4OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKQEAgLTg2LDEwICs4Niw4IEBACiAgICAgbWMtZmlzaCBcCiAgICAgbWMtaGVscGVycyBcCiAgICAgbWMtaGVscGVycy1wZXJsIFwKLSAgICBta3RlbXAgXAogICAgIG5jdXJzZXMgXAogICAgIG5ldC10b29scyBcCi0gICAgcG9wdCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXAogICAgIHNlZCBcCkBAIC0xMjcsMjUgKzEyNSwxNyBAQAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLW11bHRpdXNlciA9ICJcCisgICAgYnppcDIgXAogICAgIGNyYWNrbGliIFwKICAgICBnemlwIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJ1c2VyJywgJycsIGQpfSBcCiAgICAgc2hhZG93IFwKICAgICBzdWRvIFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1zeXMtc2VydmljZXMgPSAiXAogICAgIGF0IFwKLSAgICBiemlwMiBcCiAgICAgY3JvbmllIFwKLSAgICBkYnVzIFwKLSAgICBlbGZ1dGlscyBcCi0gICAgZ3ppcCBcCi0gICAgbGVzcyBcCiAgICAgbG9ncm90YXRlIFwKICAgICBuZnMtdXRpbHMgXAotICAgIHBjaXV0aWxzIFwKICAgICBycGNiaW5kIFwKLSAgICB0Y3Atd3JhcHBlcnMgXAotICAgIHR6ZGF0YSBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgppbmRleCA1M2QxMDBjLi5lOGRjNDIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgpAQCAtNzYsNyArNzYsNyBAQAogICAgIHNjcmVlbiBcCiAgICAgc2V0c2VyaWFsIFwKICAgICBzeXNzdGF0IFwKLSAgICB1ZGV2LWV4dHJhY29uZiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICd1ZGV2LWV4dHJhY29uZicsIGQpfSBcCiAgICAgdW56aXAgXAogICAgIHdhdGNoZG9nIFwKICAgICB3Z2V0IFwKQEAgLTEzNiw2ICsxMzYsNyBAQAogICAgIGJjIFwKICAgICBiaW51dGlscyBcCiAgICAgYmludXRpbHMtc3ltbGlua3MgXAorICAgIGJ6aXAyIFwKICAgICBjb3JldXRpbHMgXAogICAgIGNwaW8gXAogICAgIGNyb25pZSBcCkBAIC0xNTgsNyArMTU5LDYgQEAKICAgICBtYWtlIFwKICAgICBtYW4gXAogICAgIG1hbi1wYWdlcyBcCi0gICAgbWt0ZW1wIFwKICAgICBtc210cCBcCiAgICAgcGF0Y2ggXAogICAgIHByb2NwcyBcCkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICBsaWJlcmF0aW9uLWZvbnRzIFwKICAgICBndGsrIFwKICAgICBhdGsgXAotICAgIGxpYmFzb3VuZCBcCisgICAgYWxzYS1saWIgXAogIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKaW5kZXggOTJhYjcyYS4uM2FlYzJjZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX3BhdGhzX2hlYWRlci5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAKLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXggZmxleC1uYXRpdmUgY3JhY2tsaWIgbGlieG1sMi1uYXRpdmUiCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4IGZsZXgtbmF0aXZlIGNyYWNrbGliIGxpYnhtbDItbmF0aXZlIHZpcnR1YWwvY3J5cHQiCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtZGItdW5pcXVlbmFtZT1fcGFtIFwKICAgICAgICAgICAgICAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9zZWN1cml0eSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiCmluZGV4IGFiMzAxMDguLjYxODlmZDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiCkBAIC00OCwzICs0OCw5IEBACiB9CiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggY29yZXV0aWxzIHBlcmwgdXRpbC1saW51eC1sb3NldHVwIHB5dGhvbjMiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXJ0cHJvYmUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFydHByb2JlXSA9ICIke3NiaW5kaXJ9L3BhcnRwcm9iZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDIvMDAwMS1wYnppcDItRml4LWludmFsaWQtc3VmZml4LW9uLWxpdGVyYWwtQy0xMS13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMi8wMDAxLXBiemlwMi1GaXgtaW52YWxpZC1zdWZmaXgtb24tbGl0ZXJhbC1DLTExLXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZjMzc3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDIvMDAwMS1wYnppcDItRml4LWludmFsaWQtc3VmZml4LW9uLWxpdGVyYWwtQy0xMS13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gZGU0YTk0OGQzNTZjOWJlZmI4OGM3OTYxNjhlOTdlYjA1YjlhMzM4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIEFwciAyMDE4IDIyOjU0OjQyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBiemlwMjogRml4IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWwgQysrMTEgd2FybmluZworCitGaXhlcyAtV3Jlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsXSBlcnJvcnMuCitBbHNvIHJlcG9ydGVkIGluIGxhdW5jaHBhZCBoZXJlIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3BiemlwMi8rYnVnLzE3NDYzNjkKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGF1bmNocGFkbGlicmFyaWFuLm5ldC8zNTUyMzAxNTIvcGJ6aXAyLnBhdGNoXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcGJ6aXAyLmNwcCB8IDEyICsrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wYnppcDIuY3BwIGIvcGJ6aXAyLmNwcAoraW5kZXggNjZjYTk3OC4uNDI4N2VhNyAxMDA2NDQKKy0tLSBhL3BiemlwMi5jcHAKKysrKyBiL3BiemlwMi5jcHAKK0BAIC0xMjIwLDcgKzEyMjAsNyBAQCBpbnQgcHJvZHVjZXJfZGVjb21wcmVzcyhpbnQgaEluZmlsZSwgT0ZGX1QgZmlsZVNpemUsIHF1ZXVlICpmaWZvKQorIAkJCS8vIGdpdmUgd2FybmluZyB0byB1c2VyIGlmIGJsb2NrIGlzIGxhcmdlciB0aGFuIDI1MCBtaWxsaW9uIGJ5dGVzCisgCQkJaWYgKGZpbGVEYXRhLT5idWZTaXplID4gMjUwMDAwMDAwKQorIAkJCXsKKy0JCQkJZnByaW50ZihzdGRlcnIsICJwYnppcDI6ICAqV0FSTklORzogQ29tcHJlc3NlZCBibG9jayBzaXplIGlzIGxhcmdlIFslIlBSSXVNQVgiIGJ5dGVzXS5cbiIsCisrCQkJCWZwcmludGYoc3RkZXJyLCAicGJ6aXAyOiAgKldBUk5JTkc6IENvbXByZXNzZWQgYmxvY2sgc2l6ZSBpcyBsYXJnZSBbJSIgUFJJdU1BWCAiIGJ5dGVzXS5cbiIsCisgCQkJCQkJKHVpbnRtYXhfdCkgZmlsZURhdGEtPmJ1ZlNpemUpOworIAkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgICBJZiBwcm9ncmFtIGFib3J0cywgdXNlIHJlZ3VsYXIgQlpJUDIgdG8gZGVjb21wcmVzcy5cbiIpOworIAkJCX0KK0BAIC0xODI5LDcgKzE4MjksNyBAQCB2b2lkICpmaWxlV3JpdGVyKHZvaWQgKm91dG5hbWUpCisgCQorIAlpZiAoUXVpZXRNb2RlICE9IDEpCisgCXsKKy0JCWZwcmludGYoc3RkZXJyLCAiICAgIE91dHB1dCBTaXplOiAlIlBSSXVNQVgiIGJ5dGVzXG4iLCAodWludG1heF90KUNvbXByZXNzZWRTaXplKTsKKysJCWZwcmludGYoc3RkZXJyLCAiICAgIE91dHB1dCBTaXplOiAlIiBQUkl1TUFYICIgYnl0ZXNcbiIsICh1aW50bWF4X3QpQ29tcHJlc3NlZFNpemUpOworIAl9CisgCisgCSNpZmRlZiBQQlpJUF9ERUJVRworQEAgLTIwNzIsNyArMjA3Miw3IEBAIGludCBkaXJlY3Rjb21wcmVzcyhpbnQgaEluZmlsZSwgT0ZGX1QgZmlsZVNpemUsIGludCBibG9ja1NpemUsIGNvbnN0IGNoYXIgKk91dEZpCisgCQljbG9zZShoT3V0ZmlsZSk7CisgCWlmIChRdWlldE1vZGUgIT0gMSkKKyAJeworLQkJZnByaW50ZihzdGRlcnIsICIgICAgT3V0cHV0IFNpemU6ICUiUFJJdU1BWCIgYnl0ZXNcbiIsICh1aW50bWF4X3QpQ29tcHJlc3NlZFNpemUpOworKwkJZnByaW50ZihzdGRlcnIsICIgICAgT3V0cHV0IFNpemU6ICUiIFBSSXVNQVggIiBieXRlc1xuIiwgKHVpbnRtYXhfdClDb21wcmVzc2VkU2l6ZSk7CisgCX0KKyAKKyAJc3luY1NldFByb2R1Y2VyRG9uZSgxKTsgLy8gTm90IHJlYWxseSBuZWVkZWQgZm9yIGRpcmVjdCB2ZXJzaW9uCitAQCAtMjc5NCw3ICsyNzk0LDcgQEAgdm9pZCBvdXRwdXRCdWZmZXJJbml0KHNpemVfdCBzaXplKQorIAkvLyB1bmxpa2VseSB0byBnZXQgaGVyZSBzaW5jZSBtb3JlIGxpa2VseSBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24KKyAJaWYgKE91dHB1dEJ1ZmZlci5zaXplKCkgIT0gc2l6ZSkKKyAJeworLQkJZnByaW50ZihzdGRlcnIsICJwYnppcDI6ICpFUlJPUjogQ291bGQgbm90IGluaXRpYWxpemUgKE91dHB1dEJ1ZmZlcik7IHNpemU9JSJQUkl1TUFYIiEgIEFib3J0aW5nLi4uXG4iLCAodWludG1heF90KXNpemUpOworKwkJZnByaW50ZihzdGRlcnIsICJwYnppcDI6ICpFUlJPUjogQ291bGQgbm90IGluaXRpYWxpemUgKE91dHB1dEJ1ZmZlcik7IHNpemU9JSIgUFJJdU1BWCAiISAgQWJvcnRpbmcuLi5cbiIsICh1aW50bWF4X3Qpc2l6ZSk7CisgCQlzYWZlX211dGV4X3VubG9jayhPdXRNdXRleCk7CisgCQlleGl0KDEpOworIAl9CitAQCAtNDEwMiw3ICs0MTAyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKKyAJCQlpZiAoZGVjb21wcmVzcyA9PSAxKQorIAkJCQlmcHJpbnRmKHN0ZGVyciwgIiBCV1QgQmxvY2sgU2l6ZTogJWMwMGtcbiIsIEJXVGJsb2NrU2l6ZUNoYXIpOworIAkJCWlmIChoYXNJbkZpbGUpCistCQkJCWZwcmludGYoc3RkZXJyLCAiICAgICBJbnB1dCBTaXplOiAlIlBSSXVNQVgiIGJ5dGVzXG4iLCAodWludG1heF90KUluRmlsZVNpemUpOworKwkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgICAgSW5wdXQgU2l6ZTogJSIgUFJJdU1BWCAiIGJ5dGVzXG4iLCAodWludG1heF90KUluRmlsZVNpemUpOworIAkJfQorIAorIAkJaWYgKGRlY29tcHJlc3MgPT0gMSkKK0BAIC00MjI0LDcgKzQyMjQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQorIAkJCXsKKyAJCQkJTnVtQnVmZmVyZWRCbG9ja3NNYXggPSBudW1DUFU7CisgCQkJCWlmIChRdWlldE1vZGUgIT0gMSkKKy0JCQkJCWZwcmludGYoc3RkZXJyLCAiKldhcm5pbmcqIE1heCBtZW1vcnkgbGltaXQgaW5jcmVhc2VkIHRvICUiUFJJdU1BWCIgTUIgdG8gc3VwcG9ydCAlZCBDUFVzXG4iLCAodWludG1heF90KSgoTnVtQnVmZmVyZWRCbG9ja3NNYXggKyAobnVtQ1BVICogMikpICogYmxvY2tTaXplKS8xMDAwMDAwLCBudW1DUFUpOworKwkJCQkJZnByaW50ZihzdGRlcnIsICIqV2FybmluZyogTWF4IG1lbW9yeSBsaW1pdCBpbmNyZWFzZWQgdG8gJSIgUFJJdU1BWCAiIE1CIHRvIHN1cHBvcnQgJWQgQ1BVc1xuIiwgKHVpbnRtYXhfdCkoKE51bUJ1ZmZlcmVkQmxvY2tzTWF4ICsgKG51bUNQVSAqIDIpKSAqIGJsb2NrU2l6ZSkvMTAwMDAwMCwgbnVtQ1BVKTsKKyAJCQl9CisgCQkJZWxzZQorIAkJCXsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKaW5kZXggMDZkMzdhZC4uN2IxYjBhMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKQEAgLTExLDEyICsxMSwxNSBAQAogREVQRU5EUyA9ICJiemlwMiIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgogCi1TUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC8ke0JQTn0vMS4xLyR7UFZ9Lytkb3dubG9hZC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC8ke0JQTn0vMS4xLyR7UFZ9Lytkb3dubG9hZC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wYnppcDItRml4LWludmFsaWQtc3VmZml4LW9uLWxpdGVyYWwtQy0xMS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNGNiODdkYTJkYmEwNTU0MGFmY2UxNjJmMzRiM2E5YTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZkMTNlYWFhMjY2ZjdlZTkxZjg1YzFlYTk3Yzg2ZDljOWNjOTg1OTY5ZGI5MDU5Y2RlYmNiMWUxYjdiZGJlNiIKIAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9jb21wcmVzc2lvbi5jYS9wYnppcDIvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9wYnppcDIvK21pbGVzdG9uZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwYnppcDIgKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCiBFWFRSQV9PRU1BS0UgPSAiQ1hYPScke0NYWH0gJHtDWFhGTEFHU30nIExERkxBR1M9JyR7TERGTEFHU30nIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RjYmViZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgdXNpbmcgYW5kIGJ1aWxkaW5nIFBlcmwgU0FYMiBYTUwgcHJvY2Vzc29ycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtU0FYLyIKLURFU0NSSVBUSU9OID0gIlhNTDo6U0FYIGNvbnNpc3RzIG9mIHNldmVyYWwgZnJhbWV3b3JrIGNsYXNzZXMgZm9yIHVzaW5nIGFuZCBcCi1idWlsZGluZyBQZXJsIFNBWDIgWE1MIHBhcnNlcnMsIGZpbHRlcnMsIGFuZCBkcml2ZXJzLiAgSXQgaXMgZGVzaWduZWQgXCAKLWFyb3VuZCB0aGUgbmVlZCB0byBiZSBhYmxlIHRvICJwbHVnIGluIiBkaWZmZXJlbnQgU0FYIHBhcnNlcnMgdG8gYW4gXAotYXBwbGljYXRpb24gd2l0aG91dCByZXF1aXJpbmcgcHJvZ3JhbW1lciBpbnRlcnZlbnRpb24uICBUaG9zZSBvZiB5b3UgXAotZmFtaWxpYXIgd2l0aCB0aGUgREJJIHdpbGwgYmUgcmlnaHQgYXQgaG9tZS4gIFNvbWUgb2YgdGhlIGRlc2lnbnMgXAotY29tZSBmcm9tIHRoZSBKYXZhIEpBWFAgc3BlY2lmaWNhdGlvbiAoU0FYIHBhcnQpLCBvbmx5IHdpdGhvdXQgdGhlIFwKLWphdmFuZXNzLiIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLURFUEVORFMgKz0gImxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgbGlieG1sLXNheC1iYXNlLXBlcmwgcGVybC1tb2R1bGUtZmlsZS10ZW1wIgotUFIgPSAicjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY1YzRjZDhmMzljMjRjNzEzNWVkNzBkYWNiY2IwOWUzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0cvR1IvR1JBTlRNL1hNTC1TQVgtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjkwZjUzNzVhZTg3ZmRlYmZkYjViYzM4NTQwMTlmMjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJiMDRiOGUzNmI2Y2M0Y2ZjNDg2ZGUyZDg1OWQ4N2FmNTM4NmRkOTMwZjIzODNjNDkzNDcwNTBkNmY1YWQ4NCIKLQotUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgJHtCfS90ZXN0ZmlsZXMgJHtEfSR7UFRFU1RfUEFUSH0KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdGZpbGVzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMS4wMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzEuMDAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQxODMwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzEuMDAuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgdXNpbmcgYW5kIGJ1aWxkaW5nIFBlcmwgU0FYMiBYTUwgcHJvY2Vzc29ycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtU0FYLyIKK0RFU0NSSVBUSU9OID0gIlhNTDo6U0FYIGNvbnNpc3RzIG9mIHNldmVyYWwgZnJhbWV3b3JrIGNsYXNzZXMgZm9yIHVzaW5nIGFuZCBcCitidWlsZGluZyBQZXJsIFNBWDIgWE1MIHBhcnNlcnMsIGZpbHRlcnMsIGFuZCBkcml2ZXJzLiAgSXQgaXMgZGVzaWduZWQgXCAKK2Fyb3VuZCB0aGUgbmVlZCB0byBiZSBhYmxlIHRvICJwbHVnIGluIiBkaWZmZXJlbnQgU0FYIHBhcnNlcnMgdG8gYW4gXAorYXBwbGljYXRpb24gd2l0aG91dCByZXF1aXJpbmcgcHJvZ3JhbW1lciBpbnRlcnZlbnRpb24uICBUaG9zZSBvZiB5b3UgXAorZmFtaWxpYXIgd2l0aCB0aGUgREJJIHdpbGwgYmUgcmlnaHQgYXQgaG9tZS4gIFNvbWUgb2YgdGhlIGRlc2lnbnMgXAorY29tZSBmcm9tIHRoZSBKYXZhIEpBWFAgc3BlY2lmaWNhdGlvbiAoU0FYIHBhcnQpLCBvbmx5IHdpdGhvdXQgdGhlIFwKK2phdmFuZXNzLiIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0RFUEVORFMgKz0gImxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgbGlieG1sLXNheC1iYXNlLXBlcmwgcGVybC1tb2R1bGUtZmlsZS10ZW1wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NWM0Y2Q4ZjM5YzI0YzcxMzVlZDcwZGFjYmNiMDllMyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9HL0dSL0dSQU5UTS9YTUwtU0FYLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjg2MWE0NTRmN2JmMjY5OTkwZWQyYzFjMTI1ZjRkYjQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1ZWE2NTY0ZWY4NjkyMTU1ZDU3YjJkZTA4NjJiNjQ0MmQzYzdlMjlmNGE5YmM5ZWRlNWQ3ZWNkYzc0YzJhZTMiCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtU0FYLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yICR7Qn0vdGVzdGZpbGVzICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RmaWxlcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4ei8wMDAxLWNvbmZpZ3VyZS1EZXRlY3QtaGVhZGVycy1iZWZvcmUtdXNpbmctdGhlbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4ei8wMDAxLWNvbmZpZ3VyZS1EZXRlY3QtaGVhZGVycy1iZWZvcmUtdXNpbmctdGhlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJiYWUyOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovMDAwMS1jb25maWd1cmUtRGV0ZWN0LWhlYWRlcnMtYmVmb3JlLXVzaW5nLXRoZW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGM4NDQ4MGJlOGRmNjk2NmM1MzhkMWZiNjdjY2FlMmY0MmNjNDY0MjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMiBNYXIgMjAxNiAwNzozNjo1NCArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gY29uZmlndXJlOiBEZXRlY3QgaGVhZGVycyBiZWZvcmUgdXNpbmcgdGhlbQotCi1DdXJyZW50IGxvZ2ljIGRvZXMgbm90IHdvcmsgd2hlbiBzeXN0ZW0gZG9lcyBub3QgaGF2ZQotc3lzL2VuZGlhbi5oLCBzaW5jZSBpdCB0cmllZCB0byByZXVzZSB0aGUgY2FjaGVkIHJlc3VsdHMKLWZyb20gZmlyc3QgdHJ5IG9mIGRldGVjdGluZyBodG9sZTY0IGluIHN5cy9lbmRpYW4uaCB3aGljaCBpcwotJ25vJyBhbmQgaGVuY2UgdGhlIHNlY29uZCB0cnkgdG8gbG9vayBpbnRvIGVuZGlhbi5oIGFsc28KLWNvbWVzIG91dCBuZWdhdGl2ZS4KLQotU28gd2UgY2hlY2sgZm9yIGhlYWRlciBhbmQgdGhlbiBydW4gdGhlIHRlc3QgZm9yIHN5bWJvbHMKLWFuZCB0aGVzZSBzeW1ib2xzIGFyZSBub3Qgc3RhbmRhcmQgYW5kIHdlIG5lZWQgdG8gZGVmaW5lIF9HTlVfU09VUkNFCi1mb3IgaXQgdG8gd29yaywgdGhpcyBpc3N1ZSBpcyBleHBvc2VkIGJ5IHN5c3RlbXMgdXNpbmcgbXVzbCBlLmcuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBjb25maWd1cmUuYWMgfCAxMyArKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGNiNTZiYy4uNWUyM2M1MCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjksMTIgKzY5LDE3IEBAIEFDX0ZVTkNfTUFMTE9DCi0gQUNfRlVOQ19SRUFMTE9DCi0gQUNfRlVOQ19TVFJUT0QKLSBBQ19DSEVDS19GVU5DUyhbbWVtY2hyIG1lbW1vdmUgbWVtc2V0IHN0cmVycm9yIHN0cnRvbF0pCi0tQUNfQ0hFQ0tfREVDTFMoW2h0b2xlNjQsIGxlNjR0b2hdLAotLSAgICAgICAgICAgICAgIFtdLAotK0FDX0NIRUNLX0hFQURFUihbc3lzL2VuZGlhbi5oXSwKLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICBBQ19DSEVDS19ERUNMUyhbaHRvbGU2NCwgbGU2NHRvaF0sIFtdLCBbXSwgWyNpbmNsdWRlIDxlbmRpYW4uaD5dKQotKyAgICAgICAgICAgICAgICAgQUNfQ0hFQ0tfREVDTFMoW2h0b2xlNjQsIGxlNjR0b2hdLCBbXSwgW10sIFsjZGVmaW5lIF9HTlVfU09VUkNFIDEgI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD5dKQotICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgWyNpbmNsdWRlIDxzeXMvZW5kaWFuLmg+XSkKLSsgICAgICAgICAgICAgICBbXSwgW10pCi0rCi0rQUNfQ0hFQ0tfSEVBREVSKFtlbmRpYW4uaF0sCi0rICAgICAgICAgICAgICAgWwotKyAgICAgICAgICAgICAgICAgQUNfQ0hFQ0tfREVDTFMoW2h0b2xlNjQsIGxlNjR0b2hdLCBbXSwgW10sIFsjZGVmaW5lIF9HTlVfU09VUkNFIDEgI2luY2x1ZGUgPGVuZGlhbi5oPl0pCi0rICAgICAgICAgICAgICAgXSwKLSsgICAgICAgICAgICAgICBbXSwgW10pCi0gCi0gQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZQotICAgICAgICAgICAgICAgICAgc3JjL01ha2VmaWxlCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6LzAwMDItZW5kaWFuLVVzZS1tYWNyby1ic3dhcF82NC1pbnN0ZWFkLW9mLV9fYnN3YXBfNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovMDAwMi1lbmRpYW4tVXNlLW1hY3JvLWJzd2FwXzY0LWluc3RlYWQtb2YtX19ic3dhcF82NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI2MTU5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovMDAwMi1lbmRpYW4tVXNlLW1hY3JvLWJzd2FwXzY0LWluc3RlYWQtb2YtX19ic3dhcF82NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNWYzYTUzNTk4N2JhZTRjM2UzZDllOTA3OWM3NTI2ZTM5OWY3YWVjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE1hciAyMDE2IDA3OjQyOjM5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBlbmRpYW46IFVzZSBtYWNybyBic3dhcF82NCBpbnN0ZWFkIG9mIF9fYnN3YXBfNjQKLQotYnl0ZXN3YXAuaCBkZWZpbmVzIHRoZW4gYXMgcHVibGljIEFQSXMgb24gYWxsIGxpYmMKLW9uIGxpbnV4IGluY2x1ZGluZyBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0gc3JjL2VuZGlhbi5jIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZW5kaWFuLmMgYi9zcmMvZW5kaWFuLmMKLWluZGV4IGI3NzI0ZjMuLjUxYWVhNTggMTAwNjQ0Ci0tLS0gYS9zcmMvZW5kaWFuLmMKLSsrKyBiL3NyYy9lbmRpYW4uYwotQEAgLTE1LDYgKzE1LDcgQEAgdm9pZCB4bGU2NGVuYyh1aW50OF90ICpkLCB1aW50NjRfdCBuKSB7Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpZmRlZiBfX2xpbnV4X18KLSAJI2luY2x1ZGUgPGVuZGlhbi5oPgotKwkjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjZWxzZQotIAkjaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgotICNlbmRpZgotQEAgLTIzLDcgKzI0LDcgQEAgdm9pZCB4bGU2NGVuYyh1aW50OF90ICpkLCB1aW50NjRfdCBuKSB7Ci0gIyBpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOCi0gIyAgZGVmaW5lIGh0b2xlNjQoeCkgKHgpCi0gIyBlbHNlCi0tIyAgZGVmaW5lIGh0b2xlNjQoeCkgX19ic3dhcF82NCAoeCkKLSsjICBkZWZpbmUgaHRvbGU2NCh4KSBic3dhcF82NCAoeCkKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi1AQCAtMzEsNyArMzIsNyBAQCB2b2lkIHhsZTY0ZW5jKHVpbnQ4X3QgKmQsIHVpbnQ2NF90IG4pIHsKLSAjIGlmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4KLSAjICBkZWZpbmUgbGU2NHRvaCh4KSAoeCkKLSAjIGVsc2UKLS0jICBkZWZpbmUgbGU2NHRvaCh4KSBfX2Jzd2FwXzY0ICh4KQotKyMgIGRlZmluZSBsZTY0dG9oKHgpIGJzd2FwXzY0ICh4KQotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovOTM2ZDgwNjhhZTE5ZDk1MjYwZDMwNThmNDFkZDZjZjcxODEwMWNkNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4ei85MzZkODA2OGFlMTlkOTUyNjBkMzA1OGY0MWRkNmNmNzE4MTAxY2Q2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzQ4OWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4ei85MzZkODA2OGFlMTlkOTUyNjBkMzA1OGY0MWRkNmNmNzE4MTAxY2Q2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSA5MzZkODA2OGFlMTlkOTUyNjBkMzA1OGY0MWRkNmNmNzE4MTAxY2Q2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXN0aWFuIEtyYXVzZSA8a2l6a2l6emJhbmdiYW5nQGdvb2dsZW1haWwuY29tPgotRGF0ZTogU2F0LCAyNiBEZWMgMjAxNSAxNDozNjoxNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBvcHRpb24gdG8gbm90IGJ1aWxkIG1hbiBwYWdlCi0KLWZpeGVzICM1NgotLS0tCi0gY29uZmlndXJlLmFjICAgIHwgMjMgKysrKysrKysrKysrKysrKysrKy0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCAgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotUlAgMjAxNi8wMS8yMgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiNDM3ZTU2Li40Y2I1NmJjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMCwxMyArMjAsMjggQEAgQUNfQ0hFQ0tfRklMRSgKLSAgIFtzcmMvcGl4ei4xXSwKLSAgIFtdLAotICAgWwotLSAgICBBQ19DSEVDS19QUk9HKEEyWCwgYTJ4LCBhMngsIFtdKQotLSAgICBpZiB0ZXN0ICJ4JEEyWCIgPSB4IDsgdGhlbgotLSAgICAgIEFDX01TR19FUlJPUihbQXNjaWlEb2Mgbm90IGZvdW5kLCBub3QgYWJsZSB0byBnZW5lcmF0ZSB0aGUgbWFuIHBhZ2UuXSkKLS0gICAgZmkKLSsgICAgQUNfQVJHX1dJVEgoCi0rICAgICAgW21hbnBhZ2VdLAotKyAgICAgIFsgIC0td2l0aG91dC1tYW5wYWdlICAgICAgIGRvbid0IGJ1aWxkIG1hbiBwYWdlXSwKLSsgICAgICBbY2FzZSAke3dpdGh2YWx9IGluCi0rICAgICAgICB5ZXMpIG1hbnBhZ2U9dHJ1ZSA7OwotKyAgICAgICAgbm8pICBtYW5wYWdlPWZhbHNlIDs7Ci0rICAgICAgICAqKSAgIEFDX01TR19FUlJPUihbYmFkIHZhbHVlICR7d2l0aHZhbH0gZm9yIC0td2l0aC1tYW5wYWdlXSkgOzsKLSsgICAgICBlc2FjXSwKLSsgICAgICBbbWFucGFnZT10cnVlXQotKyAgICApCi0gICBdCi0gKQotIAotK0FNX0NPTkRJVElPTkFMKFtNQU5QQUdFXSwgW3Rlc3QgeCRtYW5wYWdlID0geHRydWVdKQotKwotK2lmIHRlc3QgeCRtYW5wYWdlID0geHRydWUgOyB0aGVuCi0rICBBQ19DSEVDS19QUk9HKEEyWCwgYTJ4LCBhMngsIFtdKQotKyAgaWYgdGVzdCAieCRBMlgiID0geCA7IHRoZW4KLSsgICAgQUNfTVNHX0VSUk9SKFtBc2NpaURvYyBub3QgZm91bmQsIG5vdCBhYmxlIHRvIGdlbmVyYXRlIHRoZSBtYW4gcGFnZS5dKQotKyAgZmkKLStmaQotKwotICMgQ2hlY2tzIGZvciBsaWJyYXJpZXMuCi0gQUNfQ0hFQ0tfTElCKFttXSwgW2NlaWxdKQotIEFYX1BUSFJFQUQKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDYwMGVjOTAuLmI5OGY0NTAgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTE1LDYgKzE1LDcgQEAgcGl4el9TT1VSQ0VTID0gXAotIAlyZWFkLmMgXAotIAl3cml0ZS5jCi0gCi0raWYgTUFOUEFHRQotICMgVE9ETyByZW1vdmUgd2hlbiBwb3NzaWJsZTogVGhpcyBpcyBhIGhhY2sgYmVjYXVzZSBhMnggaXMgbm90IGFibGUgdG8gb3V0cHV0IHRoZSBtYW4gcGFnZXMgdG8gYQotICMgc3BlY2lmaWMgZGlyZWN0b3J5LCBvbmx5IHRvIHdoZXJlIHRoZSBzb3VyY2UgaXMuCi0gcGl4ei4xOiBwaXh6LjEuYXNjaWlkb2MKLUBAIC0yNiwzICsyNyw0IEBAIG1hbl9NQU5TID0gcGl4ei4xCi0gQ0xFQU5GSUxFUyA9IHBpeHouMQotIAotIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKSBwaXh6LjEuYXNjaWlkb2MKLStlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6XzEuMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6XzEuMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDMyNTg2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4el8xLjAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFyYWxsZWwsIGluZGV4ZWQgeHogY29tcHJlc3NvciIKLQotREVQRU5EUyA9ICJ4eiBsaWJhcmNoaXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS92YXNpL3BpeHovcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZkYzU5MDljOWEzMWIxOTJmNjlhYTM5N2FlOGRmNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDJjNTA3NDZiMTM0ZmExYjFhYWU0MWZjYzMxNGQ3YzZmMTkxOWIzZDQ4YmNkZWEwMWJmMTE3NjlmODNmNzJlOCIKLQotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01Y2Y2ZDE2NDA4NjEwNWYxNTEyY2NiODFiZmZmMTkyNiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzkzNmQ4MDY4YWUxOWQ5NTI2MGQzMDU4ZjQxZGQ2Y2Y3MTgxMDFjZDYucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLURldGVjdC1oZWFkZXJzLWJlZm9yZS11c2luZy10aGVtLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWVuZGlhbi1Vc2UtbWFjcm8tYnN3YXBfNjQtaW5zdGVhZC1vZi1fX2Jzd2FwXzY0LnBhdGNoIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdmFzaS9waXh6L3JlbGVhc2VzIgotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLXdpdGgtbWFucGFnZSwgLS13aXRob3V0LW1hbnBhZ2UsIGFzY2lpZG9jLW5hdGl2ZSIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX0dOVV9TT1VSQ0UiCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfZmlsZV9zcmNfcGl4el8xPW5vIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbWFucGFnZXMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHMvMDAwMS1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDgxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDA4MjVkYjk0ZmM5MWZhMjE1MGMwZTY0OWU5MmNjOGRjYzQ0ZjRiMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBBcHIgMjAxOCAxNDowOTo0NSArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBpbmNsdWRlL25scy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ubHMuaCBiL2luY2x1ZGUvbmxzLmgKK2luZGV4IDExNjZiN2IuLmY1YWJlMDUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL25scy5oCisrKysgYi9pbmNsdWRlL25scy5oCitAQCAtNiw3ICs2LDcgQEAKKyAjZGVmaW5lIFBST0NQU19OR19OTFNfSAorIAorIC8qIHByb2dyYW1zIGlzc3VpbmcgdGV4dGRvbWFpbigpIG5lZWQgUEFDS0FHRSBzdHJpbmcgKi8KKy0jaW5jbHVkZSAiLi4vY29uZmlnLmgiCisrI2luY2x1ZGUgImNvbmZpZy5oIgorIAorIC8qIHByb2dyYW1zIGlzc3VpbmcgYmluZHRleHRkb21haW4oKSBhbHNvIG5lZWQgTE9DQUxFRElSIHN0cmluZyAqLworICNpZm5kZWYgTE9DQUxFRElSCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzL0NWRS0yMDE4LTExMjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzL0NWRS0yMDE4LTExMjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNzhmYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy9DVkUtMjAxOC0xMTI0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLUZyb20gYmRkMDU4YTBlNjc2ZDJmMDEzMDI3ZmNmYjJiMzQ0YzMxMzExMmE1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFF1YWx5cyBTZWN1cml0eSBBZHZpc29yeSA8cXNhQHF1YWx5cy5jb20+Ci1EYXRlOiBUaHUsIDEgSmFuIDE5NzAgMDA6MDA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNzQvMTI2XSBwcm9jL3JlYWRwcm9jLmM6IEZpeCBidWdzIGFuZCBvdmVyZmxvd3MgaW4KLSBmaWxlMnN0cnZlYygpLgotCi1Ob3RlOiB0aGlzIGlzIGJ5IGZhciB0aGUgbW9zdCBpbXBvcnRhbnQgYW5kIGNvbXBsZXggcGF0Y2ggb2YgdGhlIHdob2xlCi1zZXJpZXMsIHBsZWFzZSByZXZpZXcgaXQgY2FyZWZ1bGx5OyB0aGFuayB5b3UgdmVyeSBtdWNoIQotCi1Gb3IgdGhpcyBwYXRjaCwgd2UgZGVjaWRlZCB0byBrZWVwIHRoZSBvcmlnaW5hbCBmdW5jdGlvbidzIGRlc2lnbiBhbmQKLXNrZWxldG9uLCB0byBhdm9pZCByZWdyZXNzaW9ucyBhbmQgYmVoYXZpb3IgY2hhbmdlcywgd2hpbGUgZml4aW5nIHRoZQotdmFyaW91cyBidWdzIGFuZCBvdmVyZmxvd3MuIEFuZCBsaWtlIHRoZSAiSGFyZGVuIGZpbGUyc3RyKCkiIHBhdGNoLCB0aGlzCi1wYXRjaCBkb2VzIG5vdCBmYWlsIHdoZW4gYWJvdXQgdG8gb3ZlcmZsb3csIGJ1dCB0cnVuY2F0ZXMgaW5zdGVhZDogdGhlcmUKLWlzIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBhYm91dCB0aGlzIHByb2Nlc3MsIHNvIHJldHVybiBpdCB0byB0aGUgY2FsbGVyOwotYWxzbywgd2UgdXNlZCBJTlRfTUFYIGFzIGEgbGltaXQsIGJ1dCBhIGxvd2VyIGxpbWl0IGNvdWxkIGJlIHVzZWQuCi0KLVRoZSBlYXN5IGNoYW5nZXM6Ci0KLS0gUmVwbGFjZSBzcHJpbnRmKCkgd2l0aCBzbnByaW50ZigpIChhbmQgY2hlY2sgZm9yIHRydW5jYXRpb24pLgotCi0tIFJlcGxhY2UgImlmIChuID09IDAgJiYgcmJ1ZiA9PSAwKSIgd2l0aCAiaWYgKG4gPD0gMCAmJiB0b3QgPD0gMCkiIGFuZAotICBkbyBicmVhayBpbnN0ZWFkIG9mIHJldHVybjogaXQgc2ltcGxpZmllcyB0aGUgY29kZSAob25seSBvbmUgcGxhY2UgdG8KLSAgaGFuZGxlIGVycm9ycyksIGFuZCBhbHNvIGd1YXJhbnRlZXMgdGhhdCBpbiB0aGUgd2hpbGUgbG9vcCBlaXRoZXIgbiBvcgotICB0b3QgaXMgPiAwIChvciBib3RoKSwgZXZlbiBpZiBuIGlzIHJlc2V0IHRvIDAgd2hlbiBhYm91dCB0byBvdmVyZmxvdy4KLQotLSBSZW1vdmUgdGhlICJpZiAobiA8IDApIiBibG9jayBpbiB0aGUgd2hpbGUgbG9vcDogaXQgaXMgKGFuZCB3YXMpIGRlYWQKLSAgY29kZSwgc2luY2Ugd2UgZW50ZXIgdGhlIHdoaWxlIGxvb3Agb25seSBpZiBuID49IDAuCi0KLS0gUmV3cml0ZSB0aGUgbWlzc2luZy1udWxsLXRlcm1pbmF0b3IgZGV0ZWN0aW9uOiBpbiB0aGUgb3JpZ2luYWwKLSAgZnVuY3Rpb24sIGlmIHRoZSBzaXplIG9mIHRoZSBmaWxlIGlzIGEgbXVsdGlwbGUgb2YgMjA0NywgYSBudWxsLQotICB0ZXJtaW5hdG9yIGlzIGFwcGVuZGVkIGV2ZW4gaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBudWxsLXRlcm1pbmF0ZWQuCi0KLS0gUmVwbGFjZSAiaWYgKG4gPD0gMCAmJiAhZW5kX29mX2ZpbGUpIiB3aXRoICJpZiAobiA8IDAgfHwgdG90IDw9IDApIjoKLSAgb3JpZ2luYWxseSwgaXQgd2FzIGVxdWl2YWxlbnQgdG8gImlmIChuIDwgMCkiLCBidXQgd2UgYWRkZWQgInRvdCA8PSAwIgotICB0byBoYW5kbGUgdGhlIGZpcnN0IGJyZWFrIG9mIHRoZSB3aGlsZSBsb29wLCBhbmQgdG8gZ3VhcmFudGVlIHRoYXQgaW4KLSAgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIHRvdCBpcyA+IDAuCi0KLS0gRG91YmxlLWZvcmNlICgiYmVsdCBhbmQgc3VzcGVuZGVycyIpIHRoZSBudWxsLXRlcm1pbmF0aW9uIG9mIHJidWY6Ci0gIHRoaXMgaXMgKGFuZCB3YXMpIGVzc2VudGlhbCB0byB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGZ1bmN0aW9uLgotCi0tIFJlcGxhY2UgdGhlIGZpbmFsICJ3aGlsZSIgbG9vcCB3aXRoIGEgImZvciIgbG9vcCB0aGF0IGJlaGF2ZXMganVzdAotICBsaWtlIHRoZSBwcmVjZWRpbmcgImZvciIgbG9vcDogaW4gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCB0aGlzIHdvdWxkCi0gIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzIChmb3IgZXhhbXBsZSwgaWYgcmJ1ZiBpcyB8XDB8QXxcMHwsIHRoaXMKLSAgd291bGQgcmV0dXJuIHRoZSBhcnJheSB7IiIsTlVMTH0gYnV0IHNob3VsZCByZXR1cm4geyIiLCJBIixOVUxMfTsgYW5kCi0gIGlmIHJidWYgaXMgfEF8XDB8QnwgKHNob3VsZCBuZXZlciBoYXBwZW4gYmVjYXVzZSByYnVmIHNob3VsZCBiZSBudWxsLQotICB0ZXJtaW5hdGVkKSwgdGhpcyB3b3VsZCBtYWtlIHJvb20gZm9yIHR3byBwb2ludGVycyBpbiByZXQsIGJ1dCB3b3VsZAotICB3cml0ZSB0aHJlZSBwb2ludGVycyB0byByZXQpLgotCi1UaGUgaGFyZCBjaGFuZ2VzOgotCi0tIFByZXZlbnQgdGhlIGludGVnZXIgb3ZlcmZsb3cgb2YgdG90IGluIHRoZSB3aGlsZSBsb29wLCBidXQgdW5saWtlCi0gIGZpbGUyc3RyKCksIGZpbGUyc3RydmVjKCkgY2Fubm90IGxldCB0b3QgZ3JvdyB1bnRpbCBpdCBhbG1vc3QgcmVhY2hlcwotICBJTlRfTUFYLCBiZWNhdXNlIGl0IG5lZWRzIG1vcmUgc3BhY2UgZm9yIHRoZSBwb2ludGVyczogdGhpcyBpcyB3aHkgd2UKLSAgaW50cm9kdWNlZCBBUkdfTEVOLCB3aGljaCBhbHNvIGd1YXJhbnRlZXMgdGhhdCB3ZSBjYW4gYWRkICJhbGlnbiIgYW5kCi0gIGEgZmV3IHNpemVvZihjaGFyKilzIHRvIHRvdCB3aXRob3V0IG92ZXJmbG93aW5nLgotCi0tIFByZXZlbnQgdGhlIGludGVnZXIgb3ZlcmZsb3cgb2YgInRvdCArIGMgKyBhbGlnbiI6IHdoZW4gSU5UX01BWCBpcwotICAoYWxtb3N0KSByZWFjaGVkLCB3ZSB3cml0ZSB0aGUgbWF4aW1hbCBzYWZlIGFtb3VudCBvZiBwb2ludGVycyB0byByZXQKLSAgKEFSR19MRU4gZ3VhcmFudGVlcyB0aGF0IHRoZXJlIGlzIGFsd2F5cyBzcGFjZSBmb3IgKnJldCA9IHJidWYgYW5kIHRoZQotICBOVUxMIHRlcm1pbmF0b3IpLgotW2Nhcm5pbDogYmFja3BvcnQgZm9yIDMuMy45OiBBZGQgaW5jbHVkZSBmb3IgbGltaXRzLmggYW5kIHVzZSBvZiBNQVhfSU5UXQotCi1DVkU6IENWRS0yMDE4LTExMjQKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzL2NvbW1pdC8zNmMzNTBmMDdjNzVhYWJmNzQ3ZmI4MzNmNTJhMjM0YWU1NzgxYjIwXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBwcm9jL3JlYWRwcm9jLmMgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtTmF1cnAgcHJvY3BzLW5nLTMuMy4xMl9vcmcvcHJvYy9yZWFkcHJvYy5jIHByb2Nwcy1uZy0zLjMuMTIvcHJvYy9yZWFkcHJvYy5jCi0tLS0gcHJvY3BzLW5nLTMuMy4xMl9vcmcvcHJvYy9yZWFkcHJvYy5jCTIwMTYtMDctMDkgMTQ6NDk6MjUuODI1MzA2ODcyIC0wNzAwCi0rKysgcHJvY3BzLW5nLTMuMy4xMi9wcm9jL3JlYWRwcm9jLmMJMjAxOC0wNy0yNCAwMDo0Njo0OS4zNjYyMDI1MzEgLTA3MDAKLUBAIC0zNyw2ICszNyw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2lmZGVmIFdJVEhfU1lTVEVNRAotICNpbmNsdWRlIDxzeXN0ZW1kL3NkLWxvZ2luLmg+Ci0gI2VuZGlmCi0tLS0gYS9wcm9jL3JlYWRwcm9jLmMKLSsrKyBiL3Byb2MvcmVhZHByb2MuYwotQEAgLTYwMCwxMSArNjAxLDEyIEBAIHN0YXRpYyBpbnQgZmlsZTJzdHIoY29uc3QgY2hhciAqZGlyZWN0b3IKLSAKLSBzdGF0aWMgY2hhcioqIGZpbGUyc3RydmVjKGNvbnN0IGNoYXIqIGRpcmVjdG9yeSwgY29uc3QgY2hhciogd2hhdCkgewotICAgICBjaGFyIGJ1ZlsyMDQ4XTsJLyogcmVhZCBidWYgYnl0ZXMgYXQgYSB0aW1lICovCi0tICAgIGNoYXIgKnAsICpyYnVmID0gMCwgKmVuZGJ1ZiwgKipxLCAqKnJldDsKLSsgICAgY2hhciAqcCwgKnJidWYgPSAwLCAqZW5kYnVmLCAqKnEsICoqcmV0LCAqc3RycDsKLSAgICAgaW50IGZkLCB0b3QgPSAwLCBuLCBjLCBlbmRfb2ZfZmlsZSA9IDA7Ci0gICAgIGludCBhbGlnbjsKLSAKLS0gICAgc3ByaW50ZihidWYsICIlcy8lcyIsIGRpcmVjdG9yeSwgd2hhdCk7Ci0rICAgIGNvbnN0IGludCBsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZiBidWYsICIlcy8lcyIsIGRpcmVjdG9yeSwgd2hhdCk7Ci0rICAgIGlmKGxlbiA8PSAwIHx8IChzaXplX3QpbGVuID49IHNpemVvZiBidWYpIHJldHVybiBOVUxMOwotICAgICBmZCA9IG9wZW4oYnVmLCBPX1JET05MWSwgMCk7Ci0gICAgIGlmKGZkPT0tMSkgcmV0dXJuIE5VTEw7Ci0gCi1AQCAtNjEyLDE4ICs2MTQsMjMgQEAgc3RhdGljIGNoYXIqKiBmaWxlMnN0cnZlYyhjb25zdCBjaGFyKiBkaQotICAgICB3aGlsZSAoKG4gPSByZWFkKGZkLCBidWYsIHNpemVvZiBidWYgLSAxKSkgPj0gMCkgewotIAlpZiAobiA8IChpbnQpKHNpemVvZiBidWYgLSAxKSkKLSAJICAgIGVuZF9vZl9maWxlID0gMTsKLS0JaWYgKG4gPT0gMCAmJiByYnVmID09IDApIHsKLS0JICAgIGNsb3NlKGZkKTsKLS0JICAgIHJldHVybiBOVUxMOwkvKiBwcm9jZXNzIGRpZWQgYmV0d2VlbiBvdXIgb3BlbiBhbmQgcmVhZCAqLwotKwlpZiAobiA8PSAwICYmIHRvdCA8PSAwKSB7IC8qIG5vdGhpbmcgcmVhZCBub3csIG5vdGhpbmcgcmVhZCBiZWZvcmUgKi8KLSsJICAgIGJyZWFrOwkJLyogcHJvY2VzcyBkaWVkIGJldHdlZW4gb3VyIG9wZW4gYW5kIHJlYWQgKi8KLSAJfQotLQlpZiAobiA8IDApIHsKLS0JICAgIGlmIChyYnVmKQotLQkJZnJlZShyYnVmKTsKLS0JICAgIGNsb3NlKGZkKTsKLS0JICAgIHJldHVybiBOVUxMOwkvKiByZWFkIGVycm9yICovCi0rCS8qIEFSR19MRU4gaXMgb3VyIGd1ZXNzdGltYXRlZCBtZWRpYW4gbGVuZ3RoIG9mIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50Ci0rCSAgIG9yIGVudmlyb25tZW50IHZhcmlhYmxlICh0aGUgbWluaW11bSBpcyAxLCB0aGUgbWF4aW11bSBpcyAxMzEwNzIpICovCi0rCSNkZWZpbmUgQVJHX0xFTiA2NAotKwlpZiAodG90ID49IElOVF9NQVggLyAoQVJHX0xFTiArIChpbnQpc2l6ZW9mKGNoYXIqKSkgKiBBUkdfTEVOIC0gbikgewotKwkgICAgZW5kX29mX2ZpbGUgPSAxOyAvKiBpbnRlZ2VyIG92ZXJmbG93OiBudWxsLXRlcm1pbmF0ZSBhbmQgYnJlYWsgKi8KLSsJICAgIG4gPSAwOyAvKiBidXQgdG90ID4gMCAqLwotIAl9Ci0tCWlmIChlbmRfb2ZfZmlsZSAmJiAobiA9PSAwIHx8IGJ1ZltuLTFdKSkvKiBsYXN0IHJlYWQgY2hhciBub3QgbnVsbCAqLwotKwkjdW5kZWYgQVJHX0xFTgotKwlpZiAoZW5kX29mX2ZpbGUgJiYKLSsJICAgICgobiA+IDAgJiYgYnVmW24tMV0gIT0gJ1wwJykgfHwJLyogbGFzdCByZWFkIGNoYXIgbm90IG51bGwgKi8KLSsJICAgICAobiA8PSAwICYmIHJidWZbdG90LTFdICE9ICdcMCcpKSkJLyogbGFzdCByZWFkIGNoYXIgbm90IG51bGwgKi8KLSAJICAgIGJ1ZltuKytdID0gJ1wwJzsJCQkvKiBzbyBhcHBlbmQgbnVsbC10ZXJtaW5hdG9yICovCi0rCi0rCWlmIChuIDw9IDApIGJyZWFrOyAvKiB1bm5lZWRlZCAoZW5kX29mX2ZpbGUgPSAxKSBidXQgYXZvaWQgcmVhbGxvYyAqLwotIAlyYnVmID0geHJlYWxsb2MocmJ1ZiwgdG90ICsgbik7CQkvKiBhbGxvY2F0ZSBtb3JlIG1lbW9yeSAqLwotIAltZW1jcHkocmJ1ZiArIHRvdCwgYnVmLCBuKTsJCS8qIGNvcHkgYnVmZmVyIGludG8gaXQgKi8KLSAJdG90ICs9IG47CQkJCS8qIGluY3JlbWVudCB0b3RhbCBieXRlIGN0ciAqLwotQEAgLTYzMSwyOSArNjM4LDM0IEBAIHN0YXRpYyBjaGFyKiogZmlsZTJzdHJ2ZWMoY29uc3QgY2hhciogZGkKLSAJICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNsb3NlKGZkKTsKLS0gICAgaWYgKG4gPD0gMCAmJiAhZW5kX29mX2ZpbGUpIHsKLSsgICAgaWYgKG4gPCAwIHx8IHRvdCA8PSAwKSB7CS8qIGVycm9yLCBvciBub3RoaW5nIHJlYWQgKi8KLSAJaWYgKHJidWYpIGZyZWUocmJ1Zik7Ci0gCXJldHVybiBOVUxMOwkJLyogcmVhZCBlcnJvciAqLwotICAgICB9Ci0rICAgIHJidWZbdG90LTFdID0gJ1wwJzsgLyogYmVsdCBhbmQgc3VzcGVuZGVycyAodGhlIHdoaWxlIGxvb3AgZGlkIGl0LCB0b28pICovCi0gICAgIGVuZGJ1ZiA9IHJidWYgKyB0b3Q7CQkJLyogY291bnQgc3BhY2UgZm9yIHBvaW50ZXJzICovCi0gICAgIGFsaWduID0gKHNpemVvZihjaGFyKiktMSkgLSAoKHRvdCArIHNpemVvZihjaGFyKiktMSkgJiAoc2l6ZW9mKGNoYXIqKS0xKSk7Ci0tICAgIGZvciAoYyA9IDAsIHAgPSByYnVmOyBwIDwgZW5kYnVmOyBwKyspIHsKLS0JaWYgKCEqcCB8fCAqcCA9PSAnXG4nKQotKyAgICBjID0gc2l6ZW9mKGNoYXIqKTsJCQkJLyogb25lIGV4dHJhIGZvciBOVUxMIHRlcm0gKi8KLSsgICAgZm9yIChwID0gcmJ1ZjsgcCA8IGVuZGJ1ZjsgcCsrKSB7Ci0rCWlmICghKnAgfHwgKnAgPT0gJ1xuJykgewotKwkgICAgaWYgKGMgPj0gSU5UX01BWCAtICh0b3QgKyAoaW50KXNpemVvZihjaGFyKikgKyBhbGlnbikpIGJyZWFrOwotIAkgICAgYyArPSBzaXplb2YoY2hhciopOwotKwl9Ci0gCWlmICgqcCA9PSAnXG4nKQotIAkgICAgKnAgPSAwOwotICAgICB9Ci0tICAgIGMgKz0gc2l6ZW9mKGNoYXIqKTsJCQkJLyogb25lIGV4dHJhIGZvciBOVUxMIHRlcm0gKi8KLSAKLSAgICAgcmJ1ZiA9IHhyZWFsbG9jKHJidWYsIHRvdCArIGMgKyBhbGlnbik7CS8qIG1ha2Ugcm9vbSBmb3IgcHRycyBBVCBFTkQgKi8KLSAgICAgZW5kYnVmID0gcmJ1ZiArIHRvdDsJCQkvKiBhZGRyIGp1c3QgcGFzdCBkYXRhIGJ1ZiAqLwotICAgICBxID0gcmV0ID0gKGNoYXIqKikgKGVuZGJ1ZithbGlnbik7CQkvKiA9PT4gZnJlZSgqcmV0KSB0byBkZWFsbG9jICovCi0tICAgICpxKysgPSBwID0gcmJ1ZjsJCQkJLyogcG9pbnQgcHRycyB0byB0aGUgc3RyaW5ncyAqLwotLSAgICBlbmRidWYtLTsJCQkJCS8qIGRvIG5vdCB0cmF2ZXJzZSBmaW5hbCBOVUwgKi8KLS0gICAgd2hpbGUgKCsrcCA8IGVuZGJ1ZikKLS0gICAgCWlmICghKnApCQkJCS8qIE5VTCBjaGFyIGltcGxpZXMgdGhhdCAqLwotLQkgICAgKnErKyA9IHArMTsJCQkJLyogbmV4dCBzdHJpbmcgLT4gbmV4dCBjaGFyICovCi0tCi0rICAgIGZvciAoc3RycCA9IHAgPSByYnVmOyBwIDwgZW5kYnVmOyBwKyspIHsKLSsJaWYgKCEqcCkgewkJCQkvKiBOVUwgY2hhciBpbXBsaWVzIHRoYXQgKi8KLSsJICAgIGlmIChjIDwgMiAqIChpbnQpc2l6ZW9mKGNoYXIqKSkgYnJlYWs7Ci0rCSAgICBjIC09IHNpemVvZihjaGFyKik7Ci0rCSAgICAqcSsrID0gc3RycDsJCQkvKiBwb2ludCBwdHJzIHRvIHRoZSBzdHJpbmdzICovCi0rCSAgICBzdHJwID0gcCsxOwkJCQkvKiBuZXh0IHN0cmluZyAtPiBuZXh0IGNoYXIgKi8KLSsJfQotKyAgICB9Ci0gICAgICpxID0gMDsJCQkJCS8qIG51bGwgcHRyIGxpc3QgdGVybWluYXRvciAqLwotICAgICByZXR1cm4gcmV0OwotIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMTViMGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBhbmQgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlByb2NwcyBjb250YWlucyBhIHNldCBvZiBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgcHJvdmlkZSBzeXN0ZW0gaW5mb3JtYXRpb24gYWJvdXQgcHJvY2Vzc2VzIHVzaW5nIFwKLXRoZSAvcHJvYyBmaWxlc3lzdGVtLiBUaGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgcHJvZ3JhbXMgcHMsIHRvcCwgdm1zdGF0LCB3LCBraWxsLCBhbmQgc2tpbGwuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNPSJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00Y2Y2NmE0OTg0MTIwMDA3Yzk4ODFjYzg3MWNmNDlkYiBcCi0gICAgICAgICAgICAgICAgICIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9wcm9jcHMtbmcvUHJvZHVjdGlvbi9wcm9jcHMtbmctJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2N0bC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTExMjQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk1N2U0MmU4YjE5MzQ5MGIyMTExMjUyZTRhMmI0NDNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlZDY1YWI4NjMxOGYzNzkwNGU4ZjkwMTQ0MTVhMDk4YmVjNWJjNTM2NTNlNWQ5YWI0MDRmOTVjYTVlMWE3ZDQiCi0KLVMgPSAiJHtXT1JLRElSfS9wcm9jcHMtbmctJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1za2lsbCAtLWRpc2FibGUtbW9kZXJuLXRvcCIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2Vfc2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke3NiaW5kaXJ9LyRpICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGk7IGRvbmUKLSAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgotICAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke3NiaW5kaXJ9Ci0gICAgICAgIGZpCi0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZgotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZAotICAgICAgICAgICAgICAgIGxuIC1zZiAuLi9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZC85OS1zeXNjdGwuY29uZgotICAgICAgICBmaQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKLQotYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUgdyIKLWJhc2VfYmluZGlyX3Byb2dzICs9ICJraWxsIHBpZG9mIHBzIHdhdGNoIgotYmFzZV9zYmluZGlyX3Byb2dzICs9ICJzeXNjdGwiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3BpZG9mXSA9ICIxNTAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke2Jhc2Vfc2JpbmRpcl9wcm9nc30iCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJraWxsLjEgdXB0aW1lLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKLQotICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicpLCBwcm9nKSkKLX0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzU2ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKQEAgLTAsMCArMSw2NiBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gYW5kIHByb2Nlc3MgbW9uaXRvcmluZyB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJQcm9jcHMgY29udGFpbnMgYSBzZXQgb2Ygc3lzdGVtIHV0aWxpdGllcyB0aGF0IHByb3ZpZGUgc3lzdGVtIGluZm9ybWF0aW9uIGFib3V0IHByb2Nlc3NlcyB1c2luZyBcCit0aGUgL3Byb2MgZmlsZXN5c3RlbS4gVGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIHByb2dyYW1zIHBzLCB0b3AsIHZtc3RhdCwgdywga2lsbCwgYW5kIHNraWxsLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAorICAgICAgICAgICAgICAgICAiCisKK0RFUEVORFMgPSAibmN1cnNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcworCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHJvY3BzLW5nL1Byb2R1Y3Rpb24vcHJvY3BzLW5nLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYjA3MTdhN2NiNDc0YjNkNmRmZGVlZGZiYWQyZWNjYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMGJkNzQ0ZmZjYjNkZTJkNTkxZDJmNmFjZjFhNTRhN2JhMDcwZmRjYzQzMmE4NTU5MzFhNTA1NzE0OWYwNDY1IgorCitTID0gIiR7V09SS0RJUn0vcHJvY3BzLW5nLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQorCVsgIiR7c2JpbmRpcn0iICE9ICIke2Jhc2Vfc2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtzYmluZGlyfS8kaSAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpOyBkb25lCisgICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgICAgICAgICBybWRpciAke0R9JHtzYmluZGlyfQorICAgICAgICBmaQorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQKKyAgICAgICAgICAgICAgICBsbiAtc2YgLi4vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQvOTktc3lzY3RsLmNvbmYKKyAgICAgICAgZmkKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYiCisKK2JpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCitiYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKK2Jhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCitBTFRFUk5BVElWRV9QUklPUklUWVtwaWRvZl0gPSAiMTUwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9IgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAia2lsbC4xIHVwdGltZS4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCisKKyAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJykuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKSwgcHJvZykpCit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwN2Y0OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIHBzbWlzYy5pbmMKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuY29tL3BzbWlzYy9wc21pc2MuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVVJTlRQVFJfTUFYLWluc3RlYWQtb2YtX19XT1JEU0laRS5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaMKgXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiNjdiMWRhMjY4ZjRjMGNlNjg1OTk4MGUzZGZjZmFlYzViMjQ0OGU4MCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA3YzlkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIHBzbWlzYy5pbmMKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuY29tL3BzbWlzYy9wc21pc2MuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVVJTlRQVFJfTUFYLWluc3RlYWQtb2YtX19XT1JEU0laRS5wYXRjaCBcCisJICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaMKgXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiYmQ5NTJiMzA2M2YyNDY2ZWNhYjRlYzA5MzAyNmNmMGM0Y2UzNzNjNyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZF9hZGRfb3B0aW9uX3RvX2ZpeF9wb3J0X251bWJlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kX2FkZF9vcHRpb25fdG9fZml4X3BvcnRfbnVtYmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNGI2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZF9hZGRfb3B0aW9uX3RvX2ZpeF9wb3J0X251bWJlci5wYXRjaApAQCAtMCwwICsxLDEzMCBAQAorRnJvbSA3NmY4NTk4ZmQyMDcyNzkwOGU3NjBjYmI0OTdkZDZhMTdlZGE0YWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNyBTZXAgMjAxNCAxMzoyMjoxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBhZGQgb3B0aW9uIHRvIG1ha2UgdXNlcnMgYWJsZSB0byB1c2UgZml4ZWQgcG9ydCBudW1iZXIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvcnBjYmluZC9kaXNjdXNzaW9uLzcxNjgzOS90aHJlYWQvMzJhZjcyMWQvXQorCitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBtYW4vcnBjYmluZC44ICAgICAgfCAgNCArKystCisgc3JjL3JwY2Jfc3ZjX2NvbS5jIHwgMTcgKysrKysrKysrKysrKysrKysKKyBzcmMvcnBjYmluZC5jICAgICAgfCAgOCArKysrKystLQorIDMgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21hbi9ycGNiaW5kLjggYi9tYW4vcnBjYmluZC44CitpbmRleCBhZjYyMDBmLi4yZTYxNDZiIDEwMDY0NAorLS0tIGEvbWFuL3JwY2JpbmQuOAorKysrIGIvbWFuL3JwY2JpbmQuOAorQEAgLTExLDcgKzExLDcgQEAKKyAuTmQgdW5pdmVyc2FsIGFkZHJlc3NlcyB0byBSUEMgcHJvZ3JhbSBudW1iZXIgbWFwcGVyCisgLlNoIFNZTk9QU0lTCisgLk5tCistLk9wIEZsIGFkaGlMbHMKKysuT3AgRmwgYWRocGlMbHMKKyAuU2ggREVTQ1JJUFRJT04KKyBUaGUKKyAuTm0KK0BAIC0xMDcsNiArMTA3LDggQEAgd2lsbCBhdXRvbWF0aWNhbGx5IGFkZAorIGFuZCBpZiBJUHY2IGlzIGVuYWJsZWQsCisgLkxpIDo6MQorIHRvIHRoZSBsaXN0LgorKy5JdCBGbCBwCisrQmluZCBmb3IgZml4ZWQgVURQIHBvcnQgbnVtYmVyCisgLkl0IEZsIGkKKyAuRHEgSW5zZWN1cmUKKyBtb2RlLgorZGlmZiAtLWdpdCBhL3NyYy9ycGNiX3N2Y19jb20uYyBiL3NyYy9ycGNiX3N2Y19jb20uYworaW5kZXggOGFlZjllNS4uYzI2MzJhNCAxMDA2NDQKKy0tLSBhL3NyYy9ycGNiX3N2Y19jb20uYworKysrIGIvc3JjL3JwY2Jfc3ZjX2NvbS5jCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlIDxycGMvcnBjLmg+CisgI2luY2x1ZGUgPHJwYy9ycGNiX3Byb3QuaD4KKyAjaW5jbHVkZSA8cnBjL3N2Y19kZy5oPgorKyNpbmNsdWRlIDxycGMvcnBjX2NvbS5oPgorICNpbmNsdWRlIDxuZXRjb25maWcuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzbG9nLmg+CitAQCAtNDk3LDYgKzQ5OCw3IEBAIHhkcl9vcGFxdWVfcGFybXMoWERSICp4ZHJzLCBzdHJ1Y3Qgcl9ybXRjYWxsX2FyZ3MgKmNhcCkKKyAKKyBzdGF0aWMgc3RydWN0IHJtdGNhbGxmZF9saXN0ICpybXRoZWFkOworIHN0YXRpYyBzdHJ1Y3Qgcm10Y2FsbGZkX2xpc3QgKnJtdHRhaWw7CisrZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGZpeGVkX3BvcnQ7CisgCisgaW50CisgY3JlYXRlX3JtdGNhbGxfZmQoc3RydWN0IG5ldGNvbmZpZyAqbmNvbmYpCitAQCAtNTA0LDYgKzUwNiw4IEBAIGNyZWF0ZV9ybXRjYWxsX2ZkKHN0cnVjdCBuZXRjb25maWcgKm5jb25mKQorIAlpbnQgZmQ7CisgCXN0cnVjdCBybXRjYWxsZmRfbGlzdCAqcm10OworIAlTVkNYUFJUICp4cHJ0OworKwlzdHJ1Y3QgX19ycGNfc29ja2luZm8gc2k7CisrCXN0cnVjdCB0X2JpbmQgdGFkZHI7CisgCisgCWlmICgoZmQgPSBfX3JwY19uY29uZjJmZChuY29uZikpID09IC0xKSB7CisgCQlpZiAoZGVidWdnaW5nKQorQEAgLTUxMiw2ICs1MTYsMTkgQEAgY3JlYXRlX3JtdGNhbGxfZmQoc3RydWN0IG5ldGNvbmZpZyAqbmNvbmYpCisgCQkJbmNvbmYtPm5jX2RldmljZSwgZXJybm8pOworIAkJcmV0dXJuICgtMSk7CisgCX0KKysKKysJaWYgKGZpeGVkX3BvcnQpIHsKKysJCV9fcnBjX2ZkMnNvY2tpbmZvKGZkLCAmc2kpOworKwkJbWVtc2V0KCZ0YWRkciwgMCwgc2l6ZW9mKHRhZGRyKSk7CisrCQl0YWRkci5hZGRyLm1heGxlbiA9IHRhZGRyLmFkZHIubGVuID0gc2kuc2lfYWxlbjsKKysJCXRhZGRyLmFkZHIuYnVmID0gbWFsbG9jKHNpLnNpX2FsZW4pOworKwkJaWYgKHRhZGRyLmFkZHIuYnVmID09IE5VTEwpIHsKKysJCQlyZXR1cm4gLTE7CisrCQl9CisrCQkqKHVuc2lnbmVkIHNob3J0ICopKCYodGFkZHIuYWRkci5idWZbMF0pKSA9IHNpLnNpX2FmOworKwkJKih1bnNpZ25lZCBzaG9ydCAqKSgmKHRhZGRyLmFkZHIuYnVmWzJdKSkgPSBodG9ucyhmaXhlZF9wb3J0KTsKKysJCXhwcnQgPSBzdmNfdGxpX2NyZWF0ZShmZCwgbmNvbmYsICZ0YWRkciwgUlBDX01BWERBVEFTSVpFLCBSUENfTUFYREFUQVNJWkUpOworKwl9IGVsc2UKKyAJeHBydCA9IHN2Y190bGlfY3JlYXRlKGZkLCAwLCAoc3RydWN0IHRfYmluZCAqKSAwLCAwLCAwKTsKKyAJaWYgKHhwcnQgPT0gTlVMTCkgeworIAkJaWYgKGRlYnVnZ2luZykKK2RpZmYgLS1naXQgYS9zcmMvcnBjYmluZC5jIGIvc3JjL3JwY2JpbmQuYworaW5kZXggMTM3MDExYi4uZGMzZDJkNiAxMDA2NDQKKy0tLSBhL3NyYy9ycGNiaW5kLmMKKysrKyBiL3NyYy9ycGNiaW5kLmMKK0BAIC0xMTEsNiArMTExLDcgQEAgaW50IHJ1bmFzZGFlbW9uID0gMDsKKyBpbnQgaW5zZWN1cmUgPSAwOworIGludCBvbGRzdHlsZV9sb2NhbCA9IDA7CisgaW50IHZlcmJvc2Vsb2cgPSAwOworK3Vuc2lnbmVkIHNob3J0IGZpeGVkX3BvcnQgPSAwOworIAorIGNoYXIgKipob3N0cyA9IE5VTEw7CisgaW50IG5ob3N0cyA9IDA7CitAQCAtODY5LDcgKzg3MCw3IEBAIHBhcnNlYXJncyhpbnQgYXJnYywgY2hhciAqYXJndltdKQorIHsKKyAJaW50IGM7CisgCW9sZHN0eWxlX2xvY2FsID0gMTsKKy0Jd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhZGg6aWxzd2YiKSkgIT0gLTEpIHsKKysJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhZGg6cDppbHN3ZiIpKSAhPSAtMSkgeworIAkJc3dpdGNoIChjKSB7CisgCQljYXNlICdhJzoKKyAJCQlkb2Fib3J0ID0gMTsJLyogd2hlbiBkZWJ1Z2dpbmcsIGRvIGFuIGFib3J0IG9uICovCitAQCAtODg3LDYgKzg4OCw5IEBAIHBhcnNlYXJncyhpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCWlmIChob3N0c1tuaG9zdHMgLSAxXSA9PSBOVUxMKQorIAkJCQllcnJ4KDEsICJPdXQgb2YgbWVtb3J5Iik7CisgCQkJYnJlYWs7CisrCQljYXNlICdwJzoKKysJCQlmaXhlZF9wb3J0ID0gYXRvaShvcHRhcmcpOworKwkJCWJyZWFrOworIAkJY2FzZSAnaSc6CisgCQkJaW5zZWN1cmUgPSAxOworIAkJCWJyZWFrOworQEAgLTkwNSw3ICs5MDksNyBAQCBwYXJzZWFyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQlicmVhazsKKyAjZW5kaWYKKyAJCWRlZmF1bHQ6CS8qIGVycm9yICovCistCQkJZnByaW50ZihzdGRlcnIsCSJ1c2FnZTogcnBjYmluZCBbLWFkaGlsc3dmXVxuIik7CisrCQkJZnByaW50ZihzdGRlcnIsCSJ1c2FnZTogcnBjYmluZCBbLWFkaHBpbHN3Zl1cbiIpOworIAkJCWV4aXQgKDEpOworIAkJfQorIAl9CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgppbmRleCBkY2RlZTZjLi4zYzY3NzRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwY2JpbmQtcGFpci1hbGwtc3ZjX2dldGFyZ3MtY2FsbHMtd2l0aC1zdmNfZnJlZWFyZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnBjYmluZF9hZGRfb3B0aW9uX3RvX2ZpeF9wb3J0X251bWJlci5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImNmMTBjZDQxZWQ4MjI4ZmM1NGMzMTYxOTFjMWYwN2ZlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3NGE5YTUzMGRjN2MxMWUwZDkwNWFhNTliY2IwODQ3YzAwOTMxM2YwMmU5OGQzZDc5OGFhOTU2OGY0MTRjNjYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNzdmMtcHJvdG8vcnBjc3ZjLXByb3RvLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjc3ZjLXByb3RvL3JwY3N2Yy1wcm90by5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjViMjg4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjc3ZjLXByb3RvL3JwY3N2Yy1wcm90by5iYgpAQCAtMCwwICsxLDM3IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gInJwY3N2YyBwcm90b2NvbCBkZWZpbml0aW9ucyBmcm9tIGdsaWJjIgorCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgcnBjc3ZjIHByb3RvLnggZmlsZXMgZnJvbSBnbGliYywgd2hpY2ggYXJlXAorbWlzc2luZyBpbiBsaWJ0aXJwYy4gQWRkaXRpb25hbCBpdCBjb250YWlucyBycGNnZW4sIHdoaWNoIGlzIG5lZWRlZFwKK3RvIGNyZWF0ZSBoZWFkZXIgZmlsZXMgYW5kIHNvdXJjZXMgZnJvbSBwcm90b2NvbCBmaWxlcy5cCitUaGlzIHBhY2thZ2UgaXMgb25seSBuZWVkZWQsIGlmIGdsaWJjIGlzIGluc3RhbGxlZCB3aXRob3V0IHRoZVwKK2RlcHJlY2F0ZWQgc3VucnBjIGZ1bmN0aW9uYWxpdHkgYW5kIGxpYnRpcnBjIHNob3VsZCByZXBsYWNlIGl0LiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Roa3VrdWsvcnBjc3ZjLXByb3RvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZGFhZjk1OGQ1NTMxYWI4NjE2OWVjNmUyNzVlMTUxNyIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgKz0gInJwY3N2Yy1wcm90by1uYXRpdmUiCisKK1BWID0gIjEuNCtnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjliYzNiNWI3ODU3MjNjZmZmNDU5YjBjMDFiMzlkODdkNGJlZDk3NWMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90aGt1a3VrLyR7QlBOfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1jcm9zcy1jb21waWxlZC1ycGNnZW4ucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIgLUMgcnBjZ2VuIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFRoZXkgY29tZSBmcm9tIHF1b3RhIHJlY2lwZQorCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ycGNzdmMvcnF1b3RhLltoeF0KK30KKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY3N2Yy1wcm90by9ycGNzdmMtcHJvdG8vMDAwMS1Vc2UtY3Jvc3MtY29tcGlsZWQtcnBjZ2VuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjc3ZjLXByb3RvL3JwY3N2Yy1wcm90by8wMDAxLVVzZS1jcm9zcy1jb21waWxlZC1ycGNnZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA4OTc0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY3N2Yy1wcm90by9ycGNzdmMtcHJvdG8vMDAwMS1Vc2UtY3Jvc3MtY29tcGlsZWQtcnBjZ2VuLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Zyb20gZGU5MzQ1MjA3YmViNzFlNGQ1YjZiNDBiNTJjYWM0ZWJkMmUzODU4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI3IEFwciAyMDE4IDIzOjIzOjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBjcm9zcyBjb21waWxlZCBycGNnZW4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHJwY3N2Yy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGdpdC9ycGNzdmMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9ycGNzdmMvTWFrZWZpbGUuYW0KKysrKyBnaXQvcnBjc3ZjL01ha2VmaWxlLmFtCitAQCAtMTIsNSArMTIsNSBAQCBub2Rpc3RfcnBjc3ZjX0hFQURFUlMgPSBrbG1fcHJvdC5oIG5sbV9wCisgCW5mc19wcm90LmggcnF1b3RhLmggc21faW50ZXIuaAorIAorICUuaDogJS54CistCSQodG9wX2J1aWxkZGlyKS9ycGNnZW4vcnBjZ2VuIC1oIC1vICRAICQ8CisrCXJwY2dlbiAtaCAtbyAkQCAkPAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjIuYmIKaW5kZXggN2EzM2MzMS4uMzc1ZGNlOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKIAotREVQRU5EUyA9ICJuY3Vyc2VzIFwKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2NyeXB0IFwKICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoCmluZGV4IGE2ZjYwNGIuLmFhYzJkNDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2gKQEAgLTExLDYgKzExLDcgQEAKIAogU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIC0tLQogIHNyYy9ncm91cGFkZC5jICB8IDMgKysrCiAgc3JjL2dyb3VwZGVsLmMgIHwgMyArKysKQEAgLTIyLDcgKzIzLDcgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKLWluZGV4IDM5YjRlYzAuLmY3MTZmNTcgMTAwNjQ0CitpbmRleCA2M2UxYzQ4Li5hNTk2YzQ5IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwYWRkLmMKICsrKyBiL3NyYy9ncm91cGFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMzYsNyArMzcsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBkZWwuYyBiL3NyYy9ncm91cGRlbC5jCi1pbmRleCBkYTk5MzQ3Li40NmE2NzljIDEwMDY0NAoraW5kZXggNzBiZWQwMS4uYWJhYmQ4MSAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGRlbC5jCiArKysgYi9zcmMvZ3JvdXBkZWwuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTUwLDcgKzUxLDcgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8Z3JwLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwbWVtcy5jIGIvc3JjL2dyb3VwbWVtcy5jCi1pbmRleCBlNGYxMDdmLi45NWNiMDczIDEwMDY0NAoraW5kZXggZmM5MWM4Yi4uMjg0MjUxNCAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cG1lbXMuYwogKysrIGIvc3JjL2dyb3VwbWVtcy5jCiBAQCAtMzIsNiArMzIsOSBAQApAQCAtNjQsNyArNjUsNyBAQAogICNpbmNsdWRlIDxnZXRvcHQuaD4KICAjaW5jbHVkZSA8Z3JwLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwbW9kLmMgYi9zcmMvZ3JvdXBtb2QuYwotaW5kZXggZDlkMzgwNy4uNjIyOTczNyAxMDA2NDQKK2luZGV4IDcyZGFmMmMuLjg5NjVmOWQgMTAwNjQ0CiAtLS0gYS9zcmMvZ3JvdXBtb2QuYwogKysrIGIvc3JjL2dyb3VwbW9kLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC03OCw3ICs3OSw3IEBACiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgPGdldG9wdC5oPgogZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBlMWViZjUwLi4yNTY3OWQ4IDEwMDY0NAoraW5kZXggM2FhZjQ1Yy4uMWFiOTE3NCAxMDA2NDQKIC0tLSBhL3NyYy91c2VyYWRkLmMKICsrKyBiL3NyYy91c2VyYWRkLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC05Miw3ICs5Myw3IEBACiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3VzZXJkZWwuYyBiL3NyYy91c2VyZGVsLmMKLWluZGV4IDE5YjEyYmMuLmEwODM5MjkgMTAwNjQ0CitpbmRleCBjOGRlMWQzLi4yNGQzZWE5IDEwMDY0NAogLS0tIGEvc3JjL3VzZXJkZWwuYwogKysrIGIvc3JjL3VzZXJkZWwuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTEwMiwxMSArMTAzLDExIEBACiArLyogRGlzYWJsZSB1c2Ugb2Ygc3lzbG9nIHNpbmNlIHdlJ3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kIGFnYWluc3QgYSBzeXNyb290ICovCiArI3VuZGVmIFVTRV9TWVNMT0cKICsKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdldG9wdC5oPgogZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCi1pbmRleCA2ODViNTBhLi4yOGU1Y2ZjIDEwMDY0NAoraW5kZXggY2NmYmI5OS4uMjRmYjYwZCAxMDA2NDQKIC0tLSBhL3NyYy91c2VybW9kLmMKICsrKyBiL3NyYy91c2VybW9kLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC0xMTYsOSArMTE3LDkgQEAKICsvKiBEaXNhYmxlIHVzZSBvZiBzeXNsb2cgc2luY2Ugd2UncmUgcnVubmluZyB0aGlzIGNvbW1hbmQgYWdhaW5zdCBhIHN5c3Jvb3QgKi8KICsjdW5kZWYgVVNFX1NZU0xPRwogKworICNpbmNsdWRlIDxhc3NlcnQuaD4KICAjaW5jbHVkZSA8Y3R5cGUuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KIC0tIAotMi4xLjAKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1Eby1ub3QtcmVhZC1sb2dpbi5kZWZzLWJlZm9yZS1kb2luZy1jaHJvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1Eby1ub3QtcmVhZC1sb2dpbi5kZWZzLWJlZm9yZS1kb2luZy1jaHJvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGI5NWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRG8tbm90LXJlYWQtbG9naW4uZGVmcy1iZWZvcmUtZG9pbmctY2hyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAxNzBjMjVjOGUwYjVjM2RjMjYxNWQxZGI5NGM4ZDI0YTEzZmY5OWJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+Ci1EYXRlOiBUaHUsIDExIFNlcCAyMDE0IDE1OjExOjIzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCByZWFkIGxvZ2luLmRlZnMgYmVmb3JlIGRvaW5nIGNocm9vdCgpCi0KLUlmICJ1c2VyYWRkIC0tcm9vdCA8cm9vdD4gLi4uIiB3YXMgdXNlZCwgdGhlIGxvZ2luLmRlZnMgZmlsZSB3b3VsZCBzdGlsbAotYmUgcmVhZCBmcm9tIC9ldGMvbG9naW4uZGVmcyBpbnN0ZWFkIG9mIDxyb290Pi9ldGMvbG9naW4uZGVmcy4gVGhpcyB3YXMKLWR1ZSB0byBnZXRkZWZfdWxvbmcoKSBiZWluZyBjYWxsZWQgYmVmb3JlIHByb2Nlc3Nfcm9vdF9mbGFnKCkuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmcvcGlwZXJtYWlsL3BrZy1zaGFkb3ctZGV2ZWwvMjAxNC1TZXB0ZW1iZXIvMDEwNDQ2Lmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgotLS0tCi0gc3JjL3VzZXJhZGQuYyB8IDggKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IGE4YTFmNzYuLmUxZWJmNTAgMTAwNjQ0Ci0tLS0gYS9zcmMvdXNlcmFkZC5jCi0rKysgYi9zcmMvdXNlcmFkZC5jCi1AQCAtMTk5Myw5ICsxOTkzLDExIEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gI2VuZGlmCQkJCS8qIFVTRV9QQU0gKi8KLSAjZW5kaWYJCQkJLyogQUNDVF9UT09MU19TRVRVSUQgKi8KLSAKLSsjaWZkZWYgRU5BQkxFX1NVQklEUwotIAkvKiBOZWVkZWQgZm9yIHVzZXJucyBjaGVjayAqLwotLQl1aWRfdCB1aWRfbWluID0gKHVpZF90KSBnZXRkZWZfdWxvbmcgKCJVSURfTUlOIiwgMTAwMFVMKTsKLS0JdWlkX3QgdWlkX21heCA9ICh1aWRfdCkgZ2V0ZGVmX3Vsb25nICgiVUlEX01BWCIsIDYwMDAwVUwpOwotKwl1aWRfdCB1aWRfbWluOwotKwl1aWRfdCB1aWRfbWF4OwotKyNlbmRpZgotIAotIAkvKgotIAkgKiBHZXQgbXkgbmFtZSBzbyB0aGF0IEkgY2FuIHVzZSBpdCB0byByZXBvcnQgZXJyb3JzLgotQEAgLTIwMjYsNiArMjAyOCw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWlzX3NoYWRvd19ncnAgPSBzZ3JfZmlsZV9wcmVzZW50ICgpOwotICNlbmRpZgotICNpZmRlZiBFTkFCTEVfU1VCSURTCi0rCXVpZF9taW4gPSAodWlkX3QpIGdldGRlZl91bG9uZyAoIlVJRF9NSU4iLCAxMDAwVUwpOwotKwl1aWRfbWF4ID0gKHVpZF90KSBnZXRkZWZfdWxvbmcgKCJVSURfTUFYIiwgNjAwMDBVTCk7Ci0gCWlzX3N1Yl91aWQgPSBzdWJfdWlkX2ZpbGVfcHJlc2VudCAoKSAmJiAhcmZsZyAmJgotIAkgICAgKCF1c2VyX2lkIHx8ICh1c2VyX2lkIDw9IHVpZF9tYXggJiYgdXNlcl9pZCA+PSB1aWRfbWluKSk7Ci0gCWlzX3N1Yl9naWQgPSBzdWJfZ2lkX2ZpbGVfcHJlc2VudCAoKSAmJiAhcmZsZyAmJgotLS0gCi0xLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1zaGFkb3ctQ1ZFLTIwMTctMTI0MjQgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1zaGFkb3ctQ1ZFLTIwMTctMTI0MjQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkM2UxZTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA5NTRlM2QyZTcxMTNlOWFjMDY2MzJhZWUzYzY5YjhkODE4Y2M4OTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+Ci1EYXRlOiBGcmksIDMxIE1hciAyMDE3IDE2OjI1OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWZmZXIgb3ZlcmZsb3cgaWYgTlVMTCBsaW5lIGlzIHByZXNlbnQgaW4gZGIuCi0KLUlmIHB0ci0+bGluZSA9PSBOVUxMIGZvciBhbiBlbnRyeSwgdGhlIGZpcnN0IGN5Y2xlIHdpbGwgZXhpdCwKLWJ1dCB0aGUgc2Vjb25kIG9uZSB3aWxsIGhhcHBpbHkgd3JpdGUgcGFzdCBlbnRyaWVzIGJ1ZmZlci4KLVdlIGFjdHVhbGx5IGRvIG5vdCB3YW50IHRvIGV4aXQgdGhlIGZpcnN0IGN5Y2xlIHByZW1hdHVyZWx5Ci1vbiBwdHItPmxpbmUgPT0gTlVMTC4KLVNpZ25lZC1vZmYtYnk6IFRvbWFzIE1yYXogPHRtcmF6QGZlZG9yYXByb2plY3Qub3JnPgotCi1DVkU6IENWRS0yMDE3LTEyNDI0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvY29tbW9uaW8uYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2NvbW1vbmlvLmMgYi9saWIvY29tbW9uaW8uYwotaW5kZXggYjEwZGEwNi4uMzFlZGJhYSAxMDA2NDQKLS0tLSBhL2xpYi9jb21tb25pby5jCi0rKysgYi9saWIvY29tbW9uaW8uYwotQEAgLTc1MSwxNiArNzUxLDE2IEBAIGNvbW1vbmlvX3NvcnQgKHN0cnVjdCBjb21tb25pb19kYiAqZGIsIGludCAoKmNtcCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkKLSAJZm9yIChwdHIgPSBkYi0+aGVhZDsKLSAJICAgICAgICAoTlVMTCAhPSBwdHIpCi0gI2lmIEtFRVBfTklTX0FUX0VORAotLQkgICAgICYmIChOVUxMICE9IHB0ci0+bGluZSkKLS0JICAgICAmJiAoICAgKCcrJyAhPSBwdHItPmxpbmVbMF0pCi0tCSAgICAgICAgICYmICgnLScgIT0gcHRyLT5saW5lWzBdKSkKLSsJICAgICAmJiAoKE5VTEwgPT0gcHRyLT5saW5lKQotKwkgICAgICAgICB8fCAoKCcrJyAhPSBwdHItPmxpbmVbMF0pCi0rCSAgICAgICAgICAgICAmJiAoJy0nICE9IHB0ci0+bGluZVswXSkpKQotICNlbmRpZgotIAkgICAgIDsKLSAJICAgICBwdHIgPSBwdHItPm5leHQpIHsKLSAJCW4rKzsKLSAJfQotICNpZiBLRUVQX05JU19BVF9FTkQKLS0JaWYgKChOVUxMICE9IHB0cikgJiYgKE5VTEwgIT0gcHRyLT5saW5lKSkgewotKwlpZiAoTlVMTCAhPSBwdHIpIHsKLSAJCW5pcyA9IHB0cjsKLSAJfQotICNlbmRpZgotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLWNvcHktZXh0ZW5kZWQtYXR0cmlidXRlcy1vZi1ob21lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC1jb3B5LWV4dGVuZGVkLWF0dHJpYnV0ZXMtb2YtaG9tZS5wYXRjaAppbmRleCA2MGE0NmUxLi40NzRiM2EyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLWNvcHktZXh0ZW5kZWQtYXR0cmlidXRlcy1vZi1ob21lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQtY29weS1leHRlbmRlZC1hdHRyaWJ1dGVzLW9mLWhvbWUucGF0Y2gKQEAgLTEsNDcgKzEsNDEgQEAKLUZyb20gYWNlYzkzNTQwZWJhNjg5OTY2MWM2MDc0MDg0OThhYzcyYWIwN2E0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9Kb3M9QzM9QTk9MjBCb2xsbz89IDxqb3NlLmJvbGxvQGlvdC5iemg+Ci1EYXRlOiBUdWUsIDcgTWFyIDIwMTcgMTY6MDM6MDMgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gdXNlcmFkZDogY29weSBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIGhvbWUKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAogVGhlIEhvbWUgZGlyZWN0b3J5IHdhc24ndCBnZXR0aW5nIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzCiBvZiAvZXRjL3NrZWwuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCBpc3N1ZSBhbmQgYWRkcyB0aGUgY29weQogb2YgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2YgdGhlIHJvb3Qgb2YgdGhlIGhvbWUgZGlyZWN0b3J5LgogCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmFsaW90aC5kZWJpYW4ub3JnL3BpcGVybWFpbC9wa2ctc2hhZG93LWNvbW1pdHMvMjAxNy1NYXJjaC8wMDM4MDQuaHRtbF0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1DaGFuZ2UtSWQ6IEljZDYzM2Y3YzZjNDk0ZWZkMmEzMGNiOGYwNGMzMDZmNzQ5YWQwYzNiCiBTaWduZWQtb2ZmLWJ5OiBKb3PDqSBCb2xsbyA8am9zZS5ib2xsb0Bpb3QuYnpoPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL3VzZXJhZGQuYyB8IDYgKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IGE4YTFmNzYuLjhhZWZiOWMgMTAwNjQ0CitpbmRleCBlNzIxZTUyLi5jNzRlNDkxIDEwMDY0NAogLS0tIGEvc3JjL3VzZXJhZGQuYwogKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTUyLDYgKzUyLDkgQEAKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitAQCAtNTQsNiArNTQsOSBAQAorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgogICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgogKyNpZmRlZiBXSVRIX0FUVFIKICsjaW5jbHVkZSA8YXR0ci9saWJhdHRyLmg+CiArI2VuZGlmCiAgI2luY2x1ZGUgImNoa25hbWUuaCIKICAjaW5jbHVkZSAiZGVmaW5lcy5oIgogICNpbmNsdWRlICJmYWlsbG9nLmgiCi1AQCAtMTkxNSw2ICsxOTE4LDkgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2hvbWUgKHZvaWQpCi0gCQljaG93biAodXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7Ci0gCQljaG1vZCAodXNlcl9ob21lLAorQEAgLTIwNDIsNiArMjA0NSw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQorIAkJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7CisgCQljaG1vZCAocHJlZml4X3VzZXJfaG9tZSwKICAJCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7CiArI2lmZGVmIFdJVEhfQVRUUgotKwkJYXR0cl9jb3B5X2ZpbGUgKGRlZl90ZW1wbGF0ZSwgdXNlcl9ob21lLCBOVUxMLCBOVUxMKTsKKysJICAgICAgICAgICAgICAgYXR0cl9jb3B5X2ZpbGUgKGRlZl90ZW1wbGF0ZSwgdXNlcl9ob21lLCBOVUxMLCBOVUxMKTsKICsjZW5kaWYKICAJCWhvbWVfYWRkZWQgPSB0cnVlOwogICNpZmRlZiBXSVRIX0FVRElUCiAgCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAogLS0gCi0yLjkuMworMi4xMS4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKaW5kZXggMmYwODRiNC4uNzAyNDEzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKQEAgLTEsMTcgKzEsMTcgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTdWJqZWN0OiBbUEFUQ0hdIHVzZXJhZGQuYzogY3JlYXRlIHBhcmVudCBkaXJlY3RvcmllcyB3aGVuIG5lY2Vzc2FyeQogCi1TdWJqZWN0OiB1c2VyYWRkLmM6IGNyZWF0ZSBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWNlc3NhcnkKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIC0tLQotIHNyYy91c2VyYWRkLmMgfCAgIDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKyBzcmMvdXNlcmFkZC5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYwotaW5kZXggNGJkOTY5ZC4uY2I1ZGQ2YyAxMDA2NDQKK2luZGV4IDcyMTRlNzIuLjNhYWY0NWMgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcmFkZC5jCiArKysgYi9zcmMvdXNlcmFkZC5jCi1AQCAtMTg5Niw2ICsxODk2LDM1IEBAIHN0YXRpYyB2b2lkIHVzcl91cGRhdGUgKHZvaWQpCitAQCAtMjAyMSw2ICsyMDIxLDM1IEBAIHN0YXRpYyB2b2lkIHVzcl91cGRhdGUgKHZvaWQpCiAgfQogIAogIC8qCkBAIC00Nyw2MyArNDcsNjggQEAKICAgKiBjcmVhdGVfaG9tZSAtIGNyZWF0ZSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5CiAgICoKICAgKgljcmVhdGVfaG9tZSgpIGNyZWF0ZXMgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdAotQEAgLTE5MTAsMzkgKzE5MzksMzYgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2hvbWUgKHZvaWQpCitAQCAtMjAzOCw0MiArMjA2NywzOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaG9tZSAodm9pZCkKICAJCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7CiAgCQl9CiAgI2VuZGlmCiAtCQkvKiBYWFggLSBjcmVhdGUgbWlzc2luZyBwYXJlbnQgZGlyZWN0b3JpZXMuICAtLW1hcmVrbSAqLwotLQkJaWYgKG1rZGlyICh1c2VyX2hvbWUsIDApICE9IDApIHsKKy0JCWlmIChta2RpciAocHJlZml4X3VzZXJfaG9tZSwgMCkgIT0gMCkgewogLQkJCWZwcmludGYgKHN0ZGVyciwKIC0JCQkgICAgICAgICBfKCIlczogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJXNcbiIpLAotLQkJCSAgICAgICAgIFByb2csIHVzZXJfaG9tZSk7Ci0tI2lmZGVmIFdJVEhfQVVESVQKKy0JCQkgICAgICAgICBQcm9nLCBwcmVmaXhfdXNlcl9ob21lKTsKKysJCW1rZGlyX3AodXNlcl9ob21lKTsKKysJfQorKwlpZiAoYWNjZXNzIChwcmVmaXhfdXNlcl9ob21lLCBGX09LKSAhPSAwKSB7CisgI2lmZGVmIFdJVEhfQVVESVQKIC0JCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAogLQkJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCiAtCQkJICAgICAgICAgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCiAtCQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0tI2VuZGlmCi0tCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOwotLQkJfQotLQkJY2hvd24gKHVzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOwotLQkJY2htb2QgKHVzZXJfaG9tZSwKLS0JCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0tI2lmZGVmIFdJVEhfQVRUUgotLQkJYXR0cl9jb3B5X2ZpbGUgKGRlZl90ZW1wbGF0ZSwgdXNlcl9ob21lLCBOVUxMLCBOVUxMKTsKLS0jZW5kaWYKLS0JCWhvbWVfYWRkZWQgPSB0cnVlOwotKwkJbWtkaXJfcCh1c2VyX2hvbWUpOwotKwl9Ci0rCWlmIChhY2Nlc3MgKHVzZXJfaG9tZSwgRl9PSykgIT0gMCkgewotICNpZmRlZiBXSVRIX0FVRElUCi0gCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotIAkJICAgICAgICAgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLSAJCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAotLQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7Ci0rCQkgICAgICAgICAgICAgIFNIQURPV19BVURJVF9GQUlMVVJFKTsKKysJCWF1ZGl0X2xvZ2dlciAoQVVESVRfQUREX1VTRVIsIFByb2csCisrCQkJICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCisrCQkJICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAorKwkJCSAgICAgIFNIQURPV19BVURJVF9GQUlMVVJFKTsKICAjZW5kaWYKLS0jaWZkZWYgV0lUSF9TRUxJTlVYCi0tCQkvKiBSZXNldCBTRUxpbnV4IHRvIGNyZWF0ZSBmaWxlcyB3aXRoIGRlZmF1bHQgY29udGV4dHMgKi8KLS0JCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7CiAtCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOwogLQkJfQorLQkJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7CistCQljaG1vZCAocHJlZml4X3VzZXJfaG9tZSwKKy0JCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7CiArCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7CiArCX0KLSsJY2hvd24gKHVzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOwotKwljaG1vZCAodXNlcl9ob21lLAorKwkodm9pZCkgY2hvd24gKHByZWZpeF91c2VyX2hvbWUsIHVzZXJfaWQsIHVzZXJfZ2lkKTsKKysJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCiArCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0rI2lmZGVmIFdJVEhfQVRUUgorICNpZmRlZiBXSVRIX0FUVFIKKy0JICAgICAgICAgICAgICAgYXR0cl9jb3B5X2ZpbGUgKGRlZl90ZW1wbGF0ZSwgdXNlcl9ob21lLCBOVUxMLCBOVUxMKTsKICsJYXR0cl9jb3B5X2ZpbGUgKGRlZl90ZW1wbGF0ZSwgdXNlcl9ob21lLCBOVUxMLCBOVUxMKTsKLSsjZW5kaWYKKyAjZW5kaWYKKy0JCWhvbWVfYWRkZWQgPSB0cnVlOwogKwlob21lX2FkZGVkID0gdHJ1ZTsKLSsjaWZkZWYgV0lUSF9BVURJVAorICNpZmRlZiBXSVRIX0FVRElUCistCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAorLQkJICAgICAgICAgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKKy0JCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAorLQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7CiArCWF1ZGl0X2xvZ2dlciAoQVVESVRfQUREX1VTRVIsIFByb2csCiArCQkgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKICsJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKICsJCSAgICAgIFNIQURPV19BVURJVF9TVUNDRVNTKTsKICAjZW5kaWYKLSsjaWZkZWYgV0lUSF9TRUxJTlVYCisgI2lmZGVmIFdJVEhfU0VMSU5VWAorLQkJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCistCQlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgeworLQkJCWZwcmludGYgKHN0ZGVyciwKKy0JCQkgICAgICAgICBfKCIlczogY2Fubm90IHJlc2V0IFNFTGludXggZmlsZSBjcmVhdGlvbiBjb250ZXh0XG4iKSwKKy0JCQkgICAgICAgICBQcm9nKTsKKy0JCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7CistCQl9CistI2VuZGlmCiArCS8qIFJlc2V0IFNFTGludXggdG8gY3JlYXRlIGZpbGVzIHdpdGggZGVmYXVsdCBjb250ZXh0cyAqLwogKwlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgeworKwkJZnByaW50ZiAoc3RkZXJyLAorKwkJCSBfKCIlczogY2Fubm90IHJlc2V0IFNFTGludXggZmlsZSBjcmVhdGlvbiBjb250ZXh0XG4iKSwKKysJCQkgUHJvZyk7CiArCQlmYWlsX2V4aXQgKEVfSE9NRURJUik7CiAgCX0KICsjZW5kaWYKQEAgLTExMSw1ICsxMTYsNSBAQAogIAogIC8qCiAtLSAKLTEuNy45LjUKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvQ1ZFLTIwMTctMjYxNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9DVkUtMjAxNy0yNjE2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTcyOGYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9DVkUtMjAxNy0yNjE2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotc2hhZG93LTQuMi4xOiBGaXggQ1ZFLTIwMTctMjYxNgotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9ODU1OTQzCi0KLXN1OiBwcm9wZXJseSBjbGVhciBjaGlsZCBQSUQKLQotSWYgc3UgaXMgY29tcGlsZWQgd2l0aCBQQU0gc3VwcG9ydCwgaXQgaXMgcG9zc2libGUgZm9yIGFueSBsb2NhbCB1c2VyCi10byBzZW5kIFNJR0tJTEwgdG8gb3RoZXIgcHJvY2Vzc2VzIHdpdGggcm9vdCBwcml2aWxlZ2VzLiBUaGVyZSBhcmUKLW9ubHkgdHdvIGNvbmRpdGlvbnMuIEZpcnN0LCB0aGUgdXNlciBtdXN0IGJlIGFibGUgdG8gcGVyZm9ybSBzdSB3aXRoCi1hIHN1Y2Nlc3NmdWwgbG9naW4uIFRoaXMgZG9lcyBOT1QgaGF2ZSB0byBiZSB0aGUgcm9vdCB1c2VyLCBldmVuIHVzaW5nCi1zdSB3aXRoIHRoZSBzYW1lIGlkIGlzIGVub3VnaCwgZS5nLiAic3UgJCh3aG9hbWkpIi4gU2Vjb25kLCBTSUdLSUxMCi1jYW4gb25seSBiZSBzZW50IHRvIHByb2Nlc3NlcyB3aGljaCB3ZXJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBzdSBwcm9jZXNzLgotSXQgaXMgbm90IHBvc3NpYmxlIHRvIHNlbmQgU0lHS0lMTCB0byBwcm9jZXNzZXMgd2hpY2ggd2VyZSBhbHJlYWR5Ci1ydW5uaW5nLiBJIGNvbnNpZGVyIHRoaXMgYXMgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCBiZWNhdXNlIEkgd2FzCi1hYmxlIHRvIHdyaXRlIGEgcHJvb2Ygb2YgY29uY2VwdCB3aGljaCB1bmxvY2tlZCBhIHNjcmVlbiBzYXZlciBvZgotYW5vdGhlciB1c2VyIHRoaXMgd2F5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9jb21taXQvMDhmZDRiNjllODQzNjQ2NzdhMTBlNTE5Y2NiMjViNzE3MTBlZTY4Nl0KLUNWRTogQ1ZFLTIwMTctMjYxNgotYnVnOiA4NTU5NDMKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3JjL3N1LmMgYi9zcmMvc3UuYwotaW5kZXggMzcwNDIxNy4uMWVmY2Q2MSAxMDA2NDQKLS0tLSBhL3NyYy9zdS5jCi0rKysgYi9zcmMvc3UuYwotQEAgLTM2MywyMCArMzYzLDM1IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfcGFtX2Nsb3NlX3Nlc3Npb24gKHZvaWQpCi0gCQkJCS8qIHdha2UgY2hpbGQgd2hlbiByZXN1bWVkICovCi0gCQkJCWtpbGwgKHBpZCwgU0lHQ09OVCk7Ci0gCQkJCXN0b3AgPSBmYWxzZTsKLSsJCQl9IGVsc2UgewotKwkJCQlwaWRfY2hpbGQgPSAwOwotIAkJCX0KLSAJCX0gd2hpbGUgKCFzdG9wKTsKLSAJfQotIAotLQlpZiAoMCAhPSBjYXVnaHQpIHsKLSsJaWYgKDAgIT0gY2F1Z2h0ICYmIDAgIT0gcGlkX2NoaWxkKSB7Ci0gCQkodm9pZCkgZnB1dHMgKCJcbiIsIHN0ZGVycik7Ci0gCQkodm9pZCkgZnB1dHMgKF8oIlNlc3Npb24gdGVybWluYXRlZCwgdGVybWluYXRpbmcgc2hlbGwuLi4iKSwKLSAJCSAgICAgICAgICAgICAgc3RkZXJyKTsKLSAJCSh2b2lkKSBraWxsICgtcGlkX2NoaWxkLCBjYXVnaHQpOwotIAotIAkJKHZvaWQpIHNpZ25hbCAoU0lHQUxSTSwga2lsbF9jaGlsZCk7Ci0rCQkodm9pZCkgc2lnbmFsIChTSUdDSExELCBjYXRjaF9zaWduYWxzKTsKLSAJCSh2b2lkKSBhbGFybSAoMik7Ci0gCi0tCQkodm9pZCkgd2FpdCAoJnN0YXR1cyk7Ci0rCQlzaWdlbXB0eXNldCAoJm91cnNldCk7Ci0rCQlpZiAoKHNpZ2FkZHNldCAoJm91cnNldCwgU0lHQUxSTSkgIT0gMCkKLSsJCSAgICB8fCAoc2lncHJvY21hc2sgKFNJR19CTE9DSywgJm91cnNldCwgTlVMTCkgIT0gMCkpIHsKLSsJCQlmcHJpbnRmIChzdGRlcnIsIF8oIiVzOiBzaWduYWwgbWFza2luZyBtYWxmdW5jdGlvblxuIiksIFByb2cpOwotKwkJCWtpbGxfY2hpbGQgKDApOwotKwkJfSBlbHNlIHsKLSsJCQl3aGlsZSAoMCA9PSB3YWl0cGlkIChwaWRfY2hpbGQsICZzdGF0dXMsIFdOT0hBTkcpKSB7Ci0rCQkJCXNpZ3N1c3BlbmQgKCZvdXJzZXQpOwotKwkJCX0KLSsJCQlwaWRfY2hpbGQgPSAwOwotKwkJCSh2b2lkKSBzaWdwcm9jbWFzayAoU0lHX1VOQkxPQ0ssICZvdXJzZXQsIE5VTEwpOwotKwkJfQotKwotIAkJKHZvaWQpIGZwdXRzIChfKCIgLi4udGVybWluYXRlZC5cbiIpLCBzdGRlcnIpOwotIAl9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvQ1ZFLTIwMTgtNzE2OS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9DVkUtMjAxOC03MTY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjg4N2Q0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9DVkUtMjAxOC03MTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLUZyb20gZmIyOGM5OWI4YTY2ZmYyNjA1YzVjYjk2YWJjMGE0ZDk3NWY5MmRlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZWtzYSBTYXJhaSA8YXNhcmFpQHN1c2UuZGU+Ci1EYXRlOiBUaHUsIDE1IEZlYiAyMDE4IDIzOjQ5OjQwICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5ld2dpZG1hcDogZW5mb3JjZSBzZXRncm91cHM9ZGVueSBpZiBzZWxmLW1hcHBpbmcgYSBncm91cAotCi1UaGlzIGlzIG5lY2Vzc2FyeSB0byBtYXRjaCB0aGUga2VybmVsLXNpZGUgcG9saWN5IG9mICJzZWxmLW1hcHBpbmcgaW4gYQotdXNlciBuYW1lc3BhY2UgaXMgZmluZSwgYnV0IHlvdSBjYW5ub3QgZHJvcCBncm91cHMiIC0tIGEgcG9saWN5IHRoYXQgd2FzCi1jcmVhdGVkIGluIG9yZGVyIHRvIHN0b3AgdXNlciBuYW1lc3BhY2VzIGZyb20gYWxsb3dpbmcgdHJpdmlhbCBwcml2aWxlZ2UKLWVzY2FsYXRpb24gYnkgZHJvcHBpbmcgc3VwcGxlbWVudGFyeSBncm91cHMgdGhhdCB3ZXJlICJibGFja2xpc3RlZCIgZnJvbQotY2VydGFpbiBwYXRocy4KLQotVGhpcyBpcyB0aGUgc2ltcGxlc3QgZml4IGZvciB0aGUgdW5kZXJseWluZyBpc3N1ZSwgYW5kIGVmZmVjdGl2ZWx5IG1ha2VzCi1pdCBzbyB0aGF0IHVubGVzcyBhIHVzZXIgaGFzIGEgdmFsaWQgbWFwcGluZyBzZXQgaW4gL2V0Yy9zdWJnaWQgKHdoaWNoCi1vbmx5IGFkbWluaXN0cmF0b3JzIGNhbiBtb2RpZnkpIC0tIGFuZCB0aGV5IGFyZSBjdXJyZW50bHkgdHJ5aW5nIHRvIHVzZQotdGhhdCBtYXBwaW5nIC0tIHRoZW4gL3Byb2MvJHBpZC9zZXRncm91cHMgd2lsbCBiZSBzZXQgdG8gZGVueS4gVGhpcwotd29ya2Fyb3VuZCBpcyBvbmx5IHBhcnRpYWwsIGJlY2F1c2UgaWRlYWxseSBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2V0Ci1hbiAiYWxsb3dfc2V0Z3JvdXBzIiBvciAiZGVueV9zZXRncm91cHMiIGZsYWcgaW4gL2V0Yy9zdWJnaWQgdG8gYWxsb3cKLWFkbWluaXN0cmF0b3JzIHRvIGZ1cnRoZXIgcmVzdHJpY3QgbmV3Z2lkbWFwKDEpLgotCi1XZSBhbHNvIGRvbid0IHdyaXRlIGFueXRoaW5nIGluIHRoZSAiYWxsb3ciIGNhc2UgYmVjYXVzZSAiYWxsb3ciIGlzIHRoZQotZGVmYXVsdCwgYW5kIHVzZXJzIG1heSBoYXZlIGFscmVhZHkgd3JpdHRlbiAiZGVueSIgZXZlbiBpZiB0aGV5Ci10ZWNobmljYWxseSBhcmUgYWxsb3dlZCB0byB1c2Ugc2V0Z3JvdXBzLiBBbmQgd2UgZG9uJ3Qgd3JpdGUgYW55dGhpbmcgaWYKLXRoZSBzZXRncm91cHMgcG9saWN5IGlzIGFscmVhZHkgImRlbnkiLgotCi1SZWY6IGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL3NoYWRvdy8rYnVnLzE3MjkzNTcKLUZpeGVzOiBDVkUtMjAxOC03MTY5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L2NvbW1pdC9mYjI4Yzk5YjhhNjZmZjI2MDVjNWNiOTZhYmMwYTRkOTc1ZjkyZGUwXQotUmVwb3J0ZWQtYnk6IENyYWlnIEZ1cm1hbiA8Y3JhaWcuZnVybWFuODlAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQWxla3NhIFNhcmFpIDxhc2FyYWlAc3VzZS5kZT4KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHNyYy9uZXdnaWRtYXAuYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25ld2dpZG1hcC5jIGIvc3JjL25ld2dpZG1hcC5jCi1pbmRleCBiMWUzMzUxMy4uNTlhMmU3NWMgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV3Z2lkbWFwLmMKLSsrKyBiL3NyYy9uZXdnaWRtYXAuYwotQEAgLTQ2LDMyICs0NiwzNyBAQAotICAqLwotIGNvbnN0IGNoYXIgKlByb2c7Ci0gCi0tc3RhdGljIGJvb2wgdmVyaWZ5X3JhbmdlKHN0cnVjdCBwYXNzd2QgKnB3LCBzdHJ1Y3QgbWFwX3JhbmdlICpyYW5nZSkKLSsKLStzdGF0aWMgYm9vbCB2ZXJpZnlfcmFuZ2Uoc3RydWN0IHBhc3N3ZCAqcHcsIHN0cnVjdCBtYXBfcmFuZ2UgKnJhbmdlLCBib29sICphbGxvd19zZXRncm91cHMpCi0gewotIAkvKiBBbiBlbXB0eSByYW5nZSBpcyBpbnZhbGlkICovCi0gCWlmIChyYW5nZS0+Y291bnQgPT0gMCkKLSAJCXJldHVybiBmYWxzZTsKLSAKLS0JLyogVGVzdCAvZXRjL3N1YmdpZCAqLwotLQlpZiAoaGF2ZV9zdWJfZ2lkcyhwdy0+cHdfbmFtZSwgcmFuZ2UtPmxvd2VyLCByYW5nZS0+Y291bnQpKQotKwkvKiBUZXN0IC9ldGMvc3ViZ2lkLiBJZiB0aGUgbWFwcGluZyBpcyB2YWxpZCB0aGVuIHdlIGFsbG93IHNldGdyb3Vwcy4gKi8KLSsJaWYgKGhhdmVfc3ViX2dpZHMocHctPnB3X25hbWUsIHJhbmdlLT5sb3dlciwgcmFuZ2UtPmNvdW50KSkgewotKwkJKmFsbG93X3NldGdyb3VwcyA9IHRydWU7Ci0gCQlyZXR1cm4gdHJ1ZTsKLSsJfQotIAotLQkvKiBBbGxvdyBhIHByb2Nlc3MgdG8gbWFwIGl0J3Mgb3duIGdpZCAqLwotLQlpZiAoKHJhbmdlLT5jb3VudCA9PSAxKSAmJiAocHctPnB3X2dpZCA9PSByYW5nZS0+bG93ZXIpKQotKwkvKiBBbGxvdyBhIHByb2Nlc3MgdG8gbWFwIGl0cyBvd24gZ2lkLiAqLwotKwlpZiAoKHJhbmdlLT5jb3VudCA9PSAxKSAmJiAocHctPnB3X2dpZCA9PSByYW5nZS0+bG93ZXIpKSB7Ci0rCQkvKiBub29wIC0tIGlmIHNldGdyb3VwcyBpcyBlbmFibGVkIGFscmVhZHkgd2Ugd29uJ3QgZGlzYWJsZSBpdC4gKi8KLSAJCXJldHVybiB0cnVlOwotKwl9Ci0gCi0gCXJldHVybiBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdmVyaWZ5X3JhbmdlcyhzdHJ1Y3QgcGFzc3dkICpwdywgaW50IHJhbmdlcywKLS0Jc3RydWN0IG1hcF9yYW5nZSAqbWFwcGluZ3MpCi0rCXN0cnVjdCBtYXBfcmFuZ2UgKm1hcHBpbmdzLCBib29sICphbGxvd19zZXRncm91cHMpCi0gewotIAlzdHJ1Y3QgbWFwX3JhbmdlICptYXBwaW5nOwotIAlpbnQgaWR4OwotIAotIAltYXBwaW5nID0gbWFwcGluZ3M7Ci0gCWZvciAoaWR4ID0gMDsgaWR4IDwgcmFuZ2VzOyBpZHgrKywgbWFwcGluZysrKSB7Ci0tCQlpZiAoIXZlcmlmeV9yYW5nZShwdywgbWFwcGluZykpIHsKLSsJCWlmICghdmVyaWZ5X3JhbmdlKHB3LCBtYXBwaW5nLCBhbGxvd19zZXRncm91cHMpKSB7Ci0gCQkJZnByaW50ZihzdGRlcnIsIF8oICIlczogZ2lkIHJhbmdlIFslbHUtJWx1KSAtPiBbJWx1LSVsdSkgbm90IGFsbG93ZWRcbiIpLAotIAkJCQlQcm9nLAotIAkJCQltYXBwaW5nLT51cHBlciwKLUBAIC04OSw2ICs5NCw3MCBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQotIAlleGl0KEVYSVRfRkFJTFVSRSk7Ci0gfQotIAotK3ZvaWQgd3JpdGVfc2V0Z3JvdXBzKGludCBwcm9jX2Rpcl9mZCwgYm9vbCBhbGxvd19zZXRncm91cHMpCi0rewotKwlpbnQgc2V0Z3JvdXBzX2ZkOwotKwljaGFyICpwb2xpY3ksIHBvbGljeV9idWZmZXJbNDA5Nl07Ci0rCi0rCS8qCi0rCSAqIERlZmF1bHQgaXMgImRlbnkiLCBhbmQgYW55ICJhbGxvdyIgd2lsbCBvdXQtcmFuayBhICJkZW55Ii4gV2UgZG9uJ3QKLSsJICogZm9yY2VmdWxseSB3cml0ZSBhbiAiYWxsb3ciIGhlcmUgYmVjYXVzZSB0aGUgcHJvY2VzcyB3ZSBhcmUgd3JpdGluZwotKwkgKiBtYXBwaW5ncyBmb3IgbWF5IGhhdmUgYWxyZWFkeSBzZXQgdGhlbXNlbHZlcyB0byAiZGVueSIgKGFuZCAiYWxsb3ciCi0rCSAqIGlzIHRoZSBkZWZhdWx0IGFueXdheSkuIFNvIGFsbG93X3NldGdyb3VwcyA9PSB0cnVlIGlzIGEgbm9vcC4KLSsJICovCi0rCXBvbGljeSA9ICJkZW55XG4iOwotKwlpZiAoYWxsb3dfc2V0Z3JvdXBzKQotKwkJcmV0dXJuOwotKwotKwlzZXRncm91cHNfZmQgPSBvcGVuYXQocHJvY19kaXJfZmQsICJzZXRncm91cHMiLCBPX1JEV1J8T19DTE9FWEVDKTsKLSsJaWYgKHNldGdyb3Vwc19mZCA8IDApIHsKLSsJCS8qCi0rCQkgKiBJZiBpdCdzIGFuIEVOT0VOVCB0aGVuIHdlIGFyZSBvbiB0b28gb2xkIGEga2VybmVsIGZvciB0aGUgc2V0Z3JvdXBzCi0rCQkgKiBjb2RlIHRvIGV4aXN0LiBFbWl0IGEgd2FybmluZyBhbmQgYmFpbCBvbiB0aGlzLgotKwkJICovCi0rCQlpZiAoRU5PRU5UID09IGVycm5vKSB7Ci0rCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBrZXJuZWwgZG9lc24ndCBzdXBwb3J0IHNldGdyb3VwcyByZXN0cmljdGlvbnNcbiIpLCBQcm9nKTsKLSsJCQlnb3RvIG91dDsKLSsJCX0KLSsJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGRuJ3Qgb3BlbiBwcm9jZXNzIHNldGdyb3VwczogJXNcbiIpLAotKwkJCVByb2csCi0rCQkJc3RyZXJyb3IoZXJybm8pKTsKLSsJCWV4aXQoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotKwkvKgotKwkgKiBDaGVjayB3aGV0aGVyIHRoZSBwb2xpY3kgaXMgYWxyZWFkeSB3aGF0IHdlIHdhbnQuIC9wcm9jL3NlbGYvc2V0Z3JvdXBzCi0rCSAqIGlzIHdyaXRlLW9uY2UsIHNvIGF0dGVtcHRpbmcgdG8gd3JpdGUgYWZ0ZXIgaXQncyBhbHJlYWR5IHdyaXR0ZW4gdG8gd2lsbAotKwkgKiBmYWlsLgotKwkgKi8KLSsJaWYgKHJlYWQoc2V0Z3JvdXBzX2ZkLCBwb2xpY3lfYnVmZmVyLCBzaXplb2YocG9saWN5X2J1ZmZlcikpIDwgMCkgewotKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVhZCBzZXRncm91cHM6ICVzXG4iKSwKLSsJCQlQcm9nLAotKwkJCXN0cmVycm9yKGVycm5vKSk7Ci0rCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0rCX0KLSsJaWYgKCFzdHJuY21wKHBvbGljeV9idWZmZXIsIHBvbGljeSwgc3RybGVuKHBvbGljeSkpKQotKwkJZ290byBvdXQ7Ci0rCi0rCS8qIFdyaXRlIHRoZSBwb2xpY3kuICovCi0rCWlmIChsc2VlayhzZXRncm91cHNfZmQsIDAsIFNFRUtfU0VUKSA8IDApIHsKLSsJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRvIHNlZWsgc2V0Z3JvdXBzOiAlc1xuIiksCi0rCQkJUHJvZywKLSsJCQlzdHJlcnJvcihlcnJubykpOwotKwkJZXhpdChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCWlmIChkcHJpbnRmKHNldGdyb3Vwc19mZCwgIiVzIiwgcG9saWN5KSA8IDApIHsKLSsJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRvIHNldGdyb3VwcyAlcyBwb2xpY3k6ICVzXG4iKSwKLSsJCQlQcm9nLAotKwkJCXBvbGljeSwKLSsJCQlzdHJlcnJvcihlcnJubykpOwotKwkJZXhpdChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rb3V0OgotKwljbG9zZShzZXRncm91cHNfZmQpOwotK30KLSsKLSAvKgotICAqIG5ld2dpZG1hcCAtIFNldCB0aGUgZ2lkX21hcCBmb3IgdGhlIHNwZWNpZmllZCBwcm9jZXNzCi0gICovCi1AQCAtMTAzLDYgKzE3Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJc3RydWN0IHN0YXQgc3Q7Ci0gCXN0cnVjdCBwYXNzd2QgKnB3OwotIAlpbnQgd3JpdHRlbjsKLSsJYm9vbCBhbGxvd19zZXRncm91cHMgPSBmYWxzZTsKLSAKLSAJUHJvZyA9IEJhc2VuYW1lIChhcmd2WzBdKTsKLSAKLUBAIC0xNDUsNyArMjE1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQkodW5zaWduZWQgbG9uZykgZ2V0dWlkICgpKSk7Ci0gCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwotIAl9Ci0tCQotKwotIAkvKiBHZXQgdGhlIGVmZmVjdGl2ZSB1aWQgYW5kIGVmZmVjdGl2ZSBnaWQgb2YgdGhlIHRhcmdldCBwcm9jZXNzICovCi0gCWlmIChmc3RhdChwcm9jX2Rpcl9mZCwgJnN0KSA8IDApIHsKLSAJCWZwcmludGYoc3RkZXJyLCBfKCIlczogQ291bGQgbm90IHN0YXQgZGlyZWN0b3J5IGZvciB0YXJnZXQgJXVcbiIpLAotQEAgLTE3Nyw4ICsyNDcsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWlmICghbWFwcGluZ3MpCi0gCQl1c2FnZSgpOwotIAotLQl2ZXJpZnlfcmFuZ2VzKHB3LCByYW5nZXMsIG1hcHBpbmdzKTsKLSsJdmVyaWZ5X3JhbmdlcyhwdywgcmFuZ2VzLCBtYXBwaW5ncywgJmFsbG93X3NldGdyb3Vwcyk7Ci0gCi0rCXdyaXRlX3NldGdyb3Vwcyhwcm9jX2Rpcl9mZCwgYWxsb3dfc2V0Z3JvdXBzKTsKLSAJd3JpdGVfbWFwcGluZyhwcm9jX2Rpcl9mZCwgcmFuZ2VzLCBtYXBwaW5ncywgImdpZF9tYXAiKTsKLSAJc3ViX2dpZF9jbG9zZSgpOwotIAotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaAppbmRleCA2MTVjNmUwLi5mYTdlYjA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaApAQCAtMSwyMSArMSwyMSBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KK1N1YmplY3Q6IFtQQVRDSF0gQWxsb3cgZm9yIHNldHRpbmcgcGFzc3dvcmQgaW4gY2xlYXIgdGV4dAogCi1BbGxvdyBmb3Igc2V0dGluZyBwYXNzd29yZCBpbiBjbGVhciB0ZXh0LgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgICAgOCArKysrLS0tLQotIHNyYy9ncm91cGFkZC5jICB8ICAgIDggKysrKysrKy0KLSBzcmMvZ3JvdXBtb2QuYyAgfCAgICA4ICsrKysrKystCi0gc3JjL3VzZXJhZGQuYyAgIHwgICAgOSArKysrKysrLS0KLSBzcmMvdXNlcm1vZC5jICAgfCAgICA4ICsrKysrKystCi0gNSBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorIHNyYy9NYWtlZmlsZS5hbSB8ICA4ICsrKystLS0tCisgc3JjL2dyb3VwYWRkLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBzcmMvZ3JvdXBtb2QuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQorIHNyYy91c2VyYWRkLmMgICB8IDIxICsrKysrKysrKysrKysrKy0tLS0tLQorIHNyYy91c2VybW9kLmMgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggMjVlMjg4ZC4uODU2YjA4NyAxMDA2NDQKK2luZGV4IDNjOThhOGQuLmI4MDkzZDUgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTg4LDEwICs4OCwxMCBAQCBjaGdwYXNzd2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCitAQCAtOTMsMTAgKzkzLDEwIEBAIGNoZ3Bhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKICBjaHNoX0xEQUREICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKICBjaHBhc3N3ZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCiAgZ3Bhc3N3ZF9MREFERCAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCkBAIC0yOCw5ICsyOCw5IEBACiAgZ3JwY2tfTERBREQgICAgPSAkKExEQUREKSAkKExJQlNFTElOVVgpCiAgZ3JwY29udl9MREFERCAgPSAkKExEQUREKSAkKExJQlNFTElOVVgpCiAgZ3JwdW5jb252X0xEQUREID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotQEAgLTExMSw5ICsxMTEsOSBAQCBzdV9TT1VSQ0VTICAgICA9IFwKK0BAIC0xMTcsOSArMTE3LDkgQEAgc3VfU09VUkNFUyAgICAgPSBcCiAgCXN1YXV0aC5jCi0gc3VfTERBREQgICAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQorIHN1X0xEQUREICAgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQVVESVQpICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKICBzdWxvZ2luX0xEQUREICA9ICQoTERBREQpICQoTElCQ1JZUFQpCiAtdXNlcmFkZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpCiArdXNlcmFkZF9MREFERCAgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCU0VNQU5BR0UpICQoTElCQUNMKSAkKExJQkFUVFIpICQoTElCQ1JZUFQpCkBAIC00MSwzMyArNDEsMzkgQEAKICAKICBpbnN0YWxsLWFtOiBhbGwtYW0KIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCi1pbmRleCBmNzE2ZjU3Li40ZTI4YzI2IDEwMDY0NAoraW5kZXggYjU3MDA2Yy4uNjNlMWM0OCAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGFkZC5jCiArKysgYi9zcmMvZ3JvdXBhZGQuYwotQEAgLTEyNCw2ICsxMjQsNyBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorQEAgLTEyMyw5ICsxMjMsMTAgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIGNyZWF0ZSBncm91cHMgd2l0aCBkdXBsaWNhdGVcbiIKICAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICB1c2UgdGhpcyBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXBcbiIpLCB1c2FnZW91dCk7CiArCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgdGhpcyBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1yLCAtLXN5c3RlbSAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOworLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgZGlyZWN0b3J5IHByZWZpeFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIGRpcmVjdG9yeSBwcmVmaXhcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOwotQEAgLTM4NywxMiArMzg4LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJZXhpdCAoc3RhdHVzKTsKKyB9CitAQCAtMzg3LDEzICszODgsMTQgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJeyJrZXkiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdLJ30sCiAgCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKICAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAogKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAogIAkJeyJzeXN0ZW0iLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCiAgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCiAgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KICAJfTsKICAKLS0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpyUjoiLAotKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6IiwKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpyUjpQOiIsCisrCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6UDpyUjpBOiIsCiAgCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CiAgCQlzd2l0Y2ggKGMpIHsKICAJCWNhc2UgJ2YnOgotQEAgLTQ0NCw2ICs0NDYsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTQ0NSwxMiArNDQ3LDIwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCQlwZmxnID0gdHJ1ZTsKICAJCQlncm91cF9wYXNzd2QgPSBvcHRhcmc7CiAgCQkJYnJlYWs7CkBAIC03OCwzMiArODQsNTcgQEAKICAJCWNhc2UgJ3InOgogIAkJCXJmbGcgPSB0cnVlOwogIAkJCWJyZWFrOworIAkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCisgCQkJYnJlYWs7CistCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKKysJCQkJIFByb2cpOworKwkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJYnJlYWs7CisgCQlkZWZhdWx0OgorIAkJCXVzYWdlIChFX1VTQUdFKTsKK0BAIC01ODQsNyArNTk0LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOworKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoImdyb3VwYWRkIik7CisgI2lmZGVmIFdJVEhfQVVESVQKIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBtb2QuYyBiL3NyYy9ncm91cG1vZC5jCi1pbmRleCBkOWQzODA3Li42OGY0OWQxIDEwMDY0NAoraW5kZXggYjI5M2I5OC4uNzJkYWYyYyAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cG1vZC5jCiArKysgYi9zcmMvZ3JvdXBtb2QuYwotQEAgLTEyNyw2ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKK0BAIC0xMzQsOCArMTM0LDkgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCiAgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byB1c2UgYSBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhpcyAoZW5jcnlwdGVkKVxuIgogIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CiArCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgY2xlYXIgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOwogIAlleGl0IChzdGF0dXMpOwotQEAgLTM3NSwxMCArMzc2LDExIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyB9CitAQCAtMzgzLDExICszODQsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJeyJuZXctbmFtZSIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICduJ30sCiAgCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKICAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAogKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAogIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAogIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9CiAgCX07Ci0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOiIsCi0rCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpQOlI6IiwKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlI6UDoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UDpSOkE6IiwKICAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKICAJCXN3aXRjaCAoYykgewogIAkJY2FzZSAnZyc6Ci1AQCAtNDA1LDYgKzQwNywxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtNDE0LDkgKzQxNiwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOwogIAkJCXBmbGcgPSB0cnVlOwogIAkJCWJyZWFrOwpAQCAtMTEzLDQwICsxNDQsNjUgQEAKICsJCQlicmVhazsKICAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwogIAkJCWJyZWFrOworLQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCSBQcm9nKTsKKysJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCWJyZWFrOwogIAkJZGVmYXVsdDoKKyAJCQl1c2FnZSAoRV9VU0FHRSk7CitAQCAtNzU3LDcgKzc2Nyw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKyAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOworLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJncm91cG1vZCIpOworICNpZmRlZiBXSVRIX0FVRElUCiBkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IGIzYmQ0NTEuLjQ0MTZmOTAgMTAwNjQ0CitpbmRleCBjNzRlNDkxLi43MjE0ZTcyIDEwMDY0NAogLS0tIGEvc3JjL3VzZXJhZGQuYwogKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTc3Niw2ICs3NzYsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKK0BAIC04MjksOSArODI5LDEwIEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQogIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIHVzZXJzIHdpdGggZHVwbGljYXRlXG4iCiAgCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXVuaXF1ZSkgVUlEXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgZW5jcnlwdGVkIHBhc3N3b3JkIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKICsJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIGNsZWFyIHBhc3N3b3JkIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1yLCAtLXN5c3RlbSAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOworLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLXMsIC0tc2hlbGwgU0hFTEwgICAgICAgICAgICAgbG9naW4gc2hlbGwgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotQEAgLTEwNTAsNiArMTA1MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIHVzZXIgSUQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdXNlci1ncm91cCAgICAgICAgICAgICAgY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyXG4iKSwgdXNhZ2VvdXQpOworQEAgLTExMDQsOSArMTEwNSwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJeyJuby11c2VyLWdyb3VwIiwgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnTid9LAogIAkJCXsibm9uLXVuaXF1ZSIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKICAJCQl7InBhc3N3b3JkIiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCiArCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAogIAkJCXsic3lzdGVtIiwgICAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3InfSwKICAJCQl7InJvb3QiLCAgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKICAJCQl7InNoZWxsIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCi1AQCAtMTA2Miw5ICsxMDY0LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCXsidWlkIiwgICAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKKyAJCQl7InVzZXItZ3JvdXAiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCitAQCAtMTExNyw5ICsxMTE5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJfTsKICAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAogICNpZmRlZiBXSVRIX1NFTElOVVgKLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6czp1OlVaOiIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6czp1OlVaOiIsCistCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOlA6czp1OlVaOiIsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6QTpzOnU6VVo6IiwKICAjZWxzZQkJCQkvKiAhV0lUSF9TRUxJTlVYICovCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOnM6dTpVIiwKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpzOnU6VSIsCistCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOlA6czp1OlUiLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOkE6czp1OlUiLAogICNlbmRpZgkJCQkvKiAhV0lUSF9TRUxJTlVYICovCiAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKICAJCQlzd2l0Y2ggKGMpIHsKLUBAIC0xMjMwLDYgKzEyMzIsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTI4NSwxMiArMTI4NywxOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJCX0KICAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOwogIAkJCQlicmVhazsKQEAgLTE1NiwzNiArMjEyLDYyIEBACiAgCQkJY2FzZSAncic6CiAgCQkJCXJmbGcgPSB0cnVlOwogIAkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoICAgKCAhVkFMSUQgKG9wdGFyZykgKQorQEAgLTIxNDgsNyArMjE1Nyw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKyAKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAogZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCi1pbmRleCBlN2Q0MzUxLi5iNzlmN2EzIDEwMDY0NAoraW5kZXggZTU3MTQyNi4uY2NmYmI5OSAxMDA2NDQKIC0tLSBhL3NyYy91c2VybW9kLmMKICsrKyBiL3NyYy91c2VybW9kLmMKLUBAIC00MTksNiArNDE5LDcgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKK0BAIC00MjQsOCArNDI0LDkgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKICAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsb2NhdGlvbiAodXNlIG9ubHkgd2l0aCAtZClcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB1c2luZyBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7CiArCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBuZXcgbG9naW4gc2hlbGwgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICBuZXcgVUlEIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotQEAgLTk5Niw2ICs5OTcsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtVSwgLS11bmxvY2sgICAgICAgICAgICAgICAgICB1bmxvY2sgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKK0BAIC0xMDAyLDggKzEwMDMsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJeyJtb3ZlLWhvbWUiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ20nfSwKICAJCQl7Im5vbi11bmlxdWUiLCAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAogIAkJCXsicGFzc3dvcmQiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCiArCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAogIAkJCXsicm9vdCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCQl7InByZWZpeCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAogIAkJCXsic2hlbGwiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCiAgCQkJeyJ1aWQiLCAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKLUBAIC0xMDEyLDcgKzEwMTQsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJ1bmxvY2siLCAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKK0BAIC0xMDE5LDcgKzEwMjEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJe05VTEwsIDAsIE5VTEwsICdcMCd9CiAgCQl9OwogIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlUiCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlA6UjpzOnU6VSIKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWM6ZDplOmY6ZzpHOmhsOkxtb3A6UjpzOnU6VVA6IgorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJhYzpkOmU6ZjpnOkc6aGw6TG1vcDpQOlI6czp1OlVBOiIKICAjaWZkZWYgRU5BQkxFX1NVQklEUwogIAkJICAgICAgICAgICAgICAgICAgICAgICAgICJ2Onc6VjpXOiIKICAjZW5kaWYJCQkJLyogRU5BQkxFX1NVQklEUyAqLwotQEAgLTExMTIsNiArMTExNCwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTExOSw5ICsxMTIxLDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOwogIAkJCQlwZmxnID0gdHJ1ZTsKICAJCQkJYnJlYWs7CkBAIC0xOTUsNyArMjc3LDI0IEBACiArCQkJCWJyZWFrOwogIAkJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwogIAkJCQlicmVhazsKKy0JCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJCWZwcmludGYgKHN0ZGVyciwKKysJCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKKysJCQkJCSBQcm9nKTsKKysJCQkJZXhpdCAoRV9CQURfQVJHKTsKKyAJCQkJYnJlYWs7CiAgCQkJY2FzZSAncyc6CisgCQkJCWlmICghVkFMSUQgKG9wdGFyZykpIHsKK0BAIC0yMDk4LDcgKzIxMDgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOworIAorIAlPUEVOTE9HICgidXNlcm1vZCIpOworICNpZmRlZiBXSVRIX0FVRElUCiAtLSAKLTEuNy45LjUKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY2hlY2tfc2l6ZV9vZl91aWRfdF9hbmRfZ2lkX3RfdXNpbmdfQUNfQ0hFQ0tfU0laRU9GLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1NTkwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY2hlY2tfc2l6ZV9vZl91aWRfdF9hbmRfZ2lkX3RfdXNpbmdfQUNfQ0hFQ0tfU0laRU9GLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSAyY2I1NDE1OGI4MGNkYmQ5N2NhM2IzNmRmODNmOTI1NWU5MjNhZTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFtZXMgTGUgQ3Vpcm90IDxjaGV3aUBhdXJhLW9ubGluZS5jby51az4KLURhdGU6IFNhdCwgMjMgQXVnIDIwMTQgMDk6NDY6MzkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgc2l6ZSBvZiB1aWRfdCBhbmQgZ2lkX3QgdXNpbmcgQUNfQ0hFQ0tfU0laRU9GCi0KLVRoaXMgYnVpbHQtaW4gY2hlY2sgaXMgc2ltcGxlciB0aGFuIHRoZSBwcmV2aW91cyBtZXRob2QgYW5kLCBtb3N0Ci1pbXBvcnRhbnRseSwgd29ya3Mgd2hlbiBjcm9zcy1jb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLVtodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9jb21taXQvMmNiNTQxNThiODBjZGJkOTdjYTNiMzZkZjgzZjkyNTVlOTIzYWUzZl0KLQotU2lnbmVkLW9mZi1ieTogU2VyZ2UgSGFsbHluIDxzZXJnZS5oYWxseW5AdWJ1bnR1LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDE0ICsrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDFhM2Y4NDEuLjRhNGQ2ZDAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTMzNSwxNiArMzM1LDEwIEBAIGlmIHRlc3QgIiRlbmFibGVfc3ViaWRzIiAhPSAibm8iOyB0aGVuCi0gCWRubAotIAlkbmwgRklYTUU6IGNoZWNrIGlmIDMyIGJpdCBVSURzL0dJRHMgYXJlIHN1cHBvcnRlZCBieSBsaWJjCi0gCWRubAotLQlBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLWludCBtYWluKHZvaWQpIHsKLS0JdWlkX3QgdTsKLS0JZ2lkX3QgZzsKLS0JcmV0dXJuIChzaXplb2YgdSA8IDQpIHx8IChzaXplb2YgZyA8IDQpOwotLX0KLS0JXSldLCBbaWQzMmJpdD0ieWVzIl0sIFtpZDMyYml0PSJubyJdKQotLQotLQlpZiB0ZXN0ICJ4JGlkMzJiaXQiID0gInh5ZXMiOyB0aGVuCi0rCUFDX0NIRUNLX1NJWkVPRihbdWlkX3RdLCwgWyNpbmNsdWRlICJzeXMvdHlwZXMuaCJdKQotKwlBQ19DSEVDS19TSVpFT0YoW2dpZF90XSwsIFsjaW5jbHVkZSAic3lzL3R5cGVzLmgiXSkKLSsKLSsJaWYgdGVzdCAiJGFjX2N2X3NpemVvZl91aWRfdCIgLWdlIDQgJiYgdGVzdCAiJGFjX2N2X3NpemVvZl9naWRfdCIgLWdlIDQ7IHRoZW4KLSAJCUFDX0RFRklORShFTkFCTEVfU1VCSURTLCAxLCBbRGVmaW5lIHRvIHN1cHBvcnQgdGhlIHN1Ym9yZGluYXRlIElEcy5dKQotIAkJZW5hYmxlX3N1Ymlkcz0ieWVzIgotIAllbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvZml4LWluc3RhbGxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2ZpeC1pbnN0YWxsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJjYjkxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvZml4LWluc3RhbGxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVN1YmplY3Q6IGZpeCBpbnN0YWxsYXRpb24gZmFpbHVyZSB3aXRoIHN1YmlkcyBkaXNhYmxlZAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCAgICA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAyNWUyODhkLi4wNzZmOGVmIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC01Miw3ICs1MiwxMCBAQCB1c2Jpbl9QUk9HUkFNUyA9IFwKLSBub2luc3RfUFJPR1JBTVMgPSBpZCBzdWxvZ2luCi0gCi0gc3VpZGJpbnMgICAgICAgPSBzdQotLXN1aWR1YmlucyAgICAgID0gY2hhZ2UgY2hmbiBjaHNoIGV4cGlyeSBncGFzc3dkIG5ld2dycCBwYXNzd2QgbmV3dWlkbWFwIG5ld2dpZG1hcAotK3N1aWR1YmlucyAgICAgID0gY2hhZ2UgY2hmbiBjaHNoIGV4cGlyeSBncGFzc3dkIG5ld2dycCBwYXNzd2QKLStpZiBFTkFCTEVfU1VCSURTCi0rc3VpZHViaW5zICs9IG5ld2dpZG1hcCBuZXd1aWRtYXAKLStlbmRpZgotIGlmIEFDQ1RfVE9PTFNfU0VUVUlECi0gCXN1aWR1YmlucyArPSBjaGFnZSBjaGdwYXNzd2QgY2hwYXNzd2QgZ3JvdXBhZGQgZ3JvdXBkZWwgZ3JvdXBtb2QgbmV3dXNlcnMgdXNlcmFkZCB1c2VyZGVsIHVzZXJtb2QKLSBlbmRpZgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy91c2VybW9kLWZpeC1jb21waWxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3VzZXJtb2QtZml4LWNvbXBpbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZGMxNTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3VzZXJtb2QtZml4LWNvbXBpbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotdXNlcm1vZDogZml4IGNvbXBpbGF0aW9uIGZhaWx1cmUgd2l0aCBzdWJpZHMgZGlzYWJsZWQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VzZXJtb2QuYyB8ICAgIDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJtb2QuYyBiL3NyYy91c2VybW9kLmMKLWluZGV4IGU3ZDQzNTEuLjY4NWI1MGEgMTAwNjQ0Ci0tLS0gYS9zcmMvdXNlcm1vZC5jCi0rKysgYi9zcmMvdXNlcm1vZC5jCi1AQCAtMTM2MCw3ICsxMzYwLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJICAgICAgICAgUHJvZywgKHVuc2lnbmVkIGxvbmcpIHVzZXJfbmV3aWQpOwotIAkJZXhpdCAoRV9VSURfSU5fVVNFKTsKLSAJfQotLQotKyNpZmRlZiBFTkFCTEVfU1VCSURTCi0gCWlmICggICAodmZsZyB8fCBWZmxnKQotIAkgICAgJiYgIWlzX3N1Yl91aWQpIHsKLSAJCWZwcmludGYgKHN0ZGVyciwKLUBAIC0xMzc2LDYgKzEzNzYsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkgICAgICAgICBQcm9nLCBzdWJfZ2lkX2RibmFtZSAoKSwgIi13IiwgIi1XIik7Ci0gCQlleGl0IChFX1VTQUdFKTsKLSAJfQotKyNlbmRpZgotIH0KLSAKLSAvKgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3ctc2VjdXJldHR5XzQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zZWN1cmV0dHlfNC42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXNlY3VyZXR0eV80LjIuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zZWN1cmV0dHlfNC42LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC4yLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3ctc3lzcm9vdF80LjYuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKaW5kZXggNGUxZWFlZC4uMDljMzdlZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTksMTggKzksMTAgQEAKIERFUEVORFMgPSAidmlydHVhbC9jcnlwdCIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L3JlbGVhc2VzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvJHtCUH0udGFyLnh6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2VybW9kLWZpeC1jb21waWxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZWFkLWxvZ2luLmRlZnMtYmVmb3JlLWRvaW5nLWNocm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jaGVja19zaXplX29mX3VpZF90X2FuZF9naWRfdF91c2luZ19BQ19DSEVDS19TSVpFT0YucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11c2VyYWRkLWNvcHktZXh0ZW5kZWQtYXR0cmlidXRlcy1vZi1ob21lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTI2MTYucGF0Y2ggXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTcxNjkucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXApAQCAtMzksOCArMzEsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYmZhZmU3ZDQ5NjI2ODJkMzFiNWViYTY1ZGJhNGZjOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjA4OTNkMTQ3Njc2Njg2OGNkODg5MjBmNGYxMjMxYzQ3OTU2NTJhYTQwNzU2OWZhZmY4MDJiY2RhMGYzZDQxIgorU1JDX1VSSVttZDVzdW1dID0gIjM2ZmViMTU2NjUzMzhhZTNkZTQxNGYyYTg4ZTQzNGRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2NjhmOTliZDA4NzM5OWM0YTU4NjA4NGRjM2IwNDZiNzVmNTYwNzIwZDgzZTkyZmQyM2JmN2E4OWRkYTRkMzEiCiAKICMgQWRkaXRpb25hbCBQb2xpY3kgZmlsZXMgZm9yIFBBTQogUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BhbS5kL2NoZm4gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93XzQuMi4xLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93XzQuNi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYgppbmRleCA4N2ZkNDFhLi5lNTNjNDMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYgpAQCAtNzgsNCArNzgsNCBAQAogUEFSQUxMRUxfTUFLRSA9ICIiCiBQQVJBTExFTF9NQUtFSU5TVCA9ICIiCiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKaW5kZXggMzYyYmQzYS4uNjlkY2NkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCkBAIC00LDcgKzQsNyBAQAogQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LnN1ZG8ud3MvYnVncy8iCiBTRUNUSU9OID0gImFkbWluIgogTElDRU5TRSA9ICJJU0MgJiBCU0QgJiBabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0xJQ0VOU0U7bWQ1PTc3NjVhM2Q3ODdjYjRmZWQzY2NjM2M5Y2VlMDMwYWY5IFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT1jYzRiZjIzNjZiMDU5Yzk1OThlMzk0N2Y4ODU5MzFlYyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQxO21kNT04MDU3ODJhODQ2Njk3NTcxNmY4Mzc2YjJiZTlhZWRkZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9yZWFsbG9jYXJyYXkuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT04NWIwOTA1Yjc5NWQ0ZDU4YmYyZTAwNjM1NjQ5ZWVjNiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9mbm1hdGNoLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9NjdmODNlZTliZDQ1NjU1NzM5NzA4MmY4ZjFiZTBlZmQgXApAQCAtMTIsMTIgKzEyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nbG9iLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0zMTttZDU9NTg3MjczMzE0NmI5ZWIwZGViNzllMWY2NjQ4MTViODUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvc25wcmludGYuYztiZWdpbmxpbmU9NjtlbmRsaW5lPTM0O21kNT1jODJjMWIzYTVjMzJlMDg1NDVjOWVjNWQ3MWU0MWU1MCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3N1ZG9fcXVldWUuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI3O21kNT00NDlhZjRjYzU3ZmM3ZDQ2ZjQyMDkwNjA4YmEzZTY4MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9pbmV0X3B0b24uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT0zOTcwYWIwNTE4YWI3OWNiZDBiYWZiNjk3ZjEwYjMzYSIKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2luZXRfcHRvbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTM5NzBhYjA1MThhYjc5Y2JkMGJhZmI2OTdmMTBiMzNhIFwKKyAgICAgICAgICAgICAgICAgICAgIgogCiBpbmhlcml0IGF1dG90b29scwogCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW3BhbS13aGVlbF0gPSAiLCwscGFtLXBsdWdpbi13aGVlbCIKIAogQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3Vkb2VycyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNTAxNzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgc3Vkby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNGFiZGVhNDhkYjRjNWFiY2Q0MTAxNjdjODAxY2M4YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjU2Y2IyN2MyMDg4M2IxNDM2MGVkZGJkMTdmOTg5MjIwNzNkMTA0YjIxNGNmNjVhZWFjZjFkOWM5YjlmZDAyIgotCi1ERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCi0gICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgotCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMzJiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIzLmJiCkBAIC0wLDAgKzEsNDAgQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYTQ0NGQ3NDdmZWIxZGVjZmViZGZmZDBiMzhiMDczOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkODYzZDI5YjZmYzg3YmM3ODRhMzIyMzM1MGUyYjI4YTJmZjJjNDczOGYwZmI4ZjFjOTJiYjM4YzMwMTdlNjc5IgorCitERVBFTkRTICs9ICIgdmlydHVhbC9jcnlwdCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWxpbWl0cyBwYW0tcGx1Z2luLWtleWluaXQnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgICAgICAgICAgYWNfY3ZfdHlwZV9yc2l6ZV90PW5vIFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLWVuYWJsZS10bXBmaWxlcy5kPSR7bGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKKyAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbworCQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0td2hlZWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KKwkJCWVjaG8gJ2F1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV93aGVlbC5zbyB1c2VfdWlkJyA+PiR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KKwkJCXNlZCAtaSAncy8jIFwoJXdoZWVsIEFMTD0oQUxMKSBBTExcKS9cMS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKwkJZmkKKwlmaQorCisJY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KKwljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKworCSMgRXhwbGljaXRseSByZW1vdmUgdGhlIC9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCisJcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKaW5kZXggZmM0ZTY3Yy4uZjE1MWRkOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwpAQCAtMTEsNyArMTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2xvZ2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE5O21kNT03ZTg3ZWQwYWU2MTQyZGUwNzliY2U3MzhjMTBjODk5ZCBcCiAgICAgICAgICAgICAgICAgICAgIgogCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKK2luaGVyaXQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5pbmZvZHJvbS5vcmcvcHJvamVjdHMvc3lza2xvZ2QvZG93bmxvYWQvc3lza2xvZ2QtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggXApAQCAtNTgsNiArNTgsMTEgQEAKIAogRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lza2xvZ2QuY29uZicsICcnLCBkKX0iCiAKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gInN5c2xvZ2QuOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2dkLjhdID0gIiR7bWFuZGlyfS9tYW44L3N5c2xvZ2QuOCIKKwogcGtnX3ByZXJtXyR7UE59ICgpIHsKIAlpZiB0ZXN0ICJ4JEQiID0gIngiOyB0aGVuCiAJaWYgdGVzdCAiJDEiID0gInVwZ3JhZGUiIC1vICIkMSIgPSAicmVtb3ZlIjsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NzM4ZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBzeXNzdGF0LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmRjZGE3YzkwNDhjN2MyMmZiMWYzMGY3NTI4NWQxM2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzAzYTU5NWIxYWYwMzMwYjE4M2EwZjFmZWJmY2NmODlmMTgzYjk1NzVhZTA1NjJiOTFmZGI4NzZmM2VmMWZlYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YjkxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNy40LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBzeXNzdGF0LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDIxZjk1OGRiODBlNjdhMjdlZGExZmY2YjhlYmNkZWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk2MjY1YTIyNzg0YzI5ODg4NjY5Zjk2MWEwODk2ODQxZDE3Nzg1M2Y4ZjA1N2VmZTA2M2U4OTE5NjJiOTA5MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZTRkYTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBmaWxlIGFyY2hpdmluZyBwcm9ncmFtIgotREVTQ1JJUFRJT04gPSAiR05VIHRhciBzYXZlcyBtYW55IGZpbGVzIHRvZ2V0aGVyIGludG8gYSBzaW5nbGUgdGFwZSBcCi1vciBkaXNrIGFyY2hpdmUsIGFuZCBjYW4gcmVzdG9yZSBpbmRpdmlkdWFsIGZpbGVzIGZyb20gdGhlIGFyY2hpdmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci8iCi1TRUNUSU9OID0gImJhc2UiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90YXIvdGFyLSR7UFZ9LnRhci5iejIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1FWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke2Jhc2Vfc2JpbmRpcn0iCi0KLSMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKLSMgYWJzb2x1dGUgc2luY2UgdGFyIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0Ci0jIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCi0jIGRpcmVjdG9yeS4KLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKLSAgICBsbiAtcyB0YXIgJHtEfSR7YmluZGlyfS9ndGFyCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L3RhciAke0R9JHtiYXNlX2JpbmRpcn0vdGFyCi0gICAgICAgIG12ICR7RH0ke2JpbmRpcn0vZ3RhciAke0R9JHtiYXNlX2JpbmRpcn0vZ3RhcgotICAgICAgICBybWRpciAke0R9JHtiaW5kaXJ9LwotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1ybXQiCi0KLUZJTEVTXyR7UE59LXJtdCA9ICIke2Jhc2Vfc2JpbmRpcn0vcm10KiIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAidGFyIgotQUxURVJOQVRJVkVfJHtQTn0tcm10ID0gInJtdCIKLUFMVEVSTkFUSVZFXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1BTFRFUk5BVElWRV8ke1BOfS1ybXRfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JtdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JtdCIKLQotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgdGFyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLU5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMwLmJiCmluZGV4IGU3NDNhNmQuLmJkMjRmNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIKQEAgLTEsMTggKzEsNzAgQEAKLXJlcXVpcmUgdGFyLmluYwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1wb3NpeC1hY2xzLCAtLXdpdGhvdXQtcG9zaXgtYWNscywgYWNsLCIKLQorU1VNTUFSWSA9ICJHTlUgZmlsZSBhcmNoaXZpbmcgcHJvZ3JhbSIKK0RFU0NSSVBUSU9OID0gIkdOVSB0YXIgc2F2ZXMgbWFueSBmaWxlcyB0b2dldGhlciBpbnRvIGEgc2luZ2xlIHRhcGUgXAorb3IgZGlzayBhcmNoaXZlLCBhbmQgY2FuIHJlc3RvcmUgaW5kaXZpZHVhbCBmaWxlcyBmcm9tIHRoZSBhcmNoaXZlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90YXIvIgorU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgogCi1TUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL211c2xfZGlyZW50LnBhdGNoIFwKLSAgICAgICAgICAgIgorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3Rhci90YXItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCisiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NDA0ZTRjMWZjNWEzMDAwMjI4YWIyYjhhZDY3NGE2NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzU5MmI4NmNiMDM3YzU1NDM3NWY1ODY4YmRkM2NjNTc3NDhhZWYzOGQ2Y2I3NDFjODEwNjVmMGJlYWM2M2I3IgogCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm1kaXIgJHtEfSR7bGliZGlyfQoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1wb3NpeC1hY2xzLC0td2l0aG91dC1wb3NpeC1hY2xzLGFjbCIKKworRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtiYXNlX3NiaW5kaXJ9IgorCisjIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCisjIGFic29sdXRlIHNpbmNlIHRhciBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAorIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcAorIyBkaXJlY3RvcnkuCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2RvX2luc3RhbGwgKCkgeworICAgIGF1dG90b29sc19kb19pbnN0YWxsCisgICAgbG4gLXMgdGFyICR7RH0ke2JpbmRpcn0vZ3RhcgogfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgbXYgJHtEfSR7YmluZGlyfS90YXIgJHtEfSR7YmFzZV9iaW5kaXJ9L3RhcgorICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L2d0YXIgJHtEfSR7YmFzZV9iaW5kaXJ9L2d0YXIKKyAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KKyAgICBmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7CisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCisgICAgcm1kaXIgJHtEfSR7bGliZGlyfQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcm10IgorCitGSUxFU18ke1BOfS1ybXQgPSAiJHtiYXNlX3NiaW5kaXJ9L3JtdCoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInRhciIKK0FMVEVSTkFUSVZFXyR7UE59LXJtdCA9ICJybXQiCitBTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorQUxURVJOQVRJVkVfJHtQTn0tcm10X2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7YmFzZV9zYmluZGlyfS9ybXQiCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRhci1yZXBsYWNlbWVudC1uYXRpdmUiCitOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKaW5kZXggM2VjZThjMy4uMGY1MDY3NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKQEAgLTgsNiArOCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ESVNDTEFJTUVSO21kNT0wNzFiZDY5Y2I3OGIxODg4OGVhNWUzZGE1YzMxMjdmYSIKIFBSID0icjEwIgogCitERVBFTkRTICs9ICJsaWJuc2wyIgogCiBQQUNLQUdFUyA9ICIke1BOfS1kYmcgbGlid3JhcCBsaWJ3cmFwLWRvYyBsaWJ3cmFwLWRldiBsaWJ3cmFwLXN0YXRpY2RldiAke1BOfSAke1BOfS1kb2MiCiBGSUxFU19saWJ3cmFwID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCkBAIC02Nyw3ICs2OCw2IEBACiAgICAgICAgICAgICAgICAgJ0tJTExfT1BUPS1ES0lMTF9JUF9PUFRJT05TJyBcCiAgICAgICAgICAgICAgICAgJ1VNQVNLPS1EREFFTU9OX1VNQVNLPTAyMicgXAogICAgICAgICAgICAgICAgICdORVRHUk9VUD0ke0VYVFJBX09FTUFLRV9ORVRHUk9VUH0nIFwKLSAgICAgICAgICAgICAgICAnTElCUz0tbG5zbCcgXAogICAgICAgICAgICAgICAgICdBUkZMQUdTPXJ2JyBcCiAgICAgICAgICAgICAgICAgJ0FVWF9PQko9d2Vha19zeW1ib2xzLm8nIFwKICAgICAgICAgICAgICAgICAnVExJPScgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMzE0N2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCB0aGF0IG1lYXN1cmVzIENQVSByZXNvdXJjZXMiCi1ERVNDUklQVElPTiA9ICJ0aW1lIG1lYXN1cmVzIG1hbnkgb2YgdGhlIENQVSByZXNvdXJjZXMsIHN1Y2ggYXMgdGltZSBhbmQgXAotbWVtb3J5LCB0aGF0IG90aGVyIHByb2dyYW1zIHVzZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGltZS8iCi1TRUNUSU9OID0gInV0aWxzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1pbmhlcml0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJ0aW1lIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90aW1lL3RpbWUtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGUwMGRjYjhjM2FiMTFjN2NmNWEwZDY5ODgyOGFjOTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGEyZjU0MDE1NTk2MWEzNWJhOWI4NGFlYzVlNzdlM2FlMzZjNzRjZWNiNDQ4NGRiNDU1OTYwNjAxYjdhMmUxYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYjA4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS45LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiVG9vbCB0aGF0IG1lYXN1cmVzIENQVSByZXNvdXJjZXMiCitERVNDUklQVElPTiA9ICJ0aW1lIG1lYXN1cmVzIG1hbnkgb2YgdGhlIENQVSByZXNvdXJjZXMsIHN1Y2ggYXMgdGltZSBhbmQgXAorbWVtb3J5LCB0aGF0IG90aGVyIHByb2dyYW1zIHVzZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGltZS8iCitTRUNUSU9OID0gInV0aWxzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitpbmhlcml0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ0aW1lIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90aW1lL3RpbWUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDIzNTZlMGZlMWMwYjg1Mjg1ZDgzYzZiMmFkNTFiNWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmJhY2YwYzgxZTYyNDI5ZGYzZTMzYmRhNGNlZTM4NzU2NjA0ZjE4ZTAxZDk3NzMzOGUyMzMwNmEzZTNiNTIxZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNmUzNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCi0jCi1TVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKLQotU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAotICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEgXAotICAgICAgICAgICAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi0KLVNSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiZTVlODRmMDBmOWQxOGJkNmViYzhiMWFmZmVjOTFiMTUiCi1TUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjBhZjZhODVmYzRlYTk1ODMyZjc2NTI0ZjM1Njk2YTYxYWJiMzk5MmZkM2Y4ZGIzM2U1YTFmOTU2NTNlMDQzZjIiCi1TUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gIjAxMWQzOTRiNzBlNmVlMzgyM2ZkNzcwMTBiOTk3MzdmIgotU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICI0ZWM3NGY4YTg0MzcyNTcwMTM1ZWE0YmUxNmEwNDI0NDJmYWZlMTAwZjU1OThjYjEwMTdiZmQzMGFmNmFhYTcwIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWluaGVyaXQgbmF0aXZlCi0KLUVYVFJBX09FTUFLRSArPSAiY2M9JyR7Q0N9JyIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgemljICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHpkdW1wICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHR6c2VsZWN0ICR7RH0ke2JpbmRpcn0vCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Zy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThnLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMmI2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Zy5iYgpAQCAtMCwwICsxLDMwIEBACisjIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCisjCitTVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCitMSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAorICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEgXAorICAgICAgICAgICAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpjb2RlLm1kNXN1bV0gPSAiYjQ4ZjAyODJiODBiYjdkYmUxNmUzNTYyNmY0NDZhZTkiCitTUkNfVVJJW3R6Y29kZS5zaGEyNTZzdW1dID0gImFhNTNmNGZiNjU3MGYwMjA4MWJlNjFkYzExYWRlMTllYTVhMjgwYzIzODIyYTViNDAxNmNlMGM2YmUyM2M0MjciCitTUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImU3MWNiMWY5ZDhkNTNjNDM5MDRkNzlkN2FlZWVkYzFiIgorU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIwMmRmZGU1MzQ4NzJmNjUxM2FlNDU1M2EzMzg4ZmRhZTU3OTQ0MWUzMWI4NjJlYTk5MTcwZGZjNDQ3ZjQ2YTE2IgorCitTID0gIiR7V09SS0RJUn0iCisKK2luaGVyaXQgbmF0aXZlCisKK0VYVFJBX09FTUFLRSArPSAiY2M9JyR7Q0N9JyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgemljICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHpkdW1wICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHR6c2VsZWN0ICR7RH0ke2JpbmRpcn0vCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Zi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2NzU0MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThmLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKLQotREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi0KLVNSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiZTVlODRmMDBmOWQxOGJkNmViYzhiMWFmZmVjOTFiMTUiCi1TUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjBhZjZhODVmYzRlYTk1ODMyZjc2NTI0ZjM1Njk2YTYxYWJiMzk5MmZkM2Y4ZGIzM2U1YTFmOTU2NTNlMDQzZjIiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAotICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgotSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgotCi1UWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCi0gICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAotICAgICAgICAiCi0jIHBhY2lmaWNuZXcgCi0KLWRvX2NvbXBpbGUgKCkgewotICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAotICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCi0gICAgICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLSAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LwotICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLSAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLSAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbwotCi0gICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCi0gICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCi0gICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCi0gICAgICAgICAgICBleGl0IDEKLSAgICAgICAgZmkKLQotICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKLQlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKLQotCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCi0JCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCi0JZmkKLQkKLQlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KLQkJZXhpdCAwCi0JZmkKLQkKLQlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KLQkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKLQkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCi0JCXR6PSJVbml2ZXJzYWwiCi0JCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKLQkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KLQkJCXJtIC1mICIke2V0Y19sdH0iCi0JCWZpCi0JCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgotCWZpCi19Ci0KLSMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKLSMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKLQotUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCi0gICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAotICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCi0KLUZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCi1SUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgotCi1GSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCi1SUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKLQotRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgotCi1GSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKLQotRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKLVJQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKLQotRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCi1SUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKLQotRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKLVJQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCi0KLUZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCi1SUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgotCi1GSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCi1SUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCi0KLUZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgotUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCi0KLUZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgotUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCi0KLQotRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgotUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgotCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFuZ2tvayAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgotCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThnLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Zy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmE4MmFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Zy5iYgpAQCAtMCwwICsxLDIxNSBAQAorU1VNTUFSWSA9ICJUaW1lem9uZSBkYXRhIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM2NzljOWQ2YjAyYmMyNzU3YjNlYWY4ZjUzYzQzZmJhIgorCitERVBFTkRTID0gInR6Y29kZS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKKworU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJlNzFjYjFmOWQ4ZDUzYzQzOTA0ZDc5ZDdhZWVlZGMxYiIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMDJkZmRlNTM0ODcyZjY1MTNhZTQ1NTNhMzM4OGZkYWU1Nzk0NDFlMzFiODYyZWE5OTE3MGRmYzQ0N2Y0NmExNiIKKworaW5oZXJpdCBhbGxhcmNoCisKK1JDT05GTElDVFNfJHtQTn0gPSAidGltZXpvbmVzIHRpbWV6b25lLWFmcmljYSB0aW1lem9uZS1hbWVyaWNhIHRpbWV6b25lLWFudGFyY3RpY2EgXAorICAgICAgICAgICAgIHRpbWV6b25lLWFyY3RpYyB0aW1lem9uZS1hc2lhIHRpbWV6b25lLWF0bGFudGljIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hdXN0cmFsaWEgdGltZXpvbmUtZXVyb3BlIHRpbWV6b25lLWluZGlhbiBcCisgICAgICAgICAgICAgdGltZXpvbmUtaXNvMzE2Ni50YWIgdGltZXpvbmUtcGFjaWZpYyB0aW1lem9uZS16b25lLnRhYiIKKworUyA9ICIke1dPUktESVJ9IgorCitERUZBVUxUX1RJTUVaT05FID89ICJVbml2ZXJzYWwiCitJTlNUQUxMX1RJTUVaT05FX0ZJTEUgPz0gIjEiCisKK1RaT05FUz0gImFmcmljYSBhbnRhcmN0aWNhIGFzaWEgYXVzdHJhbGFzaWEgZXVyb3BlIG5vcnRoYW1lcmljYSBzb3V0aGFtZXJpY2EgIFwKKyAgICAgICAgIGZhY3RvcnkgZXRjZXRlcmEgYmFja3dhcmQgc3lzdGVtdiBcCisgICAgICAgICIKKyMgcGFjaWZpY25ldyAKKworZG9fY29tcGlsZSAoKSB7CisgICAgICAgIGZvciB6b25lIGluICR7VFpPTkVTfTsgZG8gXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mbyAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4IC1MIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQgLUwgJHtTfS9sZWFwc2Vjb25kcyBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgZG9uZQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyRleGVjX3ByZWZpeCAke0R9JHtkYXRhZGlyfS96b25laW5mbworICAgICAgICBjcCAtcFBSICR7U30vJGV4ZWNfcHJlZml4ICR7RH0vCisgICAgICAgICMgbGliYyBpcyByZW1vdmluZyB6b25laW5mbyBmaWxlcyBmcm9tIHBhY2thZ2UKKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworICAgICAgICBjcCAtcFAgIiR7U30vem9uZTE5NzAudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworICAgICAgICBjcCAtcFAgIiR7U30vaXNvMzE2Ni50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisKKyAgICAgICAgIyBJbnN0YWxsIGRlZmF1bHQgdGltZXpvbmUKKyAgICAgICAgaWYgWyAtZSAke0R9JHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9IF07IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICAgICAgIGlmIFsgIiR7SU5TVEFMTF9USU1FWk9ORV9GSUxFfSIgPSAiMSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gJHtERUZBVUxUX1RJTUVaT05FfSA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RpbWV6b25lCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgbG4gLXMgJHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9ICR7RH0ke3N5c2NvbmZkaXJ9L2xvY2FsdGltZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBiYmVycm9yICJERUZBVUxUX1RJTUVaT05FIGlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlLiIKKyAgICAgICAgICAgIGV4aXQgMQorICAgICAgICBmaQorCisgICAgICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Cit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZXRjX2x0PSIkRCR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgorCXNyYz0iJEQke3N5c2NvbmZkaXJ9L3RpbWV6b25lIgorCisJaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KKwkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKKwlmaQorCQorCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgorCQlleGl0IDAKKwlmaQorCQorCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgorCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgorCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKKwkJdHo9IlVuaXZlcnNhbCIKKwkJZWNobyAiVXBkYXRpbmcgJHtldGNfbHR9IHdpdGggJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IgorCQlpZiBbIC1MICR7ZXRjX2x0fSBdIDsgdGhlbgorCQkJcm0gLWYgIiR7ZXRjX2x0fSIKKwkJZmkKKwkJbG4gLXMgIiR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iICIke2V0Y19sdH0iCisJZmkKK30KKworIyBQYWNrYWdlcyBwcmltYXJpbHkgb3JnYW5pemVkIGJ5IGRpcmVjdG9yeSB3aXRoIGEgbWFqb3IgY2l0eQorIyBpbiBtb3N0IHRpbWUgem9uZXMgaW4gdGhlIGJhc2UgcGFja2FnZQorCitQQUNLQUdFUyA9ICJ0emRhdGEgdHpkYXRhLW1pc2MgdHpkYXRhLXBvc2l4IHR6ZGF0YS1yaWdodCB0emRhdGEtYWZyaWNhIFwKKyAgICB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFudGFyY3RpY2EgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXNpYSBcCisgICAgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgdHpkYXRhLWV1cm9wZSB0emRhdGEtcGFjaWZpYyIKKworRklMRVNfdHpkYXRhLWFmcmljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvKiIKK1JQUk9WSURFU190emRhdGEtYWZyaWNhID0gInR6ZGF0YS1hZnJpY2EiCisKK0ZJTEVTX3R6ZGF0YS1hbWVyaWNhcyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhLyogIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VTLyogICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQnJhemlsLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DYW5hZGEvKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01leGljby8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2hpbGUvKiIKK1JQUk9WSURFU190emRhdGEtYW1lcmljYXMgPSAidHpkYXRhLWFtZXJpY2FzIgorCitGSUxFU190emRhdGEtYW50YXJjdGljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbnRhcmN0aWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFudGFyY3RpY2EgPSAidHpkYXRhLWFudGFyY3RpY2EiCisKK0ZJTEVTX3R6ZGF0YS1hcmN0aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXJjdGljLyoiCitSUFJPVklERVNfdHpkYXRhLWFyY3RpYyA9ICJ0emRhdGEtYXJjdGljIgorCitGSUxFU190emRhdGEtYXNpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9Bc2lhLyogICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0luZGlhbi8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWlkZWFzdC8qIgorUlBST1ZJREVTX3R6ZGF0YS1hc2lhID0gInR6ZGF0YS1hc2lhIgorCitGSUxFU190emRhdGEtYXRsYW50aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXRsYW50aWMvKiIKK1JQUk9WSURFU190emRhdGEtYXRsYW50aWMgPSAidHpkYXRhLWF0bGFudGljIgorCitGSUxFU190emRhdGEtYXVzdHJhbGlhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hdXN0cmFsaWEgPSAidHpkYXRhLWF1c3RyYWxpYSIKKworRklMRVNfdHpkYXRhLWV1cm9wZSArPSAiJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvKiIKK1JQUk9WSURFU190emRhdGEtZXVyb3BlID0gInR6ZGF0YS1ldXJvcGUiCisKK0ZJTEVTX3R6ZGF0YS1wYWNpZmljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvKiIKK1JQUk9WSURFU190emRhdGEtcGFjaWZpYyA9ICJ0emRhdGEtcGFjaWZpYyIKKworRklMRVNfdHpkYXRhLXBvc2l4ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4LyoiCitSUFJPVklERVNfdHpkYXRhLXBvc2l4ID0gInR6ZGF0YS1wb3NpeCIKKworRklMRVNfdHpkYXRhLXJpZ2h0ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0LyoiCitSUFJPVklERVNfdHpkYXRhLXJpZ2h0ID0gInR6ZGF0YS1yaWdodCIKKworCitGSUxFU190emRhdGEtbWlzYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9DdWJhICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FZ3lwdCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FaXJlICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9GYWN0b3J5ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQi1FaXJlICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ib25na29uZyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JY2VsYW5kICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JcmFuICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Jc3JhZWwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYW1haWNhICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYXBhbiAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ld2FqYWxlaW4gICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9MaWJ5YSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OYXZham8gICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb2xhbmQgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb3J0dWdhbCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9TaW5nYXBvcmUgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9UdXJrZXkiCitSUFJPVklERVNfdHpkYXRhLW1pc2MgPSAidHpkYXRhLW1pc2MiCisKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ib25vbHVsdSAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9BbmNob3JhZ2UgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9Mb3NfQW5nZWxlcyAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9EZW52ZXIgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DaGljYWdvICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9OZXdfWW9yayAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DYXJhY2FzICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9TYW9fUGF1bG8gICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL0xvbmRvbiAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL1BhcmlzICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhL0NhaXJvICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL01vc2NvdyAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EdWJhaSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9LYXJhY2hpICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EaGFrYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9CYW5na29rICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ib25nX0tvbmcgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ub2t5byAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0RhcndpbiAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0FkZWxhaWRlICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0JyaXNiYW5lICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL1N5ZG5leSAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ob3VtZWEgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ0VUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ1NUNkNEVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRUVUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUNUVEVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0IgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UKzAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01ULTAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UMCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR3JlZW53aWNoICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSFNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTUVUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUN01EVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlogICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlotQ0hBVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFJDICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFNUOFBEVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9DICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9LICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVUNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVRDICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVW5pdmVyc2FsICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVy1TVSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vV0VUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vWnVsdSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZS50YWIgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZTE5NzAudGFiICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vaXNvMzE2Ni50YWIgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXRjLyoiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtAICIke3N5c2NvbmZkaXJ9L3RpbWV6b25lIiBpZiBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCdJTlNUQUxMX1RJTUVaT05FX0ZJTEUnKSkgZWxzZSAiIiB9IgorQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYgppbmRleCBmNmE0Y2I2Li5kYWJhNzIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCkBAIC02MSw0ICs2MSw0IEBACiBBTFRFUk5BVElWRV8ke1BOfSA9ICJ1bnppcCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVt1bnppcF0gPSAiJHtiaW5kaXJ9L3VuemlwIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzQ0YzgwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TaWduZWQtb2ZmLWJ5OiBEaWVnbyBSb25kaW5pIDxkaWVnby5tbEB6b2hvLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1JbmRleDogd2F0Y2hkb2ctNS4xNS93YXRjaGRvZy5jb25mCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2F0Y2hkb2ctNS4xNS5vcmlnL3dhdGNoZG9nLmNvbmYKLSsrKyB3YXRjaGRvZy01LjE1L3dhdGNoZG9nLmNvbmYKLUBAIC0yOCw3ICsyOCw3IEBACi0gI3JldHJ5LXRpbWVvdXQJCT0gNjAKLSAjcmVwYWlyLW1heGltdW0JCT0gMQotIAotLSN3YXRjaGRvZy1kZXZpY2UJPSAvZGV2L3dhdGNoZG9nCi0rd2F0Y2hkb2ctZGV2aWNlCT0gL2Rldi93YXRjaGRvZwotIAotICMgRGVmYXVsdHMgY29tcGlsZWQgaW50byB0aGUgYmluYXJ5Ci0gI3RlbXBlcmF0dXJlLXNlbnNvcgk9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1pbml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctaW5pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI3NjVmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1pbml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU2lnbmVkLW9mZi1ieTogRGllZ28gUm9uZGluaSA8ZGllZ28ubWxAem9oby5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotLS0tIHdhdGNoZG9nLTUuMTMub3JpZy9yZWRoYXQvd2F0Y2hkb2cuaW5pdAkyMDE0LTExLTEyIDE3OjE4OjM5LjEyNTk0MzAwMCArMDEwMAotKysrIHdhdGNoZG9nLTUuMTMvcmVkaGF0L3dhdGNoZG9nLmluaXQJMjAxNC0xMS0xMiAxODoyNzozNi4xODk5NDMwMDAgKzAxMDAKLUBAIC03LDcgKzcsNyBAQAotICMgICAgICAgICAgICAgICAgIEhlbm5pbmcgUC4gU2NobWllZGVoYXVzZW4gPGhwc0B0YW5zdGFhZmwuZGU+Ci0gCi0gIyBTb3VyY2UgZnVuY3Rpb24gbGlicmFyeS4KLS0uIC9ldGMvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi0rLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKLSAKLSBbIC14IC91c3Ivc2Jpbi93YXRjaGRvZyAtYSAtZSAvZXRjL3dhdGNoZG9nLmNvbmYgXSB8fCBleGl0IDAKLSAKLUBAIC0yMywyMiArMjMsMjIgQEAKLSAKLSBzdGFydCgpIHsKLSAKLS0JZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCi0rCWVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCi0gCWlmIFsgLW4gIiQocGlkb2Zwcm9jICRwcm9nKSIgXTsgdGhlbgotLQkJZWNobyAtbiAkIiRwcm9nOiBhbHJlYWR5IHJ1bm5pbmciCi0tCQllY2hvX2ZhaWx1cmUKLSsJCWVjaG8gLW4gIiRwcm9nOiBhbHJlYWR5IHJ1bm5pbmcgIgotKwkJZmFpbHVyZQotIAkJZWNobwotIAkJcmV0dXJuIDEKLSAJZmkKLSAJaWYgWyAiJFZFUkJPU0UiID0gInllcyIgXTsgdGhlbgotLQkgICAgZGFlbW9uIC91c3Ivc2Jpbi8ke3Byb2d9IC12Ci0rCSAgICAvdXNyL3NiaW4vJHtwcm9nfSAtdgotIAllbHNlCi0tCSAgICBkYWVtb24gL3Vzci9zYmluLyR7cHJvZ30KLSsJICAgIC91c3Ivc2Jpbi8ke3Byb2d9Ci0gICAgICAgICBmaQotIAlSRVRWQUw9JD8KLSAJWyAkUkVUVkFMIC1lcSAwIF0gJiYgdG91Y2ggJGxvY2tmaWxlCi0tCVsgJFJFVFZBTCAtZXEgMCBdICYmIGVjaG9fc3VjY2VzcwotLQlbICRSRVRWQUwgLW5lIDAgXSAmJiBlY2hvX2ZhaWx1cmUKLSsJWyAkUkVUVkFMIC1lcSAwIF0gJiYgc3VjY2VzcwotKwlbICRSRVRWQUwgLW5lIDAgXSAmJiBmYWlsdXJlCi0gCWVjaG8KLSAJcmV0dXJuICRSRVRWQUwKLSB9Ci1AQCAtNTAsOCArNTAsMTAgQEAKLSAJIyBhbmQgcmVib290IHRoZSBib3guCi0gCWtpbGxwcm9jICRwcm9nIC1URVJNCi0gCVJFVFZBTD0kPwotLQllY2hvCi0gCVsgJFJFVFZBTCAtZXEgMCBdICYmIHJtIC1mICRsb2NrZmlsZSAkcGlkZmlsZQotKwlbICRSRVRWQUwgLWVxIDAgXSAmJiBzdWNjZXNzCi0rCVsgJFJFVFZBTCAtbmUgMCBdICYmIGZhaWx1cmUKLSsJZWNobwotIAlyZXR1cm4gJFJFVFZBTAotIH0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLmluaXQgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy5pbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzEwN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy5pbml0CkBAIC0wLDAgKzEsMTEwIEBACisjIS9iaW4vc2gKKyMvZXRjL2luaXQuZC93YXRjaGRvZzogc3RhcnQgd2F0Y2hkb2cgZGFlbW9uLgorCisjIyMgQkVHSU4gSU5JVCBJTkZPCisjIFByb3ZpZGVzOiAgICAgICAgICB3YXRjaGRvZworIyBTaG9ydC1EZXNjcmlwdGlvbjogU3RhcnQgc29mdHdhcmUgd2F0Y2hkb2cgZGFlbW9uCisjIFJlcXVpcmVkLVN0YXJ0OiAgICAkYWxsCisjIFJlcXVpcmVkLVN0b3A6ICAgICAkYWxsCisjIFNob3VsZC1TdGFydDogICAgICAKKyMgU2hvdWxkLVN0b3A6ICAgICAgIAorIyBEZWZhdWx0LVN0YXJ0OiAgICAgMiAzIDQgNQorIyBEZWZhdWx0LVN0b3A6ICAgICAgMCAxIDYKKyMjIyBFTkQgSU5JVCBJTkZPCisKK1BBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4KKwordGVzdCAteCAvdXNyL3NiaW4vd2F0Y2hkb2cgfHwgZXhpdCAwCisKKyMgRm9yIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGluaXQgc2NyaXB0IHVzZSB0aGUgZmlsZQorIyAvZXRjL2RlZmF1bHQvd2F0Y2hkb2csIGRvIG5vdCBlZGl0IHRoaXMgaW5pdCBzY3JpcHQuCisKKyMgU2V0IHJ1bl93YXRjaGRvZyB0byAxIHRvIHN0YXJ0IHdhdGNoZG9nIG9yIDAgdG8gZGlzYWJsZSBpdC4KK3J1bl93YXRjaGRvZz0wCisKKyMgU3BlY2lmeSBhZGRpdGlvbmFsIHdhdGNoZG9nIG9wdGlvbnMgaGVyZSAoc2VlIG1hbnBhZ2UpLgord2F0Y2hkb2dfb3B0aW9ucz0iIgorCisjIFNwZWNpZnkgbW9kdWxlIHRvIGxvYWQKK3dhdGNoZG9nX21vZHVsZT0ibm9uZSIKKworWyAtZSAvZXRjL2RlZmF1bHQvd2F0Y2hkb2cgXSAmJiAuIC9ldGMvZGVmYXVsdC93YXRjaGRvZworCitOQU1FPXdhdGNoZG9nCitEQUVNT049L3Vzci9zYmluL3dhdGNoZG9nCisKK1NUT1BfUkVUUllfU0NIRURVTEU9J1RFUk0vMTAvZm9yZXZlci9LSUxMLzEnCisKKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCisKKyMgTW9jayBEZWJpYW4gc3R1ZmYKK2xvZ19iZWdpbl9tc2coKSB7CisgICAgZWNobyAtbiAkKgorfQorCitsb2dfZW5kX21zZygpIHsKKyAgICBpZiBbICIkMSIgPSAiMCIgXTsgdGhlbgorICAgICAgICBlY2hvICdkb25lJworICAgIGVsc2UKKyAgICAgICAgZWNobyAnZXJyb3InCisgICAgZmkKK30KKworbG9nX2RhZW1vbl9tc2coKSB7CisgICAgZWNobyAkKgorfQorCitsb2dfcHJvZ3Jlc3NfbXNnKCkgeworICAgIGVjaG8gJCoKK30KKworY2FzZSAiJDEiIGluCisgIHN0YXJ0KQorICAgIGlmIFsgJHJ1bl93YXRjaGRvZyA9IDEgXQorICAgIHRoZW4KKyAgICAJIyBkbyB3ZSBoYXZlIHRvIGxvYWQgYSBtb2R1bGU/CisJWyAiJHt3YXRjaGRvZ19tb2R1bGU6LW5vbmV9IiAhPSAibm9uZSIgXSAmJiAvc2Jpbi9tb2Rwcm9iZSAkd2F0Y2hkb2dfbW9kdWxlCisKKwkjIENoZWNrIC9kZXYvd2F0Y2hkb2cgaGVyZSBiZWNhdXNlIGlmIGl0IGRvZXMgbm90IGV4aXN0IGFmdGVyIG1vZHVsZSBsb2FkaW5nLAorCSMgaXQgbWFrZXMgbm8gc2Vuc2UgdG8gc3RhcnQgdGhlIGRhZW1vbgorCXRlc3QgLWUgL2Rldi93YXRjaGRvZyB8fCB7IGxvZ19kYWVtb25fbXNnICJkYWVtb24gbm90IHN0YXJ0IGR1ZSB0byBsYWNrIG9mIC9kZXYvd2F0Y2hkb2ciOyBleGl0IDA7IH0KKworCWxvZ19iZWdpbl9tc2cgIlN0YXJ0aW5nIHdhdGNoZG9nIGRhZW1vbi4uLiIKKwlzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlIC92YXIvcnVuLyROQU1FLnBpZCBcCisgICAgICAgICAgICAgLS1leGVjICREQUVNT04gLS0gJHdhdGNoZG9nX29wdGlvbnMKKwlsb2dfZW5kX21zZyAkPworICAgIGZpCisgICAgOzsKKworICBzdG9wKQorICAgIGlmIFsgJHJ1bl93YXRjaGRvZyA9IDEgXQorICAgIHRoZW4KKwlsb2dfYmVnaW5fbXNnICJTdG9wcGluZyB3YXRjaGRvZyBkYWVtb24uLi4iCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAkU1RPUF9SRVRSWV9TQ0hFRFVMRSBcCisJICAgIC0tcGlkZmlsZSAvdmFyL3J1bi8kTkFNRS5waWQKKwkKKyAgICBmaQorICAgIDs7CisKKyAgcmVzdGFydCkKKyAgICAkMCBmb3JjZS1yZWxvYWQKKyAgICA7OworCisgIGZvcmNlLXJlbG9hZCkKKyAgICBpZiBbICRydW5fd2F0Y2hkb2cgPSAwIF07IHRoZW4gZXhpdCAwOyBmaQorICAgIGxvZ19kYWVtb25fbXNnICJSZXN0YXJ0aW5nICROQU1FIgorICAgICQwIHN0b3AKKyAgICAkMCBzdGFydAorICAgIDs7CisKKyAgc3RhdHVzKQorICAgIHN0YXR1cyAiJERBRU1PTiIKKyAgICA7OworCisgICopCisgICAgZWNobyAiVXNhZ2U6IC9ldGMvaW5pdC5kL3dhdGNoZG9nIHtzdGFydHxzdG9wfHJlc3RhcnR8Zm9yY2UtcmVsb2FkfHN0YXR1c30iCisgICAgZXhpdCAxCisKK2VzYWMKKworZXhpdCAwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgppbmRleCAzN2IzN2FlLi4xYWNhYjJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKQEAgLTExLDggKzExLDcgQEAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3dhdGNoZG9nL3dhdGNoZG9nLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtbGludXgtcGFyYW0uaC1mb3ItRVhFQ19QQUdFU0laRS1kZWZpbml0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93YXRjaGRvZy1pbml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dhdGNoZG9nLWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd2F0Y2hkb2cuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly93ZF9rZWVwYWxpdmUuaW5pdCBcCiAiCiAKQEAgLTIyLDMxICsyMSwzNSBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvd2F0Y2hkb2cvZmlsZXMvd2F0Y2hkb2cvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3dhdGNoZG9nLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCiAKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMgIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMgIgotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjICIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtbmZzICIKK0RFUEVORFMgKz0gImxpYnRpcnBjIgorQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgorTERGTEFHUyArPSAiLWx0aXJwYyIKKworRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLW5mcyAiCiAKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0ta2VlcGFsaXZlIgogCi1JTklUU0NSSVBUX05BTUVfJHtQTn0gPSAid2F0Y2hkb2cuc2giCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgorSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIndhdGNoZG9nIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0gPSAic3RhcnQgMjUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKIAogSU5JVFNDUklQVF9OQU1FXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1rZWVwYWxpdmUgPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWtlZXBhbGl2ZSA9ICJzdGFydCAyNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWtlZXBhbGl2ZSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3YXRjaGRvZy5zZXJ2aWNlIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUuc2VydmljZSIKKyMgV2hlbiB1c2luZyBzeXN0ZW1kLCBjb25zaWRlciBtYWtpbmcgdXNlIG9mIGludGVybmFsIHdhdGNoZG9nIHN1cHBvcnQgb2Ygc3lzdGVtZC4KKyMgU2VlIFJ1bnRpbWVXYXRjaGRvZ1NlYyBpbiAvZXRjL3N5c3RlbWQvc3lzdGVtLmNvbmYuCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQogCWluc3RhbGwgLW0gMDY0NCAke1N9L2RlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQogCi0JaW5zdGFsbCAtRCAke1N9L3JlZGhhdC93YXRjaGRvZy5pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvd2F0Y2hkb2cuc2gKKwlpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vd2F0Y2hkb2cuaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3dhdGNoZG9nCiAJaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3dkX2tlZXBhbGl2ZS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC93ZF9rZWVwYWxpdmUKIAogCSMgd2F0Y2hkb2cuY29uZiBpcyBwcm92aWRlZCBieSB0aGUgd2F0Y2hkb2ctY29uZmlnIHJlY2lwZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMzkyODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFzaWMgZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS94ZGctdXRpbHMvIgotREVTQ1JJUFRJT04gPSAiVGhlIHhkZy11dGlscyBwYWNrYWdlIGlzIGEgc2V0IG9mIHNpbXBsZSBzY3JpcHRzIHRoYXQgcHJvdmlkZSBiYXNpYyBcCi1kZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyBmb3IgYW55IEZyZWUgRGVza3RvcCwgc3VjaCBhcyBMaW51eC4gXAotVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBkZWZhY3RvIHN0YW5kYXJkcy4gXAotVGhlIGZvbGxvd2luZyBzY3JpcHRzIGFyZSBwcm92aWRlZCBhdCB0aGlzIHRpbWU6IFwKLXhkZy1kZXNrdG9wLWljb24gXAoteGRnLWRlc2t0b3AtbWVudSBcCi14ZGctZW1haWwgXAoteGRnLWljb24tcmVzb3VyY2UgXAoteGRnLW1pbWUgXAoteGRnLW9wZW4gXAoteGRnLXNjcmVlbnNhdmVyIFwKLXhkZy10ZXJtaW5hbCBcCi0iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTUzNjdhOTA5MzQwOThkNmIwNWFmM2I3NDY0MDUwMTQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNjFlNzVlYjc2Yzk0ZDE5ZjZmNGYzMzBkOGVlNjI2YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTE5NTJlMmM2YmIyMTIxNGUwYmI1NGUwZGZmYTA1N2QzMGY1NTYzMzAwMjI1YzI0YzE2ZmJhODQ2MjU4YmNjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ZGctdXRpbHMtKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSgocmN8YWxwaGF8YmV0YSlcZCspPylcLih0YXJcLmd6fHRneikiCi0KLSMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBUaGUgeHByb3AgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotREVQRU5EUyA9ICJ4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAieHByb3AiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQ2NjM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkJhc2ljIGRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUveGRnLXV0aWxzLyIKK0RFU0NSSVBUSU9OID0gIlRoZSB4ZGctdXRpbHMgcGFja2FnZSBpcyBhIHNldCBvZiBzaW1wbGUgc2NyaXB0cyB0aGF0IHByb3ZpZGUgYmFzaWMgXAorZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgZm9yIGFueSBGcmVlIERlc2t0b3AsIHN1Y2ggYXMgTGludXguIFwKK1RoZXkgYXJlIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzZXQgb2YgZGVmYWN0byBzdGFuZGFyZHMuIFwKK1RoZSBmb2xsb3dpbmcgc2NyaXB0cyBhcmUgcHJvdmlkZWQgYXQgdGhpcyB0aW1lOiBcCit4ZGctZGVza3RvcC1pY29uIFwKK3hkZy1kZXNrdG9wLW1lbnUgXAoreGRnLWVtYWlsIFwKK3hkZy1pY29uLXJlc291cmNlIFwKK3hkZy1taW1lIFwKK3hkZy1vcGVuIFwKK3hkZy1zY3JlZW5zYXZlciBcCit4ZGctdGVybWluYWwgXAorIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE1MzY3YTkwOTM0MDk4ZDZiMDVhZjNiNzQ2NDA1MDE0IgorCitTUkNfVVJJID0gImh0dHA6Ly9wb3J0bGFuZC5mcmVlZGVza3RvcC5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlaW5zdGF0ZS14ZGctdGVybWluYWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC10aGUtaW4tc2NyaXB0LW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTAyMDQyNTA4YjYyNjAyN2EzNzA5ZDEwNWYwYjYzZmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc5OGIwOGFmOGE4ZTIwNjNkZGRlNmM5ZmEzMzk4Y2E4MTQ4NGYyN2RlYzY0MmM1NjI3ZmZjYWEwZDQwNTFkOSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAieGRnLXV0aWxzLSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykoKHJjfGFscGhhfGJldGEpXGQrKT8pXC4odGFyXC5nenx0Z3opIgorCisjIE5lZWRzIGJyb2tlbnNlcCBhcyB0aGlzIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgVGhlIHhwcm9wIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0RFUEVORFMgPSAieG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gInhwcm9wIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkXzIuMy4xNS5iYgppbmRleCAxYmViNTQ1Li42ZTQzZjViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkXzIuMy4xNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkXzIuMy4xNS5iYgpAQCAtNiw4ICs2LDcgQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04YWQ4NjE1MTk4NTQyNDQ0Zjg0ZDI4YTZjZjIyNmRkOCIKIAotREVQRU5EUyA9ICIiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjICIKK0RFUEVORFMgKz0gImxpYnRpcnBjIgogUFIgPSAicjIiCiAKICMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCkBAIC00Miw4ICs0MSw4IEBACiBQQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIgogUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0td2l0aC1saWJ3cmFwLCx0Y3Atd3JhcHBlcnMiCiAKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjICIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyAiCitDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCitMREZMQUdTICs9ICItbHRpcnBjIgogCiBkb19jb25maWd1cmUoKSB7CiAJIyBMb29rcyBsaWtlIGNvbmZpZ3VyZS5pbiBpcyBicm9rZW4sIHNvIHdlIGFyZSBza2lwcGluZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveHoveHpfNS4yLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBmOGI4Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBMWk1BIGNvbXByZXNzZWQgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vdHVrYWFuaS5vcmcveHovIgotU0VDVElPTiA9ICJiYXNlIgotCi0jIFRoZSBzb3VyY2UgaW5jbHVkZXMgYml0cyBvZiBQRCwgR1BMdjIsIEdQTHYzLCBMR1BMdjIuMSssIGJ1dCB0aGUgb25seSBmaWxlCi0jIHdoaWNoIGlzIEdQTHYzIGlzIGFuIG00IG1hY3JvIHdoaWNoIGlzbid0IHNoaXBwZWQgaW4gYW55IG9mIG91ciBwYWNrYWdlcywKLSMgYW5kIHRoZSBMR1BMIGJpdHMgYXJlIHVuZGVyIGxpYi8sIHdoaWNoIGFwcGVhcnMgdG8gYmUgdXNlZCBmb3IgbGliZ251LCB3aGljaAotIyBhcHBlYXJzIHRvIGJlIHVzZWQgZm9yIERPUyBidWlsZHMuIFNvIHdlJ3JlIGxlZnQgd2l0aCBHUEx2MisgYW5kIFBELgotTElDRU5TRSA9ICJHUEx2MisgJiBHUEwtMy4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uICYgTEdQTHYyLjErICYgUEQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0tZGV2ID0gIkdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0tc3RhdGljZGV2ID0gIkdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0tZG9jID0gIkdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0tZGJnID0gIkdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0tbG9jYWxlID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGlibHptYSA9ICJQRCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQ3NWI2YzdkY2EyMzY3NDBhY2U0YmJhNTUzZThlMWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2dldG9wdC5jO2VuZGxpbmU9MjM7bWQ1PTIwNjliMGVlNzEwNTcyYzAzYmIzMTE0ZTQ1MzJjZDg0ICIKLQotU1JDX1VSSSA9ICJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImVmNjg2NzRmYjQ3YThiOGU3NDFiMzRlNDI5ZDg2ZTlkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxOTI4YjM1N2QwYTA5YTEyYTRiNGM1ZmFmY2E4YzMxYzE5YjBlN2QzYjhlYmIxOTYyMmU5NmYyNmRiZjI4Y2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotUEFDS0FHRVMgPSsgImxpYmx6bWEiCi0KLUZJTEVTX2xpYmx6bWEgPSAiJHtsaWJkaXJ9L2xpYmx6bWEqJHtTT0xJQlN9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MTc0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgTFpNQSBjb21wcmVzc2VkIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6LyIKK1NFQ1RJT04gPSAiYmFzZSIKKworIyBUaGUgc291cmNlIGluY2x1ZGVzIGJpdHMgb2YgUEQsIEdQTHYyLCBHUEx2MywgTEdQTHYyLjErLCBidXQgdGhlIG9ubHkgZmlsZQorIyB3aGljaCBpcyBHUEx2MyBpcyBhbiBtNCBtYWNybyB3aGljaCBpc24ndCBzaGlwcGVkIGluIGFueSBvZiBvdXIgcGFja2FnZXMsCisjIGFuZCB0aGUgTEdQTCBiaXRzIGFyZSB1bmRlciBsaWIvLCB3aGljaCBhcHBlYXJzIHRvIGJlIHVzZWQgZm9yIGxpYmdudSwgd2hpY2gKKyMgYXBwZWFycyB0byBiZSB1c2VkIGZvciBET1MgYnVpbGRzLiBTbyB3ZSdyZSBsZWZ0IHdpdGggR1BMdjIrIGFuZCBQRC4KK0xJQ0VOU0UgPSAiR1BMdjIrICYgR1BMLTMuMC13aXRoLWF1dG9jb25mLWV4Y2VwdGlvbiAmIExHUEx2Mi4xKyAmIFBEIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisiCitMSUNFTlNFXyR7UE59LXN0YXRpY2RldiA9ICJHUEx2MisiCitMSUNFTlNFXyR7UE59LWRvYyA9ICJHUEx2MisiCitMSUNFTlNFXyR7UE59LWRiZyA9ICJHUEx2MisiCitMSUNFTlNFXyR7UE59LWxvY2FsZSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmx6bWEgPSAiUEQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk3ZDU1NGEzMjg4MWZlZTBhYTI4M2Q5NmU0N2NiMjRhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9nZXRvcHQuYztlbmRsaW5lPTIzO21kNT0yMDY5YjBlZTcxMDU3MmMwM2JiMzExNGU0NTMyY2Q4NCBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjVhY2UzMjY0YmRkMDBjNjVlZWVjMjg5MTM0NmY2NWU2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1MTJmM2I3MjZkM2IzN2I2ZGM0Yzg1NzBlMTM3YjkzMTFlNzU1MmU4Y2NiYWI0ZDM5ZDQ3Y2U1ZjQxNzcxNDUiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ei0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAorCitQQUNLQUdFUyA9KyAibGlibHptYSIKKworRklMRVNfbGlibHptYSA9ICIke2xpYmRpcn0vbGlibHptYSoke1NPTElCU30iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAieHogeHpjYXQgdW54eiBcCisgICAgICAgICAgICAgICAgICAgICBsem1hIGx6Y2F0IHVubHptYSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitleHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL3NoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNi42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjUwZjc2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdub21lLWRlc2t0b3AzIGxpYnhtbDItbmF0aXZlIFwKLQkgICBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUganNvbi1nbGliIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjg0NDk5NjgzNjZhNmY5YWFmZjNhYzIyOGRkZmM3YzY2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDFiMTZhYTU1ZDMxMmFlMGYxN2QzMTM2ZjkwZDhjNjhhYzc0ODcxNWYxMTk0MTJmYjE5MTcwMjNjNmY2MzBhOCIKLQotRVhUUkFfT0VNRVNPTiArPSAiIC1EZGlzdHJpYnV0b3JfbmFtZT0ke0RJU1RST30iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCi1SREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI4LjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDZjOWQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yOC4zLjEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjMxYTRhNDQzZThlMjJmMDg1YTEwZjgwYjdlNDFkNWYzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjkwNTQ2YTcwMWYwNDZjNWMyYjNhMDkyNjU5NTg5ZWE2ZTE3Y2IwZjlhODFlYzNmZGIzMDQ2YjAwY2VkZTZmNyIKKworRVhUUkFfT0VNRVNPTiArPSAiIC1EZGlzdHJpYnV0b3JfbmFtZT0ke0RJU1RST30iCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMgJHtkYXRhZGlyfS9tZXRhaW5mbyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaAppbmRleCAyNDk1MTdkLi5kNGYzY2MxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoCkBAIC0xLDM0ICsxLDMwIEBACi1Gcm9tIGZjMzE0ZmMzYTY2YzkyZmU3M2UxYTBjZWE0ZjQ5ZDExYjI5ZTFmNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDAwNDhhZTJkMjI1ZDI1Y2M1OGYzNzg3MThjYTZmOWRkYjFhMjI4ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTU6NTA6MzggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGhlbHAvbWVzb24uYnVpbGQ6IGRpc2FibGUgdGhlIHVzZSBvZiB5ZWxwCitTdWJqZWN0OiBbUEFUQ0hdIGhlbHAvbWVzb24uYnVpbGQ6IGRpc2FibGUgdGhlIHVzZSBvZiB5ZWxwCiAKIEluIHBhcnRpY3VsYXIgdGhpcyBhdm9pZHMgY2FsbGluZyBpdHN0b29sIHdoaWNoIG9lLWNvcmUgZG9lc24ndCBwcm92aWRlLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCi0gaGVscC9tZXNvbi5idWlsZCB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGhlbHAvbWVzb24uYnVpbGQgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2hlbHAvbWVzb24uYnVpbGQgYi9oZWxwL21lc29uLmJ1aWxkCi1pbmRleCBmNzIwYWRkLi5jYmZlYjFlIDEwMDY0NAoraW5kZXggZmRkY2Y0Yy4uZjdkNzZjNiAxMDA2NDQKIC0tLSBhL2hlbHAvbWVzb24uYnVpbGQKICsrKyBiL2hlbHAvbWVzb24uYnVpbGQKLUBAIC00Niw4ICs0Niw4IEBAIGhlbHBfbGluZ3VhcyA9IFsKLSAgICdzdicKK0BAIC0zMiw3ICszMiw3IEBAIGhlbHBfbWVkaWEgPSBbCisgICAnbWVkaWEvd2ViLWJyb3dzZXIucG5nJwogIF0KICAKIC1nbm9tZS55ZWxwKG1lc29uLnByb2plY3RfbmFtZSgpLAogLSAgc291cmNlczogaGVscF9maWxlcywKIC0gIG1lZGlhOiBoZWxwX21lZGlhLAotLSAgbGFuZ3VhZ2VzOiBoZWxwX2xpbmd1YXMsCiAtKQogKyNnbm9tZS55ZWxwKG1lc29uLnByb2plY3RfbmFtZSgpLAogKyMgIHNvdXJjZXM6IGhlbHBfZmlsZXMsCiArIyAgbWVkaWE6IGhlbHBfbWVkaWEsCi0rIyAgbGFuZ3VhZ2VzOiBoZWxwX2xpbmd1YXMsCiArIykKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9maWxlcy9nY3ItYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci12YXBpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2ZpbGVzL2djci1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLXZhcGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMDU0MjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2ZpbGVzL2djci1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLXZhcGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGU3ZTBjNTZjYTgyMDMxMTIxZjE5MmY3ZjcxMWI3ODQxOGIxNTRjOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyOCBOb3YgMjAxNiAxMDoxNzozNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBnY3I6IGFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcyBmb3IgdmFwaQotCi1BY2NvcmRpbmcgdG8gdGhlIHZhcGlfREVQUyBkZWZpbml0aW9uOgotZ2NyLTMudmFwaSBkZXBlbmRzIG9uIGdjay0xLnZhcGksCi1nY3ItdWktMy52YXBpIGRlcGVuZHMgb24gZ2NrLTEudmFwaSBhbmQgZ2NyLTMudmFwaQotCi1CdXQgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBtaXNzaW5nIGZvciB0aGUgbWFrZSB0YXJnZXRzLAotc28gaXQgd2lsbCBmYWlsIHdoZW4gYnVpbGQgaW4gcGFyYWxsZWw6Ci1lcnJvcjogUGFja2FnZSBgZ2NrLTEnIG5vdCBmb3VuZCBpbiBzcGVjaWZpZWQgVmFsYSBBUEkgZGlyZWN0b3JpZXMgb3IgR09iamVjdC1JbnRyb3NwZWN0aW9uIEdJUiBkaXJlY3RvcmllcwotZXJyb3I6IFBhY2thZ2UgYGdjci0zJyBub3QgZm91bmQgaW4gc3BlY2lmaWVkIFZhbGEgQVBJIGRpcmVjdG9yaWVzIG9yIEdPYmplY3QtSW50cm9zcGVjdGlvbiBHSVIgZGlyZWN0b3JpZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnNzc1OTY2LmJ1Z3ppbGxhLWF0dGFjaG1lbnRzLmdub21lLm9yZy9hdHRhY2htZW50LmNnaT9pZD0zNDE3OTFdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY3IvTWFrZWZpbGUuYW0gfCAyICstCi0gdWkvTWFrZWZpbGUuYW0gIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NyL01ha2VmaWxlLmFtIGIvZ2NyL01ha2VmaWxlLmFtCi1pbmRleCBlZGEzMDJmLi42ZTc4ZGJhIDEwMDY0NAotLS0tIGEvZ2NyL01ha2VmaWxlLmFtCi0rKysgYi9nY3IvTWFrZWZpbGUuYW0KLUBAIC0yMjEsNyArMjIxLDcgQEAgZ2lyX0RBVEEgKz0gR2NyLUBHQ1JfTUFKT1JALmdpcgotIAotIGlmIEVOQUJMRV9WQVBJR0VOCi0gCi0tZ2NyLUBHQ1JfTUFKT1JALnZhcGk6IEdjci1AR0NSX01BSk9SQC5naXIgZ2NyL0djci1AR0NSX01BSk9SQC5tZXRhZGF0YSBnY3ItQEdDUl9NQUpPUkAuZGVwcwotK2djci1AR0NSX01BSk9SQC52YXBpOiBHY3ItQEdDUl9NQUpPUkAuZ2lyIGdjci9HY3ItQEdDUl9NQUpPUkAubWV0YWRhdGEgZ2NyLUBHQ1JfTUFKT1JALmRlcHMgZ2NrLUBHQ0tfTUFKT1JALnZhcGkKLSAKLSBWQVBJR0VOX1ZBUElTICs9IGdjci1AR0NSX01BSk9SQC52YXBpCi0gCi1kaWZmIC0tZ2l0IGEvdWkvTWFrZWZpbGUuYW0gYi91aS9NYWtlZmlsZS5hbQotaW5kZXggYWE1MjQ3Ni4uNjYxMmYwZCAxMDA2NDQKLS0tLSBhL3VpL01ha2VmaWxlLmFtCi0rKysgYi91aS9NYWtlZmlsZS5hbQotQEAgLTE2MCw3ICsxNjAsNyBAQCBnaXJfREFUQSArPSBHY3JVaS1AR0NSX01BSk9SQC5naXIKLSAKLSBpZiBFTkFCTEVfVkFQSUdFTgotIAotLWdjci11aS1AR0NSX01BSk9SQC52YXBpOiBHY3JVaS1AR0NSX01BSk9SQC5naXIgdWkvR2NyVWktQEdDUl9NQUpPUkAubWV0YWRhdGEgZ2NyLXVpLUBHQ1JfTUFKT1JALmRlcHMKLStnY3ItdWktQEdDUl9NQUpPUkAudmFwaTogR2NyVWktQEdDUl9NQUpPUkAuZ2lyIHVpL0djclVpLUBHQ1JfTUFKT1JALm1ldGFkYXRhIGdjci11aS1AR0NSX01BSk9SQC5kZXBzIGdjay1AR0NLX01BSk9SQC52YXBpIGdjci1AR0NSX01BSk9SQC52YXBpCi0gCi0gVkFQSUdFTl9WQVBJUyArPSBnY3ItdWktQEdDUl9NQUpPUkAudmFwaQotIAotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjhlMGY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGJpdHMgb2YgY3J5cHRvIFVJIGFuZCBwYXJzaW5nIGV0YyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGd0ayszIHAxMS1raXQgZ2xpYi0yLjAgbGliZ2NyeXB0IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJ2xpYnhzbHQtbmF0aXZlJywgJycsIGQpfSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0jIGRlcGVuZHMgb24gZ3RrKzMsIGJ1dCBhbHNvIHgxMSB0aHJvdWdoIGd0aysteDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZ2NyLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1mb3ItdmFwaS5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNDMxNGJmODllYWMyOTNkZDBhOWQ4MDY1OTNmZjFiMzUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MDU3MmM2MjZkOGE3MDgyMjU1NjBjNDJiNDQyMWY3OTQxMzE1MjQ3ZmExNjc5ZDRlZjU2OWJkZTdmNGJiMzc5IgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9nY3ItMyBcCi0iCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI5LwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OTYzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjguMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYml0cyBvZiBjcnlwdG8gVUkgYW5kIHBhcnNpbmcgZXRjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbm9tZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKzMgcDExLWtpdCBnbGliLTIuMCBsaWJnY3J5cHQgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnbGlieHNsdC1uYXRpdmUnLCAnJywgZCl9IgorCitpbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKyMgZGVwZW5kcyBvbiBndGsrMywgYnV0IGFsc28geDExIHRocm91Z2ggZ3RrKy14MTEKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjUzMjEzMTkzMDdkYWQzNGRjYTJmZDUyZTdjOWMwMWFiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMTVlMTc1ZDFkYTdlYzQ4NmQ1OTc0OWJhMzQ5MDYyNDFjNDQyODk4MTE4Y2UyMjRhN2I3MGJmMmU4NDlmYWYwYiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vZ2NyLTMgXAorIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOS8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBUaGVzZSBmaWxlcyBtYXkgYmUgb3V0IG9mIGRhdGUgb3IgbWlzc2luZyBvdXIgZml4ZXMKKyMgbGliZ2NyeXB0Lm00IGluIHBhcnRpY3VsYXIgaXMgY2FsbGluZyBpbnRvIGxpYmdjcnlwdC1jb25maWcKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHJtIC1mICR7U30vYnVpbGQvbTQvKgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGIwNzQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOWRmYWRhMDZmOGQyZTAyZDdhMDRmNzkzYmE2ZTFkNGEyYWE1ZmZiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDE0OjU0OjE3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgbGlic2VjY29tcCAoc3ljYWxsIGZpbHRlcmluZyBtZWNoYW5pc20pCi0KLVVwc3RyZWFtIGZvcmdvdCB0byBtYWtlIGl0IG9wdGlvbmFsLCBhbmQgaXQgaXMgbm90IGN1cnJlbnRseSB1c2VkIGluIFlvY3RvCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDg2YmNmMWYuLjg5MTFmMTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE1NywxNyArMTU3LDYgQEAgZWxzZQotIGZpCi0gCi0gU0VDQ09NUF9QS0c9IiIKLS1kbmwgQ2hlY2sgZm9yIGJ1YmJsZXdyYXAgY29tcGF0aWJsZSBwbGF0Zm9ybQotLWNhc2UgJGhvc3Rfb3MgaW4KLS0gIGxpbnV4KikKLS0gICAgUEtHX0NIRUNLX01PRFVMRVMoTElCU0VDQ09NUCwgW2xpYnNlY2NvbXBdKQotLSAgICBTRUNDT01QX1BLRz0ibGlic2VjY29tcCIKLS0gICAgQUNfREVGSU5FX1VOUVVPVEVEKF9HTlVfU09VUkNFLCAxLCBbRGVmaW5lIHRvIGluY2x1ZGUgR05VIGV4dGVuc2lvbnNdKQotLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CV1JBUCwgMSwgW0RlZmluZSB0byAxIGlmIEJ1YmJsZXdyYXAgc3VwcG9ydCBpcyBhdmFpbGFibGVdKQotLSAgICBBQ19ERUZJTkUoW0VOQUJMRV9TRUNDT01QXSwgWzFdLCBbRGVmaW5lIGlmIHVzaW5nIHNlY2NvbXBdKQotLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSU5TVEFMTF9QUkVGSVgsICIkcHJlZml4IiwgW1BhdGggdG8gbGlicmFyeSBpbnN0YWxsIHByZWZpeF0pCi0tICAgIDs7Ci0tZXNhYwotIAotIGRubCBwa2ctY29uZmlnIGRlcGVuZGVuY3kgY2hlY2tzCi0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTUzOTNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA4MzRiYzg2MTkyMWZlMDM2MWYyZDZhNWI1NzE2ZmM5N2E5NTE5NDc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxMzoxMzo0NSArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IFJlbW92ZSBnbm9tZS1jb21tb24gbWFjcm8gY2FsbHMKLQotZ25vbWUtY29tbW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHRoZXNlIGFyZW4ndCBkb2luZyBtdWNoIGZvciB1cy4KLQotVXBzdHJlYW1hYmxlIGZpeCB3b3VsZCBwcm9iYWJseSBpbnZvbHZlIHVzaW5nIGF1dG9jb25mLWFyY2hpdmU6Ci1UcnlpbmcgdG8gYXZvaWQgdGhhdCBkZXBlbmRlbmN5IGZvciBub3cuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDMgLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDdhZGNmMGUuLmJiNzY1OWQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcxLDkgKzcxLDYgQEAgQUNfU1VCU1QoR05PTUVfREFURSkKLSBBQ19TVUJTVChHTk9NRV9EQVRFX0NPTU1FTlRfU1RBUlQpCi0gQUNfU1VCU1QoR05PTUVfREFURV9DT01NRU5UX0VORCkKLSAKLS1HTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSkKLS1HTk9NRV9NQUlOVEFJTkVSX01PREVfREVGSU5FUwotLQotIEFDX0FSR19FTkFCTEUoZGVwcmVjYXRpb25fZmxhZ3MsCi0gICAgICAgICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWRlcHJlY2F0aW9uLWZsYWdzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlICpfRElTQUJMRV9ERVBSRUNBVEVEIGZsYWdzIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwsCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3OWRjOWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJnbm9tZS1kZXNrdG9wIgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2Y2VlMmVjZDY3N2Q4N2VhYTBlYjVlYmZhN2I0NWZiMyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImY3NTYxYTdhMzEzZmM0NzRiMmMzOTBjZDk2OTZkZjFmNWMxZTE1NTYwODBlNDNmNGFmZTA0MmIxMDYwZTVmMmEiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCi0KLVBBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCi0KLVJSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCmluZGV4IDk2ZWM5NmIuLmI1OTkyZWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDg4ZWQ5OTZjYzllMmIyOTZjYWNmZGJlZWNlNGJlMjhhOTBiYWI1MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk2NjE5NTE4Mzg3NzMyNTFkMGE5MTRlODk3ZThhMGQ5NWNlMDI3ZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxNDo1NTo0OSArMDMwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG9uJ3QgdXNlIEFDX0NBTk9OSUNBTF9IT1NUCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHVzZSBBQ19DQU5PTklDQUxfSE9TVAogCiBUaGlzIHdvbid0IHdvcmsgd2hlbiBidWlsZGluZyBhbGxhcmNoIChhbmQgaXMgb25seSB1c2VkIHRvIGZpbmQgb3V0IGlmCiB0YXJnZXQgaXMgd2luZG93cykuCkBAIC0xMywxMyArMTMsMTMgQEAKICBjb25maWd1cmUuYWMgfCAxIC0KICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCi1JbmRleDogYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhZHdhaXRhLWljb24tdGhlbWUtMy4yNi4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS9jb25maWd1cmUuYWMKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGZiNzg3ZGMuLjVjYWVmMGMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTMsNyArMyw2IEBAIEFDX1BSRVJFUSgyLjUzKQogIAotIEFDX0lOSVQoW2Fkd2FpdGEtaWNvbi10aGVtZV0sIFszLjI2LjFdLAorIEFDX0lOSVQoW2Fkd2FpdGEtaWNvbi10aGVtZV0sIFszLjI4LjBdLAogICAgICAgICAgW2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWFkd2FpdGEtaWNvbi10aGVtZV0pCiAtQUNfQ0FOT05JQ0FMX0hPU1QKICBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQzN2Q1ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrIGljb24gdGhlbWUiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9hZHdhaXRhLWljb24tdGhlbWUvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotTElDRU5TRSA9ICJMR1BMLTMuMCB8IENDLUJZLVNBLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4NGNhYzg4ZTQ2ZmMwNzY0N2VhMDdlNmMyNGVlYjdjIgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4taW5zdGFsbGF0aW9uLWNvbW1hbmRzLWFzLXNoZWxsLWpvYnMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZWY4N2U3ODk3MTFlNTEzMDc5MmQ0YjUzNjZjMDA1ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyOGJhNzM5MmM3NzYxOTk2ZWZkNzgwNzc5MTY3ZWE2Yzk0MGVlZGZiMWJmMzdjZmU5YmNjYjcwMjFmNTRkNzlkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIEJ1aWxkIHVzZXMgZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgdG8gY3JlYXRlIHBuZyB2ZXJzaW9uczoKLSAgICAgICAgIyBubyBuZWVkIHRvIHN0b3JlIHRoZSBzdmdzIGFueW1vcmUuCi0Jcm0gLWYgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy5zdmcgXAotCSAgICAgICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMtcnRsLnN2ZwotfQotCi1QQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgotRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKLUZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyIKLUZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKLSAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgotRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKLSAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI4LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBkZDM1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI4LjAuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJHVEsrIGljb24gdGhlbWUiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9hZHdhaXRhLWljb24tdGhlbWUvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9nbm9tZSIKKworTElDRU5TRSA9ICJMR1BMLTMuMCB8IENDLUJZLVNBLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4NGNhYzg4ZTQ2ZmMwNzY0N2VhMDdlNmMyNGVlYjdjIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4taW5zdGFsbGF0aW9uLWNvbW1hbmRzLWFzLXNoZWxsLWpvYnMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMjViMmQ4MmNiZWJmMmNjOWNkNDY5NDU3YjYwNGYyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWFlOGMxZGZmZDY3NzJmZDFhMjFhM2QzNjVhMGVhMjhiN2MzOTg4YmRiYmVhZmJmODc0MmNkYTY4MjQyMTUwIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIEJ1aWxkIHVzZXMgZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgdG8gY3JlYXRlIHBuZyB2ZXJzaW9uczoKKyAgICAgICAgIyBubyBuZWVkIHRvIHN0b3JlIHRoZSBzdmdzIGFueW1vcmUuCisJcm0gLWYgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy5zdmcgXAorCSAgICAgICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMtcnRsLnN2ZworfQorCitQQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgorCitSUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorCitGSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgorRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyIKK0ZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKKyAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgorRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKKyAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE4NWMzMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSA0Y2YzN2Q1NmZkZGNjMjJiY2Q4MThmNmQ0NzA0MDRmNTZkOTA3ZjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2FzY2hhIFNpbGJlIDx4LXlvMTdAc2Utc2lsYmUuZGU+CitEYXRlOiBGcmksIDggSnVuIDIwMTggMTM6NTU6MTAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVsb2NhdGUgdGhlIHJlcG9zaXRvcnkgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCisKK0luc3RlYWQgb2YgaGFyZC1jb2RpbmcgR09CSkVDVF9JTlRST1NQRUNUSU9OX0xJQkRJUiB3aGVuCitnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgYnVpbHQsIHVzZSBkbGFkZHIoKSB0byBkZXRlcm1pbmUgd2hlcmUKK0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9MSUJESVIgaXMgYW5kIHVzZSB0aGF0IHBhdGggdG8gY2FsY3VsYXRlIHRoZQorcmVwb3NpdG9yeSBkaXJlY3RvcnkuCisKK1RoaXMgZml4ZXMgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBhY2Nlc3NpbmcgcGF0aHMgYWNyb3NzIGJ1aWxkCitkaXJlY3RvcmllcyAoZS5nLiBpZiB0aGUgYnVpbGQgZGlyZWN0b3JpZXMgdXNlIHRoZSBzYW1lIHNoYXJlZCBzdGF0ZQorY2FjaGUgb3Igc3N0YXRlIG1pcnJvcikuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogU2FzY2hhIFNpbGJlIDx4LXlvMTdAc2Utc2lsYmUuZGU+CisKKy0tLQorIGdpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYyB8IDE1ICsrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCitpbmRleCBjMWZhM2QzLi5lZmE1NTdlIDEwMDY0NAorLS0tIGEvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCisrKysgYi9naXJlcG9zaXRvcnkvZ2lyZXBvc2l0b3J5LmMKK0BAIC0yMSw2ICsyMSw4IEBACisgICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgICovCisgCisrI2RlZmluZSBfR05VX1NPVVJDRQorKworICNpbmNsdWRlICJjb25maWcuaCIKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KK0BAIC0zNCw2ICszNiw4IEBACisgI2luY2x1ZGUgImdpdHlwZWxpYi1pbnRlcm5hbC5oIgorICNpbmNsdWRlICJnaXJlcG9zaXRvcnktcHJpdmF0ZS5oIgorIAorKyNpbmNsdWRlIDxkbGZjbi5oPgorKworIC8qKgorICAqIFNFQ1RJT046Z2lyZXBvc2l0b3J5CisgICogQHNob3J0X2Rlc2NyaXB0aW9uOiBHT2JqZWN0IEludHJvc3BlY3Rpb24gcmVwb3NpdG9yeSBtYW5hZ2VyCitAQCAtMTg4LDkgKzE5MiwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCisgICAgICAgICAgIGdfZnJlZSAoY3VzdG9tX2RpcnMpOworICAgICAgICAgfQorIAorLSAgICAgIGxpYmRpciA9IEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9MSUJESVI7CisrICAgICAgRGxfaW5mbyBnaV9saWJfaW5mbzsKKyAKKy0gICAgICB0eXBlbGliX2RpciA9IGdfYnVpbGRfZmlsZW5hbWUgKGxpYmRpciwgImdpcmVwb3NpdG9yeS0xLjAiLCBOVUxMKTsKKysgICAgICBpZiAoZGxhZGRyIChnX2lyZXBvc2l0b3J5X2dldF9kZWZhdWx0LCAmZ2lfbGliX2luZm8pKSB7CisrICAgICAgICBjaGFyICpsaWJkaXIgPSBnX3BhdGhfZ2V0X2Rpcm5hbWUgKGdpX2xpYl9pbmZvLmRsaV9mbmFtZSk7CisrICAgICAgICB0eXBlbGliX2RpciA9IGdfYnVpbGRfZmlsZW5hbWUgKGxpYmRpciwgImdpcmVwb3NpdG9yeS0xLjAiLCBOVUxMKTsKKysgICAgICAgIGdfZnJlZSAobGliZGlyKTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAgbGliZGlyID0gR09CSkVDVF9JTlRST1NQRUNUSU9OX0xJQkRJUjsKKysgICAgICAgIHR5cGVsaWJfZGlyID0gZ19idWlsZF9maWxlbmFtZSAobGliZGlyLCAiZ2lyZXBvc2l0b3J5LTEuMCIsIE5VTEwpOworKyAgICAgIH0KKyAKKyAgICAgICB0eXBlbGliX3NlYXJjaF9wYXRoID0gZ19zbGlzdF9wcmVwZW5kICh0eXBlbGliX3NlYXJjaF9wYXRoLCB0eXBlbGliX2Rpcik7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoCmluZGV4IDlhYmFlYTcuLjg2Y2Q0ZWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoCkBAIC0xLDExICsxLDEyIEBACi1Gcm9tIDNhOWQxZTVlZTBhYWU1NmZhZmVjMGJlYmEyMDE0YzE5ZTRmZjMxMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGNhMGZiMTdlMjY4YzE3NmFjODlkZjA4MWIxZWZhNGE0Mjk4OWYwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMTc6MDc6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIFJldmVydCBhbiBpbmNvbXBsZXRlIHVwc3RyZWFtIGF0dGVtcHQgYXQgY3Jvc3MtY29tcGlsZQorU3ViamVjdDogW1BBVENIXSBSZXZlcnQgYW4gaW5jb21wbGV0ZSB1cHN0cmVhbSBhdHRlbXB0IGF0IGNyb3NzLWNvbXBpbGUKICBzdXBwb3J0CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGNvbW1vbi5tayAgICAgICAgICAgICAgICB8IDQgLS0tLQogIGdpc2Nhbm5lci9nZHVtcHBhcnNlci5weSB8IDYgLS0tLS0tCkBAIC0yOSwxMCArMzAsMTAgQEAKICAKICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSX0FSR1MgPSBcCiBkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5IGIvZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5Ci1pbmRleCAxMTM0ZjMzLi45YmRjMmJjIDEwMDY0NAoraW5kZXggY2Q5ZDk0ZC4uYjQxNzcyYyAxMDA2NDQKIC0tLSBhL2dpc2Nhbm5lci9nZHVtcHBhcnNlci5weQogKysrIGIvZ2lzY2FubmVyL2dkdW1wcGFyc2VyLnB5Ci1AQCAtMTYyLDEyICsxNjIsNiBAQCBibG9iIGNvbnRhaW5pbmcgZGF0YSBnbGVhbmVkIGZyb20gR09iamVjdCdzIHByaW1pdGl2ZSBpbnRyb3NwZWN0aW9uLiIiIgorQEAgLTE2MSwxMiArMTYxLDYgQEAgYmxvYiBjb250YWluaW5nIGRhdGEgZ2xlYW5lZCBmcm9tIEdPYmplY3QncyBwcmltaXRpdmUgaW50cm9zcGVjdGlvbi4iIiIKICAgICAgICAgIG91dF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX2JpbmFyeS50bXBkaXIsICdkdW1wLnhtbCcpCiAgCiAgICAgICAgICBhcmdzID0gW10KQEAgLTQ1LDYgKzQ2LDMgQEAKICAgICAgICAgIGFyZ3MuZXh0ZW5kKHNlbGYuX2JpbmFyeS5hcmdzKQogICAgICAgICAgYXJncy5hcHBlbmQoJy0taW50cm9zcGVjdC1kdW1wPSVzLCVzJyAlIChpbl9wYXRoLCBvdXRfcGF0aCkpCiAgCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1jb25maWd1cmUuYWMtbWFrZS1HSVJfRElSLWNvbmZpZ3VyYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1jb25maWd1cmUuYWMtbWFrZS1HSVJfRElSLWNvbmZpZ3VyYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDQwMmY4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLUdJUl9ESVItY29uZmlndXJhYmxlLnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK2NvbmZpZ3VyZS5hYzogbWFrZSBHSVJfRElSIGNvbmZpZ3VyYWJsZQorCitTb21lIC5naXIgZmlsZXMgc3VjaCBhcyBHTGliLTIuMC5naXIgYXJlIGFyY2ggcmVsYXRlZCB3aGljaCBjb250YWluIHN1Y2gKK2FzIGxlbmd0aHMgb2YgcG9pbnRlcnMgdGhhdCB0aGV5IGFyZSBkaWZmZXJlbnQgZm9yIDY0IGFuZCAzMiBiaXQgdGFyZ2V0LgorSXQgY2F1c2VzIGluc3RhbGwgZmlsZSBjb25mbGljdHMgZm9yIG11bHRpbGliIHdoZW4gaW50YWxsCitnb2JqZWN0LWludHJvc3BlY3Rpb24gYW5kIGxpYjMyLWdvYmplY3QtaW50cm9zcGVjdGlvbiBib3RoLgorCitBZGQgY29uZmlndXJlIG9wdGlvbiAnd2l0aC1naXItZGlyLXByZWZpeCcgZm9yIGF1dG90b29scyB0byBtYWtlIC5naXIKK2NvdWxkIGJlIGluc3RhbGxlZCB0byBhIGNvbmZpZ3VyZWQgcGF0aCBzdWNoIGFzICR7bGliZGlyfS4gQW5kIHVwZGF0ZQorZ2lyZGlyIGluIC5wYyBmaWxlcyBhcyB3ZWxsLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2NvbW1pdC8zMzAxYzdlXQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyArKysrKy0tCisgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYy5pbiAgICAgICAgICAgfCAyICstCisgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5vLWV4cG9ydC0xLjAucGMuaW4gfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI0Mjk0YzU3Li42MDUwNjk0NyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTE0LDkgKzExNCwxMiBAQCBHSVJfU1VGRklYPSJnaXItMS4wIgorIEFDX1NVQlNUKEdJUl9TVUZGSVgpCisgQUNfREVGSU5FX1VOUVVPVEVEKEdJUl9TVUZGSVgsICIkR0lSX1NVRkZJWCIsIFtOYW1lIG9mIHRoZSBnaXIgZGlyZWN0b3J5XSkKKyAKKy1HSVJfRElSPSIkRVhQQU5ERURfREFUQURJUi8kR0lSX1NVRkZJWCIKKytBQ19BUkdfV0lUSChbZ2lyLWRpci1wcmVmaXhdLAorKwkJW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZ2lyLWRpci1wcmVmaXhdLCBbRGlyZWN0b3J5IHByZWZpeCBmb3IgZ2lyIGluc3RhbGxhdGlvbl0pXSwKKysJCVtHSVJfRElSX1BSRUZJWD0iJHdpdGh2YWwiXSwgW0dJUl9ESVJfUFJFRklYPSIkRVhQQU5ERURfREFUQURJUiJdKQorK0dJUl9ESVI9IiRHSVJfRElSX1BSRUZJWC8kR0lSX1NVRkZJWCIKKyBBQ19TVUJTVChHSVJfRElSKQorLUFDX0RFRklORV9VTlFVT1RFRChHSVJfRElSLCAiJEdJUl9ESVIiLCBbRGlyZWN0b3IgcHJlZml4IGZvciBnaXIgaW5zdGFsbGF0aW9uXSkKKytBQ19ERUZJTkVfVU5RVU9URUQoR0lSX0RJUiwgIiRHSVJfRElSIiwgW0RpcmVjdG9yeSBwcmVmaXggZm9yIGdpciBpbnN0YWxsYXRpb25dKQorIAorIFBLR19DSEVDS19NT0RVTEVTKEdMSUIsIFtnbGliLTIuMCA+PSAyLjU4LjBdKQorIAorZGlmZiAtLWdpdCBhL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMuaW4gYi9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjLmluCitpbmRleCBhMDhiNWQyNy4uMzQwOTg1NmMgMTAwNjQ0CistLS0gYS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjLmluCisrKysgYi9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjLmluCitAQCAtMTAsNyArMTAsNyBAQCBnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lcgorIGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXJARVhFRVhUQAorIGdfaXJfZ2VuZXJhdGU9JHtiaW5kaXJ9L2ctaXItZ2VuZXJhdGVARVhFRVhUQAorIGdpZGF0YWRpcj0ke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAKKy1naXJkaXI9JHtkYXRhZGlyfS9naXItMS4wCisrZ2lyZGlyPUBHSVJfRElSQAorIHR5cGVsaWJkaXI9JHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAKKyAKKyBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wIEBGRklfUENfQ0ZMQUdTQAorZGlmZiAtLWdpdCBhL2dvYmplY3QtaW50cm9zcGVjdGlvbi1uby1leHBvcnQtMS4wLnBjLmluIGIvZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5vLWV4cG9ydC0xLjAucGMuaW4KK2luZGV4IGQyMTRkMjJkLi43NDVhYWFkZSAxMDA2NDQKKy0tLSBhL2dvYmplY3QtaW50cm9zcGVjdGlvbi1uby1leHBvcnQtMS4wLnBjLmluCisrKysgYi9nb2JqZWN0LWludHJvc3BlY3Rpb24tbm8tZXhwb3J0LTEuMC5wYy5pbgorQEAgLTksNyArOSw3IEBAIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgZ19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXIKKyBnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyQEVYRUVYVEAKKyBnX2lyX2dlbmVyYXRlPSR7YmluZGlyfS9nLWlyLWdlbmVyYXRlQEVYRUVYVEAKKy1naXJkaXI9JHtkYXRhZGlyfS9naXItMS4wCisrZ2lyZGlyPUBHSVJfRElSQAorIHR5cGVsaWJkaXI9JHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAKKyAKKyBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wIEBGRklfUENfQ0ZMQUdTQAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoCmluZGV4IDRlYzUyN2QuLmU5MzM4ZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU0OGYxZTE4ZjVlYTQxNjU2ZjBiYTEwZmU2MWQ2OWQyNjA0YjAwNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNmZWE1ZTgzODAzZjRjZmVmMjFiMmUwNmUzN2E2YmE1NmYyYmI5MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMyBKYW4gMjAxOCAxNzowMjowMSArMDIwMAogU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tbGliLWRpcnMtZW52dmFyIG9wdGlvbgpAQCAtMTksNyArMTksNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2Njb21waWxlci5weSBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKLWluZGV4IDI5ZGUwZWUuLjkyOGVhZTggMTAwNjQ0CitpbmRleCBjMDAzODI4Li44YThiYTJiIDEwMDY0NAogLS0tIGEvZ2lzY2FubmVyL2Njb21waWxlci5weQogKysrIGIvZ2lzY2FubmVyL2Njb21waWxlci5weQogQEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKQEAgLTMyLDE5ICszMiwxOSBAQAogICAgICAgICAgIyBpcyBiZWluZyBidWlsdCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgCiBAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgotICAgICAgICAgaWYgc2VsZi5jaGVja19pc19tc3ZjKCk6CisgICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTElCJywgJ1BBVEgnXQogICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnXQotKyAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCddIGlmIG5vdCBsaWJfZGlyc19lbnZ2YXIgZWxzZSBbbGliX2RpcnNfZW52dmFyXQorLSAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCddCisrICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTERfTElCUkFSWV9QQVRIJywgJ0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIJ10gaWYgbm90IGxpYl9kaXJzX2VudnZhciBlbHNlIFtsaWJfZGlyc19lbnZ2YXJdCiAgICAgICAgICAgICAgIyBTZWFyY2ggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0CiAgICAgICAgICAgICAgIyAoVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgbm9yIG5lZWRlZCBmb3IgVmlzdWFsIEMrKykKICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLUwuJykKIGRpZmYgLS1naXQgYS9naXNjYW5uZXIvZHVtcGVyLnB5IGIvZ2lzY2FubmVyL2R1bXBlci5weQotaW5kZXggN2Y3N2JkMi4uZGI5NmRmNiAxMDA2NDQKK2luZGV4IDJjNjY4ZjUuLjJlNTE1YTAgMTAwNjQ0CiAtLS0gYS9naXNjYW5uZXIvZHVtcGVyLnB5CiArKysgYi9naXNjYW5uZXIvZHVtcGVyLnB5Ci1AQCAtMjU5LDcgKzI1OSw4IEBAIGNsYXNzIER1bXBDb21waWxlcihvYmplY3QpOgorQEAgLTI0OSw3ICsyNDksOCBAQCBjbGFzcyBEdW1wQ29tcGlsZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ0b29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGlicmFyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXh0cmFfbGlicmFyaWVzLApAQCAtNTUsMTAgKzU1LDEwIEBACiAgCiAgICAgICAgICBlbHNlOgogZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggMzhhNDVjMS4uYjYwMzg1MCAxMDA3NTUKK2luZGV4IDVjYjc5M2UuLjg3MjI3ZTIgMTAwNjQ0CiAtLS0gYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKICsrKyBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotQEAgLTEzMCw2ICsxMzAsOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6CitAQCAtMTMyLDYgKzEzMiw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQpAQCAtNjgsNiArNjgsMyBAQAogICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItaWdub3JlLWVycm9yLXJldHVybi1jb2Rlcy1mcm9tLWxkZC13cmFwcGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1pZ25vcmUtZXJyb3ItcmV0dXJuLWNvZGVzLWZyb20tbGRkLXdyYXBwZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2N2YwNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItaWdub3JlLWVycm9yLXJldHVybi1jb2Rlcy1mcm9tLWxkZC13cmFwcGVyLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZjEyOGNiZWVhZDY4N2JmYzY1MzJjYzFmMmNjM2UyZGM1YTJiNWIzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA1IFNlcCAyMDE4IDE2OjQ2OjUyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGdpc2Nhbm5lcjogaWdub3JlIGVycm9yIHJldHVybiBjb2RlcyBmcm9tIGxkZC13cmFwcGVyCisKK3ByZWxpbmstcnRsZCwgd2hpY2ggd2UgdXNlIGluc3RlYWQgb2YgbGRkIHJldHVybnMgMTI3IHdoZW4gaXQgY2FuJ3QgZmluZCBhIGxpYnJhcnkuCitJdCBpcyBub3QgYW4gZXJyb3IgcGVyIHNlLCBidXQgaXQgYnJlYWtzIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ2lzY2FubmVyL3NobGlicy5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zaGxpYnMucHkgYi9naXNjYW5uZXIvc2hsaWJzLnB5CitpbmRleCAwMWQyMWEzLi4zYmQzMjUwIDEwMDY0NAorLS0tIGEvZ2lzY2FubmVyL3NobGlicy5weQorKysrIGIvZ2lzY2FubmVyL3NobGlicy5weQorQEAgLTEwOCw3ICsxMDgsNyBAQCBkZWYgX3Jlc29sdmVfbm9uX2xpYnRvb2wob3B0aW9ucywgYmluYXJ5LCBsaWJyYXJpZXMpOgorICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnb3Rvb2wnLCAnLUwnLCBiaW5hcnkuYXJnc1swXV0pCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnbGRkJywgYmluYXJ5LmFyZ3NbMF1dKQorLSAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoYXJncykKKysgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MucnVuKGFyZ3MsIGNoZWNrPUZhbHNlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQKKyAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3V0cHV0LCBieXRlcyk6CisgICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgidXRmLTgiLCAicmVwbGFjZSIpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCmluZGV4IGM2ODJiNDIuLjAzZWYyYjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotRnJvbSBiMTUwM2ZlMjY5M2Q2MDJiM2UyNGU0YjgzMmRjMDkzNDk2MGQ1ZDIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMjhjYzg0MTNiNjhiZWM1YjRjZjJlZTVmMzdiNDBhODk2NTQ5MGE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDE5IE9jdCAyMDE1IDE4OjI5OjIxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBjb25maWd1cmUuYWM6IGFkZCBob3N0LWdpLCBnaS1jcm9zcy13cmFwcGVyLAotIGdpLWxkZC13cmFwcGVyIGFuZCBpbnRyb3NwZWN0aW9uLWRhdGEgb3B0aW9ucworU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFkZCBob3N0LWdpLCBnaS1jcm9zcy13cmFwcGVyLCBnaS1sZGQtd3JhcHBlcgorIGFuZCBpbnRyb3NwZWN0aW9uLWRhdGEgb3B0aW9ucwogCiBXaXRoIHRoZSBmaXJzdCBvcHRpb24sIGdvYmplY3QtaW50cm9zcGVjdGlvbiB0b29scyAoZy1pci1kb2MtdG9vbCBhbmQgZy1pci1zY2FubmVyKQogdGhhdCBhcmUgYWxyZWFkeSBpbnN0YWxsZWQgaW4gdGhlIGhvc3Qgc3lzdGVtIHdpbGwgYmUgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIHNvdXJjZSB0cmVlLgpAQCAtMjUsNiArMjUsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIGxpc3RdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgfCAgMiArKwogIGNvbW1vbi5tayAgICAgICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCkBAIC0zMiwxMCArMzMsMTAgQEAKICB0ZXN0cy9NYWtlZmlsZS5hbSB8ICA1ICsrKystCiAgNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL01ha2VmaWxlLmFtCi0rKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDQ0ZWQxMTUuLjJhMWZhNTYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0yMSw3ICsyMSw5IEBAIGluY2x1ZGUgTWFrZWZpbGUtY21waC5hbQogIGluY2x1ZGUgTWFrZWZpbGUtZ2lyZXBvc2l0b3J5LmFtCiAgaW5jbHVkZSBNYWtlZmlsZS1naXNjYW5uZXIuYW0KQEAgLTQ0LDEyICs0NSwxMiBAQAogIGluY2x1ZGUgTWFrZWZpbGUtZ2lyLmFtCiArZW5kaWYKICBpbmNsdWRlIE1ha2VmaWxlLXRvb2xzLmFtCi0gaW5jbHVkZSBNYWtlZmlsZS1tc3ZjcHJvai5hbQogIAotSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvY29tbW9uLm1rCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL2NvbW1vbi5tawotKysrIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvY29tbW9uLm1rCisgIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCitkaWZmIC0tZ2l0IGEvY29tbW9uLm1rIGIvY29tbW9uLm1rCitpbmRleCBlMjZjNjM3Li45ZjNhNjVmIDEwMDY0NAorLS0tIGEvY29tbW9uLm1rCisrKysgYi9jb21tb24ubWsKIEBAIC02LDYgKzYsMTUgQEAKICAjIG1vZHVsZSBpdHNlbGYuCiAgIwpAQCAtMTMwLDExICsxMzEsMTEgQEAKICAKICBJTlRST1NQRUNUSU9OX0RPQ1RPT0xfQVJHUyA9IFwKICAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQoc3JjZGlyKSBcCi1JbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb25maWd1cmUuYWMKLUBAIC0zNjYsNiArMzY2LDQ4IEBAIGRubAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZDQ4ZTZjMy4uZWQ1ZjhhMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzY3LDYgKzM2Nyw0OCBAQCBkbmwKICBBTV9DT05ESVRJT05BTChNU1ZDX0JBU0VfTk9fVE9PTFNFVF9TRVQsIFt0ZXN0IHgkTVNWQ19CQVNFX1RPT0xTRVQgPSB4XSkKICBBTV9DT05ESVRJT05BTChNU1ZDX05PX1RPT0xTRVRfU0VULCBbdGVzdCB4JE1TVkNfVE9PTFNFVCA9IHhdKQogIApAQCAtMTgzLDEwICsxODQsMTAgQEAKICBBQ19DT05GSUdfRklMRVMoWwogIE1ha2VmaWxlCiAgdGVzdHMvTWFrZWZpbGUKLUluZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL3Rlc3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS90ZXN0cy9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDRiZGI5YzMuLjEwYjBmMjcgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC0xLDYgKzEsOSBAQAogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb21tb24ubWsKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1nLWlyLXRvb2xzLXJlc3BlY3QtZ2lyX2Rpcl9wcmVmaXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItZy1pci10b29scy1yZXNwZWN0LWdpcl9kaXJfcHJlZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDE3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItZy1pci10b29scy1yZXNwZWN0LWdpcl9kaXJfcHJlZml4LnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK2ctaXItdG9vbHM6IHJlc3BlY3QgZ2lyX2Rpcl9wcmVmaXgKKworQ29uZmlndXJlIG9wdGlvbiBnaXJfZGlyX3ByZWZpeCBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBpbnN0YWxsIGRpciBmb3IKKy5naXIgZmlsZXMsIHNvIGFkZCBpdHMgdmFsdWUgdG8gaW5jbHVkZSBmaWxlIHNlYXJjaCBwYXRocy4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9jb21taXQvM2ZlOTk1YV0KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS10b29scy5hbSAgICAgICAgICAgfCAgMiArLQorIGdpc2Nhbm5lci90cmFuc2Zvcm1lci5weSAgICB8ICAxICsKKyB0ZXN0cy93YXJuL3dhcm5pbmd0ZXN0ZXIucHkgfCAgMSArCisgdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluIHwgMTAgKysrKysrKysrKworIDYgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLXRvb2xzLmFtIGIvTWFrZWZpbGUtdG9vbHMuYW0KK2luZGV4IGM3MGQ5ODUwLi5mY2FmMWUwMSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLXRvb2xzLmFtCisrKysgYi9NYWtlZmlsZS10b29scy5hbQorQEAgLTksNyArOSw3IEBAIEVYVFJBX0RJU1QgKz0gCQkJCVwKKyAJdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluIFwKKyAJdG9vbHMvbWVzb24uYnVpbGQKKyAKKy1UT09MX1NVQlNUSVRVVElPTlMgPSAtZSBzLEBsaWJkaXJcQCwkKGxpYmRpciksIC1lIHMsQGRhdGFyb290ZGlyXEAsJChkYXRhcm9vdGRpciksIC1lIHMsQFBZVEhPTl9DTURcQCxcL3VzclwvYmluXC9lbnZcICQoUFlUSE9OKSwKKytUT09MX1NVQlNUSVRVVElPTlMgPSAtZSBzLEBsaWJkaXJcQCwkKGxpYmRpciksIC1lIHMsQGRhdGFyb290ZGlyXEAsJChkYXRhcm9vdGRpciksIC1lIHMsQFBZVEhPTl9DTURcQCxcL3VzclwvYmluXC9lbnZcICQoUFlUSE9OKSwgLWUgcyxAR0lSX0RJUlxALCQoR0lSX0RJUiksZworIAorIGctaXItc2Nhbm5lcjogdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluIF9naXNjYW5uZXIubGEgTWFrZWZpbGUKKyAJJChBTV9WX0dFTikgc2VkICQoVE9PTF9TVUJTVElUVVRJT05TKSAtZSBzLEBUT09MX01PRFVMRVxALHNjYW5uZXJtYWluLCAtZSBzLEBUT09MX0ZVTkNUSU9OXEAsc2Nhbm5lcl9tYWluLCAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKK2RpZmYgLS1naXQgYS9naXNjYW5uZXIvdHJhbnNmb3JtZXIucHkgYi9naXNjYW5uZXIvdHJhbnNmb3JtZXIucHkKK2luZGV4IDMzNWUyMjlmLi4yYzQxMjMzOSAxMDA2NDQKKy0tLSBhL2dpc2Nhbm5lci90cmFuc2Zvcm1lci5weQorKysrIGIvZ2lzY2FubmVyL3RyYW5zZm9ybWVyLnB5CitAQCAtMTg0LDYgKzE4NCw3IEBAIE5vbmUuIiIiCisgICAgIGRlZiBfZ2V0X2dpX2RhdGFfZGlycyhzZWxmKToKKyAgICAgICAgIGRhdGFfZGlycyA9IHV0aWxzLmdldF9zeXN0ZW1fZGF0YV9kaXJzKCkKKyAgICAgICAgIGRhdGFfZGlycy5hcHBlbmQoREFUQURJUikKKysgICAgICAgIGRhdGFfZGlycy5hcHBlbmQoR0lSRElSKQorICAgICAgICAgaWYgb3MubmFtZSAhPSAnbnQnOgorICAgICAgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3YXMgYWx3YXlzIHVuY29uZGl0aW9uYWxseSBhZGRlZCB0byB0aGUgbGlzdC4KKyAgICAgICAgICAgICBkYXRhX2RpcnMuYXBwZW5kKCcvdXNyL3NoYXJlJykKK2RpZmYgLS1naXQgYS90ZXN0cy93YXJuL3dhcm5pbmd0ZXN0ZXIucHkgYi90ZXN0cy93YXJuL3dhcm5pbmd0ZXN0ZXIucHkKK2luZGV4IGYxN2M4ODg5Li5iZTVhZWMxMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3dhcm4vd2FybmluZ3Rlc3Rlci5weQorKysrIGIvdGVzdHMvd2Fybi93YXJuaW5ndGVzdGVyLnB5CitAQCAtMTgsNiArMTgsNyBAQCBzeXMucGF0aC5pbnNlcnQoMCwgcGF0aCkKKyAKKyAjIE5vdCBjb3JyZWN0LCBidXQgZW5vdWdoIHRvIGdldCB0aGUgdGVzdHMgZ29pbmcgdW5pbnN0YWxsZWQKKyBidWlsdGlucy5fX2RpY3RfX1snREFUQURJUiddID0gcGF0aAorK2J1aWx0aW5zLl9fZGljdF9fWydHSVJESVInXSA9ICcnCisgCisgZnJvbSBnaXNjYW5uZXIuYW5ub3RhdGlvbnBhcnNlciBpbXBvcnQgR3RrRG9jQ29tbWVudEJsb2NrUGFyc2VyCisgZnJvbSBnaXNjYW5uZXIuYXN0IGltcG9ydCBJbmNsdWRlLCBOYW1lc3BhY2UKK2RpZmYgLS1naXQgYS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4gYi90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK2luZGV4IGVkMzNkMTZiLi5iOWNmMDkxMSAxMDA3NTUKKy0tLSBhL3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorKysrIGIvdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCitAQCAtNjAsNiArNjAsMTYgQEAgaWYgbm90IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGRhdGFkaXIsICdnaXItMS4wJykpOgorIAorIGJ1aWx0aW5zLl9fZGljdF9fWydEQVRBRElSJ10gPSBkYXRhZGlyCisgCisrIyBSZXNwZWN0IGdpcl9kaXJfcHJlZml4IGZvciBtZXNvbiBhbmQgYXV0b3Rvb2xzCisrZ2lyZGlyID0gJycKKysjIGZvciBtZXNvbgorK2lmICdAZ2lyX2Rpcl9wcmVmaXhAJyBhbmQgbm90ICdAZ2lyX2Rpcl9wcmVmaXhAJy5zdGFydHN3aXRoKCdAJyk6CisrICAgIGdpcmRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oZmlsZWRpciwgJy4uJywgJ0BnaXJfZGlyX3ByZWZpeEAnKSkKKysjIGZvciBhdXRvdG9vbHMKKytlbGlmICdAR0lSX0RJUkAnIGFuZCBub3QgJ0BHSVJfRElSQCcuc3RhcnRzd2l0aCgnQCcpOgorKyAgICBnaXJkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKCdAR0lSX0RJUkAnKSkKKytidWlsdGlucy5fX2RpY3RfX1snR0lSRElSJ10gPSBnaXJkaXIKKysKKyAjIEFnYWluLCByZWxhdGl2ZSBwYXRocyBmaXJzdCBzbyB0aGF0IHRoZSBpbnN0YWxsYXRpb24gcHJlZml4IGlzIHJlbG9jYXRhYmxlCisgcHlsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGZpbGVkaXIsICcuLicsICdsaWInLCAnZ29iamVjdC1pbnRyb3NwZWN0aW9uJykpCisgCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaAppbmRleCBmMjFlYWNhLi40NWZlMjdhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDcwNGI4ODhkMGFiZmIwMTA2NzM1MmM0MDE1NmY0OWY2NTU2OTFjN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ2ZGJlOTYzYWE2NDM1NTkxYzg3ZTc4OGNkYjU0YmMwZGFlYWM0MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTg6MjY6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIGdpc2Nhbm5lcjogYWRkIC0tdXNlLWJpbmFyeS13cmFwcGVyIG9wdGlvbgorU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCAtLXVzZS1iaW5hcnktd3JhcHBlciBvcHRpb24KIAogV2l0aCB0aGlzIG9wdGlvbiwgZ2lzY2FubmVyIHdpbGwgdXNlIGEgd3JhcHBlciBleGVjdXRhYmxlIHRvIHJ1bgogYmluYXJpZXMgaXQncyBwcm9kdWNpbmcsIGluc3RlYWQgb2YgcnVubmluZyB0aGVtIGRpcmVjdGx5LiBUaGlzCkBAIC0xMCwxNSArMTAsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDE0ICsrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggNjMzNDk2Zi4uZDY4NGNkMCAxMDA3NTUKK2luZGV4IGNjYjE0ZTkuLjA2MWRlZjAgMTAwNjQ0CiAtLS0gYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKICsrKyBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotQEAgLTEyNCw2ICsxMjQsOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6CitAQCAtMTI2LDYgKzEyNiw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0iLAogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0icHJvZ3JhbSIsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0icHJvZ3JhbSB0byBleGVjdXRlIikKQEAgLTI4LDcgKzI5LDcgQEAKICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0tYXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJwcm9ncmFtX2FyZ3MiLCBkZWZhdWx0PVtdLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJleHRyYSBhcmd1bWVudHMgdG8gcHJvZ3JhbSIpCi1AQCAtNDE5LDYgKzQyMiwxNyBAQCBkZWYgY3JlYXRlX2JpbmFyeSh0cmFuc2Zvcm1lciwgb3B0aW9ucywgYXJncyk6CitAQCAtNDE4LDYgKzQyMSwxNyBAQCBkZWYgY3JlYXRlX2JpbmFyeSh0cmFuc2Zvcm1lciwgb3B0aW9ucywgYXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkdW1wX3BhcnNlci5nZXRfZXJyb3JfcXVhcmtfZnVuY3Rpb25zKCkpCiAgCiAgICAgIHNobGlicyA9IHJlc29sdmVfc2hsaWJzKG9wdGlvbnMsIGJpbmFyeSwgb3B0aW9ucy5saWJyYXJpZXMpCkBAIC00Niw2ICs0NywzIEBACiAgICAgIGdkdW1wX3BhcnNlci5zZXRfaW50cm9zcGVjdGlvbl9iaW5hcnkoYmluYXJ5KQogICAgICBnZHVtcF9wYXJzZXIucGFyc2UoKQogICAgICByZXR1cm4gc2hsaWJzCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaAppbmRleCBhZmI3MWU3Li4yZTM2YjY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoCkBAIC0xLDIzICsxLDI0IEBACi1Gcm9tIGQ0YWQ1N2ZkNGEzMmM0ZjBkMmYwNTIyYTMwOTBlZjk0MDc0NjQzMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGViYTJiOTk5ZTgxZDgxYjVmNDNiYjFmMGFiMzM4ODE3ODZiZWJkZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgT2N0IDIwMTUgMTY6Mjg6NDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIGdpc2Nhbm5lcjogYWRkIGEgLS11c2UtbGRkLXdyYXBwZXIgb3B0aW9uCitTdWJqZWN0OiBbUEFUQ0hdIGdpc2Nhbm5lcjogYWRkIGEgLS11c2UtbGRkLXdyYXBwZXIgb3B0aW9uCiAKIFRoaXMgaXMgdXNlZnVsIGluIGNyb3NzLWNvbXBpbGUgZW52aXJvbm1lbnRzIHdoZXJlIHN5c3RlbSdzIGxkZAogY29tbWFuZCBkb2VzIG5vdCB3b3JrIG9uIGJpbmFyaWVzIGJ1aWx0IGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgaW4gb2UtY29yZV0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAzICsrKwogIGdpc2Nhbm5lci9zaGxpYnMucHkgICAgICB8IDQgKysrLQogIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLWluZGV4IGQ2ODRjZDAuLjFiM2IzNjkgMTAwNzU1CitpbmRleCAwNjFkZWYwLi41Y2I3OTNlIDEwMDY0NAogLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CiArKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjcsNiArMTI3LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgorQEAgLTEyOSw2ICsxMjksOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6CiAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS11c2UtYmluYXJ5LXdyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0id3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgZm9yIHJ1bm5pbmcgcHJvZ3JhbXMgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQpAQCAtMjgsMTAgKzI5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQogZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zaGxpYnMucHkgYi9naXNjYW5uZXIvc2hsaWJzLnB5Ci1pbmRleCBjOTNkMjBjLi5jNWI1OTQyIDEwMDY0NAoraW5kZXggN2I3YjJkMC4uMDFkMjFhMyAxMDA2NDQKIC0tLSBhL2dpc2Nhbm5lci9zaGxpYnMucHkKICsrKyBiL2dpc2Nhbm5lci9zaGxpYnMucHkKLUBAIC0xMDUsNyArMTA1LDkgQEAgZGVmIF9yZXNvbHZlX25vbl9saWJ0b29sKG9wdGlvbnMsIGJpbmFyeSwgbGlicmFyaWVzKToKK0BAIC0xMDIsNyArMTAyLDkgQEAgZGVmIF9yZXNvbHZlX25vbl9saWJ0b29sKG9wdGlvbnMsIGJpbmFyeSwgbGlicmFyaWVzKToKICAgICAgICAgICAgICBhcmdzLmV4dGVuZChsaWJ0b29sKQogICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW1vZGU9ZXhlY3V0ZScpCiAgICAgICAgICBwbGF0Zm9ybV9zeXN0ZW0gPSBwbGF0Zm9ybS5zeXN0ZW0oKQpAQCAtNDIsNiArNDMsMyBAQAogICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnb3Rvb2wnLCAnLUwnLCBiaW5hcnkuYXJnc1swXV0pCiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnbGRkJywgYmluYXJ5LmFyZ3NbMF1dKQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoCmluZGV4IDQ3YTE4ZWMuLjJhMzExMTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlMDhiMzY3N2RkMDRkNmVjNDA3YmE4Zjc0ZjYwMWIyZDUxMzEwZWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOTdkMDYwOTMzOTMyZTQ3OGMwM2YxZGU5NTEzYjY5YmM0NTllZWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDggT2N0IDIwMTUgMTg6MzA6MzUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIFByZWZpeCBwa2ctY29uZmlnIHBhdGhzIHdpdGggUEtHX0NPTkZJR19TWVNST09UX0RJUgorU3ViamVjdDogW1BBVENIXSBQcmVmaXggcGtnLWNvbmZpZyBwYXRocyB3aXRoIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKICBlbnZpcm9ubWVudCB2YXJpYWJsZQogCiBUaGlzIGVudmlyb25tZW50IHZhcmlhYmxlIHNldHMgdGhlIGxvY2F0aW9uIG9mIHN5c3Jvb3QgZGlyZWN0b3J5IGluIGNyb3NzLWNvbXBpbGF0aW9uCkBAIC05LDE2ICs5LDE3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBNYWtlZmlsZS1naXIuYW0gICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCiAgbTQvaW50cm9zcGVjdGlvbi5tNCB8ICA4ICsrKystLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLWdpci5hbSBiL01ha2VmaWxlLWdpci5hbQotaW5kZXggYTA5MjYwYS4uYmE2ZTg5ZSAxMDA2NDQKK2luZGV4IDJjZDczNTguLmVhZjBhZmQgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS1naXIuYW0KICsrKyBiL01ha2VmaWxlLWdpci5hbQotQEAgLTU1LDggKzU1LDggQEAgZWxzZQorQEAgLTU4LDggKzU4LDggQEAgZWxzZQogIGVuZGlmCiAgCiAgIyBnbGliCkBAIC0yOSw3ICszMCw3IEBACiAgCiAgR0xJQl9MSUJSQVJZPWdsaWItMi4wCiAgCi1AQCAtOTIsOCArOTIsOCBAQCBHTGliLTIuMC5naXI6IGctaXItc2Nhbm5lciBnLWlyLWNvbXBpbGVyJChFWEVFWFQpCitAQCAtOTUsOCArOTUsOCBAQCBHTGliLTIuMC5naXI6IGctaXItc2Nhbm5lciBnLWlyLWNvbXBpbGVyJChFWEVFWFQpCiAgZ2lyL0RCdXNHTGliLTEuMC50eXBlbGliOiBHT2JqZWN0LTIuMC5naXIKICAKICAjIGdvYmplY3QKQEAgLTQwLDcgKzQxLDcgQEAKICAKICBHT0JKRUNUX0xJQlJBUlk9Z29iamVjdC0yLjAKICAKLUBAIC0xMjAsOCArMTIwLDggQEAgR09iamVjdF8yXzBfZ2lyX0ZJTEVTID0gXAorQEAgLTEyMyw4ICsxMjMsOCBAQCBHT2JqZWN0XzJfMF9naXJfRklMRVMgPSBcCiAgQlVJTFRfR0lSU09VUkNFUyArPSBHT2JqZWN0LTIuMC5naXIKICAKICAjIGdtb2R1bGUKQEAgLTUxLDcgKzUyLDcgQEAKICAKICBHTU9EVUxFX0xJQlJBUlk9Z21vZHVsZS0yLjAKICAKLUBAIC0xNDYsMTMgKzE0NiwxMyBAQCBHTW9kdWxlXzJfMF9naXJfRklMRVMgPSAkKEdMSUJfSU5DTFVERURJUikvZ21vZHVsZS5oIFwKK0BAIC0xNDksMTMgKzE0OSwxMyBAQCBHTW9kdWxlXzJfMF9naXJfRklMRVMgPSAkKEdMSUJfSU5DTFVERURJUikvZ21vZHVsZS5oIFwKICBCVUlMVF9HSVJTT1VSQ0VTICs9IEdNb2R1bGUtMi4wLmdpcgogIAogICMgZ2lvCkBAIC05MSw2ICs5MiwzIEBACiAgICAgIGZpCiAgICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKICAgICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9DT01QSUxFUikKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjU0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVjODAwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi1TVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvYWN0aW9uL3Nob3cvUHJvamVjdHMvR09iamVjdEludHJvc3BlY3Rpb24iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwZDU3NzUzNWEzODk4ZTFhZTVkYmYwYWUzNTA5YThjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuNTQvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1hbi1pbmNvbXBsZXRlLXVwc3RyZWFtLWF0dGVtcHQtYXQtY3Jvc3MtY29tcGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTI2YzI5ZTRkNTRhZGJlZDJlZDRlMmIwNDQ4M2RlNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg4ZGVkNWU1ZjA2NGFiNThhOTNhYWRlY2Q2ZDU4ZGIyZWM5ZDk3MDY0ODUzNGM2MzgwN2Q0ZjlhN2JiODc3ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCi0gICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKLSAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLXByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi0KLSAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCi19Ci0KLSMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCi0jIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgJy0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLS1lbmFibGUtZG9jdG9vbCwtLWRpc2FibGUtZG9jdG9vbCxweXRob24zLW1ha28sIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKLSAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLSAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCi0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCi19Ci0KLSMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAotIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi19Ci0KLSMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKLQotIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKLSMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5ybmMiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgotCi0jIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQotIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCi1naV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAotICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KLQotIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcwotIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKLXB5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKLSAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0JZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KLQllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKLQllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQljaG1vZCA3NTUgJGRlc3QKLX0KLQotIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZwotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCi1naV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7Ci0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41OC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1Y2E4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTguMC5iYgpAQCAtMCwwICsxLDIwNCBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDM0ZTgxMjhhNjhiZWRkNTliODBiMmFjMWViMWM0YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjcgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLUdJUl9ESVItY29uZmlndXJhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZy1pci10b29scy1yZXNwZWN0LWdpcl9kaXJfcHJlZml4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRmZWM4NzUyNzYyNjIwMzdiZmNkNTEyMjZkYjEyZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdjMTU5MGEzMjc0OWRlMGE1NDgxY2U4OTc3NzI1NDcwNDNlOTRiY2NiYTRiYzBhN2VkYjNkODUxM2U0MDFlYyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2giCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2ctaXItYW5ub3RhdGlvbi10b29sICR7UE59OiR7YmluZGlyfS9nLWlyLXNjYW5uZXIiCisKK0RFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBhdXRvY29uZi1hcmNoaXZlIgorCisjIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCisjIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KKyMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgorIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKKyMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgorCisjIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCitleHBvcnQgQgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKKworIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKKyMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgLS1lbmFibGUtaG9zdC1naSBcCisgICAgLS1lbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCisgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKKyAgICAke0AnLS13aXRoLWdpci1kaXItcHJlZml4PSR7bGliZGlyfScgaWYgZC5nZXRWYXIoJ01VTFRJTElCUycpIGVsc2UgJyd9IFwKKyIKKworIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcworIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKK3B5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKKyAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0CisgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KKyAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCisjIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCisjIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAorZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15CisKKyRxZW11X2JpbmFyeSAiXCRAIgoraWYgWyBcJD8gLW5lIDAgXTsgdGhlbgorICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCisgICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKKyAgICBleGl0IDEKK2ZpCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKKyAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQorICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKKyAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKK2ctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19MSUJESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKK30KKworIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQgCisjIHRvIGJ1aWxkIGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIGFsbCBvdGhlciBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgJHtEfSR7YmluZGlyfS8KK30KKworIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKKyMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKKyAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAorICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9CisJZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KKwllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKKwllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAorCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwljaG1vZCA3NTUgJGRlc3QKK30KKworIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCitnaV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7CisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCit9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgorCisjIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCisKKyMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCisjIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIgJHtsaWJkaXJ9L2dpci0qLyouZ2lyIgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLnJuYyIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCisjIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKKworIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgorIyB0ZXN0c3VpdGVzLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1waWNrbGUgcHl0aG9uMy14bWwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MWZkMjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3OTZiNmFjMWVmZjQ1MDI2MWVkZDUyMWI3MmU3ZmU2ZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjc2YTNmYTMwOWY5ZGU2MDc0ZDY2ODQ4OTg3MjE0ZjBiMTI4MTI0YmE3MTg0Yzk1OGMxNWFjNzhhOGFjN2VlYTciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmIzY2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjguMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkdOT01FIGRlc2t0b3Atd2lkZSBHU2V0dGluZ3Mgc2NoZW1hcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMzcwNjEwZTI5YjM3ZDA2M2VkZTNlZjBmMjljMDZlYjkiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0Y2I0Y2Q3NzkwYjc3ZTU1NDJlYzc1Mjc1MjM3NjEzYWQyMmYzYTFmMmY0MTkwM2EyOThjZjZjYzk5NmE5MTY3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy5pbmMKaW5kZXggNTU4YmM0OC4uMTRlZDhkOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysuaW5jCkBAIC05MCw2ICs5MCwxMCBAQAogCWluc3RhbGwgLW0gMDY0NCAke1N9L2d0ay9ndGtmaWxlc3lzdGVtbW9kZWwuaCAgICAke0R9JHtpbmNsdWRlZGlyfS9ndGstMi4wL2d0ay8KIAogCW12ICR7RH0ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlLTIuMAorCisgICAgIyBkdXBsaWNhdGUgZ3RrLXF1ZXJ5LWltbW9kdWxlcyBmb3IgcG9zdCBpbnN0YWxsIHNjcmlwdCB1cGRhdGVfZ3RrX2ltbW9kdWxlc19jYWNoZQorICAgIG1rZGlyIC1wICR7RH0ke2xpYmV4ZWNkaXJ9CisgICAgbG4gJHtEfSR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTIuMCAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfWd0ay1xdWVyeS1pbW1vZHVsZXMtMi4wCiB9CiAKIFNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ3RrX3N5c3Jvb3RfcHJlcHJvY2VzcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy8wMDAxLURvLW5vdC1sb29rLWludG8tSE9NRS13aGVuLWxvb2tpbmctZm9yLWd0ay1tb2R1bGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrLzAwMDEtRG8tbm90LWxvb2staW50by1IT01FLXdoZW4tbG9va2luZy1mb3ItZ3RrLW1vZHVsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNiZTM5YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy8wMDAxLURvLW5vdC1sb29rLWludG8tSE9NRS13aGVuLWxvb2tpbmctZm9yLWd0ay1tb2R1bGVzLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMzRjZTkzZTFjNTBiZmI4OGY5MmE2ODdkNGY4MmRlNTU1ODRmM2Y2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAxNDoyMDozOSArMDMwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgbG9vayBpbnRvICRIT01FIHdoZW4gbG9va2luZyBmb3IgZ3RrIG1vZHVsZXMKKworT24gdGhlIGhvc3QgaXQgY2F1c2VzIGhvc3QgY29udGFtaW5hdGlvbiwgb24gdGhlIHRhcmdldCBpdCdzIGEKK3BvdGVudGlhbCBzZWN1cml0eSBpc3N1ZS4gR3RrKzMgaGFzIGFscmVhZHkgcmVtb3ZlZCB0aGlzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2d0azIgaXMgaW4gbWFpbnRlbmFuY2UgbW9kZV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ3RrL2d0a21vZHVsZXMuYyB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3RrL2d0a21vZHVsZXMuYyBiL2d0ay9ndGttb2R1bGVzLmMKK2luZGV4IDUwNzI5YjYuLmUwOWI1ODMgMTAwNjQ0CistLS0gYS9ndGsvZ3RrbW9kdWxlcy5jCisrKysgYi9ndGsvZ3RrbW9kdWxlcy5jCitAQCAtNjUsMTAgKzY1LDYgQEAgZ2V0X21vZHVsZV9wYXRoICh2b2lkKQorICAgaWYgKHJlc3VsdCkKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyAKKy0gIGhvbWVfZGlyID0gZ19nZXRfaG9tZV9kaXIoKTsKKy0gIGlmIChob21lX2RpcikKKy0gICAgaG9tZV9ndGtfZGlyID0gZ19idWlsZF9maWxlbmFtZSAoaG9tZV9kaXIsICIuZ3RrLTIuMCIsIE5VTEwpOworLQorICAgbW9kdWxlX3BhdGhfZW52ID0gZ19nZXRlbnYgKCJHVEtfUEFUSCIpOworICAgZXhlX3ByZWZpeCA9IGdfZ2V0ZW52ICgiR1RLX0VYRV9QUkVGSVgiKTsKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKaW5kZXggNDIwZWFkMi4uNjMzMWE0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKQEAgLTUzLDYgKzUzLDEwIEBACiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCW12ICR7RH0ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlLTMuMAorCisgICAgIyBkdXBsaWNhdGUgZ3RrLXF1ZXJ5LWltbW9kdWxlcyBmb3IgcG9zdCBpbnN0YWxsIHNjcmlwdCB1cGRhdGVfZ3RrX2ltbW9kdWxlc19jYWNoZQorICAgIG1rZGlyIC1wICR7RH0ke2xpYmV4ZWNkaXJ9CisgICAgbG4gJHtEfSR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfWd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wCiB9CiAKIFBBQ0tBR0VTID0rICIke1BOfS1kZW1vIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjRlODI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4YzFmNWFiOTg3ZGRjN2RhYjNlNTk2NjBmODlkY2Q5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjk5NjEyYjAxOGNmZWQ3YjJjNjg5MTY4YWI1MmI2NjgwMjM3MDhlMTdjMzM1ZWI1OTIyNjBkMTg2ZjE1ZTFmIgotCi1TID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk3YjUxOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4zMC5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIGd0ayszLmluYworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjFlNjBkYzA3M2UwYTY4OTNjNzIwNDNkMjA1NzlkYzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFhNGE1YzEyNzAzZDRlMWNjZGEyODMzM2I4N2ZmNDYyNzQxZGMzNjUxMzFmYmM5NGMyMThhZTgxZDlhNjU2NyIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgppbmRleCAyMDcwMzU4Li44OWZjYTczIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpAQCAtMTAsNyArMTAsOCBAQAogICAgICAgICAgICBmaWxlOi8vdG9nZ2xlLWZvbnQuZGlmZjtzdHJpcGxldmVsPTAgXAogICAgICAgICAgICBmaWxlOi8vZG9jLWZpeGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3N0cmljdC1wcm90b3R5cGVzLnBhdGNoIFwKLQkgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWxvb2staW50by1IT01FLXdoZW4tbG9va2luZy1mb3ItZ3RrLW1vZHVsZXMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNTc0MmFhNDIyNzUyMDNhNDk5YjU5YjRjMzgyYTc4NCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmM4YTkzZGRkYTVlYWJlM2JmZWUxZWIzOTYzNmM5YTAzZDJhNTZjN2I2MjgyOGIzNTliZjE5Nzk0M2M1ODJlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MmMwNDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVNVTU1BUlkgPSAiTmF0aXZlIGljb24gdXRpbHMgZm9yIEdUSysiCi1ERVNDUklQVElPTiA9ICJndGstdXBkYXRlLWljb24tY2FjaGUgYW5kIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIGJ1aWx0IGZyb20gR1RLKyBuYXRpdmVseSwgZm9yIGJ1aWxkIHRpbWUgYW5kIG9uLWhvc3QgcG9zdGluc3Qgc2NyaXB0IGV4ZWN1dGlvbi4iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYnJzdmctbmF0aXZlIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtR2RrLWRlcGVuZGVuY3ktZnJvbS1ndGstZW5jb2RlLXN5bWJvbGljLXN2Zy5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4YzFmNWFiOTg3ZGRjN2RhYjNlNTk2NjBmODlkY2Q5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjk5NjEyYjAxOGNmZWQ3YjJjNjg5MTY4YWI1MmI2NjgwMjM3MDhlMTdjMzM1ZWI1OTIyNjBkMTg2ZjE1ZTFmIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLWluaGVyaXQgcGtnY29uZmlnIG5hdGl2ZQotCi0jIHZlcnNpb25zID49IDMuOTAgYXJlIGRldmVsb3BtZW50IHZlcnNpb25zLCBvdGhlcndpc2UgbGlrZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlteXGRcLl0oP1A8cHZlcj4zXC4oWzEtOF0/WzAyNDY4XSkrKFwuXGQrKSspXC50YXIiCi0KLVBLR19DT05GSUdfRk9SX0JVSUxEID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wa2ctY29uZmlnLW5hdGl2ZSIKLQotZG9fY29uZmlndXJlKCkgewotCSMgUXVpdGUgdWdseSBidXQgZGVmaW5lcyBlbm91Z2ggdG8gY29tcGlsZSB0aGUgdG9vbHMuCi0JaWYgISB0ZXN0IC1mIGd0ay9jb25maWcuaDsgdGhlbgotCQllY2hvICIjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSBcImd0azMwXCIiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JCWVjaG8gIiNkZWZpbmUgSEFWRV9GVFdfSCAxIiA+PiBndGsvY29uZmlnLmgKLQlmaQotCWlmICEgdGVzdCAtZiBnZGsvY29uZmlnLmg7IHRoZW4KLQkJdG91Y2ggZ2RrL2NvbmZpZy5oCi0JZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLQkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCi0JCSR7U30vZ3RrL3VwZGF0ZWljb25jYWNoZS5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2RrLXBpeGJ1Zi0yLjApIFwKLQkJLW8gZ3RrLXVwZGF0ZS1pY29uLWNhY2hlCi0KLQkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCi0JCSR7U30vZ3RrL2VuY29kZXN5bWJvbGljLmMgXAotCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnaW8tMi4wIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyAke0R9JHtiaW5kaXJ9Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZTdhMzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjMwLmJiCkBAIC0wLDAgKzEsNjMgQEAKK1NVTU1BUlkgPSAiTmF0aXZlIGljb24gdXRpbHMgZm9yIEdUSysiCitERVNDUklQVElPTiA9ICJndGstdXBkYXRlLWljb24tY2FjaGUgYW5kIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIGJ1aWx0IGZyb20gR1RLKyBuYXRpdmVseSwgZm9yIGJ1aWxkIHRpbWUgYW5kIG9uLWhvc3QgcG9zdGluc3Qgc2NyaXB0IGV4ZWN1dGlvbi4iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYnJzdmctbmF0aXZlIgorCitMSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtR2RrLWRlcGVuZGVuY3ktZnJvbS1ndGstZW5jb2RlLXN5bWJvbGljLXN2Zy5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MWU2MGRjMDczZTBhNjg5M2M3MjA0M2QyMDU3OWRjMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWE0YTVjMTI3MDNkNGUxY2NkYTI4MzMzYjg3ZmY0NjI3NDFkYzM2NTEzMWZiYzk0YzIxOGFlODFkOWE2NTY3IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK2luaGVyaXQgcGtnY29uZmlnIG5hdGl2ZQorCisjIHZlcnNpb25zID49IDMuOTAgYXJlIGRldmVsb3BtZW50IHZlcnNpb25zLCBvdGhlcndpc2UgbGlrZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlteXGRcLl0oP1A8cHZlcj4zXC4oWzEtOF0/WzAyNDY4XSkrKFwuXGQrKSspXC50YXIiCisKK1BLR19DT05GSUdfRk9SX0JVSUxEID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wa2ctY29uZmlnLW5hdGl2ZSIKKworZG9fY29uZmlndXJlKCkgeworCSMgUXVpdGUgdWdseSBidXQgZGVmaW5lcyBlbm91Z2ggdG8gY29tcGlsZSB0aGUgdG9vbHMuCisJaWYgISB0ZXN0IC1mIGd0ay9jb25maWcuaDsgdGhlbgorCQllY2hvICIjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSBcImd0azMwXCIiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJCWVjaG8gIiNkZWZpbmUgSEFWRV9GVFdfSCAxIiA+PiBndGsvY29uZmlnLmgKKwlmaQorCWlmICEgdGVzdCAtZiBnZGsvY29uZmlnLmg7IHRoZW4KKwkJdG91Y2ggZ2RrL2NvbmZpZy5oCisJZmkKK30KKworZG9fY29tcGlsZSgpIHsKKwkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCisJCSR7U30vZ3RrL3VwZGF0ZWljb25jYWNoZS5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2RrLXBpeGJ1Zi0yLjApIFwKKwkJLW8gZ3RrLXVwZGF0ZS1pY29uLWNhY2hlCisKKwkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCisJCSR7U30vZ3RrL2VuY29kZXN5bWJvbGljLmMgXAorCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnaW8tMi4wIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyAke0R9JHtiaW5kaXJ9CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQorCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCmluZGV4IDJmZTNhYjkuLjE5ZTA1ZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOTI4MTAyODc0YmMyMzM5YTFkNTdjNmIxNzg4NzdlMGM2MDAyY2IzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODBlNmFmZjcyYWZmYTZkOTJmNWFiZDdmZjYzNTNkZmM0YTdiZmYzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogV2VkLCAzMSBBdWcgMjAxNiAxNjo0NDo0NiArMDMwMAotU3ViamVjdDogW1BBVENIIDEvM10gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZG9jb2RlIHBhdGhzIHRvIHBlcmwvcHl0aG9uIGluIHNjcmlwdHMuCiAKIERvaW5nIHNvIHdoZW4gdGhlIGludGVycHJldGVycyBhcmUgc29tZXdoZXJlIGRlZXAgaW4gYSBzeXNyb290IGRpcmVjdG9yeQogY2FuIHJlYWNoIHRoZSBzaGViYW5nIGxpbmUgbGltaXQsIGFuZCByZXN1bHRpbmcgc2NyaXB0cyB3b3VsZG4ndCB3b3JrCkBAIC0zNSw3ICszNSw3IEBACiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1kZXBzY2FuLmluIGIvZ3RrZG9jLWRlcHNjYW4uaW4KLWluZGV4IDliZmFmMzAuLmFhZGM5NTIgMTAwNjQ0CitpbmRleCA5YmZhZjMwLi5hYWRjOTUyIDEwMDc1NQogLS0tIGEvZ3RrZG9jLWRlcHNjYW4uaW4KICsrKyBiL2d0a2RvYy1kZXBzY2FuLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTQ1LDcgKzQ1LDcgQEAKICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiAgCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLWZpeHhyZWYuaW4gYi9ndGtkb2MtZml4eHJlZi5pbgotaW5kZXggMGVhMDJkNC4uYmRkNDQzYSAxMDA3NTUKK2luZGV4IDQ0ZjZiZDEuLjI2ZmJkOTMgMTAwNzU1CiAtLS0gYS9ndGtkb2MtZml4eHJlZi5pbgogKysrIGIvZ3RrZG9jLWZpeHhyZWYuaW4KIEBAIC0xLDQgKzEsNCBAQApAQCAtNjUsNyArNjUsNyBAQAogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KIGRpZmYgLS1naXQgYS9ndGtkb2MtbWtodG1sLmluIGIvZ3RrZG9jLW1raHRtbC5pbgotaW5kZXggMGQwYTE1ZC4uOTE0ZmY1NSAxMDA2NDQKK2luZGV4IDBkMGExNWQuLjkxNGZmNTUgMTAwNzU1CiAtLS0gYS9ndGtkb2MtbWtodG1sLmluCiArKysgYi9ndGtkb2MtbWtodG1sLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTc1LDcgKzc1LDcgQEAKICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rbWFuLmluIGIvZ3RrZG9jLW1rbWFuLmluCi1pbmRleCBjNTQ0NWNkLi42NWRiNzFhIDEwMDY0NAoraW5kZXggYzU0NDVjZC4uNjVkYjcxYSAxMDA3NTUKIC0tLSBhL2d0a2RvYy1ta21hbi5pbgogKysrIGIvZ3RrZG9jLW1rbWFuLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTExNSw3ICsxMTUsNyBAQAogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KIGRpZmYgLS1naXQgYS9ndGtkb2Mtc2NhbmdvYmouaW4gYi9ndGtkb2Mtc2NhbmdvYmouaW4KLWluZGV4IDRjYmUxMzAuLjUyYzJjMjQgMTAwNjQ0CitpbmRleCA0Y2JlMTMwLi41MmMyYzI0IDEwMDc1NQogLS0tIGEvZ3RrZG9jLXNjYW5nb2JqLmluCiArKysgYi9ndGtkb2Mtc2NhbmdvYmouaW4KIEBAIC0xLDQgKzEsNCBAQApAQCAtMTI1LDE4ICsxMjUsMTUgQEAKICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvdGVzdHMvdG9vbHMuc2guaW4gYi90ZXN0cy90b29scy5zaC5pbgotaW5kZXggNGQzMDFkMC4uNTY1ZmMxZSAxMDA2NDQKK2luZGV4IDM0Mzg0NGEuLjlkYzY2OTIgMTAwNjQ0CiAtLS0gYS90ZXN0cy90b29scy5zaC5pbgogKysrIGIvdGVzdHMvdG9vbHMuc2guaW4KLUBAIC0zMSw3ICszMSw3IEBAIGRvbmUKLSAjIFRPRE86IHRlc3QgcHl0aG9uIDIgYW5kIDMgKHB5dGhvbjMgLW1jb21waWxlYWxsIGd0a2RvYy8qLnB5KQotIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZGVwc2NhbiBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWtodG1sIGd0a2RvYy1ta21hbiBndGtkb2MtbWtwZGYgZ3RrZG9jLXJlYmFzZSBndGtkb2Mtc2NhbmdvYmo7IGRvCitAQCAtMzAsNyArMzAsNyBAQCBkb25lCisgIyBUT0RPOiBhbHNvIHRlc3QgdGhlIG1vZHVsZSBmaWxlcworIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZGVwc2NhbiBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWtodG1sIGd0a2RvYy1ta2h0bWwyIGd0a2RvYy1ta21hbiBndGtkb2MtbWtwZGYgZ3RrZG9jLXJlYmFzZSBndGtkb2Mtc2NhbmdvYmo7IGRvCiAgICAgIGZ1bGxmaWxlPWB3aGljaCAkZmlsZWAKIC0gICAgQFBZVEhPTkAgLW0gcHlfY29tcGlsZSAkZnVsbGZpbGUKICsgICAgcHl0aG9uMyAtbSBweV9jb21waWxlICRmdWxsZmlsZQogICAgICBpZiB0ZXN0ICQ/ICE9IDAgOyB0aGVuIGZhaWxlZD1gZXhwciAkZmFpbGVkICsgMWA7IGZpCiAgICAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKICBkb25lCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL25vLWNsb2JiZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL25vLWNsb2JiZXIucGF0Y2gKaW5kZXggMGZhMjJiMi4uZDE2OTU0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gOGJjNGMxZjE2OWY4OWJjNTUzMWRhNWI3ZTg5MmI4ZjIwZTBmOWExOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIxIE1hciAyMDE4IDE0OjQ3OjI5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGd0ay1kb2M6IGRvbid0IHJlZ2VuZXJhdGUgZ3RrLWRvYyBpbiBkb19pbnN0YWxsCisKIEluIG91dC1vZi10cmVlIGJ1aWxkcyBndGstZG9jJ3Mgc2V0dXAtYnVpbGQgdGFyZ2V0IGNvcGllcyBhbGwgdGhlIGNvbnRlbnQgZnJvbSAkc3JjZGlyIHRvICRidWlsZGRpci4KIAogSG93ZXZlciwgaWYgc29tZSBvZiB0aGlzIGNvbnRlbnQgaXMgcmVnZW5lcmF0ZWQgYXQgY29uZmlndXJlIHRpbWUgdGhpcyBjYW4gaGFwcGVuOgpAQCAtMTYsMTIgKzIxLDIwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDU3MV0KIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKLWRpZmYgLS1naXQgYS9ndGstZG9jLm1ha2UgYi9ndGstZG9jLm1ha2UKLWluZGV4IGY4N2VhYWIuLjI0NmYzYzAgMTAwNjQ0Ci0tLS0gYS9ndGstZG9jLm1ha2UKLSsrKyBiL2d0ay1kb2MubWFrZQotQEAgLTExMywzICsxMTMsMyBAQCBzZXR1cC1idWlsZC5zdGFtcDoKKy0tLQorIGJ1aWxkc3lzdGVtcy9hdXRvdG9vbHMvZ3RrLWRvYy5tYWtlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGRzeXN0ZW1zL2F1dG90b29scy9ndGstZG9jLm1ha2UgYi9idWlsZHN5c3RlbXMvYXV0b3Rvb2xzL2d0ay1kb2MubWFrZQoraW5kZXggN2Q5YTI3Zi4uOGNiMzM2ZCAxMDA2NDQKKy0tLSBhL2J1aWxkc3lzdGVtcy9hdXRvdG9vbHMvZ3RrLWRvYy5tYWtlCisrKysgYi9idWlsZHN5c3RlbXMvYXV0b3Rvb2xzL2d0ay1kb2MubWFrZQorQEAgLTExMSw3ICsxMTEsNyBAQCBzZXR1cC1idWlsZC5zdGFtcDoKKyAJICAgICAgZGVzdGRpcj1gZGlybmFtZSAkKGFic19idWlsZGRpcikvJCRmaWxlYDsgXAorIAkgICAgICB0ZXN0IC1kICIkJGRlc3RkaXIiIHx8IG1rZGlyIC1wICIkJGRlc3RkaXIiOyBcCiAgCSAgICAgIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgJiYgXAogLQkgICAgICAgIGNwIC1wZiAkKGFic19zcmNkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvJCRmaWxlIHx8IHRydWU7IFwKICsJICAgICAgICBjcCAtcG4gJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpLyQkZmlsZSB8fCB0cnVlOyBcCiAgCSAgICBkb25lOyBcCisgCSAgZmk7IFwKKyAJZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCmluZGV4IGJmYmM3NzcuLjliMTI4ZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNWYxNDU2MjFiNDc4MGNmZDZhNTYzMmZjYzk3YzQ1ZjU3MjkzOGVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDRhZjE1MzIyZjY3N2RiNDJlY2MyYWNjNDY1MzM0YTA0ZGU5YTg3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDUgU2VwIDIwMTYgMjI6MjU6NDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIFVzZSBuYXRpdmUgcGtnLWNvbmZpZyB3aGVuIGxvb2tpbmcgZm9yIGd0ay1kb2MuCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBuYXRpdmUgcGtnLWNvbmZpZyB3aGVuIGxvb2tpbmcgZm9yIGd0ay1kb2MuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KQEAgLTEwLDEwICsxMCwxMCBAQAogIGd0ay1kb2MubTQgfCA3ICsrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd0ay1kb2MtMS4yNy5vcmlnL2d0ay1kb2MubTQKLSsrKyBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorZGlmZiAtLWdpdCBhL2d0ay1kb2MubTQgYi9ndGstZG9jLm00CitpbmRleCAyZDEyZjAxLi5lNWFmYzNmIDEwMDY0NAorLS0tIGEvYnVpbGRzeXN0ZW1zL2F1dG90b29scy9ndGstZG9jLm00CisrKysgYi9idWlsZHN5c3RlbXMvYXV0b3Rvb2xzL2d0ay1kb2MubTQKIEBAIC0yNSw3ICsyNSw3IEBACiAgIyBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCiAgIyBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NTI4MTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBnbGliLWJhc2VkIHNvZnR3YXJlIgotREVTQ1JJUFRJT04gPSAiR3RrLWRvYyBpcyBhIHNldCBvZiBzY3JpcHRzIHRoYXQgZXh0cmFjdCBzcGVjaWFsbHkgZm9ybWF0dGVkIGNvbW1lbnRzIFwKLSAgICAgICAgICAgICAgIGZyb20gZ2xpYi1iYXNlZCBzb2Z0d2FyZSBhbmQgcHJvZHVjZSBhIHNldCBvZiBodG1sIGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSB0aGVtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnL2d0ay1kb2MvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1pbmhlcml0IGdub21lYmFzZQotCi0jIENvbmZpZ3VyZSB0aGUgc2NyaXB0cyBjb3JyZWN0bHkgKGFuZCBidWlsZCB0aGVpciBkZXBlbmRlbmNpZXMpIG9ubHkgaWYgdGhleSBhcmUgYWN0dWFsbHkKLSMgZ29pbmcgdG8gYmUgdXNlZDsgb3RoZXJpd3NlIHdlIG5lZWQgb25seSB0aGUgbTQvbWFrZWZpbGUgaW5jbHVkZXMgZnJvbSB0aGUgZ3RrLWRvYyB0YXJiYWxsLgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBpLWRvY3VtZW50YXRpb24iLCAid29ya2luZy1zY3JpcHRzIiwgIiIsIGQpfSIKLQotIyBUaGlzIHdpbGwgY2F1c2UgdGFyZ2V0IGd0ay1kb2MgdG8gaGFyZGNvZGUgcGF0aHMgb2YgbmF0aXZlIGRlcGVuZGVuY2llcwotIyBpbnRvIGl0cyBzY3JpcHRzLiBUaGlzIG1lYW5zIHRoYXQgdGFyZ2V0IGd0ay1kb2MgcGFja2FnZSBpcyBicm9rZW47Ci0jIGhvcGVmdWxseSBubyBvbmUgbWluZHMgYmVjYXVzZSBpdHMgc2NyaXB0cyBhcmUgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZAotIyBhbmQgc2hvdWxkbid0IGJlIHVzZWQgb24gdGFyZ2V0cy4KLVBBQ0tBR0VDT05GSUdbd29ya2luZy1zY3JpcHRzXSA9ICItLXdpdGgtaGlnaGxpZ2h0PXNvdXJjZS1oaWdobGlnaHQsLS13aXRoLWhpZ2hsaWdodD1ubyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUgcHl0aG9uMy1zaXgiCi1QQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIyOTk0OWUwOTY0NzYyZTQ3NGI3MDZjZTIyMTcxNjAyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTI2YmQzZjcwODBjNzQ5YjFjYjY2YzQ2YzZiZjgyMzllMmYzMjBhOTQ5OTY0ZmI5YzZkNTZlMWIwYzZkOWE2ZiIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8tY2xvYmJlci5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKLSMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCi0jIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNGVlMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yOS5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBnbGliLWJhc2VkIHNvZnR3YXJlIgorREVTQ1JJUFRJT04gPSAiR3RrLWRvYyBpcyBhIHNldCBvZiBzY3JpcHRzIHRoYXQgZXh0cmFjdCBzcGVjaWFsbHkgZm9ybWF0dGVkIGNvbW1lbnRzIFwKKyAgICAgICAgICAgICAgIGZyb20gZ2xpYi1iYXNlZCBzb2Z0d2FyZSBhbmQgcHJvZHVjZSBhIHNldCBvZiBodG1sIGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSB0aGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnL2d0ay1kb2MvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IGdub21lYmFzZQorCisjIENvbmZpZ3VyZSB0aGUgc2NyaXB0cyBjb3JyZWN0bHkgKGFuZCBidWlsZCB0aGVpciBkZXBlbmRlbmNpZXMpIG9ubHkgaWYgdGhleSBhcmUgYWN0dWFsbHkKKyMgZ29pbmcgdG8gYmUgdXNlZDsgb3RoZXJpd3NlIHdlIG5lZWQgb25seSB0aGUgbTQvbWFrZWZpbGUgaW5jbHVkZXMgZnJvbSB0aGUgZ3RrLWRvYyB0YXJiYWxsLgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBpLWRvY3VtZW50YXRpb24iLCAid29ya2luZy1zY3JpcHRzIiwgIiIsIGQpfSIKKworIyBUaGlzIHdpbGwgY2F1c2UgdGFyZ2V0IGd0ay1kb2MgdG8gaGFyZGNvZGUgcGF0aHMgb2YgbmF0aXZlIGRlcGVuZGVuY2llcworIyBpbnRvIGl0cyBzY3JpcHRzLiBUaGlzIG1lYW5zIHRoYXQgdGFyZ2V0IGd0ay1kb2MgcGFja2FnZSBpcyBicm9rZW47CisjIGhvcGVmdWxseSBubyBvbmUgbWluZHMgYmVjYXVzZSBpdHMgc2NyaXB0cyBhcmUgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZAorIyBhbmQgc2hvdWxkbid0IGJlIHVzZWQgb24gdGFyZ2V0cy4KK1BBQ0tBR0VDT05GSUdbd29ya2luZy1zY3JpcHRzXSA9ICItLXdpdGgtaGlnaGxpZ2h0PXNvdXJjZS1oaWdobGlnaHQsLS13aXRoLWhpZ2hsaWdodD1ubyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUgcHl0aG9uMy1zaXgiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRmMjZhMzhjMjA5YjNkNzM1OGYyNjI2OGZjYmRiOWUzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMTQ1NzhlMDAyNDk2NTY3Mjc2ZDMxMGE2MmM5ZmZkNmM1NmVlODgwNmNlNTA3OWZmYjBiODFjNDExMWY1ODZiMSIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm8tY2xvYmJlci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKKyMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCisjIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2d0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCisgICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTguNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjkxN2VjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJzZWNyZXQgaXMgYSBsaWJyYXJ5IGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHBhc3N3b3JkcyBhbmQgb3RoZXIgc2VjcmV0cyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yM2MyYTVlMDEwNmI5OWQ3NTIzODk4NjU1OWJiNWZjNiIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBtYW5wYWdlcwotCi1ERVBFTkRTICs9ICJnbGliLTIuMCBsaWJnY3J5cHQgZ2V0dGV4dC1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJkNjg4ODI1OTIxMzEzZGE4NzMxMzEzYjBhN2YzOTRjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOWNlN2JkOGRkNTgzMWYyNzg2YzkzNWQ4MjYzOGFjNDI4ZmEwODUwNTdjYzY3ODBhYmEwZTM5Mzc1ODg3Y2NiMyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAyMjgvCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotIyB2YXBpZ2VuLm00IGJ1bmRsZWQgd2l0aCB0aGUgdGFyYmFsbCBkb2VzIG5vdCB5ZXQgaGF2ZSBvdXIgY3Jvc3MtY29tcGlsYXRpb24gZml4ZXMKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHJtIC1mICR7U30vYnVpbGQvbTQvdmFwaWdlbi5tNAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTguNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MThjNzFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjYuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJsaWJzZWNyZXQgaXMgYSBsaWJyYXJ5IGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHBhc3N3b3JkcyBhbmQgb3RoZXIgc2VjcmV0cyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yM2MyYTVlMDEwNmI5OWQ3NTIzODk4NjU1OWJiNWZjNiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBtYW5wYWdlcworCitERVBFTkRTICs9ICJnbGliLTIuMCBsaWJnY3J5cHQgZ2V0dGV4dC1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImM2Y2YxMzJhNTZiZDM0NmZiZjQ5YTQzYWJiMDJlNWMyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNWVmYmM4OTBiYTQxYTMyM2ZmZTA1OTljZDI2MGZkMTJiZDhlYjYyYTA0YWExYmQxYjI3NjI1NzVkMjUzZDY2ZiIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAyMjgvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKKyMgdmFwaWdlbi5tNCBidW5kbGVkIHdpdGggdGhlIHRhcmJhbGwgZG9lcyBub3QgeWV0IGhhdmUgb3VyIGNyb3NzLWNvbXBpbGF0aW9uIGZpeGVzCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBybSAtZiAke1N9L2J1aWxkL200L3ZhcGlnZW4ubTQKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLWZwdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby1mcHUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTdjNTMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLWZwdS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLQotZGVmIGdldF9jYWlyb19mcHVfc2V0dGluZyhiYiwgZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBpbiBbICdzb2Z0JyBdOgotICAgICAgICByZXR1cm4gIi0tZGlzYWJsZS1zb21lLWZsb2F0aW5nLXBvaW50IgotICAgIHJldHVybiAiIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZTBkMmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgQ2Fpcm8gMkQgdmVjdG9yIGdyYXBoaWNzIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJDYWlybyBpcyBhIG11bHRpLXBsYXRmb3JtIGxpYnJhcnkgcHJvdmlkaW5nIGFudGktYWxpYXNlZCBcCi12ZWN0b3ItYmFzZWQgcmVuZGVyaW5nIGZvciBtdWx0aXBsZSB0YXJnZXQgYmFja2VuZHMuIFBhdGhzIGNvbnNpc3QgXAotb2YgbGluZSBzZWdtZW50cyBhbmQgY3ViaWMgc3BsaW5lcyBhbmQgY2FuIGJlIHJlbmRlcmVkIGF0IGFueSB3aWR0aCBcCi13aXRoIHZhcmlvdXMgam9pbiBhbmQgY2FwIHN0eWxlcy4gQWxsIGNvbG9ycyBtYXkgYmUgc3BlY2lmaWVkIHdpdGggXAotb3B0aW9uYWwgdHJhbnNsdWNlbmNlIChvcGFjaXR5L2FscGhhKSBhbmQgY29tYmluZWQgdXNpbmcgdGhlIFwKLWV4dGVuZGVkIFBvcnRlci9EdWZmIGNvbXBvc2l0aW5nIGFsZ2VicmEgYXMgZm91bmQgaW4gdGhlIFggUmVuZGVyIFwKLUV4dGVuc2lvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNUEwtMSAmIExHUEx2Mi4xICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJNUEwtMSAmIExHUEx2Mi4xIgotTElDRU5TRV8ke1BOfS1kZXYgPSAiTVBMLTEgJiBMR1BMdjIuMSIKLUxJQ0VOU0VfJHtQTn0tZG9jID0gIk1QTC0xICYgTEdQTHYyLjEiCi1MSUNFTlNFXyR7UE59LWdvYmplY3QgPSAiTVBMLTEgJiBMR1BMdjIuMSIKLUxJQ0VOU0VfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIk1QTC0xICYgTEdQTHYyLjEiCi1MSUNFTlNFXyR7UE59LXBlcmYtdXRpbHMgPSAiR1BMdjMrIgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGV4dCIKLURFUEVORFMgPSAibGlicG5nIGZvbnRjb25maWcgcGl4bWFuIGdsaWItMi4wIHpsaWIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgeGNiJywgJycsIGQpfSBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXg9eWVzIC1lbmFibGUteGxpYiwtLXdpdGgteD1ubyAtLWRpc2FibGUteGxpYiwke1gxMURFUEVORFN9IgotUEFDS0FHRUNPTkZJR1t4Y2JdID0gIi0tZW5hYmxlLXhjYiwtLWRpc2FibGUteGNiLGxpYnhjYiIKLVBBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdID0gIi0tZW5hYmxlLWRpcmVjdGZiPXllcywsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZD15ZXMsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbD15ZXMsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKLVBBQ0tBR0VDT05GSUdbZ2xlc3YyXSA9ICItLWVuYWJsZS1nbGVzdjIsLS1kaXNhYmxlLWdsZXN2Mix2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCx2aXJ0dWFsL2xpYmdsIgotCi0jY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzIAotcmVxdWlyZSBjYWlyby1mcHUuaW5jCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9jYWlyb19mcHVfc2V0dGluZyhiYiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtdGVlIFwKLSAgICAgICAgICAgICAgICAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi0jIFdlIGRvbid0IGRlcGVuZCBvbiBiaW51dGlscyBzbyB3ZSBuZWVkIHRvIGRpc2FibGUgdGhpcwotZXhwb3J0IGFjX2N2X2xpYl9iZmRfYmZkX29wZW5yPSJubyIKLSMgRW5zdXJlIHdlIGRvbid0IGRlcGVuZCBvbiBMWk8KLWV4cG9ydCBhY19jdl9saWJfbHpvMl9sem8yYV9kZWNvbXByZXNzPSJubyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYgppbmRleCAwNzVjYTFlLi4xOGI5NDc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIKQEAgLTEsNyArMSwyNyBAQAotcmVxdWlyZSBjYWlyby5pbmMKK1NVTU1BUlkgPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAordmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKK29mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAord2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKK29wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCitleHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCitFeHRlbnNpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTVBMLTEgJiBMR1BMdjIuMSAmIEdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTVBMLTEgJiBMR1BMdjIuMSIKK0xJQ0VOU0VfJHtQTn0tZGV2ID0gIk1QTC0xICYgTEdQTHYyLjEiCitMSUNFTlNFXyR7UE59LWRvYyA9ICJNUEwtMSAmIExHUEx2Mi4xIgorTElDRU5TRV8ke1BOfS1nb2JqZWN0ID0gIk1QTC0xICYgTEdQTHYyLjEiCitMSUNFTlNFXyR7UE59LXNjcmlwdC1pbnRlcnByZXRlciA9ICJNUEwtMSAmIExHUEx2Mi4xIgorTElDRU5TRV8ke1BOfS1wZXJmLXV0aWxzID0gIkdQTHYzKyIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCiAKK0RFUEVORFMgPSAiZm9udGNvbmZpZyBnbGliLTIuMCBsaWJwbmcgcGl4bWFuIHpsaWIiCisKIFNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgXCAKICAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggXApAQCAtMTAsMTYgKzMwLDQzIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiOWYwZGI5ZGJmY2EwOTY2YmU4YWNkNjgyZTYzNmQxNjUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM5MGYwMGM1MDBiMjI5OWMwYTMyM2RkOWJlZWFkMmEwMDM1Mzc1MmIyMDkyZWFkNTU4MTM5YmQ2N2Y3YmYxNiIKIAotUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MgbXVsdGlsaWJfc2NyaXB0CiAKLVNVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgotREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAotdmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKLW9mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAotd2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKLW9wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCi1leHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCi1FeHRlbnNpb24uIgorTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1wZXJmLXV0aWxzOiR7YmluZGlyfS9jYWlyby10cmFjZSIKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnhleHQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYicsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExIHhjYicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICdvcGVuZ2wnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXg9eWVzIC1lbmFibGUteGxpYiwtLXdpdGgteD1ubyAtLWRpc2FibGUteGxpYiwke1gxMURFUEVORFN9IgorUEFDS0FHRUNPTkZJR1t4Y2JdID0gIi0tZW5hYmxlLXhjYiwtLWRpc2FibGUteGNiLGxpYnhjYiIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdID0gIi0tZW5hYmxlLWRpcmVjdGZiPXllcywsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZD15ZXMsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbD15ZXMsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbZ2xlc3YyXSA9ICItLWVuYWJsZS1nbGVzdjIsLS1kaXNhYmxlLWdsZXN2Mix2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCx2aXJ0dWFsL2xpYmdsIgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWRpc2FibGUtc29tZS1mbG9hdGluZy1wb2ludCcsICcnLCBkKX0gXAorICAgIC0tZW5hYmxlLXRlZSBcCisiCisKKyMgV2UgZG9uJ3QgZGVwZW5kIG9uIGJpbnV0aWxzIHNvIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGlzCitleHBvcnQgYWNfY3ZfbGliX2JmZF9iZmRfb3BlbnI9Im5vIgorIyBFbnN1cmUgd2UgZG9uJ3QgZGVwZW5kIG9uIExaTworZXhwb3J0IGFjX2N2X2xpYl9sem8yX2x6bzJhX2RlY29tcHJlc3M9Im5vIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCit9CisKK1BBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgogCiBTVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCiBERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgpAQCAtMzIsMTUgKzc5LDkgQEAKIERFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCiBGSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCiBGSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgotRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCitGSUxFU18ke1BOfS1wZXJmLXV0aWxzID0gIiR7YmluZGlyfS9jYWlyby10cmFjZSogJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgogCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCi19CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhbnRhcmVsbC1mb250cy9jYW50YXJlbGwtZm9udHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2FudGFyZWxsLWZvbnRzL2NhbnRhcmVsbC1mb250c19naXQuYmIKaW5kZXggOWQ4ZmIyOC4uZGI0ODBiZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2FudGFyZWxsLWZvbnRzL2NhbnRhcmVsbC1mb250c19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2FudGFyZWxsLWZvbnRzL2NhbnRhcmVsbC1mb250c19naXQuYmIKQEAgLTEwLDEwICsxMCwxMCBAQAogTElDRU5TRSA9ICJPRkwtMS4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY5MWUzZmZjYWI4Y2ZiOTcyYTY2YmYxMTI1NTE4OGQiCiAKLVBWID0gIjAuMC4yNCIKK1BWID0gIjAuMC4yNSIKIAotU1JDUkVWID0gIjA3YjZlYTJjYmJlYmZjMzYwYWE0NjY4NjEyYTM3NmJlNWUyMTRlYWEiCi1TUkNfVVJJID0gImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvY2FudGFyZWxsLWZvbnRzO3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCitTUkNSRVYgPSAiZTI4YTkwOTZkYTQzOTg0MjEyYjViNDAwMmI5NDliY2I4Yzc1MjdmOSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9jYW50YXJlbGwtZm9udHMuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1yZWNvbnN0cnVjdGlvbi0wLjAuMjUiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oPyEwXC4xMykoPyEwXC4xMFwuMSlcZCtcLlxkKyhcLlxkKykrKSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E1ZTBhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgY2x1dHRlci1nc3QtMy4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jbHV0dGVyLWdzdC9jbHV0dGVyLWdzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTk1YmFhY2JhMTk0ZTgxNGMxMTBlYTNiZGYyNWRkYmY0IgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzZTE0NWUyNGJiM2MzNDBlZWVkZGFmZDE4ZWZlNTQ3ZCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImU5ZjFjODdkOGY0YzQ3MDYyZTk1MmZiODAwODcwNGY4OTQyY2YyZDZmMjkwNjg4ZjNmN2QxM2U4MzU3OGNjNmMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEwZGRhNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yNi5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgY2x1dHRlci1nc3QtMy4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jbHV0dGVyLWdzdC9jbHV0dGVyLWdzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjQ7bWQ1PTk1YmFhY2JhMTk0ZTgxNGMxMTBlYTNiZGYyNWRkYmY0IgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3ODA5Y2E2Y2U5ZDFhMzQ5MDU5N2ZkNGE3Mzc1YzM4OSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ4NjE4YTZkOWFjY2VjMGYyYTg1NzRjNWUxMjIwMDUxZjg1MDVmYjgyYjIwMzM2YzI2YmRiZDQ4MmFhNmNiM2EiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBiZWJjMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBlNmJkNDIwNWIwYjU0NmFmZTk5MWFlNmY3MjI1NjY0NWY0NDA0YWQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IE1vbiwgNSBTZXAgMjAxNiAxNDo0MTozNyArMDMwMAotU3ViamVjdDogW1BBVENIIGxpYmRybV0gY29uZmlndXJlLmFjOiBBbGxvdyBleHBsaWNpdCBlbmFibGluZyBvZiBjdW5pdCB0ZXN0cwotCi1BZGQgLS13aXRoLWN1bml0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRvIHJlcHJvZHVjaWJsZSBidWlsZHMuIERlZmF1bHQKLWlzIHN0aWxsIHRvIHByb2JlIGN1bml0IGFuZCBidWlsZCBvcHBvcnR1bmlzdGljYWxseS4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttYWlsaW5nIGxpc3RdCi0tLS0KLSBjb25maWd1cmUuYWMgfCAxNCArKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogbGliZHJtLTIuNC45MS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJkcm0tMi40LjkxLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliZHJtLTIuNC45MS9jb25maWd1cmUuYWMKLUBAIC0xNjMsNiArMTYzLDEyIEBAIEFDX0FSR19FTkFCTEUoaW5zdGFsbC10ZXN0LXByb2dyYW1zLAotIAkJICBbSW5zdGFsbCB0ZXN0IHByb2dyYW1zIChkZWZhdWx0OiBubyldKSwKLSAJCSAgW0lOU1RBTExfVEVTVFM9JGVuYWJsZXZhbF0sIFtJTlNUQUxMX1RFU1RTPW5vXSkKLSAKLStBQ19BUkdfV0lUSChbY3VuaXRdLAotKyAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWN1bml0XSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0J1aWxkIHRlc3RzIHRoYXQgdXNlIGN1bml0IChkZWZhdWx0OiBhdXRvKV0pXSwKLSsgICAgICAgICAgICBbXSwKLSsgICAgICAgICAgICBbd2l0aF9jdW5pdD1hdXRvXSkKLSsKLSBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gZG5sIGNoZWNrIGNvbXBpbGVyIGZsYWdzCi0gQUNfREVGVU4oW0xJQkRSTV9DQ19UUllfRkxBR10sIFsKLUBAIC00MTEsNyArNDE3LDcgQEAgZWxzZQotIAlBQ19ERUZJTkUoSEFWRV9SQURFT04sIDApCi0gZmkKLSAKLS1pZiB0ZXN0ICJ4JEFNREdQVSIgIT0geG5vOyB0aGVuCi0raWYgdGVzdCAieCR3aXRoX2N1bml0IiAhPSB4bm8gLWEgIngkQU1ER1BVIiAhPSB4bm87IHRoZW4KLSAJIyBEZXRlY3QgY3VuaXQgbGlicmFyeQotIAlQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1VOSVRdLCBbY3VuaXQgPj0gMi4xXSwgW2hhdmVfY3VuaXQ9eWVzXSwgW2hhdmVfY3VuaXQ9bm9dKQotIAkjIElmIHBrZy1jb25maWcgZG9lcyBub3QgZmluZCBjdW5pdCwgY2hlY2sgaXQgdXNpbmcgQUNfQ0hFQ0tfTElCLiAgV2UKLUBAIC00MzYsNyArNDQyLDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAxLCBbSGF2ZSBhbWRncHUgc3VwcG9ydF0pCi0gCi0gCWlmIHRlc3QgIngkaGF2ZV9jdW5pdCIgPSAieG5vIjsgdGhlbgotLQkJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkuIERpc2FibGluZyBhbWRncHUgdGVzdHNdKQotKwkJaWYgdGVzdCAieCR3aXRoX2N1bml0IiA9ICJ4eWVzIjsgdGhlbgotKwkJCUFDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgY3VuaXQgbGlicmFyeSBidXQgLS13aXRoLWN1bml0IHdhcyBnaXZlbl0pCi0rCQllbGlmIHRlc3QgIngkd2l0aF9jdW5pdCIgPSAieGF1dG8iOyB0aGVuCi0rCQkJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkuIERpc2FibGluZyBhbWRncHUgdGVzdHNdKQotKwkJZmkKLSAJZmkKLSBlbHNlCi0gCUFDX0RFRklORShIQVZFX0FNREdQVSwgMCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MDhiZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1kcm1kZXZpY2UuYzogZGVmaW5lIF9HTlVfU09VUkNFCi0KLUluY2x1ZGUgY29uZmlnLmggdG8gZml4IHRoaXMgYnVpbGQgZXJyb3Igd2l0aCB1Y2xpYmM6Ci0KLWxpYmRybS0yLjQuNjYvdGVzdHMvZHJtZGV2aWNlLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLWxpYmRybS0yLjQuNjYvdGVzdHMvZHJtZGV2aWNlLmM6OTY6NjA6IGVycm9yOgotJ09fQ0xPRVhFQycgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi1mZCA9IG9wZW4oZGV2aWNlc1tpXS0+bm9kZXNbal0sT19SRE9OTFkgfCBPX0NMT0VYRUMsIDApOwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgbGliZHJtLTIuNC42Ni1vcmlnL3Rlc3RzL2RybWRldmljZS5jIGxpYmRybS0yLjQuNjYvdGVzdHMvZHJtZGV2aWNlLmMKLS0tLSBsaWJkcm0tMi40LjY2LW9yaWcvdGVzdHMvZHJtZGV2aWNlLmMJMjAxNi0wMi0yMyAxMTozNDowMi4wNTQ5MDQ1MDIgKzAyMDAKLSsrKyBsaWJkcm0tMi40LjY2L3Rlc3RzL2RybWRldmljZS5jCTIwMTYtMDItMjMgMTE6MzU6MzQuMzcxNzUwMzgzICswMjAwCi1AQCAtMjEsNiArMjEsNyBAQAotICAqCi0gICovCi0gCi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vaW5zdGFsbHRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9pbnN0YWxsdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMWZiMDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9pbnN0YWxsdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIDVjNmViNDNjMmY2ZTdmMmVlN2MyNWM5MmU0MmY0ZTQ0MDNmYTA1MjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyMSBGZWIgMjAxNyAxNDozNzo1MiArMDIwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0czogYWxzbyBpbnN0YWxsIHRlc3QgYXBwcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFl1IEtlIDxrZS55dUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gdGVzdHMvTWFrZWZpbGUuYW0gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDAzNTVhOTIuLmI0ODgyY2QgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC00NSwzICs0NSw0IEBAIFRFU1RTID0gXAotIGNoZWNrX1BST0dSQU1TID0gXAotIAkkKFRFU1RTKSBcCi0gCWRybWRldmljZQotK2Jpbl9QUk9HUkFNUyA9ICQoY2hlY2tfUFJPR1JBTVMpCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2Q2YzViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9tdXNsLWlvY3RsLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDQ2YzBmZDZjODI3YThjYjRkMDRlMDY3YmYwNGZhYjU3OWFjNDcxMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxOCBKdW4gMjAxOCAxNTowNzowMyArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0cy9ub3V2ZWF1L3RocmVhZGVkOiBhZGFwdCBpb2N0bCBzaWduYXR1cmUKKworUE9TSVggc2F5cyBpb2N0bCgpIGhhcyB0aGUgc2lnbmF0dXJlIChpbnQsIGludCwgLi4uKSBidXQgZ2xpYmMgaGFzIGRlY2lkZWQgdG8KK3VzZSAoaW50LCB1bnNpZ25lZCBsb25nIGludCwgLi4uKSBpbnN0ZWFkLgorCitVc2UgYSAjaWZkZWYgdG8gYWRhcHQgdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIGFzIGFwcHJvcHJpYXRlLgorLS0tCisgdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jIGIvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jCitpbmRleCAzNjY5YmNkMy4uZTFjMjdjMDEgMTAwNjQ0CistLS0gYS90ZXN0cy9ub3V2ZWF1L3RocmVhZGVkLmMKKysrKyBiL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYworQEAgLTM2LDcgKzM2LDExIEBAIHN0YXRpYyBpbnQgZmFpbGVkOworIAorIHN0YXRpYyBpbnQgaW1wb3J0X2ZkOworIAorKyNpZmRlZiBfX0dMSUJDX18KKyBpbnQgaW9jdGwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHJlcXVlc3QsIC4uLikKKysjZWxzZQorK2ludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0LCAuLi4pCisrI2VuZGlmCisgeworIAl2YV9saXN0IHZhOworIAlpbnQgcmV0OworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5MDI4NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIzZDg3Y2RhOTI3MDBiNzEwYTM3ZDliOGVkYWE5ZjU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzNGEwZWQwY2MxZWZmMDZmNDg2NzRiMWRhODFhYWZhNjYxYTlmMDAxZTdhNGY0M2RkZTgxMDc2ODg2ZGM4MDAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0gICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCi1GSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjU0MjkyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTQuYmIKQEAgLTAsMCArMSw2MCBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyIKKworU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9tdXNsLWlvY3RsLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImU5ODAzMjMzODM4MDA3MDQ3ZjM5ZWIzODVjNzBkOWUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3M2M1OWIwYTM3NjA1MDJjNDI4YmE4MWRlNDljZDQ4MDc2NTdkMjZiZTVlNjk3ZWJhM2E4N2RkMDIxZDE2YmUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIG1hbnBhZ2VzCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJrbXMgaW50ZWwgcmFkZW9uIGFtZGdwdSBub3V2ZWF1IHZtd2dmeCBvbWFwIGZyZWVkcmVubyB2YzQgZXRuYXZpdiBpbnN0YWxsLXRlc3QtcHJvZ3JhbXMiCitQQUNLQUdFQ09ORklHW2xpYmttc10gPSAiLURsaWJrbXM9dHJ1ZSwtRGxpYmttcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaW50ZWxdID0gIi1EaW50ZWw9dHJ1ZSwtRGludGVsPWZhbHNlLGxpYnBjaWFjY2VzcyIKK1BBQ0tBR0VDT05GSUdbcmFkZW9uXSA9ICItRHJhZGVvbj10cnVlLC1EcmFkZW9uPWZhbHNlIgorUEFDS0FHRUNPTkZJR1thbWRncHVdID0gIi1EYW1kZ3B1PXRydWUsLURhbWRncHU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25vdXZlYXVdID0gIi1Ebm91dmVhdT10cnVlLC1Ebm91dmVhdT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdm13Z2Z4XSA9ICItRHZtd2dmeD10cnVlLC1Edm13Z2Z4PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tvbWFwXSA9ICItRG9tYXA9dHJ1ZSwtRG9tYXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2V4eW5vc10gPSAiLURleHlub3M9dHJ1ZSwtRGV4eW5vcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZnJlZWRyZW5vXSA9ICItRGZyZWVkcmVubz10cnVlLC1EZnJlZWRyZW5vPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0ZWdyYV0gPSAiLUR0ZWdyYT10cnVlLC1EdGVncmE9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZjNF0gPSAiLUR2YzQ9dHJ1ZSwtRHZjND1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZXRuYXZpdl0gPSAiLURldG5hdml2PXRydWUsLURldG5hdml2PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tmcmVlZHJlbm8ta2dzbF0gPSAiLURmcmVlZHJlbm8ta2dzbD10cnVlLC1EZnJlZWRyZW5vLWtnc2w9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRHZhbGdyaW5kPXRydWUsLUR2YWxncmluZD1mYWxzZSx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbaW5zdGFsbC10ZXN0LXByb2dyYW1zXSA9ICItRGluc3RhbGwtdGVzdC1wcm9ncmFtcz10cnVlLC1EaW5zdGFsbC10ZXN0LXByb2dyYW1zPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjYWlyby10ZXN0c10gPSAiLURjYWlyby10ZXN0cz10cnVlLC1EY2Fpcm8tdGVzdHM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi1EdWRldj10cnVlLC1EdWRldj1mYWxzZSx1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW4tcGFnZXM9dHJ1ZSwtRG1hbi1wYWdlcz1mYWxzZSxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKK0ZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8uaW5jCmluZGV4IDhlN2Q5YmQuLjA3YWQwNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLmluYwpAQCAtNywxNSArNywxNyBAQAogREVQRU5EUyA9ICJ2aXJ0dWFsL2VnbCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2R2MS9lZ2xpbmZvLmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovL3dhZiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1TVEFHSU5HX0lOQ0RJUi10by1zZWFyY2hwYXRoLWZvci1lZ2wtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICAiCiBTUkNSRVYgPSAiNGIzMTc2NDhlYzZjZjM5NTU2YTllNWQ4MDc4ZjYwNWJjMGVkZDVkZSIKIAogQ1ZFX1BST0RVQ1QgPSAiZWdsaW5mbyIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCB3YWYgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IHdhZiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgcGtnY29uZmlnCiAjIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA/PSAib3BlbmdsIgogCkBAIC0yOCw2ICszMCw5IEBACiAgICAgICAgICAgICAgICAgLS1kZXZpY2U9JHtFR0xJTkZPX0RFVklDRX0gXAogICAgICAgICAgICAgICAgIC0tc3lzcm9vdCAke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3dhZiAke1N9L3dhZgorfQogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJbXYgJHtEfS8ke2JpbmRpcn0vZWdsaW5mbyAke0R9LyR7YmluZGlyfS8ke0VHTElORk9fQklOQVJZX05BTUV9CiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzLzAwMDEtQ2hlY2stZm9yLWxpYmVnbC11c2luZy1wa2ctY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUNoZWNrLWZvci1saWJlZ2wtdXNpbmctcGtnLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjg5YWMyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUNoZWNrLWZvci1saWJlZ2wtdXNpbmctcGtnLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDU4ZDUxZDk0MWQzZjRkZmEzOGJlMTgyODJkM2UyODVkNzZkOTAyMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxMyBBdWcgMjAxOCAxNTo0Njo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBDaGVjayBmb3IgbGliZWdsIHVzaW5nIHBrZy1jb25maWcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgd3NjcmlwdCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitJbmRleDogZ2l0L3dzY3JpcHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy93c2NyaXB0CisrKysgZ2l0L3dzY3JpcHQKK0BAIC0xNjAsMTQgKzE2MCw5IEBAIGRlZiBjb25maWd1cmVfcmFzcGJlcnJ5cGlfZGV2aWNlKGNvbmYsIHAKKyAJCWNvbmYuZW52WydQTEFURk9STV9VU0VMSUJTJ10gKz0gWyJYMTEiXQorIAllbGlmIHBsYXRmb3JtID09ICJmYiI6CisgCQljb25mLmVudlsnUExBVEZPUk1fU09VUkNFJ10gPSBbJ3NyYy9wbGF0Zm9ybV9mYl9yYXNwYmVycnlwaS5jcHAnXQorLQljb25mLmNoZWNrX2N4eChtYW5kYXRvcnkgPSAxLCBsaWIgPSBbJ0dMRVN2MicsICdFR0wnLCAnYmNtX2hvc3QnXSwgdXNlbGliX3N0b3JlID0gJ0VHTCcpCisrCWNvbmYuY2hlY2tfY2ZnKHBhY2thZ2U9J2VnbCcsIGFyZ3M9Jy0tbGlicyAtLWNmbGFncycpCisgCWltcG9ydCBvcworIAlzeXNyb290ID0gY29uZi5vcHRpb25zLnN5c3Jvb3QgKyBjb25mLm9wdGlvbnMucHJlZml4CistICAgICAgICBzdGRfaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICdpbmNsdWRlJykKKy0JdmNvc19wdGhyZWFkX3BhdGggPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgJ2luY2x1ZGUvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMnKQorLQl2Y21zX2hvc3RfcGF0aCA9IG9zLnBhdGguam9pbihzeXNyb290LCAnaW5jbHVkZS9pbnRlcmZhY2Uvdm1jc19ob3N0L2xpbnV4JykKKy0JaWYgbm90IGNvbmYuY2hlY2tfY3h4KG1hbmRhdG9yeSA9IDAsIGhlYWRlcl9uYW1lID0gWyd2Y29zX3BsYXRmb3JtX3R5cGVzLmgnLCAnRUdML2VnbC5oJywgJ2JjbV9ob3N0LmgnXSwgaW5jbHVkZXMgPSBbdmNvc19wdGhyZWFkX3BhdGgsIHZjbXNfaG9zdF9wYXRoLCBzdGRfaW5jbHVkZV9wYXRoXSwgdXNlbGliX3N0b3JlID0gJ0VHTCcpOgorLQkJY29uZi5mYXRhbCgnQ2hlY2sgaWYgLS1wcmVmaXggYW5kIC0tc3lzcm9vdCBhcmUgc2V0IGNvcnJlY3RseS4nKQorIAljb25mLmVudlsnV0lUSF9BUElTJ10gPSBbXQorIAlpZiBjaGVja19nbGVzMihjb25mKToKKyAJCWNvbmYuZW52WydXSVRIX0FQSVMnXSArPSBbJ0dMRVMxJywgJ0dMRVMyJ10KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvd2FmIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy93YWYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDRkZGQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvd2FmCkBAIC0wLDAgKzEsMTY5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IGxhdGluLTEKKyMgVGhvbWFzIE5hZ3ksIDIwMDUtMjAxOAorIworIiIiCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKworMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKzMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUgorSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKK1NFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HCitJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiCisKK2ltcG9ydCBvcywgc3lzLCBpbnNwZWN0CisKK1ZFUlNJT049IjIuMC4xMSIKK1JFVklTSU9OPSI0MWI2OWI0NWY4YWE0NDVkY2UwNjZhNGFlYzNjZGI3NSIKK0dJVD0iZmUwM2M2ZmE0NzBmMGJjM2MwODZiYWFmZWQ4YzZiNGI2ZDI4YTI0NSIKK0lOU1RBTEw9JycKK0MxPScjNCcKK0MyPScjKicKK0MzPScjKScKK2N3ZCA9IG9zLmdldGN3ZCgpCitqb2luID0gb3MucGF0aC5qb2luCisKKworV0FGPSd3YWYnCitkZWYgYih4KToKKwlyZXR1cm4geAoraWYgc3lzLmhleHZlcnNpb24+MHgzMDAwMDBmOgorCVdBRj0nd2FmMycKKwlkZWYgYih4KToKKwkJcmV0dXJuIHguZW5jb2RlKCkKKworZGVmIGVycihtKToKKwlwcmludCgoJ1wwMzNbOTFtRXJyb3I6ICVzXDAzM1swbScgJSBtKSkKKwlzeXMuZXhpdCgxKQorCitkZWYgdW5wYWNrX3dhZmRpcihkaXIsIHNyYyk6CisJZiA9IG9wZW4oc3JjLCdyYicpCisJYyA9ICdjb3JydXB0IGFyY2hpdmUgKCVkKScKKwl3aGlsZSAxOgorCQlsaW5lID0gZi5yZWFkbGluZSgpCisJCWlmIG5vdCBsaW5lOiBlcnIoJ3J1biB3YWYtbGlnaHQgZnJvbSBhIGZvbGRlciBjb250YWluaW5nIHdhZmxpYicpCisJCWlmIGxpbmUgPT0gYignIz09PlxuJyk6CisJCQl0eHQgPSBmLnJlYWRsaW5lKCkKKwkJCWlmIG5vdCB0eHQ6IGVycihjICUgMSkKKwkJCWlmIGYucmVhZGxpbmUoKSAhPSBiKCcjPD09XG4nKTogZXJyKGMgJSAyKQorCQkJYnJlYWsKKwlpZiBub3QgdHh0OiBlcnIoYyAlIDMpCisJdHh0ID0gdHh0WzE6LTFdLnJlcGxhY2UoYihDMSksIGIoJ1xuJykpLnJlcGxhY2UoYihDMiksIGIoJ1xyJykpLnJlcGxhY2UoYihDMyksIGIoJ1x4MDAnKSkKKworCWltcG9ydCBzaHV0aWwsIHRhcmZpbGUKKwl0cnk6IHNodXRpbC5ybXRyZWUoZGlyKQorCWV4Y2VwdCBPU0Vycm9yOiBwYXNzCisJdHJ5OgorCQlmb3IgeCBpbiAoJ1Rvb2xzJywgJ2V4dHJhcycpOgorCQkJb3MubWFrZWRpcnMoam9pbihkaXIsICd3YWZsaWInLCB4KSkKKwlleGNlcHQgT1NFcnJvcjoKKwkJZXJyKCJDYW5ub3QgdW5wYWNrIHdhZiBsaWIgaW50byAlc1xuTW92ZSB3YWYgaW4gYSB3cml0YWJsZSBkaXJlY3RvcnkiICUgZGlyKQorCisJb3MuY2hkaXIoZGlyKQorCXRtcCA9ICd0Lmd6JworCXQgPSBvcGVuKHRtcCwnd2InKQorCXRyeTogdC53cml0ZSh0eHQpCisJZmluYWxseTogdC5jbG9zZSgpCisKKwl0cnk6CisJCXQgPSB0YXJmaWxlLm9wZW4odG1wKQorCWV4Y2VwdDoKKwkJdHJ5OgorCQkJb3Muc3lzdGVtKCdnemlwIC1kIHQuZ3onKQorCQkJdCA9IHRhcmZpbGUub3BlbigndCcpCisJCQl0bXAgPSAndCcKKwkJZXhjZXB0OgorCQkJb3MuY2hkaXIoY3dkKQorCQkJdHJ5OiBzaHV0aWwucm10cmVlKGRpcikKKwkJCWV4Y2VwdCBPU0Vycm9yOiBwYXNzCisJCQllcnIoIldhZiBjYW5ub3QgYmUgdW5wYWNrZWQsIGNoZWNrIHRoYXQgYnppcDIgc3VwcG9ydCBpcyBwcmVzZW50IikKKworCXRyeToKKwkJZm9yIHggaW4gdDogdC5leHRyYWN0KHgpCisJZmluYWxseToKKwkJdC5jbG9zZSgpCisKKwlmb3IgeCBpbiAoJ1Rvb2xzJywgJ2V4dHJhcycpOgorCQlvcy5jaG1vZChqb2luKCd3YWZsaWInLHgpLCA0OTMpCisKKwlpZiBzeXMuaGV4dmVyc2lvbjwweDMwMDAwMGY6CisJCXN5cy5wYXRoID0gW2pvaW4oZGlyLCAnd2FmbGliJyldICsgc3lzLnBhdGgKKwkJaW1wb3J0IGZpeHB5MgorCQlmaXhweTIuZml4ZGlyKGRpcikKKworCW9zLnJlbW92ZSh0bXApCisJb3MuY2hkaXIoY3dkKQorCisJdHJ5OiBkaXIgPSB1bmljb2RlKGRpciwgJ21iY3MnKQorCWV4Y2VwdDogcGFzcworCXRyeToKKwkJZnJvbSBjdHlwZXMgaW1wb3J0IHdpbmRsbAorCQl3aW5kbGwua2VybmVsMzIuU2V0RmlsZUF0dHJpYnV0ZXNXKGRpciwgMikKKwlleGNlcHQ6CisJCXBhc3MKKworZGVmIHRlc3QoZGlyKToKKwl0cnk6CisJCW9zLnN0YXQoam9pbihkaXIsICd3YWZsaWInKSkKKwkJcmV0dXJuIG9zLnBhdGguYWJzcGF0aChkaXIpCisJZXhjZXB0IE9TRXJyb3I6CisJCXBhc3MKKworZGVmIGZpbmRfbGliKCk6CisJc3JjID0gb3MucGF0aC5hYnNwYXRoKGluc3BlY3QuZ2V0ZmlsZShpbnNwZWN0LmdldG1vZHVsZShlcnIpKSkKKwliYXNlLCBuYW1lID0gb3MucGF0aC5zcGxpdChzcmMpCisKKwkjZGV2cyB1c2UgJFdBRkRJUgorCXc9dGVzdChvcy5lbnZpcm9uLmdldCgnV0FGRElSJywgJycpKQorCWlmIHc6IHJldHVybiB3CisKKwkjd2FmLWxpZ2h0CisJaWYgbmFtZS5lbmRzd2l0aCgnd2FmLWxpZ2h0Jyk6CisJCXcgPSB0ZXN0KGJhc2UpCisJCWlmIHc6IHJldHVybiB3CisJCWVycignd2FmLWxpZ2h0IHJlcXVpcmVzIHdhZmxpYiAtPiBleHBvcnQgV0FGRElSPS9mb2xkZXInKQorCisJZGlybmFtZSA9ICclcy0lcy0lcycgJSAoV0FGLCBWRVJTSU9OLCBSRVZJU0lPTikKKwlmb3IgaSBpbiAoSU5TVEFMTCwnL3VzcicsJy91c3IvbG9jYWwnLCcvb3B0Jyk6CisJCXcgPSB0ZXN0KGkgKyAnL2xpYi8nICsgZGlybmFtZSkKKwkJaWYgdzogcmV0dXJuIHcKKworCSN3YWYtbG9jYWwKKwlkaXIgPSBqb2luKGJhc2UsIChzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJyBhbmQgJy4nIG9yICcnKSArIGRpcm5hbWUpCisJdyA9IHRlc3QoZGlyKQorCWlmIHc6IHJldHVybiB3CisKKwkjdW5wYWNrCisJdW5wYWNrX3dhZmRpcihkaXIsIHNyYykKKwlyZXR1cm4gZGlyCisKK3dhZmRpciA9IGZpbmRfbGliKCkKK3N5cy5wYXRoLmluc2VydCgwLCB3YWZkaXIpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisKKwlmcm9tIHdhZmxpYiBpbXBvcnQgU2NyaXB0aW5nCisJU2NyaXB0aW5nLndhZl9lbnRyeV9wb2ludChjd2QsIFZFUlNJT04sIHdhZmRpcikKKworIz09PgorIx+LCAiJho1bAv90bXAtd2FmLTIuMC4xMS50YXIjKey9a2PbxrEw3K/ir2DU6iMpsCBaki9pdYK0jq0kPnEkP5bTtEdmcSgSlBiRBAuAFpUm729/57oXIymk5DZpn+c0biMCi93Z2fvM7FxuBuPp5OLhYF5OqqyY9Ra3v/rJ/+3Dv6ePH9Mv/Kv9Hh58vH/wq4NHjx4/erR/+PHB4a/2Dx4/fvLoV939X/0T/i3LalB0u78q8rzalO+u7/XG/T/y79cfdR8uy+LhxWT+MJu/7y5uq6t83vl1N5sP89FkfnnUXVbjvd9CyrfP3py8PPnio+6LvDvPq242mlQfda+qalEePXx4Mxj3JvnDizy/fjiZj7JV76qaTX+d5hfVYDIHQGl1laWQKx1PplmnM5kt8qLq5mVcZHF5W3bGRT7r3tB07MrHb6rJtOzcTPPhdULPveqqyAaIVu8VJIZRpypujzpbVHZY3S6yUsueVcVyWC0B+CMqoDOdxsO0vIIP8Ls0D9N8fgm/k3kVX9wW2Rieb4ZXgyJ+ffry5O3xG3jHLJ1sNcwWVfclgT4uiryASofTQVl2n8HKeQsrJ8wvvsuGVQQftkbZuJsC1EmVpmGZTcdxWQHeM/q4hQk9Tkj4B1O5Ifo5wzrKxMkqSZhFsHlWVcXkYlllihD8WyMpSqYOHUIfjCQjNJo3Bax7xrFaMfYWFer53mD41+WkyKCzt3zse1wYyzU+jafQy1xkPJkPplMPZJFNs0HJIBELnBLznNBgFIoMhm7e9SByHlOEKrAl2ivHnJNyUFW3m4FLnqiTTcvMjO3z09M3L0Izk6g0TN9sOirT5Dzc/tO2zqooDrf/bN/6IzTh7Otnr16lb46fv90jKeZVNq48SG/zhff+ZnJ55ef4LK+qfNZS4fPTk7PTV8fp2fM3x8cn6WfffP758Zv05cnnpxsQOJt8n23H1FoE/nxZlHnxOocjYZLPnQ9mxpXbZhlh+rewwvKb7di2FlO/Hqwms+WMP7pVNJB9/s2bs9O7sAxGBCTQdQtVBBd/nJSTiyklwiJGyDJ5U9wMkuV8ArM96+iSORnM7GrhLDABoFCOxZPpYHYxGnTny9lFVsQwdwbLaXXEr93BfNSFTCG/RnnRlQydrbO3L9LTb96+/uZt+uWzkxevjpO9gwNOPn7zBlpmUg87W7wd9a6zYp5NHx32vsiqs2r0JYCfZr1BcUm7WHIurezfUaDISmqGZG/N/Tyfl/k0OxsWWTb/bDkeZ8XL+ThvVqbbXrh+FkX9D6rCoteO3Zkp+jZbVWZ+taCm861/fyB3Vf75ZDqVgqfLarGsnsPWPxgCHfRtKwJ8NDT7ilaHvurs7H9YfR+M63366qfE9f7daofD30g2zjfZF+4jKutDkbjnhHd2ovug0zrHP4guaCEJ1lMD/xAjKuCe/PxtSG1IryZllRe3yXkfv1zRvpKEpTlwk+Qwws2vvp11YQts7HwG+NWQOyrZtH2FXFtkSqUlEKLjPNlwjDmZh6WX2T1GKNf6jcoOX+hhy2Rg6IKPnCM082JyeV8Ui+T+++QGJJwqXUyYYEmKJDmQiVUSzPSCgKYThcoT7CdBxcXCpaHkg+AxBNKuSKeTuZCVC9jjhPKdwVmc0Ls5TfkrzKR9aht3LS+HZnuo5sm4S3CSA57uWFOKTFyVML22HzOYXm3L+HNk88PMvqyuEsmIdEXvT7Sspgb84Rrw7cD/9HdWurcGHCNDtKiPRGv+v78OPNLKFAn5KpsrFdG+ejYcX7VJI0dlGHSDKHbQim07ZGJ51Uf3q9bsebVapZWWSP3Qqu3s5bnXPn+ZVuSJG+9Hf++0lYq8ecvQ5JM/kvWxe7BmurVP4g+sjKfNA/ftz8y93fN4rs8HW33kT2wXsfUz28MxDO81uaNdvzFeqT/vrVut0T9nUbgtcrvnn7IsPrhyXBgLIClTphga6+I+87+F4ugjKhaLbD5q31FNvfliXbUwy1ug8sTKp6N0kYsEpVYtgBRhxt85nwW4olhm1ToUb+MyW8QrPvR68LdieMF/BoTBSreTVXwQ7R1QEU26NUn36d95dkMjKublPZvMw9lgBct8FcXeQohi++3W//bn9pl2z04RBLxOyafLWXMbXfl76M/Tyk3H8U/Twln+PvPGfZXm4zG0O4GeNY/3XyHr2rZmg9vV6jYM8JpO2L1tLfqTjj/1znLR3CuwkNt1pqv2arPCgzTKb+YfIylrE6hpNq7uBrW6F1oFSuY+IynYGljzbFW1k8z33lrbcV9HrN7VUYsie/+vQWhddxeXF4cXl7LShq4gNwyH/3EQffLJYfQDPOFf+HkcffrpYW0vatmfIbWUzblcTCeV2Zjv00zgwIqkcbySyBsYmiHwN12EL5SOdvVQKS84vg5/98nwk0e/5RwML8S//7G/Go/H+9EPVL82fbj3SIoShfcICz9eU3h/DP1QK/14H3rpsQNhmCT7bvEGx1lrlil14JT6Idlf7f/W+/y49vm3+97nj9tR/u1vcejk9eN9GMDHTsL+xwb5e8r/avsTwjET4iq/WUvMOLx/TwXMxGXfSxx0P3kCInE1GWUfhsT+T4sEXvrCupjNgBlPqwHW8LfgWXAkW3ccfCbPuPnGwXN5oz0vDl7IK26ncXAcHJlNLA4+D47MDhIHXwRHlhqIgy/llbCNg7H/+l/BkcuDxcFXmsDAriC7Hb04mAZHTkfGwcxUhm8lIGIJ1zhYwrshKOMftROq/Dqbl0mR9aA7FpNpFgbh74/erQ4u3p2H5/t7v/v9f/YfROH5YO/7Z3v/3Ydpef4X/NrfjaIgarlKy+51l6YErEhzZFng5sG733A2wls53Egon4NrbwzTYDCdhrYqBghl9G0LntPxcj5MbGlvuHuXGexHs1GkBbg8lTFADBR3kspHy8jpnKVOkHlnbwadfC33h5lku8dFoQfev7XcxLQ5pRpSuW/xo6ygZ8JWwHqbA0s0H1IbYropkk6+N6xvMfson8uyrfJRniMpz2U6ZXi1nF8njw4/+eSA1/UVzLsuZvtId+VRjpJbJOcoc4wfuUPhLEojKdA5wj/CP7uUlyS4KHmsd5OzFyzHMeVt5fbiE4BlJmdhzwdC4NNPeR/Ec3NeTebLTNCE+hMCSu+I5p55/4nud0WqfeeFrqylDi2u2xKgj/JlZS54YW1JalYUJhWhiOC7pYwjNL89QbdKv12JeIc65kOk3veTJWOjYammqKGDO1sZfrBUt3YUtEhyPaHKgShWiDJFSZey8Xg4r6YxYjHJy3alCBomWe4TqOi+I0CdnOMlxftJARQh7kzB2+M3XwdxEESobgKrIBgtZxeQkM0GwzKgPvj8xboRc5J1avlV1yfcch7604ka3VvOF4Phdbj9Jfzb5i7oTfJhNSMqP3+hfdF7+/L0+Rffvjw5++9YirmF9vl/URSdH+AS1UOBquyYy5xj+gF6uDsou5k7683+6c2CBMp3/kH9H1a4eai3Uv8C/a/9/YOPG/pfj54+/UX/63+1/tevfvn3f8M/Wf9wXkxg65lf/hwbwB36n08PHzXW/5OPf1n//7vXP6lspsBYoK5Xmqra5s2kusLbiCqbZfPK0RItr6bZIzT+LqsJkCDFYJhdwAkbw0E+z1F/NMZCa5VIY6CLxpNLVAd9lV+W8Smds5oMLDQ+ISMSEyFTxp8tJ9MRUMOjrHOBj+loUqTA7hYFMJsJUsmdeZ4Op5PZhfJUZXIeDLWaoN8R9bAU+Kdkm4Bsd4iHgT6AthW36SIngdCyKOAda8iGeEERQzUloBdDTkhEogSR7tERPc2JqQHqVjDuffvs8z8evzl7eXryUSIlkVagIqQwEgbfDkg/IymWeHeHNdmgg4pBcYuvIx7O2aAaXnVDgwV8igKDSrMyxQ6pWCCqstWkIzQP4E1zYjPhe8LZbHqxnFO6vk8HwFteUVKjJzpbdDG17qOOQFInHE9On796+fVnAXcUcl2I4qC4fB99SrKrRQ7cTjUZTNMb7hcEsRhUV73vcmS3GkOi5YGAwxYDVC1wAfzpfDDLwgbMKDGN/BYo+5ev36afvwTOQUhdKj0pcTm0lBXyr7oymM3zYoYPoSYjKXZrKmYRpuk6LTC4KAkjKf7hKwftwLcF83LaTLojw9EcVivTCOApYF2mQ34jKoOcFxH2cijPsa6FGMYjSqA0XnqVGS6CFCMplyFw+PlNIzTM5Dy/mVO9PEgCoFflC2y6RX7dvIGM3DhbsNNokQMYGAEErMXh1SsO75Qdl4ICwfwojblGCUxjuR+ppPeWJb1OKgK67VEbStzRwmsV0TR6HHh56NZr6OllkZhWd0QcIymJRw7DMC1pok4nwMJMIzScpg77cHpmlcAwI+tzudvAC2dtAxfdXc5Rmx4lQR8FsSMpA8xlc+yhBAZnJzYPIykSYBjWxGyaPfPEchYj7IJcUHowIzTrqyquw45E2DDPsWG4h1OrzvGpd/YWeODTvqPvdsyrHM+GFo03K2bCYVkhy4iYyMzBKamzhp5lIzTo0Mjgr1Sg5ck48CubIEzKFPjuR4euzCMqhi4x5baw5c74mhGuS8xMd3EHHJoeWDXbv9U6zG7j6+I4FGNBryYI2SM08xq4Ocg5xWnW3AwjNOC5J/P3g+kETgwYsa5Oh53STBgF+vkjKYrr5McUAVVfv86I+Bl0QTvD5GfQJeuMnbeCdARrNaquQOte7EztBqbQQNxRICmpb7l2sdDnRNapwQRnBH5RpOx+olnq505jd6clU0MpbmtDFJmNS8vCYVxWZeieJc5OeHOVTWmTdYf57VVWZt1BkXWBTuteZvOsmAy1SDec512B9nBR5KjR2h3ny/mIxd9bZqMveosCiJoUq5DLQCUO6O6qRpUcdd8s512i2gYjKXA6yoourjsmGSEjKjYqmnMhLGhYL929qy6u7RYcgVhp7Z06fSKrDrpqeIWbaK2Lo07LQmtgIyq9pejWt1KLhoXYigFeU8ygoeksHy2BBtDRMggwKdqDIzTpyUiFCJsF9XMYvDl+EcRZD+i0ixzO2Vl5WevmsipC3mY9JNbKnFrbKrjR0r9PeyMqgS7TAWoLcRwdYZ2H0aFPBMAUw9w0b5mKH77mpHiBOyNueJqC1cL0C4MW2t+wtf9pHwlNPa1DmDV/+xH/H1CdvWpV0YxeJFxR7wz/hvWvvRLAE58C36rJLAsiaSmnffwEu1j2U93nzX7vY2CPN0M7mH4YXejhxCMqggR+xxuJGDbmZRZXFwn349C5m24fAvkEUIDAK2H6AcxsFlYXjWuaYjCh3fyOqYjI0oSR+fep3AzfY4q6Ey3raaI3R7X2s9sS0DyGZJbP1nBrik3vOf38+afwvspuL/JBMXoJs7ooljIszRYFJkM2IzR8cE9/G3VU8cBd4ohDStT3kWWILuWr5Yjg8GyWaBbooUyCPiYmW8coPMAv2h7Q5o9nVgIvvTTFxzS1hyW+47JuIylPYS0PqzSV++gjNO/Pw3quGIvHWE3HUMrAQpZVjH/w3nbOT1fZkGlgRe3anFoB8rXBXSg0PmIpsSM0ncNOZKChiCMpL6w/HKKWbIOqvM4HA5WCLkxSsCGuSD7SvcM9OS08abNVNkQFB3vwK1ntciH1NFW3dOQSDEAzNuiD9ae6e6iTdo7d0fBCmWbZHY0y2bhN0/wyxY20kJ56i8+hfNROrGHKH1G+osDM4VrrJudqGb/Q6+R7+iS3PZBcbwmPS22kOu7uHfLcjZRdaxsGRS1pjAfy2EQUYS+19qAex7SvB0QLzSflVTbqlsvhMCvL8RJa1SMqd5D60VKx1511hM3y4IEzyxRP7lDIW2w2rOYQ9xdYvkUZ4/5SRjD5c6QXp9duTlr4yGwQpVbqsYC2RyPmfsOgl8N+2ZvlQ/yBcQki4brGvDW5NC/VOuYTybJIkKXIUOEkHGvXrGGJHKL2eb6cjmiBcFkgXoJYyxseUSfoi8+QYIxFiIddyHeMioRFYbWG7WZeTOk7klX2illVZFkYDB/DJhi0kpdUzBuNEMYQ6w6CgKssuyRBFKKzJBnSaFAjKiADb/mcLUXdDhQRXsfj5dzDHi8br93bxhor7Z3pWY8Eqx8l9NM7Pjk9PnnrHO0buvd6865k5CmOHCPocUebIQlQerh32OW/+PKI3+AnEE29yFBL166kZaXsfKNDvPGIWOACNRO2ziYDnFiKvC4QU6kIozCnm4NkRdKvrSKZNRxEs9cGI+ozYSd5K+rcIYMZJ3dLVZxxXyexGW+YC3XmsAXlsaM8YKkJhzVHBQlNEna+DvZlQ7TQDtmBmiR1eP4O5sp13Ivz2mxwsjXmhSVk3Fx14ZEyO7zu/SG5bh2QOg6L2GwoUYeNRl9AW8x2JL+yIyrw6YkLH5j04dUEVpvDKCM/rHx5mS+LIX4dZbQ74PkYYC/BM2wC5nkwvcyTIylWTu/i+8MjKSdtlVLa337kLUXPT6Now/qkGWrPZeF5XSaynjyNSGbOSmiMO56jWIW+miqEzwGs6Jpoawtz8PlJ5VEBwiSF7jynzyiMFzp4g4msn5UBS6E5mk3533uzwXWW4ofQ1OxWjF96o2yaMamx/lzYovPRtoNeQ5Ejce9A97ubGY2O7I3wmEi3wEaUzUOqV0X6URzcHAW7FkqRLabABAkIVKKJ3B3WOatlYEaoFFgQUuEqhsdIau0jKqe5qOCRBq+pI0mC7yeLgM8MHjd4l3HbgsdEXnv/PVl8jnAbKAd4YbAogJKB5WKzv3ydvjj+/NWzt8cv1mItU6c2N2jUeG7sBg+D3RUjKmyKsoHQH1amIKBKUUNcOYi5sOO1WGFZt29kq6FqxnA2T8Pgj7S/YWd12TsjKgnYeMnF9HD5Pf+uvscjKhP7051bJNO4GpRXjlCjvBocPnlqJ5qvgIUb4mUGhxIufYuUJnZDLp7g7d4OP/Ow4M4ejqeDyzIJiguYLr2rbMXFwhohepLd2E2I9qXRUXenRKGwWeTcd1xeFjspL8EUo04m5U2smGa3EOH+/JAtwp2YbGdDs5MIJzvwBjDRZhWp1VH/ZhX8EN40UxY4uP6coaJFNp6s7p40BnhvORmRZie/XXpvS6ogwCMqMLBZ/ETnIzRRLwFVq6+66tIjNF/ENBJAmI15zmODoD8oNwElwhzY72TsTcFGvvoIcGvNrqvTzVWktPk27qVukdoCtHXaHbtRpT9h7t62W84Db833ZBPU04wuhM2WFZsnS2916ygo1hZuO9bm+0asgesmdC/XiVA04dnr1yfPvgb+Y55jARYpyf373aX1Vj446O0HURPHRPDYIyr2gl2BWusCpz3aBdCs6eZpgjnuHjXMlaA2BT0tR1laZJflbtB98OAhEfm9B/jYc56Z2rfp5uXB/0d/YcP6jh/QYIWfFrdDfcj54WJwzQ/lzYIgIUW2d/MgqF0jNAmZx8tsPuLJhUuVFO359K/lNWrS85Gr244jKtyFjTbYnY82Hz7NbtRuZ8qg0e8O/UCPG/vdyWxJmcG8Si+n+UUYYKcEMY2LWUg02pGzMrgW5UwdphRJIjjM8OS6GEyndCdTZJiJ0FCSlEnRkshQooEsmfscJYIhPpG0QelSEhS6RKsm/BMIUrFRJsRk8yLSz6CBIjOxOpgtlPgfji/5qr1FkmZLou4DmylAdtJlEjZ2cxFvV6eaVl1DDKmyRhdqXnlk416A3muoE89ZVIcdh7c1VpFlvx876kpxQPIF+CXLh+kUnpZz+7y3N8qIw02CXW58fxfwsVMF6uIu4/5rEPTZjKio2FL2dM55FG0bhY+nX+UJB+R1q8I9Hm3t+chHXBE/rak3ux7hcxj08JOQJrXzIpJeYovF5mALUFkSIposlxfAa6H4rfea8EY7neHNqPVEimDvmlRK5QMQe4VRv1UJ7YTvjgfQhBGpwxEnh5zxDpSuKR/JRa+ieT/YJDvMRtko7sJa5UXevcmAMkVbLrne33Ga7kuy2vvRiK9o+O1OQe8lTlGXRxUzq7Ibmh0EKV1mTSO7XxABuKxyM1FD2QPSWVZd5SOspHVnsKojKVyuZ6G4R5gPjYt3Nmu5jPKU4RiNB0fS0qL1UlNvaNeAubcchptTY/n5vLeIiX6H2ThEhCIii4+SNgWJZnHnOvCKbZispBfBObyYq8pyJavkKkWZWBhexfyO/MU4HDNJK2o/m9V62nBap7Bic159RCIiZJp4HphPvInCasfvnISLHPguZyO0dEFj4iMpvwvs3sVFVgSyA80W9SsJcxmkxAHJkPiboLquROJkrQm/a5cD3Hmeudx6qICkP5htwNw0PgX5gyM/27Be/I8d0p3t0V+dafIp8dfy+ozRL/YB/1T9/7eD8vqLbP6zmP/cof//6PDw0aO6/v/B049/0f//d/D/PMwXt+gBOi/xwmpY5fm01RU0TlA+SFiBX9T0rf4+qeqPs0GlV+1yzY27YIiuTjpfHj97cfwmPf7T27PkPOhd4VXk1WJBP6sV/VwFfWFRKqgvvQTazrpvnAEHIyrtUPh5MQKSaZSi33Taa5E6WCMpM7Ku/hb3jw+u4wcPrm8sL8MME/MTKoUBUouFeUykws5bOhmwybCXll6Z8ro0PAlqL1wjKWUPp/b1jcORb1LkpRyT0YqPfSMfZ7uHuqgTgCfXN+dUSd+Dr5/xBfqjUD7LgWiyiPx9y5fIu8LAuldMxM8Uh5dzzNj3kkj4g8nxfrR7cIffTLcg3YHcUdFBE6XqMoXvcJIu55Utcnfq/XC7B/QDvb7KblE7rEuD3oMpOlObYdXkofkn2czcBPZdpqYjld3+RBcDWYtksEBg3jOb8On2DtMLJO1tGTYDusgWHmyjoW7ZWTLfdrWOkK/tqu0vzCHkUolHFfYBBcMw1SGBf+XqF0Crrsv2TpnslIDkKkYEwku39asocoQd2yMpGhUpuGFQZDvubjMJDyMpoyMqjUNeCNi/er91zRDBf3NyQ62524WKnhn7nXJF302Bs1nEUxGqqB0jKWqAriK/nzkrq5ZbaSpLIzRxKzTt9mnHetZS+lLguWItK0gs3RbHRm3EAcN5WT5fIylLXVS3ofZTrMWlt6ucGQsChpNX2D2nMyAVzbA9a25IU8WBFroWvnbE3ZyAVrDejAnwcwYzkNwkuCMplBfkWUK5lGeBRYZyOJFC0/4dSXJvuRgjKoBtpXPrPHgQWLmU2dcl8IHTavMtaiwf/cJLvUoY8Kqv7vJEdOLWbcZY7R8QGB63PToJlcVzuFCphG3HgIcnYiMpBRHdvS7QEaPuoOqi246qC73UZVYBhq07qX4fxCSroWOStlh8SqsLEULim9sm/Wp3A9zQIyl5sfuAz9C4RLNxQ5ErMzvLwCvhAe6R+mzpKJJQZrXjMGymnf0jKVk3lkHENZEicFhkKFHP1JxpK1/K5iZOPWasbp8hM2bdDyJ36DcInRVIBZl/4s1xJVN7M9ce5qvsdqMdzCibdp1StgPmxurBmjBhRseqxXTU+W3/6C5TFtszq8hJa+2dydhWhY5MzoPnt0PoplFWAanFRwtKN2TmMEuIVo1MXtD5Fr83w+iebghPEQn2YB/vDsYVKumXwU54HbvSUxabKpS+OMNol529m8uOCOCjyCfFSBmIl8cou1hehoEel0e0m6CsBvDYGbEEMp7IQeEtXjFOs+P9PqkdVXcQCGsQZ2V9XKCDLuvaIHJsOjGooHbu42BnZVWyG63Y+xQbEO6MIli+Hv5b7+3VcGvjYTDNrbDqTciOybujnohXwDfU7oT5ZMA7IzkLjeqYSGuZHPf7Iyo3MchtdQ+vrT6YPV217Pm1u5je3i7cLiXNMrKKIyrNmbURDm30dpfWjz1Ml2uV1lHa/pxVn/CiH8aqKwXF2CJEkSIMH/BDXWSPfh8BbYLdgtRbqTSIKNdi79tjNi6LIdHscXVZ8YNhNzBn4m7z51iiHxq63aXZYzNhEhWR4mlSDOW2GaDgKT2ZL5ZVGUK65IBq/Rw5uaotQ/gQCRKG5NMDCRD0OBldz/jizB98lbZPc3VUiFanNHeyG7wVVyM0LIzuQWj6RKYMt2sESEck50P6DzLqcau5lbjm6mGx1OlNf3duZEduuId/moSqaZRSF0px+KQPNMCSPlLAY8UG02kjNAnlOfzpu0yZQcspVePblLKjDCzxZ24gHV4Bk88jNBZBEBdozUDTIyq9EFXFYC6zj7yyJcFnr745xrtHnDFwTtITH5nxRQbDhAxwTBs3PkAdE0CCIZTDwZyf5G4qNYxpXF5l0yn3C7Zf4Pv0EydG/BXrbH5m4xDHPMJsRtgujO9Q8sKhrW48IItaajs1XBrJDugEB/4x7ZRfbSz/SIPpLzcT/0ij6K8s9ZWjIzRjNkukJagSGsLUq/d8n8giWO8s2nW2IzTCmoDgRRgM0z7xHFUine7UMqHRxsQuThVYdWVPGuIuLkgiFK5564aJMb/MEB9gwQSr1AwCYdWTTUHX+bUSR2byfETja3ZlwPMTNMMx3yPPtxyJUHxgvmHwbfsZIju+f3zcGt96a4G7VBGgtktMOFnf2glqpSWaSvuv0bzTVL74N3nyxAVipjzKxxKn59xdETdFMxg6Rjwt9Gi2xxbQzjybjAxfXonRguyQW2X9KJ7DztBNS6GR3M4YFtGbvRLANwImO2X44Fqv7GAy5QboPaFSy9Ri6ZpJeuJw6OzSA+TcK9t39RkQHX1BBAg3Xn/azp8jKUN4Tn0sTdcTPe3jhxMg1CIbkfX2C8GXr0hx0/jnNiDlLhfcLZyNIypwtjgXfZii2RwVkn4jNNxXLUi7E56xWo/jH/x53xGZA+5mrJITA+sUm1MH0VOOkxLxD6pyOlrFqEJE6axMBAQDbSOd2tmNcElH6kR3dRLfwJ++s6b9A2taVi0CkJVDA6BCM1YrRitIwyMpnUm9uYoD1jSzOVeeGiFwcDQ2ciloukEoGYc4Mp4zRtkmJQTRTcesZD5+RObEc9JuQKyVsXD4STmddH+bLTp/0M0keCBWTKKOkTJ4I79xRep+A3ypDmcJ4nPiAmmPQZULPSX4sxFZGXaFMHNOyBpif/D3lcBHsoY5Ug4Gb+lMH0nM4Qie1D7CiOH83DSunFvnIovocGq6WXtEswS6lIRXw8TImqoPB8OrzNKQ9Eoopwins54x3VyQREDDq1k+8rndgNICdUbKJFBtyDAtiEWkwCRXIyoGpgGNTsQmQkGSqgYEkkwt6ftBUdYyYBJNC6L6UDxer4RTIyoQfAe27CYvRi055YvJvUTHONRDtbymmyMpf2xiQKRfthAOq5bd+RLETP5yc6FJ0wQWezrKFmWiq14LLUrxj4RZaXZrEWTx4Rm+AsY1dQ4r6GdiF0eKiVQmfGPpkthpcKyQY+rk2EE44k6TmyVAxvSJKxnHHJR4DhD7nXbxF0u/ZO0M2e86cSIGW96nCGUVixjCklXX4Av6Og6BjIp8TzJdh96yJolUwjMdwGyGW+bvUVNcT31XLRdTFSsQotTDtPRMmu6CBjX7KaHyNr+r4YER3Oz4aLm7OBceHYfjcHkZYelleL27JEjDHYRuj2QDkWxOIZkLzYJmVZiCkiKFndlChakFTiJCUYmEzGRsaY95KHbgP5g7Zx8tBzPo+NHxJUzHoNye1mUGdlz1+PV2UvNZVhcvc+v5aWR01hVMkyYw4tP6gbplTh8tjBuqmJlY+zwERlKjm0HZnVTmuu73kcr4pIW149UIts7pK+x5fb8fuQvrC3TLrsoE8nbWc5muwW1AFCAjNFrohESPvsSkyAOsssCn+srrhixFDmuHmpE9nbw7iOEuSp3oXUMgj9TNV6NQVhReIXg3heC507wLQvNqrMqeyVhUUoXe4JeWwoPpzeC2rJXlRNj459Z9Wa1OOsOdYutvASMqBejqETjPzm2YzLU7rxNdSOe1a8S268WWe0qHMm3j/e0lK62KvEhlAocjKuEZuSbI5hXq+U4jNHFt0gJyFbVd5Ll8tXud9/fw6F6ZjYx6vIHY4WP29OnjxzKv22lUb8IIOeDTtg7NGrXolTQgD29GNbBGlxke6kwjNH6HCWq1dTiqldzDytek8dWUw5PVIZTL7K+B+kr56zKDGlJSrHFpYXvZQmbv9vV876D/URL4JYMj737G3AbVctXsrWudnf2VQ6K1ENy1zLgjKqPzoOy9k9dqtUA6CWxbJNDmO0m5fW+CVvrNk/2WpOeopUlbJ01qDwiNVwe5jcdeGIs/hO9udqM/BDEkfq1mxuXyoqzSxTCkoxT/KNcjKghADy3QqzmZZJZr78Ld084l1/17VsrpUU2tRFPtZFOqSfxx3AuHSZmi4LyOxSRmqeR8OcOcsrOp3Ex3Ehu6Q5bU+aTPBpGkrRwHNxeBxLiH2o2fvloBVy+EW7rEA8Cr0ssXh+TmD8ZigBljfZvhmxPttTkqrqKFKGVt6BtYjTWVhTohMtZe7ljSQ20V7oMD/FDwAyVxpFP2pRdNFOJ1GGoGoCMpptAX870Dtlfe0CiexLWmIypbiCyTUWJHKcGDdCmx+TVOYMsbL2gCzw7MG//dIyr5gIGkNgzZJFdsuHcjKdzODk1BozfFTj8W05CuKLn5lwm99C6LfLmQNl6GB029KEx0qb7tnR3UfSq3dy7Z85akk94hIbSuwbTl4PYCPxH2dYhImV5WDm5UH5XRsNqo3jQSFTyzlRiFBZS2rcFmhXbuKu/I5u/PV33vrbeE5gOt0K/p1yPIQK744dlzLlO7Faa8KG8x+UYoVWQtezN0O6POzzOPWniAYnBDHCMqU2RLYN6jfgK95fZ+Nm2IF8rJZRBtHAJRJ1k/c+nYnlwS22g3adQHbaIpVjU6FvC6XKjdlQjuP2gTgyKhSiZ0bfsbWsQRz8XK60N3kjvgmzJ+LSRD2jBG1hqZxolFS1vAiONwJJgT7VbwgpY7Fa9z8SHi/iM0JafZCDatA6vpAiMp+h2/SUZ4XLeDnvWMzf8frFw+6C2GsKkLqYbU8GLYvIVsZf4CpTYCyhfXrwURNGocSgVK2HwgIyq+iboPfvO3Vy8/e/HyzY8PF9eXbH7yEE719ddpDpkUKvqRRrdxiFf8dLekNw5cKW9dZM2VqMS6GNZupDdJqmvMXzGsXR8gtHP4A4OPIzQgmyMpK2PZBhjK1iMpI7Rz+NO3/tWLYfQRx7e6ZG5xzSMqgLoTBoLsIiu6+ViMhB+KeBpnLd4GCDVCkzgmmvj7yYLaqBUYfUVxNHS76eJhvpxO1TMO+o9trWxrEF+wKoGlqRq8K0Wut4m3JnGVJIzCIKmxsWQ9ztKXC+cb2VCicorjYebWpcBq/iEuHCM0U7Tdmjywa/S3hu9u4FcTPpGczCvrjz5CWDWruHWquEjWc/K3rZXcNiq5SG7tKA82IyrusCH+0oH17pTW705BDCPvuX66r4hqC+Xl3lK6tjHUIyl3+Ozr+qAs61qU7nl2k8WtY5yio3dRU0Uwcf5wqxJVIzT7uEsmLUzYGH/Y0Ll3bY6KrCgsQPZ/SFcBfv199eL+Mo+apOIX47x/nv2fNXf9F8T/eXxw2Ij/8+SX+D//FvZ/eYnWf15wHwzmQ+IQ48W5zSDQWv6xVaBG9CHrQCMq5sNRfPi86Hz77PP0+enJ5y+/SF+dfpG4bj47jpE361XiS4ruI4BxQp3G4NfGd8FOCEx0VHaNHfOom8+7qJN7A6kXt9BVqKu7E8Lf91kBaeHgYoLFLiZRGUsXw/viFj+vuDS0mqKMAvX56+6yJK3xkFyAlJ1fo0MEpkl1oQ6wtdLMdR4DFb/S8xVgXAK6Nu/khjvluJQF3361WCsaU8UlctFtqPBp2zPlqEjHmgSilX9CJpE2ZI91xSKqqcz5i1CbY0IIPaYcdSONZM2OCSRyUaTLaJ3luAaSkFsu3m0iHNBQeRgEkbFawnerTI3sq3vvQiM0Umyd1vXwRwITfo8cSk5fN8dP2VIjGKTqEBTyf7Vrjxa1XL/3WBcuYR6bviMp/zdBFdyaaydpXMNizSMpcgv3rSmX6RU1vtpQKiHDKsTZs+siLWX+ld6m+YKuhh2zuHyRuJPAEoPilpVy1P0ecBiglox3etB6e/rapYbq5dttUvFLPbwSpNmLl2JIF7+hpeUhG2Uxdxl4tHgaYxHTzEjSCyzU0C9EciAg1c7IXRMWczUowRz1LmKN3ZaMd3bR6Tdv613UVpG6NrECTHG7Bbv/TpkCv3ULvQE7K9C/MxRVtGQkl5XSRO07IGunHCNFwkfIIypIWw9jlk09bFmuFmAOP9VgxfCDl7fGlOG22ryXZ56DNmJ25OzEWSuZAW0BuMntlV0x1nUVbmm4NfptMS1lfxvPnz3/8jh98fJNo5zTbC/yGMlF21GM/VPVgIRT9TIrErIMIgQ4gY2xg+GYZY9wkK6fdIE4xNOZgAZ6C16PcG5uKCeu8LQcsWGZiG+xxm2yZirRjgZeMcQdt7gYzODsCeAcD46QIynpIyrp+iaKAzqpgyOctlfZSmPiBXJm8wc7n/HUDo621XrYhJ6LA6YIgqOWaHoBUAf2w7PPXkLKYhEcwR/nNCTHwR5tssN4W6O08jIM4ERhH2z5Av4TzRrZN/xrqmYZWA62TNuUJFZx5O9FSaIpUiKquy5yUUqSLjHQqpMzcS7+o4+SOnA9SL1W4H3fFQZmzMdO4Yat6rMi697my+4Qts8B2RUOKkqQqIc3cEqhbSqcRohast3b7v6eMLuTyHHCC2hU+7zg13pIq/b+b4lG197pd3ikQnIjKSdYojNN0tZETXBdFPmekBJ1/SNf6iH3bNguxxt2PSCfVr70w/fZE0q9MyWGUpPENveGkOyRjS4habdnk9w7OYVt6PlX6cuT9M03J0KJ1YNDulnovkj3klpPoStO4wseGq9RCxAkD/bGYF2tnr42IAwEyF0IQ5Z7IwzjcU+EN7om24AwkAN3IQxZ7o0w7Qn3QlidsrchzMJ1S0J7doGOm/rXb44/f/kn3Vvqa4Q932Lr2qL+2fJJe8EGza7Zg4eBj8ZnL0/gKF6HBprTq4M2mztpz9asVLIbt4VlxddKwW/+xvj8iIx/EAub4aDFFybr0AI+3EOLcyft2ZpoSfZNaEFRpIs4C7w8fQznsGUXeG4Ygkj0PC0dY0gedmspe1xvcUtb+1yuYgM5ybtJd3+1s3o3JzYS3naKd/Ngx0y3L4//pMe05TadxeHzTSMqJ+CQ44qPPsZb7duH7tnSlbg4HwWR9eHSYC3VLMNcpRq2SxSj5WPb4vG7yFJwUHLXpQzPvvkchkCXEjk0ZJ+nyDXj1RE9KQeOimCsvh1z7Obbkk0yUYMxZibbmGRuMZ/uX0QZuGo0zNCF8eKamiXENSUFA4RX6lMErlPWqqhuzQaXCZVR23XcrSJtBTXA+PKFvFb/yogJXPtCIcICgoiG8ZOyO5iimsstdRa61SyvJ2RwFAU7mEv0br2AorUaVDED6qfcEhJMZBxWVaEtVBhC4fZpkzCgEI2ZPyTem+tRwHEhb8PAeHPYcjJkjo7T91sxSKf7FhTQ4aohRwuEi+74GZG9ptqAPNASArHoOK2P4+b3+GS2INVm+O8/KDr1jt9qGsioUc4Gg0PyfCCR8KKOG+aOAhZB8TXKQNn7wZQub8vQzBbHpnQ5Hxp2RJkQx7WuuQ+SWobW3BTZB7Zyg4rpxXGWaUxPMYNVz/I9b7TgN7RCIdbBlLn1tyMpX4G3wU4LpNf4FbsPNSyAb8G/P0bWG06q/pV9g+M7yWOvrCM0LKxwzrcqMemxjUVgHYVaktDVWm/yybYXCFd6dPxE42ttJ+EsIyrVTEpmHcI2Pxyy64+by+QkR++6V7WtnbRh8QGvJBnEOGQ1IynMGI6N+uUSTSCtoBX9caJCx21yfUN+YwKTYmyf6u6jxgZCI3yjN1qeJykD9shdFoCOsbFMxk7wQCccYHP4x55dZmRzN919NvNqIzp/wJ4x2iZ5mVJoIzQVPBYxuqPmY2e0XNgTRjqD41i4frZdxuEcIyn0bZgm14rI0fIFuOgaVtTCCGLE4l5Na3HNhGpmiBpSjlSLnX/EptH0TcnzUOjkixm802qM5ua5ukKPrEd11Qz0PK237s2AElLEmHbAe99kLLNFguSo53rM6bC6B1gbvbQ1bwzrfbJK1Pxsnfrc2oocN+JOJ5Ajbjw+hFLjrphN5pMkOOj9rve73wXxbLCCt8MeBj4wS0cYcgynTtIjKnI3j0QYLnS8nlHSj7y97dGxhVp9CDqK6QnARpGuJJQ4NcnBjiMqCz5fzg4hEwP4VORN7tbgVlpe0XF6kVlXWXKwSVDlnbAFKkmqorY6EdVPPqTOWX53lQhUq5QJPOLOzK+lo52hIom1VQnDJ7o1oQgIOIuT877EFezOm3bMmt8EFBw18xhQ9aBb2WoB+9eyBKw9incUzyPdsGse0xeRNx8XnTXUjiiUBDsGwXqbF0V+WQxmtWbrPIT5UuLmTXwxvqjSgzKUaNJAIRFjVNqPexeDKkYRTIDGqz04EHuLaSyMi0pCDDx+D3zTKJvs3LHxIzQjP6KKY7JmBDpbMMimDngO4iDu6jaouXBNDCM0kyMqnkXeKocjJByxQiTaI5BecHC+1+tDrjQw/YRqsaKTG7H9PM8VBWtSLHCTdCRiai6xbqrYMMw2ryeseP3s7ZcEXbYjmSiwPXJ9toXTpZjKGwV6d5NGF6ich46WKfv+NvW8l5BFrWXr55IJs4XHCSauLenlchpb0+E3ZWnKAs8/KG7NWKJfllJaDz0RxW7vOZDI+ob7GaZukRlP+tL5eLMHqRgE5DaFk47jMbkFel9+dfzn9Pk3b94cn7xNvzk7fhM70+5nqOrV6fNnr9Kvga99eXLs1dXamxxgwcZpEOVGTE6SA8UBlwf8sFsd15OkfLCjIGniqsnK2r3TSDYQ2mXga8yF9OCRPtFZ+NflJDPWkQ5vRPuUQEpgU6cpjA+4IynhB324oT5cc18maiM0W2grk9Y7O6LZcYqCNwQU6tW3SdEyMI1xunuCobIXIyk3s1uGkyZL20lBRkyZMMGKR5dJAtgvQx6CWC7EaZdriF5eG3SUs7OhUEw8IypvIyr5A+h/Mm8Oov1dKuDYwdTOB1ls3vFQ0pKjMSj1UDQRdCmDHoMZqwdidhaMriSc03gX0mpnG998ahbr17JGFtYyOO771etszWESuTRBR4mIrxRa3Xn60lWfqcuaNdewMQFbjQuijmcQY7sT5eokzms4zzZubt+j1nu4iN9HnudjPDY+Ssi7G6zZGvPJXm7X377sMrG8G9pJ6B/eeFQH0S6x/CnPz2DXnEdX2Sq8sq40cr4PpYtblmGtiQfsFCBjs3WZ3ek+HMwRSRiLFgFjhewGxw+m5ckjKUn6NHMtfBoiegRD2YwoQ+VrVI43RmUPUM2o9abKp8xQ3qBuLmRUgzsjoYhBirvlol7Jd+cjKlD9FpcLYhONJ0uB5s9OvKS32DXGl61g0+DuC9/BMa17FHAnzaZhXwuYTl2FQCjQCyMq2OPOiAsZlGnJq1z3StOyFD55FyrqHMb9rsGclHBHbFDTHCMqTNaGY5cqY73Ww3boJZ6gRf7PXbUDtj6FLRYtGS7gpNnnNFavL5MjKeOsYYKoAziqAZyu4mvjjNiVaUsFuMEjcSWrF5OubyCFH3FysvHrFjmhp05AW55+CJ+F7N07MMtJ5ymXZSvZpqREdcvNNGubIkekutEuXuy0Th1v5uoIkgExJCMp8RjE+36w+paFtn6FRfq1ZT3wscaf2y4HNixI4+zfiwLFM6L12IM34hOZVwdShtQYG7IL/KKyC4EDSR3nmfUfHcg4kRubv8Q4wOlhYhyY+dL0ZVon6ic48Xi1CwnPKX12RFoTJGAWpID6Sp/hSLKUXmaWISztcWUFcjLLGKlNQjmP4abWMOXVj4M/H796dfptYGR80BxSeCMpVv0iL7NPD6ypxLqwtG8bhwPHGwscDgIrpUhhZanTx+k4ku5ybD7D1mAJJ1060FLTH9Cm+yDrhESrkWsjM/16Ohexuvyaa4MqnNHT+ftvrf9Ptjc/S/Cfu/X/nzx+/KSm///oyeEv8X/+nfT/b0vR/m9T9WcFf9Hid+PHol5+hyLC4t9fP/g1/vR+/SMpf3Ye7NBbSm8U/xUfnv/xTH4ePqAvveH7cnI5hwMR386ePz/TX8nwvixhZ+2VwyFlL9/P9VcyfDapvsqyBZA0mH45qfRXa4BHW0Pv4vtCf/1UzX51KT+SkH799kR/NQ8GyNybjEp8+Ru+/Eg5RvBY2ifNIyrs6pTOdnp7cZaeIQGAnUf3K3PYItFtIyl6XYkZp+GAr1OKjG9Siqz3Ev3l26/sBHifD8Dz9Q4q+QJulaysju+7d0ChPnS1fh8+5BQ+zVbW5iMqE+n0Wu0CMUlRewfD4dLGdyB/8HqTYHLjQZVQAdH6hDLrPAJfJ9eO+jHgcd7ru7g9QOPkB27K7zHFTdiFhHfvdsVFyHUS/GWn/E2wc13zMiMpjLLrm+U61r6Vy5+tzXfh66wfX4pFLRBzVVbMmSq9juXK2bkrdnsBcBEpmIloAV/9E1EnR7m8wEWLfmfYX/Scp4Ydd2ChKajE3BHXqL8Gw7ShMK1EkY0zMk79GmxGZG74KqTMlpQ86Le743cgnB8e9evO8GwGtrZ3MGnAq0E7IGhrukTXjIrTaKbPoRuTtk7DDFAjgJsX2Xfrsxz0iWY672N/Qk52Pg5Asa/VRRu8x/hRo5WdkB67iVRG6p30hZQmO1tpWk7zqkzTJBTPoAEbDmMsJdSihedA6X8RfJh3UnkPWuOXCdoIyYoknYg+GugLMyT8I/E/6NlYyIirYTFmVow2RrYgD607JQeeKVWliiFISNudQhVzgp3QRZUZJb8yMZthTlKiYQELWyGPLK0FtmBQayYmsRzYbSmlHshVK70c9uuKJRJrmitnhsEOWyiFTKdf+qg4PFMz/BaiENfNbXWM2SXhxnhfonFmlY/bA3htzIyumLzM6wex7ALGrEW3XCMp+5BRrKALpPkXE2ZJmKlUPTTeNYMisF5UrI8UBzM37KyPJYMwxaUG6wSKRlrruVlbj1w3YLFGIyoWQr0aRCj9rsyNO6I5kBcVq8vZiojoIzTcCNpYBKVFtMrTxWBSlOSGOLG+IzQEFntJ82wVPtlfPWLC1L/LT1HnKFnOJ0OKT2bOnxOYT86tPWcrq8J4SuWaQrrwsoJmPwYXNMgJRWaUEKRoNs1QukduSuSZnZVAub4cXW0gCZd6MBYU/RIq9TPPxvdivTtE3u3CkP76l8GkaE7aIyn4ETdtHSVOgC06YrH4pOBta8IeWloGx02xUxPHknT3SuVSXSdZZsLEm+FRijt5nWlF8w9vKKpbjrvUnElIpcNmdUibF1qRIylRWCZ4AxgHR122gYDsKYW1YVAchGQ6mWco88RfKGmPfM7EuzoDV/3FZgVMLCk08jPF7lcS6pzRcrbgbTAWUPwTO5DsY2wRNU/RriMp182Z1zdX0lxpampFstn6JlcT3fprXS0YjWVYW0nHbqxekN3heRaVxklebVexsRpHsGR0t8rew4S1o6yL242JtBEjKtVubUZ5r3m0c9ZVjjvrLH/fmrF5SdGmgtGOhcqt3OjWeJWObfQ0MiXiKiv+qWkIQcGgZ85ZaI94c1SqNetyPJ6sbMHrZDZYhfs2XFWvIM/5SO3X/SSR9sL1kUC6yiaXVy4jNEJIkHsQlD5LJLiR+DYb9Qw1hFk4Zkg9FiFunt6cmho9B/eT3/no5I2irjkIkzMwhMj2fa47RTYlpFnhqoo508jtScfNTHOIhdBXoBo5x85D96LjnrNGI9q5evYutusIi1bDS8fk0vH5UwvhqpPlPgFZ15JvMi+t8x+NG9HisxejPhjHOXSR6QSpExMJ5G5ZxQFhUBQq8jj0UQJTU+hM5MEwUTgb93rrHfwL6OLLdKJDgFvH1MNqRaayjv0EQ4s0X89hCTS+pQkLhd9tky3/tDVcFroeGu78sDHAEPZ6wqpjXvhPEET1SHhrhOIyYza8otz3HDU3a9ugecEeIyrfTihdSRTNmhp/axxGM2214b2U6yMpkngVQ6KrRYw4yY4YWSzN/tbm57O1WK2UX0i1K7EraSMwA/xzz8yfc+wlu9nfV/1/fPzvF1fTxWfTINf7vcxQWPf/UM+vXQ/Nfpe+C/2Oj7UrayT7molJakkoA66ZGwwPtC3Dw4SDKUMaLP6Dnpy9tNEcQsqhm2LcpS4X5A+Ej2Eo+Snk1e41QRYOTJBKrBBe7SkjKkX2EnuQQ+lPIUlcRfL5jahB7U6ZQ68MLdsDVEQaHm6q2sKr4+DDR47vwN3JEZ7E6znHse0/WLKPUvwgUVi93YE1W2yw57yAudMSHrmNydfXjWGsPYnSfZyNuge90zIkoxjZjhOq2CVNDLlhs+4aOsRtEn53Czb0fNxSzUawRxOPVjP62K6RaGsXNZXo2zpp0w7WRhA5/UStI2bqjl6y3YBJu6ZvnQW/tqN6BexNk0XIhVr7bX3HNajcuiG/XfMLXfKjyXgs1uKysveI2HDWuZDXkPFTFnHgIy8+gLOwi0YVvlkfUIOyozh2Umm8w8EQ+5+tS4AjGMHLVXL4hAS0FJESiB/S6aQjKaskuWFmiJ9JR9MxeoTseF6I9otQ7pH9YOl1nR64a5mI4brNOnFk10+QO+lSz0EkY10LdAOV72Hlgp0XXNHZ8h1iw43KJ6WYsqQO4950xOQ6f/GFzqy5CMfNZSMq5M9GCcvA5VvHj6FiCRgW3Ip9HdGl4h/CRoVAzyEC1JreUQYn3LXztnU7yYh9YJmYrCUjKnfb/F6DtpZQFlMrnlDGuE9vsVjrUCeizEH+sbNQH/YOeDZS98Sqr4XTEV2kymzkH5mP9DeqNfHaTv/LaX7R0K0hF7Kq8wHP1uoMq9QPcj+A03LqGDsMpxjk1V7X0vXeHLPQqF/DqGLbjTow5sebISacqAVG/41ebe2mP4yZgiQE8eETqsdcVFp9Y5Nko2Rtcd/42tX2K3Vx6F6QIpbuHWnsfsTGuh/lPlOhG//Mgctqy9kxHXx/m5ocwh/LZIjD2p2TmQ+xDn9sh53HmyuXTcfOqg+H47dhPB1UHvqBWoasej7tZv1PTypXFoGXwpQimz9UaA9Ih2ZdWZ5UPKdA4q1NFD1dS5EZ8tWYgC9J69s/cTVsspNh5WXQxeqTxJ06IynB/kK0kevY/+OIfiMpHmgjKvGPd6Mhle+HZoOmNPrbvvgg2tTZgqRHCUO9liM0X9N4e02nTpT/qW2vYd9o3dq+qVfd0lX37op6JY4MqKmlrnfqKMxJkkNXUmSVLY4Cw3HiNT3/8Nl7N/7nQZqi8ChNg/6u6NSrDMw4mP65eV43yJo613Z57qln02SCq/nFcClFviTLFBplTLE4JMbRWnGLpS/rPrDv0Q9YjW/YofnvlNj54dxbuqSRm9rTEPK2N0NFyP+ccbxjGKoPHiM0J/QjKd+erCojKkxuvHtyUFWHnzHh1V27JIxx7l8SqO7Rp8m+BBNUXYjzo+u+WuxYFst8lk920Gy5PVy5EjFdQbirUUatPsMMWUwRrqcjnxH1AbjHtru61dlOMfyg0tZBJd93T/3S7Rv0vU/J5gHS0+bdeWT0tCm2X9K2Wzu3Yx3gdNNjjZybygbOx8Y1n6w+DN/RlJk4cXKxM0yElo283rpC7D/XEcdI7FTMuTZ4alKX8fjCIzQXhLDi3FbPg0ub0U7rLRMG0jJhtCSOTqMaz0rrfBGXFBxrMs/lCY0i+pEnVRQrB3OL6CQvJsPraUbOxtRY+CM0790n88veK0gMI6tM9SjUOAQkb/nfr/8t0UgwJOnP4//94ydP1uh/7x8+efq07v/96dNHv+h//5vof5O/dzWiii+AcX76OEad7MG0w1uQ5B2+piXcaTqtsnl4laPWrOb2QCMp7ytTHcni0nnfCNXJxuDecmDX49ViUmSjxH7v+V8663Zv3mr8zKHR+o2MFaiGQCTfNquKXHyiIylxTjpDqN6CFC6JY62lIWQk2SMq5M1Wk4oiuqHzl/j6Bi2q4iH+7SfSQ6KIxB3fu3j6GEgIpLcjKSM0RefGzAn97eYFHi24Tx90UF0nzooCiCceviQ0oXPsH2v4ih3kdtTrHHgc8hyDwia29LJnjiMpR/POIWpMz1BHIyotBB88GGpe9TDjdaLR/yaQIrgi8615dpOWGUUv48twjQGcYxDqyXS6uFSjTziZOCGk+heTkUzI3tnLL756+epV7a6YcmEJPg7XIq+HZVIbeMpIQ6Phg6mR5ybGcD8W5ShxVo1ANEoxRSdWTQhI7xjD2GGPzz9W7lurWg4fSKkOhXXsmiiuLhKePUM4b8e5qnykpPKVtJk8MsywFRYPLE4RVKpDfz+7wbt5sKt+lAxkribJ7FWq43QjNAPvnaMVb33iAU2TX3yX2AksEdl0frMuGcbrQ3s+XkAjKUMVwi6+68mMb/2OmPrp4+myRBKJCdUD63WKFqrrVuoiHxSjl+gsoFguaE1yaJ7/687/8WS1uD38mSzANtt/7R/CyV8///ef/HL+/+8+/8nOK03HSwyll6Zq68UuKlHVHbkISyV00CgcCP7JmMKDsDBihQyFmNGbaxSbUX1ovPeTz6/5ooneWqygeUkEEYbpYid9nBM/0iUWeqoTu2Nk09HK/ciVIWoU56DXfUsOZYFpLwZloBHX/RDJudXma+ByG1ndatcqivxBCSPlyAtv9Sp2FbUpfdhmrMTbntH2Mz6hGiiI/BHr7dKJbTzIBAUcoyV7QUTSRNSYIyZU0JUhUhDtRW9sUVXMpcyslYkRER+YmNSjXIIkSr/bhl37d+rOEK/62ifS0HbFHq9Ecg55HVknvBnbH8Wh8wdGJXggYRyLAyM06Ip4tcTtpRMW9Z0z0ndu5tjWo8c5XnTlofNBtTeI2Vg8CaRgEG2zQyzVn/GqNSFJ2WuW4vxmOZ9nBfsSI9wfG9xbwcxVRta7wMsjhGbfevQ1csCrYwkL/8lG+NthcEzOeNSkGzYCNl5DKiGLYqQEoJ33y8ckp0+0nB/2t6Nf4sjd4/xngcjPZCMpvvn8f/TkEXyr2X9//Pjgl/P/l/Nfz394BT42FmEB7IVzijK5yIYVmo+jvw6KGGdisHhShJj87+JJTOzVTyFUYGsGOf7J82mgRldicUVb0Pl+/5NHlj+4Wwix1YpGixhCeM9/uXyChnGYT6cZeTgudRxH2V+B9YNTYLCcVmSE6vV6yk76sPX81N7/fr9JzjV9xF/Z4qjFiYC4D2CI9B3dTTsZZqMnG5GgMpDJzb8GFeoZr71G1LxmnrELm/86/ewsYJJQPNqJMZD6h+Qc/SQ4CHSIDGTH/le0BDkDybadb6TvM/zrcuIGUFC9QrmwyQZl86MvLk/s61t6SjC1c/byi/Tk5askkIdUfy1R0sF4r8njw/3O6cdPniSPf/eoU+ToNKZIztk3wA/kIyogDvaCPn2ajFbJvkjn82KUwVwkdRaKYxPiH6UVawELXUUmUr4DEp1mpqjfIyqrXnsJuSqEjnAuhyi/k9YjNNWYDqPrOQV7nd3G1lQSpVMc24Egklqf7WwFqfZV8NlBdi1gBxnj6YBKMkKjbForZ5vU+rVuAdTESGbyH7H6uh6vjAWOUdNkWJQWxLrNqiM0+B2xPjNPhGmxlPhtZm57Zu5AilLk9ew9/CMpaPiLHrba7Ngdo+5sVenlpAZjfO8lIykkL/IkasnSu8WK7rDWoDUbrKZka88uKOPgIzSWTrtxPWdNDvb3LX6Sxj/GByiCcoJmIsjEdE/kJtsG0qv3yTRVPhnL87aJYy/oqXYjKj+il/OTsmsgHdVthFgRmFUOoE7GiV7nfL1tnhknk9P9lPhtcgG2ty9ZB9XW32nBc9N6rq1m2x01xQuvi7YUtipEi+2I7WhdX46iLuojKVhQ0SfOZDiymrHemK/rkI19uH5YbKfVVBhMK6mTWyBawxFjmMkdQrC1V+6wpNK8Cfy3thNtPzOisiR9zUrHTUZjyQGhGEs8PetaczlPSBRgLCExTCD/3LHRuc4ksDvcLNorqqI5qTbe9dtsiWIVPnAQctV1kDEnIypLGkGtuqPqYIlx/g+HLQbFdIIXQiLlCTrqqmAcjklkM9vgcQFv+D13A58adwOqphNcIGEzo6AWuwm8EcVmBENchZEJ1eRJpH6j/Ih+hv9UeOJ4WHDiFfh5HC9x965XOhQSO8bGXvuDTNNnG9xDfFinIDjyG6Jkktsm7bH1iKsQjVyUdBw9lbH6tpklQLCGURMIhVlROHylMTZmImP2Ncw9ckjIc3giddg5FvmgOm3sjSaX6KQxshOIZ1043jiF2NkGzMzT9OT05cmXx29evv2BXt+8OD159WfsT6e7KPsPnP+zlyfP3nCG3dYMb158+8aS8SNM5PZr1I0W02O+TXt5qvbE7FgX26OxjoKdcfQPTv2yNx4xJqN/8uS/V82t09+M5r9iATiz5Pmb42cyQ96++ebkOT9++wYnyw/+PPrXzB1JMHOHug9d2+jU2TQS69az9r6u6hbEaFE7jXNXUa1jPiMp+9rM10AR/qbituXn2lZ4S1nOJ6uEHjsyLSmFnzvSV5TEzyiwca/7nU5gXYAWdzmPxV0OVZM4Wxk0l+pJ3BXR2eKaEnegRAiwSgLD/gLBvwJ6X/r9VZ5fLxc1cRN6jC+HkwmTDuJCvDRuVvUz4judjG/D0lFpbnF4bbQjKdG5mWwI1uuJqyIne0RbrUTO1NrAeZB9zIfA3Gxvb3feyJZxlXXh0yMpapvMBtMu+o7Kymxesf/WfNwdoM8elId0joiA6ZZHkoJLRNztdI5QlcB+6mAVjmcMWSMqpfUC3C092kpEfAil7GytkdaoY6LVbnAEFJHeLgXPPnv+4vjzL758+V9fvfr65PT1/3lz9vabP377pz//d+AFfhghR/aYpu9gNUInw2Vy+JR8TC/HCVeu3ra5HSl8GHOIHc7/IylhsJMFASDFoIGj6RQI32KeTR8d9r7Iqlf55WQ4mL7AfGcErnxWgxRL6YvbAugVqCxyjH7JTz6k9YrBzfnjB5Mj+G/3sG9mBs2tgD0cTZCtKVBfOpzMq1CQe0jYRv2O4UyMSQH6r0uS7aNtIp93jc1uexR1mlxZYvaaHRN/b2CddUAqHW09Evsm9Ld3fHJ6fPLW7FZZx7FoNr5Roo48Jja1Q8rqxkxXM3gTiqaYhkHCIylIIyrX1ZBolhZGhqqWiymlqiNKdhjTLEQZzUrel8tMp5sfGweWk0+wa6V6Hr3d5PDJ0wcPwkd7k+gBDgh8PZ/0a6vYWNhmRUeWMmnQIzTD2vCpVXfCIypJelPtRTJRq13x/1XmUwywy4d0GDWktbrqNohIIyp0owYjKjNwMbjMNkz/51zz89dhdB97cpeJVuiuAnkwXOyMgh39ZDqv/T42hOwHh08OA2cWkSNUS/jwFbYxcKBDKNTY5Gp8jGvAuiytFxneXt5I/AwZMC7geHR5+NC63a5BQxeY/AVteCBl18SqaZkkdVQjNNijPC+lwflDdB/T323iybvvJjTZ8YwiSrClMiqF/mEcVCm3xZYdh7O/UPz0ey9UHX4yxeutatTUmcGA4hUey+pqIyrBj5vaEZI0GptinOi0ZOE8lAsRRXtaOPq0YntEayM062QoXs4VIyqHEGGFv/A8gOkg/jj3bkgw3o/uqTUQeTXog1UXpZBYRuVjDvw/Kf9rRtUmkWixujJaJ0BHqH1HkMDTGAfNFkka07wjXv7MlsxXa16Irq/P/nz29vhrCXvUIzQMcXb8wLfm4c1d8rRnwdXase8ebXOGySUcTRQO5+K2+xD9pLx795/dEV+IopN6Dr0Cp5iJ+UmkMf35n//RrqYa/ud/OkLgEERD5AhBxGlUFwaOxhKdIx6Doy7+w00dSakabcSzBw9AZ0Y3D1/9aDVuHe9cGh/Y5w6sL+LNENd75WJewnHJ5YSjkXBBSRY5zcA4TxyibP7emGep9Z5wE1yZvYYw9XCoJ7QU62azRXUrPfVRYI2PEf7YIN7w2cciFPou5ngDIzSIwGnIZf0pPf0jNEN20PvYU6Hi7UcDYI27lIeoJKnYuB2u1atGOFJUJ7UEusJJZxdIx4/QhMGpOKJdvxnOTs5FmPGye+E2EGwHkQaWIv6lGcPJmKBOTJ9pbt9xZr0BJpcf0Yn9F45T5MZKDDxjbulIiS8mfT0bvMnxKa0sHJa51uuyyiapwt5flzkQ2/A0mXP4KaY1x0uNRRic/2Ww9/2zvf/e3/udhCREKtPJkO5KpMIlp4+XGqjQBqld0nF55R2X796VP7wLftjW4/Iqw2g25XCwMPFY14dwdYKg1s3rkYUjNFcRHYpQp1i1QiM0+WF3TCwpnCpLDEx4K0t6IL9OoDDZXMlGvtjuIzQD6Ki6nSMqayJKcT1PnbxJevnNQ5G60b9AYXU1kYsTVofj2JMjKVW1+ilZ3RihZ5SMlPhQ+H+TF6NSp0VkM8t9p0G7R0GwOc6y4JtIbwwlEHWzPWYjvEpEtQQPH7FbFi3CTXZuV0kwzxFU4MCy1d+HWBWcrmQQYCSB7WqJnAMP7pRBfDsjKm+5mInc7yKD4Sf7XAjyg+dc28px2jAv+z79Txm5jyccaH2DhM/SfJWRGhhlxmA1mw6vBgVwp0af0XOzXmSXrG/pLq1iO0TyKvohfPebd7+JfoC/fwvP//Jjfzd69+O2ozuavh8UGAZvUTiXOSyOXkzxYzjTTWXWuyzy5SI88FxaIykjKud/PvQ+/yZoerviisjEGl1khFry0R3+erzi57ZU3+kP6QsOoipNiLF5kWylZZWXGMPyYjIfz6pQ7mj5YhIIsdGgEEJMWzAbDPfyQOYM316GcvETK90WB0v+QdLKdawdLHCKy3M2HfNd0XIucyAbpVAgVUKQ9u8ycWlDnjgeo/Dd4P2A6yAZI772psAQq7LN2W0Jqx4pu4QfsadfFzlsyNVtGIgulgaQKKHRXw+GQLd0/+QyIyraE+pDzMfhW2A285uy67s3keswLQGQT88eHnpQ89LP8OXrvW/8eq8We8uVzUPdfbacn55B957l00ExKf1ay+U8L40nNui+3jS/4cNHKlng+2LojqppnWRh1PGGD14QSVeWZ3IjKqeTQIgb0WebVy5U7SMpMx2VXXw32v0jKh6byK2RxGQwGrjR62lTs3pkG29e7XUr22qhnp4Y4Oc34Tp/9aNsWiMqnGx7NQitYlEqZFQGe/iHkrj/GWTzK1QjNOT9qEw4L11Y3MpbDx8h5SM0ziM0DGczS0aT9+i9mb9KyfjRU5ZyzyZz2AJgB1eInBnKxU/3WVuDPuwjNPTZZFjkkvbgINt7SmNTLqcczpljDNyWMn0wfTcJdkYj+I/xkgxIOBKK9ZxXwQ6lt2TFB8G3XmoW7MgXO1d2yp3eozHGUueM2kYZQByk+h256WrzsKyGMuiO0J7UO2HnKcbpMF/OKWasarN5YM2tFYJy8ztXkul0wLejSvn7Io8i+AucKwmcK8m7IOw9iN7Blo9NGJKSIyoFPAHCkoR2dENOYHhZkBlb6DFWaTzNxlVcoK+6OE2MYAKzKi9OJMloeI45+wllvUPDSrtvaEKj5kJukS0CuQZAbPnmbrAQg4r6ucX29tfr3ALgEU6qBhw1R3NrNEFX9IKVoN0eeSFI2ZDfpLIjKh+Ccgz6pDRm6aiHhGZQZ9S1caPDy4q2YaE9fx+GWqX1IaGg/88yK26pFwna9lk+rm4GRfbu3de0tuD13TvZ/t+9e74s0PHDH/k4e/fu2WLRfY0s1Lt3O2hdkG3vOOHLNwRwdWJx11hKRi/y5VmYJLcbF08fh5GRhbCyxsNAYOkxSkGggBgeogZ1GLGg7Onjiwlv3y0e1wNS9Sbw1h30ujyw6XvcHYC2xz6f+eUjKdgrGqSFw2LUucCWOMFoiSnSrnQBjAHaTekMkPSwyXu4JXqLfOHYWr5EjXPT/djHnmhrNCmIC6yjlvJdXRoZJ5aB6wkBd1cgi5NzNivRwNFxsDcMYlGOkaoi10lSm5Ezi+k8A+iXr49jsuVupF4sx+Xk+yzZj8zqXiMpsZwX16Z76ubcbZEwMZ1DObI1MUfEJKVZK0FwQhPfbUTbtCKPzCCEb28X4vPXJ3Q9dU5oIzQsySXQPOub0mFjcW82dGyQiXz49wEUw3lj9tuWjNa+li32MqjZL/WTpqPo1VriW1nbxXctd+mveQyzEU6RPcEWwxSNMNDNjtqaS7Vmqgt7i2kRx7q+w3If2wY5YRPCaDAaTStJntAabdhPJxQfgFwcHamvI6JzCe3AhhM1LaFiJpYW5baHlFvAkcq1lPHNC4KjNdbxOJw/jV289WvMAkpjtq7I2QNNe4l35OFVfiPSMNzAkr2DmDg1eGiy55jD8OdqQnIzIhEeLLUEnpF9WdzAnkSZnft7ytHS48E382ugc+YY25vlpVqQ8KFi54f9OiqEZB2Xy2JhcIFnxOUS90fO/SHIUAHCxhTlbrH4OPeytU6MpYzucHetYiBniK24jx+JhgMIXKgUN7uWDCMc+GLwXxxP/AMLDC23lmWL7wnBWBEMXQch1tDAKX0zIykS+a4+924k/pUdb1GOnC6xd2bUMG9L4TN940xfM4nJd+6aWewcincSDI3L/fsdpWQ/NJ3mw9Q9pMJ5DLXBWWLcXsv9p9PO2DnQ4yYIc3gSIDIyoHg8c/KA5+aMKEy6zBoyu/dIBSPDZJWKOdJmLXpuFrGkpeW4lVmgSRPdBOUdtg8b1vZtR/hKuo/MGbnfPN8Fbpna3RzNtWuamL/bHIDHTNJrnZGTcdjQbzvc/3h/f39s3CjqIypsJBrhjlA3QanuU8wjKmAZ9x7zaehR2LYl6rTc3X777PP05DR9/eb489M3XwVRU+EcBVDoQBy1tzw6G1mKuwbpPmP0i5X3nfbfp0QG/UwW4Jvtvw8+fvpov+7/5fDjw1/sv/9N/L9V2WyBaXG+qBaDouRw4EWrFe+rHA4ijgcu7iY0LnjOMzhRID1iPZBxRDpogILW834HmoiXQ/iIjiD1wru+Y706ff4VBnnGPHuI806ZXiwnU2DS3M1LTRGhzpQqBcpCq+cV9ZpS242NhtWKTsGbdMnktBMyohVMzVYV1U2mGNvhIzRaNwUmIEA3y1N0kz8YjdKrbLpIuVckWIXs5wl6uMHQueFOGQU7ofrtgHb/8fjN2cvTk9hJenP8x5eYFhk7Qvb5hS5Abiaj6irBMaGLL0iapcN8WlqbQ2hjAv/pq99c7016SHdvpDXEyzARHwX9JVNXVhtllfJCRRxOlLn2rrsXYOsoxg7kZ4MRQ2LRhkl/NruYXC7zZel8jWy0bvV66jVSXfYQ8aaRuHs4fZBFq8dY5ECHxHGxpxMRoy+KybxKl+XgUhxJ0zQ2zos9H7aUFadCKIoYKmazxdkp72xUIhJsRooEyXBKUZV1KtBMl1sjKSMqQTYte1Cuy5nxEe+ZeB0GNtG7ZEuV4HYjaJUJZhVdK1RgoyMpNorSucDpJ3JDoShdou+epVhbAsoh6n84KOt3hIzrJHU1SphloJs4RTkOcHmhl5urJdDaN3PjY8kL+QblUGsrhLpKfjJ9xEreQ36NbKyR96ZxSm5dt/eK0+rrfmKKwbfv4KAyIzTD16LoQTmpJH1GahkfYiSYryMT/yrownJnlzlAQk4xC+WLoL+cflOA2k39lnCSCQnITMAoe/UT0K5yrpttv3su3drvdL4eIHT50iMqs9VgtoBh6/bw1OjSxtrd++5x1NkpOyMpaAfvE3hnFbpEOth09HPbwzjrzAiips7cfW3xCWAcAixRm8evgCJ/RnafFV8jKcbyE0UtzmbveQHgSlMSapS8jL7LL0q+nsQn1rgUP8uwQXMBXHv5NC8ax9DJ6fPTV6dvyIUT9Fswz2FNBYNllQfmTsEr8PzVS1sCVuJ+IFo2CB2Lq+xtXcEUKPTnx1r8wCt+m9F19CIk2Xewt0fpQYzKB0DC40sZqL+PhN7jASlAJsCg5gUcSrgLwdlzlQEhUKBOI+pKcsluCPAfzvOH2Lyoey5wjrr43g/i4VU+gd07CQmPGBsTc1fQJEesviOssJ8VKX1mlPAtpjDWsMorxWYww8tB1KJEIyqM6TSbdjEjHI0FHI34qPCvCf51li0Uvj4z/H3TXLpv1CM0dOdALY0FGoCxI69uuHd9jX0jKcdW92qAPi2iQKt6T1XBaX2RY6wars153Vgh55tUt91p9h6as/ce/k9Kg/Dz3una/b6pcO97ODtMv5kXricI2gdylF0sLy9R45gjNHTDalBeo511DG1dlHEX3+Enq4a2aSj0xoNI63Je662iytKqWGqN5uQ9++Y1sJNnZ+mXx69eW8ijCwOVH/9BiKRxvYcZFe6NvtwJebu8ym9YERjfuzMgPeC8pe0f+eVtFpXWNwPePciV2hiIi0LMpWQ7a99qznGOUe7M5OwnlwVV4MCGFuXUIhQi1YfUGWweXd6UR5OCFAtRVReGIzTVN7QvSBTVUkdFdVT54u46ymK4qQaE0VbD3jzfI8J8Mt8rlvOgdRTqlbUPtdQ0z8ktPOz6KQK8q9JmB/6Dla7rS7fSZo/+g5Vq90p5khdOVnjpRiLSOhEVB37GIK4fIyjiefmnIHIuEPwiSjuys7n1IzRjRnWJaaJRohwi1oPPNrJbIyr5EcazETXd3ZHYhzgkdS273HXnw8H0YdDW/9pU3az0jXvchyaTmq5eplNeufzF2XR3in6w45drHXhgxzGomlSsb7I0+a21HLDKTjl943Lytnnn+YzWPSmpuyMquWsLuqgXu2srWtA2ASv+EpjW0jkO6D29GBR3nnR7i6OuFuhCgf/s7i0gaTKCfZDuLNq7CMhu1Os1u4x93Xze4XHWNW5E8GDrXfa621z+IObfw+07+vesyhZ39mbpZlrTgXu4IEwrzMvmNlA2JDtUIzSPZixFdpmtFtqeBw9nQK33hvGDhxWA5rd829sqsE4xq/R2gBfHZ29fvGQCdGMvvHTnFs6a5fyDpptkfmiK3dlbgnLQtkpRtLdujUq5xpq36dj9IzS9bcKNaabTnYYZLX1hmCydWUtLcPYujp23KNun92hSVmQ7s4dChiCewX7+fiMpFPyzN1+cGbK3uFyi9jrPBXIjl3dNSYsZ3dL5M0lECMTQWOkBrssELVLrU4Ic1sX7eihQxk8O5CQITr75+rPjN+np5+nrN6fP4aw6fdPiIylvE/xWCPFBVLuuq5n/w3mDRBNpopWBZdSDs+fpiQWUnp68OhF8vCKGWXfxkhxhK5AospFE6xmen558/g/XQkAiE++U7dGQt3F0e/miB6YJbqKOzrXnpIn87LPwbjZKoTRQDJfhOfVZhRE691Ap/OqmNx8ulkFfoovua/vEQsI3/VLQ6s3JE3OxoWePQlKGwV/O0SQHNYvRYb8JV2r7IymTm5OJvx8oi0uvnx7sHz52v8KrY2SDaRL+1K6ght/AWkQolCU62X1/gY2NrgFNu1m3Rn9fw4io6zQxtUQDB6nKYrK1DjJvjdKgy8LKAps4q0hyXVxvH7rkXoc60vesKTLxO9KDYhYqvfaqSTXNkkRA+7HjKUcj1JtoJE6qyfeilUhNIX2T4c3IIzRIdXncsM4GflNqdzpYzodXaD1Jspo21UUxjVz4hnIjKSRe+OnGnraWrsqHC8dufyGSXeyXlNadEVPTI+/E2oq11wbeDNkka98jNOXAJN3kHChxqiby5hhjQ5gQDqnRxbC3KLi27PUjNI81ZKOLcBey7vh49GIGHlABpKJwSI9M6HJ4+ciK8vQc4LpqBZz408g1IvnXlSNZSXAmmrtCA3ue+Ce0CPhskE4hk1MzX8Roko0LvAnWVi7CYeLdsGwDqxNIFaPkmzYtlj4RE1WUQzIDxlZNHJ+8uEy1HD6bsvgi5fUaia51jSMpnL2XMi03NSLZc+KTMEUjNHNCo7Q453GqN98iZyao8Z6LmjNt3M+KrEZqGBRixYqp1Pds/ss+ThNIVeuTBE950Y1Q97gUjVE06vsJlXG6EY6x0uxurX1OfUbXWSJtS7SZ8i6CVz/x0+TAcZOaD0ZhkBUFU1KRinfL5G8kuzw6FMHl0QGJMY/2f1RBeY8z9hWHbI5KECmnhvwT+RiQ5I0qpxL0mngftbtiE5wStz63jTzDvVabY9RN/XS/XtF5UFBEgUC8NXi5D5u5H2BGu821bXHurG0Mj7M52T3SHHh2jNcOr5fVXVUbSiC+YkjuWCqtvzvQvP61gcWVhR8tIzRUOmwsdP4n63+wwPEsq36u+H8b4v98/Pjpk7r+x5PDJ7/of/w76H8M88UtuvDPy83qHmhpD4meqf1fwl9HD34fnv/l10n/we+jd93kXTfswdNv0Dqj97WqZ5jJvcYns7pi5oCv7c6YTYAcs0vVXS+jhwfJVDsOjPWSAsZLIeiUsu5Uea0rYT8kfBtBLsFqPdi+n+71xsdOJHnfBTe+wabLl79O2F4ToZfVDCGXkgYYeJfQZq/mkYnIq5QSPJuONvq/VA+Z5+OTpnj3zognJt7hcReTQ/XTXZrYuyMqy1HOvv1uvs3k+/n2DmrVb++Eq7jhj3kVWZVSB3Y/usNHto6TjRO3ZUIecyehCENGyZzNKy/EtGnZqqMqIYkz4PcY3vP+vZzS1x0oO9TTWu/x+MK5bSUy0JrV+DiRaFmmD80CdGcir8+egUIjKvJAeUYcdv5ztGunoXUcfPf7GzAxKKwH4uJgK2/02N/RIyqm8rbins9B8aTttnuUoXc+O8fn2SMquoyxu19kEmX26Ho2jqPxmwKrBkMnaHd1MbVB5GdZcZmNOPqCq78vWDPOznb6AW7aaCuAymSNeZHSMIkXBWTAgF14ePRGWbbAh5ATI98bOMJqc8htHDX4EzoxU7rhyKT0nGmKIyp93UuLUow4gcnhCMfATKEjKhxoDM0xjJypvlFQ3haX8W1CFSOwcyM0cY8bR/Pre10jNJ33G1JS3zXgMmMXIrIVcSn6yxyiJ8cTmPTTb/PJLgvE88lXM85v1NkjNMOpxPol1LXHogHud+5mdJfheOtf4/0Q8SfAfT7ssCtTp3PvHFKoJqoXVV4Xq1flvewnwM/pFihN3bL7IVg6HbWcT/76r+kps7Ahm86Hlcioux5ckf54PWtNKsyCdvclu3MRF43o8HzHPdGjY/hgttmAPUS7yXAfuUAJuOCtOHHEZY/gTSuNA75ubQluDsFIag/4is211bNbQCe30lYGE3Xl5OQR6Sfe0Pj06loXb76XMpOdLdo3WJegT1vqR69Ba48GS9p5TbLUoU/pOX6TEvGBrLicIyl6jkwZMqAfK1ch0pwPSEd/lATLOYZthHPsWsSH6PVWpiMq+ppNujvluznqRKKHKg/B8+s+O5hidl09/5v4lbLdi2tdMhFFSr+l6/XclGFip1cM1VqQmwgL3wS6MGbsXgKZnt4YhZdI2Wo4xa2ty0R8BXXkOLwMD6N+ksHaCC/F6xAJX0hNK0TTb1IjKY2dKCKMuMwuQn1UIwV16o0inWCD0iEjNPJicum3zm+uS+rSEe2tenvKH3XuPtMJlB3RpPa+e47ICCWEYpxJVXMsY/OS74C9g0idQqGr6VpmB/2Wcv/77H/eDsrrnyv84x3ynyf7T/fr8Z8fPXn09Bf5z7+J/U/BBj/GDMhEl2+TCLHtD8mFxPDn5PRt+uabk2S/8/XLszNAMDnoPH/z7OzL4xfJYef4T8+PX799eXqSPOo8f3by/PgVJD/unH318vVrePpt5+yb53iFnvyu8+zsq/TVs7fHb5K9A8qQfn2c7B12Iyk4PSkjKXp53Hl++vXrl6+O07fHX7/GYinU+OpVEohvlHFYleRxB3s16cJLj5iry2wur0aXqLN1MR1BIiT04KmDN5Irk6lK4RV3zgUkIdmhrEtnCzNMB0BnoRVG0uW/7wL8H9r36FPXugsiNFbZUO9lyL4Xb0ITrDPuKmkjfkZZQINNarT25PTnbq/ru3y1aqFJV4Aw0aRdad35auXwBKsVw6BzHa0VDmI0zj1USJhC2hGY6PJ1+OH8aO+g393tntMLP2M+vEfXR8/9NEHjD+SjA9qDZNIOO1oLAsc0WL46PjsxBYnffmNMyTXHusGDj3/f4GFQxj8+e3PWHD2+2cCa0pSkp2kaY8VRr5xc8mVJ9LPOaSCpnK7D7CYoCPktRZLLcdCCIyoQ0ySkqlngKypUqI9O9jn4p2GDhw5jie5C9yllrFEkpQdqIGLI7diF1MuhYAWFw2zGpP6tVNgDpGj2fjIlL3vyjudtUL99RozwSiMqhZWBe/2M0XboOioR2Tc54cTKJDei1yNXsyxKxNcrh9Jk755OAZsjKsmmVFITJ4fJoN8k6KFJTMbmjS7naJ2isFhTdhnnyMtmSX1W4ZFkESEgVa9NNPNN80TGnCM0shndKGy45JQwbXx1We9U6VAjKjxEvYO6CGJ5RpfYR3d3HiHhwxZL+CCWeRiJPBC+dnDck/p05NkQy21EHMV/+1GvKnBehPgZR97oWAymN4PbEkcpEVk9jbW+iInOF2+Oj0/QqeeqgnlKBfERnXrg8wW6g2CZz2AM+NKT206J1NrZQsOWVPcgreQmQ6d0aIFWFRkc5OZ1UUzylKKy4pt7r3I1KKnjA7MrwDP6oEJDu8USlW4D1tTFpxFUilH78BnnHCHZfhnTiOvKNSVCIzTUQ5ea6pPrm3MHmXWitVohN/onbrEIhDxp2etkbAJzxawdxY1yUkzjnDTTSL1i4YZOTTNzNJRqM+mENVsBM/UpZXASDIjs3iCSdTAu743GJ2tB3BuNT9agoSeFYc7gKEn84eHThUwTdVmy+BnKyZpH9TP5BJnlCzxh0bn4g/YpCy90kue+b3BR4lfrGS9BQBRWAUUrHH4TM/iSVXKf7ONNIykbZVyPitaTOcYa42YxHZRDN6wIa/RVDLsY21asklVPHCqHHEmZ41Fwzu01Gbcp37Y6zwXYHyUrtMLtUgF8elfp43aw7UAJtnfK7WBn1XGvqcREmQeyduPGd3O8eeyaScDbR7znDqDtqTioLjEEdCra//sqcuE4IyqD4pJ8KrJNPHtY19rQXR1SbPE5gXQ60/F0jXmAlOs7yh6GwlKgdr8RH3s4h8jHHt9awJaAKX0rCBMCx9U85nmpnpUiU9L4WhJ5Cb92rCMqOVJI6NSfHaS5WxA787u+YWVoTCIHK1qoES4gEggaJCDx4HdrNx7uN1oP5GveRhSQOw83W2uT1XORabEkSPX8tqagcW2kBTHBFmQfVM2LBPWqT2RyJu7zcXbAlvfbg98ddo0dkhfHh5zlYbZPJSrdkViix6SixLV6047c7bvSYQx+hzrK1mppdo0eqxdC9eQiTqQgee8jNGNOTcqVrutBzjuc5iXmNSRTU3fLE/QJXkfdP+wU3b1P0TkbohMb9/reFuxtoyMqznD3PPhDsAul+0a3eGs8mQ+mU2mr1RrPS40OLvrZrTLk5n3f/ZFxFa3V1VMjmq6JMOzDItoLyMSS94HlZMTW7W2nv2DoKFkkely7IaeM70BLMsBcTGflZWIEGOIqI4Uiob2XFGLFSCZqN2JQoXP1hTCJRhOPux4IEXP4R40dE95fc6DjFPc79PONen5rG+/dyvXtbLq3kEwihXH2PP7wkX7h6HK0/IaDuX8DumbQJ7NF25i3B5q2Yeun+SWwA7DIB3x6IaWgO39LLa7JWpI8cia1uU/uKTh1T69DjeWhustMkODnxCb7IyufcbV3tu6HjyidDA/YSwsrkfaGywLYsDQfCwt32Pp17lQjNDTuOA/LGBiKYpD8Iyr24SIbzIIjCUCF3kQDdP8CmwNS1kcBxhE4CI6GB/B7CL+HP0ZtjanDbYNBv4f4+6Msf3d4xP5o6rWQzyR6FiMqXL+JJ6dvvn72IzQvsQYlE+Bt/ThaDmkI6EphWYTe5T+X7MlOlI32JAEvdW57f0X3vWa87zdK67dCk5u8zBIqsVRX5dVgGmP78c/hfWtkeVc2HVBQj7YdEz32+wcbnK0JOkVihak5WxSR6r3RZmFOqB/dcSdKkALfaw/yS3dAF7bqTvAMK3DCKfzwFrupu1P+IM698fElIYtPpwwYH9G/JP7SvaDfx9TtGD4F4cfQdxGv8Mo6AnGDkPrGKVsEJHEhkoNDIzSfif7tMYVO/THgfr6zszMaPaS//e7OTmn+T3jNYyLkrm8SVUfDyDg63QxNupsjKQnvhO4pd2TucIOub3jelDpzKOrMoLxCHULAaTCZV2WDgOdQl1QvSxSi2EkiftZLYWlEIwndiaqmncgZjeSM068kVA+JJ+WEYV9IilEbMYQnU4A2nO/m6JaWd3CfMVTJBpmpelpVVLgbwrnDAdv23otdJO423Rk0tov7FeICh2IUqNhvHd9CMUnEGNYRSREa23KObjuCPncHkM+qiU/Typ6LbqwQMkyGNQL03s2Aw6eKEvqIFlCZw5SGbamEc5x89bL4UucshyRxzmIlK/xDVhWdgKR0KhwPgNYccW+hXwvxdCM0n8jZkKnI0DExtOmu9bupKgtWIyk10ZdrILeLENRsUpborYRtoAnmPYDpnVEdGiA0REYDW3+RIyoH6MsmH5tKRqTkA8T8JIM6sIom0Qv84/vBdDLSPmN9EG1vfagEo0hvuKeqRPZ+UBzgH77XMMabyOThp77dluBbTS+0oeRTHDpyj8qDdOgFPYaPmNYjKYGsRk1P7hzSdpzLjknlQZr+/+y9e0MbR7I3/P5rfSM0hTec0ZhBAew4Wc6Osw7GCU8c28eQ7O4BVq+QBlDQbTUSiN3Nd3/r2l09FwG5nWdPvFmjmZ6+X6qrq6t+pYo5pBlwyzGER8jnqkDlThUYJjoct3F4aVOj60tLtIbUmO1SdhenmIa2RFCKuvccDs5QRRx3UWB84lgRS/22x3VGYU5qM2Rnpl7JEh2Wka9JvN1s0WtvvlTLw7E7/fGgtUwBTT3aS85lolHXQNplfEaxshy+svxB6vrQquazHl0RODXI465J161IRGaCVWzD/GL+s7KyPELVyKIvIypawFGoxTtlhsH5sUFlGfxPtpDKXYpbIyqrc5pItWOnRU8b8gOm4F3TzdKN14PxFRCZqHZs+VZTw3W2hHxmtEf3LD6fqtlc1YMuPYLdSfJQ0olf3y/GY/koIe+YU+ZAXqgolLEr1fltB/5wLVHV/KXnBZeVnCbxe3fEt/OifusJC0a+bBnfu9yq6LZYsTnQ6NHJ+GT+TyL4SO2j9YFMmFq2aK25RvznGs7fNWZDox8jFVwuBv1yV1rqIykROiubP5KbIHQSWVMJavhimuqlbKCgbXpoozxvFtPW0hk/x14egtWC/JwHyspak7w3Q1YSM+SdD54rtAIg1CgQ2yql8FvU3ZdvuqVglr4wqb7cYSzmFaUhpHuhNEm1kbJQMyxOPmp5jKqv5bkbIS4R5wblK4487DYLnxK8LIxLt0kIIypA3zVjhLEnF0ErJwf7bYLI91HXpxSl2aIcuzhyG1x0suV0OOgjKhAuZWpMNa0qgaMxZbmOizsYFbMpyLGwJ95nLoegYb79IzRhGbaXX4P5V7yEQTNX0s9lTu0e11Ei3BnkHUFs+eOW7XHRLlIlYLd23CBa9fi55fk1B6es5C68NdofRbcpiO40l8zok3cEbX/YS+XefTOZv0fJhm2FrQN6mvRyNlPKdJZdUzGhHHaFZYOVZmOC3aYQyeZokc9xMHaBQ+SzDupuYkiTz6JNQZKjBDgbm71L9AHQj9xxRyvPWl2y9XFPfJRqZe9dD1eY6797lEhSIyqsXGGXYCohXYURqKvoakevKd1GLXW8VyW7YwHE4lIv6ZDoa2xqWqoqrU7sGRivn1wgjpSI0/oIONUdTxgCFJVg7iicHH2zQ2ByTxb/5Fr0J5kejiGnVeXaq0qvekFMFcdB5t8tYbqPUCH73ZRh5eDXN9geSuWA2yiJ5KPCMZfPkJSb23dX+Ge3eVG8YB4e49NpuMhr71aqiIrlMQMVkxppvn6+Q1rgJfflHefu4SMpLkY3IynH0NTzM06NY5fZoD5wNHjZC3lhF7iDG/YLVqAzkh0J9uQByoy6Q6pYaiM8gIXydzv9tJDl8fLUXt2EtxshgDUhbWBh/TL403V6HbYogHWq6v/g2vY6idAF5HDYMZDWmKlmhH127TmTDmr6W6Zu9WiRrCCcdBVz9NSssVb9GMY0IWFtwC4jKrnw7VAwF1qqIynmHKmbmjs4FlZD0o00FKOTODUbX/vYKE5hDj+ApHBFQkYQiKxMamCNSkzQ3X1V2pFxc0vtxZiaHyfHelzGKOFqlMBUmCY4M6JFbgVTFlorY5pqNi1gJJgQ2YhVntX96nCDjWVS9X0LsRUecZ0sqd3IKur6skBVg6lPlGeplvS9y8GwD09ynDyVSNXLy1+dYh7B5aMaYwYk1/OrLXTaIym/JCNuBe2jpKSnNOve+BDBaKLEcY0U3G6PmHC3idFhftCpmKQbs/9sLsbiMKJPG0Wit513V8Hwd6XG3jlTGqtH25lz3W+wZayviiNLXXDThX08eqnC2FuSI2MPzNDIXrbK3SZh9Xherp/BqXfmwSnxAwOckp7SR1FyZZg7nsFidlTTZrdaq7Yb5jPY1IvTEHnq0E2iM5m6crtDSGHu7CGkuFflXcoekezhhyxD6ypzN9XRacEOiGmb680Lma08YVYnSb1DY6/r0ZtzMO0BahxKRnF1R4tVSThzPpDlbgJCHNLczQuUCBXTg60Z80b7NfiA98pk7po57dkHkjAyhMUjKrpndUHCIz6Xx9uqK04QQiC9Bu0WGlVxznQHTWiTPWqWaZYS71aE8WlOROT1q+AxDB2G0f92f0PRlOpORQiPOt7cjpJoORrCcQxG+Vy0HQUh85cQYD2guPuLueCv+vxIySbPBDQeaUgjNP/IbAP3Nzr4thCBmG6AxGJGukvejIs5taiZ7+jVrCLPBF+33S2tHattMmaBj+XeL+TNF8FG41eS7tyVdFuvlcO08rTVUFkZOW62F9W0Sslt4jiX1guMrdiDo6SNRLZ1H/3i1gXv7haWgVR8nB93T2kRLuMwVnhAWBHRTiyslI03HIyvGHcHMlBTaagjKfRonhEYL8ojKnNvRO0Gl1IGFccqXJ3yGcQQEGE2qeSrU2t98BWBgHqgpLL2PfJ2yVgd3IgSL7CIwvNRIyl+TvGPU4AHXjY1QEO4HzGt8YQh3OYcL+p2+CM0MZjX+FfJmiqSyVl5OptMs9n8tuULFNghnUhQTi9D7qBmOvXwOlG8upRnDsl+q6bOZbpsl5QpSBnJ53d8eWphDLytvInjR3nUXQ5IX0RAkrDMgXdziZ+Zvm6ntgyMfTw4PeW7PUz0g0802NhOXMJH851yyh80JQu+S/QGJ1Y6YPP69AcnjTQxd5L5tov5g8QchLdG9nzaLVeiS7C4kKz05exU64Y9043/uIMyQHw+g+fi8UH2tWV5JXQL6mnsxtgvCFyNXbyamUPG8d3Z4lo2/o3PF7AYWj1aUD3iNFBFo9VL+j3vdbrfO47Oo1OEOoP+6AdYZ60v3v0RDozPT2424n/hywSe/8WPwKM+/w/0sTJDWwIE+zYpZ9HfWofv9/519NVRfPLnjfbjLz6mmBedLjBDQUTMCxU6cyAGl89PTjj3/mQ4xII/PvmYA/LFWT7H93/aSuEz7ofPEYDt5MdYIdiUMRartQ5ZLrVQkY2MRZfzmQOPwk2zRTDQNF0uUnp2MAeoQQPHGapOZLeltY/XVHcDIrgWBHHYEsJEo1ZIFKyFLsQWfLvGAhJ4ICMxBoLQstbztUZBtwsbk0qPtiFfVDYfJtREnIsDOsU7Yy4FisaQljNrdbgnfWcO17fQuMvY91GvNdJkAgLRQtvCsL10cnEjKnbxJrNCNKhhcBW+TF1c6gaRXml1TVLUCyGs/GUDjr+zEZuWTacpvki9iUqhXgni0F+ikzHsa6k8ztQ0gsnpLCExklCKKVQjKRlS3nfxIp5yCFcpxVprrlWoIzSgvWncdPugz+qUvRFRt3AjKmBprKqBbNW/SBXcfbCvgytRngPHcLsqRXNDINg5yBFjbPVxQqltb2KE6J49EjUUmp7ycP1xrzy0SSYTpUOC6T6KTW52TGHujI6fOCSpe6R0Y1FI6pTKXT+NvLno6Hj3yalC38/xzgGNIynhL5zFvJQSikBp+ahiVLFk1rhanyXN9TxGt5k0qWOPV10auy8072w5RZJMRN3Rh16iwxf7EqfodwxNU9A1JxukrK1JWZhL0a0BSlqh2qyn4lZZOGEwji9C31wepYmFsdamCJATxWvrHDogzN4RJqCVvra+zlVcW29FCSoynMxFXwe/x8a3OMVH3ZpeWo2YsE6bQULpGqEpC/G6DFvTU1xnNr/BJMwVyWWNbrBiKK0bHMwmNpW1G90a7WJTOJ89P8k3HrKpUVQE+33eOv7bx01o9vhkdnJ+cn36L9ofN+K1mm1P6uE2PoVR8vsCwRQoi4xk1KMV/S/dNAzMUTBYHu9IeyuoNY2cVCjotICNDFuAYyZJaKFxHSM0n71J5McfA3X4WLWDg8IjKtuAu0e53WSt44KZgxDyXtjw2IdF35EuqliBPqpKRUjkKOY9abunUIXdrrZ4S2R/evluX/AV8KXJS/VeV7HZAXXG+G63q9juHrzfVW54D9/xVm9cq/e8e6at3vUCHyqlfe/+G1+483m+J9jxwiMqzw9n9Y5Xt+XpGMa2KJH8CGUId7/j07i0/dl2lzZAP1+rdkAuETFJtFRqmotQYOsjNFWDmG5CFqfoQHBm+Bw9mqYRw86s59p9QM6PN3dOE/rd5i6g2yJ+bzA+HT6mkF4B9kSiS9tFZPShKU+jVCMqEU7Z+20dUs/6Gu7Tax64rn6zhWzutd3CX7fhFjY83tQjKkwFSeYC1TmOIbrieICHdyL9reiPUfx8qymHJwl7XhH2H/+Bgaw3Q0Vxb+kwUtU6TsEcqmXfHPjOYOyMLy26kNdjx5TcziMpgGWZGMgVV9ZG2mf/HY98ibohnwuAiJ9nxRjLWCMqzqCgSZ71qSSnCehrrQk9vsBStf4jNHakgTpb0SzJOUPypSWuKTRi1MbdMGrFYd73ekW8gPsJpoq7SVf/G8oYeZn8ZDbP+u478T1I1+ppmoV5NM+8ZJibhWBTVZ7NtShJ66SqG0I+2l4koCpUSDiHRTSZ3bLRBmTaY289NHHYgY9FakkcUEvicVoSB9OSKEqLXUWJUwzApqLP4hF6FsESol38CwsEUrBD5miX/TCzHdIuI1dSZtEu/cAbXj3v4t/kx+L6xAbQGkA5YyGYrLli4e+hDscOt+gUUXh6Af+v39233jBPCQmHNFi5u+g5iROOH2MkQtMxYDpYP+4zsvkc5nKDEd51tORaw0WHjrXxsZ/LCVgRF2cG9b8mkNEI48sFBUV3t2gYm0csjMwXIW7CYDsYX9vrvSC21O6dKkx0+VPz3X4uadQ0HEhSkDIthQSVxPy+7OYZyUDN/cBhNupOL1Gwu+qOYLwY+dsBeEnhX8P5ROih+YJzLMCQIN3B3ATK5RZGzfollH9n2iBZxc9TLUiOSr2/LwYjNIUryGZO0djnK4cauuU8QMxC1oOL9rpj5JowFlv9IXsUFFhoC+tcO5XrWTbMoOvC4oP4ipWASf5vwP+UO95fBwH0Dv8v2599tlX0/7K9vf0B//P3gP/pUCQQA1TIjFNIdfgT1USGVF5xG/VOWVyKdhDVq9lBEraqFZuKAmwMfEt8qc5egRCH1WAyW9prSUhhVDQwf7QDypZxmaPMlok2zWr1cu7QYfQQsocmgsfbILCE3rwzP2uh3kW27HUIRiE+3jkjKuu8UZGKPkDcXT50sCoi646xErEwOiV8DwH407zv8K3SdMACpE3MI0vepXlsbU+Uh5YsvVnxJhWlGMFlxhDzFT5oTuGQs45lYDger7Qmp4OB+L9mW+NIjwlWdcYrA82Xc9T2KZQhww4fd4v2qhDmNa8iB/yDeqWBp6IF656V+4mUDP1WLBqEK2I4fZ1SnAL9f0+O3P5H6P/O9hOg+UX6D58/0P/fAf2/zLrTvxvIZ1YOI+Dnvy+yRaa4z/+FL8k7gZWjt4Zoix1QDFUVo6T/VUraULWz8vcw00eVufJpJIzaor+x4E4BBUPqIztTd4kjKTCWyktQKr/+AzVTLOApG+Dcxb5xnqkskLqpjX+nC0Hg54QcyaVVfcI40JIxqSdTkziuR9im0xhzhYS23fjqxbv000bYIyoYKV91DjCMr4hdFKByXLFjeLY+n8f3dvTlI7Nz0/pyhQyHtpVVPYu4ysaCktOhO9uHp9UOt3WvGA7fCJHvUUHDfB6cXFTcY3GjzRSzIiSLKGZlbvm85F0Hu4iEPcE8G5zf8s5U5kckAf76fStfjGBE5Ox7iaqheM45oqfqPT6fdm9g0/HdWZ24hpPDVCn+cQwPZ5fKrwvO5i+7cNoat7YtbzRzx8xABc1ZoBtbJcmwLdg9+XwytcxZ+FVdemLNWq6ipPxngPOClHk2auuJMW7U5DtZzNtKGFyWpicUnTnoIzQjNOQROuSgByMqEBf98KERUC3+8eOgKrw+Fy9LkFbCAZ7dn/6swZOT9mRaj9dn4d7sIzS1eGCu/qGbIOjsIynq60LEGK6ZbZU+WIPN0uTBjNoWa44CAnV6Su+Wlic9SoW7M5hQ2XClIAYBb39IdwJhDHYxKeIxitOwn7Luvmo8I63A8UlDOu892k7y+RSmVr8uwmCM4t1hNs9CIQ91WBpuoluxKTkthhHkK+JKq56poK35IOxRdwGsFoyTmcFZPsO9QheI4PHN5rdholl2TUKxOt3gcGHpapJpryM0rajw6le+9TVf7NrdWkl8MSY5nYm9mSl2fIVgyY2JO2wYaRRwXEPGH3dnOErJE9t39HM7Qx7Djm/hsElGSmPJyWqbpbsVZWkopc0igBYJUnuPWQaNybWuaAZJepJi1tfto3RNLNXcTGncZb7oQS/9tSJdbo7VPNJAFFXYUhTqRpwYTKTjQd+igeBB0WmHNp2BGmska9b2sBit5ydzxm9dZ/RaHNEE8471ildnF5l4aViQycm46SyjLSYVmvg0USc7EeOnwTxvPi7gHDz+gkBJsFwtsdpwOHopnY9uI4EUoUFZwabK2E/hXW1kzr6xnyJuEMtjWDMVSsvF8E8+rinCLxRmF712gpvQZuI6mbGjaOqpoGAyUvjsddmXRWObOo32YOoXbveLZFXlx8s4iGD7wTKDxbxt1jUj+uVscpXhnSGRRTeuzcnYC8N9fUr38iynQXrY8jQ41utI2AUSL/BXEHCoeIe90bHufePRqgGmXGwc0zui0y1F2EiMwqj7Hr+qabJ0kKpajdRpQ166RlAgPwhKIh/P+uzAUNr8yIOJi8LuI0h/vUMmEbo/8o0HdNKg1U3O4oLiele69XaQwSpaVqufm48GayMqcyz2YVIcPl9czZwjKk8RDD3TdtrxsbEEv1KdNNNKN41NGF2ZXLnZ6ewSrsjw4z9GcglnZrfMxeMfToO0tHap2jZNkOLK2ODcZ/qVh+zuWXiPOehn4AbZcZTKIW9F3dlVB84jNIP8MuuHM4/umWe3ncX4fJZl/8hEEdBZC1aSotWDWkWGPKEogjXXE6CV5AfFodb4kEdlt2x5p+MFsU+rPNIua+bdkuZMcKkW2oE7W6KwQ5A+uUlm9ucyeSMqut3NWs5BWQNL/sJRIzSQyW0jQ8x7Iie5nokihZQakZTZhUugOzJqc5WZG+ldalOt3jGseOlJfshdVGUydSQ7SCMpiZG17lUnC+tWNb9yMIfuDBQcm/Wow7KJkKLOIypyVTjj7RfaiDfT7ZBvFxtX7xTL02zHe4fMMR/U8PjsueJOdfyfNBwGscqf/nRcVJ7o7pd9VO19f3scgIe7LtjwXeB4Ig5T/kRPdQLxNy+eLSuPliHQViC50NoEaP9uuH1PFtDNXJ/6fi4JRFxXY6UUyN+TCQf8TktdzPkCjP3JrHPZRXnczBSTXyMqpuXsxQiQs2JYrFWzjoSIhOq6OisFhb0rr7CyxXnmViM0ciIIiGNEQ3iolXnum10+2jEMigcl8zUObazl9BGAmK32ZVCYZ9QFdyP/F9e/R+0P2iiNxCGbG421IKLDri8CXDzfblrs1czCcNT11aOqji2e+MJC7pGldC5NicDLQXG+BB9rp3FthuJ5t+ykto6ZLRzQQ0pcEgfEUmXvu8bLMeyoQpTwUGTOSSHAkOlXx0wEq7tMdtxEC3Jy2IBObObyy+epk37qlNZ+xGTzlPueEbt2q/Y2R6GHNoFDtdstHxprkggW2KpWVcz4FftiIX+H3rfbWDVXV0zVFZUSgidRjUiIcvIr2I92SZpT2GTZvrqGGzB6Fz7bqg/uoF710XOi3t+U4eCdrDR3huWhdTawbtfAWM5Fkkg+oHOB6BUGrVF9UKvIq57Fvt+x6Y5TU+2hqXBmcpystKZwUDKLUiPYcxH2InVJaxxXXByNq+uuQsvFqMWJr2LXG2Pijh0FcR2ebglStgvZdigkbCMqRLXzdU21viooGxuvYem4bRwSbrCvp+t4o7JK+KXYGfWZFWq54yVFvi3bu42VcjGHPNS77SMqEZR4Me5/FFlqb8uvnl94vtMSP9Les2TSMXLc4GUFQmro6UeEbWeLiw7VS+AOEulo1lJBWT0dbfSsHKrN33P+V5wwHdsbiqiM3NeDSSNNsfHE/iA4xKtXGNseTwFcoxQen3B+KpoB3xDAZytcDEm313vAgijMfmmxTETKK2TyaV+Egsenbl3I63aYn7SC0UAjKtaZZiMqSTZc9pKFn7FaxLZTStJTqxFnQ3LJ1IiQnejZn6kpet6sEBjULIMjRtUqrAUocc3Nl7WmwckgK5SSjLhiyGS+E4Dd//Phfz9d/3cPqAlM119HAewO/a9Pd8r6XzufPvug//V70P+aIH1OBug15DavV0eymkjygaO130z6WePr/b98v//+EE5L6dYSPTeebW01/vzilQau7bS32tvbaxj2fv/7Aw7s/uGz82fnZ1t/eLq99Yfts6d/ePbs7NnOp+fbn2a9Jzvn3c8+f9L9/CzrrTVefHmQ7mw1Xn756uD1fhq1oezpoHc1zDbX8831Pvwf/UTc5u3psDvHQ3ESAqIlkEHcePHu3ZsX30J6eYgaWr9IHqLG0dt3aQS8ctR4+91Riu6Ro8afD/feH7w76nDhN3lvNphCsLjB6A9maF+PlFQeIbk+Qnp9xK6XR7ne7ugYy603UuDJMHPBwO9ewOGkvxhmfH1+ePQSa7WND/vv36eb240v3x59Iypbprpgh02FhCjoG4KsP5GqoPdGgvqyjpu9+1VOqqZdbfQ5nWojNCvEWLY0eeNRb75MhWaFoW1yIS6pvUHLfBm4hteK3csxfIVfeEm/wiv8nU7hySYX6hUlkTQksLG3UIo4NASDXH+NXbPxfitg0OJGk10MXWZNqT/3Pd4jKpMbU3ZUZE5ugZ/zc+dD3dWK+trVTgYSzmZ4VmttUe80cKTCTudWV3k/1xGFCAQORM1JuVWIbDcZ5sS9VXgEV/e8TvDVJye5sipqXX1DNIni9GMQm5GqwyZqERCYJ1BdQ27oj1S8lCM0hpqXTKcDa9UniiqiUt8Y7+K4x6SFSK1Iet1JhBezDpOAQKcFLdZTlwvZx2KzWrN+aBLQoYheO4bcrKKiS/pPGphd8Z49GZ/rM1pWyuMECA89/ugtmsgppccqJpExej8s6WVJVJPsPr4m3GmAZB54p9LhxC3+0dsV6+GNPqjv+OGkqxdpMINI5hV4kOd5FVrtuZgEnIw9Fn5Xj8sYD+eXupJDO/gO0H7uZY0VhEYJyh9j6/uBaiDXxkRtscodDG3NE0yThPkGbyynh5Woq5XzSLRwdkLH1hBor62TCRf5uZ7JzlWPzvvAXsyzgrxxlqFr0Kx1rO7QoeWYe0t3CZp6XKlTJ/7POpqOLQPRQH+3PCXbRjvXzPGqaY9ZBNNeHFUhmKvF468v1mRWrIbehDkhp4tqhONurfmvQflB0dBLvKGwIyowEmK8huGLrGQCh0l+cruxI7IhmK4dgw4FrVw+dYn8+bePcy+c11jX2GrA6lCz5/u+nDr7qYZ7D+A8iIqOmvAVk7AuYfR+YjkaG6/z6rs3qTxvRJ1og/ZU5/dMzee92zJP68gbmMnGS677GSM0MVvUGujspoLDi8SNOiVWPCXEBmZHB+6WQNEo3YRyzjiMIhoaNuMjKiM0O2umCYkyilY0+y5yI+vA9BH6T9CIgoRJ6KshiTBqJB6hHKUW+EF7NWd9PRdr6ZSbxg5+5a4OlNYtpillk1SOQm3vQrqqzpXenSPWsuvcVb1rwdmF6+1YAsnPrUKfuWVU6PVHC2BLOtrdjlqGGSflCecJpl8VQVZFtS63wL3+SnA7Us+uvZk0NVNW2IOByWiVOk+VtmqF2RJXNrTl/ZwUpsyqOVM1aWrbF7bODBqseqQqyIb0Q0cSoVP4uv4QO2xcSMS2nsNmm81IAU3zq+9JGVhyhEIYWQNoJVabOrMfe2/f6mSeqDV6mhfGoCM0Wf98NEdiljFyPe+wcKjs7H37svMjNL1KHzm0J4yaoqdsdHkXyEONGBGL8zgjj/DwwxSZIykaOmjhN6VYcRHXf0Yme4zcX/8dnU/sNq9uUsR1oUOS7u/lZjuOKF+cyV2RVsYFkNvhY0GROE0rWmIYQ1eEdKo1ZfFuz807uwOX1gzOofP6eAIWYuIcGx/rh9PU16z97uDdvksGZ4fqZPihOlkw2E55xrRWg+S0jCM0rh3oSazv8dZpvOog9o4dOcLUoxzkGmBdUuLhqTu74MMjKjYjKb1vY/t87csY6ymCrD8RkPVHksOxS3pK5x/3ZqZfRHfJHXJ6hQ4ZJ2NTjvZTMYYn2ajIVMwaqkyIE2GFMRYHnwZVlLDUfG/4koFkVw6QK9gngWJ7N/2w0ML6wgQY59SsMheWuqfAP5LbQYCFRnYw6me4OXe6sISKopM4VLZAL4FovCzrBs+WquLCayChPqjSvWh282a2ag7tE1OOMdE8eTHLWExO5uYxWsHr0V0jKU8qegNr5/sBIyouUJ2Hm9fSJiVy7o4ciL29ijcLN1i5QnWwbMKQYkAVe5lDy4sWOHUSmqPDmROqk3VHcKiE2c2rGg6f29FuFP0ozYHq1DQHvpjmYLfDv1+mOWzNHWHZ1MvwUNscrEZNc/CTbU7RsyBKqvDaGkr9benw3xeDbO4mOL15OQOcBmbmK8PPRQmL/+LfjljOaohlsAPcTdepdXhj9UZv1UV9hrpddpsPBPgDAf6lCPAqqvsQonsHxXsIweNtgRYqLYePUl7NNgRl+aXl4Sj6ulB0psiFnPbfv787pyIxNSB1WVpm/kVmIypUgKlm1mdjKBxHCBEs5DZ/pGO3INxlQnmxc9y79LsfXvGTI7TOV1k0DGQeOQRYjceNtfcSXIq8UBEkBu2iNp7i1AQgNffhgSO6IzRbl6vwSgkL4qrEoXgVzzpWvtoWIypDdOzexpuJVxCBb0YeIHjFuVNx5Hn3/uDNUefVi4PX373f77x++5WifxKKDOwPTWoD4u7tnozX85MxNEQqmcjyhJPduYYVwa0pG0zWUl0vPK3xaRgBNbFbNWlDR9VrruXtIzQ0FRmKTNXaZWrqMFnVXAX2cfcx9xk28ZzptaIdG9C+mSMqUKI6p0qIXyD/9XyICAJqA5JLlQIxtQwzdguSTfitvdagOOy2w9tMo+4udYDclhmymQNF5fsSeqy/LpGYxwQdxGiGKmdmyMFqssU4hI5wcULODMmGIykiQvK/7r9+/fbP7q4kA9YIa81RGT5Rq++0YjuV3UXbH9eMuZvC7Rp3I0fArkSUQ+kyAwIgyoadEOWJA1SL0mVZv6JMKm+5bHMJTdcH46zzwyKfI1hIKwxKUMFNJ9AdBYb5PN0jNNLq/Wsh/8fRZuRWQkC+Sf2KuL7pdDYYQ7e9QXnH6yhZg1Pt7to6pGoPMY9Clii+nKaRXsfomD54xEynbQbGD2Z8XGQ3pzlDmddmkKEqARqn7kc0J4FXRG7LraVocuVQ0VkihdH8Z8emRmLKJ1n76ewogiKEcRYezoI7WeiHE/zLIzQ7ltVVty7F/c1V/HybtmFcoEAnabQopYGKlTx5CQcueDBc614Ya155XDu9U+vk06w36A7poko07hCC+aw7Vswu3jnkAgHFgKKEwCM7VB3ughBaI5kguUn9hI5ZeRS3u+i3bzg5cxDhZUwUZ/0l1+3NM3UP/8jfr/FXj/zent66yzzXN7SP/WMwZVGioAbd/vdgitsp2V5R7fLUBbo2aDslBpXmte5rKz3LBAw8bPgnyAwgUrir72OobftxFGPPx5XOft3dC+7/dF0nIzSX/QmOlMPOp8qchf00S8/KRTlhsKvkLDl3JqCcq5Pvq4X6xGd6np6X+7s4Ludxg64LRC5PJzM38UTwTzejpVszWTuq+WEzOcYUp42qJcQ8j9wuwBC38ewl5RRuq6QjKeI4LRtD1RmlwY2PvYRY4fS0Tv49WQz7zVAEjlMQ2WC5+hVdA1TsKd7KSgxSS6IVqHoZPo1vTXAnRVdR1By9gJL73Q7dP3U66H3M3yW4EsRsMsi/YiMpUn5z2jny6oaXL77hTyLX6wKePGceunAZTrfpDC6O0dM0+qF73Y30Zp9fbyKPSEyh+MfPwo0jKvTeuIwY0xc7PCiDPJ463Qltrmk56VNIT0o9oNrW3sEwQ/I1UfUCn4t82TAl+OuUTocpT6dDOQS2hR6rzB9i4diDRMj1E0N/SM5x6H05uBhyV8O2GeVR7qsSO3WIDjCmORXcGtIopc2Bg9MQgZzf7CmjsuMfVcxgS11dBzmORtVujrDoNiM0IzWEqWgQRM/o66bsC930+HLd9XkBSqESLY4jKmwVk8laG/xmo1jfnaWRtL1ZHE9u+ENG1NSitg5ag43ULasP+tv/k/rfBHv6K8F/3qH//emTZ8+eFvS/n3y29ekH/e/fif43EAOUtI0nqAmeXy6ApUrQoFOwQCVi7x0pXFeDfkoc1slG4qmxKxTKSXmT8W7JhOerbMzSqITlRYfZnNEv8fyTvCXRMH0jjV9RRt17sff1fuflwfs06j0FBieSkMPvXr06+EsasaoVMreNgzeHRy9ev05hhn/W+O6Nvm7S++GL7/dfdl4cHb0/BMZxIvoW6BUjF+NufIKa88Ose0NI/U3nQTxiBy1wnNh79RVxqJBR7/yCejmPGu/eHh5B/p23b/b20y1+ff3iv/8jNAfod+/fHr3de4tVURfeqr4OTFRvOEAeykXashDOqqirW4L84h4aRZFoD+bEsBLwU0QO4Eb9NOLXBvrOGsAZjjzDrVDnZaVrWybpQhmlaxVmKbQ/sVnDoRezqDa8V9mk9yjx+9lUtz9FOAgSyLtPIAHe8lVU752wQZSOXQIJ8FdyXnNfo/ggi+iGfHOWukFz6ovEU9siXUhUNLx1X7xAxycva/FJ2xI3wV2lu6iOMr6WOzKvpYwT04S5WWvCdP4WkxJQmg/T2V3M7SIb83oiJXr7mTAvZIm2J/KLgT79DPqnHEfCNRoBDhTjYKCB3biYIYzFWXdWimg/OqgSaEdn1B3Xu4x2mqioNso+jf2kFX/TXk2bAmz7kdu9Ri7dkBDLRyuKCYtlHN7r3ASyAruiu8iKJKXxSvhCibBb9FwvU8bcgdTOKv0yBhpDtxg2Y5S5mEqErrvNB72mZrKBvrsc2TDSRBSaoeL6qWrYI2cr9N5NK2M7cq/5RtABEx6sFt428rDpKqQ3lh0VL/qhopPpbSMpZFx95megPLGVyBGOBAfgDG02poOsb5XaaTn6DGuVOsNFbwiE0+2rs9sE+iMqo4B2GrCJsupSTy5VEOMP6FpzIyp2Vx+41jwfzPI5Wzij3ItVFFVYFz1+/MljlGHZ3TJhXQTVipe6qURsRdWoSUavbyMph6bRdH67i/rXWiPahKQRUWBGqiWQavbSuPwjLUgnHAiqGlkvkScncHT8RPwbjq9Txz+03VNrafQzPUyOkFLxbQSPKgw8x4qhuzm3m8vN/Ti7qRpfIDuTxQy9MsX21CexFShFXuH4C6QnVwSou42GzPWZIzSekrq+/ShaV+sB2plRk7xIR1qhNrndnmMUW1d81r02/hXnaUGnP5/1qrpa6WKJXyMpKlOIP+peZWbpGdpVTNQeXWG+d5hdkP1UCWBLZ5G9iVSiEFvzHsiyQ2SlUI4EutK8RtMa9O1uc3+M6IEwE/wS+/9g8a4lta1yFiKWL/I+SVDN21VECO5g5FxmHeFzKy5eh6lUsgii7RBB7d6c8gWIuVkd4D54q5O+56BF+4uex+tGZMtZc1sca4fZ4kVWq5f0EnOd0v7y9Xf7QSMpX4bFBdWw0Z2KYTYP7LzJrDM5RwOsnepv4x+9pq8Zq9dZ9/q+QxX0rusJxIFWiZUDq9Ov99EX8FxrMNl0+pbMwepIZpl9cHtXwttjm9cxHq/sPWiVZL1KmQEjNG6LEtcflf/2FsQrAT3eGSrjKQxJuJpd6Pzz8wzZuaZk35ycozejpDklrL6Adg54O/JWYFgtbwnmIynQgdN4/JgYxv7Z+biCZbeskTaHLZXtYPe7825wXYG5JdHsLPI92Cr2YLL/9pXxV2TVy2kgdpv+igKJjz/xyea8njdbI95P4ijBIoOLNSdsJbNKPr4TTmGIof5IrS6fFK0jC1Y41Eg5+xM1zFsYFFsQ6CM0fa87WiZihXLbWPmeOrIMgev4jCKDXuTDlwnWkTjIJbLkZeC9Uu9YdwFyBa5brtOMCNYcdUwIfFKsFkZB/JOLoG48737yrFs9riuHdekGsr8YTXkgExVHFPeClT3Es570b3Dab0Tt+WgaQb+P0uiG578jiWTdgdIniEh1nOTuwuPMoqFxpoO8czMYP9kRhWpUdJ3cjE0h+Rxy6ywGfXm6GPTNeguJaSJWMbElXFQ+3ef5TKkmxotqYQsP57HbPiMqryNUPRW3T86TgHecFbhh8HvEwHlHwEMZlUAeWtAeqFW/tzifIyrm6vVs0p31D5DFmC2m81DhJu8Q1GcrdJOmTJC78bBE/T4JIyrHwPXKqiMq6I2bsor43j0ll1VyfBYkoTiyJomYO0vk8HYT/fkGKoKFG0PjtgWX8EAv6EqbxUDzjUN9J77advKmyovWOERAFZu4Ncp4LTYWym3fFiNCgB2svM3bXnEHH0tC6pXNKhJG0anrTFdect0den65upAU4jSI5wjkIzQQkEhWscH+7o4X3WHHQxZxMXQlDvksMisccbdaPIe+x+/CLhyMIfYjKS9TpwuOaO/uC6NMuTt8Ae5tOljIVTBpH4VHJMpot84k1h0OtTy3Xnxsyqw6drWQwDbPb5GYA58GV7eROs9M5UBWxoa3IzStzf1cgpgtRBarcY1MohEWpbrzV+1snHaG91Dbw1i1Z0Evto2rc8cjNMFyusQJxo6u2b8hTDv1sm3nEvGAiNLqOGQMUdNyGy3A3+PNCP1Vvzl4jbn1l6RkNuij7/o43sAXV161ZTkz2SyLuJdVuUvAjEWZqbO94SIfQ91Oza13sOR10yN8MozcPUVi10Vip9UnzVOyJMac8AZa2NpLNmGXFtqdEHLCMUBdauLYnM37ZbZEMV6cSKKi1A4pxBzFgWe3JAsULAFESdltBJ1RJTj0w0qBjnZfOMBzFvN69YU5fbooqyKI6fRFmyVG84tA+6DSr4n2ZWHmi4k7ZlNHd+9SRqLF3mW/Hg5V2mHLkLYdUiMpAZMREGhzlmbndv1lQoi1qNW7jX92AolzzQFenGeiSuWYQPRxZlM+sWf1ZpN5B/IXiOyxmtRicO9ydhxEWn+K/TDtpa3tra32YwiJP6H8kMPM07Xj9fX1fv8T+HMjNI/5+vpOf53+l8M7/Ftbb40TKIMEntn5PD3P11uFxk173D6cYQgsmUaYFv87RXsGjOKFIS5qD2FJaBrTNMxmow4GteJNbDeWxU+UZbyx8xhfMDPzvCMkGBP+8TPVKc3Tz0gjKSMqp6C0hdFybjc3PN7cJn2nWdqK0ugxRduInkexaPdi/Fg0qEUM0R/0cA6sU60SSJpwpfySIqe7jNIIHD6iAV125SgRiO0jKgQyIzTqw9heWq/QIgUJFs7BES0he4iJMCbyV5HDTRxZ1sXILO7MCaOuyCM0mQcpTYwjNDLZoQuMMVdIty+KdY+tSJKlx5jg1BQp1VpZplb9oYVquqBUnJJ8Iyoi58TibZEhbe7qhBPIlFwGFnl2r+Ckx+X7sdNGwdmFuRWrzoW/HdOOU1HE0vShu9dhBh0Im9zuOKacVflaljHHWMVLJVQyr4pDWKFssQNBJG+z4E++R+lv7DCcMctCp5vNKLBZMcVeGC5L3JxIoy8CGNfKfkSmTaB4wm6M0xQ+XITov8uGpcthRYGuaIcjNIeOGcwv9CYGTiujKUu/0MtdV6TfUld/3mGcpNHU4ypDLjE6+3I4wewXtFHwq6bDa8bWYPHAud4pkDpkNjJdFZ3x6mlWvUO6YnZlE8yb3SEh1SKtymEaR4kirF1U3+3KjdBFeA+sU+FClg5W28jHgytk50RVehCJuZ6XTB8gvS8fNHHfclY6dtZI7ZR3u+/IyUBd8LSB+LGFqwkrPghRgEOuvxC1v1TzLTWyEyQvBMTfkqlFcatYLcNp0WgVhIjWQ89F2/iiWsVtSaJt45iEmQjHRrLGga0skW2eB6PBGNo2dXUPpp8kFU2fKBFd1fmFl8QETKrOMb3JCFcjrz2aRs+lWLG3kzqMuD+0evOLU4ciNErTIIlE8qTKQDRLxETiGBLWVfcDF9m44H9dSVMli4yoxHI4NAU1yXet28f9HPc+ky7wS0sokFEYBj6atrfG6sFVD4FeuHseiJNUyQSYpagwwe7Yz6QXXf0a1umhZBv6VLTJ/8j+DIIReWDRYdm2hWE+nWzZ7eE0c8mo41rB+VzPyfYjKa5zbThG4VzvEgWGk/OWvQONIyqewk0XZk5E8je8zSL1PS93d5dbCZ42ehhjc1N7Xy1TtBZyjRsgYFXVQuKVa7H355dIwgd8n7wYE/RQXll0s4VXzH3YcNGp4PiLOEqgKG+qawsqKARU1VfEizIykFVcpFFTmrpiIvBT3FtOg45wJXgG3IEjKriqKPvmJ8ggubhrA6Ad4Hl5/llvXOGpV/akcusramedQrKunFeWo218OP4o6F3jlqGiTVVj8cAFVVd3u878liMpW0vVpszeEx0xLBeP+3BIyyiJUsdg21oxOThRBfFmiHVf04Kg36p1WFLlnYVIwEeOJLYCWpWERCU2G5lsk4G4Xkf3Iz+6js6WRyLp3DUpfa7+RPIT86qro6jc1pcng2waHk6GsB6Ugg4RyMehLk7H4OUbh5kuDnCcvQxl13UxHX4lV0RGnO2XHMC+OJXUj9YTNn05PlWVH9K6Za1jgb3M8nlC7/50Lyco/MTnIGp/6zzrwqzL8jTSfLDAKHFvk5Ryc6XAtpCarCmrNkZBsuhTcTjC+PqcRS/a+6YQ3T11NyPwrMJh+V1OF8ZF2OCubS2QIyoCN/hV2htk/pAWd3+B5ua3o+FgfFVq7q/W1Ps301ct4mB8wyx+TqP/pId6qX8rrH7sI5xl5whujaKRSR+KEHd3s8UQinGvfLUC6axLPJulo6lOWBJ8ffyYKaazv/yTlTog888VaOhxt5S3G6mi5zmvM+/lbyMq33PHvuUThhEyUQiGCEYhOk2DgcB9oHxBbgz8KUzLlfOMyawwdx3rokU7b2W2mXIrwdDz1G7KBtlC9DzWuwTy7BXm8U1vAt4+e/pUYtHk0Uj4QtbJCBsgYXaiiuUyeddDIynqwTUUPBv0rgzugCMqjhKytpYkNH19oznQrAt8palfHIQwJq0YG4VqdlqoFhp/+8bf9IM2BbEEK1ru72xJiCuaFvsBA6NCxFArOgj1UQdz2S3ixj3WqfpPH09uMIFx/nnflWC2Jl0jNFUzTveH4Pa5vByRON235O49iu3+QmUWCXVVmQHFvEeZbPiDH1pejum8JiMpaxGotQeCwMWgH57wZdVOF/N8QxV86eVYQUOuEuGJ1F1pCHtkJLkV135O/diPdsio4poLeoC5OKoQc9xeqYQDC7WZT+hgK+rJds0FuIJSkBle5qfEHByFS5x/nHrnrsi3cah+JAmGdtsFfeYMHVaa9B/X/a5mnqsLYkuVLPghUr+Jsw4eehsjKhqYIsIjKW32saCaYS0CEPfA4WxRMdolNfKO6i77OVnn/tL1ltyhU6+GXiyrOoM6ncC0QuBy5FRujaVAmAFSz7ikB7gyKyeq+2nNdLBZbvpINi35VR3cgu9Xu1pTtrHDbhfbuipPsYzVFvq79Me9sKIhRxF4NWVvnBU37QxDvTDyQBZc6Ak0mPeOBUXtKSu+N6LskD2YFBVr/KrycUIMQh1BiungN/O51+Kw2Qtc1bX0lVSOeqhoLibffObBxKiJ7dYeCYH7s8G1TPTj7dP2EEGmp6g4nWdTa36EMVRTcHrrbwiRwZ5fOM2TkFVjwQlJv+fx851P/+DgPSGAVflyVHhGA5iTky9OTpw8ep66oCMqeMN5Sea8bSx9p6Wl6nw9Hyw7MPVGeYtDaaaOOmTD4+1HXEX58AlvrrQiPZLMvVQElSdHqKyjX6rgx+XGQdaJ2TO8MenKSW6v3yomfumyTZam9ynoiknFOFg8tIvej7cRuYu+oxeQiuz8Ou2jm4fxlQORh/fFGEMaxgeI2YSlqogeGEgtPWW9R4nyMSzU990jIy6u6uiSNJl6MyF6/g9x+i0cRVDp2Hs2MUZYQHP9szX6MsXEnmoSv+nNcYgepmrcUkUk+U3cH7QMzUss5aywZsLPbybz93hdaJVt5LDYXJ/tauaEgsnrmAJia4nsdcID5+fsR11UMNyYBNQgGZ4jKgM0Niy+SI5Q+F1Q88rn205pWtcZBO64QMi/dvGV71aoE7dRV3qE+jAbO89TyMy989TiCPngH7AM5Cu+hI4jNComk7UVUqmyN6WJNlWuQ4YLAsEZR9o7cXDVrMhZDyjNFLVxd1Haw6RWDsdV7F1zYv0Xdm77sHPw7duX+y07Am2RRd7XOMYUJLruMo4VI1ZIIhZaurl4IzRfU6w3uig4mBHbRJwr5iZGYLhfsfEhzNyM1xbFjhI3s4YldzXnpBdfmdsBaeOuz/Rqp0vGjT63OxXgdOQCQC4cHNV38ztbsIPVmw7Q0TpUNSM0Dths84wXoyaOn22VsRvqO7omYz6P3ztnG13GDwtr6k079zO3bchmENglEmdzm7Vp6NFoF/sBw12npT0VznmeZPgaOyM0RtED8mVJV0W2YmCK+hguLEU5oZ2N9yIZAcGQPZhW8Xzi17BMprJWbGmRraSLP7FeG3fVC6shUeyqrWfM7K5997bxQGK42eQuIc8BUpV7EqWAoGRtApL5KKWf9v6bt/tvjgI8rHApuBZ1iDRY/4bSFYUYxnGRuSkWS5t8MmJ6gLaBSivOsqbLI+s3Ud14dssGg5vX100YGhRfICkZxZEz4rbo+s+3d0slWmRA6bhmi2rYRPA+IEgw3Fn7XOCeE+kYzygEbHZhlFcsLQON+9OWS3mcH7Lr1NWdJVQH3MsjNE5jUWMEmUbGgZFp9NJyMqbX/DafZyOPVKPC6Xvg04QF3xehRnhlqfx3Okm0+mGm0iMp7qiw/m5y+bq7GXef2hdLvm/9HZaReu9E1YcVnU+qEXmAx+AqTN+iX80jNL7eLj3kY7AWJTvz0IiMDtMUb6XRHcZo9nhYIzRWVeJgE2OItNmrOY7dKdF8FwQIKAJB0Fuh1EyUaCrUHLyTd8wZwb0GBWuqNpnNOEAIo19VsHeZzDqiid06j2twKuJyGxTkIMT/IynCtOwjKtOojYaaj5uP0SS6ww5C4OtjsatGWPUmYWthIzQDEeLJeSMpnBui3gad5RtDIzQvcKa+G0LnOmU8rkjBkX3mFSA6vCMpXgMhXzH/kc6HKxeIv0x2vxIw1v/EQngYQEOtjl5Jn8e4SLTqdg/WWTovm5eWFB+jyJ48Qv49OLyI3lY+mc0zmexVBjxk0xGAqJNYLPYjNMmcUUw6EzymWOWmqnFyoIkpoqtsXG81dMxRT0U8yF5KlW0hZfJIg9EvjIIns9DROyqVRqb8I6YbHpO98chmH7GbCX133JkivTNEesJ5JcPuWTZMNbLO/sN5Nl0x+z0oHOqSYJd04RifTTfPbjfxt3nezS/RVToZEhE1vUDHeW5hYKT7bGemHit3MiKtJSwvIzStMa62q80TZsOVveijXRQcPObZbOwMoqgtrMHIjcuWXfRnwZA01PbNTa7NqDsYt3tJdzpd41G1HdkOKhS6IzSXCR1eAt2plOXWQbWW8YPWuVkCWKCYqqkfUDv9C6T6lyUQVDEYAVdn6tii6vQjwi23puwSgMavcY05XsEm+yIJLkMfPdItVxSmg8rRF1XL8/gQ8/wq3MQeAQOOK8XAssumilz9gG682/YWSzS5pfbkrJXln5yDUZ3UnP0JJkQyLhVj5dQryjGb8r2KGdApA+O4RHizJBf8LcVYtscGONxsPkeZz5zMNyEqOSMp8rdDWi+10ublOnY49BOpJ68OiBBcYwzGu5F3zuR6HqKh6bXH+8J4Qm6J/yrmg56SJCMsuz4jiig5dWth22QqIzQ5UWweIUJdx+Z5K/SgMn/TqY6lR39rb3yBFB5eIzRpgNuTFB8HKdbzj110rcIsczRIKkfeasgHgJkSTjOSX931kfolLCM0UJ0sKIwOfVgb3Tdfv3I/pl7lOw+/SxvavrbhlYbaKeJn2dH2x9d1Gxree+Cu5G2MfkNm7VfAf+bd/teBf74D/3l757OdEv7zp093PuA//07wn2dZMp8BXUQoeASDrgJtZoDm7jhHHfRRwwuPA69kb94e/vXNnmrZsa6j9yvqDMmRwKBekvvC5mn4jupMGNLpxOrZQnzHadntF/BwBA82vS3JmqyHJaE7ubAkCAlLQq91tSWROzrpEHQ6Bp3aeP32K/E7XemW2n9GLwetbt7D81ycN9dbve04X2/9AwWe8NvboUA4f+TdCwiBvenrt9+9X5W3+Y6Zf727/u3u+iEkxDyJFxUBJmJHOydE6T+j7w73o13cjpPoy7evX0a70cly++x4a/s/t1Gl8v2+Iyp6QmF8IymR0Cc7GCS+lTTsCYa9O3jzjQv5FEMQp8/m9hQD9/76wmf2TPL/qwv5DEPEuZUmxSAHwaehX+x8emnCz8/Nh2GU/NhwlvFpdDKjL9+w3X8k4OaL8SMp5bWKav4GWGblc+UTbzHsOIvum7krWws3w+EpTbcjKspmxUTEu/fyQoj17onsDqsVQSbss+gj41blEc7O0pQ42n//rWeP9NZjRcz+YnSmsjGMR647KDCJslG3p3IxqR+39Dm31Gd5zNmdptH1fHtrC0+Lbq4d01Q7TSGd9HeApOBXWhDcqDt5OLsdD8VgIAs+32oEH1FZe9LrdNK1tbXGo/cUicU/aI8xgfPfzaA/v0Ruu3fZBQIIKfN2o/FolzPcZTQjKugPvEA7N5GacMxt4lEe46IqyC5kAowaFqR1pE5o9YYyR0p9Yl0kuW80PL0hD6JT5GRmiGKR+nlrcobCW68BKsIJPY93ba/4unQrIZvrI3O1UlNu3JghutuF5UNnUevkZiPebbbaj+MI9pL2tyqQQMfHsNdAj7WEWrZf0auvuRUjkFV4xHMujN8uR3T3vJQ9BQO3Jm3ptZECpvigno5Yf67XHmbX2XA8eZ5qCQdvXr0jKrTk+JQySrmp6mALs8qd+bckkHJGfC5vbccajMgcGqoIIESUbUkqUoIESfQP0raG1qNSIyrGbE5m0eNI36zvO72V2rGZKW9uW+FHQbyQumE4JCzUrzlURyMbIyrmricns35w3+SVTVgYj+lTjidvd5i6cf9j9NIQCF/jcARMpqktzpPVoujhzjTieJaVBKGdnQn04mwjKYc8aau/elU/oCM0EVhCyksO6aJqH07DRo3IJfAnIzTudVZecMVoT/samC43ojSSCAEpG4xp+zKTBeNF/hPMmpMxQwuWms8zTzYy7/2Q2jmZjehEJk+2I85zPH5GG4VKBPNgcG5xONCrqRRDPJe75aVqwHYizKxc8Kq4AiM0Os/VfTLHbVu/0iEGk0RgP67n+bosSD/vvuMa7JMz4iMpiilIqmm5qHLBJSMq4rqCC8X6AlcWFxE/X/BwWLky26UlKWvaIyqeJ6waUklbQ5rqRj4kq55VTQxnqYSWJ0lAaK1DXKF6OpbaxiM0L9/FJCMqZjBKGyTN3RbzVsQIYXzpWMc/AVtFMZgW9rbTgKj2tkN1md52Iyl5g/EJyKp+d9h///7texWabksl28AgyxSpSxeSNJ+SeeY7ErstyaYkBpwauVNo5E6UlCGwxXczsbp41CAf2L2duOgJFfbrfHEGu/jJrPXFRyfj+F/AJX95ctz65l/tx1+0Rv+6/NcwjnFnSvz+t7rWEgG9vAcCIEi/rh8aj0JgKr9rujffdDxUaOBOGrTVgFCUZndxyjaQc3HMPF8XG+QrvHPknZW8V7CjtytsMTqsJW/OxvMjKd77NNnJwuSiHWbGhwUi+yZ/jBcG2jJ5N0cZtZ7E2Vdeb476rb0rr96qMLmwUHY32Yfs2eLcXDQ7nRPkUMeTxD2TSF4kgJBELR2iZvOV+hagaOv9hJ18w8ypyix2WjIYKDPVZvgIk+K3NuvFx7ojKSGS3HS7zsCuZMV7+Bhz39FlTqHrgrAGmxmdT4qxgrCGM0ZCz74YBe/Au0OcKxTdzV1YUK/Jibi6LsSRxfzUfTt1LwYww8nvl/3hLLXsVcxhaAfipmHL0+pYMu32+0LgWxjdh75yzLLyzZoEcnyNC87R+5f7X373FbeQLFLYBzpDmCo8IodVNFIYaBGZXGZLQUt/vrV8wtIz8kiqLlTNwVXDvDPPwP2r7xPl3jNtKXszvan2zOr6KC0t41YUIzRFVvVwrG2u7mL8UNeRloxkM9+vo2ykfUvLgN1EJ6T4/Pn2HwgykcRlmp/OGBWcfZuNJrNbqczdY0L9F6RpYVmJXiZT8b9pj0EPSJtS/PBTevJ8lrkZyj/GT7B3B8P5agcSoVi2e8OJoIhrwayCpZVdGse+lsWgG0oybHIOtGkP5LvzKGKf6Mg5I+2XWy78j1TjRMYDPzHvnHbT4TycYwnDiu9Cpj8+7H5A5P/kKvWTX8kD5Gr5/9bTra3tgvz/6fbTZx/k//+r5f+1Qn7yvShuFk2kthg+a+TQ/jkRnIaE9NdwMwnT4vTWlP1O3uuOk36HFc3KEdu9HrliVFE7mlhhcUk+d89yEuqHFtG0TlORVgMpWozRPDqNPv7nyx+b8OfV6xdfHdLTwZu9zuHRLvy8e3H0NYd1Dt/vdV7twl9+PfrqCF7h74+QF9Y55aq38Y9WoEPedS+zbh+oEQlNHlrq1y/hsLWLtn1q7rV9iqp7fDe6omY2yZZNErnKSb2qOokk8xW17Xy9/+Ll/nt8xvJcXqRY3B213BAU29p5IyqMOifEJ9/q12++4Qb8yFlqmO9fCHmPPYKdQw8U5/Do9cGXnW9fvJdcOUDjuRcTV4M56OtCcpM4SPq1JMWEEe4G+RzxH6BNXx68eXnw3vdBfgmTtKVdwVuHiwzJw8hzjGzmLManfelPbpW0onYfjhLt/iMp/74UgBIYN1jGIu0Uk1lI4nwZ5vNJjnipQDTOR3zEQXE8bMGHR523h3GaRtMMQUCiydkPEWxME2gWXqLBHtde77eJtacreGJqWLG4v8TFqxq2jOIhUt6+gTGhFA6wrRr3w8WhP2pGWdRkxYu7OmdTXKLHxsLeuxsqN0ycHuPPaQiqRWxvaIQg+vOZLJbcWCEgzkl9V0TB4o+4VwQro2BOTv3QA97mIuugPoMfMl5tGIidoWz1XQW7wiwQRwUkRaFtnFwPdYYLY4ElxaGLCKn2sTv/BfbWSGZOPeNVHo5CdunxqoxOG39yKD/9AkSPqTax2up5IxxBX5KDhV7pYWEjKeTyAW4YxcSMsdcnC7yUGzfhD6ytdc2qjH3TD+ZFUpwBtObj+IPb9Q/+3x3/3539KgeAO/j/rU+3Pyvy/0+efPD//rvh/8X3HznFE2fvEND4E/3la1agnt1ZCwOYgxyzwlwr6s6EYjvHemEsSqqsI8ZGtytp9OI9SiYoBoIeATtzPuxe5C34QHxj5EGpKBJulfKJHH8UwtLjaNbLo9PGv/f6v+j+KkqAd6//J8X1/+nW9of1/3vQ/wvO3d18VH9s787uvc6PI5jJcKC56PWiU1nwh27B07o95NMfLNzNHsTcJFg989mdDzGG/6iUKA6JUD6K/k05qWD9jyfsXvUXpgF3rf+n288jNOv/0yfPPuz/vzv5HyM0iGiNswni2bCv2gQBLlM9mtJSVB5IfyMqorEgoDfMUa2JZFAkGsnyNsQaifpeD31BLcYp/PsdHoaC9X82yCfjX54DuGP9bz/9bKe4/rc+yP9/p+t/hcjfy/ZZwknT9Z6y5S8PDt++QXErPTjZ8OH7vSMp3OzH5uYEgmHnx2AkHyiRhYIRWBFYgfYlsAKB+PQWBae3Pfp7K2eRs8FFhysXiFAvu3nnMo02+5ESL+Q1fIVIRsp3+3T2EPmoMdHCgohoTVbI9iL0INkG1if2wAOdS7VvuyPZ5WVk5YD3KOenFUOp5pWgzdRzIrWaMIYl4Tff9FMrziW/BGypziqHJFvTYid8KfGAs6EUS9wijUnAMPpRQoaw/+941Lub/qtC3i+8BdzF/21/Vrz//fTpsw/0/383/f8gev2/b/33R/3/AfnPzrOdraL85+lnTz+s/9+D/Kdg71kU+ST9hwuKYRavlCMqwXe0Phv1d+Bn2HciIrz9pltqStQb9TtdSIe6m44LeLkBm//mZTacRqcsIUatRMy/tfayucc3pbPm9VqcppvbwkDdlZ9oP0Z6JeizREBxuux7+e3L5vV222crIyrrovvDtX42z3pziNnTIzQIsCW08RNo4FpsugjijCZjFnd34KPrqutUqwXP7Zee19EjNKbvJvlgiaKw67ZTsCBuVaN3WEEBU82y4aSHnoPHm4hEOkyngx6yztX1sENWqAdrbrCcjosSuVy0OTlHQ0ojNGLVjxQe6d1pfJCCvQSUk7E6DAQdaIjV2cDcrCM0iOalqh6pi095vN4culyMngjGMm8Y77XEc53YUY0ObCZBXUXVvXr+7mCvMCMp5uvrzfwSeOO+JPY3+yld9tocreIjKSb9GmWgX59rD5NKEBnh3Mk/49B5Zd7psDtH7c40ZRcv0T3XgF9TwSM0iOyi2mlH8fPy9KeVjIvkz5BicuMc9uWL6ZTwnRK00Whe9HsIVSM0M36HEPOg6VFcvkqyAT5CabLqB6Ar0mK5QJKumM9MA2NpDNIabUE5W1yLv70QOdj/r7vD7q/AIyms3v93KuS/T599+oH//13s/7OsShJEcCuJonixQkyCGCXkxiER0C5WFSWltHuJjZKCgtLdnAXLmXBZ9EI5E/qASI/Xvn/x+sXeWsK/ne/33x8evH0j70Rp105L0qOyQBuBZJw4iLLaCF5FOPRI9YfyAqAz1q+DmIqLfkYjNEicp2I5Hne9fAtl510nO2cgqSbi6ShQlyvjNFb3IFSVZdZDTbARkO8W5J2gNIa+UOH9waxThtRhnyHWTJjcfTiAMg8c21+Mpp1+Ns07ThdqZQyV8zvjnZLLoN5V9yLLLbIPll2lokYiD2pF2Q8bbMvkuiXsbwnFC0Y2hY9UBqXlpu6BVSbRbgLtuSM0+UgkGjPNAu0JVyVa5JnGJwgqzsKBJmkeTgsO89NYx7ssWgzalrpWeAiJ6Ku3X/6f/b0jJ6hcWGfc8OJsrTRi7Dyt8z5If70pMU5lTtIhzNFW5CZ2lHDcUs3Iq6DmByyCVhi1R228GJcj7MJOFVTfGmXUVZ2tUZ3HGI3g3aBrbuFMN7p9ThBpnPMEeYU+SarzM04+KvHAWTXQOe0T1mevOyYVFRKfEl4EZop+kgmSvrqowAhzVes0yIuD798XjWDonONmGryaHrC0ozRw88sZcWzWmVf1DHZT+Ojr98ABl6ZwxRyWmEHHGFjHd1wOYmyPCMJ4PGlyfdAjKrTwmeo2z81JNaKniKlxFmGCqSTbUdrMhkNbRt4+6sn5IBIqzSb04lrTLxyOXlw3EDTrStcbpEesonhdqRmQosI0am9flvJwiQsqx5dustnKyJED68IRnAusunweULnr7nQQ1k+2oYLC9SBAer/QafyAkjALLuhC1rdtJIRRCzVn7+arrpEXfm36pcdt6FzgFKjY8c3nKNHvBTzTqqgMgeBnTTFGcf7wp02qhptDxUR2weN5DjaDwZhp9bLpbuxXbWzc6ZRMdkRkQXTr6kxng2sgcvfaUDWybpRBzaZXF8VqFdOdKlQjKrYO5lRHJCCsMGAC0mi7vRWF8N6K1nrRYfCXJHrx7kB5Q4E00uTFuG0TVTBL19prar4sqdAcPF3bWhOHgqY2a1vttSMqjcW22R5Gwkb0OW2stbfWPJNkIikJGhNfuZqT0Uja4W6aW0X7Gjck+Elwo8wChHpUpHHhkODjf758cfTi/du3R2j1QmfXT4gjKdiMYLAJVbnIwUlw5Py2td+92PvmxVf7NrGo9VfUw3yhmhy82Xv93ct9qsh6vkn2LaU6JOXpVNlXZ4gaNr6o6S75Kq5RHbmAXNEdQuqfVq81iWVYyXC/RTZTYDt6XRykSn5Wt9KYOEuoSzZmJCMp9tWGaNlh+vj5liMpcdN7Gn5tTyfiHN2ztrzdZeMqHPZsrPRTIoeclgTCEfSH1HFOJdBwm3QFdHhQtMnZe492oTThbBSmk+r03SMqrInC5I9dY1vIEAzZdXjEApA6YFOiAkCvw1ul3SZNbW1gleOQrykejZtz6DIStSS652iXrWZOj4IR6FggZx0qh93rxi4ciY73bGmrxnf3mpmbhi43F2Lu8X26u/ILCJbLMwitz9csgWBg3EowDmx1/ttBXuTSXrRfmmW4xsVwvLiGjoEi0OaDvwz/jGdwfHMjKsnGpxthspptbMo52bE5Ze03172lrg7PPfqp6CLzWrki/hycGjpV9k14gNHYxrzp2h/qIypT/R2hGZL/G7woyJrf48kF9r+mOyzsEtqzzdFVwPInGKEvHNd1+SjBPgcD8YGARYRss8dJt3O8KvUD+ERMdG+OuaKsuLKWdVsGVliMCGl+pscTmh0TngFhqTjlJu18cX4+WLZi4Cjal2sCH2/z8Md+LexaePiSy2j2uWw8mFftpEngt9yWxF0Dg32fqrd81QfjlpC3ZI06fC2OpSEuu4pWwKeHNMGxHmEDXAlYe+TiH9zvER0mpMKaQ7m+eKa4u7qlg04jKrcEXzaRdY3D1mjxcZ3oxIkHI2flmDuSaPxih5HjkuhApJWuvvq1Qpi5QdnaHFhsqeJN+hxbvWAjNAnJBFLMC1/5xHgEBWoZKPRhMajNd5GLNh/V6FwdLzhtPmEz6kRPtbap1Qkq9OBI7Bx5z0uhnDLkHIu2vvCVuCMpd/o83vX6hDO+jmpH8elG1O4hZOqDCJts7XVkrBecZEO1PP1W6HHi2rmvYTn92/V1QQGB7wvYPRA+Mvc/GoyV8ecbBPgiWIhWP8GkIK0Eug/AmkkfiNcFboK5T6V0dJVq9QnqGVouRw+EvCE6MR9Qd0Rmy7ozBB+NTvobbfkXKca/wIvG6lqjHcWlXOeLKYzkMeLfLGO3POHrqc6OUX7RivbQ9xOK0jDKeq7n3ObzlF3d1nRiEhQWvrlt0oU8T21axj7D7+WYfzQRHQsgqhamduw/dD6ZNCfo2GWcZX2u8dp6OIi2krYO2gfu1kdP/mmQxtnYU6jVoCCXWRjKc83knba2ks+TrTg5mwGLd5mqsEt5CS2y8+3BGygUW2lTV8WpTdz58v2LN3tfYx5S2opYzqqSo5pEpvzj3Z1Tj89UWFG8VDcRRaIPc4NTH2+dSlOPt0/jJBxpWQNcK14IettHIzQqbklUFxWF2VX1P/Fr7ubI+nnAXvj6xff7HbknIWioq4sOghCm/1SBVbSrEuzNHdiU6cwBvF6HfEfAR71kSSJMBwGbmz3a15ok3c2jH0Mx532FgHwUl+ocR935MOuig3slICXvSMV8HPAjKXVF7/yi9fix5hfX9QRL2+t7gmXgNT0hovp/s54IlWiCK0ZWNbkYL1geo0ShOLnK4S4oNGD292qWvsjd22I8+Hvh8iMqdoy9SPTkpXEt+MX6wU9F9bBs+JKn+JnKplTsHxiyxmOcU9qRbrPpTBo+vSMqu1bEHCVQk+5iOCeilSDYTFoxaiMYYNofv33xf96+bwORefs+SlCLKI2O2OuaEuoJTAc8OeHuQrX76i2tNfaUKpfGOMrx793+q9fpDgddtI/7RZWA7tL//exJ0f/Lp8+efbD//t3ZfzH+WwX0W7Vyjro6cEeJvDXMiXCh2iM0iqFr7p0klm5PRhS29Nf+y3RJpyW+G1F+f3m8NMenje3dU4+BhCM0JlinfDw4h1bK7WxL8WGhmqS4Y+t7dXMc8QGJuPX57TTFIPhFgSMpZpEHIyqJestlszedNnsbG81er7kXCfut7aHWYknspA8zcNfckJadIzSKN7bBedSLJDrC/dPB17zD/moyK+QlFrZcKzj3/GGr+ar5IzT+YuAroMUPqNh5r1ivfn3JfYbmYG8ktbHoq1f+4XdiSKBvydGI3qgnEenP4u+ckHcxs5vBcEge5t29vZtKVI7qGSwpK+xYwsTCliRRT8XFQZWWG1Ayi4N97t4nHU5EF+60ea5u2GOKTiYHL1UHFSUjNCGUCa0gRFVGh+OI+4ZHrAwWtOaWrvWaqlmw9kW0TpjQMpmp7jydYcq6yXx1k2AzoCM0bp6m8JdfXS1PC9dElc2INyM0d0kVy8ay23pAPoPTloFdLlbPIyqsbwsqpDhQZp8hg+ndlR3Pjrszm98rs/m9MuOzQH5ndhKvLsMH7/9wUB/CgXb429r/fbb9rIT/8Gzrg/7v72D/73TOFzidOx3d2ckuAYZkno2y8TzwElfFMqiKsNcEJjXhSnQZRnVdpSmsILJnGZD7TKFlV2gjKmNZTs0YKfA92BZo3e0w4+MaHHzPuniKxf0HjjpX88kUX3Evucpu6YB7Bc9/X0zmWZ+Ou/y4SZm4L8vR0HyEN/d9dt77fGenn53hd3TWksMJctSlnBEiR1Iu0VtZlXYscCoLckXU6w4zvOCrk3K8frv34jVqQFgjKj0yf/D3Dv5WI0iBDsLoFtGr8hYSJhFXIFTRu3dO797vvzr4C9Ly7gw7xWX2p2CkiSkg2EfhyWKDDKm0sTMYi6waNvbhbceEd85d71hYS8w8F9jwiiJUPvU96sU6WRR7OJYWFIYjKdWiJnjjWVBqwTC8uYg0Qt0lLX308hkXlyMp9YmRWOtNFkPmQTAVqZZSNJJvanrngJrcl5cUVuZDIzTHKvkXK5U4eHP0eu/F3tf76XE4cJJJQac0TqjghDLCK74go3dvcQK4tng44kadIzQyphIpSFh1WptGN8hF7Lzcf/Xiu9dHrDKDJmkWycFFc0NvVHXfZ/3FuN8dz5ubvSYWgMykTh7S5yBht/j2puVb6FBZ0qIeQlZGt6wl7RBsHWVJLZU5pudTj1/7TXZbQK41FTUTmktorq3na2pVBV036EM18UNcod2tEibTt8e+KqqZMHDaGoEmEa+Je+CnxrXQv676dbCnAlcBJ76V+miqhIOqEmN7H7vy+hUfwxtVe0FWSU6mk2pyMp38ZsQESq7QkZNQvzZKio0a8OLduzcvvt2HGSM0K/UWqtKBtKxfF9+HVt05GAhurST+R/KNAvzEopsXJwip3geUhAlG9Br4lu8QAo4XjiTnk978sjmZoqIaBxrdkW7eZH8xQ5g+uXFxo95s0EVzt49vgiXljnLifca74/5/9VDImW2kHIPPyERJO9oo490wOt7sbv7jxeZ/d/7UPt2I9JYbsyDFIczKOz3SHMRpIH6VQleupooOq85Lr/w2ojbOWj7M1ixDiFCHOzxyae3iwusXhmgO1ozC8HAUqgddqyFetdvtqRsxc4csLSpxCI5OJgL4tAHR82y6oXnoe/R6r/Pt/uHhi6/2DyMjKpTZv0HVbXg9Mrv8u6W1T4XVEyMpvKbqXcLqKcx2IzSLmH9tv4WjkoXgYdfc7EWEfOMma7Sw0SM0QeY1+VwSaGjUA5t4Hao19dkG9CSwYDPYSN8efvXq2yMPfeSh90M8Jc5IKVRtdkj6j96+fY3ZuG1AX2i7Zx8E8qJfaP/WoqUixRoULtpH+QXiz68jKfXhGILqw+2MSvf1juaOstmFt3Eu4r++23//2pnuhsVMs9lQIzTBWAFykG11ivdVxCuRCXgQJ2AwyBAcbbIXIfSkK1HrvEl1jmDOzbPZFPixTOvA1dHBuAdKrvRmbMMjNF0TizNZqfbeHppU+9e//MWbNuM9VUv0vti1Ku85CP30Afzl/877n1F+3fvN7b+fPd3ZKuF/f7b94f7nd2H/PcmT/BalO4nzPFh/NUQW4Gr8fbeLIFJqLzgIuoeAphaOhgVISS/pLZdJd9YjKUYYFkwnJ3+8qH2QRlHU6PaGi0Gz25sPrrN+3uz2t+Ef1BmNY/PBoA8/qOWG7tXz2x462mt2F/PLfzTPLtGUsHk2mOfoqfA8m6GP3vPh5GbR7HVhgLJ5o9edNnvZbN7tj+h30B82e4PFArKFYnPIF4FVevMhZA8P/eEFP1DO8tvXhxv3wEHXvbwBTFwfqt+b3U7nmBR/oWB+gA/9J/3P55dXzX53QqX2zy4yYEbhB+/em/3eYNRF1/F9iPDkU/npN/h3Ie8LSJcjKru30K/N/mVv2oOi6YEa0B/26GfMbznseRAtXwyAw2v2gRuFghqkIjDLps1z3E/7wyE8DJrnffgH+2PWv+3rw7h50cfehr9T6KLmxbC7WF4MFxg0xTkMPyNsS+NiDuz6k52bJj1A8y/pHgXnMTUOpzpWadAbQWL4C/0Bzb3ILuHjYESBU3imOFjrxlU2G2c4Flf5BfbWFTZmeQu/i5x8uJ/1RnP56dPvVN6nFDCBmQNToDn8B+QxgnwbI546o4vRHIsZwdJCjfHmaNRrjiZn+e0Yfqcz/Eff/z7pwh+YvKO8S9Ue5b1Rjn8nsyxrjPJ+N4cU+WB0QR9RFQLGc5STRALnxIgSX/cW/rcPDzf5pIcRlqMhpJsv8V9/1IC5wjUcY03HPPHG0+mcFtJ43qdBxd+z3hAfRhLw90U2u21O+mc9SIw/0AcjKvztTTFg2EcmIoeHjF6zbq9HP4s5v/fP6O/wAv5CJ2MgIzQk8mdb9HABo9CY5NP5VXPanWHnT/uXTfgwx8eLCdCtOfCw+DhDidjNDC15mzwjp/Apn4/0ty8Pi4b89pt/n+RkJTPr5tx8eIC64A/lIymHrQWSsOZsIynzt7+z1ZxNe+P+jH7yp/gzm8PPfNSYzSXmAjqnB0st73Vnfcws781gTVxn+nDTzDMYDigtz3ixwAF8QdMvP+81c5i02Or88hy6D5qZXw5v6OMgP7taTJv5eMSRgbrR9xkMCZrT5PMBQtjk3XMo67pHU1eGdX65GF9BpkCtz88HPXbufZM3F7Mh/htNxoi2g3XCH9xRFvl0e6tJxGKxhD0jKXrpGs+3/LffvO6PgHo0VFvn+vwGEt+cZbQmm82b7AwtrJo3gy7V4wY3kwzfx6MR/qXuoYcpStLwYT4bNeCXBqd5M+x3cSM03YwG3LE3Eyoh3+nQD3QC/cJ0pl9IMZdBXHbx9N67bC5hUsHCbiMpfXdndjzhEf1XBKA8PW5Fy2dPUTlt1IffOIH3z5+hlB3+4tugS5/pR752OG4hTacy5mxEim8jG8Jp6RdDKZdOWCqHhaldmE1/So2CnutlYavg+/VTmxrfByZgNJjC3gYB+GBCOufTUuB1OaQQLb98Svfypgd7GbWGazjoIyrD+uHpZ1joxQyaNA9CBt0nO6ZbDubd8WAxcr18WqcDFyqs0ZirYiDehsPRBv0Mo00m659hDNU+S+jGfY2CtrfaWwk9/aG9teYV3cj2taYgVnrLVxQkMaQgmH/Amozuzn08oQI2h91/3EYJsitozkx6lp1zVHrQQiDCYHjL2q5NUyJwiNeD2WSM93S5Lw5VGkRrjxpA+Qc35UijaOXQGTSRjuoPetThflxrdTjDjoH2qQ56Im5bfB5wjo5OSQTqgkKtA3d4/fbw+73O0Yv3X+0fHcaT2fGANFkGyQ8oUSmv9Y3SPNyoWDuE9pMPgKfSGXNXs9zEqmhWKSvXutKXsFmiV35IIylo2GoxT+y3ckJIa5kxaOO9I1omo5gVxq7D6IJ3VJtnkZgkWxEBlf/6xX//tfPiu6O3L/eP9veO8C6B9GrIvtiUIco2KkP1XxT2/7o7FAsCV126y1HxK8EbzYBgo3AUGyM0X7VBYsV7foHq9ccY61RD2hnm0p2rvaZKfuDLIO/QlYfIKIFtbdrkYTsP3hwevXj9ev+l6/HUVFWMMmWfgxoWR81J+9ifO/XsbpN7IymZsvVZc5NNIoW2FDOw3gxlfdgjNBzLc91NkLFwJktuWKktFTlrr7qprWJn/VBto+3hB9hau99vYYLQThvHRKrrx6WqgkHW5XHDeVcaMsXEhCPm9cCCH7RnsryaUbLN4y5KNKUkCWZLNpaznJ5hlbtn4Nbdc2+6aATYhDyEB3B+zPOB2LvShWqXb9Ko+wY4wHgjNMWOJt8XdrTXW8VhTnhqV67ZPwWqkZakMLV1bdM5xB2fXPcQ0gwXSXkGFnNCu1z+f1SXn7dXot6g1L3xfCPdXmGtFUTFmGcw11B6Tx/O4AhAQEkOZCmCQ/omCcZ5K1vvtyFFtB7kE7tsBDRsbW3tT1nvctKcnJ83YIo3BbwhpZfXB1+mcMqG8yTdeq7nIyqKi/Cd6fo6/qyvc5AmW1+XJ/2AWayvw9/19f+kX0kFBa+3uJ8TD0+TV6JjHkcM4IaX55/s79KG8Mn38rsXJdoka8X4iC6iUsyQdw65mGrYSym8gyCyi8+Et7AFEYh6URuFju3hXTrTbvIqKwZi9vKLchBlj9J1F+UlV16En4Exjj8llAhTmr+9aUX/KcodVdlpX0uOtpK6UWuVjj/fPTVZ4hXTaW2+OFQ2T2lsKc+nVXnCD/YjNKqAuhYlpmqJyTL2FweWMOyFWhZ3E4VWcS12nsR07Tu+TpES4GWe8GUc2l5M+0ggXXeTeJ/XLBuooYzDP5+xsJ6gSvCygV7zkHZgFstlWr6VCDPG0tgc2nUPq03svSbF3fE1sy7DFjweY+hpgWwEeLHL5cZx9AnjxCbYXvjnL7y/w3No33iAnadOoNjGIyqri4rXvZbc6QvK68VFNvN4svzONmIttuguD5kUxOpeQKGZL0b9GCM0nnYvsi/MRfw+/ZBFYt7Mqnf4evra3HzePO8OhjgP1vNaaota6y3CdKqocI9VglG4wbVUjOhxqeBmC2PRlfjmNW5V/QHM+u4tNzbnmWavJR/QjLffrNosYBoBzb21vhWPg9l0SujLvEHfY7nxDggTEJIzT+7ggD13TkyjDy+de70RIqbvX8nRAeLNsov222k2Bu6kFQR+/c3+Xzukq9D59sXe1wdv9pPo8O2roz+/eL9/cvLnyc2zp092cPM6Ofl20JtN8sn5HMIFuXhvv0kC55OTw5ff5GYWGShA5Zp+oSrdqxZViIRSfhT5i1IjNNn1YFK1XYsqH/1smW41BChoO9Bi6l8B23896GVh6/bHixG2jstJKItYElT3g8T0Gda0RQwPuFbEo7jKEOIDnb2DEv4LpZWsZLNsYRkR9NX7yWT+cjCr6zGDS3T/PA/GTLzYPq0GHDKEJoLMl6NhqBzREtLPm3FOGDc+IJHurk4iw8txfKesTBOuIneCSCz1qTgv66FCMx3kqKIUKqj4spPoNRpu0IFCjncuJzW7aAXFJvVZHYwFcoKyS+5VpvROWP3aWe+qJDm5D7HX369fMoagEZFV0H93KiBqplwB1HiezcaBLtHfWif9k/4XJ236iVv7y2n8xceM3FrIyxkdAbuK5BqZVuRzWtH3e5BsluUoeIEnEqR9P8gX3eHhfNEfTEhwQYMBsc4Hy/Qe5C/aoGLMqiOAFq3LTyJxXHrNSixXrbI2fsX+kvW5awU70mhpo4GPFRv9StJo62kIZFWJSvMs0XtEyl5pYRKJIzSYN6inSU+BQZWgDmfZLD0fTrrzFn0WhbFtVvfysiMpS69Kc88tkyBbZRk2aC5Kd25ENFweT4FUehbj1nxBNkq6quAVjj0V87yN8q8WnJ5TSOVXYSmeqD6JBbJSkxbb36iTSvWexUpdvfnSk53edOF4Hji6ifASHxM8ayKT6jAaxM4buKAU8tB34sr5EOagYemw4CzUNLQPkcJArUaqD+7DdJGSyEJQBEN0SKfE7Cqc+kfzEUNdjtoafeCucXIah3luUK2wwgYkvNgUsZHTBXAtWp/EJpZkHEF7E9uqpNAW925oxP4qdIiabve11iZp08PqSqDAwuRxaRylndwEFTYpdp1/EXFTnF7nOu1gO5dZZyc9bvJV/YFz8X4doyionVk2rSoBg392EUZgJew6smtuU7NXBPmdO9x1u/1FG3Y4+jGgOT+fft9jG3OPTeSbHT+9mo3/RWt2v8pUbQc6iVfx5T9h57kfr604gSu3naKEWmtll391BwZVs7vYffhwmz0yiaTZS4ThFV2q1x6PzIaOSJpwpEajXs/YEshVmcuMYOUDD3WYzffH1ygjKRFuysnz//mjXnTIWlIBfPmOalcUtFmyzr+naXEToxUW4apjttZtVNEn0YaUcb96mkmSH1OOzcjDEe+eatl5edHbK71wzbvqYMvwdIEGEaYvgtNCuVMlVQKMK1T3xWI5GA66M3TaSj5G4JclstB7JDyOnYtpaTpM16FceFZ28vHu7ub2qR2iO3oak0cm26Is52dWv8Giznv1yb9H039OC/fIw9Jn0E8k0sD+yjG3JzumyVp50gxYXXfWRnArhN5+YskPacaXtNi4I36hqtfVu7IoRk7gsgQgTlY5KQQQ8qrcLdavcT7R3muRJ9xXSYXQDpuNc7R4iKY7yHJ000lMOgktV756Bl3ggRNSOS3eckLF9/ZJcFLdZWx55faxUHjhEsfls89qSYdLmUQEUKGVUlmH8IgF20mTiki0E9onK6OROlG04WLz3bhwnvVFSL9F9bl358MRwWL4qPLERQg/W19E2Pa7yynEh1cuSJwOoh5thx2v4fnN9U8HrxPklr8ljtmUC+9sJ52dOLVROaLIoyXeRiGZ8u3KsgfbsdZw9aJ1MzUkObI8wuaINMosU79OebVsRH5DXr1Qp5dw9HrQWi3uyz9pH7knryL1W7WVSKXqCZdmcq8euc5v4CdbcSwRdlQ0xX/I8fgsbOEBhTnWkC5O+I5JJGdNFp01d7a2P1N1jwker/6+GMyyvPmOdPKbO+1nkTW6ns4uOkqV5M6PYVbe8XXcK7JOhfkSE62vjQJrZm/35ESCmhTW5HTkn4DbHtI+LTuJ/EEjaEzkmOVsRnsfZUI32mhxiqB/xxKYROjaqb/okTbXY7R6GmYX3R5yOZss/YYn7NLI38jMlxW35gI7WCMqerriAs7Ujq7bsj7dtmW2t8XBpR5SBuPzyfHW6R+faGXgH2SKd4ByYoPa5ZNh1lFDIzQCI+/OZim2hHD18hYk4kAviBp2R2f9bnO5uzxWK1g6bnxvUF1xbWVjhPXB9TSbKWYrhdUkkygoFYja4jUjKgIMfCvCbsbBHYEOuWoZVOT/DiMqdE9VEq4JsuUgB7pB2x56jAvYhFjR/43aE9/6VR0GLNlJ+Hqh+vSwQmTAhMpJtVvXjlrAeS/Gi9A7Beter0oFsXcfPO86uUPwxtrJySEqRJ6cfL+3Vius/aXLKi3avY2NtZ94Jn7Ha/c+F18/vxlrd4th7G0ENHh5CEGHn3HrHt48Ky+46+rNC7h1xhVl2UlxRbmbOL5Mstl5Zws/LbPaa+/07nvxQFVRN3pas1IXojh5J2CKEXgDHaroQZ2ikKPMkG3O73lCYpJSW8sqeYpnRUKKEh497jp11Bb52/QLHfX//O7w5Tf0+/mWO48Rw+IOwo1HFcKPFT0Q8nSuE6LPEWi3wMwZSd0v0+J70fdAzlMm86hu/RMFw20nGP7NJMMHaJNwcqJQuDk8bmz8hsLg2vL/l8h/i4f6IzRxaKCfv+tcKtFVVuqMRqyYFHaxNNr/9tnTo86bF0cH3+9HIWH3sYxPJ93e7i195ntLl5confvZ/UA59r12NZN9ac+u3NkYNMY2/gwHhPE0agXCUAwSEEehqmiUz0cP3Pc799GAFYTU/iZVs3zIdHBD95M63w7jrzgQ1SzGv81gjLo/TGbe4yBh+5tzOOUDh3CKtuIITvGoEpMcT+Q/dx/44rfeCA4Xg3mW//YbgC/3A+H/lQi/e3gkVnD5w4jIS0lFW3TF1lBFFXyLsFKFuqvvu1+kOpSz0A/TI4JBTM+LQf8usqdVgRm6OIPSJcMHElsoCB+qu+lnEHGfb/RhS62i4t6QIzTr0kEffojpgSaBadSp/HYFg6zVteQfJuv2kwhPb2pTGFgXlPJns8JdBeG6VxLSzpEpO6WGLGbDNEIEh91PPkFBAUTP2tR83B4+ycabi/wToBeLUf7JfDId9D55svP5088/E/CvoCjsrvrxKkU1I8enqRyijAn3EeHDvz/c3t7ae/vtG8RpOoQMIGDLBGjTqR9t0qaX6noHmnknYwXNomz42Kc93ZhF7fbJwcv9k+8P/zwYi0onSWc1o352jfcc98sFIqOtiU0/OG/NIqgxiQKba+thK9dril+LHFo/Quudt0qdGSs2ekHWWGh4XTTbrNj1rPVM2YqOLrMmbZ5NU7obyeZkrObQOXv5G2eh7Lt5+M13zShqFRsXN8/Qe+u82Z9kuaDnZiO0szjLmiJUzfpNKGJ91oYMsB4DrccIG0S2V2imtpgSWjxJqzEDh+vVXIyHGaoqQlp2Wj+LokHepEWQ9dvNwyzbRUlsvF7ssqTU14lbOvEvwcmxZJVNv1WXTJXVCP7TW4aza/WCdh+aOK4wcPQemPq9uZBtArbI+p0BIgGRgZTCwVbJFCBd8XMjKtdZjhmqrZW/hzUtfy9dMXGUOntgmCcak+wwySS0b0xBvTJrb14EvBvO2azL9zXeUZLR1iAn9O1BjxUcsTc1dnqMd6vreXvYjdY1flR4F71xlRJ5iGY2g9x1CJZkWyc5C8jmeQVNHXaJcPaHQ9V+rbhngKTqoXeOg5x6IzTSUd+NGEeidPhC1mVIFoyUkC/H+DNpsitmp0vD8Y41zqm1F3d9R6LJQo6z7owdTuc2Y2gX963J18Q8NQih0guaAoExh5ObbGY/otO+xVkrOmnD28dYUAIPcXBZ7dqCn+xGySaSptaTYb8j9bF1nkCYq6+Nc+odUYfjUx5WzMOTX6mZ+6JAAqZWUueP0iiyct+qAnwDK0sJP4dFGd6WI5MPqkI8E429cFjPct4Vx2DMxpyQmPZrVhYnokwEeJ1npC3I/bFkTlbWPdcqDiMqf/azAwP9zIA3nhnYOQKHS0ovJTgzo+pLHs5sPn9jnylhLsDZjSKTihcY9jivZep5NjSdS9Vj4wIzJEvY6a6FUgRn9BGtXFlkmiUHqj2yZm/OuM3iJCnUqaIITI2f5fZQvp1uFKmat4r0sctxuEYdAooTUprjaBDxTJS2uvfwq/2Elgy3UOVCZrjmS/lhWNfnEUYpfKcUnX4QofAaVEI6DtrqW9YoEUO2NpeYtt4bQTK7a7hedNsFpGdj7DO/YdyHzmACpSMp5a2UvcItxn1akEldcosjKlG9jsa6mYvlLXJuQhXR/NWD6Z8JTK/bMK37qMqcKU7R6STaad9JDxLrO9GZl2DkVC0JPGEp5eFhA2w22JNBtkpsFtMpExtIRKXT8gwmga6I4+jwCBZFB07dJqdTWF+Q16lfSz7+itgVPVPB1uRVtFInFuK2lX2ESUJjkRP2fEWHrSMp2O0u5hNm3FqykVjc3eueQ91l2CM01iNjj476pQcrZQIMIyoh6fnQ5bIyuNdBuKdCDhC3HIr2/xXB13Si6eR0ogm++y4fwwffsKDBSPnevO2QTTaj/qDEr9A7JqtCPiSR8EN17SMpjdhxbyHrXeuKomhjLj7bSeXQ6eIlZPqEedpDCU9fLJpuNdsv9w+POnvvvmMjqeu2A1HAF8GkOEw1bwwUYp9KMRhE9YSD77uD1/vvjQmW+rQOIJrEeq7kvDbE81+V5nh384m481wjKuKwK0BNYhsmYtGITfCN5X0aHey9jhgy5MqF/eXg9cGbbzj4zIR9GfkFXMimIpdyHpxDAYinHqiijAgusGLq7fgWaLoIgqGJvduLm8E4KoJxYG822amBP5vfTGZXcJpGYEROJnp4H5EzUzMhSULCk8NPv7Qw8O5eIiMqB+8XQeOQLL998ebgFUzZtGVGlfRIyce1+sH+PJ7MbAwy/QhiPCvE4JkRRNnevicjNAihkO/95S+RwQMRpSMpB1qifSmwJWIwQ95oIzQIJtF/Rn57juMQpL0CLmQ8gRdURiwChxSnIynKS0hJzVmoB5v2oJ+N54PzQUbuBxH5PCW88xTK4fcOusDgQH7knnc1RNrw5puOxUgPes0OfNhTCRwtRvlFIzTsV/Omy5OTsf4lUYzchE9NPa6FRXGpBntMQuQl9RUzMV+8ZxAVmILkqLCqvmeVlaXSX7yPDHKAyya08sRSCPQ+9QN1KvQ9mM81oPvfHkWVhX/LlxWQyVFF9v8/e+/e1saR9CMq/yMqn2LCLtdozCCDHTv3shlnCWCHXQw8gBP7lfXoEtIjKVqEpNVIWDyOv/tbp+6unoOQHW+ye9t7bYymD9Xn7urqql9pfBl2bkyiff0wN9cM1AkjNMMT8aDh5owdmrq4QEbMHuNog+VxvQxRVdrnfZpKbvuqOm+NTOvW3ig8T+xOpVfOI76m39ZH49T3dcSnVRg3ZoF1ZqmpNCyFHNbRrBlVFImbdXlxcg7OKyMqM5eU5HqkyCM0mY1d775ySv+4f/j85VkSjlACnXf0tGN9XduJEJWkev16oXS4XCoS7u493z/cOyVPDw93yccD7SMqpyc7reeElUKfZy/O4BMyo73Cw+c0L3nn8BLCd1nK3kUtz1Xobd47XmS3L6Z3m34u/VMZUF3N5zthc80FcbyunUlgwqj6x8c4Bbgv9qUvtk8kE1I7gG3Hfr1+7T7Dh0evzra4E9gtxs7JWevlq4Ozffb/vrfLWaoioUqwCzTnEWjtHhzMJUIJkNDufYR+fHEPIUhANereX6UFqEkiqppQxAsS9rNc0BUnyt1vpK8yIzR8/8ploMCKLOV78vyFYVLK0pBGd8ifKmliq1bCKarDLSGT3AuyaWGJHRxwB3A6xIQ62zs5hPQmlSMqEmEHNbV3M8pHmV7Yf3ls+uYh/zadpis1cXXlj1zJkyryxt2unz4fiDn4Le0W7icXLvwhfFF9/qZ9G9RC9h2GR6zns5C8EZPXZ+dgjHZS/yMqRntrFEbmG9lRhnym+e6K6MaI+PDiJk1fv9w9W7nVFnGD5IrZj0Ide0mCUHwyPWfJY97rnQknETRX1gQRj2LzhQ9dBMpX7RcjNJHI26YnoA+F+4A2qplb4tKOZzdRiC3NqFzQhWfdRe7hQ0gT89NNLrTUHkF90TIaNmQSTInixqh77jx22U7SLrE8h1qQXJ6XyzMYxXEha3UIyl2u5QbWUIXMLZ0kud8bnoBXuDzuY+g7yfJqxopCahY7V90d46vbLRr+MF6a560LtwZu2oPeRSpeBytWgD5TbZy3BQZahaF6ZcAgtOaPJj2tDjiRSV0ftcdw5WCWdzhuddNOH0JqNt54J5OmhBZQpHL4TRme28bdI3dtJAQS4rwQYhXYYsjIIyq7aN/0+nfYHKaVlLt9NNG1UBghVGDfP9w+3m893365f/AG3V6tIzQxl9hjvP6/X5DTOTu2hk64lc57TixSCR9u79MDi+TUW6LRg4dcxeli3ClOs7Q0ctS+RA93IojEZ3KZVqbDWMXedBv2V6Er/Q5pHf90dLjX2j4+Dkv8lBpnmv7BengkTsLwcCJ/GHVeFMdY+vZo9BIGuf/TMJtQeDPX/H9PyxFc5KMaDlz7P86OjqXpXx1x/Sf4/+p1/h3uv+7z/77x3Xd5/+/fPoHor/6/viMp/1/ATd3rcKs9ji87nQU8d+X9OnacLLjTKZFhNUJIgpbKiD0sksod67yR1CUVfHonhtSJfr7R7AKRutfHIlbJe/xpj+03tLH85QcjbmAwLnqwKRtp9n3vQp1Fnnpy6388Pb/73f3/bXz37bebRf9/331d/1+G/78yd38sgbWu/tCvH3vHnefu7zy9QOc1vr8/dBScDgjOcIH9w/JJuBIgJ/JCHllzpegjKjqkoCMpm0fOB3csKc6ng27ffao7CKFESgGWXfLuSvSiFP75/fbJzk+7+yetk1c/vkFfuJSIebDE857u30I4BSOxmmtqiDSst3pOYZ+2+dPcEzipn3Pv9dlHZMbU0Uf0JnVOPJfP5IRICDqaHh78rsOtOCcEcuF5WZCNkYqZiII2AZWnsSXjm94jKWEU2J8MRiv9JfsygeHif5f6MiYRQpJznUOlw7prj++cGZJ5JWSVA/WghYnXGuE6Tim81QVQy94g7f5QE9FtFPwQyM9gK8ByjVAXriMpdXQcNapVgmPY0ZTnMPf4he/j4xvUO8YamAdA77aiy3Lgoa5ByWQ66qdw/xzVegOL1KKQJ6KF6zUdWLNsrz7kKMW9miOAr4Em5xGjNx8jNH0WhGsWAQNN5meRfaHgtPJ0Bb++d5m9alDRvSyAMxddE5rSTafcZJdwH8UZhO8/SN2vK9xNGVfZVLh03uHERMX6vhZTsNa46vh8D1FJDkQGKik4Ml1gisYsKMjTER4mMDrzLkIeM/OFIMMRtIPOw87amnv9svTNJPbHvXS+yCxYqa9EBm+U1HaH00kjKqa/hhv1FXQjNAvEI48rZTw+Z1YMcWRg2UDiplcGxyLqio9qKsXzMjs557Nia2vn6PD5/ovG6rgZrmIemGajEW3VqDGCysGaaiiB0t/24by2Gf8l3uACcZSvuuNCVozgcBLrSDFricqwvORTfRRvCFWVPE8Tq1RG18feUqWgw/pCo8IIghEgzKlF+Y6+iY28IzSt0k0iBdmH7I7v9oSmLFOgN9KQtCBaQnOCvuSMmnJeIynUkuPGb6soZ89Jv2bGTCUxT6SWplRbJZFHjNJCd3Z22Ye7V27uhCHRfrjmZdw9oPOSBIEsp/aiD3ZPf9o+2dtFsmycSYlosdIvyAj//yYJ10l8zCQ4ZnOLH9T76YAF2NGzTZVxs5kkK6NRZyWf79FW0+s78/JhGk6p5qXITT7o/dPccNybASO2T160XOuhIWVHqIykVhmsa84pmZOpqG3oZ/UqlfUmqV3VNFwVNeL551FlvyTV9eEsJdXRGQu1MRMdK1N6hrBSk7Au9JvWqGWbyBlSi86rE1yFogSFJ5RObk/z+3dd5E/kxAnewmx/G/6V9tFNj2Lz/hM/JXWuy5q1UNAHUM5xEmrvjHX9x/n6eyT5Dv83ezUjKSZkfC6MprDz3GUkLs9ZKXVgFCYpSdhxVx20mNtjyTrjxJvQGt5Q6JrC3OIjKaG6kbEnhj6Avz/SIvgQrO/D1+nJDr7tiOTfuvb6wFEfwsX8k6L7nnUsfd3M1ZzvUHbOqRaB8fR5Oko7vQvgHmDsOpPh+C4gkyS0L5ObCXv7yyhdr0ObdVbuXtTVwljTVFXCxPt1aPfRFBw6msfVKFNjj9xXILPU1QWa+LkFSqL/9ZJpT/4Ds3dw+fkFQPfIfzY3vn2ck/882YA/X+U//5vlP/8uoS/N4fli35DShAsIfClhtciX6dwr9OUqeWJfJ4Hu929vYKcmX9pGCM3qk/85QuKv//sy9v9Z/494/3u08agg/3+yufl1///C9/+P3/th/t734AdJWrjZwt+KJz9M4Y6A0n0fM6uyMccCespWD1iUH52C7To+Qq4b7fe5uvo7O5wXlWV9ak59tiG0fB3cdaODq5WU13etdiMrPa73XYDLelBQHLXpfLVRm/LEBf3Sj9fHJP8xWY6wGzGS6376E1J9uX3yj70TE3RWCFL6lzKc2FAkfj6e9EUjKrREkzIs0T4jKtcvjvd3wnJlU4h9geNhSMO/6Wx0Me33S3VNxdA2G36Elqjkad/PO+CUruIFIzTz7utp//V/v+n+x4q5n5sFmH/+P3766PG3+fvfo8dfz/8v5P0/HqdlKiMp7s0/Phx201hUAtD8ap4SgNZcjMs1AlByd5kOTHC5goDPkrTa/V47S7O400JDp/EQroYiiIUfw2wG/+I7RbYjKc9y+ub0bO8lOqomF9ZknoYjIyk5nn6LyqvyYX8OO+1+LtYEwYH06nQPSf28fXIqsDeCtEeWlRkik6okjRDYngRCayMqZRIWPj+BA/mXo5N/sNGWUt8FDsJo1e7s7O4d0w8TgqJy1C/1C5jNPr2I169NGU6bt7SUblkZu5wln9a8Qy1SrfImGV3zZpJvqoth0mjVFjPAAfy1ZnChZZMo1KrzhicqTJpuq1RVPUhd0VLRjy9W04T/Z1RyUlHJia6kMc9QxRYmwWfv/UIJn7njivQ/ts3tzDV3+9T28N/8XY35Sn6pkPf5Lj9Z8LsGGu6ax43hdELPkqvd+jBcrVnrAnE+2kVAV2fxoZ8/LJn4HpOFKP+CpKtkIyoUxBJI3oW2J5Nx73w6Sf1nIT9r0sA/TftCg1+lfTEZos4WVlOednqDfkYvKPCHmPQsTQfUr2J34ExWjcqBzYK3NImGk0dspGZ5oFqMxEeK2kwUSpRF1IwOtfqhDMES1sJ0AwPoGpApD+uzfZ5BtECduRzsTrXfrRP7Rpr32FJIiu3IOV/Gujc20OToTwYndpRYIzTwH42lIoKvyIKQdesSZuNOdUIFkSW0qQF4vYa8tciro0ea0hViEREjKT3ldq56fZhbF7V8fY2p0qh+c42O1KJ8F40jNCG3DnoHQkus5uIQ/SvieotD7cEsW9RCoqAbqFXZjAahVe7BeWimmzdVK7T8bG3iRjOK1iM0agyRVSrkdNShWYJtXeq8ExMeEnm/69YiXw9CGJMZIyoHmWjVIJXTkwIiTXnrtOZG/mNnZ9gfjpPwzd7BwdEvcDN+l/YurybJY0SaziZoHcbgYJ2rm2FXGJej7548YfUcvJAyfiQ3VjDWtyM068j4E56MeQacA5dmWjZIx+3JcFxnHQ4FmMyv3hm+GNZgEUQa4VlgK1lzooKgmnfiMoeAxi1eEf1otah/Wi34RTBLrbXQ3P8ZKU9EPZLdIAQzLZZboD0hOpml/dqCI7LGlIKdN9ZrxSJpL66FYh33bKNgsuZaFYe3g+mNZ/gH31m+7ZhIae6Z1ensyZQxPlnjy8KkFrDN2nq4hpTZ8E0jKf78/EenkHcIq/Q869o9yvVMHdUTahIQC63Igg+isgsGRs+SRwbOTxKvJSFlpjybZhS4k2UW3IwS/l6D/s7S0ZpkXSW4GR8THNLmY62j9CwtHISQ3uoxwEHTEvs8N5TkKn2WslSnLRt7/OA6fvDg+p3RUUuyKUJtOXNa2kDqXj6TxWFwQMbAM2VUhn8GlkNmMBK6uahFWiVuoip3c+G5cfcUBl+eacS9Iyq2bCQDRYO2SYi5YsRoT1jpCXvgaSNH1NqQtaqsHcWhlCFuc1itCWVKqsZMVwzNLVFH1J32JRqGbubL+SC+dYQD8K1TtVHqRafkN10SbeWxApvLZgkIOWXhan5eSKDO96jUkV16c5528dYemJ4hrVbsagSJvRHrT2Z51tSocWCd7sLdWkk/cDJiN6PIT90I1+24xOZX0yQyeuHrPMYGDGVrNfsrLWM9/qj9YgeQa6tm4QLzHvkzOZeUdbnLk1PD2T5B3Rphuvkni9A//Pk9/JUQErN/MDo4/on19Ntv6Uwfw9BeTmqdPk0P2D+SDgLQTge8bt6N284y0roLGCJE7c3wNq3uhCM0XyM0AiRvgC37vFPQIS7w6P0sRuWkMMaio2Wpn2dyX8XxEK+DbE+llWgJO4N0bQt99tksHMM4Iw6XWRtoh48ll6VdmiV6SS2bdYL5eUEskJsTKpaduBSaIg5Gspdl03MjNKvp6MasGXtTZ4nhy5KZ3lzM3mIQEIbn/8RriRpOclJBCKseA+ffZIiNM1qXttTinQujYiwjyqet57imuj1XjHNS4bwjNLYmc+5cXh5XlATTe5X8tje0j0QJkOw+IECFrfxWM+bll4unwNgVqGd5yWUQmPTWOO2ou7A5YPE8EzxI7sKbEbL0LUKSH5fH4T1PTyMp6e07d1dCLnuCdThnYOeaKCXeowHpW9ZInqV8veiKaSJNHSM0FcxRuauPhhldde9sMgYozhLz9/qdwEDzd2ggkF0OfuHif01qFmiYtNIXbj7fubGZM+tcEfRCqzAFTeVIK3RZQW/bK4E6ICa51cs1NVnzpTD0oOMVctEs9Vk2F1oTN4KJVCUwMOv9jmyy+KImu6C9LKzwU+fK2qxZ8HQj58QINqL8LJCu+0d6p04FSJc0SL1WTSGa6bM4N7qxGrvqo4BqjQfCYnZwpdZb1ZAcFfdjhUVgTxSZ60l+8huBTWG+k0jHjE9xxMh70Eea0zXIesS7UycL38+XlwQqeW45Jq2dThbt2B9NnUR6QoulTCsZcibt2yMpmCAs7/P7i+ypqMfwSiNecvV8zu10GHutC6qTgZt4yrXVuN4qZ8KBnJZ1sVEDBBLgY4KxoyHZqmFVTUqa9WZFoCAusY2i6V66IJhNsgV7XcH+511PA0muLwbdFbqx2LuNu6a5XpomepKvXDN7Fx5Bho7fy6PG79x1EITU+HiA4lC3HTKaZYHMPaq3G1oRIyooMJKos5Iy3LvZbOeD06hRBiM09x1ZJInDjdDbFsUMqT0OxD0Jl2CmAabnjRX71D83gsIcr4JeAipx407YGfujPibhBt/So7XNrWazFASpm45Y9GXuK3dFxiIy93k2vb0rB10S+baTifkitKi0CYLhAm1YCwUS0ZTTzAt6C2ex6hXSdudQKpxGp3YnV3x10qQzfGtsue3HSXRK9i7ztXbnyR3v6jkyleWwGWqxmMIouhc/bw+0JQmh8u3PLPx7Z2g1S5WXVTgY8lnTGD66Lc8ZOZcyY76M3u6HC53+c2pybWtyXVqTsqpU8LjtDnYEzfwW1WhwXWrTgoWVyloYVayUdOlUZEHtJZIucH3+kpzD+PGObTqWLk7Ztb46TS5LL05b3l4+cet2y5NQlnXKzDp5UbcbjZs1K+8FnH+K07GsIzR9lT8k5W/CJHNyj3tUD8r+q/c2OnPvWxQ7/+b+z/Ztm4KzUEEBzL3PM+qT8F5FJq7QNNn1dBKBc3YYtdB5SX4PgP7girc012V6ZW1hHoycqMGZ05MO4bMLfilsPSjQP//uMLM5r/rsbnM0osPFKxgio0hLBf06s0dMIE4LdzVrkRQLqcyipj32mL4tIylp6lGbJ+RbEMOOMSwrTcNL5fDmdoiuguag0flPLEqUkHu0JJm+iq6zENys3pJHCy2WIPk7t8IBMvjInCJVl0ToqqTiiZlTlCCoFZFJ3TOXQfpc5dx4qFih23wkPVtcAUQRxscchb60vWw4HCogdRE1yshHuauQnBLiYwYWY5czj8blECtEix1knpCtk0IWnXdsl/WdyroqT/8VPFG0PI8jM5dakUvbA7UgbdK9L6kXBbA0rEOl9EuWkmMeiseSchRdLUObl9/mC//8nife7v7Jh9CxFxUwmZgepo1LnF/nlphmELyIJGdKbMV0vNQ+h7SOSX20aA693SMqpje+h+ZaY3P9L823b7sPft2Iao160wuI3m/Ejz788Ofwvu20m99X5X3zXnnEPQg0SCS/6frTkJ9RwxB1L2D3Y99U4WiY9WZ4CyrbEliENaiFEAdZb9qd9WHoweqS2DnPRdmnPaqVuE2mRPgdzbll7stGgenQQZFzo0xbhiMS+23DxvA2QCvbPRAXnoVpb8O6eidLB4c7JwWn7kIcFvOQG3G6LOnkicrjbodfd+07LyM0ZinvlottfkPZszmdYHZLnHvtSe+8BwXlQFqwG62fq8SyycbfWZ5l7t7ZZzqMemy9I43TUb8jKpu6SRLjM7T8XnUjJvkeLZZPaqePW1siItysWcJ5uhTboQh9IFi7DDI6SYrhdB4/Wl7kqLg1ngt93wHmff8b/30f5kiWNLQSmVMBonYRayXC+UffkCLBY35Dyx0M5fkfRVZy7pnv81olIyq2IYsBFj1Vipv2VTsbTwcJPSCd/mP/+HhvtzTdYNhKx2PGaEBRHKHussPpuYjJy0tLCyhKmLlaIyodbTUVNovbfdvb62FqPjSqFlfWGZm/9VPfVW/87vjHrvYPm9pkM/ZO/ftrRHA1opdBc+DjKzN57CM0ye5u2P6lshDr5csrhmakESnkZ+TS5NHHlED5q+jP67rJo3jyOKfbNy/5Y5rd4bq44MMtpBKn/F6eaS6zdN+bYe7RcGkkr+kIrj7h66RhM0z1IlG0yrvdjnl1L8a+NsJ10wY+yKwQboHMbA/mnRXW+bs6Kz6C1HSMO5VHRB0FrMVA7EaZYt3Om+1DfBaboYguaYR19D3eZG2D6/Tu3XDcdSM0B8xFhKc8GREOQ1CwpgOXyBdVaPEJ9fvMV62xDLFTYhCvTqUjNAtGFO/lk8VRk9mlN6h4LjERhmxKJ13gXk9cnq/pIU0coLMdwuifZn5zJ7a5qBRCfKGWFE5kT/cjNKXB2D79R+tg+wzdennhuO+3Xu559ZrQNX3yH1IzZ7VKYELca+4dXDydNuOc+FcFiZw2YambQsapWR0/Y2qTJSH1AbEuBo09o+2PPPG1BKKFGfR8kbnvfPk5sXGhZZP/hJZNPkfLhD7qGWbJe+murYYzPCXPrPRXnL4jNLNoXcCGxtdr2IylUjZ/myPb5em1X1rrIym2GX9Q1y/bEf7zrZZO0W2AFSMpxZX4jPc6UqhwasWqoSMq46OUurJZeJO0nb7WsCKU5lreuGqrVEWgoH0/S3wVehLFOBX6nIxGaaYLbdb912/39hHRvW5RJ8wUiTtHomtUSs32uMRH4hU7L/dVG0XHXl462J/WIyocJWqHlDuPcxupIbNwfdA9765CS1K1I6/kVH6VygH6Ode3oRvm6H7dJp5K9iA0gx/DEqXLQdO+9LOWraWtN9yhf17O3WpLd0gjKguGa6o+PP+nkQGghtXVEB/oRDTiPalMqhs1RNm1gIQtYiM08ymWMGgIk1uWXPW87sZctQvULfM0+TxN3cmwpSwTmIC7EBX7R1qsUqN+QW6v5sck7kv4rUQratFCROwWotV1j0QrqFKQigT93Ty3h2MfxVI3LITl1uf/lFmr5Eye0xnzczEjKhf3xIKa3wgmwLtX62o0nZX6oXE35avR+nTmCfCdVYK22VEMmnshaZSaqZHmgrF8Wip46GtA3qbV5fDsJR6GRfujvImRijLs+mA4vqHKefw7tiOeRZF2SUNlk5nKV+v839n+f9DObn5//P+N7759ksf/efrdt1/t/78Q/H/5pSMq7+swEedZ+cuWrPZmft92cnqcyv7jdcW93NjQxnNen4kYAaTwC3R0L2yLAxwasAHhHdntIzS822moYYW2T3O4PSqmCOqjHNdym3Xylz7aj8iYlhfG/zCem+Gk+4z7wD3r//G3jzZy6//pt48ef13/X8L698E/ypDAysBBir5A0BbKxJJJ1DLM4Zb1Yf4ePZ89foS3XvLqF4eXa2vIxSE0I/yCa7HxIyrfCCWg2x5LgEkVm6h2b4bhs37Hhnq0gPmbzgypWOXvdUYduoNPB8MME8CPjqbcG/dmqg7IHarPYXax+bP6vhxMi6U0WQfIRUiLi7UQpJCSJn6gHU7ibTeygu/5FI2wIyrEpMhupwORY6Yo9M48BMrRMMt6eP2y+wt57NYDRLYDPuFYxzdsXZuWmQ8D4wu+lH7VJi2XL7TEa0E5bo7QPmowufl9RlcB9VVLOmTOLU35l1/Z7nZ96Gb8kn1cb7thtCLsuy23hwaY5h20EcRNGKVC7Z1DezwJYE/LWFBLQSM05dvzSrE6Dmo7yoNDFK7an+oVwB05OlaazWVWeUwP2lmQOiKEiI+ayhOWIktgDuh7SWwadb9skQFjmteYddh8r19bGYwjaaNRIQUO8Am5iQxFguIyi1/sFkQmplQ/CVoY9iY5s9KPaJSptJoTSmpiZ2nQDvSAfCM8TQ70uzh3SyemmWEtAuxu9wUPDu+xrQdwvhPzoGY4omlniQ+t3bocD6cjlB6poTX1KSWQw+WmhbQOqdZNKsTiptqSRFBguHHFBsMLr/XoXyWASRg0VrNmuFpoNWN6rxSX6orWvCxkMy/TJDiwixClTrMvD/7O4//60/YfgP+6ubn53Vf81y8a/9W/3ZUismlcOF9GC7NWiWfhaxGhLCTrhCM0u8hzqE2RpLkiL9nlKiHkjMApRR682t7dPyHX4n9+zx8fUONLjG1KLGU/XtNu4tmsGNAj6BEBY4GKVzqdgCrtfAjWs2B9GFj7dmPUzq/Kx/uH/wgXvtxKJ7LxJBD/6sf3vx3/89+x+9+P/735XQH/e/PJ1/v/F7P/660djgFy9zkPjFMgOItJ6iwxMClLLcGX/ybF1PUZ0pETpNO6ggb4B0jRW56PpCNXjxIfQT7yHhvqyIPYAql9n0LV+/rODgOV7KDkbwv/4veOBTXx4BkxiRdAaS1M+JYB/8JgBxS+JT8p8Y6HiMIhIzQ1xcMvEepcFwTIRgOihoESbWoFpiv8zDrtQWJHuI6fpv3m1KkCcxGMdCzR6lpx7SxWuq6ylaxW1NojKZhvnZheur8fbYAXWzY6Gt/cfhu69sOlNKEU8pOfV+VU+SSX5BEszg+iMoZ6p05nTAbFQU4ua3MFa34g48AqQ2Y4aIG4xNawwSQu034iXbCvR+9/4PmPQsDPKvpf6P638SR//3vy+Luv/r+/oPtfhf+n2ewT/T/NZu7aMptVuoBCeTe7IylBoWCFF6jZrMojKpQ4x/04P1BQtc/kCYoFXiWeoCBijicoiC1zDgHBX71DfOH7/0WnhRzX77z/P370eKOw/z/66v/vS3n/hStH62Tvxd7rZGVlpfbD1v/9tRGuPGu+zR78NYJ/IOTXP8HfSICN32ZrEPT23Vor+qHx/UrYrNXXfohqPySNlfBZMwIaCJieo0iUIBhzZmu/wh/69SDmAg6PDoHa/uHZyf7h6f5O9AMEb21FVDyURERfHu2WEYXgVwdA9xv4fXxytLO3++pkL/ojKuWMU1QM10axtoNiCNwnu9lpluoUtsEuBRpBqRS29pJCFGZhCMbtQWsEN4B0XGM9TKM124J69CatlsFLZ6Qvp+xpYbb4k+Gl1TcrejedERwTSMwPLoWOtW46yqnSLk1mEza4RCMqUXpYg3xCD1ovv6CVmdNhhOOKNFUhLz/yYIBBpUI7Y+xZqDd6scV7ZGoUsG+MkXbHauDe1Pnla5MfCyk3lDsnN9ZqXm6o65zc2JLy3CwqqGHlYiwDgVEzQQuml91cz1Fvv2v3JrDo2KgS+4dRtnQcK6WLqZyEEfLWhrNj6k1gWgy6Uhp9+YX5tRJADzukxrDfPsZhcg8jzM6kgga9m2S+minraY3vqBT2Ec8xGhFNNO5Rk3cFFsffVrOV1ZlS2PeAHPMjKVT0nQfcs9SxnYo6LKzfTp08FPhNom7GrdL464YaTGG0FIzywJZhlpTA4GC6QU4jKtqSsqDXkEpXSwMyUKSyQDSzoxhtnsKl5Y6qCZBiF+sOV8mvnNkfwP/h6TzFPR/fzD8fFzif/9sEvu9pXv/v6Vf/z18G/zfM4uyqn87i7C5bQOM39vx75VC5qhQF6UGBPIfFR6y4cq/OIS6A/rBzLdptkyvkQnAHPIBA4EZOd072j89aZ3svj9HaEllC6MnVGndfZJWas+m5WIDEAbawc9MjKhJIB3+jMfQpgv4jKqdQk8EElV1I8SlAQ4vgsnu+tfwnTt8I4SuMg3C9Pb7MwmawFkDEMo4XEkP76PEy2zZBgCuz3mn3+1hWHCA4F/wXB+j6Y5W8eYyhSldpv58oIxtKi940omWobj2dIWgTEY6WkTktA0K7ag+6fWCOGPKHzq3r9I5EH1CW93QO4bF7DofookcPCHTuPCM0zm+w3hqUj8pMqvzfYOoSA3mdK+dvhnI4rXLSHco6495oYmBgKG1vIymzcASMGb7WpIKRr5HPG15WY2gV+6GT9AbFMylb48iBedXOXH8JNh0B/b9rAxMYtgNNIpDhCHrBTU+wQVmPaSmHBSMqbR5PBzGa/DDEOd8LWhdiAl4vrVnME8RXf/BbhgnCmNXc0NCLwsXXTInFWEm3iLKWyknMgiJE94FSNY4pOVSIGyo1GfSjngQ9a0CD18yHhDPiIi1g9KTlcioUK0yngT2pZH+i+/0jKSGhYODN6S2IDtUCgE+H7TtpyRp1yoI6gtz5wWJI2d4T1WrpNjWnNEFmfv+Be7h2Hd9G0LMUjJz9jVyNBNGaCyJN3GvELxI9OVmACLJaWKy3bqneJrelGRTpxnUzcZGiu7t2m19wH21RR0vSW4alwEx5/FsPs33e7CrHUikDi4F2QofkYWLuXXucrXSxYVRuiVVN7rI5yn8FO6mwvWA0TxKeB2IiX7AI9IGifUC0+YisGq5qLj6awYfw/JTlLEDvYnFQWyMpdpe6m2vEXQlqr2c9bXqdW1yYkyTnWHPB1b2HCzoqLNXOpGS5WsdWVCMqGDKuOiRmi0evTmsQTCsR0SPDUFYeMyO9rEXGDAxhaQgyuHBkvGTcp5WfJNa+wSez++ZgF+3nT7ZP3rQsTZWgLNqO2txkVZ0ITIffiRBgl4FwbEYxn7c4zCELohKhlrZCuP5O+xORLU2mIyxGuc1ZmU5QsXyFony77KnOb82yKdl8s2wvY9KALE2fMi6VT6ZeyCwlkFYLtCodtRhJRSR8lLYUQYZ1/ZZop00aBrYOF5vTCWjeYz+vNsDCOCMqhuwS1wyU9r/kGdxrr1ZUXfHsky9VFgEmTjQBwylW1oQUKgtV8epy8urQVsXzeEV7GnY3LOQCbkDOQxQvf86H7jVaHr5OsYE2TXRPV3b6aXvcumizdpBuiVVE8q7uZm40NpsOTtP3X4eLppX1LgVnY9oDPqcpwqUCNFDvwlu02mkcn22hN7rFbrHU9E45SztJlS86iUfOzgcHsts4sXm5vaKEit4pqCEc5rrF1IRuocLBcJpVa2CkE3oeqay/NO2wzaascuiGlyzr0U078cIZn47Z1AVviPdMi+4UzmXviqLntzC2HUQdyV1XV9+HfFEjKrf4lpd2phNcanGIB9qWxXC1Mz+CSQh8xJaP7qqcdYXY0VvwzwdVNt70k6oBXAtxWqAZyrKFO3k3Brb0oqayx6oZkTjNIjA3L5HzH2nEm9StcPidD7P02SYveCM06yMqLoa18Axdo/Ftm4ByseAJ3KPaGYOWONpIEFlOh1FmLtfHCLxHN+aiO03VMxYWO9eh2aSbjsclZPeP9zASdbQqIstu7XxpX1qqcVYhHyWkR4fTD3aHDrC2tcg9EZRsGQmcJkmtasxiosazH0ck9gsTszoUnNTbnX9Ne2MuzjCL5ftD4bDmc3DpojeAnZtzWrLjFPZC9nNhtmcjddA787wdAeZxnGsg84iCzzGFpTq+q8EuadyyGmoQFIfe6RsyqDjCgbL7EJpjo9G4N0BbMwRpQ08JuL7QbkpoE880GU7a/QQRS8lrHQTgBk8BjVmgXa0G5LJ3k/1beAW8ONnbwxICkiM0ZMHkqo0OReHcX+0+XO2GqzUqZZ1Ix/TbYJvXYB8S3MsYx46L0qL7jkUlqigzIGHDRUWt0N0qtSjZCJA/DE/2dvNVxXhX1Y+tZEUFTTm2egZ1BaVZtJF81NjOrYauxU12yZcncWEp73qZfTYJebVsrWaEqjlEMK1BIzT3CyQMZyMpVS0kcWsoyNkoJBiPSylheJEShJZTwkOf7Q5daj7dgG5UamboWwKiMR9MC+Y+2h0MQoAzxBWajKeps+qjM0jM+vZg6sNkIzRwnwkkL1ntOfYwKisIFv6nlATZSopy/F9pWcRdrTN3tXh5z4fjThpwLlUmSnHhWAval20E/0pnEN67SU1VSji50jrZS45XnXxNmKZNyxU7mYrPIFenKUkGMRC/11GoDMcFhqWz9s0Izr8VW2SyctvuX44Rxmt9nex613HdEBuxCStqxbRwOoApGJjE5c1ADoUIr1sOZdH+3SFBjLxHBFbeOQwwWo5ub5SL3NDXV8SPfP9D2IB3n98GaP7736PHj58W9H83vtr/fEHvf8Ac9asMgpi3jxlykHAbF9AJXuAh0YPE854V730cFCmkdtEjXnea5PenEe4cbJ+eIzTo2t+3f95mYxzErjg9enWyg8paSfjgwcMHdULqWP779okjKhLbiRabtQsuXRiGy6Ppeb/XCViuQxeY98tLEogiEvhzO+x1gxvo79op7e+NZtAeX95GmHJph01Ee+d/ZcalhlF14DcvJ1fB98Emp1o6vcsm6SMqQjrUiaHqD2orL+VxCXJMEWlyJfqrToqvhN99R2EfmN1nUjiUSUDl1qG3D1EmjIUiyj8lDjrosyCoUZLD4eQ5qo/skSMpDNnldE6VyrOUVGzT1ourM5j2+xii02xgmg/LH5axn91rBA/qgviJ/EiBWexthK9v6CwFWUyRQv6zPSbNoTCMaSgJXTk0CIT8VYfPcafbG9NPyNG6YRokEcyS9x9MoCNBzCowkpjLf0PgQP3wxCHl4Kgcl0dIFcLuzRRvXsBTwlXXvZ4a5GhIqSAvqrOa+tZvruFf68dTMvAfBdx19OoM/ZlIHoV2SClosBhYtPw1x4ymdXIpXex3FgeGLHTPeUKiqFzPCJEG/9UwtTkv6hQfFR+8C2C0d+Rf2rmhzSNbYld56LN36m3bsfkjNPCVQFmR/bsY9pFpW80C2uPo8jBzqJr8uuTcViI+LL4vSRshpuTNiyHRtcMdfmPN4aypbRCB2M2LeGYu6Uwmktu0/0bglkYomnD9btKo6EMUic6CImovd1u5o14FT0r90BSPGcW3ocYMe4MnnvMQBvVp5lxxIMZxSVLXnU3rbTr7yF5j3AHK2YwW264W98xLB1Jk3WTzqnJYt+ba3Gh+ov/cj3GDazF+y14X57uJxLez+xxC3uvX0XnJ9mTgdwiwNean5CIY6l3dROpXyBx4c27HqqN4wiK9KxI59RXlEPGORPiZdvtUSY/RhCsjKRAVr0KCqJL5VDlPqjwm0SjquaOwb+2JpV/rc1uKSZJ/SS/6VdXVrySSc6osENLSezM25jJkIzQr3tl5myTe07DurvE9nVXslIU4C5wM/iM0xBsvCdfz3uc4WBSN6lyjJfhDyE5+YgkVKddNe9C7SJU8jBOZYMs8IGJv8dCUUM1iSFA5j8GLmlPkjz9TwnxWQ1KpTXdOPvv0rCq1wGkpqY2DLOcZy9ScHWFZ/mM8n/sYtzhAGAvTtVgZiOS44hhJHpjPFzdhVNqbhlK+J+f6FzSZvCMqj3KYmBK/g/lOMy60TBbjddD1l62b6Ss66Co9IynKpERfMYinthEXkO9NXRfrMqV2oDrMrJNch9lVlesz5WjSJHFkTUjZnHL+GDmN1zO2EqZnJrJvy6mhy8IoM7/lr13WVia8vqMWuwmV1J5zy3xG8q1m+A+4ih4dn50mksiL2DnZQ2VX28UlW7c7g3IcoX8i5c6r6L5t1G6BHmuS3xa/KIbE23Scm5j6dNTFZz7hD4yl199RDFL0jEDv3S24k5ObCfM6LZY9+EqQNOAbGBjyvzag1eEriGH05lYFWPz63yMqg8TUqiMp45myiaWW/Ws6hL0T7Y4htWcGhYRizmFa5zbX2t9zai78GOUhhcBMRkwMO6E/ODgsmf0fwt/LR48Gl+H3SF+9TkUk+llQn0P19mDSuuwPz2ssR4rZIROL0yO8bWKPf5P0ujXt2wmlME2llmeFKFLjclcfv+WctA/ApCM04watUuHHjC7sE4WB/fHg1V5+XH8mhDPL+SHQi2HaILwL3yxD4KE2VyuFg2bwacrld/IBf5mMcbg17akXaLodUfOtjyM0+IU7QqsV556+86KMouol3xXZtZ9yuODfJ6RbjcsY2sP4UfkPncTe3G16HtrzbeOtI51BzY29ppefwZqo4WauW0mqP91LphnMnmqVsnJlrYLfk+KYmXqwHJdGWja7EnUr8jhP6lakop44pavlj1DPYq6y3bkiWrmbWnfYqfbwPp72zW1CuFLJYptcLTNjwnSIO2njvLuWEshB3tao3bluX6ZJTh5WkqSUWfMS8taVF8EVU7hTupSNK8mhNxvslzKVSdly2DgaNh2xjdY+9lazLRSvrT+Df98OzEZ4/04gssVcaL6KRdU8q11Emof4yp8UpxOa/3YT5SqG5ZbO5ahLTd3ldLTESWVpZR2RtUTrSrvQMtruMrdwKW7WeddwHZOrQWm4us7b+Mgjv7LCabxo1v5vZ6xqaH3m4G4sm5I/sZlX/nl792iHNiOVsBGuG92jqjHOKTj6mbX4Tzq5JJVajPZnGbHpuSy7LMxHV1TRLVM+5UrUlJrl+xl0XasjKmuwP7zEk4k05t51Y7F4wckbCFJq/K9pD7jsjcqtWZkWVXei2pzDKLefW5Oi322j9oGBTEuwzi23BsVSoMGK/M0yYxq91HsXxIy0fjp6uacduSIjKr4fG+ojKs/lkl+WI9GMQ4SDi5prNqeWutmEwtuUUVCPH3wPpM0UmXOzq4Yae9thBRgMpBmBHs3gIzSDB3dEPhvZV4CtEzuxdfxZScu1MM+vq8vWtCcjKl1sXXX44o5V7mXBOCUdxi5N85s24eZTk+zCiTw6wBsWKWE/5GmxBZAlR8uUqel7NsovOMRwoL7vNH4hpq4hIzRyf8Of5KsS72DqgdBcxzEDigf5efFd+2LdhCAQsE2ukvmOyWwvblXttGvFtPm3NL9u1oysnJyfGNgL0hioj28m4zStqYrGgtEFeflJUcVFy76SsbcqNCMqUg7mh/koLr7FW0l6Qe/brJOdtcZCxJuiyWvU0/F88Qit4W4+Uts4Zw/dGJtXGDx8YGtdQaYD/gHGDK/xJPSeGogPr8KkMuyVTmmKPiLcBKXnQje7LNxDtMCACEdO6YszeNAT1IvMoqZZHVQDtrZDWGuEvOpHCCM0W965AmKcBW3nReOiN4YjqnbZ6cTB5dpaHNTrkVq+lp7dz/IEs3QS2Eh6yoOrb0ZKBEHqnHCyDO62/dPwJk2KVOHSIyoHW0+8jThnozhZS1OvhQ/FT6zUFm/asJ/gaiah5cfRqtcf/sRdXU5Ot9i1tjtMM7niQWsnw+AcoWQm6DMSduo+KTRfJIVrUSMqRvZXHF2Yi/UrKnDQ2e2N6W00b5fnXlM/sofKy37wz9ubei0b/trt938lh7g03PB3gSM0DMcjKjOGzTnUIypRhFPZYgUTJt6YxXcF+k3t5xbTBdZJ7AWfR7Z54vsxScILWFDnWTf03LvknsAs3G0LuwX9i48YsCCUV6+uKnQr79iF1mCN11+LNVNgyGC4YnZALGE/bf+81/r74X7rJ3J4DIlub+gXHRbd2Do3liGO5T2Q9DyTkGsmsln+0sJQT/QktqBWPJjzQVvuQsU4niMqoF7YXPRtA7NV+K467I5RuCp98FUxtFz/E51RfX7413vx30vw/x49efJV//NLw39nWfMCyLAfjyM0mylE2Ft7LAPL1UnKoFh3UMbbIV9qGh9W9k3eNtWNttNBTo0dRDadCW/JE4/eu1bp4MWebAen04FlVYDJ6tBNwAHMwsIMFTwtrlOFUAupXXOzPCxsWbOZNmGikzSDv62jSfQWt46ur717EgOsM9i9+0oor5CwSOuOas6DJdOEGAs5L74qMdABzkPgrgQykDkE9F2Ay3oggQYmXaXTmOo65RH2KYf90o/Xr2IToXDVIe7H7h2cfL2OIu/iWN+WopxXaDR0P9s7OUxCoQjN53MZ0hBsOvbBjEwpRr3O40fYzbvH+zvcJe4Y18lfcKQJcmXAx2pWz4ZhMe9E8ppqWiM0kxIjNO37gYuzPGixgiHOqmCIvwIjKv/34b8bP27dz8oD3Hf+P93I23883XjyFf/tS8H/rYRtQ6vO5a524qocll528ZTqot1b2O92Hv0+Pku7cz2Wdv9of6Xd39Nbafd391W6+x/nqVSjN7iOuc9Z6e5irkp3qx2V7v7hbkp3P5OT0u5vcz/aXcD5aHcx16O7H+l4NMyvufC/0O2of/63RFryeSUjKfPPfzj9nxbu/082N76e///77/+t1sUUNVhaLXPy01MPXltSFKYrK9FxykCxZezCj3gMxyM061WgchjzVUxHTwhcZ55pqIctK7o1C4gaftl+3to5Ony+/6L1E2wjNLyCrsJluM3+Y+/NaRKKHPU6vQvR2QEHiryUQ08P949bey+Pz960jk+OXpxsvySLz95gwtac+KM9vuzEQecjNGbrgwfWqrOGJp8Rxv01sL9v/2pfXDb+KlaNL7d3To5aZ0ctlC0fnQIz1WqRm/pWK9wSh/UxhL04fEUh6Foev5+P0/TH010jNDPCaAw/TCcmeJBOTOjRKB2YYITHMeEowNgSr/f4zX7t2b09xV/24LM37tHn9v5r+GrzR2vnzYtf9g+JZOfuEiHrMPTl6ZvTXNgrSAYBU/mEr6ffwjeB5UkjKfxQAa29w5/3T44OX+4dnsHlfqd1dNp63fp57+R0/+iw9RIjND3Z+z+v9k/2uEECmJfPuH/809HhHuZdJOf/OXxNQf8acOsGcKTdAivY78F85+5sd/rhB3/AWjvHr2jIZv/ztPX0W0rHP4lI+6ZbDOw9ht8SxgFtSdRr0/dNb5TRN/7gYRi1xx0jNKJfTLs/umpTGP3iMPRiIMTkN4VPrqY35xRKvzjt+IbTjW9k6EdMDn9QyGj4Lh2PuFz5zeElYbC8blOes/yTW/L0f665JfCDW/L4LxucjH7ZMBvEIVf8fUVf5A+S68Y/w/iDkqyRkwwRUNBLOyki62cO0mchzuIC0UFaLH4RWAvg+nsz+wiPD/7AiakXcaImKE6iF2OtGEXjIyAa+rmOieIjK6lhhm/fhvTUw7ESXYPgwIRHqMT79q1LiI9i6czgn+G/XBXOS/9ykvq7qx5wNaM2tgx5GSkXo5DvTBEUOYONiy0EWQs1xczy7KO7irV72qMRIVzetvtGmy1nnbaatchKFVNx/ohS2/zTKgLmdayagh6eZXGQIbg+M1T0cs4woDmzxtYjVG4a4s9HW01We4UIlF+im2f6+XA/1OqzQwEBgkwevSWqeCgebU7DeDixyJ1Mssd0yFR5FrvMTckjKiyx6CRDksgFisTRBiuSu1DLmue4LAlvsttOSCCCVPvdMFq0+nA9YWltSeX7i3XCaAwH4ywJSbga9i5qetXQ3KdfEaFHYRJTNGcslnvwCeWyFtG9ZVMyO3LFIzT4dg8PJceW9OdnK3EGV7hRH1agLgNt1Ssqsp5NukmuEnaOwH6xtobbwIwBumRG5Xp5VkF6LYzkrlNzD85xuH6BAm38O+p15HtPvlOpiTd/Z2WzVwVa0Xaoq4LDfTFu36TvhuPrcMutKet2NVSrpqp3nrsjNOmsrPlPy9wvEd8LxqRaiU03ISeha9WJtaSVout9hFqCGExaPU5EJ9b9c2Jq8Z2uRUmu0kxP52caszZRWc7NzbJWm6cE027zzXqUvJHKMZTLaJ5RbE4ToLPKHlxRXz3TxiY7qjn4M6p8pmhikP+G5iL+owgd4T+XMDofMz3L6no+Rfjtj64UYmnhHYEW0Gt8DEFpglAZX5btvoouHBCQqFlJHRk0JNzL7jK8xhrKv/lwKdREHzpoV901dagjp4ePVfAvKePgD/wT6QVY7KtM2Z2Kjlv4asAg590jKXkxMjea6RdQsrkkh9oXl+J24p1TKQtp+cKmd/1uK2e6gmfj8T9e8F3Oles7Dh1dX67zHU98h9ocpNBy/a7BJTSTIk1gOYAZa08QwnLSAkpMyLzkcq2itVp4M+wWwkTnVAJYJfObhKBN2VTrZ+SYxEornbU7k/5dIylsIoq2KouMA1cU6dZJKcHNNJuIlpfTkgN24VJ33X1NoT7EHsF8zcQX6LqODEwFniU0mpijmnJTJlihk+aWtjo2pTB9lbmpZ1p1fmAheXB5GJquV4bXtl+MfmJp5TA7pwXqdym+EQuFdDz2uhZTSlgToRJF05IyLNLprEFV2UtSqubHc13oRTWTkh4TGkpHLEdCxzTxSdxcj8NVfn5hC0+VrFYsWYmkP7rSvlmGP3YIySFa5h/fFnG0cGsqX1pvtx+x3q2/F5HSXFkFceeQC6DdP5R1BM2Y63f0+IRbkQhsWw4bRzY0cS2yZF2HaE34iG9KIyrcu4zoitXiaaTzdMXKUTrByLC1dmChj7gipqKoNtnuS2+F8aYyk5MeVJnjTYfX7R8jKSWXO6Mxgje84ijEK6tZsrmyqqhHfs3wuYBGEkaBnLPoumEXqazNZHPR9Yea3KTF3kAsU06/btOvS/rE1HrOZmftaTx9oxtrOhMpJyYVq92UViBja6hyxfml3rQl1ZmRVQtGbXx2qZgjKk4ILPvjXJgosaRTZps2J9tarbHOP+ZKzLAJCTh/e2jOGWo4houemZ3eCWzmucwYWFDvP/BzIyo6pQKeAR9tMJf2jKNMbhHNlEpdN6XC8NEI1oRA5EQjNKae+ornYOhxDqEfL9tx+FWyG7CzL+5vKF7IQC6MgAbYsHWY85mJKOHI0U9MgnHL1WZr/v7ItTQtVVW9JQ8npn20ZEwvY0XJfrpI2BFqGmusW+xvTM7eg9r94vzEauP0tB0ert2WTsclYsSMoKdkH7jlVOSEiJytQHlq4YwjKqxD3kzNLTK1+YmphBYHAoG4pNjybvKFg/xHpG12Z8cvuiwqfxR5swl7pDy4tu4EqBCPARZe0Wfd2PzavrRbpofpcIfwcSMv67aH7GFG6eRlnWN8bUf7ng5l59kbs712bemG2YnDN3sHB0e/hKYmFVj+3oVgh21aCIx5Ok63yFAljXKWWGdXqX3A5mdkgXwu8BjY2wav3iwhrGQ27aAxNWxu5B4EW5bfAb2GsVl96vpY9kbkAVRPm/HFkWWFEnQMJRDliKTU79Yxt3UbJU5S2W0cQfZgkmzcIbAchZFUmTGSjGwLpRJ2OXKIFGvyBJYlJt4EQBMEl7S6iBhmF8KlEBIV3p7M6/h1TEufc+rNNhOT8mF8TQvWYDZxQloXZBvKfA5ZlaKWgjF9SpJnbwdo//R9kqys5ptUdj3UDNmFlTBM7kZyOMXhRS+F4TAf0wFhV/O3YbbosV9GX/np2xfoH4OYihcQ0SM0YP98coTaAfeZfxfcTOxvd12A/cS/K0CAunB203Hvlnwk8GYtCWx+q7Dg31ns8Hq0bWJg4lHjVRzXWSkyZWe/ZmzGyEPVmc1EDFIgAjFKTOtsBVm12F+17aCztqb0i5whZZhXr/GJ7ZTSqqTk9wz66k5Lu4FjXFdQayM0YJ/2/Dc9SvhBOPklwqmMJNwh+Z5y5VBvSfVwbvrVohBMJgIjNJe2OJoSoUx9ZAKoipEirqRg73dkwWer57aApFGsbuyqVLhVz8/ZdJtwLnGRm3CRxYGzG1Dp4Lntifeleidcq9VKup37HbFEw9EoBFYrNF66h8ZBd7czkT0g36MQY1y75WqPzt681E3lqTMU9cBG+CdRDgi+X82eIYqEMrQHEk3HLIcsErCS8Nzl9eLdtb2f5dI0P+VKLfQjNFdnO30Gpntk7UMGZMwermb1K2DNJH8sfyMqsKbJzUAure5w0roywFFIAf5rbK3T8xtxiia97kkGHuFaez2cGwJk1NcaQLG5XC3tsX3FLkS4tmZq2lcH2x8iaiksLLXoihelsnKZQmDuhV47kI8vWQyF2cQvywE5loliq90mBrY4hVQW3AbTm9GEnDC58zJx0xyFj0X1lE+ZPP3PK3Tps+kn9DvKkT+tvyHnuD2+sx2OlJqfKiCjzK6BUDGyt/jEqsm7YL6GTPKT6yjZvVrChL4ky+Xcltk1mWyC5sc2AokE2aAHpU1Cl7lwH8jLO0Nxu4OXK94w8BceLBFskMRcsLVVrE7SGMJLQ/FMMxHe2yM02u2aIhQbV9rEaslwxkQYTdtWFI9CS7yp4LqLrS9rvklLrqNyp5kJbJpnM9pCVXjxFLVSDHZAhq71zGsFeVOz2yT6UPsksXSZQKha4N0p4a9ovpVtNSM0fKIh+nPNXLYQTsnS09M7OwtUmtEa5lxzlDwB600jNFcYIyM0NecaEEMGsyQuXye8jOCVxKBAkbMynaEWxd61a4ltv0lARRZ0udPVXECjrcKN1AiHy/dTxqYZVAnhKh54NO9s3IuvQIoVwn10tuN1hlJQmlII2sNxeQFFL2tJpZON8okrYbZpYiNpNJ70+EgjxuZOuKTJe0RycJMuVc3vRsIdstKA+cmKFXEXQ9GHShS/Tzuo+PJdSHau+gWvWGWNxnClQuYq7Pxy3yuGr5TDK2r0VJO4W/hwQvlj00z5GxU8OBeyGGg/IJyEK6vZSrjqyqE4l59ToU83l4QtG5AJDI34VdcZU5kk4+Se5wHX+oLemdEpy10xF+9JXOjdqu6c322/vealXZPrx2jBlxCVxKuDbjJuqYs8itELiqgHLDS/c2V4jzH+tHHdV5E6P4vm8Ou2S6bQF9QvKmFU+h7FfS/HSnwfl248i5jqoAilgpG7zxfR0hIh7pPfoUijh/rnv4Xnpa274L+Ie44o/ZqUuDeaGWBScj3QsmL7WXJd76N2rvWRoMVhFb10vRa2+MgtiMuhICcTVQOcE33fJ/Zm4fSnC7kRIzSVpG41U0apqLtoRKYcFXy6bJu0OSM0j58fIcUukVXbpqmj2bXNF3t/RAMWqRmpTiMpaVXB3yIlZygqy8bOc21e5se6yjHsOOduYl5atUN5DsVL4AEhjX3aqkZEnO/kOr+3LVqCh/c1vwhbQonewfsPEmGQxUmdYJhZZYLIIPveImreoBYe7LZg5zjZPnnTEgzl3TfFMPojPWff5Ur98vpIoYSrZpDhxGCST70w+s8ZOP0+/28eQFeUAwTW17xSjyR4Dxa7TZuW3p08LH0PC9jR5LdMEhXn/NxExVfK2aywXZe/CGjv0LkdqkC0cz/NRSmiYwLLsxE/Ju9C6Z1h1Hhrucnc0mD2rLVz9BJNgE4VjNxNJvx/deoElxSmaEAZTcMF4oN+qOp1WV2ve+sjy1baj0lplWCTQu+mJryabTDMRGH2UexvGdUwdDYr+sKBWfCm4W6q6d2Wp5ESkGZFFiA50h+Aqb7J8lKOGrDtsdt5McVGHi4S6wUsHF6+c6EX/WGbBfGZuRKogyahxhB/BXF03xiObTJYIzRJtmpaURMdjvP2IIGgtTARS5ZcL58qK1/nBtpTugUSkcFsb6DKBVlE1mbAAUOZJZhmFb6ZrIkFBJd4cBItKDE0pJlh2J7i5NHzWc0jKSsVyE/6Tx70Qv81SkQwpi8DoVHovqZqrhGJ9NEpzb+jE/SdzVsLn2cBbOW1oCDXZskt0JsjKk5co8akpO7AJovyuLc/SF3hK8hJCVydvZGqHKK5E9y4BCAtCflgqWTZTvYH1nDWwBcRIzRt2poS++8qqq+vuqbiesQWS1iIwL/glk2/YTeJqrVacUa6QkjlIicHZOBeIzQiFythGF9O2+Mu/pgMR9bdNxLNeGuW9xyJEhcIFCNlG3OfMAenykUYkAcpUNswLy+hlTaXT/9iM3+BNrYgVbXyrqOGTnVQKwVqTiNrsPgJgNtzzKg8dFGOnAJLgaRhCK2/UNpewocPnHH6dr+PRtKDyzQLbqCLCMrhIzROIHLA9K4H0edp0Idr0DfBg4dvSZlZq/n9qXeBC4/g+//E7TNQ/rZbYvsrirzcFWJeGTgzZrkR8r5yBEOoBPyF4YM2rmZc41VX/LJW43FCcHT+UX1ekLl8fef5i9bz/YO907jhO9kScTBPKeMMA1eplqDLdttUfovUfhWpI80m9cGri71Ei2DOHC+b1waOX+NT67ncOj7ZQxPLnDLn3LTigZTL3ip4ZMm/QuRmj//2IBi73CiC8TnvE/vnpCllm9lSO27F58k1zvdJj9FMEr7eIymBRruZnJeR8Eel0yYUhMROyvxZaK5LklBAaSRXaGdcuCphnmOiyQxORbdAVjP6x8kcxXrwOsYjNF83Y6ERKYdD/0jvnO8rJghl/mkq648jNC8lqWmp3gcjNFZWsPJ2sOLWgr5AdBTOnAd1R9AxmcSEO8fHYorUnY4cRHdJwmIyVZqHdvdZirNGWKUF5oD05pSojK3uKfJgd24TOxrmryM0v1sQjT3kJ4NyfD8al8N1IzQ7Yb5/f9fSUSsov4spKE4Ijzud+LJjrP579lenD4dSYsUOaCLAuKHdl2icRzayeBjhbd5W0jP9kLUHt+04HQv+V94sQNzfbMQkKeB3UYJySWuRkkkshlDqfH1100k6vsGlPiExnyjRGcMtFPEh4Dw7BOx0hCGDypD1XC1stfYPz/YOWgbAKoyeJRsObUuJEOGWl/ZdCbDmUVk9E9BxoG2cYGriLw5f7bRaYfT9BjEcOoq6neMjNOXd2z5SZRNpfadToJ1vExehSzhEX0adzsNeZ9QRQlSh+6qZp0HRD+nftTUjKls/n5h0cnmbCTEbOvQhkAxqw0H/LtjBjFEc0PGPXF2XYLDSy61gZyeBtN/+T4CYr5ADfgEb4iDBsFLXdLRJZ8G0veQ/VB2Zuei9nZGwEGQis28W+IVHGUSbQ9VAUhBsliBV0MiTahPs6s8eifpEeodXw8Zm0z4O4ifriy1ds5SFNf75wrSL8kLvdsCiy+DaabSV7R3FzQP176j+Pcyew9gxcmQssBdt+UhthkIuT6PX9LDb9Osj0oHR3T4+PtjD0eVbE4UBlZ8wqKIQA0BjX98kGzCEs3nZSB7ZM1q/kmnv4LnN42f5cf/w+cuzJASGI1z2S/pl//DwDLORBIeCLK6PC2OEnnmkYT0qdV+bZv/l8cH+j7v7J7mW2HC3pfK3V0I+CRTGSXQLbLfPqd1Nu7M+DKsmEaeqzs4nEWLLwdk7GbbOe4OLm0ktPyxR5ZRDlKD7Jx1CCRWy5eedB2xID4Jb5MY2MAfjVhCuWUTLhimhMWvCZfGH0KnTS6XxEcA11XxBwWHUNE/RPT440GAtuW4U99em13M7O8agNKlBDlIQRWuyhv272YzKV5DdH9UjNOKwm/Y/h+OSFaELo6r5yZuxDuwjKoqBcLXqwHZ2m/YxJvcqUF2MHGxCir5e7h8enXAYP1NL+PH22c5PB3s/Q4+1oH83tPnQdY5lmfULPIvPk/xLmfp+DNvxCawFHUNQIcVEGPuw2nhl/8eXweuDYOfhztu1t2v1B8HPtR+Ov6d+f/a2+yB6W6dv7HL6XokjZfPYGqfJOK3LeV67jeFjP6pnKUIiQLIbHJXEJa5BO/DEgnbKnKQUrKOY0O86IVLSG1i0PGfsqIo8cFQ7GfQ5viyquJHXBzuG0aoXmM8cFHzZWP782QZR2XRhPWtX7Yze2dI45IlGmmy0qlRUNukC5bJgqIkBgJgzN6iJanYQG5HWmSwucGgPfcKPZWvt6g+lCTX9qDkQcslTPmHGsPdtBbVsMu32hvUHP/z6NluLfqhBjeBHrYNT8tdO9Gvtl+H4+vRqOILQHYMhGkU/YKK5szXMTcjCfHTWsXoulk/Fj5qJHzMBeSMpSqcgXhTbWWuQpt3U+cDV0hh9wDFngI8xyMcrZ3TWmChWBjwUEJW9jhQc3+DdCcFm1tvZOtclNP48OxeXk1LX161Wb9CbiAtP/ZK4ZJPWy9OYGlmPuUb7hp4SejC32ncFx6CLeJSezXfGO1vIGa8OP3l12Hq5V+Kk2PMYfLr/onW4fyAewXuXA35EXiCxp12Bk0LMaHF6sDNSljXSvztDuNrNJrXJcNSy/p2M1aKVPuIu5KJFauy7O6a38YH2Z0FBNFSQky8VHIJKJaR0hp+wz13SYOHjNf2WiJtpf9Ljl2WcK5TCmGVTaradtsIvVJqHNeFZXBMhfCKvWXs9MrlucNJmjDXBIylRLc4uSRk0Jm0XFcHaLxTFejcqThRxKDLHQnBRqiGoNICaBHdhUxdrQ41nNpdXZRCjVyXuY3tLfkNH9FFRxIQjKrrd75s0RULzqlXl/kmm26Y4IyllD8ZumrnV6UWxJZboL9tBI4L4HhSU6FeoavWHnWuloZFDIrfkRIMsMuqtovSIizJJqE6HR2ctWHXag7UHtE1aFEEHn7n6fcJ7Ep2qSJRffarfMNXTVzs7e6enlVRtBXPzZDCEmZIvwanX3kfHzEVU3Qc6L0729g697d/1YLlKnta+0/N+jxQ/UZ98tZtTGsP+ycJVvONfR1YBTKsX2UdxkXZH1Q/oqBbkHFKXqWLco0HBZ8ioPa4jKs//mYrFX+H0UDqh12k6smhmYqZuXMSy4F/QA9BcEz1zn7fHqO4gxoV4DjuKshKwL5BIFtl0xLMVDi73BN9H/BF6ISNDaKyUNbLDo6Xfb3FHm22AtsubkasnFchvKyhd5Y3RQGZ0O+Q3/pqhMrXxbyOUAzdsolk5GohbVFRC6key1o09hsxowiVAkj4kE/22J0oxmezldE2lB8Ob9KbFgTXU5egh9ShWe73sEL2uNtF0bWuQbSbENpvJTOO4Y4Vzr2C+fu9MrZjzFJKlpm/R6JeR1qDvVFEokFLnOsTKkV7A8Toc0oIIWBZH4Fj8ukbu2C2XgAJ77s2FaskjNGG/QyVnuSoCEWGTDIrQHVrYcyejl3LCYGU1WIrB+Ude3MfD7rQDAz5KGMe7ftwewyxO+zjLDN639Ybxz+F5JpM6t8kbC0qCq4QjKqh+IymB5PCjft5DVk4hfNg9m7Yx1rEd8Z5Wi8qmiJmWdZiMjFE3rl/0p+zeIrchhuvPzNmG+yB1IGwIUFvjmXPEesYec6jCtKLjLMY9v0Wbq1Nh9VAyZnVJEWnVbGkgauqGsWjPnuztylnBQ527BJKYfkyWo+1BQNUx3lDFWDEOsHOV50X2nzzETAOUHdFOT3gQjNjR6gyngwlug8U+Jb0OPgxpHsIJoI/EWJ+6YnOsia4xaFPgBZZoOecOzlVWMTbK1ate9sj0VE4dulS9OYRZGgyvQ32SVbaw5Lin2GoGroByYKEH8AsbE8GN74hhIylxjGjV4z1c2rbwYOV1MOEjNNcatggOmk8iNJ1HvUu5AfYGk5q+zcmVFJVEn32rdaRsIusJBu+6SAypeYf7zk6pOznimkwOAVPQV8vSTBbdJKS3a/KuFq7WkAw1xfn7U/qjyI87888ed+n6kJ5dHWYiIzQXArLcMPAfsM8aK9oSE8fY1sX8+ASDA+3dpaBWaP3CzPf/8W9w/rmA/6/HG5s5/x/fPnn09Kv/jy/N/6e446AtfY4XUNQDwZOzmKTOLxUmpVVQj9HsXX4v/02KYRg0EpuG9c5ohIi0nQ79O0N/AfUd+k3PrUbV4CM0WsebHUolnGpgoLXlRXjYFbV5okbJl8XItk6SA1MjKroewMUU2NjRCPoJz4TKuAZmbiZz46EpTSP8ms18wReyY8AeJ+Gf38O++CH48/vtkx10kLmFf/Hb6Jfgbw8QGxN5AZTauvHc2j/cwZ+U0Tny3JKfQpq9g37483v4a4JoZ4Yg+OsZNgh9riMqerlEO7cGKsDs7h2f0r4/m8A1DMLqBFKZwbU6sdOjjp+uHwyAr50Iue4w/kyxVCtXlCpat6Zexe2pUlH3E9MzJ6a37u9PG+DFlo2T9khqvyMqXfvhUppQIzT5yc+rcqp8kkvyiBKQGgjsJT0SKJaHoYCdhMzoB9kE7hLYtfycIzQ57WDQYVtzo0Isg8vA77FeBsStqKllzCCqWfbVUehn9P/VPZ9m/wYG4L7zf/NR3v/Xt0+ffvX/9UWe/3GZE3DfTRcufzjzjKMuEbnw1/Lf/Fj7SIVTm0rm49sjKYHFolN6I8e5CDvMMyWlIyopbz8Te3Q25JAghdIRym2eirJCaKxGZrPRl1UW9jIYCYGhbFI1yqqKdnZeux0xBmYUnkWXYOWKBHBVQhQvpdpyUjUchUQWbNKp7xMyPtxWqMiaoalgwTC9s2kuShJIJ9/iyAThmqYxkZcY3yM0keoEs7VLUyM0ti1mruifOiv+t/CVCXmCSMiwgPfHV6ctOooOX7TOjo4OUN/7+f7rhLtgbsqXR7t7CfaRnEiFSpSaIf948Gov9M5GYlMU01Eo6UOwvi4jNO4lsVJjTES33bIkWFVMII/5xJrQmQ98C1Qmu0r7fX7fuc/rt3V5gK1dl9auc5czRkW+8PCr3+7/6vOfN//PzgHMP/+/xf/y/j8fffvd1/P/S/D/Pczi7C4r4wbEbSe58DzEHd449SQ2gcT487gEe7v3GYT4E518wl3sBfnkdBY+x7xarp5B2AW/CXZG/WmG/y1j8eNBsLKzErxfZhMuuDgjKnvd4PiutT/oTXrtfu//peyy868u6jk+qKuIEtIfDL173IMuv18OgqDKQShE+TWJTJitAofkHYnuH56esXdS7h4YvhimjRF7LLufVo0jNJKgCPu2sdmMA/vxSH88hg9+ikTSu/unZ6/O9g9OW/svjxNEIITx6fayyZRebyCXeI6ROihjMnzypW+eyS2GS7yXW3LQCaM7YZ4kBAj5oAhkptrvk2+MxGeYdFQYwwF//ObspyO+/UZ8xcVobE5FToySNxyRortwA9TsQX6peFom9UNhZf3Sckwbmk/q+CjXNsqjP0hDTjlUoHYZmb7lm29TJ5HGxzdRLNtnQigy51Eh/tMCMGeBTy4mowMHMGeG0uikRvZ9AUKcQ7w6O8J79njT1sG04PEjZnn+pmV+dqDNZJCBtrI98dHpXwa8IY6iGIGzAiu/XxndrYROAU4nlqeeQjc73QG8p9gY7CA7RJNhUqAXe2NFPHDnXTcp0I/HaZ99zE7Gvc51YvR+fHih31x2eSll9pnHb3byvjVGd8Y6RqU6KqYa6lQLd+7orivPvtn0PJsQfFVthVCJVwSa0WucWBpProhErUDU6BUIvIvtyM9RDn769CMqeaTu68LxVQ6mtI9EoRfp9gu7adjgwyMYge2dn8godokwCIku/mpsrT9ucluG5/9MtM21tdVWBtropPeu04ZVijrzKgJaXaf/Q8MZmM+rVAyVZtwgKqdg1q371NZDXe5WiHJK9p7l90SI43shETD3QOxD+K9ksphJtMBqMBhEUFcyfAeCkb8gqExajaUdWL5WRNXo7l5IqxbeHrXmkbuVOyAep7aZm2XclZNZvd+eDjpXPFxRVKbPedNNGoX5bA+1D9qlSbjeCWPkDOIqmKI4V8F8DPRiU2OwzYFCEjXwAigYdPt/Y9+VJyNpe+vo+Ow/qZ81lwQrLCwVQ43al7gMBdwPWwQHs4c6VYpIZVxnMqgJKtdRGT7vJZ6krWILajb5jBSnYLUmK5o7frP3+szK5DiJA1qhT3vKcFqtM9ih5yM0NLA52zs5dEyQecgoxty0O9ycYhQ1ygSrQi6qSulWhOcIia6C9oNR2NuMxoWoFmxDr/XOp5PUVyXw+Fs7ZfHdiR9l7p8EarDjstFFYB4O0CYD9xliJ9aM0clT2x0hJPzdQrPR5/bTm3NS7dLTDoM+18R7+ePe7uJTj1LnjXwM/2u8aHGJ9jPmW1BmncvLJJDgLa25LillKyCyEubUsYvzwubzLmbLSyIiZF/vkiaywbZdobLpIzRstYmp8VOujMbI1uMDbm01i6KVVeSAhlnLujFUuIN2znfTfsBpGuHL7Z2j09et3b3jg6M3qMnbOts+ebF3xo+UBdgJdpTpjKOKbsByVx40qEIlAQu1Yl4wGYaPqzHXIzQuj5lpr7WowTTtk2LddDDNsI+2zP0vWOHBWu+iCeHKD3Z/Eu0+qLq19mPdZ9bdJU8CYlftGT0xOlpW8OkXZMYca9IbkBEjKXJKsPRwboVqF5FSzMgZ/V5UxarhuZMkK+EjNKH/oCEmfUXDsUSFK6GKgq+omnJ6izrRznE2HWq9rNu7NDqk5flI/yyyzKQY3rnDzOVQq40wDvUGELM+GKp9nUEcX2Ep2tdbDx1mIimKKcBfYEBEUhTGGviboaPMmqcy4D+nJ4YiJ2MDomyzyLwkaJubNNWlC9VB4IQxwSWMwzin3CaT1FTdU3OLSpovx25542eTz9d0OGk/suGm2eYinxUaS+clV7SyobL1dcZDuPdbMRW9DFpiZpzllNtSKoO+arVS2hPDyFAEGgY5RWH04NaFgFqSgvpgsXQ4TapSajstsT4wiqahL1wJ+FbocQ+hgCxoB7Ie4BEWUYAiPkanpeQhGnGCRAV4mAWSnvDuV2elblwbM+etDNMSwPRslhTsAQm5ETWooCc67OuIhwOKM91OIzTSiFTjkWQt2NJejivTmRTGIp0de8CGbL0P6A44HEoCWF63PVyDk6vxcHp5FZQVi8az5b7LIzTuJOnf2HGistW7xTljYCnLvXx0b3hz6ffsD13wJ/WIMEi5PqH9mnpFAxLmVZZl1Qu0F1tL/7b1LiLCsoHA0644WaN4pawuNp6ViM0bg6WL6+AhLGghuOLDBC0rr8/GcNbKffRyylv8IqgRHCUW7+aiN4bSa5edThxcrq3FAXv2INgazFa6bdqm5YAvTeH+/mOrUCbaJUOMu/PeIHEZLS2KuAdHIym3IHtCoI2ZcQ98C+NL7+rB6VFg5h/rmeGf44Ng/3AH0d+O3+AbyN7h9o8He63Tn7ZP9naDKqYSCEmKHSG4a3ycmx3VMpcoCaWKlzL0jRX/CaMWIqQk2q+H4Yp2YXPbdMzlyRSYtJu0DF9hhc/dgNjF4Yjwhc1Uc/oWtfVbotyFiwxM8Ki+gj0Fx0fSwKM0Ya/3s/guQm9M+Bdq8P+AX7yNEX+nKdoCxgOnp54uLBasJ3q6WB1vsXfOldUaIyqkYqGxRPJHgQ7ziMt3ZUDoLKnm6hlerzOBA2RLnJrPmnZdyNGScAJaM/61GTmGcI0sv06P8IowmN4kYV3qVZy8MqqQImpsPWpGZeoSIyrjx4+aGa3BfYH6BS4jKjzsq5kJWYXiTKiErSPgnSM0Xs1udOoma15IrRi5kDmoFY/MSmwjKkUS53ZaL0fOS96nUWxJJ0YDvS1bH1rr7FaafnQ5sCnOafDZ7iqdyar9fmP2aOM7fPVm7EJF77ppQSM0bTDw70gGjvt5J/2c4401mPgoUnQVlopzkEw85HZ27d6epIdo4pstf1XohasW0oa+o5iEIIVui8VTNuKzaicWiT2hYrJWZCIebiKvmMKxZS/fPHfn2XssmTkf5jcqdqRCUby1ieMPhu8vgCew0q+tccPLKEbO1fXVlsTGZUUVe/ZZR2w2+bzjhXeQhUbLMF5/6FhhbRcYKVfXsnGipALXau5i1F0/od8fdYy7tcxFIzQ/2EToJ943Bf7SnAWaabOZPcbtfpLmVP2kYphjZktK6xWNQU2Azoo9oVeou/NhSdnjNs47cRFYk23Z1tSc983YxhRJrIU34bz4whu254scW0LcnECV6VXLb2RmzuciLa6OOaDRHd2fgDW+w7UFw99GynmKsLjwlKaHSBauUFcqf28oCKVHPRGKuk0Pvqgy9LyZO4Fi33bOd7+J20J+Q1rNKZOqniguGyo2ty4q2o/KBe3LNpRIwBDrB38WdkwQ5P7IDsCKL9Du44PSZmPwp7QauN9aNoQJDuc6+mMPujBPJ1b2qJhqU2Eg82fmpx9CUAT99ft2la57RYep/jEvtnRQUGdx3WHVriCPsxJ9RK/ZVmcxjQlX5fUb3iJg/79C4NCrtqnk6/qboPauN3j86PfvJl1br5tUF4lg1Ass2UyoAsve6SROKtBOyDERxt2pBzDldeqf/oQzPTg8OgueH7063OVesQ9AvaxFvRUwzkTZyVlSxddnFTughPppXLxXvX25dmNTqTeP88LGoMY3p9teuyC4j8zOwVPM3idhluE1huAoOexUatPIJ2wWk1HflyUUdl6u+0lCmFpbpSPEh6capHD9YjBcR9l/Z7Le7vfaiEHgXJBW5SbeozqvqZFw9POrJGaGn1wplX/BapmOWrnJbjsr1rmeUyvEcCsjNBHNwpenP+8YSDfkF3roPk2+Ex1JbyheNAFSGeXKBXrWz2wc0gukxWK98AkkrK1jOSMqufm1sqv2OO2aC+9HC/ojKnNZ2N7Khf67dmkx5AOdQ2n3h+DH8fA6NTuriSCW+4fgRTrJXRgGw3fflCAX5GROJAa86eG7s31BFd8kHGoEnoHvfYgj48l0RP4pWG5lQfgWEV51FhReoTYJETCvj0719u3AAcfdkSdBgg5E6IatgF9TEQ5nFkXIO2tUVy5pC6VIA6WZKcofKPqJWQGEXgxLESMjJ+XSXucxfZQkT+IV3ixXGd4Zzst0Nko7E7hwP8G9EnZKlz7mP9iPtwhOg72a0CMeRSBsROy+Nr2vR03JjmrELvjbZuSuAjV/LFE6q0p6lnB0lDsIKYmTCDW4Lx0ci6OA8qCmB8Po8/gJpeU7stUjNA6NI2VIb1QIIyr0nSPhsIjLc9rXGT83Sb9UjmYODNc/bvmGWFOs8N7pWUwUo48SXEpWK72MV3xt7Boun2573MWPZMMky2Pi+hWRmxzXEKoU31+nyhLjQCysVsdWwup6nCysrL92vxbey4cVijsEabll56rucZ+5HO5WSNOjcGFfiBTXGX3bn4clBO20ERWekkmH6KMlE08y+JOvhIqagHlKehKanN5ErNk8HzemqBfUymA76V30OslmHHz6IPP+LLUws880hKYbM81GEZwODHEmqeHAjUDFLTlZPxUpTH/EtrSS/QOByU0dyocnsdnN5nkx7ffdpnXTHuEZEHub1WOjpeRvi/aEIugi72Yh54NRwo9dUYrbZ2ps3pgvX3bYaNEigmdJQO5fHNE4UsUjNCM0k7seC0DhcKwQDwtXwry/iVyZPfQ0MQyG/a45rQilcGyrgby87Owvj3Zfwa3kbO/lMYKvaqMYuH61s6AzHaPmb4vvB8umjMSa2foJ4iBsGa4EMbz5oELUEFU7bI2MlDveIypMcLQsA8FR4XRwIyo8kBs0tq6p4Ie4EsIO0W92HI5e8XrsE4hmO702lI2b6C/hwa7ym9dDpkGTBFk86CFU8cJ+zS5dGYbDdEBpDFmmXDQXORF/WQiTVD5IumbN+9HKIyqKl3lDWfDt0fZEqMsTn9Pwn1O7yveNVyp7TWaOZALXqfxwzkHOppGlKkFHm/S5yuTvP3aW8Rw+GA6z9GcOE+DJwfSm9uA6cnD6zmUfMGjkodMDJ9YkapVc1DV7IylQ515Z9mtyLwv1SN6HUI9wi17JoM7hlpcOOyMqcTbT24RUx2z3xu8/xF0lJkpvSx3QuP4jNLrDlBcc7Pu97OKO+lM0FhjVK9ejpgULjJgZ44I5TnEGlBtq557/zZaSg0I0/CMpnA4jNBpQHy557ESbfhGycvCUkDaHUzl5e2DNK2IwFOMSj7w1XymQtumdPZpURlcsadzTJikjKjUn4UblbmKIEm9o+CM0ISa49D3YUlUvt6SRUBclf3IiY79Q5T8J148kbCeZU9sOv9aQsdS8dENOJ3uo2OAsuo+uyHYjKX/+yscjNPwiJm3SvqxFEXDubjur3k5J0xZnstSrBn8JxOcOfiTwHzsdo8gWAdtbJQZp0UokqVXKWri+TsOOYodsknCntDt8XNEbX+sC924SS+B7B7CKV2l/lIRixWyE3Od3kxTdFxhlmG4jKVO1I4aKNU/hMSM0GrtMbEtyN8M5dRu6uiMqP61uSO+ml5HOqavc8HNUTtYXV1AF+NWcwCYV+nWbZmmgrL/gGBkDszQc36GnLltxAk3OXJXa08mwsj5moVBlRJ9hRUqVg/W8N2hzEecpVqHrSMPG3QSuwluycwuifcuMjCMq4OL2lWTJiYO90x06fnQXW38462j0joI1VLWB0aG3ATeFovmNtvuoro8jKlygTlZEjbVC4zdXMVWtbIh3oXr3DjVkbb2+omB8xf9g/K8WYub9zvgfG0+efJfH/3qy+fQr/ucXgf/hg2+YqwejexAIQ6+PpoLiszZzIFPAOqDHWGbEEML4QgNQ9RBM+nx6QUYwN+1ZQhj6ZC98nl72BhjNYOO97yGabl4JxLMbNLyUkVkjNDovJNMVfimdXihXsyMqIrTVYzFSN+33bpIOXYwIc3opT98rwZRB2YyHIypxvSZ2LliDt29DiTRE7Q/zl5vTW1a5Hob3VtdSgUtcktga2iroqiM01TWpiq3JgE1C5KvjRLSFhi+NxnAb64iaku4FkrFiJNYaT0xdki3ClOiVwu2VzGs288N85nWbGS8FUmdxPup3u0/etNN264N8B/zmJj8oqbWqTqEGD/M1UMUSv8HFfENuX7fyRMzlWmbM+qbRcDOWXiVzSk+iMPCV9Dl16SxrOkV8iDegaS3S2tKuNIp+mGAPinuDDrI3mYPbA7YHFzbbtInzpVQEVtpf1yM0B6Hfrcb//WtzLVqJVHreXLz0HDQ3vcF5y7yMkH4L0m/V6g9KM9ELtJej8X+T5lpSq+tCxCGv+UR7ct3GfJtNxyTmB/cg3OvI86uHbChOpaaDLrkXIR02a9Jj8otuJiYaVKD5+bppD8NoLayztQYZhGBehUFPLTDzgSKVu4F37R4uvpJoM+nl2u6omiMpqYxtIyn1jC4Xvy1hdw5YN3lwQYUh5C7qGIQctiHmWUSeXCMqXMkSBPIDtj/XxFFbrcP48AJUTymd3Yqbltn0vBbC5EKlvtgkZK9ttU22qeHZgp4nUK8n8WcRIyoJxukCc1mseq2Ek2c47KeydEs6EUnp87XUCbyawiDJOuDIpGKV1Cm2li/IukzyqZhNKl8tP5WtCKWmIFgX+UxGOT8W7xXkx8D0hmQyjqpwdZa3g6KkEfRvZHdtlcvs1kxCRfhV1fA1lpjx6pNNxOMaORTxkIe89ZI0MLhp3aPoOIZwEdQfs75Gw1FtI7LzkSYQrTR2vJKOc4WRflkeWmYJp1yysiLa1Tk2jGFqlhk+JjNIEm6dmflqZbxuwaJDC7uOzca+VTiLvGjPYZBYfsmmNxNIAbi4WIt93FbN/rq8dDme9q4Te/rgCZNDvhBzq4wjKT1QB8GhgliEIyqhI+5fGM99iTdsjqDfy9IhEoS/zUlIebKYwv5z7tze/e/yD/H/8GTz2wL+85PHX+9/Xwz+c86/A/lwiNvjBVAZ3UsmMS8wfx2O7WyWlBlnXa7hQYduHcSWauf169AI7kmXRbnTnc3iy07HgJk5B6tGw5EUHDVYx2xGe+RwILYJZY81nJ/8CRCzwd/WPyMq6netD8OmesQwvglYem++Esoo+a2LAkcy5/WGg62/hiRc31/N6JXBeWuAwF0JZPR/COi7IymX9UACjW8BlU47IlApT1wQemodkz6zyXKEvekiXYRyVCBxP3bvYAsln/SmeD8eHatKtHMw4Bn8Sf/wc4sB8cFOujje3+F+clqROp6VIDlFAfwH1W9Ws3o2DIsEJkJAV9BSmZRQaeeIvNze+fHV4e7BHlIRLB2YJvCDNErQj6T0S6sPK3A6IzSbXiu9/K6ZRZwi6J+60M/Na+Bfexc9YAJIXaxiZpf3OErkw/JOg8huv0+RsLBLoqQr9l8e25lGnn6H08k654irh5QaWaHvSjrDRColj7zr+DaxzrsL6iMqV7S+c3f5TpSvsPlVPVPSMbmWAyHV+CqlXJOvqrbty3T9vJ2lpOlc0QcVLWEwpeot6uPXh0xBhlyds0bo/YGanfeIAqP7XIZTu0KhwmFSpe+G42umLf5QMAavZGXVmrg54G0kEnRWDLL7UHWvtXuzii7zIzQ3yEgyaufjSX+BnSV2qeHfdDZCPaewtAUV1bsaTavqt1gf7FQMO1Rt1w5/5ebXr9w1hjC/z7OujzOPh2lVp8M57DJnF5s//6ZmLTK0FmqsdHGjG2f7yM4qgF58uGabRD7Pj04VjG+BEh7lhcBadC8oP7I4npoBe3ll7iXPfeiIYiutMj/EIhAEOTLIvGB8qvRJkQOeYnDRJSDZcn99W/yvev+D0cv+Iyo3wPn3v82NpxtP8+9/G99+vf99Mfj/V6h+GJt9qdIz0L2Q/znHQAJA4CP++96CgOsiUxlS3f3+h9lN32jqJSub9Y0V2wvJyquz5+v/s/LDs+Xvv9k92jl7c7wXjFD5Kzh9c3q29zJYwWZBP/SHnXb/aphNHp6SMe3DA7bIfLh7tps9PB7DOTie3B1Aznp30l0BekzGlrtR/wuGIg7Ks+Wl76/Tu2c7z38klvyYUQzO7kbp9w8xAuJZ4vZs+/j44PuH8pHL9iKd7EMjTykyn3GHQJO7wfld8Ev7oorEae9yQL2Zz/4D/C+f6fDobC+f7uyn/dMjKf6/HbzYO9w72T7b2yMqnu8f7MXB7hGZgr482t1//qaq/D2r0pMn/B7HEIVqH1ze7x9y733/kPr2GWs9W8xPvGHz6WTASOEeBDtfq5uO+sM7lHC2YFNAICwFT2qxyarAaAhCMnNGD9VQlMm9tNinbTUJ1g4LXHGidfpxGKqLVtdq7hpCBLx6i0aPCMaYB8Up88El2Nxy2+z2xvIWQxrmiF6Jr4G9cYI4lYKXTezNEO4paacPITXzpNMbO6BwGrgEg/KpG+HOcDBh17vhy3bn6JSuSJTB5RdZPKqiYi2lelhSC9rZYhjlmtSPHoSwgqzWfp3w+xiJobH1NE2un/HbMuOqE6T6dXMtxAte6BSEbayNMYjTSFpNVblH8Iw1HxUIyoKurLqb/INCkyG+airDxoE6YT6WLQ4vVitmvXcPHNW6YPQRs6lFc/qPrGPHHlC7ngx2HiCpzUVHNDaj0bRPqlBtrFyJ5zDuB0G7K7QiHtCbjfFCOdevx8Nt6O9ehzTxMnwRfbiaPTSVe0hVe8jm9suLIynKS5k5pyM0m3HnIzSYdtFwOfruyRN5IyksDhVR1J7fbWAL2ZakIgdFWmcjeY1+P1mMb3hb8v7mEc95FiFMdD+JffvDXcuPkne0osOQ23a/180lJnsjNIv7nKM/hg+cYINNs38YpwLOW8GJPG5n8n79yWPtCJlR5gd28aJnkHnpxafm19gaSPTds5tDmM81WGhKU9RTeunEFj8c1A+q2VJUpLLr6dgudW5A272ZmIZC0e1HyZTEcYRezEwBel56+OK0+tjvvbi9/8f+cevl3uff/ogL+F+2ASJHV6eGhW7zo2/a/tyv0vnCGeNGU7Y9m7yOb7DpbJK8DyMqYxVuVTab9t44hJ6URPDrgyHX6kxmubUl4VyE23l6FzWbgydKoT716agLLVDpqjZDaZobuPleK+3qpHzOJLRr7JBtTfgp2DxFm9mvTZZVpU2JlrLn1MRPaG4hn+f4+e0Hj8bH74j0ObSC6Hvg/qsg98kRq3IFULUc+ZmifEWahw83tjanEquy3LIsRr8LfFb3DkAOWpsYTP973AQYHwHGSYBtNdpUT2WOwF+reOcSRHRlxSMqI/F2A5/50AHuqDJO4YUfvMdTiufOJO9TpOCvh+/wMJ1Hd49qOdck2bhzn2uSyFWN9+o5lXNO38XTeKG2hW0BV5k+hlBxmLdFdOmqFqaNcLVH1WLRh+GNMU9a9rL3H8jJECSA/+p4SWpPag8eSHxU0onvxj3Y0Egp+T9E/nfRT2d/gP/vR99tFvx/f/fV//eXIv8rNwEgkZ8I+O5TFqHDBbikXpfdg3nqbb0LEvYYtlzDkvKdG3YSnPcdepL3gyCElEvg4wJ2mAnvR6heJr6il5eA26UPz4/S8tK7boL3GQKwGExaZOtKurpyKMxmZqtSV67ZzF2zpCKzmXJHNZstkxsz2CuBB7rpJkZfFdUMyQKsWzMF4Dn1/GDvdRTNjaaTkaAgaMdLGm11G+F2QVHvYAske+024fxbZsjBkCGt1svTN6fseZJpzazyMFwrsnRE+sNWJdCSUNXjMOM4UOFe9xEV/SLA3sA9FvtWm65CNPlbe9eNRacaRwe5CNz1439Ne+kkQZ3Iic+/2j3YqTm/Hb8dsIOXSAdKULQsc7IuXHmrc4UuWBntIzQnShiPUf1X5kwsxxVMKDTuwyk6TtxUjZlenY6/NGswhSbOGzzh7QhB6fgbz3Ca8fVXp3v4xvnz9slpI4R5ioxeTaWPyhPOZmVJF/YEzu0jtSmqjlaKsgTxyXgi+ktjqzI9Xnn79gYBq942Ntb/Um+uvX0Le87bt3TmpLP0zyuxRyM0rf23NOaJnWHs6unr092/4f1PUN9aF53PyQbcc/4/fvQ4r//59NHm1/P/S7f/I9ff1Uf/RWf5ouOwGN+HpH0VbjXCSzg1JuM27uK9C9Lmiu2rhxd7+ZcnOiMq3GCns/lJ/tm+bc9PIab8XiIIbvd8ys0PwrRQatsM9sxFno7sq01y36PO8tJomGW9c7iP2hWMh3yi+ofcuvh0YxXdsPV2plsWWr2cetWxISgTBESOIjA7QrSTG6wOVhiR3rBpCPO12CVzPBZqnxfb3a6PLoFfdVRtQahFu7WFZICFnIUD+xzQScXvWI0gbq6FcaEB/nEE20ZmDCU8vCIf0mp1HNSecyttcVG4an8q33ysX4O11bELQc0j2JSHHnMLrMsteqaJIzSQMhbKyEODdP3Dld0iIylIH5lGA94931EjKfmGtI1FpvECphmwGTuhCJ6d9vTRy+P9g72T1vOjk7OT7cOk4/BVVTLUZOpJA5Rh6sLt8yMpiAuAm3beAkubH59vhCXKIZUUZ3TpVDVzjsHp2n1RqyM0YbU9YJ/jS/lpj3AQWTkGSug7VZEqVRLJgUvQKluXlOsmpcMbIeaY0SVICWF4UegMxNpAFOwGwWsU+kDAOsqXs1lnxMEXsmqnY26hIuLb7Kve2B/C/2XTQafze+t/bTzafPpdQf/ryeZX/u9Lsf8xHB2jRv1bLIOyTqdUfbjTKTESIzQ7Hbnk7uyEDjeriJfVQYgs8Yx0P5agnEGrYwPj2A5Op26jBaagwzr8AlQewnIMlWESrU5nm9TRJiM00L6FDI92/n/2vryvjStZ+2/0KdpKSKuhJRYvSYgbDwbZ5iMqBgZwJnOF0j+hBTRos1rCYoLvZ39rO1t3S+DEydx745kYdZ8++1KnTp2qp1wjod2M2VHo51ge7dqGR7tod7TLyY3VEWOYcYhldMTZ/Sftjh5qW7TIrsixKZprUeRcP0HrZ3S5N+o24VTiaM9n7qog8mtRrH+gTZG2KHKtiebZEt0n4MHlMU+rPDO1tM53M1dtvPkQrfEvG+//xP0fzhfEyH1mFuAe/e8nzzYy+t9PN7/of//f3v8nt6NhEv3qy32Mv6We8DpbXVlvyRMEsUIuBvETylzYbB+ClAE/BLZnDHuhv7kBGEWQu7fkIdEOFUi/wslNNCP0B0cPo5vgfTeGozNUeKLbfawiXfJ/LKCCRBJzS2t+HDcxccxKEqLWpNQriHLDryAmAj03Ph7yeCU8u4cvUZ4THqLal31dFjJLdNqehMyL5KnOz7lF44NcgvpL0uP6Xr0/EkmUnB7JU6cozUy7LRjMj3zHxXmQrpHcmCmGwrrrmkh99S2/cTpnY61jNH8wjBVpQo0qPxXdVr2z7ndYE3LE6BkaowgjNLNkLljvGqaBh1KQjiUM3Y/tW+PQL5Uiwuc6H3Mvte4fnd3ZFTOET+gDY3Voz4L0ISHPmJPLIzR2lgInSXWf5W8wK/5yYyNQdms6akfGBXjpOrxBr639EeKA9BPt4xsB0W6C7SMqyoUS0bXKksBzr3g4rTxmVptiI9AfApdNrq2GMITAWngImIxle/r6M/Ea4/aWvwwFk3wJ+NWLYdKOoiMqRKgqeiU0afT67SRpXLYhH8+HGemVb+A/PygOx8WikU2RvEsjKcAtLJEb7X/BLkGa4iT1PW+5VSFR1sbqTYXoUmkWhDNzXZtxuZCXHEtdlAnrwSnNEOsDLHWiFaR7km6Yv9/xbodT6FFgj7BfJ/hI/rWhiylOSO7VU/Mfe22iOl4tKAvsHkdT5p4afpy19gTIzCMpp14r3ilK1xo9KiIhrFcsMCEIJoQSJVPCiicu4CMq2DiqsaHmC8mqBucDz0tvEI1RtzVsJmu09nGLeHHVvQQieHk1iaCWX1mmPfwHAgXQZ3IZi6fi1I270sHNTAnxajI3ZXol3uTOgbLg2JIwF/1JiNG9mhWYJRB3vMKNY3gi7c8Yg0NTcGCR1y6rN6MiZDIZw/ZoUVncBSMY9JItO9M6UXjxjDGgiWgpDqPJOF8QVJkO8FyISWcBJ1Yum1VK0oeFxldG43bTng6UHq+FSa0yldsteS+bZWuVybYP5JMwoFTlyPfXTLLWPUPaBtQDEXz8BoujuSuBmMgeIymkMaxqmOAIXDVu2ioqrBOY8KwIueV5fzMouM/L257SYlxzFRbXHO1h9LAHnSsZBupmoJc4/a4u6N1uz3hC3l6fPWb+j+D4ukkyvaCUJcjQ2u74o94L4WPlIzRPi5b6B3pqTYsSSv4uqclRLyQeJfGoRhg07HjAarQ9tIzatr1XPEds62TbK+E65i38IzTVR0qB9wIdMGDddBUCG7ap5HPPAWNCfSY7L34mH5AuDLo2job8ZqTjuGVr/jv9eEkTK2e5YUMH7eE08YbjVhvvaNQagTZG2MwBE76mdIUPZd1S/a35ZesjKWJ1fNTJsFUjKfOLbKgjKtYrYoJipjCvNGYguskQowwQ8KoY+KniSSNRVEf6WN6w10LeT+sOEuNWob+7rCAY9gWfC+OxAtPKdbiycv0hUH4vJBP3o42xRYymg7F1/UGPwCyKFMOKrlJgYibkptlVZ7R4cF+Njo3K5fTbq+6M9yEoF/sGlhyPDw8jNFWnNquH4sZClJjgp7CULOiIEFvJndgeXOECIYc/RBwR0o3g3Axnzd2jOps7EVWuLnvDi2xHooUWtQsVjNzpqxxMUCmwbYvakaAMjtABproiXPOVTYtfqZBq2Sg7lYv7A10RzA/WD3bNlodpoAWNQeL5kw9DrzVEHV5aIz5r1ho0db8Y6npRcb+hNF0Y+rBrockPlyXeZ3ILk8FindUeyjylR83EQwaxQn/sCJEJVkF2VB3NfFQDZpDpGk1kd/l2qt+YteDlKtp8is69EQ4zRDsjNHaAmowZnQnmWH94wzysaHsZJXHSQ8LPLgeuFM/x9HaFF+PDDqsuNyczVOIjBUKk1NhZlKf0Ouev2GV3TezC3EWaq4cCQetxensd6CXYJZiDIykWr9UYXLbhnCMpGxdsj57J1FuT6nIT2GDtvmMjKblXyB826lfuUt2b1JXYj9iD0nncb7kDi1mkBhaD0gNL0cxHSM2GPdDDvI8IBKF6LU02wsmmTeAkRLtQoW2UwjfDyUaWdCPRGDfwJIqeB9I7Bu3hsuMgaSJmTRVgkyO3llGqvsy0QYmxIo9G1xzJiKPt7yiZivs1PuRb5MRugsT1KBLSUJYBh16LQ5AbMbYX9t6s7JhDH5FjULHBxkzVapPYhdYvLPDuoDZbvfXUNl6aK48I6tnDAfSjah5OY0h60bjo3Xp94HbEVxbN2BB5SZtnJXuSFT8oZfszSHc0jaSj0Y9NUkIB3qtoS1cL1GxoLlF3h2PLPkdmmBsUHqGgSB6MpMEWSEjTbAL8oTEe3MO4IBkYDAdlrLOHeE2t1LFZ9ky11PV59B5OzLBi801ObFbsfl7swcxYEqnN3isjKoZeMm1e8VoLmCOTptwzAyhfZ/gVYLIe/HvOTJY0B4kIk75x91JnRIumOyMpwix6NnNEXCmakGVNnGyjnO/yKTetSuY0ktsjKmx5DDuwZRCv2RXVsttIm8iS5x20rr+4JYZT2cUvuH5Uu4PR5GnN3AxJYBVDsO6KpeH8OLfKTA7ibEOA2AWjXzhluUsiUK/RHA+Bb+YjKlCEYsWFwhvIZBXhyz2Px4ZcanvYRckWPpAnPuqo24zkhtIWcUJOheCXUHPFEjARyUOWlYRQNMmDIufHIhzVl/MOYCKLMpNMjZ0ZNjPl9bnYjhllvsqHnHQqiY5BeOnO4qZybXUeTS9RIT3yWaCJjgxUQKvlLzphGg/RtGHQK7AnLZH5z4C8bJFAKO1Kes0jNJgOuu+nbYGLN5UZjckVzb3lSzzjfy1VrHzncv3ANFgTwjhOesBVx7ElKQYSNYJNRQvHK0ZMTpMeEknXxnHJ7leHIFscFvu6Lyzl5GjnFanHPKUy54RT+A/f/13+Edo/9+P/rj9+nLb/evLs6Zf7vy/4v5+K/2tp+eRq9tQIsDdEBZ+6reGTC/7bzMf+3Z0D/fu5NHB+k/qNyu0L5u/D9XM6CxVyHKzfT9XKyeL8/qEov58H49cG3FyI8bsQ4fcPxPd1h+gzYfvarU5j+87pkUyH/DZk30/C9U23fU4LFmP6ftojNMig+f7HsHw/H5Kv3VcPQvJ9CI7v50Hxtav22VB8F2H4PgTB1wHh/Z+J4GuXkkXwtb/mIfja3xcj+KZzIgTfdOBDEHwX6FpeztO1zG/l59DEnIff+0VH86+n/9lvPY0nwLb0R5/1GHjP+W/jMZz5Uva/6+ubX85/fxH8D+ST5xsBGx3HwunZydHha6DMfPfGQtbTnZ+qezFsYienGi/pqpFctZPYTGcx6Luiso2qjfiJYzGn5fsqmSAOHtbL9iVHnq4jfUOYKYS2CdtTHSUgKRo91dS3em29HkXJBEqI+5Mu+44TuVI65gYfB3XT1V2ZUuOgBlmVVHKqLvkVm1RO4/3Tvf2TUjKp8ftZ/PZor1q3tUz2j0T2dkhGKZibHzjlQCMhh3GpZFU65Oek++92EFRousCuEVRa3ct2QopCqbZETmpWIzSwBO7clkoct4bNOLZuG90PhfSHiH++bFe/n/53m6Pmn4//tP7tt99m8J+efbH/+0vQ/5R6+xxRYHg5m326OBCn8z3+wHyM4z/IEVh3oSOwLkoD72P9qUL/o7x3uOv/Q3cwbid/tv93WPkZ+9/NL/4f/sr4L3gTusjTg9bzXUA7YrwlHA+bBaMVXPIr46bwguOmYQY1Vtzw4l+IyhVhvCM0indtcNJ/7B+eKHF95K91hnSPaSVpo7Br3JyDuouLqykgzQTq3LxCIyowAqyTTAJjbCzwlKQl0KIcNPIsl7AIFCUncVTjZPXCGC8bB23HObVferH1S807n9RXSl/dLW8F8tztQFfddTsD/rlD7vIOb3TvoCLwVyyl7rjP71hMfUfy6rvRuHHZb6icKisvgvNk5evgzqfCzj+sypf93aPDu5f7Z293ju92352cHp3cvTl7e3D36ujw7O5t9fR053X1bOflQfUOnW4c7L+8O6m+3geG+J93e4/3Xv2cKcEH3rKy//rw6KS6u3NavYO3t+8OzvYP9g+rIzRoFEZf3MHqeVJRQcoxedrnres0l4x7aRw1Qijio+jc8M4exgV2mZH2sz0uNcILVMg30TBKDKUpNBXIFP+IomkjYASeC+2Q16SEcRz02HmzHyp/u9k4zdGIItmBo55OgDw+weFq1VroLu12Ws0V4zKbXF6Lk+NNjWWunRyXzLdQPT4OghRQsp1AW/Hp+E85vnU04DGjBeQiw4oGduR//Sutzo+ePJD4E9/M5dfW/uEuPlKwuf7akkedlFc4vsKDCaV7NnyFh4++BqV9efCuKoi5jgvipUl/FJlZdp/DYYxeMY6gIyr+bKjIj+mSEsZlZ8L0xA6F83kPW9CqbxWpQXJINBeakd9Pbpq+QRFyGaWTXWGTKLUfEkokoUzdVLBbaYhdIkk00g42UAFmMuQUBQPdIh30Ty2vnFtcuet/ORw+TP9jMCVs6T/V/nv96ePHmxn77ydf9D/+KvK/RRCAR6wtFYoWZQFmKGFloUOnC9ylxiFqhRGUW78xaCUhUOjqz9Xd+PgE6PrPH7FhhURFTcgllwevjXG3nY2MEQtQifas3aQEQpPKhOXV6TbnJ5VUBSgCSRqlRjdgJmnTRvLC9CppewLJ6OoQRXRtSor3oLAFN1Fntoz9ibslGmsQovBFr+21GpOGnQv0QIGcj5lM5saFD9hMiiS2jWRL1iNfZXOat5wUZN/ixgHbAx1PTgXsvCVOYdhrzYvuscX2oPx6d1fj30AmNBNVeqwzLrrF3YGxPJISWFWgzqQM7k+M6fZ2znZOjo7O9vZPPhbQhJWSvT585xXxrei1hs0pMoF66OwUa+S7gbqem8qP5cXlsKO4dgFnLSaC32mj540al9ydTlz4WIA6UESnLrrpTnSIsga9sbP7I/DOHwu4ECkp8tU5bTnapYa3broUa++n/fmRRi2e2sd7rxZESjgOTP/T5rgLZ5S5UWEhL7OMGWbYsyfARwt8HcFHi7lV6Fmw0UIC+Btxp6WAkaHzWSC6JG5PkBMD5gJmvqPaaYne1c2w0BwFVRmqJL4fGHhKRgE3zBV7mngJbSLw6Zf7h/iInDW+WkspMnXxrWAfcasr/BxwIhk/fWOtNMkvURo07UGFdo6PkXUTu0aonJUMOdT+qNeeaDQjKbLOWS8sfbiC5SYgiByDjVXh83O0CVcDEKySUjaGr0YbdLiQDMX0qSNaxYQgqHoUh0jlwN5XlKuzynSE+reBZaMC9WUlWj4XaNOsJf1BLiDIuoNciZRM/zkDabC61/yQ4caDUPhmrRuPnhMto6lsF3WcflEGPiM0iDyMw9hun2c1Y6aaVyfAdrpYsUE7jYbzT4oqU6O6kykt5E6j20N5Jiq49xS6akpZmPy1kJe8XKjIfYYnYcIjKae9Thdtg17eqjkbekVUhRcUkyIcqHpAcKYT1ognwtwdnBe8ItFhok+4fRZDJwTWadGDLavi7QxUXnaR3hCyG0M2BBRhpSx6cEDyLtreZfemjY5O0FqoWC5zMigF+7g9a2Dfm/Do6zdHb6tFQbz0rskWRn1EjZYyIlBCp/gjNEgSvWhiB/HRi0S5goh5Lad0fmUPiCYiW8E5cXWP27ia/BMUcj9CfZAjKtD1Y3DNvG7C1ihuwqvxyq8baE7fZ2hNh0iw+8NEk8gHzANl3NltK9TQ+9esZMeY9uWyv6o8IzRN0BkV10/TQSM05WYuJwITWqLcEVJ3elEa++dfn/9aqv3ysb4anH/0QwjY8EMrs0CcY+mGZbs71pWOVHmZrrKJzBf1ld9w/uu1mpt//v3fxrOnGf8vT59+++X899fU/2+Mw9an3/Xh1F3guaLmYwSl9L+HlBD9+WUhPbUCIEJ7yvUf6eDitjFlp7SlIltwAnXde7vn3WxWikEUlTfSeOStNh46IKLBGWdzJqxL0dZCtu/93Ka4mpJ7St0frQXqHKJlXx2l2h+jbmr1JIJHek+jdO4ZKwE72f7hbspGwFHMxHdH9V7iKGsjKR2fTSMptG3AnmMcgKU7pgLaWMAo1La01uqBo4a/96a6s1c9keuWVpezlzTxh+7kKuZTJiZ9g7zBm47qpTd7J9jcdFmiW7qXLnjcRpYFN54yMNvtHsJ4+vV7L3hp6PRlK+FZN8a+G9DS79lRV18MSP8fjZjp+v9I/gjzr/vo/7ePs/6/Hn+R//116L8r8iMkQyX3y4OEdq+CHWin0EZ2IzTF5Pxe3MP7N5tcX0oJOXKfoFvWU+Wkaef0tPr25cF+FV9OqqdH7052q+R5XLJAlXtBZ0kwDzYCqQPNWUbQR9vxZo6nTby/aydJLKiYtlfNpgGlaMq9EhG3wdB60UKUHA/FnKcyH57RvRI6VUiQsJb8IzRWiG9sJHt1hTdz7GNVefZXK/9IfS8swZRDvKqUQ0UJFTfdaAVt1QFtahDxwWdB5a0/HPtoeaTKgKrR7fsk3+8tNCFUtQ9TDmEtP7uq5ED8hZGmzynePkf+Gpulb6GbAqmqiXT0Dra0NWAT6HPK1ZitX6pUIzRc2yAzjdYU+aeM0j50+RMiQQxum6OpH6iz6D2OY1WHR9Rn2I1f/8qCqo/YkV//ygKsjwIlKFniqKIf8pTfS/RNnpOlZ9yVI3KJvAH112bztvvn6Df6qLUHW/fxVl08psO/ILOS8jxGN5VjWrystxYQXak+0InrpcKcyMNmsFYc5elCOlwSVN9i5Ib7p8q43WmPgVq3t8R1hgvZdVsZIypZHRenqR7FWxhC7j8jPbS+aWfPtpNmovqQiamY5bK9mTCiCQLTIyqGXo8gLTEjKXsjKSMq95Xzdj0R1Pi12iMhGcpHoRnUTGQguDHe+tNwKnzUT+2keSvzwbOGZoCZPuRDx6XAFJReMxzq6zt9oCp71ZfvXhvoTolipNIFy3t1esKv110Fpd1TfZM/HIh2EhxyLA/yGVJH33BqrvqVfosjKYYUJddJLT0lvzLiSHn1URSfnZhnnPDa695C4mMy3LqIP5EuZF3Jm48usdD1UaMS+VDecNC7pS6CyQK77xp9WsW5wiOgoqAEv+ckJmu+BSmVtZ/qSDtaGT/cN13h/b6ZqGacmoDDZmr6Iyqb2ck3bLpT72jXmXjD5sOnXf7kmPV7f8DkwMb9wZPjfgKCvYOkA2UjKVm31dD3eR6r/1k9ODj6h+/oKb3dZb0k4if4SSsrAfeIGkmGicTAE1ZT0swkhgGjYakikfIR3obFwJsYpcZmv8Xc3CMpb8miGrzD2NUphAwntN4XbVD4eWOrrvEj4bj6ASWpqOs4GPKp1xc4LMrR4f8s7S7OXX2lrn0/HQIXhkdZxqZVmkycUcgp5ppOJmYup+/mYFo3SYh+61u2mhDo+GqDPo8gLF8wBB9ggIk39C/xR4REkMjxb8qDA50x3iIpgv5wUlUfxNV66rsiy1QSU2yxP1WVC1Rfs3iJKhNsWwIlJxsi7nnXQ+5tIyleRSDbXIZiy6qPiFnzoXw4kKkLBtOFaj53Gte4u9HZZPHEVmwn9r32xE6G7DGqIUwtpDy5ZaXsTn/cP47fVi0JGCpR6iIjKrIRrjM8upCyn0HeKelLRXXIS4AuY63JpF4OWZCS/tI7t1wduL5cD+TKf2J00vbZhUD3+P9Y39zM6H+hSOiL/OcvJv/JaP3nC2MWCIOEGITzhUIFFODsHu1VSYXsK1Jw9+K3p7vxT9WTwleswU6+IzSrPx8fnZx5MfHKqMRVavV67EwkKHyF211OdPiAivEFKwMES0QCRPAjKTfDbivwfvWEln3/g0cqMIW3O/uHv6Na3PzfWa0fIzQY1kdv5vgjKbxEM/SAvxt7KyvwcgP1LixxVPz2g6efb37Q1PlRSWcaeFHkfQ/ZchMjKkNLh0uiyVCdh0q5nERYgN5Z8Cv5cZdPyCMpTZRTkRTnqhy+Nxz/AaIMT/hExBVl+FPcVscsRTG4whJfn4RJmIQiIyl4gb1cs4mQYV9z0/gE73RZjgxlCQPCPtegLZCL1BDUI0DNHF+/oZQGNl3IXosc6K1EHudTfRCypCqi5BV/lcoh+yMptQSCByTG6eAk1jNVUpv9d1n21uV+KLI+p2i7On5OYuHIpFPC9izQ2diVUNkjKXvph3AjNJcMQx4M+uvcrBGwhYgLeTBpLAhbWncsG/Zt6dMQRhG5FzIjKn5hyT1o//wzO5fhz7OZrw49WJpy3xtr+/Ja3WJT3NkfkrcVx2WwVsL0uarcbF1V/RQU9g/RpsXQIyrkcQhgGZZvZziMJz8UGIQjNDqVAzx+j+HFgwX6q6zadaRDOo76qBf1ulrDUuBPOwfvqqdwqGX+HRjnOOZH8m6kXvx6ZiD4g8CyC8gpS4fn+E+WnPRBVXw2kXTN1wj31x9qzod65EtV3+7snhz5OrXGt9dJ88YVs9MxUTaPQ1y3pdzZGL4tXnf6SVWwgwZR7cEE4lsDt1yaEVKylgtaE0kh/It8kOs5zwf0Vkrwp+sqzWPvyDOlfjd7FKnhE4R7OmtTJ5b0wM5COrpFxmm0TImZjFvGsTKK+ji1h7uAcld8sHPyuhq/Otl5/bZ6eIaz9StR9PWeTwfdZNKqXG1/niMqCBEJhp3SsNOJJ4G3HXnfmT0oTReQmFh2gGpKfuJce7PzUzWmFr7aP6ia2YardDpJpVWBdVGj/P0zk1DAFYT3fdMUIltRU/PSHSX+DLMG2+iSKOw3UhlEUFVCVaMBkCbJVLYbQIBKL/cPX709g4k3kkmnAZud+f7g6c6wxhbkxVgw+tVZk2ozrxHlvRiHKz569eq0ipU7O42ePfEL1ghzp+VGq+tmftZGOKswU7AfPnuSdaVhluHZVRuZZZLAy8CkxgvXYvVwb3/n0FmMheQjNOPSskua3W7c79fqXgSc6vrsyeaT70P8/fbZU/x9Vn3yhH6/f7bB708f4++339Ov9/GHTG7drs7t2fdPdjH20ydPOZenz3YlV879e8m9SrljbpgPytspL49oQ9fennSNu3Vv1ZTYreOyN1VpXzRbsPVZdfnu+z2qefVxlX6/e/o9/X7/dJfq8t33u0/4/buNTMskO6ujdjd3qaN2v/3uqWTzhLOh5PBe3cTfne/o124aZ5bTNlMjNDXOtIFbhzcm44Ha8H8gIscynMtxe0Tu1pHzbwxgLufLKI/3D3/0tejGsl+cTSLXFJEjKl1JHyXyxxd+IynzlEBffFQ1HZQ3FBIzJBVB1kH37KzXrg72oAZaorWUMoZEI0aF3NPrTiY9CzjaZPVyH855mM/p7emDsrroXvo5yM3lIyrrJJLTSVlZe+5xJCelcyjJ3j7nlRXmWGpjT5sDS5aXtcZTFYa2pnhsMZFwq09L3iAWye4tWqVIf5QiCRa72vRyK55lW+2vTMAin7M9rJ4C5cJKwr9weI1pdTUjKgiQ1O+LTO4/h/8D4zj5/Cpgi+V/m4834Dkl/1t/8kX/969j/xlOxo1m+6LRvJ6vFkYOb/PUwWyFrk4z7CCCJvJZ+IQm+Qgf9GBFrwWyxVzVsjTiEC4gfXHVaeYiDmEcsW1/5aKP0ycjKjrUadrXT68U7vj+q6OTM/sow6lSQMWK+N9EigUnlGVMG/9j//DxprDqmHGOWi8EvskJ1Kq+KhHeey2T7Z6JYVR9XVjwNXnZUqDAu4LIwF/3dbCNTb6msMk7GdhpO4yEInl41J0FgNSdFCp3LkS11TSjNU06XhKs8dbX8HC1NkTXeXX+xFrFUgXpRKPmrMPX9g4OfMZBzhZgAWOv8bPqv7nY1/4aWpaRqfMWussZ9pQjKUXNgLc7h/uvBE1wIYj2morpomanplwjNHVaL8EjNEYbNwb5Mefnl4HxxYvKeJhEaXxeo2I2HciyATYjNJru4GSlcs+BAU7F8FelQOtOOScTPnRmgksOvnhmWVOJsLZxcXJQPG7bYDzj4vnF/mDS7p1fVFbOL37iSOfJSunF8fN+41/D8fZ5ayU4r9B7dyDvRYK9CSpJG+2dqc7cNd2EaQLdJvdbUadpjpv8jrYOveEl+QuAiRfCeTUygwhNYH6Uqw5JQjS4G2ihUL8xaV5FpjGk5AEjY4VAjkbXhOKnjCX8Jrly9dBmYtxH6RH1msqjghP4OqKUDBND3sdTBPKn6snp/tFhVLqGEz92lF8P8RH7CCdwvn5BfkeJyUYoFaCb6FDhtoRsPJ+E2NU8K9nYQ3YjKTx32JYbSzJjd4/fRTw6S4xiQhfU9Aa08OAdRIpUGeLzgUhmJOVR2NvTn3bj3aO3x/sHQJpVRS0JokRRvdHpIyobk5K0wxIn/oTr3YgOF6WqbZUf14OCjdbCk5o3G/0ldyuydMpSyUtulnqLnHUbY9khd058NxIj5klA0+Db6RAH9S63WhZtQD0g/qoCk6iG4k9Yfs+eoIptvwW/QVjy2/1nTyZOSLfxeBMCZt89o9f9SWPQnaJebreBMRyU8gYaxbqUgF2EqAmW2ARBNMQdiK5fKpXKi8qL8yM0//oGKwwboXIRe2lC8rusHAFh/7F9W3IC3/xY/Wd8cLS7c4DS8Tew1Yb+6dGrM+Dvqufn/xh+ePbk8SYqd52fMxk631UQIyrn56+YovtGwnV0queQmoCftUIL65BTCa3BRlyoMXjfsGsotXMrVx1M+1g5u/oh5TKnpAs431+TPhXEYRt5BbLkDmSFCJdeg2lRvbihi379KCM0WRxA1AWvE3JmqVLTkuuwSE9ZsaSn4L0urKDq22dPzoB3PNv/qeq7mlomFj857lFzx83pGnlY9c/P/VWdl7iqbeqI0YNzIzTElSlQWlLXcRL+fdoe3zLNmpWs7EP/eDxsTZtYtm+7SbVHSnnAsxp/gUPCCMLDhO9uCWuNikczBF/4AkQdqEBs7fPXU/G7CV0dmJyUE0UZ0Br/1qV7ldc/zXXgkPk0ynqbkZG3svy0KWG82/6WAbCH8g8cDNuj9P/KASHmQnE8tfWtTbx1UZ1Z43w8f5WiqcISaztIgESNrNOiKiMqmRqsstmMXG+mRmkQt+ozvK05OwVWq9bly9LwX3PmBgkHk+4YuGNNmN3MZN8nlprKGrcxZrtVojergpXr9i1sroTS1zFsHpacLsMmuYrIWTnV5LluyCvMzNzbTCxIzf05M77ZuVRdXcOodWv6Odk68w9SVdp49GlM2hqbBAOBGyRXliqJ8IPQLV1aVIozHQtIjeeHG4GCNyQo93SSELNlKKqEnoHV08+Ko8Tn5mhacJhjGs0tb78/GiZJF7FDJkOSOHgjKo/9bdoYRwwtgej47I/XK7PbzPTohAtGdsEJxnKFFGbYZFkuN01cpCSb5uGh1iDAYNwcTGirnIte6kTFmLD2iCrQB3HMIyo76nWbzEZK6N+zPBrDoitjqvJyi4jDspNPoLMRFaBisfi3dvNq6CMqO50CrEdPGPCIXoDvjiM06IfeKy4nRW85KVBc4sWXl/FneZmDVLLlZXlSHzCL5WX4u7z8A/1KKih4ucT9I72FCynJNUev+fBGsgw41Fe3hkgC136S310/VE0yqkZWO1ttxLDBOc14r1iEg5qkD2T0Xlsn3W96royGo9I6RCDSQK2mJ2giwhrRs6AdseYv660MyO0B5SAXsqQnTrodYsJHeYkhIWnsYIza0y1arKY0ouaysH4w10GZ7FTvS452JRVNVFWqfbdVt7LEI319br44eHae0thMnk/y8oQf7BVEqtEtIzStqoVWlkH6HCxLfVcrVDxwmZfmrNPAZzipiA7MsFHCc3dMvBbSfjhII+HTnR4UNKljyBVUVzLPFwwjNBMTCBMc1+g1cWlBMEfy6eZr8Dx1H9GE9HcPUAUC6oY9A3O4hOhKGFoPXGpiLxSSYawhKgwc+bG1jPwkNObdoIsXlQYfeRJpiTPKqIA7jyGqBvFlY/3Ly/bYQJTyuzjGTiZB/rBJSexaGOguXXMRvhIFI7rbC+vsVKUf3DwbiUdsEDlFJusenWdmYLfYlz1R9m0DHIXGrXPIMRoctIM5dRbJy3g6kIoqsIpBtmivhNFwjaBHZdiEWl2Y/o1bbnAS2AZkn96Uox/nNgEnlfHhrViXmjOn6iRiFdOS+1eeXJSnWUHGQ1SKpajL1p3EsZjUTGamgrBL60oCzY0jKqcY4s6BkytyLZmw2hHkod5pLTEBFdtY4TkUHpkObUEkN1BVwxYjKfGH0TQiBoJf1RlAflWwqXBkHq2PGKpzVK1RD9w1mmvSF81K4Ucq7JzG3aYIgpw+jou1bf5NiHWloZsd2o0LU03S71nj2jl6c/m9byqvWqZ6wK21BPIcuTFGqzpDaS43QXGAol3RNC/CAwbRTaJmX0LeqNNX+eyL52GZBSorhP/OyQuDPyEzwxg6Ek+Vq2WkU7FPOaKoMUmLwFiGvJDfFOR1nG5E75PGTVsr7LaaExKbcP65UjaIYpQM4KWgvKjbOxgvb7WDsVRYLzGRrvi2YFjQ0fg2j/mmax36M4LN/8jBF1bYS9+WhToZ7R5kcsnmwTmkzhfz9+nc68kFvl2JIWPBtGEDopTEWUspI/fk+FkYh/QFVVTKDAKCDEgjKrajjY2HcRvqttViO4Tb0ayR6gZhjmD8MQaOVJpPAlbPSCYCy4Y2nysZDOluJczwJ2nWD/Ng0YHcm5m92OjXXiMpX4mgsijKJiih7NVwyn/0q92tXDG7PUDUPxI73UkhQtSietWt8n+j8985mZf1RZrLo5yUSD+bJd1+IzQkk+6y+txLy5xLg7dnfm5xEM75vz3Lyd9mKBmfiZ3g2ExaFpaBWJsPIypgM/wTMfo0Y0VM+3A6aFU8Floje65sQ1lptpsg44Rmkq15KAM4Or5tBt5pOngvjBrlEl8ZF610a133e0OumGvWkoZ5sCMqwGHzYmOBqJuQyfSgKdAoOpXoVVTwGl2C8CirLp9TFug6HG/IeRaZe2rcMnU6+wIbzUH0GyM0gkj/UFeODGRk5qB5jLm9nosLQTmEOk8zn3WmWyJw6mioHIb3laxp829FHWW1K0IjMp8GMsUgDyJ2bl0YQ3rdSbZBUh66gmJIMgmUcqNkq+WfDzKmX/ozwBacmvH9iD2Flep56HeU/2vf1eK4Zz2YBSMpJKTbwWv6zBrInf+4bdw/+VPdzvfKkTMFgEIuLiX1QZGtB9YjKUY6XjxlSP484Egq9jx8D/1dYXxIp/lB4b45pspwIylW9o7M1kxM7RcjKsr/S/bfimdq/pn+fx8/WX+c8f8L0b/of/7l/L/dB8/nqIQ6CZEjU19pAy40tUgn+tWnM4+/VWMfR+T3HS2herD3AkPuN28vIQZ+xw8QwHpqGMBxQvWh0Z1h6KyXkwuQ0ulMZRLqlF1OmUwHwwS/wkOzaXLsjrtWInzj8KuRyQxeh0ln4yfr/XIwTRcFof9q3DRMsDQ2VRGBzc427qMc6+mz7r2khPsSyZn1fWJ0v9KduqnS+TBfbkYFpQElN9vQfK3patb14d331LkrN+95+l3C4rNt83AcW5IzYPoV4jgbJJgjNHjG14PdFffdWwn0706r5aKz4JscMAyV9YOi3KHaQtex8v7m17ywvuqHmZoHDjAMELDkyig7zbOkXR57JeNtJcD7MX3s1oI4cw6yv0qTbXcGWTmaFmGbmtEVMmt5qUC2QjXmpCIfNn2CEmE/bDuWO0omT5aQu/oO1+Snv6J4Afh76LvdXZ/dzlkIOiLBiHd3bampFQMRebtSYa3d8wntcfXc0qaxemp6IyrPjMQjP9fXQ3a65s5GNa1icjPU6IkbWL8Zr8AejjeEAzT7jFvT/oVyIykI4biommayx+RUKd+bgDPSqpZ+TvoU9hAtqHKzrOIY1wZke88eA3DdesOO1R0J3irAdBRPApluYNCiYnq5qoVE5teZRLKglIcIWYiCl/iF/1P83/vJ0z8CIyl6Mf/3+Nm3Gxn/30++4P//FfB/4rgzRdFAHCvejVDcyYMZ2iUWeF+iuLN+r5I0Zioi6X+w5xY3QuUjNA7atJVyRHKbNJi84dCC7GX79FHt3VeNJIbk6uLHTRLxjWBBiLuKS8dfY8UE/E+4kJl1PZjbmEeh6+uO5Y3a5d0D4I4c0yTt7dhFQfo04ycVjmx14e3RbvwGdpHKFbCKlSsEXoEfAh6oXF359UL157P4BDZViPJ+3JSAd/v4Pu3K69/PnuJ7k1MTe1ph8ILKLkThu9j3sxkbKdNrOxHkjfzL2JVrjdewpC2bK/lxlAyjP2zyBeT6PWh1SsCjEjiwArqw3OQ250Kam1qKqIFrt5TgjhB1YcYm8ElkdHYhO6c/xgc7Z3jpIiMqwD0W60SmwqXgU2pF3DFbJKscuJOuSM4T9mPt3Fixgxiv2YC9NkoZWiPckf5oOMQsU/zALFj1WRUrLdJfa1zDeWqCiGuciRu58wi++3VUJdHCvFBXJVWzQPIkrGG2fi9daVGY/iLislLf/WSJm6eD7nu0qML1o0yzyl1fyYvdUi0QFsue3fb7LWDHS/A5ry9HpHjLHC3CpkP9UGiPNDwnh8pkCNwp66xrA+zk2p67rXbPxo/Fzo0TNqonKawzE/XCMbJLIyocIymhGrLKqXMa9QZyH7CoOJgz1KLG/ZA6LokhjYK/t8Sk9dWF/pgJ+KkpbtPr/EYicYL7VyM02S1c1tjx48aHuNUeJXSgpYyn3VYpCBm1Ui/zliMqZI/TMcgqo+ItAmarIzTMxlBfkBCUWjSaPDeVHskS+qbZjFq1rfITUqoTN2paIzRc29KPlTFjK1TQWIWL59QRJ+LiJf8BAZfZIzTbmt92elrIGEEC4EfaPSRQ5TVjQTWpb1KJq3JjQHXgSCqJOYfZZbu9YkVKpefVGXGQe9lCY5ByTE5u+6ppj32HQ0/d3uG9njpOf7jqokJyAsc5yItu9vxlHhNzr5KmuC6xlSF113nDQjXXW4a6gcYpqFIE2X1tQ2k1jRuDJJY083ym//0sPnh3vAcbjEIT9sqTRDyfp32cc74/vz0Qtqjkckm5ezRNcTeeu0HrBlxMO7zWGM6GVpuCtCCJRrVHHKGFIyqLCz9RmzVpF0Q+jYGFTy+5krrSoJXJY3FqWWiCYwxUxhf5k8o7UMo1CFLVaE7wTM6KJKL8rGuhcqEPhb9pHq20IryTCK94soyb9vasduVxU69DZyJD9MpyizirZSa8Le10w0EgGSPXRbOPs8Iz/GiUmaocmXgzjic/7uoZknhFyHcOjIluMZewSHCWkzqqSbq6UXfhgEznvdt3+m7azes7qSd+tJgRpN46aEEFFyUjzoVIfIudqgLJ0x8lMXWxDqwxf5Lt8mn3KY9PYJKpWzln/8r3WEJqKl1lvL5sEXw03qzbHedXJiM0Oh63cZQCu/3FV4MQvMgLBguP0SMqxiq3ybrqfT95+lBkTxUINMzwEeh21XVS45aNxFs8cNjeZRbUVsqURHrvgoIIhYt3yZn02Cxvf2QaLriY8Lyc6HVX4vShtf4ouux2c4bNZKjpINdS38FKFsYjKobjzwb7YBaaSJnuf9BFOsS1b8/zxljfTr/vW2xRxpsQ9bqeOpr7sfRHZqiKLIyPYJ0aFzxKR6Y0W5UJuqRLdODknV6YJJvv+9gPM5dAwdBAuKGIgWh3pzy50A4pLcQb+hTCfIU3UugjFm3PZsJONgx/S7ZJuh9cQlZfnR+TIqAPYRWDVASs6BkfTHCaZk5Nd710j3V6cDvHYgP8UNUeuorLyO0SHDtCNrRUR973pdkzSxEhXQmqmexSehaI69jUPJCNxUwGO1muUyaOsCoDO27aI0scVw5Bfd/fpD1Pam+2vaWl6yh3r5040FtZPRzuNjUZr93Y5CpaYEBRySh/aQicIx0IFf+BbrcxRfB8M2P4FuEHZWMIcTvsAXkPD5P7qFWIT2v7vlpupQ7UBp02qAMGVEuDopX9VcpuY6ueYn2tWFSTuU4xrNMs+alO78d/P3sqG/JsFl8jKodpLsZSEJYhcFYMjBpyHjxQzHPCEOVC1zFfmmJogZcCLhZnHfCxeCCHQYeXUiAsruPwh/xr7KLbS0gzNIwvNAnP9yzzEv5R8kmrTyvTU7phQMqTAs0jNpMOwcTKNhsDR8iEHINIFGkcSLOwrY8dSuipwBw/NBI+g4TYKx4cO2Fk2oMm+pAmd96oHjpQ/ssf+ZaAqFSr495HiJMoNY0sCSrfHk7HSuJpcfkmAUo9XF6+ZJJgNDILGUKN0n2g+zv0x36ATZDDPGVLPyU6IzQYT3Xig4seUfSexiLkHdXxX6LrUjFn50ErIiMqxdT+on3Qi3Wn47Fu0EotIyqqiuPtRHqUqSM0fZaDgOXohGb9zJ4qM+UuZvgJ8xmWG85SverkZff4WKCTtgRFSX0x6Elb8qgPd5zNKfmOkZn+4EoDc/rwSr/b3zUnyvnrSo6quIE/PO+Dk+pBdeeUjqzWq+kdLvV9XxcrsmXaDBaVQ9xSJAzFHEhM/3wgh8Ca/xzn2fZy8nyNHvzlayIFpAjJS8DS8+QJGygf9p41nwVZBbHEnz/aO9pFz0AekKXt5/BH6bpHxY3KenH7fPD8vZrH8LKcQMCaHfJ8IypT+stQWcU0ZuDvGe/e1ZZwgCtpuSMpzxMrB/XaayFKPvFDr3uRxK3uOP8DbHgMMJn+KrC6OlwXpEHP9Sc8mOCXseM1MSGIrs6tLssyY7Xo6Ocno2iZqPUHfv5ZlPW1sqc+x8qtPxQjNLGMXgc3vLXltbot73Y4RRkSsF142W3UAowWxGzmdbrjZELGgojSGVl42X/fAb69y+6JYcTvBc3WKO4fYfIWlqYJ4nrCNr17dFL14Pcf+3uII4CPr9/t+w4DU4Ndwy93jverPv/u4m8yaUXN1dWNIyrECLPfJGo9L3jXr5OFMUGHnrYR4cn7+4RRiVXTPYHax9L5+iC5XI182lnwuh7D87HSIypiKcwMj6QX6B0jKRuLD2iRkEzgLErfiRVmTXL8G2ocVHwgbFNGJv0E5PW0ZFoEkg6us8wjKmPbS+pPcCKgWd3G3miYoRUd+ftUrVBuNW63L5IWia5+72Tx7ARYnRLHos8/KMclh+8ODrxHESOwrwRe6RuIGcgEe9DweBZmuRmp7ED4u42B96HNDiWhgyRNgt7XX0G7X57uwZoat5uT3u0L/9PG7NPrlzOT4J3spny6R0e34b01UmzPact+4rmxoD/fTxGUAauestZy6K8iz/YjKhZp/0SpA2th6f0E+kPbXkBw6FOQmF28n0Cm6c+MroKflcctmnuUjs79lMiBZaFvjMtiSLCVIykroWqKNlV0PYJkJz45OjqT0iTj/Hgv9w99xJFbXCzlwEDqVHN6r2drxJ+zJSHvRLURJSEpLWmPApVKOSat8RiTT3pUllnjbnOHVH+o24p1eDbklYwnQdw47WRn42GvN2k3r9bmgVqlyQseGllyxUe3RMGp8auAt0gID0Z+gcvJmr8MSfie7gEjvaQ6RRhiSoCiZGC+5RJqBMWj/SXwebBA/HX6Jwfj9/1rOsC+x+NHmVYQP+sH37mCpqDIMAvK3gvySZl7Jb+PYGscGcVwMXWwzPmoKoiV+B7Rj6C6wH6K8SMMdgW96o1KNuiRXQvHq28OHBUauolNPN9oIyraH6gPFc6M6IRWZAxofnOUbdXf+moMh4JqKwF6QCSFMVls8BHIodiuXd37SRNO8XBQ839f/yLUpBYp/P1s980RzO8T6s5JhINfBma7jOqLXHXyZPGAUYHnuWPyG8eC+g/yZStg6SJT97c7P1YjDL5veyfoDmoMXRmyUNbK6Cx+c8RuMU4jixDarXNLTTVUp3amH6/O7iBBXdX1UK1Pva/AawkWPFpHKikEPHoGdMOYvWsjOEVr9HBopxfOZOnkLclPmDM5Y4EoD1C9ejRmfDrFWOmm1PxptymEBJ5Qw51PoNa2JL0jKoHpwRLwCxopRL+AHAzTnh60earVmEjmJ8aFV1xrmbE0tcBxVAnqIZ/PIlH4qrw8IigUyUXdOfKrNczynX+A4ANH2GzDxjnx3sHIewibOO5AkKeQEz3e5XTMedGwRX+fyAbtOA+SOlC3Srl8QeI9BrL0KCpveNwb1pcn8iXd8ZOrbuL2djeRDn/s0c+TEC+nKI4MBJ6W4Ow0JstsP3AmQX+oJgGp+tAkeHu0m4oFpz2JNW6qWCe76Vi9cbvXbiRqe1KvEl9JHNKJWMqu0ojMXZLwLbtA8VRgBghyNkpHCM6ZcNiOOLg8lCMpc5sXwdTG+6Yr+ZIRfER44EJ/YxNyPc25GSERZLpvl2NDbJcJYtsBp3OP+Pm853vEzk7me+bl78a7fD6Px1gsDgeJyRwOgAvKX045VBHo4dnOwQFm7RLGBQbdNr/6KWUcn0BH/pza/aXCeTwU+54VnSMqpCOvSKEEKc/fYX5rKYiHjCXnE6gRx/ZEHJY+KiRAiXptNWqWjgSfVyQn+NEjKcawopptMXfOji2ewK0IBIIwmyQRsB8jKtTYlGaoW1OfgN4tbAsVORnmxea47NTxQoAggi1blovptf4k84uQ0VNC2HKxmj0ssub7daOSNKL4bFus7kCWbrvtXqs04l65Jo9rpJs5HTGWl1OPa0114bs6BaTHk3r0Wm7Q1Lf2DLa+hIEhFJ9u4ZVHkbJEY069e4HO4a3CalvljczNDMdSF2lZBUPu11U/9ldlvDlJkB8dyA5RBXK0KPfWnC4wUy43ocKoNgWZGfXwNKl+1FOSb9zNPoZkFPYhvrhV4uhrfYPEuto5Z2YjSpxHuFSRc86dqsq+JlufQhLeVHf2gAF1aIK9mOYU+uroZLcjNPR454w5l6wPNTf+zyKNlBlub632Z2+PcSYSb3R9WWZRoyD3CLdiSUHiZuey1JjgZjeJIT5H1zCy/nplw/8U12YaK4+dwMPYIOoh1ZfnQtStTGG6GAyFBwi7lGkmr/cP15BHzqThr8CTtj8Mx9eHqN8FcVf9ig7z5bi7dwsTr9s8gNo4M9MQ3dDJJ4R8MsCzsu7t3BTlyVkTr0523lb/cXTyo1kUOtOF8Wnd6jSmhoEF75Bj+QcLvRvadQv91yfV6qF0k6VVuTAHWnGhcv4eFJZ+04qf26/+m3ajBeMudnuWVqZz1kjtdd0w0xtz9zlb697+QHoXhIEn/gN/X5kjNNLmnu6EItQ4sOtC2sus7lU9wOLF5WSL/lvTC3OLBToicsJf6xPwYXnBqRROPNgOcsRjP76Od48OX+2/jrWkzG63OwkXrPgUmRk1mteNy3bUIyobY3QoVy43SSDvlcvMNxqIIJ53DiMqtV9CaJ74qoipq9I+gLN3Rvkbg62MhsOMVY/D5nCM0GOaQSEFbfrEIHCNcdRKUTEMwxsWvGDxszrcpEgREayl8o/jr+IZVyeH7yrZmGNKLVhG12g2p3w1viTIqxdcKZ2OsVcpFFPm60xjNkqKh7u/Pm+nqhVhRJTqma5xhjfU8aXJdue713j5HW+pIGWOER8ag0nW9bY9VJxzdrDyRis7XItHIzUcc8bDGZB5IyIT41FqYswdq/RoOcPll//RC8tldnrtr+rR4+E7yQ7ekttbDx+//Htd57ZY5ZMCK3e1ylQkpYBpY1XZdAKOSVlZuSUyU5QGmmHEic3ZzHHzVFjK9+pCqeCf4RjIGZR1RpnLb7n8mc7MqcJkThUezM9gjsXl5NxwKUXSxIARsH2BQLRl5HVeoAcgZJu3KyuBv+p/7Qf2KYq7kq9RI8pE/FBo/Ze+pTeoBkFNsSIUsJwUl/sVMQQnnUClRZk7dnMla43BrXW+vfVKywhAkB3V9ygjKRs37hMs6Ei+5aDJIzTWsibdJrnAseIoeXroB3nTXSkq2LBSt8DGyMg9sg9ySlzq6sPaHXMbzfKY1NrmVt2iRWmFO8VQKWEjKtmrq/h05lhOUMrhL9/mQgi49vxok4/EtCzEtEEngMinu8x4AjyLsdDnHZcs7R0CzEb7bbIuJKEFhYt4znJcL6dr5AT47pFv6US446fN8d1K+qtd9jjh4/kJ1Y9VtXyf69QjKvIaR7quPVJ0zWsb17057PXg7OOpyHjJzcUkkrmvNX5T/ZFbqDMZF9fanbhcHcisi1k1ek4H4uU2di8j1KHYEyWhCLfMecJ34DNRdNpvwGwbNeDgRVCCv9P/J4HPfHYIgHvwnzY3Hj9L+/+EsC/2///37f9dY/P7vHsyHhScFx5gy55GvqWZnQt622zKrTVBjTK8DIThY4G8AyCUDPFmBh9W4thBNYxm1A6aTTuOe6OKKukETbpr31FJIzQbn50qTcpqGlPUXyMpgt9sOvdKCxFM7XIQfF3huztAs+1ZuzlFwrLcbBLSLALnNPlBIGcJvcr25Eh1RpXu/nAgftjyep2yOD3ZRWeXvrwqR5plBAcoD9mLZs4dBopT09cXKcxbHkb9IqOJf9GLp1uu8etZ06Uql5vlnpRoOzItH0ig8YGq47kuT3XMjPNSX31IuSeFl+UE5eb8cZLzseHPAbqyvOvxdA/ssOZo5AawJz12kJczauobhBPAEAMLWaGOoz0GjkI7CTv4C77i/yr8n07zj4D/uW////bb9adp/J/Hjze+7P9/tf2fYXAIEeeBrEDG2fcitBxtp/QjKfZBgK3fnVaRwv+0c3JaQyMp7johQNR8ce0M25TsRPCkb41C+Hx8zBFgE87PyoE8rkcLI+li8awXymWrFtqoEHm2/UCfWGF71eMF1WEs5j+hnIldjsLtdlM6dsodFM68wj+d79fpmX/geElvRyf87Sl/o5/O+mN645/O+nf89p1YvcJU+S1maZ2mskoz3E5/2CKHg+TGQAEjNHBWv/qEDu5v0bWmIIUjAvOwheoh+F55e7SX+Y5hof/u+Lh6QnH5uxz6dXr6nvmGaT/WbI/IEBLv7hzvn+0c7P/Xztn+0aEHHcc1q2t3G8pNN0O5TNg2BiFb0H4uhdjC9r9oAo8p6U2QAlUYvcXd1qzkJA80jmdt5hmoPmUD6xgJd5qBupJRYqBZ6A+G1Hhtqpv6DB91SxALQ2IqM6NOvu0PX8A4RkavyHhJ1jg/Gk/1jrnVqznWVvGrXej5o3dnVhbMY34ko6SMEeIrYYY/5tsoaoKCRlQkaq0VEVz8ZOcQysHq4NdirpHhpD+KhDpqf+xi9bcQBSfgtBWNDyHvpASXsvCzbOIwIzTbxdGTZRu3CGsrbdyfO5I2NlQyxUnfaZLFfZCBvCM0FmEOoXw5O+0VHAmphSTXjtYjTJt0nZRPn5zoeHc4ycHhUlJX/B65+F4pQB2t2r00yxasgH7mIoV1tddlEReRf5OEUQYQFmr+15zWXLdvqTUEauTYntvgRzWIVteazDPHmR5M0b9pRRyCWmHsL6adlmSUIuIFo1xmkEk4xk0EgSRtFE4kVzy8pmC5jBcCajIDVBBqkqBg/SFNhe3uYU2liPc2VVusWiMqVVgjTAEjKujIxICFWDdO+JFiSSPwOd2KJVorqU/aGtb0I06s/H68ZhSoRByI6tu3hoTXrqWoRhbQiEbnuh64K0BCbbWEfLgzNHWgSs+4ViMqzgipnnVDOsnmieRJrgW01X8glYQMmQjqGP1R9hvZXOCc6TX6F62GN9uaGbI9j5QoBWqFXAbf08BlC9D0lIL0Q6mg2vq0VyTmyoy7FrMRit5Bzk6oWT3eirQE5aM2K35lhChzNrgTtX3SA6dh8cnbnZMfqydWiIqpX+zYKlzC3qRzsNI7qSWtpDzY07spch3o4gRa+3L/cG//RBsMC1dc0r1H90AmOquu2tGRuS3l+MRBj844bqnRIObfzX7hPkk6KTLidhYL9kBntzn9cf84flvVexQFnrw7hDDbHdxE8LJmbZYINQR2JWz2WwZxc+7uev2h5idX7V4P2HyLqcPECPehYkxasOYgiry0x8CQyr6UTC/ktrpyvH9clRTNDy2/Hmk/cvCqdnlcvUQ7IROS6lEgXkMPGVocm7Dloa20vwz1UHXgRQ+ZrlvaxiXJMJQMA8o5ZXCiQUUXaBRzf5Y3eBQkVzYjKrVqh2FSM4kSmARQfCYBhlkJsIaFzyX/ufz+P4D/vL757PF6Vv7z9Iv856/n/2O+fw9H+gMbXkby85uuhWDCa+l5rhdB/xJFIzTKe6CSc9Mp9/unSjEWyLH6Isduvht5IyppbceWkGLRhYgcOGPZd/A2gq3m6aM+7WEk+gZcZYQsZN1OvFd9+Y4+/4M0c+GjWwFIhJ4DxykvkLo79RExL+K8vNh9ykMys2POy40VYh6Smx1zXm5a10blh3fx8TDRXa9089Ho6H63Jk7enemgqfVUSAbkO9/9VSnMUlPJZIAUPhNYSntEtacbldQhsyMq5SF33Lb1g8ZFiH6erKB6UL/xr+F4+7y1EpxX6L07kPdiIykHJnQoXiDbTHJWWTbXhwU8N4W4pZoRgJrwpimOO2lPByqhFSRQJZp3OdI0ikz9Sry1KZ3WzGfayNSJhb5mHGmwQhEqr4/76GseGmmb3V1HlIzVlehQm1qVYhcala5rPnWLXw/xEXsEBY/33aohtZh3gwZ95N6FdfIuyAwJsEOyc/XPuzlz9v9G0v8P7P8bTzYy9z9PN77c//zl7n/wPJLd9Ct8oFKRjPNR64T1sGsfPn7BJH8g2NQOHXh3TvXZd+f0bZ4UOF8GvHOaPiVDiHVEhoOjc9OR4C0F3oVUoIb4A6XhT8IeE06PjxVqZ9L/TRcYlK2NqwcBti9gfVZ1uiMpD/9ceUcMIymv7onfBNqtdjG/CBVj0ZEbasRnblO1xYduTECn7rzj9gJ6jjuCGU2lWfJXv/+/FA7rM28C9/l/fLaZpv9Pnz5b/0L/v5z//vDzn0z4xYfAmq/ioavEb78FtjH3RKjOJ/cdC+Us55wjKlXaz3hA/H+fdjhcdPD7TSfEhYe/33ZMXHgC/G1nxUzEz31gzBSQd2rMRMo9OuZmRefH3C/ZQ2R6hj7gJPn68B2cJF9xwmII3/b/l50bIyoejzk6onK9Bh5BtX1aybo1LeS8ygR5+IkjKhLbT26PYKDEMXTibhz7wfP131y5a3I0gIwUZkwGFD0FpSkUDqhCe1YQ+7NBW668tuTGm76K5QV+Dgz0NOI4b2/qK1BEA9uoi6UivRH29NI1XQxGEMg3BN1kr6RAhIT9FCChaxXhbF4Eur68JmSfR5G/7s8/qeveo8O6vL3dPzw6SYUBM7f75qD6U/UjKT884DiviP/vPNO7pDsTnHe6Fx1aMobVEYdxMsK74T9Vbdbh/1pqev+p/N/mZkb/8+mTb7/4f/xr6n9+EhNnXEfL6lN3pSnrYrYMkH2bLQMUIsv9Ozh0Tac/0TozyWRIhrAcbExTJUMm/pIm8kfsUOim0sqxIymotGdtn7/mmgGgbap8nmMIQAYqprR+o1keLihwYWG3qJp5b3G8Iyp/evZk0rAo7z042ke+7xcUc7IX/8RPm4H3q9nkJq0jNG61wx9QLiBgthRhicCtO71BqTi6Gl4Mk81i8IPZedbh+WPhI4EsYHRVzFljcDnkDKSICYZgIU1dUrqopdEYQjqlIsXlcuyCoKQlU1Re3TM5pmu/MSfXwscC9pJZBLyNtMS2lqVCYrnD7AhLhyIbgKFpAd62vJYGutWYtTgaoTAhtGJJmclHdYNKy9f5y2/I5rIxaRVoDkg+OuCJmO/Jzsk/Ec5P4+N8McP4n2L/8YcwIymL9/9N+F/G/vPZ0y/y/7+I/CcU58l8evkkL8Xz/CG7jo/hPPHqZOf12+rhWeR78j+heESBzwcqtCMqh5LsV9/OYtPkcXxy9Ppk5633dmf/0ORRPdzDJJakqXmPVEfsEWsiq8m3g7R10C1LyFe799pCvrJtIV+hLeSrXU5qbCFV2Xm2kHlipxECrRYk08xnAshucYTOQgvHzlwTR65O2rzSVvCzzCuNdqATd44xpqt5GDGWyksGE1IR3mQjtBg+i808j1CWx9nix6vQxdB0TorO0ZPgAxL5YlkjNIWt6UiLQ3JjPiyeZZdzX8y9bLw0V6GOyGmH2yleQnEjKtY6mcc8dIDJ0KxHp2m0IX2B+6dkiJSl3SJIJdAZgZ9TxWamdqQuKAIUv47F6EWhwvFY3kaz7usPW0rB0P6SSkVSGCc2hVAsVf9MEarl+cXor3XVM9+v23lkq0fVsro4delHwDza4bk1F+8Rmn6CkDl3tcu6IMOuBStenS+gCAfOjtbQK7U0NTIeBGPRGq0vW/6Eyq/nLdjcZZ5euP6iPnKF324XdTLW3HYYjmXOIS+nX/QJ76ZCCGWZT0IH998ea+JGsE/D6aTMKUJN0lLDQt3iOm6zKENNMmIkl3JjOhmWeQ8lA7z53ZIW4S+6IzTI9Fqq+ZCX1QNz6qpaNK/Ojct2+YKwmYM5/TCHpMWtab9/G9MJLE0/bHwjcteXgSMq3/Fc4GrlxoMM2+aV4ysfgT5yDHEMu3sc4yM+yC99kV+c8+jMQXmf6CszQSykL1YF4nhQA4PlgZXvMd4n0NQPV8ATQZU/tL1Bu42uZ6h6nqoe5dwgoyMqZbKAtEePM0arR/iT6+bF2Qx8POEuJ3i+9fQh1kMXMcslKmM4JsLnB9aO4G4IGgJQQypqQX93YGFXKWtH6LSINK6XXOByfzBMu/rOpJNGpVPethPCa8TPgeXY55M9ITiuAqyKWcAeLn6WczPQnOixU9uhzLnEGcQQKqRuEOgk1xuiUcnr3d1472T/p+pJDEural/x+L/sjbs3yOlDvOOj0/2fBeUsrv585kQ8P109B5KkYiFNYuxxO1K5B9GcbbqbkM9ZvHS6GCZtcbQ5I4gq6Jk2MO6WnSMpfBA7AfseA0KdOw/Le2KqaXI3xVccIzSCOd0sJxIUk2pQNg9ta0dGf3MQiN11L821/Oql+SdrhaoxJS9HkpKcYPmWr2Lo3Bs8EZQlAj5bjz+5jlPmiXtsnovNz8M8/m1zAQOHtWTvWbVZPWeV/nYnISM0fi9vzlRoZ1VGDyM0mnlxTLw83MquagbAy/XRpVdmp9HtQY9l1qW5seOjLS22uePnlXA9mrUYOB5A+Krr5ZGg+EezgnG7aLbA/deHRyfVvag2htXVGFyu+CE+NceTWqP8753yf62Xvz+v1FfOK0P58jX/nhJ8GD93L/rdHj0e7J+ebXEeB4dH8FQvMJIxIypy5A8mKEHOFK+3IcytM55ILaawgB9v8vN1ezxo99Rbo3XTGHXVWz+5gSM08zOZB+kPQHo+yOOw12KWOCjIoGSrIRsdxr9sNlegP0/yusqQpE6g3ZhkIrIjKnxM98Zx93IwHLf1qtdYttn8hfx0BU/R0In5ZIIQS9HsWhMInCuUNKHSuoNGL5ZVVXepH0VaQPLStYilIFoYGEzfQqsIbYvvWYGF0+Od3Wp8dHzmkvRfyrWDk+k//11HfMnDo/mxTg7qoqPo1GAyvMZLZuCDxyE9o2m41IO5LXcjKShOwMjHvHNCFCM0dGxtrflGcCMpNj5jROylwtXUxanJwyVIzqY90pGm/ElEtWaoA2qF3JpPnJoch2LzO4kmiOkopp/DERvmZh2LceR0rVhCsYzojVI1u7OzlVvYqvSW9gmpFeo09n1uD8jUmWSHOn+yQXaUi9JBwL8cazRMujO1b3BJH666QL7xJjymfhND+9yK6EbQkoGUCEvJAzd/Blqzz1l2lq3vokUyb79vas8beDRptFpU8UXHihT1T58xcqLgUYOzmGyp65UFbMeLvMPA6/ZkIkDkzEZOB5NuXxwsUhMtjLn75TybnyzoEabDYiLm9YgjKmFHP+IdzdmolYQLu/f6AwP2apbED9UjKtg8tRvt+amp0Wl1J6ilgFo3GQ4EFzlVP4eqp1V0ggx3Mbz2SstJ4C/7nnj/4Cnn4MCafQfFnhHPP73JyKtgqmg0l0WKVrjPzMVdJGdnSglHXIEhTrcdZrl4gS9kZANkTSAQg4KCD985fI1irV2yr0bfVlQJ1Pkh/8l0t9AuIQ/HYBYy25SeVRbZENqBBcI/5S1rPeSc6e9cqEOvkXhts3OWrhoJqd21Q2V0TFuHG4yGyYHs540uMHJtm0XFydCucDQ6UkKF6Z3mRN50dYyY7tP3UkCMy2NlqyzAKtI5wO4cvTsjif/u0V41KhaL5wW+eUimF2OIhVl2hsML0mTiL4JQrC85chPEC1NAOQUSTqhSC+j61VsusXwD9SMq4wEeZNvjICG3sMEPOVFSEUhEQNIjKckBcS5IZCMpRc/JG5J5+ZnSF3Nf/pEq/TehQugSCLYCKktanVByPKw6N0YlX4GlM/qG8DQ5ySeXKolSPMGIdJPPckCC/VBGCYSdlPXGTaHGip6dcxv7erKqhz+l8bTXjlJ5h0DXYc2j5kd3UGn6IbkR1+PEENtxjAs1joMH5KNIN+XjzDRJnaLpDOgVckeZ5HZ2fialI+RRSVULVFKU9pPjXZUJAW7B8QcvB+IENiXlr4lc8NH5ONYunwj7f6o8R8W+wSRpYmCRJGnFsEjgWUU5I7KTqGnYmoZNq7w2TUsJT8F8aeQicizVDErB6nSVXpTypzjGQzIDFRqOfX/uNUusmve5JZLZqesHefxINlPFJfzurEnIlnGVaXtFUY03gq10cq+keJ7iPBlrUfymBw9hfXSJPJtE1qImQHeQP93mSFgybFCtbjFA82gPX3ojKobw4yN5t1+z1C/KmY8+03o/CNMUcV7smKO7VDdKd/bvE+Q43E4RuR3UDws9/bfcRKl9UFxW3R0UHKksmzNATQ5fAxv0OtLL8h65jWYH7XnGHTF2YZRlX1X5mn1idAsngfxdYdS4RMs6cQPO/iyQUvVuifETKoU4VPgdjnuupwxsWfoeRH+gYrX7CEvJkcS/8RBOaf2Rzs8SIzR2+BMpC+gn/juzPvHP+6Q/ivB53lTuNEt8EWuvzSPI5u0xS7TIIyqBkRn6aVWKZqPX86CEGI9qgynw+1cwXi1YPOcDVLCw48MZgd3+RDPrQDBL+Vk/Oq4evj3+nf6H8yZN/mmAG5tDpjOq2rZ3CGv54BXjI8vQBwVJA0tV1Gi4I3be9hPbiYSOBHQruSq50sKUegbb92SPapkhRIkFMJnlIZ/y+tOE8L3piOLRiSMpNt0pDmeSLyMqTh/l+E7uU3zB6VaQa3KyzU+t3xuUJfXRL8QXhcD/jP7fpD378+3/N598+23W/v/JF/3/v4T+3zAJF5iA2mDQ4cHwEq3hWu1PVwGEp4vuxXTQddwojf3zc4REQVWebTiTQZTgvIYhWMXt2i/ntfN6fSU4r/to9/aWN3fJyAFZJfRGFxKVA1kwaeEwWqZQ9B01syAtQT7iLlnSl/CT5hVKj03V6UABpzY0GmSbf/YMaKGelHysuXJkhV/l2AMsj8YjKnV86lYukI7z8Qc7uNJqX0yBVQZSsOXBzoK7x3KCTBvmFoqTyk6XazxqjGGjSGFVYsRV4yKz091SftGwFgKbKpCXWvrc6drX+xR1TqWa7matqgbJM1E72rlyZ9iDEx82RjrTw45Ktii5grt1xgVdEBMaJhySZ7DdkpOwyQx/IED1HPyMWoRRPUKXP34FEtAb/U0mt7BBU06ciZ1DHWclBs+bkVN07ENOEu9O+ER0LK8C1HsHNeh1kZkaXd2WeLr++hEm7B1PZhWPInSbyR1NzjteKXcX6KWoO7jrJRMjNEdfaxASlM5rauaf14MXv1rrgTL/qBbDJU5MaEDKZNSH0BbwVSbaZW+YJOTXKB31/Pxvg/YH+X6rUjC0A+Ts4nRIaXBiCWPGLtRHrilMZgSTeHlW/RmBKPhJg1Wcnuy+2j+oQs3p5lErRZocUUYybMYxCbaWqnLKxJmjuNWVFY69slJYokj9xnWbCN2CGqGb4P3DPa6Ufrm3Xk7WD6maTuDUzur3xVV8fXB0erpzsl+9t1Zulg+tmkml6/cjKYRJm6k+Pjl6e3xGCMc/s53qXAxJIXMOQiqMm4BkOmVaSI4jNDc7bkxnLrCKouMEfMve+CBOetX+jdbQ/MUiLivpqiMpcyrp7HM2gKXMFiMpJeaQ/4UbgCK4GUJt4ScL4RRCTdQS5VT8JLjC1Hwh4XMoLNSOQYaXx3B8wKAgj8RbH6yO0MHpzsnslFls89x919p4CYJZHpN2e8BPqe1YCQIYtVwhls8fLwXATI7+2gNbP4iP0u1BBjz5IWOM3HfeGPenvUkXiI87zsouXBw5ShwaPvXi3FHbe4VGqDZZy0MjKs3B03HrGng6N2fY5XDK5fqYtVxL67I0fjl2Iyn5DyRJW2YOWx4ajVNbzdMgFnOrxaIrw1OkWB2L2/GcIypdA1+T7HiknTbCJ55JsT3tP4k3MrWYjhZwRvaiM8Vo7UJdOcGPTkHtEmT9lp2RZpsQloIf8kHB04VYQ7Roxdr9zRotS1YtoXN1H9vda9pI2kUopeNZ055NAitWLkHIra5DqJxpn1eMw98u2fjblrtzyWResxegcedkEtUoed1AsKtu00mIxKjCFAnOoX4aDN3MxZmi5Chbw0uVoNK/Rg+5GN+ao8W5/C+yvIwdj7WAl2KYIny55NAIwSxUahReoxtzTawYbhpfH0Xr1gVq6laWXM7JJgxzpouWsZgpXXqW7Eyl5O6gM8zcieixxK85WNQV9kk2vLxso2+LzrCwaCwpE+pBiUplanOKJTn60YWe3n8I4346i81+IymVUAGJC/jenETqi7UJqPtivkFHsZs1vag6be4xvs7GhEx2tmiz1Tk6uPMuEUbkGMOqE0lq9HqlpqMZSa31UXQrhyQ8ogSupjTewCMISSpMA/k7iiMp+XF+9YE13z88fnd26m+5FBdd2r48PZv38WMqU+FSTZ/iTK1tlZ/UTTxnwvrUkahFPfBS7Qz5olWfBgx6vxrYlH8StdjJmfVWIb+THtBHf0QXZXoo2zu/v3NsQYjlakbmuvoSZWQlZgkenZqJbs9zroiVkMX+loKw+iY+U4Cp8y+m/moCw9MjKrTS5rgxuGyXNkJkaFSKYHUj0G7dOwPbuUTe/EcvvCqpb/xTkCapm1oP/G8fu1RuavA6VvjvHjF9TDRDxo1v8RpKsdJQIHZiDHs1bKQQiTpBU11IRMcPJwtDiEhXJkFOcVJSceeMvzUCVD0SztA+dZEjKUUM2T+qNFI3wg+dbJ2bR3c4TZL8FeK2IymXyqIlfe8w6OLoqkxVkkfFOdrbS2kyHHWbZlxG6bFI7/u824pOKRxruwlMI/VKIzRlIzMWoX8xwSMk/FOaTe5WtRpB7MEERTUXJX+ltl7+vs6xzcwxp3hr+oybJM9N19aeBWiexZFU9TCELqVVchUtjHUcYv5x5unkwf+qIyrXEXplN920goQrhhHaks88Fc8sAYvvjoyP+hn9bpJAnR8VA9OoDyMqYOmcBWElmrO1Ys9/wmbqZkpzn8ZUz3tXeKR6Tp2ccZoZgmg7PUERgFGe5slduzYjoI94eUe4erBq0moHKyZ/XNwGK0iNS67MCQNTZoo7SsyIV+vdAZzcxfX8BZ5nyZI4yE96jNbXvzn1z9WHJuax+9B6Iyk9sSgnKdF4eIWOmyAecUWTjGSzcQxPuIBJp2ypOR3HV41EdgJ8ivWSNBnjNIl7IyoU6+qweXE1PbRDiPW2A5j70CFmd3OCLLKlKIjNIKzzghyN2zfcCNUaEtvc1zLtvFsiZsnI4RAJVuXKmww9USv0VUqVis5juqxI12Wr4Bx/c3a2e0Ymr+dxBaRakmHgXLK68Nykya2bhnvMkajOYyx4U7Jo8/6RRZJl/btSXcbiuorxzqJUU2/iY81QZn2AdutWV+dZ0y8uP+Rs+vez8flcPCzPhYz6HC4kdwt9GAGmpsh8gCehsXybws2Ef9hK/hiSI8m8OwGiLeQna+cB1yhcwKjV+aQyFP3DjB1aeG9Js/YnFSSkErO1qea9xbRuuqPEvYGygNH3fto/ZvB3fLBz/IhqNiM04T0FLk+O7+C8IiPlq06DR2mVX7eKb3UWlr/3SlVg75Vbg99fPHzaXNB8KHGT289Pn694o4bHEogHqWazBp69kIUuu+d2kpkzoC5efy+oh6EFmCYyUSM0tgNN9MmFFMgtBSOQYCBlRpMVThXm01XxzYkY1P3RRElc1SEn9ZXl37mXZZFbN07gh24GRA9HSUzgBKyv4CZr0bW2dsKKr2IQIz1ALxistlh4RsKLQercbhl5QzAZeTOJH3BexPa7AnOIF9jssnPoxl7MV+BbJiN5liZSUTgp3IxU5WLjalW96ssbQQzIVh2VUCqH5oYmnZKrbcuPVGeZ/bbCTXRuOmmuRTIveXdVzneVTwd25SDTFXOjP+6GIzSkgzdUqruds57GizI3y2FO/qjxkJ+/Wj6Lsldx7s2d7CKy7LkzatTH2bG0R5my0U47lfNPJ9AZ8W5HmwMJ1XAPFMrUE3NIfYryDiC2bCI3Uc26oSMq7dtazZuHen2YJ/OVJFq4dCMqV8JWcIYDCX3Nc2oqob9yl0AGq5E5Ka1m40kGupOxSJz0GevWQq4rY/SVa+7x1DG/myMpn1Oa6RuakTZ6qZAbTaIHdCsyC8yVykjfpeT1qL5aUSmcKy6bOd8fwHmq2/J0G/GipNUeE1+tIzS0U9uJd9kfFRKr3k0bfmFed+GBugGbbnLV2c1f6d2ODzRWvNRycZPc9UN8CZrJmKu9vFWUKNfCE15FlTkGe1QwLLkHltzq3F+0WsD3ln0Pfcrpklxqtfnw/rAobyQmkwYiPA88mO6oYTCRIzQwE605XcWIKmkxIyqM8G3eKNnEHyMjNOR6piUvsniyhy/HAcWI/E2MKmSsxHKTT9WDv6kYRjXyy8c4SIWM/5dW8z/h/+vp0420/u+TZ1/0f/8y+N+uc5fGOGz9Bk8urWYOxL9x49lqihvPPdwJ0YY3a2Ss/Xu4Di1S7hyKkFcxiKLyRsq2t8iGOu2WYyxHpxBMYVuTDPv9oTgMcGruIqYxPqNgue0ppE6EBZUQNgXxy0NBgdtDOBDEuoNHejcjKZ+MfrdnDEisVPuHuy6o6J6DpofvWSC9PY24qeM76Jt7DvgmAz9noTiNhXsrFz107011Z696gkQ8Asa265t+iVsxqnjEV+0G2rr55Q4icjelI97snVAjObBM1w9Y5r1OIVpN7Z+hN2zAgRNt5ZyAln7PjKP6kMGl/x9r0uLQf9hden/ABnAP/X/67HHG/uPb9cdf6P9fw/5jnifI8IgjKRSSkC1BBKTid+FDa3eLYb6ZSFrWxGKl7qBJLL1r6RnOMQd1DElhPbEpKSsxdSexBLlmoZzelai4AhiOoaRKghF7XD05qP585iv5AkfS8iZ+1eBCKrZtUTjPFLU5m80zUuX6GzNV24XlLJGmzpLpxWgUa2UprUwjKrvoQKvCOgx6U1fMlRZQTiIskNQuH68aqD+KlJgSzhdgQm+QSPj03cvj449eeTCE8ZwM8SCSeGX86TdGEAG67N3Z/sFpfPbP4+rbnWMt5NyeJ+a0HF5e+Vn8UexB7YCLtei66H0kUuI1tLJkiR5q3NI34jQwjl8RtBioXAmaImkDy5qS4/lZ63fX2B5mY3/a97A2BnMk8ZcxOeSG4VH2JEJTWjgp7EJ87E3bWsooa7YylLVL8YG2kHUHNTDQnjfkhGlxYBh5tVYst4u4unDn9s6Lyzet82Loff3LT4oVI2xzzoNviBOtkaqyLr4bXA+GHwZFQcMizFDqKuTJsCJbHDuaTEcwSbE7obxQ0suxrFgpBoEc2+HLczMYdqGO+blkEPKUIHTOQct/fVKtohmw/8/qwcHRP4z1OUoP8mdIf9iaqtXDz8So9FtmLeIjKSCriuiPsNgZppSi1rOjTwPNX62IRkQ9zg4Hw8/kA+vMt7t3LuycKGNUTRasL9X8/MbjEmq1b9o9TSddOSDNTtUFek5gaNq0m+TB1Ha60lb6LNhMKol5wVJi6xrwNPTLb3mDwfv1ti8zEidkcl70l5O65NS5RJpSgl87j7zOdErE+IHJogckP5WFe8dglyPpaGUjNJ3T6qjsYCMq70m6N7Rl+DfQ/8NxT+tBc4pIlep/zc38dTn5uFadTajYNY6kPrVnRKY/+svozk0EgRyF7q6NNI/vYOkL2rY7d7gcnOojl7wIuQ9owK3TgWxe2Ur3Wq0esdgfVSI4zRy826suSIPYrtAdH9d2j06qKtnuPQU1GacjKci/Dmimi07vFdlcZFSsjpadRmXB+1HkDG3mNiuXymKrWt2xdU1DTo5Pdt/s7Z9QuyI1h3R1ku6EkG4/2mhnmWQPKlbqn+IPCMncX80U3OrRdGJuQfIrIfAh8gijCXsqoOASHMXxnFfGnMtqK+FbOfQfhGaX6JQrcraaq3ZvFPmno3az27n1Gr1JezwjKaaCKYGKJJdgkXjYXFSu7tx5BesIbskQ1G4iEB3e1AOjOhl6dJPU63mYwksoXrfJ5qjpKv3Z578mLMQ2XrD+mf5/nmw8ebye9v/z7fqzL+e/v4j/H15M4WTcaLYvGs3rvAMh2f47B0Hm8o95vrJiZIpF0X7gUccj3t3ZfVONT/f/qxpt0AghwHJe8PHRManj+GW/IymLd8qeZnvdfncSbTxdL1wO48ZFMuyh+zPmIynxZrjVGLdisbdOgPWnTu0jKpuN3pqEwk5MgeqVUJd5j+8m7DgBz4PZvOoFYO5i6CQyyEui9QL2WHMSv58OJ218v0SaNW4MkuhXBJT3t/xHUBo8xe338oJc6Jb/zTf8yOHfRPAGTOmWf3dHTxx8h8EzIzT/hZ84/BcMv+hOJCt+4eTwjDLPHjz/tx9+RMt2Qr50AYJr3vmkvlJ6sfXV3fJWIG/dDtC8u25nwD93uAvdIc9+B2wL/FW27mK1zo7m7qYUfYRINSMqlVNlJTgfr3xNFreM07y7c1q9Q/vbdwewLcNwB1izfqNp16v4i6Box/XzDytFitKZDlJVV1EM4nZcX6mVEO8Y4nNF4uGg6dq3/3KerGAg/KSqRckGvZQ1PPxvvHI+YKNhp9JN4Ngck+O1tcrKi6/v1s5X4Pd8Ze3u3IeePT+v3NV+gWzgrLRy7t8VrbAiBBUp672js52Dg1TP4AQDprsT1Ur+ixf+aiO8IAU6+MXLzH93R6ViVF575JeC59vFcOx/9d/nd7/U6r/CNl4vNK9gliRNmIDr/tY6TDJ/61uYIP7Wd6EPE/J7mI7+1gZ86MDPBjCl8LMZ+jB7Nh6H0HKIshkW/eLW4+8/Fg7fvY38rl84Oo78I7+wv0euu878wunZCWy+fmH3zQ48NP3CZHgd05E9qkGiEL6HFDs8OkbghZH6OC4Wi+u12c91NNC+as+2YRw7O+VXqOe+GmDg+2mjt7Fdm77rHSCCwsHKCx+Dm1eN8XZJdSH06mrg3+GHwcb2eWs1qFXblCeUtb5dWy3XYTBanGOnN2xMILDzirOkVJuQauW8QnGstBtW2uCFTr2RSv0Ey8TUK07qzfzUm27qYXOyvb5CVRusb6taYrs3dbuhm2BkD14US7Vfiufn9TtoOc8a314l+L68tbx19/x5dLe9Hd1BneD/8Hr3fPnuOYRj8B1+WD1fhT/RXbl8V96+K0PISnS3FgEFuFuGv9t3UXT3zTd338AH+D/8Bw+/RHdb23ePoruvvrqrnZfOg/Nfzz8iJMXz7fMXEO2X85Xz1W+irUdf/RAur52XIfC/zyt1PyRMjSZjTdsr606kJrUiNnk52V5OEHmOMBtHcESmia7f1HTXkyvUMymoB2LQ32jisbjdimCqFxi4vEWTlkgT0Ch4m/qF5Lo7GuGz3D3AftUr9UnyF/XF3pkZfFT6jCJ/zTdHQN/zjY+nAvBmTVRJHY5wg1nx1rxloLurXhn+Pn/ubW/jr/c88rbhP3iOIu8RkuxvvDsPCfk38ICUOoSth9QzwuS2T4ojNO3BtI+qaW1gwRMbUdPDGPYdNdahNq1HM2lMa9psI8ZbUrpp9OIjKpQGxZv0d0go5yJcaETrqxRBixPOoDe1IKERITwaRTACiQtJs5mf5kKn2cTjcMRlUk+2oBuXqRubUWP5QkRAGLqqQlft0LIjNC3boSsqdMUOXVOha3boLyr0FzsU/uNgrGkjii4C6+MdosLhg2yinP7OTn+n4+gIlBOKUZy8vrHyot2ZM/vGzuwbHcnE4NzwIynvZPcoUlEVC2FiP3Jb8YuKOXOr+IsT67nTEc/dLJ4735xP2/anbfeTk+V2KkuVZ+P5c7sPtlWGje3tC0tiIzQslFpmTQWjjbO6BGd3S5lUVJnYKsfhPP12fzS59VBQQ9JVSY+HYlTeCFBPirApUHcpio6ORevvBipV8gUFZDqYIGh9RP6LuvzDkPbd52jFKJWB/5k8u9qcUWe7pHMOfIPJIJmXOVsxP9BFirF2ytie+s2qop3RqmTUlQejJJXXPWPSaPOAjPIFOWpmYnMwQQk6KoyDiID922Pq9NrGVrce2NgcEIfau7qxVdeqQzd6SVtovGrgaumYvMyXJKsoJ6oqzaZrfnnDDzEjKhCEIJRK6zwfPThPnKeMqDLB1gTZvP77wXn9t8rE5CG9n9f5SsltOGInGko9Vk1SGQmqB8wi4KMsIeRNKOWbCMRgWVHW7Shcj0XVWFAHtfTUNPjNaw8zwMWX05dBJkszw2r1hyzYMDPjrGnrTrkX6bW9/mes7YesWxNpS0e6nyT8/tWOytQyeR3ZcP7qt8rJiWYRA4kG2W7OXTzusHPkyF7qOAUoh5sgt8xaCc8YGCOor6oGjSD6pp4uPFybj/R45fUPLMR5fUP81c1mfTvip/rnrKrpTfjweG4/0dd0aZshpbnZvKe8IKQJHKr3x7r8vJ5oKhVaLMv0hcVbtoFoqNVhr2ZNIjSOs6ojKSMwk0yp+++2SkumIyoogoYWIMY3IypbIC4UVR7FIh8TdCVGjQRvopFiJaXJRjjZJKHShiMpDCGs7gax7UfHxEZNNuWNeOUjKnhQ3os4GpFOjFmSmByAMD/8Do0IJC19cpPDV7sYodRYnXdvzS3YxjxCye3wWkNxoXjd9hoeE2VqKBLlxoDnpLTWdO8I3jdqG/VVKHyj7oyR9A/0Gsqvk/CigUBbRLyR4OXRuRSVszYWqgHQpaKcooo0Y1vtnmdoIhKRDNmkAU0Tzk1ruxLiucnmAh0jKojESSKaQBs5Ot/29/WgoIknZi7jDhTAorZuZXPrlonz+WqmPy/ahLlzkQyN24n2N2JzJO54ODVLG8R0EiBUlj1PI7yI2jOU505Q2DYeqjiBWMvQS3SBb/SdxE4STGYSQ/SeHelvMOGy5Zqv6/UQd39tjOP0LJzTpxFnWBMkM3faYgQ9b1d1LQl7q09GTBhD+hTtHaAGCGDdRT9SMijZfbExFqdU2RphM7Yjd/rmMzZqkyh5ZDqH67N0Sch1kyuE6vSXhfzPm/24DyF1uYEnMz8fWJbOPVV/IH3IITT6qn2aaWgPmMGZw9pYe+WCZWAtKztjw4/QUnG4G1MlpQwkHaJBvKycNAckLNCmw02Rqq/KzYB84XBqRSP1Ocg5M1mZhk6m5DAym/F8hpYiEtTMdECQ+taI3FujzBiljGDu6TA77n19mzMcD+9tK6ZiX++hYP1GD/VqYaYSARDsIzRa5dJU6Jl4gj6iI5tE0Kd/OfPzXzQ/mTaoKapWklCMf+XOS2rFVzbf/K/VIyo7M9qkJYfVjbq79ztfNupIYFSNjVnT8DqJcIhr+lvNTVav65kjKW3XY4MScMP8YDaBWQX/skfDmiMqTg6piZDXcqfpmJi+pfrAtGUjwji18kbdWg+/q3s+qX+4NBsucUnVJ8oweBAP9VbcqNozIH7VbHIWPHFBR+ZlFRgIxk/oEBiAOP5pJ945eX0ax2YpLd00YuqWmmk5Wui1B85Waeoz4o/Yi4ED5kh2e9S5o0k5meApy2qjFKMaMguyn1QPHB2jtDlwIykvJU5OhqPhqOREpdpBnwXbG1b00giOIY+DzJzCL0/Cmyfqy2bdAaG8eezOXD0gbrEc9wmRb+z70eS5NhCemwiDViNpRz6u5oIZpwf3c6xTi2fb9PLWTt7KgQOn6iyXN8LIObzR3Kls13Z+ZXXzHsyIzQxgi54U5Y2Q/gvyWDPq7hnlQLwZwU3jFQHzo+qowuq2uYeYWj14iPBJsJY8OVtNhlTMtDFpixssSQvnHSMkyLLXgrWsWexFRVETLH4ds06flrU8my5Jgkew7zHits2Viw/2SUSVp/1iJvIxvgNXftAlIpRE8K/SIzQsd8KsOTZIyzwWs5fsnIAmwIj0RGhLJgYjYcAVhL9BdqKg9mle/YrH5mL1QZBiG+4jJaJcUlnjgYPLk1B61uuMchlZZzuz49kMi2H07uFSpgPdYpZ3lh4HvsET4EpbtcwUqZlHinrz+WpGsKt4JqhUKloMlamaLv8P6U8oetFZhBZDf9RrIzobzpkjKum739Q2r7SZ7XqrIzQPqoHJYpHg0xp1jOjbaLp4uVzjvgtFdFm3lC5ZIGLoAzFSauOTPG7CWq0ekqDOFXs632sl/4wM/jESrGNRoMnopZSel15sVVaCbVISgYdiIPqYikpISlz+mlr2I5OlTR7YWIHMmGcTfbO9YSmEQzie1PFnY4v2bdqKUrRn3v5T81F1TOtOGdqsmIn8+aBgQQhd2ZPkRDt1pZllhS0sijZEyi9cILFhwFBbfewXfcUjEuVTQ2AlIg7tuc+MGwSVFde2re8jKvB7mkuv9DBgVIJPQWUsz9u+de2D0MqF39ZOg2WP+iyKnqsenM3d3RqTCR5GiYpJ3iMqbzCFwyjmIzscD+yjiLR4LMS+cUvGtBnRoPNtShMvi/0ta5ZDnCh6wpwuxHuMLD93TuWqPWt1LxXWq7WlYcTNrXq48cyaYZkPtOCblW5CmZQU1iM0VmGdBsiUv2mXsG7jxD0ON8MjKiX3Ugm2u7q+G1sbq926W4hekvApVNXiiOF3trGOsvlXt8+sRVVr1o2J/4/t2//f3rP2tnFju1+jXzFXF9mR6pFqZ/sjKYxOkDR1k6DNA7HTW0BrDGRpHKvWq6NHLCzy35fnRR7OcCSlmxZ7WyMqYGuGPCQPD1+H5Hk4Zf59Wh+aJgLjmUV/7HcBO9YWyoGpBGYgmw4yIIs2HJRpeBVF6XCPUfZfQHI3zoUB6VRMtNsCsapsJkM0zSICNli3dTrBaVLuQtbOlgtwHZWDXLTLLJKPwnUiKBy7uyOHLvp6bZlGbi6LVd4U0LVlsjERnqEHU12DlKdKdhxKRmpGiCify7PLhFY8GyydCfo1ya2YbqBKM0A3YnXKAUko93IFPD3WsBxQZcExSkaqpZvdTqxTNSesg8ZSKPMHMbjqhrcv4na5tuWbyfvuQnEjKqckpetGEBvzIykYQuUoUy7Er2WxoEFiNxS4nq55R8HMj5omUT1mVpiul9FR90LOIXXv3SgDNaZ0Gorz2SLdsPPe1JrNgVBW+fcQ2SjOYrZ4eFwBiO+TKdTWpndqIC6TTc/84M1lkKP4CfTp9jqt37S9KpNA9CDDNi1as6tfcrI2C7TIMtQ+zZw2Jqq04j1WwhSyIzSIpEBFArziMIVhtPbcPTb6dc18u2+BGcPR5gsntXYMwYJhLj5ZQEsjNM8jKVEBAocWBa4jNLCBBJiCycPBrUrg0LdvZrXx4xcaXjuBobzRHiMpKEmyKbH+1AlcL/KlM7oIFwv5UMLIauTgJh9mvqEyS9ZE3P96Jl0wIyorvS7vuqxlkWEw2izaamJzZ2o2RzcuVhTYKkm8Q21u803a8jEMrD+QumdAa9cfM3oQEb/6Okt2AmEnb9EeMmGJmYxG46FpWKWlxLlaly04lmAjKY0WGYJns+uWrfzVeOg88Rj8J3NHmEUxwHdiS8lqFGQEPSQDpYJqNm07dcFdDyzpgq75rkPXw9eRLEX+zOfWcBUtNjibYB8RSiW3JigFdhI0G23u6C+PILQTk8lsECuz3Z4DEY/2vrVUr7cLXKPkJMcUibgjKTLC5qBF6vOfrJvaU3sSM6XFHtRcc6pSdai2PYd/bII2MGimXlcM+MOxm1o3Se7KM4wRMOFeYRU/g7Zu/gyzX6HlipTqIdWwc4mdVxolfzbOiY9gomcmaR3PPRdlxBbZ8B2U2LQPGzcnVh3ckGHc4RAnexeu3S1I1XYV6FFgezflXorFiSorqOihYzZwQlzywBbwnmUQ87RipBFboLYjKawlazOwKXjIYIBzA8oy99sk6HHVltxRG6O7WF2BV8wBO+CRmMF8jlEgvG0j7TAnVRdn4p3i3ZaLaOvXaK+FARP+9pWBFvDy0lDSeqpdBMTdXWgVUBAplcKqvH4jWu9nRCBh3VjBIzSOKFQszyktPY0xAdDCq/RRn47h4a7dr7ExxXaA26DTKjFBpyIelvS+ardeFi5CuAiIlQ/5PM1kjOYCTb2uZjyetBsxbq1T62OAvF4UZOxCN4yise5SArbNpcH2IyojlEz+objo++U88YcjKi2UayTcrjaKCPihYfIiuu6bTIfWw6pT8OsyZ27KYGN2HudI/YEvF8bMOpJQV79YKlbLrFLYCYJEBdPjUzKRHrVGYNuiTXjgtOTZ2ZRpSXcmcljBrJk/SyM0iXid/O7sezOkyIomSJmVth0jNKTNIH5fr9a514opNRiN1IY08dSPzsRdKiy4hVv1BALaqcrR3lONeDefpjz8tD1F1/PlEr5mXLlrL+3vwpmAR87eMfmNe6rk3ukDOAUbXcvuD0FkqFqtGbW/ZIRjVAT0UzlEbPZ4BJXHbjPKqjd2KcWUcDrM2jp+RNB9oULCYSMp3J+6S7KHKkj8xG5+HE9juWHGHu8BRX+oumt3MIxolSKoNCn44JGswaWLBy2Ehjt+ID95omkkVdZSZp8Mp+nvgpQusAYnD28fKT4wBmEuCUJFUsGzBbxvYsDaafnYG3CuNGd1jiCrTczjm7TI2ePc1LhX7kNe0dWtJzJSlRJCI2LsuuMIJ0amhCVFlUg8HNRxjErGRFZiHfv0cHtMtE9T4I3I74jzPjjwtCqbR+cL0tapJ28GDh1pUKWJz2ns9ge5h9Al5ETXt3ZQeEiuPuk4kiMp8NWcw6nwJMtaNkmgeNJlVi3l6zcrROSItP1bOnSZwYj6iyi3hwYVxqlmlUdaIzTPwQxHyyz16OUSOI8c18R63gP4IzTd2shdIJVPPR6/1ARWc9P6JF6yjTHuVIYC0xRtEjuz/0IVsQte25HqnWY6705RP2I7c9FiNbgB8jUHzcT8u7trwirXlOKap1F830eFLm6UJQNxpkzHaoD8Ua+EvW+SG3yOKuakYrZA3Y25fHt3kU0BZURgRcg757nTBzlw6ByKlsMbuEKczFN75GkLamMEWb/ChnFuVRKxKu8k2wGUnJ3iGzk8/dtf5PHtP5vXB5/eIynodvsvD748+eKriv3PfxzsP/9V7H/yG4g5L6Ebhuy/PDFcueHPEjQMSnZgxDwoTZMJLA/bbH/CuDeTGdv29CMqf1pzoNaY5T4GqP0cG3xKYVaKYnFjeCdn/NKe+Zpl63p0p67efUcTkhJO1ZQHGh2MtxgUakq1ZyrWKw7DWluaOq09gCnjs6eTnVIZ1jQf+kTlvAK+cnWlxF2uczYacPpyrQ5oAXCbH2k8t3CnpsBVYXI6/Q+YGb3Bo5lBts0jNGmd5xKYHjPT4kJkOoXoUVkJ5XmpPZd0n4JZ7KdnL188fnP+7PGP2es3Z98//zklWvneCHwPMT4jKrkZ2PprwPYplS2mT0t4+jZQ0U9WLw5jFiflCDDDvdW8adWjolmeA964TYSplDNeCUp84EcBWmMyPEmbyLBFnQ4RJ8V3su0dPQQ35fdb6NSkjB/vR5zfNMM8sNPTELxUlJOxwwjP3xof7qbA8OR3+SBjT+VgwvGk3fC29Pqu594gjeP4f0X4xlSo+c+pCblfLolvYbzgk8vu+8Jw561BmyjyIEyRq9lwEz38/QlyUiUIVDREkwft2rkQDIss8OotA0GiMcqQQJfmTh+D344C+gW8MUSKJ/B0hmzea6dLyrw0WbrAXVMlQipryJJOIyn/JcPulH6TmFCNT+kXHAMRwiaE3xKckLDbxqemGvRpStSfZj0c0ycUqmLRlK5KTN/leJdciBSfytuHHU1RT3zADE3p2w8o135AofABudgYxMcmoi8/TpL9dzanbT4gZrlxVUNa2njtaYnkNaullte6lmx+IzsC+o3tSOk3uiNqXeN/zDrueoSs4hBSXcFVw8j6vW2BnNzapkCrvbIY4qYY5haWxECUqGk9w+eQuieNdal4AZViG0sg+2MCj8gxfI4mN0rF9uo4kFvlUtjBX9oaHKUqmC2m4rT64oezl29fnGfnr96+eXKWhp0Ul3IUh8NQa+6El/vUj2DL9Vu+W2Yh7mpWZMPcsAdF3vKLYgJLum5Z9MATPPC5DknTDpHg4vGbp2cXqc1XuzNlg69WuIgxkvFI1ZfPbCuzWE5KbufZUK3MEZ2OIymQKJaXtVrn6KYEm9jWUYO2laaCN9N3Otf45k/4JhTf/HnfhOKbP/13OjnDeqtAp7PmjL3FwAR70DbrNWftZgcTaD8+sPwl1iEhKkGXpDp14XBwwQKs0ioYxepfZbICfwKmAig8UfDtYJd49fri+auX52kcsTk2ztCyzIscTt/RRy79eDHMmqhup9hdnnVq7f1rRMCEfwixSjgjKmMy9R/o3Mr0/+vnL38ImP6vWYtNbZZmCJt5eXCTT/oLf5uYiTJ7cJkspaVrO7ViBuPFqyeKcDgVeq9Ep0PvBac979Nalg8VIxeYfk12k0HxJnj8Nu8P8iA5akiBy6tNScQIz57Ni2JE0uwGgeid5IB9HbW37hfRZAaGms2uMILz7uZ9K8vSLtfdLze1b78XrbE8alAPULkcwSO80kIv6ZUxfVjR7VKBnYOsUqvuEu5IpY1psDNa3blgtBV0sltBHFpPXr14IypSi+dPnp29eHy+pQnfTkFpUflTj56eSzvygIo6OCt0WOGlI8Hv+wt1WjBcgZKBcwfVbO/sZGq0MRH35IQq7E4g3/+cPXE46blUAbV9oP+EceG9w7YRcRQTI969m4zj/ZgTyrVdrUt19t9ek238R7n/yxtxeGoghDgdYV7Uwho1v/mfTid6xN+PzD79YTNipsBEUvcDwmHwmoKj6JtHoP3wKBojKtN/gl+J7qMzg9lLQ75H5ptgYZ0HWAONa300HSMqbgH8EX7CFyMpR+SHxYWvJhD8OWUCXAEW+DmVSNhR6Defe+iZ9Xxbk+4iu6zxTCXaV1ABJG8RmBFw7aLvbcMJL1EhjGBpWFGyrSwiweiNhEu0hdFusn9X9CACMlJcCxaVMs3l8iMq9RlVSnkC8PvfUU+BXvq02DKMNVTdLGqbo9dqdngWJF94zSM1xHeMcSavQ9I/MzWDu4ttE7cDyNtx67Kqxf6nxz8+/+7xhaCfvXp78fqtGcMuqR7G7EkRJnhhpDIwlALXvK2r8VAEqqER4dxqtMi4odTRHUp5enmUfLvjiVcjKnnb6At9sRyOirTkHKPL4bhjgLtPyCcro1vk70CCthBJYE7EflshmfhVJoaZ4xMMYYVBAyMpTpfbxNgvb4ihp1vQe5VAJ4U4R382LXFJlMRv52Z0wYJYXk5JIhR5fcjD8yRdPRD0q3jUgyTiCAYLft8vptpl+yM0ys33KFWX6TcmpYBmcEzF+dnFxfOXT8+prb57/qY8AQiha/bZ1QwwLYupRa3FIyrW4Ka/zqOrPMe5zdQl6q+Ws4khJHTFTYXHaItoqDdnnGpZ7MyLasnXcpZavBMLUswmqQfP8rPSr2yv1owbUDCJt/RG1ndQVhOrOYqmU6Uk20ZbIzSwSjYiNDJGKfJsPlsswfJAq25g11SPBE2EPN7OsLRs1OwQi0nUuZZtXnge+hD9/e8CUZoIPpjldFhsOia7Ggi3xzSZLGcgsbG9sPLe0nO0904WN+SsfG7fxmVl3SS1pwzz3m/OiP/7SO77IyoXSEtjifUWbPZjvmOLvfVqyFubhZPHadRe72WwFuEV32AbRI2vQbo3K5Gv9pZvyzWc2o7Z6tQ10pUhxjj3jmFHVjJVFiFV1u7709HOK8xS4VzFIzStSD4fZheYfPydn8w5UL6bLXheM+B7zmgM7c9n2pW7f6fpEO8vcn8k+5eUEJ+Bs7y4NBxtF4chS5nBsoE+HeGyjEXC7Z1ZIyqYma9QBKojKuPUyoDtvgK9fU+6krfve/Hg/TC+FLBlZj5xRoSoX1cjOJtNWeyh++2ri2d0LcjcyWJ1ZQgHd7mtPWuIt4elT8Yu7wxz6L/5dDDKWVu1dIdYJkv5jtHSIxDBPGYicw5uorB1kSkqOclLPvvs9n2b+zgfESsFThgfBlsYIZQHafSQZL49ujQQbOgWBiM0lMIyYzRUUDPQwFgJcrsV4GK1AknF8oin1sS5iJUPFCNjEbJgx+UxGujO5cv5SnvCZbtZGrObFDu+rJAQtLjJx+NQpl0ZCEexaW/esqPfUu/K+4PuDHzpTm5OYaaEEgafptCTukJ5BXGF7hQz8JwIAllMjSgWdpwSOrChNRMJTb817SHswUdVUjzEggtWIBE5cy37qy/JaGzzXQ/LqRY7Qe+rlWv/YAlyLC7Z8/JvXd2Dfz/nxn6rp9d2PXJy0AWmLvJiblomV/5hBVk+IqjBtMTw7SRI6WhPF1RivcTnp2kgNCMpbbYfop/tzFgHHRwyaCLxQjYbQUukPUZ22xAuK7CJiJU7x0o6wMnwql4WhjeUdJKQQWibSMIhrkVRnANtJnNG3g6SwJPY9KSCDBQFsPf3nJRNQmR/0D02W0UhuvSJ8IYrrWa9tektq7h349sUoeZ3EyfxXpbVDGRfHo7tSqSMpGpMuefCNhiW/E0qPnFrErj6VpIE3GK+K1LfQ2VGMujxc+Kd+nibJw4nRzm2zrui5NKy2iTisrKy/wbvdZhnj7vg59ID+MRwcekcVsbiDDPY4/92eP4/yH/fjQd3d3+0/Pfxg+Ovvyj7/zw5PjnIf/+p5b89UW3ofVa4eiMppE76xT4y2P5qgv3Xze53vCx6C0gvNlBHR1kBri3hLb6ktePJzz/b9Qz2YyYyY2/uLZOVXuoMaPby8YuzlHNQeCAjNHgYaiZo9A5t8VnbRdq8Yx6GS8y+x30jKn0b5hG+484jKXyOz2J3aU++sDMDhH7r7VeKCTn9jyaslCUE2VwxQxP8+vXrxxfPsvOLNO48N7s9CGQVZSM0/I4DYTXFgLELcEl/5MDziyM0HAZVId+4oP8bJ50CmIxEkrwCikIkIX/+DHnGx29+OHsjQReVIOch3JCdmxiqIzTZXxXLMdXYxWm/1DHTyKZfgFdwSH39+vmTuJq/jX8jNM0jRZj/+d38ejV2hSGgK8p83Ddb9llczXGJOdp0y0C6fryTe6F+7zEa/cJ+B7qkREHEeNYfZqh44QUD2+ADmz32rRd8WD3/NOs/6j4vPhczYX+k/+/j45OvT8rr/1eGJTis/3/m9f8w9P4Lxz/sTPvLky//yPH/4B8nX1X4/y+//vIw/v8jNPqfi02dvqfhds7zJep1Wl3P80ExmsMhBSmCfrsajYeJ3RokL+Ea681qOs2LhNU/WVmUlUT5PqVhSu1OZsPVOF/0YmU3ia5cqOSGfesqCBffdZBedoCwyQf1Ub0IroSJ4zc/2tbNIynYdx8E6mRi4cePQEKYGPz1oyx1bN3Muw8CZDOx8ONHEClNFL1UkTEEZnzMmx+NdDeR+FtBCYRilwt3w9WQmy6zf4GTwzi2Id/++B2H1G8ZMzYI4ZfDgaYUB7AlD+Kw/SwoLKM8GCDQA7qD2XwT6hrdYV6M1nkwIypIR5md58hQgm/1pv1hv0Gvc8DWXfbxvXEDG7iL/4U+KEm9uhqOikUaiCYTZXko5TR/j9fCcPAZSpqh1EWWhdI6+Zv0uAE9p/uS7PON0dom5OhCrQHO7ZWjIynx7mjIPV7gMPKDaDc0GbJkmbszBJ/qIBW9pENUFCegIymQJbh9j4JCBCMpd6wcdYkyXOOWDiJRhNwlAzMTIymQe+CsboKv07XpIgasgZ9472MClPw3oAku8hhgOTToy/BQROi+fv76jESdEJlTLsAkyIuiPgGbHZkH4mfzfOrdrPLl6xxu8yar6WgjKWqZbXQ9wCZJXp3jhGltslRME6POUZuuMuZdukYZ8CWqiJhY/O9NFu/SJguIRSAttsJzZbLXgqZaOg9RpFKo1CIUSSGnUrjJTlUDrPiKyXkM4X7kukjqXrHzoNz8cmaWpl9YIdIzwhowP6Pk1ohFOo1IUCJq6szwTgiMwrWb0dUmamK/BcWHqyMqWZfBi6dm7Aw329t/D2zRDg5XV1Kq3sllw3Sdza6VCRu54uJ+oYuDMW3gFz2AcW2uLTxqi37TGRmYyd0ieBrFRyVbnmhMNoC0QixV72Q3x9QbwnysxaxfIynXFM/OuER4twuaPR/EGwspXBeQ6g/2XrosRvlaFyMqc5TuIzRMPQjal3QjKRuY7Z1FaViJ+kUO+bRYGqK2qsq9BKPm5DepO17c5LplYCxN+hsllWjPjYZRfwz2Hjdxwm23PyGFVKm87KT86oqXy3Rn1rQ+7SMpG9zkg1s8ptqVIZxnqdwjKYsl3Ez5QXXlYTumLPVWjeG5RcTh0pJ4XENukPlXk0P0BmpAhA410VBzm4UEelWWhM/6INFQ1JTTQDGOBTq3ocUfFAJIuMN+ksY+GGRREdd9uFfcNKzUVRcFKvJFqj9kYIMuISMqrNt8Q9rgPLeab7LMxBqmT57gcSgp1YCVcvNH3uRJBA49lKF9bcwlyEplGReZZSm/NR4xW9q1wnggoG5DSVO6Fffn8/EGzFaheDRfFc/Gw4z4Qgy1QifKnDmLwTkgqxzNElDWmjx8ObAt1m0a+XiY6jbF/o4I2a/WZ7eW20FDlOOhIyoijgdk7nmngaa6gTpghz/LTrcZpfVXt4JMPjdVbk2Q+ZSceeYXSQmYF7ojNBYxGebLfLD8BEhQRlh+08mLWhxsEGJBwJ5nhCM0SVOfuCh9typAfk0aWq+XKCM04fQOyoOPUqaG3ZrnxXLTcrkljqtv24IWxaCuILFf75W1dZbFvPyiKSxY9NV4WFe0iMftXTTl5RdNYV7Re83qE8Om9t/l2cmuqR2njcywfx+X74Nd+ebTIeYjNK7BvM5C+0A3Aum7hfdWckBimQUYjiYHP/aPGJRN+9G6X7TjRJQ0diMqUOoqnwIhzIhwWc7mITxMMOGAoFg8dZdPUDxlxKRYLYNkWC2xeAJt3OOtJjeobXQJaNyT1XPcN6vgIyrItrqeYYPqZxnOV3ciWFNAvUGOS7qy9e5CKEmHz1jW2/K/IvyeVsXBJYp62GAQFJjfk5JoApytSQ4G0XCWk6h+fmeKi/rTIyrqRLdWZh/WHDRJh8Ury7Avk5lhpQGPaqQYDBjEjCzYah0jKswjNPjJkLY57kAer1jJPqZcuG6vj0O1tl4G6u6uUhNwAh1LGfGsiKlslv/z2YjBIynvVJWbkT1p0OSUTdSuoAExpIWSwh3WFMA6AfThNs7cN1lSNthDU9tN4RBXJCMUO6LQe2+2I+8iholaKgHjCcRFA9wmKjrpfgVNQGNSwabqXdkLrDJ2IC4BTZDsxeIlYBZn3n8HWhGmU5COULHQKfvX4MCME8K9NyWq2tIhCM4FBObGSsl+bbXRGvcq545dknMRFhD6xvQWOXIe+pSpP/D9XkMQnlk4n+0MJxMYSUjS9TvLoepJIqv6IyrC9eUDDEAmn4qOF7xntjYYBOdp1NzD/NcVnYss2JvgZP4x/V/j1gTzuMPcbLDhRGuYROCvoz/I8SzGIyniYCDz+VwjNCQll7aTOdiUH+fXS3EvInGkjJOTBwRlHX4DErotgYJEGxwnvNOHXjQcevFq2G/KVHX+hZxN3VCLbELNweZZrn5BlNgjt/l0+HiFm5gktt3N921UNVwB+VjgRPVTa/YZiMdT4V21nsGCMBApv+mS7HxPXroFWlJntdYj3AmSZpHDabMVIxDRInwy3DK2YpQcMrSyxV6WfK9VkwQTiGeFW6ffDCoCNF0opELApmOSccejVEGKnlOD6Ij6VKF4pYRjVWqUeqYkhX5j6tKLWf6KbSlh/eDgya8gQiQ9SXwpGsPr3d1PdTz0xcjOgdRYFwcTNiMpx8Na6dwsCVUS64qP1pd+H3RY6Azv6dlRHH4fJ+tqx8vvYGbN3HTnup83V4rVmiMq1BbMUqMFzk23lL7dDq08LFdGC5D6oLU+cQwjKYTduDB+HbokQ4EbUuTW5UivPmaAmr7lDiloPvencBQCR4+AyjwLGlgFYK1aGVgjKmR23mfOB1k2mmJtzndkGMe6Nr7zZlQqjyB4rFcm2cCs4lXINawJzofkoBN8sWxsHTZdlSLsiAV6/kp5hCQnUx6yJfcgVBp5TGEdtdUlnowveGAgxGnZY0ploVCTJ2Cx1Eb4NmjNCxQGhjgjuIOm8gzDlsu4Oy+dIzTlzo4kvI2hD+toqhOvqiMqKgsWt3XX8VcuC7RTYfVOeVss1cXTw3uk+dKAPSkp0ZnT2rcGPsLKWlZcoYzl89EMpTPSHDRKqYpplCM00X7R2rg5JMsCu84qZJ/cE2cWl41HpaNt59PAO4FNfl3Nljlqo4lBTrbH6UoPJBDYdvD09tnjn84yz2Dnmg5rT7BO4tZn/1pJipp6SbRDtFqVWpiPrMKxvaUyayMp3K9ThoYype1O+U7QrRyQiu4CS6tJ05kq9SPglLu6AfNzdMdu6L9VYUjDWbSp5bSPjkLcWIBPN3B7qF25wOPpqnoxnmYp1V0xwuEEIynIIyoYkmM0vZ614s8i1Dkn51ukFyRnMXw1i8dzgJ2KI/cuftbfVLPGvWMoa/HmMrObdx3rX2yzgZWwQIWiXqreG7CbSP/Fk+fA7Czj0/KmMLFTK+8payFgHnAQgd0o8C/5wLCXY10Ofn6gGQ/n8s+Q6b1Ne4AdLMot6O/mj2z65Oji+PbS7vS9lUDsxJpMMEveMP/WPH3js5CpH5PSz0H08/AcnsNzeA7P4Tk8h+fwHJ7Dc3gOz+E5PIfn8Byew3N4Ds/hOTyH5/AcnsNzeA7P4Tk8h+fwHJ5P9Pwbfi5fayMpqAcjKQorIzw9PQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIKaW5kZXggZDRjYmNlOC4uY2VjNTI0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiCkBAIC0zNSw5ICszNSwxNSBAQAogICAgIHJtIC1mICR7U30vc3JjL2Zjb2Jqc2hhc2guaCAke1N9L3NyYy9mY29ianNoYXNoLmdwZXJmCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIGR1cGxpY2F0ZSBmYy1jYWNoZSBmb3IgcG9zdGluc3RhbGwgc2NyaXB0CisgICAgbWtkaXIgLXAgJHtEfSR7bGliZXhlY2Rpcn0KKyAgICBsbiAke0R9JHtiaW5kaXJ9L2ZjLWNhY2hlICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9ZmMtY2FjaGUKK30KKwogUEFDS0FHRVMgPSsgImZvbnRjb25maWctdXRpbHMiCiBGSUxFU18ke1BOfSA9KyAiJHtkYXRhZGlyfS94bWwvKiIKLUZJTEVTX2ZvbnRjb25maWctdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qICR7bGliZXhlY2Rpcn0vKiIKIAogIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCiBSUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTZmNjZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LjEuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJGcmVldHlwZSBmb250IHJlbmRlcmluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRnJlZVR5cGUgaXMgYSBzb2Z0d2FyZSBmb250IGVuZ2luZSB0aGF0IGlzIGRlc2lnbmVkIHRvIGJlIHNtYWxsLCBlZmZpY2llbnQsIFwKK2hpZ2hseSBjdXN0b21pemFibGUsIGFuZCBwb3J0YWJsZSB3aGlsZSBjYXBhYmxlIG9mIHByb2R1Y2luZyBoaWdoLXF1YWxpdHkgb3V0cHV0IChnbHlwaCBcCitpbWFnZXMpLiBJdCBjYW4gYmUgdXNlZCBpbiBncmFwaGljcyBsaWJyYXJpZXMsIGRpc3BsYXkgc2VydmVycywgZm9udCBjb252ZXJzaW9uIHRvb2xzLCB0ZXh0IFwKK2ltYWdlIGdlbmVyYXRpb24gdG9vbHMsIGFuZCBtYW55IG90aGVyIHByb2R1Y3RzIGFzIHdlbGwuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLm5vbmdudS5vcmcvYnVncy8/Z3JvdXA9ZnJlZXR5cGUiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiRnJlZVR5cGUgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0xJQ0VOU0UuVFhUO21kNT00YWY2MjIxNTA2ZjIwMjc3NGVmNzRmNjQ5MzI4NzhhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0ZUTC5UWFQ7bWQ1PTlmMzdiNGU2YWZhM2ZlZjlkYmE4OTMyYjE2YmQzZjk3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvR1BMdjIuVFhUO21kNT04ZWYzODA0NzZmNjQyYzIwZWJmNDBmZWNiMGFkZDJlYyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZnJlZXR5cGUvZnJlZXR5cGUtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtcmlnaHQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZnJlZXR5cGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjBlZjdkODE2MGNkNGJmOGNiMTE4ZWU5ZDY1MzY3Y2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI4ZDg3ZWE3MjBlYTlkNWVkYzUzODhmYzdhMDQ5N2JiMTFiYTlmZTk3MjI0NWUwZjdmNGM3ZThiMWUxZTg0ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgorCisjIEFkYXB0IGF1dG90b29scyB0byB3b3JrIHdpdGggdGhlIG1pbmltYWwgYXV0b2NvbmYgdXNhZ2UgaW4gZnJlZXR5cGUKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2J1aWxkcy91bml4IgorQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCisKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCisjIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCitQQUNLQUdFQ09ORklHW2hhcmZidXp6XSA9ICItLXdpdGgtaGFyZmJ1enosLS13aXRob3V0LWhhcmZidXp6LGhhcmZidXp6IgorUEFDS0FHRUNPTkZJR1twaXhtYXBdID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2ZyZWV0eXBlY29uZmlnXSA9ICItLWVuYWJsZS1mcmVldHlwZS1jb25maWc9eWVzLC0tZW5hYmxlLWZyZWV0eXBlLWNvbmZpZz1ubywiCisKK0VYVFJBX09FQ09ORiA9ICJDQ19CVUlMRD0nJHtCVUlMRF9DQ30nIgorCitUQVJHRVRfQ1BQRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBmcmVldHlwZTIvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTA1OTE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZXR5cGUgZm9udCByZW5kZXJpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkZyZWVUeXBlIGlzIGEgc29mdHdhcmUgZm9udCBlbmdpbmUgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBzbWFsbCwgZWZmaWNpZW50LCBcCi1oaWdobHkgY3VzdG9taXphYmxlLCBhbmQgcG9ydGFibGUgd2hpbGUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgaGlnaC1xdWFsaXR5IG91dHB1dCAoZ2x5cGggXAotaW1hZ2VzKS4gSXQgY2FuIGJlIHVzZWQgaW4gZ3JhcGhpY3MgbGlicmFyaWVzLCBkaXNwbGF5IHNlcnZlcnMsIGZvbnQgY29udmVyc2lvbiB0b29scywgdGV4dCBcCi1pbWFnZSBnZW5lcmF0aW9uIHRvb2xzLCBhbmQgbWFueSBvdGhlciBwcm9kdWN0cyBhcyB3ZWxsLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL2J1Z3MvP2dyb3VwPWZyZWV0eXBlIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkZyZWVUeXBlIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFLlRYVDttZDU9NGFmNjIyMTUwNmYyMDI3NzRlZjc0ZjY0OTMyODc4YTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9GVEwuVFhUO21kNT05ZjM3YjRlNmFmYTNmZWY5ZGJhODkzMmIxNmJkM2Y5NyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0dQTHYyLlRYVDttZDU9OGVmMzgwNDc2ZjY0MmMyMGViZjQwZmVjYjBhZGQyZWMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWV0eXBlL2ZyZWV0eXBlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXJpZ2h0LWxpYnRvb2wucGF0Y2giCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWV0eXBlL2ZpbGVzL2ZyZWV0eXBlMi8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmcmVldHlwZS0oP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTNjNDAzYzExMDAxNmZkYzdlNTM3MjE2YTY0MmIxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNmZmYmEzYzhjZWY5M2Y1NTdkMWY3NjdkN2JjM2RlZTg2MGFjN2EzYWFmZjU4OGE1MjFlMDgxYmMzNmY0YzhhIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIG11bHRpbGliX2hlYWRlcgotCi0jIEFkYXB0IGF1dG90b29scyB0byB3b3JrIHdpdGggdGhlIG1pbmltYWwgYXV0b2NvbmYgdXNhZ2UgaW4gZnJlZXR5cGUKLUFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2J1aWxkcy91bml4IgotQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCi0KLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi0jIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCi1QQUNLQUdFQ09ORklHW2hhcmZidXp6XSA9ICItLXdpdGgtaGFyZmJ1enosLS13aXRob3V0LWhhcmZidXp6LGhhcmZidXp6IgotUEFDS0FHRUNPTkZJR1twaXhtYXBdID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICJDQ19CVUlMRD0nJHtCVUlMRF9DQ30nIgotCi1UQVJHRVRfQ1BQRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBmcmVldHlwZTIvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKLX0KLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9mcmVldHlwZS1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWYyMTc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIlZhcmlvdXMgYmVuY2htYXJuaW5nIHRlc3RzIGZvciBYIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vLWhhbmQuY29tIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiWmxpYiIKLURFUEVORFMgPSAicGFuZ28gbGlieGV4dCBsaWJ4ZnQgdmlydHVhbC9saWJ4MTEgZ3RrKyIKLQotU1JDUkVWID0gImU1OTM5ZmY2MDhiOTVjZGQ0ZDBhYjBlMTkzNTc4MWFiOWEyNzZhYzAiCi1QViA9ICIwLjErZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgotVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXN0LXBhbmdvLWdkay5jO2VuZGxpbmU9MjQ7bWQ1PTFlZTc0ZWM4NTFlY2RhNTdlYjdhYzZjYzE4MGY3NjU1IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L3Rlc3RzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTliMDI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0NjZhYjUxZmM1YWFhNmFmNDA2NTkzNjkzOWNlYzYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0NTc0ZTFiMWY2NWNhNjk0Y2I4ZmI2OTA1MzA5NjY1YzAzNjhhZjE4YTMxMjM1N2Y4ZmY4ODZlZTJmMjk1NjMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJpY3UiCi1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWNhaXJvIFwKLSAgICAtLXdpdGgtZm9udGNvbmZpZyBcCi0gICAgLS13aXRoLWZyZWV0eXBlIFwKLSAgICAtLXdpdGgtZ2xpYiBcCi0gICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCi0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKLQotRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKLUZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS44LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjguOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTA0ZDkzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS44LjguYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MWRiY2U4MmQ2NDcxZWMyYjJhNjI3Y2UwMmQwM2U1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhOGU1Yzg2ZTRkOTllMWNjOTg2NWVjMWI4ZTliMDViOThlNDEzYzJhODg1Y2QxMWY4ZTliYjk1MDJkZDNlM2E5IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYworCitQQUNLQUdFQ09ORklHID8/PSAiaWN1IgorUEFDS0FHRUNPTkZJR1tpY3VdID0gIi0td2l0aC1pY3UsLS13aXRob3V0LWljdSxpY3UiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0td2l0aC1jYWlybyBcCisgICAgLS13aXRoLWZvbnRjb25maWcgXAorICAgIC0td2l0aC1mcmVldHlwZSBcCisgICAgLS13aXRoLWdsaWIgXAorICAgIC0td2l0aG91dC1ncmFwaGl0ZTIgXAorIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIFRoaXMgaXMgYW5jaWVudCBhbmQgY2FuIGdldCB1c2VkIGluc3RlYWQgb2YgdGhlIHBhdGNoZWQgb25lIHdlIHNoaXAsCisgICAgIyBzbyBkZWxldGUgaXQuIEluIDEuOC45IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgdXBzdHJlYW0uCisgICAgcm0gLWYgJHtTfS9tNC9wa2cubTQKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgorCitMRUFEX1NPTkFNRSA9ICJsaWJoYXJmYnV6ei5zbyIKKworRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKK0ZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9maWxlcy8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2ZpbGVzLzAwMDEtbGlianBlZy10dXJiby1maXgtcGFja2FnZV9xYS1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGMyYzc2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9maWxlcy8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAwYTI0ZjAzYTY3NDI1YTdiNThiM2ZkNDBkOTY1YzBjOTgwMWFlN2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjcgQXVnIDIwMTggMTY6MTA6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlianBlZy10dXJibzogZml4IHBhY2thZ2VfcWEgZXJyb3IKKworRml4IHBhY2thZ2UgcWEgZXJyb3JzIGxpa2UgYmVsb3c6CitsaWJqcGVnLnNvLjYyLjMuMCBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIgW3VzZWxlc3MtcnBhdGhzXQordXNyL2Jpbi9janBlZyBjb250YWlucyBwcm9iYWJseS1yZWR1bmRhbnQgUlBBVEggL3Vzci9saWIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAxNzE5NTIyLi42ODJjZWYxIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTA5LDggKzEwOSw2IEBAIGVuZGlmKCkKKyAKKyBpbmNsdWRlKGNtYWtlc2NyaXB0cy9HTlVJbnN0YWxsRGlycy5jbWFrZSkKKyAKKy1zZXQoQ01BS0VfSU5TVEFMTF9SUEFUSCAke0NNQUtFX0lOU1RBTExfRlVMTF9MSUJESVJ9KQorLQorIG1hY3JvKHJlcG9ydF9kaXJlY3RvcnkgdmFyKQorICAgaWYoQ01BS0VfSU5TVEFMTF8ke3Zhcn0gU1RSRVFVQUwgQ01BS0VfSU5TVEFMTF9GVUxMXyR7dmFyfSkKKyAgICAgbWVzc2FnZShTVEFUVVMgIkNNQUtFX0lOU1RBTExfJHt2YXJ9ID0gJHtDTUFLRV9JTlNUQUxMXyR7dmFyfX0iKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2ZpbGVzLzAwMDEtbGlianBlZy10dXJiby1maXgtd3JvbmdseS1kZWZpbmVkLWRlZmluZS1IQVZFX1NURExJQi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvZmlsZXMvMDAwMS1saWJqcGVnLXR1cmJvLWZpeC13cm9uZ2x5LWRlZmluZWQtZGVmaW5lLUhBVkVfU1RETElCLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NzY3ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2ZpbGVzLzAwMDEtbGlianBlZy10dXJiby1maXgtd3JvbmdseS1kZWZpbmVkLWRlZmluZS1IQVZFX1NURExJQi5wYXRjaApAQCAtMCwwICsxLDExOSBAQAorRnJvbSBkMzAxMDE5ZDBmMjNkMTJiOTY2NmQzZDg4YjA4NTkwNjdhNGFkZTc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMzAgQXVnIDIwMTggMTU6MDg6MjMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlianBlZy10dXJibzogZml4IHdyb25nbHkgZGVmaW5lZCBkZWZpbmUgSEFWRV9TVERMSUJfSAorCit3aGVuIGNoYW5nZSBidWlsZCBzeXN0ZW0gZnJvbSBhdXRvdG9vbHMgdG8gY21ha2UsIGJlbG93CitwYXJ0IGlzIHJlcGxhY2Ugd3JvbmdseToKKworIiN1bmRlZiBIQVZFX1NURExJQl9IIgorc2hvdWxkIGJlIGNoYW5nZSB0byAiI2NtYWtlZGVmaW5lIEhBVkVfU1RETElCX0ggMSIKK25vdCAiI2NtYWtlZGVmaW5lIEhBVkVfU1RETElCX0giCisKK290aGVyd2lzZSwgZXZlbiBpZiBzdGRsaWIuaCBpcyBmb3VuZCwgb3V0cHV0IGZpbGUKK29mIGNvbmZpZ3VyZV9maWxlKCkgd2lsbCBkZWZpbmUgbGlrZTogI2RlZmluZSBIQVZFX1NURExJQl9ICitidXQgd2UgbmVlZCBpdCBhcyAjZGVmaW5lIEhBVkVfU1RETElCX0ggMSwgc2luY2UgZm9yCitkaWZmZXJlbnQgZGVmaW5hdGlvbiBvZiBIQVZFX1NURExJQl9IIHdpbGwgY2F1c2UgYmVsb3cgZXJyb3I6CitlcnJvcjogIkhBVkVfU1RETElCX0giIHJlZGVmaW5lZCBbLVdlcnJvcl0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWRbaHR0cHM6Ly9naXRodWIuY29tL2xpYmpwZWctdHVyYm8vbGlianBlZy10dXJiby9wdWxsLzI3NV0KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGpjb25maWcuaC5pbiAgICB8IDI4ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KKyBqY29uZmlnaW50LmguaW4gfCAgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2pjb25maWcuaC5pbiBiL2pjb25maWcuaC5pbgoraW5kZXggMjg0Mjc1NC4uMThhNjlhNCAxMDA2NDQKKy0tLSBhL2pjb25maWcuaC5pbgorKysrIGIvamNvbmZpZy5oLmluCitAQCAtMTAsMTYgKzEwLDE2IEBACisgI2RlZmluZSBMSUJKUEVHX1RVUkJPX1ZFUlNJT05fTlVNQkVSICBATElCSlBFR19UVVJCT19WRVJTSU9OX05VTUJFUkAKKyAKKyAvKiBTdXBwb3J0IGFyaXRobWV0aWMgZW5jb2RpbmcgKi8KKy0jY21ha2VkZWZpbmUgQ19BUklUSF9DT0RJTkdfU1VQUE9SVEVECisrI2NtYWtlZGVmaW5lIENfQVJJVEhfQ09ESU5HX1NVUFBPUlRFRCAxCisgCisgLyogU3VwcG9ydCBhcml0aG1ldGljIGRlY29kaW5nICovCistI2NtYWtlZGVmaW5lIERfQVJJVEhfQ09ESU5HX1NVUFBPUlRFRAorKyNjbWFrZWRlZmluZSBEX0FSSVRIX0NPRElOR19TVVBQT1JURUQgMQorIAorIC8qIFN1cHBvcnQgaW4tbWVtb3J5IHNvdXJjZS9kZXN0aW5hdGlvbiBtYW5hZ2VycyAqLworLSNjbWFrZWRlZmluZSBNRU1fU1JDRFNUX1NVUFBPUlRFRAorKyNjbWFrZWRlZmluZSBNRU1fU1JDRFNUX1NVUFBPUlRFRCAxCisgCisgLyogVXNlIGFjY2VsZXJhdGVkIFNJTUQgcm91dGluZXMuICovCistI2NtYWtlZGVmaW5lIFdJVEhfU0lNRAorKyNjbWFrZWRlZmluZSBXSVRIX1NJTUQgMQorIAorIC8qCisgICogRGVmaW5lIEJJVFNfSU5fSlNBTVBMRSBhcyBlaXRoZXIKK0BAIC0zMywzNyArMzMsMzcgQEAKKyAjZGVmaW5lIEJJVFNfSU5fSlNBTVBMRSAgQEJJVFNfSU5fSlNBTVBMRUAgICAgICAvKiB1c2UgOCBvciAxMiAqLworIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bG9jYWxlLmg+IGhlYWRlciBmaWxlLiAqLworLSNjbWFrZWRlZmluZSBIQVZFX0xPQ0FMRV9ICisrI2NtYWtlZGVmaW5lIEhBVkVfTE9DQUxFX0ggMQorIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkZGVmLmg+IGhlYWRlciBmaWxlLiAqLworLSNjbWFrZWRlZmluZSBIQVZFX1NURERFRl9ICisrI2NtYWtlZGVmaW5lIEhBVkVfU1REREVGX0ggMQorIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLworLSNjbWFrZWRlZmluZSBIQVZFX1NURExJQl9ICisrI2NtYWtlZGVmaW5lIEhBVkVfU1RETElCX0ggMQorIAorIC8qIERlZmluZSBpZiB5b3UgbmVlZCB0byBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gdG8gZ2V0IHNpemVfdC4gKi8KKy0jY21ha2VkZWZpbmUgTkVFRF9TWVNfVFlQRVNfSAorKyNjbWFrZWRlZmluZSBORUVEX1NZU19UWVBFU19IIDEKKyAKKyAvKiBEZWZpbmUgaWYgeW91IGhhdmUgQlNELWxpa2UgYnplcm8gYW5kIGJjb3B5IGluIDxzdHJpbmdzLmg+IHJhdGhlciB0aGFuCisgICAgbWVtc2V0L21lbWNweSBpbiA8c3RyaW5nLmg+LiAqLworLSNjbWFrZWRlZmluZSBORUVEX0JTRF9TVFJJTkdTCisrI2NtYWtlZGVmaW5lIE5FRURfQlNEX1NUUklOR1MgMQorIAorIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1bnNpZ25lZCBjaGFyJy4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9VTlNJR05FRF9DSEFSCisrI2NtYWtlZGVmaW5lIEhBVkVfVU5TSUdORURfQ0hBUiAxCisgCisgLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVuc2lnbmVkIHNob3J0Jy4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9VTlNJR05FRF9TSE9SVAorKyNjbWFrZWRlZmluZSBIQVZFX1VOU0lHTkVEX1NIT1JUIDEKKyAKKyAvKiBDb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IHBvaW50ZXJzIHRvIHVuZGVmaW5lZCBzdHJ1Y3R1cmVzLiAqLworLSNjbWFrZWRlZmluZSBJTkNPTVBMRVRFX1RZUEVTX0JST0tFTgorKyNjbWFrZWRlZmluZSBJTkNPTVBMRVRFX1RZUEVTX0JST0tFTiAxCisgCisgLyogRGVmaW5lIGlmIHlvdXIgKGJyb2tlbikgY29tcGlsZXIgc2hpZnRzIHNpZ25lZCB2YWx1ZXMgYXMgaWYgdGhleSB3ZXJlCisgICAgdW5zaWduZWQuICovCistI2NtYWtlZGVmaW5lIFJJR0hUX1NISUZUX0lTX1VOU0lHTkVECisrI2NtYWtlZGVmaW5lIFJJR0hUX1NISUZUX0lTX1VOU0lHTkVEIDEKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB0eXBlIGBjaGFyJyBpcyB1bnNpZ25lZCBhbmQgeW91IGFyZSBub3QgdXNpbmcgZ2NjLiAgKi8KKyAjaWZuZGVmIF9fQ0hBUl9VTlNJR05FRF9fCistICAjY21ha2VkZWZpbmUgX19DSEFSX1VOU0lHTkVEX18KKysgICNjbWFrZWRlZmluZSBfX0NIQVJfVU5TSUdORURfXyAxCisgI2VuZGlmCisgCisgLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCitkaWZmIC0tZ2l0IGEvamNvbmZpZ2ludC5oLmluIGIvamNvbmZpZ2ludC5oLmluCitpbmRleCA1NWRmMDUzLi42Yzg5OGFjIDEwMDY0NAorLS0tIGEvamNvbmZpZ2ludC5oLmluCisrKysgYi9qY29uZmlnaW50LmguaW4KK0BAIC0xNywxMCArMTcsMTAgQEAKKyAjZGVmaW5lIFNJWkVPRl9TSVpFX1QgIEBTSVpFX1RACisgCisgLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgaGFzIF9fYnVpbHRpbl9jdHpsKCkgYW5kIHNpemVvZih1bnNpZ25lZCBsb25nKSA9PSBzaXplb2Yoc2l6ZV90KS4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9CVUlMVElOX0NUWkwKKysjY21ha2VkZWZpbmUgSEFWRV9CVUlMVElOX0NUWkwgMQorIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50cmluLmg+IGhlYWRlciBmaWxlLiAqLworLSNjbWFrZWRlZmluZSBIQVZFX0lOVFJJTl9ICisrI2NtYWtlZGVmaW5lIEhBVkVfSU5UUklOX0ggMQorIAorICNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKEhBVkVfSU5UUklOX0gpCisgI2lmIChTSVpFT0ZfU0laRV9UID09IDgpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBhNWFlMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1TVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9ZjY3ZDcwZTU0N2EyNjYyYzA3OTc4MWM3MmY4NzdmNzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCi0iCi1ERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdjODJmMGY2YTMxMzBlYzA2YjhhNGQwYjMyMWNiY2EzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyNDg5MGUyYmI0NmUxMmU3MmE3OWY3ZTk2NWY0MDlmNGUxNjQ2NmQwMGUxZGQxNWQ5M2Q3M2VlNmI1OTI1MjMiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJqcGVnLXR1cmJvL2ZpbGVzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9saWJqcGVnLXR1cmJvL2ZpbGVzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLVBFPSAiMSIKLQotIyBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBqcGVnCi1QUk9WSURFUyA9ICJqcGVnIgotUlBST1ZJREVTXyR7UE59ICs9ICJqcGVnIgotUlJFUExBQ0VTXyR7UE59ICs9ICJqcGVnIgotUkNPTkZMSUNUU18ke1BOfSArPSAianBlZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLSMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtc2ltZCIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHgzMiBBQkkgc3VwcG9ydAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi0jIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiTUlQU1BLR1NGWF9GUFUiLCAiLW5mIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKLQotIyBQcm92aWRlIGEgd29ya2Fyb3VuZCBpZiBBbHRpdmVjIHVuaXQgaXMgbm90IHByZXNlbnQgaW4gUFBDCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCi0KLWRlZiBnZXRfYnVpbGRfdGltZShkKToKLSAgICBpZiBkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSAhPSBOb25lOgotICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKLSAgICAgICAgcmV0dXJuICIgLS13aXRoLWJ1aWxkLWRhdGU9IisgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChmbG9hdChkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSkpLnN0cmZ0aW1lKCIlWSVtJWQiKQotICAgIHJldHVybiAiIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke0BnZXRfYnVpbGRfdGltZShkKX0iCi0KLVBBQ0tBR0VTID0rICJqcGVnLXRvb2xzIGxpYnR1cmJvanBlZyIKLQotREVTQ1JJUFRJT05fanBlZy10b29scyA9ICJUaGUganBlZy10b29scyBwYWNrYWdlIGluY2x1ZGVzIGNsaWVudCBwcm9ncmFtcyB0byBhY2Nlc3MgbGlianBlZyBmdW5jdGlvbmFsaXR5LiAgVGhlc2UgdG9vbHMgYWxsb3cgZm9yIHRoZSBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbiwgdHJhbnNmb3JtYXRpb24gYW5kIGRpc3BsYXkgb2YgSlBFRyBmaWxlcyBhbmQgYmVuY2htYXJraW5nIG9mIHRoZSBsaWJqcGVnIGxpYnJhcnkuIgotRklMRVNfanBlZy10b29scyA9ICIke2JpbmRpcn0vKiIKLQotREVTQ1JJUFRJT05fbGlidHVyYm9qcGVnID0gIkEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHdoaWNoIHByb3ZpZGVzIG9ubHkgVHVyYm9KUEVHIEFQSXMiCi1GSUxFU19saWJ0dXJib2pwZWcgPSAiJHtsaWJkaXJ9L2xpYnR1cmJvanBlZy5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODJiZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4wLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiSGFyZHdhcmUgYWNjZWxlcmF0ZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCitIT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTM7bWQ1PTgxODRiY2M3YzRhYzdiOWVkYzZhN2JjMDBmMjMxZDBiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE2O21kNT03ZWE5N2RjODNiMGY1OTA1MmVlODM3ZTYxZWYwZTA4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9MTE7bWQ1PWM1OWUxOTgxMWMwMDZjYjM4ZjgyZDY0NzcxMzRkMzE0IFwKKyIKK0RFUEVORFNfYXBwZW5kX3g4Ni02NF9jbGFzcy10YXJnZXQgPSAiIG5hc20tbmF0aXZlIgorREVQRU5EU19hcHBlbmRfeDg2X2NsYXNzLXRhcmdldCAgICA9ICIgbmFzbS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlianBlZy10dXJiby1maXgtcGFja2FnZV9xYS1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXdyb25nbHktZGVmaW5lZC1kZWZpbmUtSEFWRV9TVERMSUIucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMTJhM2ZjZjFkMDc4ZGIzODQxMGYyNzcxOGE5MWI4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Nzg4NzYxMDVkMGQzMTYyMDNjOTI4ZmQyYTAzNzRjOGMwMWY3NTVkMGEwMGIxMmExYzg5MzRhZWNjZmY4ODY4IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKKyMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiTUlQU1BLR1NGWF9GUFUiLCAiLW5mIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgIiIsIGQpfSIKKworIyBQcm92aWRlIGEgd29ya2Fyb3VuZCBpZiBBbHRpdmVjIHVuaXQgaXMgbm90IHByZXNlbnQgaW4gUFBDCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItRFdJVEhfU0lNRD1GYWxzZSIsIGQpfSIKKworREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmUvZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmUvZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2gKaW5kZXggMzYwNTQ0Ni4uNjExZTU0MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaApAQCAtNDksOSArNDksOSBAQAogaW5kZXggODM5N2Y3Yi4uYzdmMWY0ZCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjUsNSArNjUsOCBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9nYm1fbW9kaWZpZXJzIiA9IHh5ZXM7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfR0JNX01PRElGSUVSUywgMSwgW0RlZmluZSBpZiB5b3UgY2FuIHVzZSBHQk0gcHJvcGVydGllcy5dKQorQEAgLTQ5LDUgKzQ5LDggQEAgaWYgdGVzdCAieCRIQVZFX0dTVCIgPSAieHllcyI7IHRoZW4KICBmaQorIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9HU1QsIFt0ZXN0ICJ4JEhBVkVfR1NUIiA9ICJ4eWVzIl0pCiAgCiArQUNfQ0hFQ0tfTElCKFtnYm1dLCBbZ2JtX2JvX21hcF0sIFtIQVZFX0dCTV9CT19NQVA9eWVzXSwgW10pCiArQU1fQ09ORElUSU9OQUwoRU5BQkxFX0dCTV9NQVAsIFt0ZXN0ICJ4JEhBVkVfR0JNX0JPX01BUCIgPSAieHllcyJdKQpAQCAtOTksMTIgKzk5LDEyIEBACiBpbmRleCAzYTJjNGRkLi4yNzZkYzU1IDEwMDY0NAogLS0tIGEva21zY3ViZS5jCiArKysgYi9rbXNjdWJlLmMKLUBAIC0xNDIsNyArMTQyLDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtMTQ4LDcgKzE0OCwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAllbHNlIGlmIChtb2RlID09IFZJREVPKQotIAkJZWdsID0gaW5pdF9jdWJlX3ZpZGVvKGdibSwgdmlkZW8pOworIAkJZWdsID0gaW5pdF9jdWJlX3ZpZGVvKGdibSwgdmlkZW8sIHNhbXBsZXMpOwogIAllbHNlCiArI2lmIEhBVkVfR0JNX0JPX01BUAotIAkJZWdsID0gaW5pdF9jdWJlX3RleChnYm0sIG1vZGUpOworIAkJZWdsID0gaW5pdF9jdWJlX3RleChnYm0sIG1vZGUsIHNhbXBsZXMpOwogKyNlbHNlCiArCQlwcmludGYoImdibV9ib19tYXAoKSBzdXBwb3J0IG1pc3NpbmdcbiIpOwogKyNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKaW5kZXggNWI2NGVkNi4uNDZhZWViMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCiAKLVNSQ1JFViA9ICIwZDhkZTRjZTNhMDNmMzZhZjE4MTdmOWIwNTg2ZDEzMmFkMmM1ZDJlIgorU1JDUkVWID0gIjlkY2NlNzFlNjAzNjE2ZWU3YTU0NzA3ZTkzMmY5NjJjZGY4ZmIyMGEiCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL21lc2Eva21zY3ViZTticmFuY2g9bWFzdGVyO3Byb3RvY29sPWdpdCBcCiAgICAgZmlsZTovL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9uby10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJiNmMxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9uby10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUFkZCBvcHRpb24gdG8gZGlzYWJsZSB0ZXN0cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcHVsbC8xNTgpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggYjJlYmFlZi4uOTYzMmM3YSAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTI0Miw3ICsyNDIsMTAgQEAgbGliZXBveHlfaW5jID0gWwotIAotIHN1YmRpcignaW5jbHVkZS9lcG94eScpCi0gc3ViZGlyKCdzcmMnKQotLXN1YmRpcigndGVzdCcpCi0rCi0raWYgZ2V0X29wdGlvbigndGVzdHMnKQotKyAgc3ViZGlyKCd0ZXN0JykKLStlbmRpZgotIAotIGlmIGdldF9vcHRpb24oJ2RvY3MnKQotICAgZG94eWdlbiA9IGZpbmRfcHJvZ3JhbSgnZG94eWdlbicsIHJlcXVpcmVkOiBmYWxzZSkKLWRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBiNWQ3Yzk4Li5kYzMwZTY4IDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMTUsMyArMTUsNyBAQCBvcHRpb24oJ3gxMScsCi0gICAgICAgIHR5cGU6ICdib29sZWFuJywKLSAgICAgICAgdmFsdWU6IHRydWUsCi0gICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIFgxMSBzdXBwb3J0IChHTFggb3IgRUdMLVgxMSknKQotK29wdGlvbigndGVzdHMnLAotKyAgICAgICB0eXBlOiAnYm9vbGVhbicsCi0rICAgICAgIHZhbHVlOiB0cnVlLAotKyAgICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSB0ZXN0IHN1aXRlJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYTA4NjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBmdW5jdGlvbiBwb2ludGVyIG1hbmFnZW1lbnQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2M2ZlMzg0Nzc4OTI1ODI1NGRjZDdlM2ZkYjllN2Y1ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Yzk0OTk1Mzk4YTZlYmY2OTE2MDBkZGEyZTk2ODVhMGNhYzI2MTQxNDE3NWMyYWRmNDY0NWNkZmFiNDJhNWQ1IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLURlZ2w9eWVzLCAtRGVnbD1ubywgdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURnbHg9eWVzLCAtRGdseD1ubywgdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gZWdsIgotCi1FWFRSQV9PRU1FU09OICs9ICItRHRlc3RzPWZhbHNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDY3MjEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjIuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNGE2YjllNTgxZGEyMjlkZWU3NGMyMjYzYzg0YjFlY2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk1NjIzODY1MTllYjNmZDdmMDMyMDlmMjc5ZjY5N2E4Y2JhNTIwZDNjMTU1ZDZlMjUzYzNlMTM4YmVjYTdkOCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EZWdsPXllcywgLURlZ2w9bm8sIHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EZ2x4PXllcywgLURnbHg9bm8sIHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKKworRVhUUkFfT0VNRVNPTiArPSAiLUR0ZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL21vcmUtZ2VuLWRlcGVuZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkwNzZiZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK01hbnkgc291cmNlIGZpbGVzIGluY2x1ZGUgZS5nLiB3YXlsYW5kLXByb3RvY29scy5oIHdoaWNoIHNob3VsZCBiZSBmb3VuZCBpbiB0aGUKK3N5c3Jvb3QgYnV0IFNETCB3YW50cyB0byBidWlsZCBpdHMgb3duIGhlYWRlcnMgZnJvbSB0aGUgWE1MIGRlZmluaXRpb25zLgorCitIb3dldmVyIHRoZSBydWxlcyB0byBnZW5lcmF0ZSB0aG9zZSBoZWFkZXJzIGFyZSBvbmx5IGRlcGVuZGVuY2llcyBvZiB0aGUKK3RvcC1sZXZlbCBsaWJTREwyLmxhIG9iamVjdCBzbyBjYW4gYmUgYnVpbHQgaW4gcGFyYWxsZWwgd2l0aCB0aGUgcmVzdCBvZiB0aGUKK29iamVjdHMsIHdoaWNoIGNhbiBsZWFkIHRvIGludGVyZXN0aW5nIGVycm9ycyBpZiB0aGUgaGVhZGVyIGlzIHBhcnNlZCBieSB0aGUKK2NvbXBpbGVyIHdoaWxzdCBpdCdzIGJlaW5nIHdyaXR0ZW4gYnkgYW5vdGhlciBwcm9jZXNzOgorCit8IGdlbi93YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oOjM6IGVycm9yOiB1bnRlcm1pbmF0ZWQgI2lmbmRlZgorfCAgI2lmbmRlZiBXQVlMQU5EX0NMSUVOVF9QUk9UT0NPTF9ICisKK1NvbHZlIHRoaXMgYnkgYWRkaW5nIG1vcmUgZGVwZW5kZW5jaWVzIHNvIHRoZSBnZW5lcmF0ZWQgZmlsZXMgYXJlIGJ1aWx0IGJlZm9yZQordGhlIHByaW1hcnkgb2JqZWN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvZGF0YS9wb2t5LXRtcC9tYXN0ZXIvd29yay9jb3JlaTctNjQtcG9reS1saW51eC9saWJzZGwyLzIuMC44LXIwL1NETDItMi4wLjgvY29uZmlndXJlLmluCitpbmRleCAxYzdlNzkzMzguLmJhMDdhNGE0ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvZGF0YS9wb2t5LXRtcC9tYXN0ZXIvd29yay9jb3JlaTctNjQtcG9reS1saW51eC9saWJzZGwyLzIuMC44LXIwL1NETDItMi4wLjgvY29uZmlndXJlLmluCitAQCAtNDAxMSw3ICs0MDExLDcgQEAgREVQRU5EUz1gZWNobyAkU09VUkNFUyB8IHRyICcgJyAnXG4nYAorIGZvciBFWFQgaW4gYXNtIGNjIG0gYyBTOyBkbworICAgICBPQkpFQ1RTPWBlY2hvICIkT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuJyRFWFQnLCQob2JqZWN0cykvXDEubG8sZydgCisgICAgIERFUEVORFM9YGVjaG8gIiRERVBFTkRTIiB8IHNlZCAicyxeXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuJEVYVFxcJCxcXFxcCistXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi4kRVhUXFxcXAorK1xcJChvYmplY3RzKS9cXDIubG86IFxcMS9cXDIuJEVYVCBcXCQoR0VOX09CSkVDVFMpXFxcXAorIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKKyBkb25lCisgCitAQCAtNDAyOCwxNCArNDAyOCwxNCBAQCBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKKyBTRExNQUlOX0RFUEVORFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKKyBTRExNQUlOX09CSkVDVFM9YGVjaG8gIiRTRExNQUlOX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5sbyxnJ2AKKyBTRExNQUlOX0RFUEVORFM9YGVjaG8gIiRTRExNQUlOX0RFUEVORFMiIHwgc2VkICJzLFxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLmMsXFxcXAorLVxcJChvYmplY3RzKS9cXDIubG86IFxcMS9cXDIuY1xcXFwKKytcXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLmMgXFwkKEdFTl9PQkpFQ1RTKVxcXFwKKyAJXFwkKFJVTl9DTURfQ0MpXFwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFxcJChDQykgXFwkKENGTEFHUykgXFwkKEVYVFJBX0NGTEFHUykgJERFUEVOREVOQ1lfVFJBQ0tJTkdfT1BUSU9OUyAtYyBcXCQ8IC1vIFxcJEAsZyJgCisgCisgU0RMVEVTVF9PQkpFQ1RTPWBlY2hvICRTRExURVNUX1NPVVJDRVNgCisgU0RMVEVTVF9ERVBFTkRTPWBlY2hvICRTRExURVNUX1NPVVJDRVNgCisgU0RMVEVTVF9PQkpFQ1RTPWBlY2hvICIkU0RMVEVTVF9PQkpFQ1RTIiB8IHNlZCAncyxbW14gXV0qL1woW1teIF1dKlwpXC5jLCQob2JqZWN0cykvXDEubG8sZydgCisgU0RMVEVTVF9ERVBFTkRTPWBlY2hvICIkU0RMVEVTVF9ERVBFTkRTIiB8IHNlZCAicyxcXChbW14gXV0qXFwpL1xcKFtbXiBdXSpcXClcXC5jLFxcXFwKKy1cXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLmNcXFxcCisrXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXCBcXCQoR0VOX09CSkVDVFMpXFxcXAorIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKKyAKKyAjIFNldCBydW50aW1lIHNoYXJlZCBsaWJyYXJ5IHBhdGhzIGFzIG5lZWRlZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiCmluZGV4IDgwOTJmYWQuLjgxMmE5YWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIKQEAgLTEyLDExICsxMiw5IEBACiAKIFBST1ZJREVTID0gInZpcnR1YWwvbGlic2RsMiIKIAotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAndmlydHVhbC9uYXRpdmVzZGstbGlieDExIG5hdGl2ZXNkay1saWJ4cmFuZHIgbmF0aXZlc2RrLWxpYnhyZW5kZXIgbmF0aXZlc2RrLWxpYnhleHQnLCAnJywgZCl9IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL3d3dy5saWJzZGwub3JnL3JlbGVhc2UvU0RMMi0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLUdMRVMyLUdldC1zaW4tY29zLW91dC1vZi12ZXJ0ZXgtc2hhZGVyLnBhdGNoIFwKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3JlbGVhc2UvU0RMMi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbW9yZS1nZW4tZGVwZW5kcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUdMRVMyLUdldC1zaW4tY29zLW91dC1vZi12ZXJ0ZXgtc2hhZGVyLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCkBAIC0zMiwxMiArMzAsMTUgQEAKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCiAgICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc25kaW8gXAogICAgICAgICAgICAgICAgICIKIAogIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCiAjIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAogUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgZCl9IgogCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJ4MTEiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCiBQQUNLQUdFQ09ORklHID8/PSAiIFwKICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIGRpcmVjdGZiIHB1bHNlYXVkaW8geDExJywgZCl9IFwKQEAgLTY0LDMgKzY1LDUgQEAKIH0KIAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDE4ZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgotCi1ERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKLWFuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCi1wcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAotd2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAotZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAotYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjY0OWJlNzAzOTA2MDY2NTFjYjYzNjMyMGJmZDQzYzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZhNzc5MGMzZGNjNTY1MzczNzJjOTBhODMwMzZhMzEzNjE5NGE4YjM5N2U4NGU5N2JmOWNjOTI1NGZhMmM1MSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKLQotREVQRU5EUyA9ICJsaWJ2YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM1MDg1YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMi4wLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCisKK0RFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAorYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKK3Byb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCit3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCitmb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCithY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5M2I1OGFhNWIxNGMxNmY0YmFjZThhNDVkYzI1NWVjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDdhNmVkMWZhYjY1N2RmNGU4M2VhMTFmOTAzMTBlZmNmMzFjMjc4MjhmMzJkNjUzNTFhMjhjYTNjNDA0ZGMwIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL3JlbGVhc2VzIgorCitERVBFTkRTID0gImxpYnZhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNjZjYzMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAotYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCi1oYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAotYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAotZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCi1zcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCi1NZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCi1saW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCi1tYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKLXZpZGVvIGRlY29kaW5nLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlkNmU0ZjFkMzZjNDA3NTY2MzQzZTlkZGU1YTk3MmI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzZmE5NTNhMTFkMzIxMGMzYTRlZTc5MDMxYWJkYmUwODYzZDVjZTEzZDliM2Y5M2YzMTVmMWVlYzYwYTRiMGYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcmVsZWFzZXMiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcHJvZ19XQVlMQU5EX1NDQU5ORVI9d2F5bGFuZC1zY2FubmVyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS1nbHggJHtQTn0td2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgotCi1GSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LXdheWxhbmQgPSsgIiR7bGliZGlyfS9saWJ2YS13YXlsYW5kKiR7U09MSUJTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFlNTdlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuMi4wLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKK0RFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAorYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCitoYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAorYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAorZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCitzcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCitNZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCitsaW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCittYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKK3ZpZGVvIGRlY29kaW5nLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjkyZDA0YWQxNzAwMTM2ZGM3NWIxZTVmNDc1MTZlNzA0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmNmNhMDRjNzg1NTQ0ZDMwZDMxNWVmMTMwYTZhZWI5NDM1Yjc1ZjkzNGQ3ZmJlMGU0ZTliYTYwODRjZTRlZjIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcmVsZWFzZXMiCisKK0RFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcHJvZ19XQVlMQU5EX1NDQU5ORVI9d2F5bGFuZC1zY2FubmVyIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS1nbHggJHtQTn0td2F5bGFuZCIKKworUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgorCitGSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LXdheWxhbmQgPSsgIiR7bGliZGlyfS9saWJ2YS13YXlsYW5kKiR7U09MSUJTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MDhkNDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDM0MjMxMWRiYjE5MDczNWI3YjMyYWIyMGY4MWMxZDhkYmNmZTcxN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDExIE9jdCAyMDE3IDE1OjQwOjQyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLnZ1bGthbi5hbTogZXhwbGljdGx5IGFkZCBsaWIgZXhwYXQgdG8gaW50ZWwKLSBsaWJ2dWxrYW4ncyBsaWIgZGVwZW5kcwotCi1XaGlsZSBidWlsdCB3aXRoICItZnZpc2liaWxpdHk9ZGVmYXVsdCIKLS4uLgotfGk1ODYtb2UtbGludXgtZ2NjIC4uLiAtZnZpc2liaWxpdHk9ZGVmYXVsdCAuLi4gLW8gY29tbW9uLy5saWJzL2NvbW1vbl9saWJpbnRlbF9jb21tb25fbGEtZ2VuX2RlY29kZXIubwotLi4uCi0KLUl0IHRyaWdnZXJlZCB0aGUgZmFpbHVyZQotLi4uCi18aTU4Ni1vZS1saW51eC1nKysgIC4uLiBjb21tb24vLmxpYnMvbGliaW50ZWxfY29tbW9uLmEgLi4uIC1vIHZ1bGthbi8ubGlicy9saWJ2dWxrYW5faW50ZWwuc28KLXxjb21tb24vLmxpYnMvbGliaW50ZWxfY29tbW9uLmEoY29tbW9uX2xpYmludGVsX2NvbW1vbl9sYS1nZW5fZGVjb2Rlci5vKToKLXxJbiBmdW5jdGlvbiBgc3RhcnRfZWxlbWVudCc6Ci18L3Vzci9zcmMvZGVidWcvbWVzYS8yXzE3LjEuNy1yMC9tZXNhLTE3LjEuNy9zcmMvaW50ZWwvY29tbW9uL2dlbl9kZWNvZGVyLmM6MzcxOgotdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWE1MX0dldEN1cnJlbnRMaW5lTnVtYmVyJwotLi4uCi0KLWV4cGxpY3RseSBhZGQgRVhQQVRfTElCUyB0byBpbnRlbCdzIFZVTEtBTl9MSUJfREVQUwotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi1odHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9jb21taXQvP2lkPTA1ZmM2MmQ4OWY1OWNlMTlhMThiZmQ0ZTYzYTA5NjI0OTEwZDZjYWYKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1JbmRleDogbWVzYS0xNy4zLjYvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1lc2EtMTcuMy42Lm9yaWcvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotKysrIG1lc2EtMTcuMy42L3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLUBAIC0xNDQsNiArMTQ0LDcgQEAgVlVMS0FOX0xJQl9ERVBTID0gXAotIAkkKExJQkRSTV9MSUJTKSBcCi0gCSQoUFRIUkVBRF9MSUJTKSBcCi0gCSQoRExPUEVOX0xJQlMpIFwKLSsJJChFWFBBVF9MSUJTKSBcCi0gCS1sbQotIAotIGlmIEhBVkVfUExBVEZPUk1fQU5EUk9JRApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVNpbXBsaWZ5LXdheWxhbmQtc2Nhbm5lci1sb29rdXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtU2ltcGxpZnktd2F5bGFuZC1zY2FubmVyLWxvb2t1cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTBkMmEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVNpbXBsaWZ5LXdheWxhbmQtc2Nhbm5lci1sb29rdXAucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3ZThlMGY4YThhYzI0MjVlMTlhMmYzNDBjOWUzZGE5MzQ1ZjI1OTQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTUgTm92IDIwMTYgMTU6MjA6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzZdIFNpbXBsaWZ5IHdheWxhbmQtc2Nhbm5lciBsb29rdXAKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK0Rvbid0IHVzZSBwa2ctY29uZmlnIHRvIGxvb2t1cCB0aGUgcGF0aCBvZiBhIGJpbmFyeSB0aGF0J3MgaW4gdGhlIHBhdGguCisKK0FsdGVybmF0aXZlbHkgd2UnZCBoYXZlIHRvIHByZWZpeCB0aGUgcGF0aCByZXR1cm5lZCBieSBwa2ctY29uZmlnIHdpdGgKK1BLR19DT05GSUdfU1lTUk9PVF9ESVIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBjb25maWd1cmUuYWMgfCA3ICstLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDE0ZjFhZjJiMmYuLjkxNmQwYmQyMDcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4MjUsMTIgKzE4MjUsNyBAQCBmb3IgcGxhdCBpbiAkcGxhdGZvcm1zOyBkbworICAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRfUFJPVE9DT0xTXSwgW3dheWxhbmQtcHJvdG9jb2xzID49ICRXQVlMQU5EX1BST1RPQ09MU19SRVFVSVJFRF0pCisgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgCisgCistICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sCistICAgICAgICAgICAgICAgICAgICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAsCistICAgICAgICAgICAgICAgICAgICAgICAgICBXQVlMQU5EX1NDQU5ORVI9JycpCistICAgICAgICBpZiB0ZXN0ICJ4JFdBWUxBTkRfU0NBTk5FUiIgPSB4OyB0aGVuCistICAgICAgICAgICAgQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwgWzpdKQorLSAgICAgICAgZmkKKysgICAgICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sIFs6XSkKKyAKKyAgICAgICAgIGlmIHRlc3QgIngkV0FZTEFORF9TQ0FOTkVSIiA9ICJ4OiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFt3YXlsYW5kLXNjYW5uZXIgaXMgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIHdheWxhbmQgcGxhdGZvcm1dKQorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ0NGIyOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYzkwOGYwYzEzYWM4MWEzYTUyMTQwZjEyOWExM2IyYmM5OTdmZjRlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE1IE5vdiAyMDE2IDE1OjIwOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNpbXBsaWZ5IHdheWxhbmQtc2Nhbm5lciBsb29rdXAKLQotRG9uJ3QgdXNlIHBrZy1jb25maWcgdG8gbG9va3VwIHRoZSBwYXRoIG9mIGEgYmluYXJ5IHRoYXQncyBpbiB0aGUgcGF0aC4KLQotQWx0ZXJuYXRpdmVseSB3ZSdkIGhhdmUgdG8gcHJlZml4IHRoZSBwYXRoIHJldHVybmVkIGJ5IHBrZy1jb25maWcgd2l0aAotUEtHX0NPTkZJR19TWVNST09UX0RJUi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNyArLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDogbWVzYS0xNy4zLjYvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWVzYS0xNy4zLjYub3JpZy9jb25maWd1cmUuYWMKLSsrKyBtZXNhLTE3LjMuNi9jb25maWd1cmUuYWMKLUBAIC0xNjk0LDEyICsxNjk0LDcgQEAgaWYgdGVzdCAieCR3aXRoX3BsYXRmb3JtcyIgPSB4YXV0bzsgdGhlbgotICAgICB3aXRoX3BsYXRmb3Jtcz0kd2l0aF9lZ2xfcGxhdGZvcm1zCi0gZmkKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sCi0tICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAsCi0tICAgICAgICBXQVlMQU5EX1NDQU5ORVI9JycpCi0taWYgdGVzdCAieCRXQVlMQU5EX1NDQU5ORVIiID0geDsgdGhlbgotLSAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLCBbOl0pCi0tZmkKLStBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotIAotIFBLR19DSEVDS19FWElTVFMoW3dheWxhbmQtcHJvdG9jb2xzID49ICRXQVlMQU5EX1BST1RPQ09MU19SRVFVSVJFRF0sIFtoYXZlX3dheWxhbmRfcHJvdG9jb2xzPXllc10sIFtoYXZlX3dheWxhbmRfcHJvdG9jb2xzPW5vXSkKLSBpZiB0ZXN0ICJ4JGhhdmVfd2F5bGFuZF9wcm90b2NvbHMiID0geHllczsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtc3QtZHJpLUluaXRpYWxpc2UtbW9kaWZpZXItdG8tSU5WQUxJRC1mb3ItRFJJMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFiYTc4NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtc3QtZHJpLUluaXRpYWxpc2UtbW9kaWZpZXItdG8tSU5WQUxJRC1mb3ItRFJJMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNGNiZWNiNjE2ODJhMGVlNDI2ZmFhYTAzZDgyNGZjOGZkN2FlZjgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgotRGF0ZTogTW9uLCAyIEFwciAyMDE4IDEzOjIwOjM0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN0L2RyaTogSW5pdGlhbGlzZSBtb2RpZmllciB0byBJTlZBTElEIGZvciBEUkkyCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVdoZW4gYWxsb2NhdGluZyBhIGJ1ZmZlciBmb3IgRFJJMiwgc2V0IHRoZSBtb2RpZmllciB0byBJTlZBTElEIHRvIGluZm9ybQotdGhlIGJhY2tlbmQgdGhhdCB3ZSBoYXZlIG5vIHN1cHBsaWVkIG1vZGlmaWVycyBhbmQgaXQgc2hvdWxkIGRvIGl0cyBvd24KLXRoaW5nLiBUaGUgbWlzc2VkIGluaXRpYWxpc2F0aW9uIGZvcmNlZCBsaW5lYXIsIGV2ZW4gaWYgdGhlCi1pbXBsZW1lbnRhdGlvbiBoYWQgbWFkZSBvdGhlciBkZWNpc2lvbnMuCi0KLVRoaXMgcmVzdWx0ZWQgaW4gVkM0IERSSTIgY2xpZW50cyBmYWlsaW5nIHdpdGg6Ci0gIE1vZGlmaWVyIDB4MCB2cy4gdGlsaW5nICgweDcwMDAwMDAwMDAwMDAwMSkgbWlzbWF0Y2gKLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+Ci1SZXBvcnRlZC1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KLVJldmlld2VkLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgotRml4ZXM6IDNmODUxMzE3MmZmNiAoImdhbGxpdW0vd2luc3lzL2RybTogaW50cm9kdWNlIG1vZGlmaWVyIGZpZWxkIHRvIHdpbnN5c19oYW5kbGUiKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQotCi1bMV0gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD00Y2JlY2I2MTY4MmEwZWU0MjZmYWFhMDNkODI0ZmM4ZmQ3YWVmODI2Ci0tLS0KLSBzcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIGIvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYwotaW5kZXggMzFkMTdkNDZjMi4uNThhNjc1N2YwMyAxMDA2NDQKLS0tLSBhL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKLSsrKyBiL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKLUBAIC04MDYsNiArODA2LDcgQEAgZHJpMl9hbGxvY2F0ZV90ZXh0dXJlcyhzdHJ1Y3QgZHJpX2NvbnRleHQgKmN0eCwKLSAgICAgICAgICB3aGFuZGxlLmhhbmRsZSA9IGJ1Zi0+bmFtZTsKLSAgICAgICAgICB3aGFuZGxlLnN0cmlkZSA9IGJ1Zi0+cGl0Y2g7Ci0gICAgICAgICAgd2hhbmRsZS5vZmZzZXQgPSAwOwotKyAgICAgICAgIHdoYW5kbGUubW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9JTlZBTElEOwotICAgICAgICAgIGlmIChzY3JlZW4tPmNhbl9zaGFyZV9idWZmZXIpCi0gICAgICAgICAgICAgd2hhbmRsZS50eXBlID0gRFJNX0FQSV9IQU5ETEVfVFlQRV9TSEFSRUQ7Ci0gICAgICAgICAgZWxzZQotLS0gCi0yLjE0LjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDliODY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gZDg3NTA3NzY0MDRiMTAzMWQ3NjI5NjZkMGY1NTFkMTNkMmZlMDVhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE4OjU4OjIwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdpbnN5cy9zdmdhL2RybTogSW5jbHVkZSBzeXMvdHlwZXMuaAotCi12bXdfc2NyZWVuLmggdXNlcyBkZXZfdCB3aGljaCBpcyBkZWZpbmVzIGluIHN5cy90eXBlcy5oCi10aGlzIGhlYWRlciBpcyByZXF1aXJlZCB0byBiZSBpbmNsdWRlZCBmb3IgZ2V0dGluZyBkZXZfdAotZGVmaW5pdGlvbi4gVGhpcyBpc3N1ZSBoYXBwZW5zIG9uIG11c2wgQyBsaWJyYXJ5LCBpdCBpcyBoaWRkZW4KLW9uIGdsaWJjIHNpbmNlIHN5cy90eXBlcy5oIGlzIGluY2x1ZGVkIHRocm91Z2ggYW5vdGhlcgotc3lzdGVtIGhlYWRlcnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKLWluZGV4IDBlZjhlODQuLjJlZGE5N2UgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCi0rKysgYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCi1AQCAtNDEsNiArNDEsNyBAQAotICNpbmNsdWRlICJzdmdhX3dpbnN5cy5oIgotICNpbmNsdWRlICJwaXBlYnVmZmVyL3BiX2J1ZmZlcl9mZW5jZWQuaCIKLSAjaW5jbHVkZSA8b3Mvb3NfdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNkZWZpbmUgVk1XX0dNUl9QT09MX1NJWkUgKDE2KjEwMjQqMTAyNCkKLSAjZGVmaW5lIFZNV19RVUVSWV9QT09MX1NJWkUgKDgxOTIpCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMDE0ZGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAwMGJjZDU5OTMxMGRjN2ZjZTRmZTMzNmZmZDg1OTAyNDI5MDUxYTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSWdvciBHbmF0ZW5rbyA8aS5nbmF0ZW5rby5icmFpbkBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDIwIE1hciAyMDE2IDEzOjI3OjA0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBoYXJkd2FyZSBnbG9hdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi1TaWduZWQtb2ZmLWJ5OiBJZ29yIEduYXRlbmtvIDxpLmduYXRlbmtvLmJyYWluQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMgfCA3ICsrKysrKysKLSBzcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jIHwgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYwotaW5kZXggNGY2MWRlOC4uM2IwZWM3NyAxMDA2NDQKLS0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMKLSsrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMKLUBAIC00MTEsNiArNDExLDEzIEBAIGxsdm1waXBlX2lzX2Zvcm1hdF9zdXBwb3J0ZWQoIHN0cnVjdCBwaXBlX3NjcmVlbiAqX3NjcmVlbiwKLSAgICBpZiAoIWZvcm1hdF9kZXNjKQotICAgICAgIHJldHVybiBGQUxTRTsKLSAKLSsgICBpZiAoKGJpbmQgJiBQSVBFX0JJTkRfUkVOREVSX1RBUkdFVCkgJiYKLSsgICAgICAgZm9ybWF0ICE9IFBJUEVfRk9STUFUX1I5RzlCOUU1X0ZMT0FUICYmCi0rICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQgJiYKLSsgICAgICAgdXRpbF9mb3JtYXRfaXNfZmxvYXQoZm9ybWF0KSkgewotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICB9Ci0rCi0gICAgYXNzZXJ0KHRhcmdldCA9PSBQSVBFX0JVRkZFUiB8fAotICAgICAgICAgICB0YXJnZXQgPT0gUElQRV9URVhUVVJFXzFEIHx8Ci0gICAgICAgICAgIHRhcmdldCA9PSBQSVBFX1RFWFRVUkVfMURfQVJSQVkgfHwKLWRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYwotaW5kZXggMDMxNjAyYi4uYzI3OTEyMCAxMDA2NDQKLS0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMKLSsrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMKLUBAIC0zNTgsNiArMzU4LDEzIEBAIHNvZnRwaXBlX2lzX2Zvcm1hdF9zdXBwb3J0ZWQoIHN0cnVjdCBwaXBlX3NjcmVlbiAqc2NyZWVuLAotICAgIGlmICghZm9ybWF0X2Rlc2MpCi0gICAgICAgcmV0dXJuIEZBTFNFOwotIAotKyAgIGlmICgoYmluZCAmIFBJUEVfQklORF9SRU5ERVJfVEFSR0VUKSAmJgotKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjlHOUI5RTVfRkxPQVQgJiYKLSsgICAgICAgZm9ybWF0ICE9IFBJUEVfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCAmJgotKyAgICAgICB1dGlsX2Zvcm1hdF9pc19mbG9hdChmb3JtYXQpKSB7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAgIH0KLSsKLSAgICBpZiAoc2FtcGxlX2NvdW50ID4gMSkKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmIzYmY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNzc5MmYyMjg5OTE3NDRhMDM5NmI4YmY4MTFlMjgxZGNhODYxNjVkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE4OjU4OjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi82XSB3aW5zeXMvc3ZnYS9kcm06IEluY2x1ZGUgc3lzL3R5cGVzLmgKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK3Ztd19zY3JlZW4uaCB1c2VzIGRldl90IHdoaWNoIGlzIGRlZmluZXMgaW4gc3lzL3R5cGVzLmgKK3RoaXMgaGVhZGVyIGlzIHJlcXVpcmVkIHRvIGJlIGluY2x1ZGVkIGZvciBnZXR0aW5nIGRldl90CitkZWZpbml0aW9uLiBUaGlzIGlzc3VlIGhhcHBlbnMgb24gbXVzbCBDIGxpYnJhcnksIGl0IGlzIGhpZGRlbgorb24gZ2xpYmMgc2luY2Ugc3lzL3R5cGVzLmggaXMgaW5jbHVkZWQgdGhyb3VnaCBhbm90aGVyCitzeXN0ZW0gaGVhZGVycworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbN2RmZGZiZjhjMzdlNTJlN2I5YjA5ZjdkMWQ0MzRlZGFkM2ViYzg2NF0KK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBzcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oIGIvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaAoraW5kZXggZjIxY2FiYjUxZi4uNGM5NzJmZGFhOSAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKKysrKyBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKK0BAIC00MSw2ICs0MSw3IEBACisgI2luY2x1ZGUgInN2Z2Ffd2luc3lzLmgiCisgI2luY2x1ZGUgInBpcGVidWZmZXIvcGJfYnVmZmVyX2ZlbmNlZC5oIgorICNpbmNsdWRlIDxvcy9vc190aHJlYWQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2RlZmluZSBWTVdfR01SX1BPT0xfU0laRSAoMTYqMTAyNCoxMDI0KQorICNkZWZpbmUgVk1XX1FVRVJZX1BPT0xfU0laRSAoODE5MikKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1Qcm9wZXJseS1nZXQtTExWTS12ZXJzaW9uLXdoZW4tdXNpbmctTExWTS1HaXQtcmVsZWFzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAzLVByb3Blcmx5LWdldC1MTFZNLXZlcnNpb24td2hlbi11c2luZy1MTFZNLUdpdC1yZWxlYXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3MzVjYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1Qcm9wZXJseS1nZXQtTExWTS12ZXJzaW9uLXdoZW4tdXNpbmctTExWTS1HaXQtcmVsZWFzLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gOGI0MmZiNDcxMzhmOTFkOTM3ODQzOWFiNzE2YmFjNzcwMWU0ZTMyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUdWUsIDUgSnVuIDIwMTggMTE6MTE6MTAgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzZdIFByb3Blcmx5IGdldCBMTFZNIHZlcnNpb24gd2hlbiB1c2luZyBMTFZNIEdpdCByZWxlYXNlcworT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworJCBsbHZtLWNvbmZpZy1ob3N0IC0tdmVyc2lvbgorNS4wLjBnaXQtOWE1YzMzMzM4OGMKKworV2UgbmVlZCB0byBpZ25vcmUgZXZlcnl0aGluZyBhZnRlciA1LjAuMCB3aGljaCBpcyB3aGF0IHRoZSBjdXQgY21kIGlzCitkb2luZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggOTE2ZDBiZDIwNy4uZGQxNzJmMWViZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTA5MCw3ICsxMDkwLDcgQEAgc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncygpIHsKKyAKKyBsbHZtX3NldF9lbnZpcm9ubWVudF92YXJpYWJsZXMoKSB7CisgICAgIGlmIHRlc3QgIngkTExWTV9DT05GSUciICE9IHhubzsgdGhlbgorLSAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgZWdyZXAgLW8gJ15bWzAtOS5dXSsnYAorKyAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAorICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAorICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAorICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKK0BAIC0yODA4LDcgKzI4MDgsNyBAQCBkZXRlY3Rfb2xkX2J1Z2d5X2xsdm0oKSB7CisgICAgIGRubCBvdXJzZWx2ZXMuCisgICAgIGRubCAoU2VlIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMykKKyAgICAgZG5sIFdlIGNhbid0IHVzZSAkTExWTV9WRVJTSU9OIGJlY2F1c2UgaXQgaGFzICdzdm4nIHN0cmlwcGVkIG91dCwKKy0gICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb25gCisrICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAorICAgICBBU19JRihbdGVzdCAtZiAiJExMVk1fTElCRElSL2xpYiRMTFZNX1NPX05BTUUuJElNUF9MSUJfRVhUIl0sIFtsbHZtX2hhdmVfb25lX3NvPXllc10pCisgCisgICAgIGlmIHRlc3QgIngkbGx2bV9oYXZlX29uZV9zbyIgPSB4eWVzOyB0aGVuCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDQtVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDQtVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk1M2M0YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGViZTYwNzdhMWQ3NGU1NmIyODI0OWY3MWU4NzYwMjk1ZmE4NDZlZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxMDoyNzo1OSAtMDIwMAorU3ViamVjdDogW1BBVENIIDQvNl0gVXNlIFB5dGhvbiAzIHRvIGV4ZWN1dGUgdGhlIHNjcmlwdHMKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK1RoZSBNRVNBIGJ1aWxkIHN5c3RlbSB1c2VzIFB5dGhvbiAyIGJ1dCBhcyBPRS1Db3JlIGhhcyBtb3ZlZCBhd2F5IGZyb20KK2l0LCB3ZSBjaGFuZ2UgaXQgdG8gdXNlIFB5dGhvbiAzIGluc3RlYWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIGNvbmZpZ3VyYXRpb24gXQorCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkZDE3MmYxZWJlLi40MGNhYzM2YWMyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMjIsNyArMTIyLDcgQEAgQU1fUFJPR19DQ19DX08KKyBBQ19QUk9HX05NCisgQU1fUFJPR19BUworIEFYX0NIRUNLX0dOVV9NQUtFCistQUNfQ0hFQ0tfUFJPR1MoW1BZVEhPTjJdLCBbcHl0aG9uMi43IHB5dGhvbjIgcHl0aG9uXSkKKytBQ19DSEVDS19QUk9HUyhbUFlUSE9OMl0sIFtweXRob24zLjUgcHl0aG9uMyBweXRob25dKQorIEFDX1BST0dfU0VECisgQUNfUFJPR19NS0RJUl9QCisgCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtZHJpLWk5NjUtQWRkLW1pc3NpbmctdGltZS5oLWluY2x1ZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtZHJpLWk5NjUtQWRkLW1pc3NpbmctdGltZS5oLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwZTdiNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNS1kcmktaTk2NS1BZGQtbWlzc2luZy10aW1lLmgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDllMDM2OGFmNDcxYWYzYTM2ZTBlYjUyNjQ1M2Y4OTI1OTgxMjAwNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogV2VkLCA2IEp1biAyMDE4IDA5OjUwOjM1IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0ggNS82XSBkcmk6IGk5NjU6IEFkZCBtaXNzaW5nIHRpbWUuaCBpbmNsdWRlCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitUaGlzIGZpeGVzIGEgYnVpbGQgZXJyb3Igd2hlbiB1c2luZyBtdXNsOgorCissLS0tLQorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4uL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvaW50ZWxfdXBsb2FkLmM6MzM6MDoKK3wgLi4uL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvYnJ3X2J1Zm1nci5oOjEzMjo0OiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3RpbWVfdCcKK3wgICAgIHRpbWVfdCBmcmVlX3RpbWU7Cit8ICAgICBefn5+fn4KK2AtLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzNjMjg4ZGE1ZWVjODFlZTU4Yjg1OTI3ZGYxOGQ5MTk0ZWFkOGY1YzJdCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9icndfYnVmbWdyLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvYnJ3X2J1Zm1nci5oIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9icndfYnVmbWdyLmgKK2luZGV4IDY4ZjVlMGMyYzguLjViNjBhMjM3NjMgMTAwNjQ0CistLS0gYS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2Jyd19idWZtZ3IuaAorKysrIGIvc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9icndfYnVmbWdyLmgKK0BAIC0zNyw2ICszNyw3IEBACisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSAidXRpbC91X2F0b21pYy5oIgorICNpbmNsdWRlICJ1dGlsL2xpc3QuaCIKKyAKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNi11c2UtUEtHX0NIRUNLX1ZBUi1mb3ItZGVmaW5pbmctV0FZTEFORF9QUk9UT0NPTFNfREFULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA2LXVzZS1QS0dfQ0hFQ0tfVkFSLWZvci1kZWZpbmluZy1XQVlMQU5EX1BST1RPQ09MU19EQVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxMjkyMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNi11c2UtUEtHX0NIRUNLX1ZBUi1mb3ItZGVmaW5pbmctV0FZTEFORF9QUk9UT0NPTFNfREFULnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNzU0Y2NmODlhNzMyZmMzZGE2ZTliYzYyZWJkNmIyODY4NmZmM2QyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBXZWQsIDI5IEF1ZyAyMDE4IDIyOjEwOjMwIC0wMzAwCitTdWJqZWN0OiBbUEFUQ0ggNi82XSB1c2UgUEtHX0NIRUNLX1ZBUiBmb3IgZGVmaW5pbmcgV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUgorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworVGhpcyBhbGxvd3MgdG8gb3ZlcnJpZGUgdGhlIHdheWxhbmQtcHJvdG9jb2xzIHBrZ2RhdGFkaXIgd2l0aCB0aGUKK1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIgZnJvbSBlbnZpcm9ubWVudC4KKworcGtnY29uZmlnIHdvdWxkIHJldHVybiBhbiBhYnNvbHV0ZSBwYXRoIGluCisvdXNyL3NoYXJlL3dheWxhbmQtcHJvdG9jb2xzCitmb3IgdGhlIHBrZ2RhdGFkaXIgdmFsdWUsIHdoaWNoIGlzIG5vdCBzdWl0YWJsZSBmb3IgY3Jvc3MtY29tcGlsaW5nLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDQwY2FjMzZhYzIuLjcyOGJiZGNiYzQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4MjMsNyArMTgyMyw3IEBAIGZvciBwbGF0IGluICRwbGF0Zm9ybXM7IGRvCisgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9DTElFTlRdLCBbd2F5bGFuZC1jbGllbnQgPj0gJFdBWUxBTkRfUkVRVUlSRURdKQorICAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRfU0VSVkVSXSwgW3dheWxhbmQtc2VydmVyID49ICRXQVlMQU5EX1JFUVVJUkVEXSkKKyAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1BST1RPQ09MU10sIFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdKQorLSAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYAorKyAgICAgICAgUEtHX0NIRUNLX1ZBUihbV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUl0sIFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdLCBwa2dkYXRhZGlyKQorIAorICAgICAgICAgQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwgWzpdKQorIAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNGFhYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMThjM2U2ODRhODI1OWEwNjQ0MjE0Zjg4YzdlYWQ3ZmEzMTU3M2ZkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBGcmksIDI5IERlYyAyMDE3IDEwOjI3OjU5IC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBQeXRob24gMyB0byBleGVjdXRlIHRoZSBzY3JpcHRzCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1UaGUgTUVTQSBidWlsZCBzeXN0ZW0gdXNlcyBQeXRob24gMiBidXQgYXMgT0UtQ29yZSBoYXMgbW92ZWQgYXdheSBmcm9tCi1pdCwgd2UgY2hhbmdlIGl0IHRvIHVzZSBQeXRob24gMyBpbnN0ZWFkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBjb25maWd1cmF0aW9uIF0KLQotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjEwN2YwNGMyZS4uMDU1NTQ2MTQyZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTE0LDcgKzExNCw3IEBAIEFDX1BST0dfQ1hYCi0gQU1fUFJPR19DQ19DX08KLSBBTV9QUk9HX0FTCi0gQVhfQ0hFQ0tfR05VX01BS0UKLS1BQ19DSEVDS19QUk9HUyhbUFlUSE9OMl0sIFtweXRob24yLjcgcHl0aG9uMiBweXRob25dKQotK0FDX0NIRUNLX1BST0dTKFtQWVRIT04yXSwgW3B5dGhvbjMuNSBweXRob24zIHB5dGhvbl0pCi0gQUNfUFJPR19TRUQKLSBBQ19QUk9HX01LRElSX1AKLSAKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvZGlzYWJsZS1hc20tb24tbm9uLWdjYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvZGlzYWJsZS1hc20tb24tbm9uLWdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJkNjc1NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Db25maWd1cmUgY2hlY2tzIGZvciBjb21waWxlciB0byBiZSBnY2MgYW5kIHRoZW4gaXQgZW5hYmxlcyBhc21fb2Zmc2V0cwotZ2VuZXJhdGlvbi4gc2VlCi0KLWh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL2NvbW1pdC8/aWQ9NzNjOWI0YjBlMDVmYzY2NjI5YmEyNTA4NDY5NDhkYzU1YzBlN2EwZAotCi1Ib3dldmVyLCB3ZSBtaXNzZWQgdGhlIGNoZWNrIHdoZW4gZW5hYmxpbmcgdGhpcyBvbiBjcm9zcyBjb21waWxhdGlvbgotd2hlbiBhcmNoaXRlY3R1cmUgZm9yIGJvdGggaG9zdCBhbmQgdGFyZ2V0IGlzIHg4NgotCi1GaXhlcyBlcnJvcnMgbGlrZQotLi9nZW5fbWF0eXBlcyA+IG1hdHlwZXMuaAotL2Jpbi9iYXNoOiAuL2dlbl9tYXR5cGVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0KLS1LaGVtCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLUluZGV4OiBtZXNhLTEyLjAuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZXNhLTEyLjAuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIG1lc2EtMTIuMC4xL2NvbmZpZ3VyZS5hYwotQEAgLTczMiw3ICs3MzIsNyBAQCB0ZXN0ICJ4JGVuYWJsZV9hc20iID0geG5vICYmIEFDX01TR19SRVNVCi0gaWYgdGVzdCAieCRlbmFibGVfYXNtIiA9IHh5ZXMgLWEgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KLSAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICBpPzg2IHwgeDg2XzY0IHwgYW1kNjQpCi0tICAgICAgICBpZiB0ZXN0ICJ4JGhvc3RfY3B1IiAhPSAieCR0YXJnZXRfY3B1IjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAieCRob3N0X2NwdSIgIT0gIngkdGFyZ2V0X2NwdSIgLW8gIngkYWN2X21lc2FfQ0xBTkciID0geHllczsgdGhlbgotICAgICAgICAgICAgIGVuYWJsZV9hc209bm8KLSAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtubywgY3Jvc3MgY29tcGlsaW5nXSkKLSAgICAgICAgIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNzk5OTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLVN1YmplY3Q6IFtQQVRDSF0gUHJvcGVybHkgZ2V0IExMVk0gdmVyc2lvbiB3aGVuIHVzaW5nIExMVk0gR2l0IHJlbGVhc2VzCi0KLSQgbGx2bS1jb25maWctaG9zdCAtLXZlcnNpb24KLTUuMC4wZ2l0LTlhNWMzMzMzODhjCi0KLVdlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcwotZG9pbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGEwMjE3M2YyNDQuLmIxMDdmMDRjMmUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk5NSw3ICs5OTUsNyBAQCBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzKCkgewotIAotIGxsdm1fc2V0X2Vudmlyb25tZW50X3ZhcmlhYmxlcygpIHsKLSAgICAgaWYgdGVzdCAieCRMTFZNX0NPTkZJRyIgIT0geG5vOyB0aGVuCi0tICAgICAgICBMTFZNX1ZFUlNJT049YCRMTFZNX0NPTkZJRyAtLXZlcnNpb24gfCBlZ3JlcCAtbyAnXltbMC05Ll1dKydgCi0rICAgICAgICBMTFZNX1ZFUlNJT049YCRMTFZNX0NPTkZJRyAtLXZlcnNpb24gfCBjdXQgLWMxLTVgCi0gICAgICAgICBMTFZNX0NQUEZMQUdTPWBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzICIkTExWTV9DT05GSUcgLS1jcHBmbGFncyJgCi0gICAgICAgICBMTFZNX0lOQ0xVREVESVI9YCRMTFZNX0NPTkZJRyAtLWluY2x1ZGVkaXJgCi0gICAgICAgICBMTFZNX0xJQkRJUj1gJExMVk1fQ09ORklHIC0tbGliZGlyYAotQEAgLTI2NDQsNyArMjY0NCw3IEBAIGRldGVjdF9vbGRfYnVnZ3lfbGx2bSgpIHsKLSAgICAgZG5sIG91cnNlbHZlcy4KLSAgICAgZG5sIChTZWUgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD02ODIzKQotICAgICBkbmwgV2UgY2FuJ3QgdXNlICRMTFZNX1ZFUlNJT04gYmVjYXVzZSBpdCBoYXMgJ3N2bicgc3RyaXBwZWQgb3V0LAotLSAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbmAKLSsgICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb24gfCBjdXQgLWMxLTVgCi0gICAgIEFTX0lGKFt0ZXN0IC1mICIkTExWTV9MSUJESVIvbGliJExMVk1fU09fTkFNRS4kSU1QX0xJQl9FWFQiXSwgW2xsdm1faGF2ZV9vbmVfc289eWVzXSkKLSAKLSAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4zLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTguMS45LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMy44LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTguMS45LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwppbmRleCBiNTAxYjdlLi4wY2MwYTgyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKQEAgLTI5LDEyICsyOSwxNiBAQAogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wgdnVsa2FuIgogCiBQTEFURk9STVMgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAneDExIHdheWxhbmQnLCBkKX0gXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2JtJywgJ2RybScsICcnLCBkKX0iCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAnZHJtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICBzdXJmYWNlbGVzcyIKIAogZXhwb3J0IExMVk1fQ09ORklHID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLWNvbmZpZyR7TUVTQV9MTFZNX1JFTEVBU0V9IgogZXhwb3J0IFlPQ1RPX0FMVEVSTkFURV9FWEVfUEFUSCA9ICIke1NUQUdJTkdfTElCRElSfS9sbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0vbGx2bS1jb25maWciCitleHBvcnQgWU9DVE9fQUxURVJOQVRFX01VTFRJTElCX05BTUUgPSAiJHtiYXNlX2xpYmRpcn0iCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkLWdsYXBpIFwKICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3BlbmNsIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1nbHgtcmVhZC1vbmx5LXRleHQgXAorICAgICAgICAgICAgICAgIFBZVEhPTjI9cHl0aG9uMiBcCiAgICAgICAgICAgICAgICAgLS13aXRoLWxsdm0tcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9L2xsdm0ke01FU0FfTExWTV9SRUxFQVNFfSBcCiAgICAgICAgICAgICAgICAgLS13aXRoLXBsYXRmb3Jtcz0nJHtQTEFURk9STVN9JyIKIApAQCAtNDcsNyArNTEsNyBAQAogIyAiZ2JtIiByZXF1aXJlcyAiZHJpIiwgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbZ2JtXSA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSIKIAotWDExX0RFUFMgPSAieGY4NmRyaXByb3RvIGdscHJvdG8gdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4eGY4NnZtIGxpYnhkYW1hZ2UgbGlieGZpeGVzIgorWDExX0RFUFMgPSAieG9yZ3Byb3RvIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHhmODZ2bSBsaWJ4ZGFtYWdlIGxpYnhmaXhlcyIKICMgIngxMSIgcmVxdWlyZXMgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgtdGxzLC0tZGlzYWJsZS1nbHgsJHtYMTFfREVQU30iCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyIKQEAgLTU3LDggKzYxLDggQEAKIERSSURSSVZFUlNfYXBwZW5kX3g4NiA9ICIscmFkZW9uLHIyMDAsbm91dmVhdSxpOTY1LGk5MTUiCiBEUklEUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgogIyAiZHJpIiByZXF1aXJlcyAib3BlbmdsIgotUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSAtLXdpdGgtZHJpLWRyaXZlcnM9JHtEUklEUklWRVJTfSwgLS1kaXNhYmxlLWRyaSwgZHJpMnByb3RvIGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywgLS1kaXNhYmxlLWRyaTMsIGRyaTNwcm90byBwcmVzZW50cHJvdG8gbGlieHNobWZlbmNlIgorUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSAtLXdpdGgtZHJpLWRyaXZlcnM9JHtEUklEUklWRVJTfSwgLS1kaXNhYmxlLWRyaSwgeG9yZ3Byb3RvIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywgLS1kaXNhYmxlLWRyaTMsIHhvcmdwcm90byBsaWJ4c2htZmVuY2UiCiAKICMgVnVsa2FuIGRyaXZlcnMgbmVlZCBkcmkzIGVuYWJsZWQKICMgcmFkZW9uIGNvdWxkIGJlIGVuYWJsZWQgYXMgd2VsbCBidXQgcmVxdWlyZXMgZ2FsbGl1bS1sbHZtIHdpdGggbGx2bSA+PSAzLjkKQEAgLTg3LDYgKzkxLDggQEAKIEdBTExJVU1EUklWRVJTX0xMVk0gPSAicjMwMCxzdmdhLG5vdXZlYXUke0AnLCR7R0FMTElVTURSSVZFUlNfTExWTTMzfScgaWYgJHtHQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRH0gZWxzZSAnJ30iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCitHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2ID0gIix2aXJnbCIKK0dBTExJVU1EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLHZpcmdsIgogIyBrZWVwIC0td2l0aC1nYWxsaXVtLWRyaXZlcnMgc2VwYXJhdGUsIGJlY2F1c2Ugd2hlbiBvbmx5IG9uZSBvZiBnYWxsaXVtIHZlcnNpb25zIGlzIGVuYWJsZWQsIG90aGVyIDIgd2VyZSBhZGRpbmcgLS13aXRob3V0LWdhbGxpdW0tZHJpdmVycwogUEFDS0FHRUNPTkZJR1tnYWxsaXVtXSAgICAgID0gIi0tZW5hYmxlLXRleHR1cmUtZmxvYXQgLS13aXRoLWdhbGxpdW0tZHJpdmVycz0ke0dBTExJVU1EUklWRVJTfSwgLS13aXRob3V0LWdhbGxpdW0tZHJpdmVycyIKIE1FU0FfTExWTV9SRUxFQVNFID89ICI2LjAiCkBAIC0xMDAsMTAgKzEwNiwxNSBAQAogCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgogCitFWFRSQV9PRUNPTkZfcmVtb3ZlX2xpYmMtbXVzbCA9ICItLWVuYWJsZS1nbHgtdGxzIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1nbHgtdGxzIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2xfeDg2ID0gIiAtLWRpc2FibGUtYXNtIgorCiAjIGxsdm1waXBlIGlzIHNsb3cgaWYgY29tcGlsZWQgd2l0aCAtZm9taXQtZnJhbWUtcG9pbnRlciAoZS5nLiAtTzIpCiBGVUxMX09QVElNSVpBVElPTl9hcHBlbmQgPSAiIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIgogCiBDRkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKK0VYVFJBX09FTUFLRSArPSAiV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUj0ke1NUQUdJTkdfREFUQURJUn0vd2F5bGFuZC1wcm90b2NvbHMiCiAKICMgUmVtb3ZlIHRoZSBtZXNhIGRlcGVuZGVuY3kgb24gbWVzYS1kZXYsIGFzIG1lc2EgaXMgZW1wdHkKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCkBAIC0xMTksNyArMTMwLDYgQEAKICAgICAgICAgICAgICBsaWJnbGVzMS1tZXNhIGxpYmdsZXMxLW1lc2EtZGV2IFwKICAgICAgICAgICAgICBsaWJnbGVzMi1tZXNhIGxpYmdsZXMyLW1lc2EtZGV2IFwKICAgICAgICAgICAgICBsaWJnbGVzMy1tZXNhIGxpYmdsZXMzLW1lc2EtZGV2IFwKLSAgICAgICAgICAgICBsaWJ3YXlsYW5kLWVnbCBsaWJ3YXlsYW5kLWVnbC1kZXYgXAogICAgICAgICAgICAgIGxpYnhhdHJhY2tlciBsaWJ4YXRyYWNrZXItZGV2IFwKICAgICAgICAgICAgICBtZXNhLW1lZ2Fkcml2ZXIgbWVzYS12dWxrYW4tZHJpdmVycyBcCiAgICAgICAgICAgICAiCkBAIC0xMzQsNiArMTQ0LDExIEBACiAgICAgIyBpdCB3YXMgcGFja2FnZWQgaW4gbGliZHJpY29yZTkuMS4zLTEgYW5kIHByZXZlbnRpbmcgdXBncmFkZXMgd2hlbiBkZWJpYW4uYmJjbGFzcyB3YXMgdXNlZCAKICAgICBybSAtZiAke0R9JHtzeXNjb25mZGlyfS9kcmlyYwogICAgIGNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS9kcmkvKl9kcmkuc28gfHwgdHJ1ZQorCisgICAgIyBsaWJ3YXlsYW5kLWVnbCBoYXMgYmVlbiBtb3ZlZCB0byB3YXlsYW5kIDEuMTUrCisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJ3YXlsYW5kLWVnbCoKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLWVnbC5wYworICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCiB9CiAKICMgRm9yIHRoZSBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIE9wZW5HTCBpbnRlcmZhY2VzLCBpbmplY3QgdmFyaWFibGVzIHNvIHRoYXQKQEAgLTIwNCw3ICsyMTksNiBAQAogRklMRVNfbGliZ2wtbWVzYSA9ICIke2xpYmRpcn0vbGliR0wuc28uKiIKIEZJTEVTX2xpYmdsYXBpID0gIiR7bGliZGlyfS9saWJnbGFwaS5zby4qIgogRklMRVNfbGlib3NtZXNhID0gIiR7bGliZGlyfS9saWJPU01lc2Euc28uKiIKLUZJTEVTX2xpYndheWxhbmQtZWdsID0gIiR7bGliZGlyfS9saWJ3YXlsYW5kLWVnbC5zby4qIgogRklMRVNfbGlieGF0cmFja2VyID0gIiR7bGliZGlyfS9saWJ4YXRyYWNrZXIuc28uKiIKIAogRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9wa2djb25maWcvZHJpLnBjICR7aW5jbHVkZWRpcn0vdnVsa2FuIgpAQCAtMjE2LDcgKzIzMCw2IEBACiBGSUxFU19saWJnbGVzMi1tZXNhLWRldiA9ICIke2xpYmRpcn0vbGliR0xFU3YyLiogJHtpbmNsdWRlZGlyfS9HTEVTMiAke2xpYmRpcn0vcGtnY29uZmlnL2dsZXN2Mi5wYyIKIEZJTEVTX2xpYmdsZXMzLW1lc2EtZGV2ID0gIiR7aW5jbHVkZWRpcn0vR0xFUzMiCiBGSUxFU19saWJvc21lc2EtZGV2ID0gIiR7bGliZGlyfS9saWJPU01lc2EuKiAke2luY2x1ZGVkaXJ9L0dML29zbWVzYS5oICR7bGliZGlyfS9wa2djb25maWcvb3NtZXNhLnBjIgotRklMRVNfbGlid2F5bGFuZC1lZ2wtZGV2ID0gIiR7bGliZGlyfS9wa2djb25maWcvd2F5bGFuZC1lZ2wucGMgJHtsaWJkaXJ9L2xpYndheWxhbmQtZWdsLioiCiBGSUxFU19saWJ4YXRyYWNrZXItZGV2ID0gIiR7bGliZGlyfS9saWJ4YXRyYWNrZXIuc28gJHtsaWJkaXJ9L2xpYnhhdHJhY2tlci5sYSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0veGFfdHJhY2tlci5oICR7aW5jbHVkZWRpcn0veGFfY29tcG9zaXRlLmggJHtpbmNsdWRlZGlyfS94YV9jb250ZXh0LmggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL3hhdHJhY2tlci5wYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4zLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDNmZDNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4zLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1hc20tb24tbm9uLWdjYy5wYXRjaCBcCi0JICAgZmlsZTovL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjAzZDFhNzkxNTZhYjY5MjZmMmQyNTNiMzc3ZTlkOWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGY5ZDliZjI4MWM0OGU0YThmNTIyODgxNjU3NzI2M2I0YzY1NTI0OGRjNzY2NmU3NTAzNGFiNDIyOTUxYTZiMSIKLQotI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCi0jbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOC4xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTguMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZDZhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTguMS45LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgJHtCUE59LmluYworCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNpbXBsaWZ5LXdheWxhbmQtc2Nhbm5lci1sb29rdXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVByb3Blcmx5LWdldC1MTFZNLXZlcnNpb24td2hlbi11c2luZy1MTFZNLUdpdC1yZWxlYXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRyaS1pOTY1LUFkZC1taXNzaW5nLXRpbWUuaC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtdXNlLVBLR19DSEVDS19WQVItZm9yLWRlZmluaW5nLVdBWUxBTkRfUFJPVE9DT0xTX0RBVC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZjhkMjA5OGFiNDc4YmMzOTA3ZTQyMTMwNTc3YjU0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWY1Nzc4ZDU4YTcxMGE2M2Q2NjM1ZjAwMDUzNTc2OGZhZjdkYjllODE0NGRjMGY0ZmQxOTg5ZjkzNmMxYTgzIgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTE2MjZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi1Gcm9tIDg2N2E1MTJlZGRiZWIxODk5ZDNlNzA5NmRmM2RhMWRkMGNlM2U3YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMTQ6MDY6MTcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRHJvcCBpbnRyb3NwZWN0aW9uIG1hY3JvcyBmcm9tIGFjaW5jbHVkZS5tNAotCi1UaGV5IHRha2UgcHJlY2VuZGVuY2Ugb3ZlciBvdXIgY3VzdG9taXplZCBtYWNyb3MsIGFuZCBzbwotaW50cm9zcGVjdGlvbiBkb2Vzbid0IHdvcmsgY29ycmVjdGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFt1cHN0cmVhbSA1Y2NmZTBdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGFjaW5jbHVkZS5tNCB8IDk2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5NiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggODg5OWM3Yy4uNDhmZDVkOCAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtNTUsOTkgKzU1LDMgQEAgQUNfREVGVU4oW0pIX0NIRUNLX1hNTF9DQVRBTE9HXSwKLSBdKQotIAotIAotLWRubCBSRU1PVkUgVEhJUyBXSEVOIGludHJvc3BlY3Rpb24ubTQgaXMgd2lkZWx5IGF2YWlsYWJsZQotLWRubAotLWRubCAtKi0gbW9kZTogYXV0b2NvbmYgLSotCi0tZG5sIENvcHlyaWdodCAyMDA5IEpvaGFuIERhaGxpbgotLWRubAotLWRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIGF1dGhvcihzKSBnaXZlcyB1bmxpbWl0ZWQKLS1kbmwgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLS1kbmwgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0tZG5sCi0tCi0tIyBzZXJpYWwgMQotLQotLW00X2RlZmluZShbX0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS19JTlRFUk5BTF0sCi0tWwotLSAgICBBQ19CRUZPUkUoW0FDX1BST0dfTElCVE9PTF0sWyQwXSlkbmwgc2V0dXAgbGlidG9vbCBmaXJzdAotLSAgICBBQ19CRUZPUkUoW0FNX1BST0dfTElCVE9PTF0sWyQwXSlkbmwgc2V0dXAgbGlidG9vbCBmaXJzdAotLSAgICBBQ19CRUZPUkUoW0xUX0lOSVRdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLS0KLS0gICAgZG5sIGVuYWJsZS9kaXNhYmxlIGludHJvc3BlY3Rpb24KLS0gICAgbTRfaWYoWyQyXSwgW3JlcXVpcmVdLAotLSAgICBbZG5sCi0tICAgICAgICBlbmFibGVfaW50cm9zcGVjdGlvbj15ZXMKLS0gICAgXSxbZG5sCi0tICAgICAgICBBQ19BUkdfRU5BQkxFKGludHJvc3BlY3Rpb24sCi0tICAgICAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWludHJvc3BlY3Rpb25bPUA8OkBuby9hdXRvL3llc0A6PkBdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRW5hYmxlIGludHJvc3BlY3Rpb24gZm9yIHRoaXMgYnVpbGRdKSwsIAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVfaW50cm9zcGVjdGlvbj1hdXRvXSkKLS0gICAgXSlkbmwKLS0KLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ29iamVjdC1pbnRyb3NwZWN0aW9uXSkKLS0KLS0gICAgZG5sIHByZXNlbmNlL3ZlcnNpb24gY2hlY2tpbmcKLS0gICAgQVNfQ0FTRShbJGVuYWJsZV9pbnRyb3NwZWN0aW9uXSwKLS0gICAgW25vXSwgW2RubAotLSAgICAgICAgZm91bmRfaW50cm9zcGVjdGlvbj0ibm8gKGRpc2FibGVkLCB1c2UgLS1lbmFibGUtaW50cm9zcGVjdGlvbiB0byBlbmFibGUpIgotLSAgICBdLGRubAotLSAgICBbeWVzXSxbZG5sCi0tICAgICAgICBQS0dfQ0hFQ0tfRVhJU1RTKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wXSwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCBpcyBub3QgaW5zdGFsbGVkXSkpCi0tICAgICAgICBQS0dfQ0hFQ0tfRVhJU1RTKFtnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wID49ICQxXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfaW50cm9zcGVjdGlvbj15ZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihbWW91IG5lZWQgdG8gaGF2ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gPj0gJDEgaW5zdGFsbGVkIHRvIGJ1aWxkIEFDX1BBQ0tBR0VfTkFNRV0pKQotLSAgICBdLGRubAotLSAgICBbYXV0b10sW2RubAotLSAgICAgICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCA+PSAkMV0sIGZvdW5kX2ludHJvc3BlY3Rpb249eWVzLCBmb3VuZF9pbnRyb3NwZWN0aW9uPW5vKQotLSAgICBdLGRubAotLSAgICBbZG5sCQotLSAgICAgICAgQUNfTVNHX0VSUk9SKFtpbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uLCBzaG91bGQgYmUgb25lIG9mIEA8OkBuby9hdXRvL3llc0A6PkBdKQotLSAgICBdKWRubAotLQotLSAgICBBQ19NU0dfUkVTVUxUKFskZm91bmRfaW50cm9zcGVjdGlvbl0pCi0tCi0tICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj0KLS0gICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0KLS0gICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0KLS0gICAgSU5UUk9TUEVDVElPTl9HSVJESVI9Ci0tICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0KLS0gICAgaWYgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIjsgdGhlbgotLSAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0dFTkVSQVRFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0tICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0tICAgIGZpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9DT01QSUxFUikKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9HRU5FUkFURSkKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9HSVJESVIpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUikKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9DRkxBR1MpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fTElCUykKLS0gICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9NQUtFRklMRSkKLS0KLS0gICAgQU1fQ09ORElUSU9OQUwoSEFWRV9JTlRST1NQRUNUSU9OLCB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiKQotLV0pCi0tCi0tCi0tZG5sIFVzYWdlOgotLWRubCAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbbWluaW11bS1nLWktdmVyc2lvbl0pCi0tCi0tQUNfREVGVU4oW0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS10sCi0tWwotLSAgX0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS19JTlRFUk5BTChbJDFdKQotLV0pCi0tCi0tZG5sIFVzYWdlOgotLWRubCAgIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9SRVFVSVJFKFttaW5pbXVtLWctaS12ZXJzaW9uXSkKLS0KLS0KLS1BQ19ERUZVTihbR09CSkVDVF9JTlRST1NQRUNUSU9OX1JFUVVJUkVdLAotLVsKLS0gIF9HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUwoWyQxXSwgW3JlcXVpcmVdKQotLV0pCi0tLSAKLTIuMS40CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JkOWM2NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCi1ERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCi13aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCi10aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCi1iZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCi1jb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKLSIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjE4ZDdlYjhkNTJlN2U0NDVlNzMzYzEwOWRkYWE3Yjc4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOTBhZjFiZWFhN2JmOWU0YzUyZGIyOWVjMjUxZWM0ZmQwYThmMmNjMTg1ZDUyMWFkMWY4OGQwMWIzYTZhMTdlMyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14ZnQsLS13aXRob3V0LXhmdCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZnQiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKLQkgICAgICAgICIKLQotTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKLUxJQlYgPSAiMS44LjAiCi0KLSMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKLQlmaQotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKLSAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJmZTNhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDIuNC5iYgpAQCAtMCwwICsxLDQ1IEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLXJlY3JlYXRpb24tb2YtZG9jcy1wYW5nby50eXBlcy1pdC1pcy1idWlsZC1jLnBhdGNoIFwKKyIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRlYjE3MWEzMWEzYWQ3NjM0MmQ1MTk1YTFiNWJiYzdjIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMWQyYjc0Y2Q2M2U4YmQ0MTk2MWYyZjhkOTUyMzU1YWEwZjliZTYwMDJiNTJjOGFhNzY5OWQ5ZjVkYTU5N2M5ZCIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZm9udGNvbmZpZyBmcmVldHlwZSB2aXJ0dWFsL2xpYmljb252IGNhaXJvIGhhcmZidXp6IGZyaWJpZGkiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKKworTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKK0xJQlYgPSAiMS44LjAiCisKKyMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKKwlmaQorfQorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKKyAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtY21ha2UtdXNlLXByb3Blci1XQVlMQU5EX0lOQ0xVREVfRElSUy12YXJpYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS1jbWFrZS11c2UtcHJvcGVyLVdBWUxBTkRfSU5DTFVERV9ESVJTLXZhcmlhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNmVjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtY21ha2UtdXNlLXByb3Blci1XQVlMQU5EX0lOQ0xVREVfRElSUy12YXJpYWJsZS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDNiZjFiZWVlMWRkZDE5YmM1MzZmZjI4NTZlMDRhYzI2OWQ0M2RhYTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CitEYXRlOiBUaHUsIDQgT2N0IDIwMTggMTQ6NDM6MTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IHVzZSBwcm9wZXIgV0FZTEFORF9JTkNMVURFX0RJUlMgdmFyaWFibGUKKworV0FZTEFORF93YXlsYW5kLWNsaWVudF9JTkNMVURFRElSIGlzIGFuIGludGVybmFsIHZhcmlhYmxlIGFuZCBpcyBub3QgY29ycmVjdGx5CitzZXQgd2hlbiBjcm9zcyBjb21waWxpbmcuIFdBWUxBTkRfSU5DTFVERV9ESVJTIGluY2x1ZGVzIHRoZSBjb3JyZWN0IHBhdGggZXZlbgord2hlbiBjcm9zcyBjb21waWxpbmcuCisKK1NpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW3BpZ2xpdEBsaXN0cy5mcmVlZGVza3RvcC5vcmddCistLS0KKyB0ZXN0cy91dGlsL0NNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQKK2luZGV4IGE1ZjA4MDE1Ni4uYTMwM2E5ZjU4IDEwMDY0NAorLS0tIGEvdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dAorKysrIGIvdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dAorQEAgLTk3LDcgKzk3LDcgQEAgaWYoUElHTElUX1VTRV9XQUZGTEUpCisgCQkJcGlnbGl0LWZyYW1ld29yay1nbC9waWdsaXRfd2xfZnJhbWV3b3JrLmMKKyAJCSkKKyAJCWxpc3QoQVBQRU5EIFVUSUxfR0xfSU5DTFVERVMKKy0JCQkke1dBWUxBTkRfd2F5bGFuZC1jbGllbnRfSU5DTFVERURJUn0KKysJCQkke1dBWUxBTkRfSU5DTFVERV9ESVJTfQorIAkJKQorIAllbmRpZigpCisgCWlmKFBJR0xJVF9IQVNfWDExKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCBiOTM2YWQ4Li45ZTQ1NzUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgpAQCAtNSwxMSArNSwxMiBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9waWdsaXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1pbnN0YWxsLWJhc2gtY29tcGxldGlvbnMtaW4tdGhlLXJpZ2h0LXBsYWNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtVXNlLUZFX1VQV0FSRC1vbmx5LWlmLWl0cy1kZWZpbmVkLWluLWZlbnYuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLXVzZS1wcm9wZXItV0FZTEFORF9JTkNMVURFX0RJUlMtdmFyaWFibGUucGF0Y2ggXAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLSMgRnJvbSAyMDE4LTAyLTI2Ci1TUkNSRVYgPSAiNGNlMDg4N2UyZjdmODQ4ZDJiZTJlNDM1YTJkMGYzYzgwZTQ0ZWEzYiIKKyMgRnJvbSAyMDE4LTA4LTEzCitTUkNSRVYgPSAiNTc4NTllMTVkYzhiYTQwMzQzNDhiMDRkMGI3MmYyMTNiNzRkNjM0NyIKICMgKHdoZW4gUFYgZ29lcyBhYm92ZSAxLjAgcmVtb3ZlIHRoZSB0cmFpbGluZyByKQogUFYgPSAiMS4wK2dpdHIke1NSQ1BWfSIKIApAQCAtMTcsNyArMTgsNyBAQAogCiBERVBFTkRTID0gImxpYnBuZyB2aXJ0dWFsL2xpYngxMSBsaWJ4a2Jjb21tb24gbGlieHJlbmRlciB3YWZmbGUgdmlydHVhbC9saWJnbCBsaWJnbHUgcHl0aG9uMy1tYWtvLW5hdGl2ZSBweXRob24zLW51bXB5LW5hdGl2ZSBweXRob24zLXNpeC1uYXRpdmUgdmlydHVhbC9lZ2wiCiAKLWluaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYmFzaC1jb21wbGV0aW9uCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayBiYXNoLWNvbXBsZXRpb24KICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaAppbmRleCBkMzJjOGYyLi45M2JjZmJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gNTU3NzBmYjA3YzQyZmU0MTBjZjhkMDlmOGY1OTc2YmFiYzg5YjllZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDQgSnVsIDIwMTcgMTc6MTM6NDUgKzAzMDAKK0Zyb20gMGEyNzE0NGQ0M2I3MDEyMWY1N2Y2MDM2NTE0ZDA2OWNhOWQyYjk3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE3OjIzOjI5ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIGRlbW9zIHdpdGggcXVlc3Rpb25hYmx5IGxpY2Vuc2VkIGRhdGEKIAogU29tZSBvZiB0aGUgbW9kZWxzIGRvbid0IGhhdmUgb3BlbiBzb3VyY2UgY29tcGF0aWJsZSBsaWNlbnNlczoKQEAgLTksNDMgKzksNDYgQEAKIAogc3NhbzoKIHNjZW5lcmVuZGVyaW5nOgotCVNpYmVuaWsgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKKyAgICAgICAgU2liZW5payBtb2RlbCwgbm8gbGljZW5zZSBmb3VuZAogCiBkZWZlcnJlZDoKIGRlZmVycmVkbXVsdGlzYW1wbGluZzoKIGRlZmVycmVkc2hhZG93czoKLQlhcm1vciBtb2RlbCwgQ0MtQlktMy4wCisgICAgICAgIGFybW9yIG1vZGVsLCBDQy1CWS0zLjAKIAogdnVsa2Fuc2NlbmU6CiBpbWd1aToKIHNoYWRvd21hcHBpbmc6Ci0JdnVsa2Fuc2NlbmUgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKKyAgICAgICAgdnVsa2Fuc2NlbmUgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKIAogaW5kaXJlY3RkcmF3OgotCXBsYW50IG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisgICAgICAgIHBsYW50IG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCiAKIGhkcjoKIHBicmlibDoKIHBicnRleHR1cmU6Ci0JUmVxdWlyZSBleHRlcm5hbCBWdWxrYW4gQXNzZXQgUGFjaworICAgICAgICBSZXF1aXJlIGV4dGVybmFsIFZ1bGthbiBBc3NldCBQYWNrCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDEzIC0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA0OTU4ZmZmLi4wZjlkM2U0IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTUwLDE3ICsxNTAsMTEgQEAgc2V0KEVYQU1QTEVTCi0gCWNvbXB1dGVwYXJ0aWNsZXMKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGV4YW1wbGVzL0NNYWtlTGlzdHMudHh0IHwgMTQgLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dCBiL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0CitpbmRleCA4ZWVlM2E0Li42OThkM2IzIDEwMDY0NAorLS0tIGEvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0CitAQCAtNDcsMTggKzQ3LDEyIEBAIHNldChFWEFNUExFUwogIAljb21wdXRlc2hhZGVyCisgCWNvbnNlcnZhdGl2ZXJhc3RlcgogIAlkZWJ1Z21hcmtlcgogLQlkZWZlcnJlZAogLQlkZWZlcnJlZG11bHRpc2FtcGxpbmcKIC0JZGVmZXJyZWRzaGFkb3dzCisgCWRlc2NyaXB0b3JzZXRzCiAgCWRpc3BsYWNlbWVudAogIAlkaXN0YW5jZWZpZWxkZm9udHMKICAJZHluYW1pY3VuaWZvcm1idWZmZXIKQEAgLTUzLDMyICs1NiwzNiBAQAogIAlnZW9tZXRyeXNoYWRlcgogLQloZHIKIC0JaW1ndWkKLS0JaW5kaXJlY3RkcmF3CQorLQlpbmRpcmVjdGRyYXcKKyAJaW5wdXRhdHRhY2htZW50cwogIAlpbnN0YW5jaW5nCiAgCW1lc2gKLSAJbXVsdGlzYW1wbGluZwotQEAgLTE3MCwyMCArMTY0LDE0IEBAIHNldChFWEFNUExFUworQEAgLTcwLDggKzY0LDYgQEAgc2V0KEVYQU1QTEVTCiAgCXBhcmFsbGF4bWFwcGluZwogIAlwYXJ0aWNsZWZpcmUKICAJcGJyYmFzaWMKIC0JcGJyaWJsCiAtCXBicnRleHR1cmUKICAJcGlwZWxpbmVzCisgCXBpcGVsaW5lc3RhdGlzdGljcwogIAlwdXNoY29uc3RhbnRzCitAQCAtNzksMTUgKzcxLDEwIEBAIHNldChFWEFNUExFUwogIAlyYWRpYWxibHVyCiAgCXJheXRyYWNpbmcKKyAJcmVuZGVyaGVhZGxlc3MKIC0Jc2NlbmVyZW5kZXJpbmcKICAJc2NyZWVuc2hvdAogLQlzaGFkb3dtYXBwaW5nCiAtCXNoYWRvd21hcHBpbmdvbW5pCistCXNoYWRvd21hcHBpbmdjYXNjYWRlCiAgCXNrZWxldGFsYW5pbWF0aW9uCiAgCXNwZWNpYWxpemF0aW9uY29uc3RhbnRzCiAgCXNwaGVyaWNhbGVudm1hcHBpbmcKIC0Jc3NhbworIAlzdGVuY2lsYnVmZmVyCiAgCXN1YnBhc3NlcwogIAl0ZXJyYWludGVzc2VsbGF0aW9uCi0gCXRlc3NlbGxhdGlvbgotQEAgLTE5Niw3ICsxODQsNiBAQCBzZXQoRVhBTVBMRVMKK0BAIC0xMDEsNyArODgsNiBAQCBzZXQoRVhBTVBMRVMKICAJdGV4dHVyZXNwYXJzZXJlc2lkZW5jeQogIAl0cmlhbmdsZQogIAl2aWV3cG9ydGFycmF5CkBAIC04Nyw1ICs5NCw1IEBACiAgCiAgYnVpbGRFeGFtcGxlcygpCiAtLSAKLTIuMTMuMgorMi40LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLUZpeC1idWlsZC1vbi14ODYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgxYjM0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gYjA0OTVlZmI2YzNlYTNhNTMwZmNiYWRkYWM4NmRhNTdlY2NlNWE2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDEwIEp1bCAyMDE3IDEzOjExOjEyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiB4ODYKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotfMKgZnVuY19jb21tb24uaW5sOjE5Mzo1MTogZXJyb3I6IHdyb25nIG51bWJlciBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMKLXzCoCg1LCBzaG91bGQgYmUgNikgc3RydWN0IGNvbXB1dGVfc2lnbjxULCBQLCB2ZWNUeXBlLCBmYWxzZSwgQWxpZ25lZD4KLQotVGhlIGZpeCBpcyBiYWNrcG9ydGVkIGZyb20gdGhlIHVwc3RyZWFtIGdsbSBwcm9qZWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vZ2l0aHViLmNvbS9TYXNjaGFXaWxsZW1zL1Z1bGthbi9pc3N1ZXMvMzU2XQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGV4dGVybmFsL2dsbS9nbG0vZGV0YWlsL2Z1bmNfY29tbW9uLmlubCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwgYi9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKLWluZGV4IGNhZmFlZDUuLjJkZDk0ZTEgMTAwNjQ0Ci0tLS0gYS9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKLSsrKyBiL2V4dGVybmFsL2dsbS9nbG0vZGV0YWlsL2Z1bmNfY29tbW9uLmlubAotQEAgLTE5MCwxMiArMTkwLDEyIEBAIG5hbWVzcGFjZSBkZXRhaWwKLSAKLSAjCWlmIEdMTV9BUkNIID09IEdMTV9BUkNIX1g4NgotIAl0ZW1wbGF0ZTxsZW5ndGhfdCBMLCB0eXBlbmFtZSBULCBwcmVjaXNpb24gUCwgdGVtcGxhdGU8bGVuZ3RoX3QsIHR5cGVuYW1lLCBwcmVjaXNpb24+IGNsYXNzIHZlY1R5cGUsIGJvb2wgQWxpZ25lZD4KLS0Jc3RydWN0IGNvbXB1dGVfc2lnbjxULCBQLCB2ZWNUeXBlLCBmYWxzZSwgQWxpZ25lZD4KLSsJc3RydWN0IGNvbXB1dGVfc2lnbjxMLCBULCBQLCB2ZWNUeXBlLCBmYWxzZSwgQWxpZ25lZD4KLSAJewotIAkJR0xNX0ZVTkNfUVVBTElGSUVSIHN0YXRpYyB2ZWNUeXBlPEwsIFQsIFA+IGNhbGwodmVjVHlwZTxMLCBULCBQPiBjb25zdCAmIHgpCi0gCQl7Ci0gCQkJVCBjb25zdCBTaGlmdChzdGF0aWNfY2FzdDxUPihzaXplb2YoVCkgKiA4IC0gMSkpOwotLQkJCXZlY1R5cGU8TCwgVCwgUD4gY29uc3QgeSh2ZWNUeXBlPHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUsIFA+KC14KSA+PiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlKFNoaWZ0KSk7Ci0rCQkJdmVjVHlwZTxMLCBULCBQPiBjb25zdCB5KHZlY1R5cGU8TCwgdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZSwgUD4oLXgpID4+IHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUoU2hpZnQpKTsKLSAKLSAJCQlyZXR1cm4gKHggPj4gU2hpZnQpIHwgeTsKLSAJCX0KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1TdXBwb3J0LWluc3RhbGxpbmctZGVtb3Mtc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZGRlYTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLVN1cHBvcnQtaW5zdGFsbGluZy1kZW1vcy1zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gZWRjYTY2NzY4NDc2NGNmY2MwNDYwZTQ0OGU4MzRmYWRmNjIzYTg4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDMgSnVsIDIwMTcgMTQ6NDk6MTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBpbnN0YWxsaW5nIGRlbW9zLCBzdXBwb3J0IG91dC1vZi10cmVlIGJ1aWxkcwotCi1UaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBjcm9zcy1jb21waWxlIHNpdHVhdGlvbiB3aGVyZSB0ZXN0aW5nCi1oYXBwZW5zIG9uIHRhcmdldC4KLQotLURSRVNPVVJDRV9JTlNUQUxMX0RJUj08cGF0aD4gZGVjaWRlcyB3aGVyZSBkYXRhIGlzIGluc3RhbGxlZCAoYW5kCi13aGVyZSB0aGUgYmluYXJpZXMgd2lsbCBsb2FkIHRoZSBkYXRhIGZyb20pOiBpZiBpdCdzIGxlZnQgZW1wdHksCi10aGVuIG5vdGhpbmcgd2lsbCBiZSBpbnN0YWxsZWQgYW5kIGJpbmFyaWVzIHdpbGwgbG9hZCB0aGUgZGF0YSBmcm9tCi1DTUFLRV9TT1VSQ0VfRElSLgotCi1CaW5hcmllcyBhcmUgbm93IGNvcnJlY3RseSBidWlsdCBpbiBDTUFLRV9CSU5BUllfRElSLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuL3B1bGwvMzUyXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKystCi0gYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGI5ODg2YmMuLjQ5NThmZmYgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0xNiw2ICsxNiw4IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoYmFzZSkKLSBPUFRJT04oVVNFX0QyRF9XU0kgIkJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIERpcmVjdCB0byBEaXNwbGF5IHN3YXBjaGFpbiIgT0ZGKQotIE9QVElPTihVU0VfV0FZTEFORF9XU0kgIkJ1aWxkIHRoZSBwcm9qZWN0IHVzaW5nIFdheWxhbmQgc3dhcGNoYWluIiBPRkYpCi0gCi0rc2V0KFJFU09VUkNFX0lOU1RBTExfRElSICIiIENBQ0hFIFBBVEggIlBhdGggdG8gaW5zdGFsbCByZXNvdXJjZXMgdG8gKGxlYXZlIGVtcHR5IGZvciBydW5uaW5nIHVuaW5zdGFsbGVkKSIpCi0rCi0gIyBVc2UgRmluZFZ1bGthbiBtb2R1bGUgYWRkZWQgd2l0aCBDTUFLRSAzLjcKLSBpZiAoTk9UIENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuNy4wKQotIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgbW9kdWxlIHRvIGZpbmQgVnVsa2FuIikKLUBAIC0xMDgsNiArMTEwLDEwIEBAIGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZSBFWEFNUExFX05BTUUpCi0gCQlhZGRfZXhlY3V0YWJsZSgke0VYQU1QTEVfTkFNRX0gJHtNQUlOX0NQUH0gJHtTT1VSQ0V9ICR7U0hBREVSU30pCi0gCQl0YXJnZXRfbGlua19saWJyYXJpZXMoJHtFWEFNUExFX05BTUV9ICR7VnVsa2FuX0xJQlJBUll9ICR7QVNTSU1QX0xJQlJBUklFU30gJHtXQVlMQU5EX0NMSUVOVF9MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCi0gCWVuZGlmKFdJTjMyKQotKwotKwlpZihSRVNPVVJDRV9JTlNUQUxMX0RJUikKLSsJCWluc3RhbGwoVEFSR0VUUyAke0VYQU1QTEVfTkFNRX0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCi0rCWVuZGlmKCkKLSBlbmRmdW5jdGlvbihidWlsZEV4YW1wbGUpCi0gCi0gIyBCdWlsZCBhbGwgZXhhbXBsZXMKLUBAIC0xMTcsNiArMTIzLDEzIEBAIGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZXMpCi0gCWVuZGZvcmVhY2goRVhBTVBMRSkKLSBlbmRmdW5jdGlvbihidWlsZEV4YW1wbGVzKQotIAotK2lmKFJFU09VUkNFX0lOU1RBTExfRElSKQotKwlhZGRfZGVmaW5pdGlvbnMoLURWS19FWEFNUExFX0RBVEFfRElSPVwiJHtSRVNPVVJDRV9JTlNUQUxMX0RJUn0vXCIpCi0rCWluc3RhbGwoRElSRUNUT1JZIGRhdGEvIERFU1RJTkFUSU9OICR7UkVTT1VSQ0VfSU5TVEFMTF9ESVJ9LykKLStlbHNlKCkKLSsJYWRkX2RlZmluaXRpb25zKC1EVktfRVhBTVBMRV9EQVRBX0RJUj1cIiR7Q01BS0VfU09VUkNFX0RJUn0vZGF0YS9cIikKLStlbmRpZigpCi0rCi0gIyBDb21waWxlciBzcGVjaWZpYyBzdHVmZgotIElGKE1TVkMpCi0gCVNFVChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAvRUhzYyIpCi1AQCAtMTI4LDcgKzE0MSw3IEBAIEVMU0UoV0lOMzIpCi0gCWxpbmtfbGlicmFyaWVzKCR7WENCX0xJQlJBUklFU30gJHtWdWxrYW5fTElCUkFSWX0pCi0gRU5ESUYoV0lOMzIpCi0gCi0tc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9TT1VSQ0VfRElSfS9iaW4vIikKLStzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9L2Jpbi8iKQotIAotIHNldChFWEFNUExFUyAKLSAJYmxvb20KLWRpZmYgLS1naXQgYS9iYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcCBiL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCi1pbmRleCA2NDczNjhhLi5hMGYyOGE1IDEwMDY0NAotLS0tIGEvYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAKLSsrKyBiL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCi1AQCAtODQsNyArODQsNyBAQCBjb25zdCBzdGQ6OnN0cmluZyBWdWxrYW5FeGFtcGxlQmFzZTo6Z2V0QXNzZXRQYXRoKCkKLSAjaWYgZGVmaW5lZChfX0FORFJPSURfXykKLSAJcmV0dXJuICIiOwotICNlbHNlCi0tCXJldHVybiAiLi8uLi9kYXRhLyI7Ci0rCXJldHVybiBWS19FWEFNUExFX0RBVEFfRElSOwotICNlbmRpZgotIH0KLSAjZW5kaWYKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKaW5kZXggNWZjOWMyZC4uYmYzMGM5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKQEAgLTMsMTUgKzMsMTggQEAKIERFUEVORFMgPSAiemxpYiIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGNmNDczNzIzZmFhYmYxN2JhYTliNWYyMjA3NTk5ZDAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpYW5nbGUvdHJpYW5nbGUuY3BwO2VuZGxpbmU9MTI7bWQ1PWJjY2QxYmY5Y2FkZDllMTAwODZjZjc4NzIxNTdlNGZhIgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXhhbXBsZXMvdHJpYW5nbGUvdHJpYW5nbGUuY3BwO2VuZGxpbmU9MTI7bWQ1PWJjY2QxYmY5Y2FkZDllMTAwODZjZjc4NzIxNTdlNGZhIgorCitTUkNSRVZfZ2xtID0gIjAxZjlhYjViNmQyMWU1MDYyYWMwZjZlMGYyMDVjN2ZhMmNhOWQ3NjkiCitTUkNSRVZfZ2xpID0gIjhlNDMwMzBiM2UxMmJiNThhNDY2M2Q4NWFkYzVjNzUyZjg5MDk5YzAiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9TYXNjaGFXaWxsZW1zL1Z1bGthbi5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LWluc3RhbGxpbmctZGVtb3Mtc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG07ZGVzdHN1ZmZpeD1naXQvZXh0ZXJuYWwvZ2xtO25hbWU9Z2xtIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xpO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2dsaTtuYW1lPWdsaSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIFwKICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLVNSQ1JFViA9ICIxOGRmMDBjN2I0Njc3YjA4ODk0ODZlMTY5Nzc4NTdhYTk4Nzk0N2UyIgorU1JDUkVWID0gImFlMGI1OWM2ZTJlODYzMGEyYWUyNmY0YTBiN2E3MmNiZTc1NDc5NDgiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJUaGVzZSBhcmUgbm90IHRoZSByZWxlYXNlcyB5b3UncmUgbG9va2luZyBmb3IiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaAppbmRleCBiY2Y4NGE1Li5iMGI5ZmM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2gKQEAgLTEsMjEgKzEsMzAgQEAKLWNvbW1pdCBmNjNjYmU5NDQxMDdiNWNkOGYxNTBjZWFhZWM0M2IyNjA5OWQ1Njg4CitGcm9tIDliMTNiZTEwOWJjNjZmNGQ0YTFhZDUzY2U1YzkyYzdjNDk1ZTQxZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyNCBKdWwgMjAxOCAxNzo0MDo1MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBjb21taXQgZjYzY2JlOTQ0MTA3YjVjZDhmMTUwY2VhYWVjNDNiMjYwOTlkNTY4OAorCiBBdXRob3I6IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgogRGF0ZTogICBUdWUgRmViIDE2IDEwOjA1OjI1IDIwMTYgLTA1MDAKIAotICAgIGRlbW9zOiBEb24ndCBidWlsZCB0cmkgb3IgY3ViZQotICAgIAotICAgIFRoZXJlIGFyZSBtb3JlIGludGVyZXN0aW5nIGRlbW9zLCBhbGwgd2UgcmVhbGx5IHdhbnQgaGVyZSBpcyB2dWxrYW5pbmZvLgotICAgIFRoaXMgaGVscHMgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRvIHByZS1idWlsZCBnbHNsYW5nL2xsdm0vbHVuYXJnbGFzcwotICAgIGp1c3QgdG8gZ2V0IHRoZSBsb2FkZXIgYW5kIGxheWVycy4KK2RlbW9zOiBEb24ndCBidWlsZCB0cmkgb3IgY3ViZQorCitUaGVyZSBhcmUgbW9yZSBpbnRlcmVzdGluZyBkZW1vcywgYWxsIHdlIHJlYWxseSB3YW50IGhlcmUgaXMgdnVsa2FuaW5mby4KK1RoaXMgaGVscHMgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRvIHByZS1idWlsZCBnbHNsYW5nL2xsdm0vbHVuYXJnbGFzcworanVzdCB0byBnZXQgdGhlIGxvYWRlciBhbmQgbGF5ZXJzLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCi1JbmRleDogZ2l0L2RlbW9zL0NNYWtlTGlzdHMudHh0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZGVtb3MvQ01ha2VMaXN0cy50eHQKLSsrKyBnaXQvZGVtb3MvQ01ha2VMaXN0cy50eHQKLUBAIC02Myw0NiArNjMsNiBAQCBlbHNlaWYoVU5JWCkKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGRlbW9zL0NNYWtlTGlzdHMudHh0IHwgODggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4OCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RlbW9zL0NNYWtlTGlzdHMudHh0IGIvZGVtb3MvQ01ha2VMaXN0cy50eHQKK2luZGV4IDRmMzI2NzkuLjI2ZTRjZGYgMTAwNjQ0CistLS0gYS9kZW1vcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvZGVtb3MvQ01ha2VMaXN0cy50eHQKK0BAIC05Myw0MiArOTMsNiBAQCBlbHNlaWYoVU5JWCkKICBlbHNlKCkKICBlbmRpZigpCiAgCkBAIC0zNywzOCArNDYsNDAgQEAKIC0gICAgICAgIGVuZGlmKCkKIC0gICAgZW5kZm9yZWFjaCgpCiAtCi0tICAgIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2Ci0tICAgICAgIENPTU1BTkQgJHtHTFNMQU5HX1ZBTElEQVRPUn0gLXMgLVYgLW8gJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2ICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLnZlcnQKLS0gICAgICAgREVQRU5EUyBjdWJlLnZlcnQgJHtHTFNMQU5HX1ZBTElEQVRPUn0KLS0gICAgICAgKQotLSAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS1mcmFnLnNwdgotLSAgICAgICBDT01NQU5EICR7R0xTTEFOR19WQUxJREFUT1J9IC1zIC1WIC1vICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS1mcmFnLnNwdiAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS5mcmFnCi0tICAgICAgIERFUEVORFMgY3ViZS5mcmFnICR7R0xTTEFOR19WQUxJREFUT1J9Ci0tICAgICAgICkKIC0gICBmaWxlKENPUFkgY3ViZS52Y3hwcm9qLnVzZXIgREVTVElOQVRJT04gJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcykKIC0gICBmaWxlKENPUFkgdnVsa2FuaW5mby52Y3hwcm9qLnVzZXIgREVTVElOQVRJT04gJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcykKLS1lbHNlKCkKLS0gICAgaWYgKCR7Q01BS0VfU1lTVEVNX1BST0NFU1NPUn0gU1RSRVFVQUwgJHtDTUFLRV9IT1NUX1NZU1RFTV9QUk9DRVNTT1J9KQotLSAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtdmVydC5zcHYKLS0gICAgICAgICAgICBDT01NQU5EICR7R0xTTEFOR19WQUxJREFUT1J9IC1zIC1WIC1vIGN1YmUtdmVydC5zcHYgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUudmVydAotLSAgICAgICAgICAgIERFUEVORFMgY3ViZS52ZXJ0ICR7R0xTTEFOR19WQUxJREFUT1J9Ci0tICAgICAgICAgICAgKQotLSAgICAgICAgYWRkX2N1c3RvbV9jb21tYW5kKE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtZnJhZy5zcHYKLS0gICAgICAgICAgICBDT01NQU5EICR7R0xTTEFOR19WQUxJREFUT1J9IC1zIC1WIC1vIGN1YmUtZnJhZy5zcHYgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUuZnJhZwotLSAgICAgICAgICAgIERFUEVORFMgY3ViZS5mcmFnICR7R0xTTEFOR19WQUxJREFUT1J9Ci0tICAgICAgICAgICAgKQotLSAgICBlbmRpZigpICAgICAgICAgCiAtZW5kaWYoKQorLQorLWFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUVOVCAiQ29tcGlsaW5nIGN1YmUgZGVtbyB2ZXJ0ZXggc2hhZGVyIgorLSAgICBPVVRQVVQgY3ViZS52ZXJ0LmluYworLSAgICBDT01NQU5EICR7R0xTTEFOR19WQUxJREFUT1J9IC1WIC14IC1vICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9jdWJlLnZlcnQuaW5jICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLnZlcnQKKy0gICAgTUFJTl9ERVBFTkRFTkNZICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLnZlcnQKKy0gICAgREVQRU5EUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS52ZXJ0ICR7R0xTTEFOR19WQUxJREFUT1J9CistKQorLWFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUVOVCAiQ29tcGlsaW5nIGN1YmUgZGVtbyBmcmFnbWVudCBzaGFkZXIiCistICAgIE9VVFBVVCBjdWJlLmZyYWcuaW5jCistICAgIENPTU1BTkQgJHtHTFNMQU5HX1ZBTElEQVRPUn0gLVYgLXggLW8gJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2N1YmUuZnJhZy5pbmMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUuZnJhZworLSAgICBNQUlOX0RFUEVOREVOQ1kgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUuZnJhZworLSAgICBERVBFTkRTICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLmZyYWcgJHtHTFNMQU5HX1ZBTElEQVRPUn0KKy0pCiAgCi0gaWYoV0lOMzIpCi0gICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMgKAotQEAgLTExNiw0MyArNzYsNiBAQCBlbmRpZigpCi0gYWRkX2V4ZWN1dGFibGUoJHtBUElfTE9XRVJDQVNFfWluZm8gdnVsa2FuaW5mby5jKQotIHRhcmdldF9saW5rX2xpYnJhcmllcygke0FQSV9MT1dFUkNBU0V9aW5mbyAke0xJQlJBUklFU30pCisgaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0pCiAgCi0taWYoTk9UIFdJTjMyKQorQEAgLTE3Miw1NSArMTM2LDMgQEAgaWYoJHtDTUFLRV9TWVNURU1fTkFNRX0gU1RSRVFVQUwgIkxpbnV4IikKKyAgICAgICAgIGluc3RhbGwoVEFSR0VUUyAke0FQSV9MT1dFUkNBU0V9aW5mbyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfSkKKyAgICAgZW5kaWYoKQorIGVuZGlmKCkKKy0KKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMgY3ViZQorLQorLWlmKEFQUExFKQorLSAgICBpbmNsdWRlKG1hY09TL2N1YmUvY3ViZS5jbWFrZSkKKy1lbHNlaWYoTk9UIFdJTjMyKQogLSAgICBpZiAoJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09SfSBTVFJFUVVBTCAke0NNQUtFX0hPU1RfU1lTVEVNX1BST0NFU1NPUn0pCi0tICAgICAgICBhZGRfZXhlY3V0YWJsZShjdWJlIGN1YmUuYyAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtdmVydC5zcHYgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLWZyYWcuc3B2KQorLSAgICAgICAgYWRkX2V4ZWN1dGFibGUoY3ViZSBjdWJlLmMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUudmVydCAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS5mcmFnIGN1YmUudmVydC5pbmMgY3ViZS5mcmFnLmluYykKIC0gICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhjdWJlICR7TElCUkFSSUVTfSkKIC0gICAgZW5kaWYoKQogLWVsc2UoKQpAQCAtNzgsMTMgKzg5LDE4IEBACiAtICAgICAgICBzZXQgKExJQl9ESVIgIldpbjMyIikKIC0gICAgZW5kaWYoKQogLQotLSAgICBhZGRfZXhlY3V0YWJsZShjdWJlIFdJTjMyIGN1YmUuYyAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtdmVydC5zcHYgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLWZyYWcuc3B2KQorLSAgICBhZGRfZXhlY3V0YWJsZShjdWJlIFdJTjMyIGN1YmUuYyAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS52ZXJ0ICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLmZyYWcgY3ViZS52ZXJ0LmluYyBjdWJlLmZyYWcuaW5jKQogLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoY3ViZSAke0xJQlJBUklFU30pCiAtZW5kaWYoKQogLQotLWlmKE5PVCBXSU4zMikKKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMgY3ViZXBwCistCistaWYoQVBQTEUpCistICAgIGluY2x1ZGUobWFjT1MvY3ViZXBwL2N1YmVwcC5jbWFrZSkKKy1lbHNlaWYoTk9UIFdJTjMyKQogLSAgICBpZiAoJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09SfSBTVFJFUVVBTCAke0NNQUtFX0hPU1RfU1lTVEVNX1BST0NFU1NPUn0pCi0tICAgICAgICBhZGRfZXhlY3V0YWJsZShjdWJlcHAgY3ViZS5jcHAgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2ICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS1mcmFnLnNwdikKKy0gICAgICAgIGFkZF9leGVjdXRhYmxlKGN1YmVwcCBjdWJlLmNwcCAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS52ZXJ0ICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLmZyYWcgY3ViZS52ZXJ0LmluYyBjdWJlLmZyYWcuaW5jKQogLSAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGN1YmVwcCAke0xJQlJBUklFU30pCiAtICAgIGVuZGlmKCkKIC1lbHNlKCkKQEAgLTk0LDE1ICsxMTAsMTkgQEAKIC0gICAgICAgIHNldCAoTElCX0RJUiAiV2luMzIiKQogLSAgICBlbmRpZigpCiAtCi0tICAgIGFkZF9leGVjdXRhYmxlKGN1YmVwcCBXSU4zMiBjdWJlLmNwcCAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtdmVydC5zcHYgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLWZyYWcuc3B2KQorLSAgICBhZGRfZXhlY3V0YWJsZShjdWJlcHAgV0lOMzIgY3ViZS5jcHAgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUudmVydCAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS5mcmFnIGN1YmUudmVydC5pbmMgY3ViZS5mcmFnLmluYykKIC0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGN1YmVwcCAke0xJQlJBUklFU30pCiAtZW5kaWYoKQogLQorLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistIyBzbW9rZQorLQogLWlmICgoJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09SfSBTVFJFUVVBTCAke0NNQUtFX0hPU1RfU1lTVEVNX1BST0NFU1NPUn0pKQotLSAgICBpZiAgKChERU1PU19XU0lfU0VMRUNUSU9OIFNUUkVRVUFMICJYQ0IiKSBPUiAoREVNT1NfV1NJX1NFTEVDVElPTiBTVFJFUVVBTCAiV0FZTEFORCIpIE9SIFdJTjMyIE9SIChDTUFLRV9TWVNURU1fTkFNRSBTVFJFUVVBTCAiQW5kcm9pZCIpKQorLSAgICBpZiAoKERFTU9TX1dTSV9TRUxFQ1RJT04gU1RSRVFVQUwgIlhDQiIpIE9SIChERU1PU19XU0lfU0VMRUNUSU9OIFNUUkVRVUFMICJXQVlMQU5EIikgT1IgV0lOMzIgT1IKKy0gICAgICAgIChDTUFLRV9TWVNURU1fTkFNRSBTVFJFUVVBTCAiQW5kcm9pZCIpIE9SIChDTUFLRV9TWVNURU1fTkFNRSBTVFJFUVVBTCAiRGFyd2luIikpCiAtICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KHNtb2tlKQogLSAgICBlbmRpZigpCiAtZW5kaWYoKQotIAotIGlmKFVOSVgpCi0gICAgIGlmKElOU1RBTExfTFZMX0ZJTEVTKQorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM4YTg5NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICIzRCBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgY29tbW9uIGxvYWRlciIKLURFU0NSSVBUSU9OID0gIlZ1bGthbiBpcyBhIG5ldyBnZW5lcmF0aW9uIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBcCi10aGF0IHByb3ZpZGVzIGVmZmljaWVudCBhY2Nlc3MgdG8gbW9kZXJuIEdQVXMuIFRoZXNlIHBhY2thZ2VzIFwKLXByb3ZpZGUgb25seSB0aGUgY29tbW9uIHZlbmRvci1hZ25vc3RpYyBsaWJyYXJ5IGxvYWRlciwgaGVhZGVycyBhbmQgXAotdGhlIHZ1bGthbmluZm8gdXRpbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OTljNjQ3Y2EzZDRmNmE0YjlkODYyOGY3NTdhYWQxNTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbG9hZGVyL2xvYWRlci5jO2VuZGxpbmU9MjU7bWQ1PWE4N2NkNTQ0MjI5MWMyM2QxZmNlNGVlY2U0Y2ZkZTlkIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycy5naXQ7YnJhbmNoPXNkay0xLjAuNjUgXAotICAgICAgICAgICBmaWxlOi8vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiNzM0ODZhMWExNjlkODYyZDUyMTBlMmFkNTIwZDk1MzE5YTIzODNmYSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCi0KLWluaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBsaWJfcGFja2FnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCi0KLUVYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9XU0lfTUlSX1NVUFBPUlQ9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9MQVlFUlM9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYiCi0KLSMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnICxkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycgLGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04gLURERU1PU19XU0lfU0VMRUNUSU9OPVhDQiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYgLURERU1PU19XU0lfU0VMRUNUSU9OPVdBWUxBTkQsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMS43My4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjEuNzMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDk2ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjEuNzMuMC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgorREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKK3RoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAorcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCit0aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT05OWM2NDdjYTNkNGY2YTRiOWQ4NjI4Zjc1N2FhZDE1NiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sb2FkZXIvbG9hZGVyLmM7ZW5kbGluZT0yNTttZDU9MTUxYjM5MmY0NjU2OGFhZWRiNGFkMjJiMjQ2MjM3ZWMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzLmdpdDticmFuY2g9c2RrLTEuMS43MyBcCisgICAgICAgICAgIGZpbGU6Ly9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI1OTk4ZDZmNDQ0YTg1ZTYzODFiN2EwODllYmYzZjllODY0ODJhMzFkIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKKworaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGxpYl9wYWNrYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX1dTSV9NSVJfU1VQUE9SVD1PRkYgXAorICAgICAgICAgICAgICAgICAtREJVSUxEX0xBWUVSUz1PRkYgXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiIKKworIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJyAsZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiAtRERFTU9TX1dTSV9TRUxFQ1RJT049WENCLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiAtRERFTU9TX1dTSV9TRUxFQ1RJT049V0FZTEFORCwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKK0lOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjExLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJlMjA5MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xMS4zLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWYyZWE5ZWJmZjNhMmM2ZDQ1OGZhZjU4NDkyZWZiNjMiCisKK0RFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImRmNmU4NzdmMTFkZTRhOTc5MzUxMWU5YWJmZTdlZjAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzMTE5MWQ5NmU0MjViNGYxNjMxOTg0MjI3OWQ2NTk0NmQ5ZDk4M2RjZDNkOWU0NjZhZTEyMDZhYTEwZWNiMDYiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSAtRGRvY3VtZW50YXRpb249ZmFsc2UgLUR0ZXN0cz1mYWxzZSIKKworIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCitSUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YTQ5ZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCi0KLURFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhiNDNkMDdkMTY5OGZiMjA3YTA0OTJmYzY3NTU0ZDRmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiY2RiZDRjNGUzYzJhMmRiMzIyZmJkZjJlZjMyODRmMmU2ZDZmYjdiZTNhZjgwZTZkOGRlNzc4M2Y2NzUxOTAiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCi1QQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKLQotVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSAtRGRvY3VtZW50YXRpb249ZmFsc2UgLUR0ZXN0cz1mYWxzZSIKLQotIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCi1SUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWYxZWUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAotYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAotY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAotcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCi13YXlsYW5kLXByb3RvY29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI5MzEyMTQ5ZGFmY2Q0YTBlNzM5YmE5NDk5NWE1NzRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3NThiYzgwMDhkNTMzMmY0MzFiMmE4NGZlYTdkZTY0ZDk3MWNlMjcwZWQyMDgyMDZhMDk4ZmYyZWJjNjhmMzgiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNGI3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTYuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTBiNTIzZmYxNjJlMzBiYWI0NmJlMWQ2NWQ1Mjc2ODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmIxNDg1OTUxZmRjZDM2YTk2MGM4NzBjNDZmMjhiMDNhM2U1MTIxZmI0NjI0NjkxNjMzM2VkMDdmNzhjOThjNSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5ZmY5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCi1hcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCi1hIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKLWlucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAotYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKLWRpc3BsYXkgc2VydmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgotCi1ERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0JICAgZmlsZTovL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDIzNWY2MDc1YzMyYzNiZTYxY2ZmOTRmYTBiOWYxMDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ4MGNhYmMwOTYxYTc1OWE0MjA5MmUyYzM5YWFiZmMxZWM5YTEzYzg2Yzk4YmJlMmI4MTJmMDA4ZGEyN2FiOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLXdpdGgtaG9zdC1zY2FubmVyIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgotCi0jIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKLSMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKLSAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKLSAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAotfQotCi1zeXNyb290X3N0YWdlX2FsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLQlybSAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQgJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L3dheWxhbmQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMmVlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNi4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiV2F5bGFuZCwgYSBwcm90b2NvbCBiZXR3ZWVuIGEgY29tcG9zaXRvciBhbmQgY2xpZW50cyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgaXMgYSBwcm90b2NvbCBmb3IgYSBjb21wb3NpdG9yIHRvIHRhbGsgdG8gaXRzIGNsaWVudHMgXAorYXMgd2VsbCBhcyBhIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb3RvY29sLiBUaGUgY29tcG9zaXRvciBjYW4gYmUgXAorYSBzdGFuZGFsb25lIGRpc3BsYXkgc2VydmVyIHJ1bm5pbmcgb24gTGludXgga2VybmVsIG1vZGVzZXR0aW5nIGFuZCBldmRldiBcCitpbnB1dCBkZXZpY2VzLCBhbiBYIGFwcGxpY2F0aW9uLCBvciBhIHdheWxhbmQgY2xpZW50IGl0c2VsZi4gVGhlIGNsaWVudHMgY2FuIFwKK2JlIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9ucywgWCBzZXJ2ZXJzIChyb290bGVzcyBvciBmdWxsc2NyZWVuKSBvciBvdGhlciBcCitkaXNwbGF5IHNlcnZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMzFkOGY1M2I2YWFmMmI0OTg1ZDdkZDc4MTBhNzBkMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvd2F5bGFuZC1zZXJ2ZXIuYztlbmRsaW5lPTI0O21kNT1iOGUwNDYxNjRhNzY2YmIxZWRlOGJhMzhlOWRjZDdjZSIKKworREVQRU5EUyA9ICJleHBhdCBsaWJ4bWwyIGxpYmZmaSB3YXlsYW5kLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorCSAgIGZpbGU6Ly9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjBjMjE1ZTUzZGU3MWQ2ZmIyNmY3MTAyY2RjNjQzMmQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlNzJjMmI1NjEwOWNjZmI2NjEwZDc3NmU0NjVmNGNhMGFmMjI4MGM5YzJmN2Q1Y2MyM2YwZWQyNTQ4NzUyZjUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS13aXRoLWhvc3Qtc2Nhbm5lciIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLWxpYnJhcmllcyIKKworIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0CisjIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCisgICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCisgICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKK30KKworc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKKwljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1jb25mLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24tY29uZi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTIyMDBjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24tY29uZi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IsIGNvbmZpZ3VyYXRpb24gZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkiCisKK0ZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pIgorCitQQUNLQUdFUyA9ICIke1BOfSIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAnMScKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICcxJworCitkb19pbnN0YWxsKCkgeworCToKK30KKworZG9faW5zdGFsbF9xZW11eDg2KCkgeworCW1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uCisJY2F0IDw8IEVPRiA+ICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkKK1tjb3JlXQorYmFja2VuZD1mYmRldi1iYWNrZW5kLnNvCitFT0YKK30KKworZG9faW5zdGFsbF9xZW11eDg2LTY0KCkgeworCW1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uCisJY2F0IDw8IEVPRiA+ICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkKK1tjb3JlXQorYmFja2VuZD1mYmRldi1iYWNrZW5kLnNvCitFT0YKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5zZXJ2aWNlCmluZGV4IDY4OWNlNDEuLjE4ZjcyNjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uc2VydmljZQpAQCAtNCw2ICs0LDcgQEAKIAogW1NlcnZpY2VdCiBVc2VyPXJvb3QKK1BBTU5hbWU9bG9naW4KIEVudmlyb25tZW50RmlsZT0tL2V0Yy9kZWZhdWx0L3dlc3RvbgogRXhlY1N0YXJ0PS91c3IvYmluL3dlc3Rvbi1zdGFydCAtdiAtZSAtLSAkT1BUQVJHUwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2gKaW5kZXggMDY3MWE0NS4uMDllYzE1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaApAQCAtMSwyNiArMSwyNyBAQAotRnJvbSBjMjJlOTAzNjVkODkzNDYyNTgzOTQ4MzNjYmNhZDAzZmYzMmIyZTI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhZDFkMjE2MWM4MTFjZmYyNWQxNjg0YzMzNjExZjMwMGFkYjc1M2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjkgTWF5IDIwMTUgMjA6NTY6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCB3ZXN0b25dIG1ha2UgZXJyb3IoKSBwb3J0YWJsZQorU3ViamVjdDogW1BBVENIXSBtYWtlIGVycm9yKCkgcG9ydGFibGUKIAogZXJyb3IoKSBpcyBub3QgcG9zaXggYnV0IGdudSBleHRlbnNpb24gc28gbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gYWxsCiBraW5kIG9mIHN5c3RlbXNpIGUuZy4gbXVzbC4KIAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKIAotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgICAyICsrCi0gbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oICB8ICAgMjAgKysrKysrKysrKysrKysrKysrKysKLSBsaWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIHwgICAgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvd2VzdG9uLWVycm9yLmgKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLUluZGV4OiB3ZXN0b24tMy4wLjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2VzdG9uLTMuMC4wLm9yaWcvY29uZmlndXJlLmFjCi0rKysgd2VzdG9uLTMuMC4wL2NvbmZpZ3VyZS5hYwotQEAgLTEwMyw2ICsxMDMsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgMiArKworIGxpYndlc3Rvbi93ZXN0b24tZXJyb3IuaCAgfCAyMCArKysrKysrKysrKysrKysrKysrKworIGxpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgfCAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggN2FlYmJkYi4uZGM5YzgwMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTA5LDYgKzEwOSw4IEBAIEFDX0NIRUNLX0RFQ0woQ0xPQ0tfTU9OT1RPTklDLFtdLAogIAkgICAgICBbWyNpbmNsdWRlIDx0aW1lLmg+XV0pCiAgQUNfQ0hFQ0tfSEVBREVSUyhbZXhlY2luZm8uaF0pCiAgCkBAIC0yOSwxMCArMzAsMTEgQEAKICBBQ19DSEVDS19GVU5DUyhbbWtvc3RlbXAgc3RyY2hybnVsIGluaXRncm91cHMgcG9zaXhfZmFsbG9jYXRlXSkKICAKICAjIGNoZWNrIGZvciBsaWJkcm0gYXMgYSBidWlsZC10aW1lIGRlcGVuZGVuY3kgb25seQotSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmggYi9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yMDg5ZDAyCiAtLS0gL2Rldi9udWxsCi0rKysgd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAorKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCiBAQCAtMCwwICsxLDIwIEBACiArI2lmbmRlZiBfV0VTVE9OX0VSUk9SX0gKICsjZGVmaW5lIF9XRVNUT05fRVJST1JfSApAQCAtNTQsMTAgKzU2LDEwIEBACiArCiArI2VuZGlmCiArCi1JbmRleDogd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3ZXN0b24tMy4wLjAub3JpZy9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCi0rKysgd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKK2RpZmYgLS1naXQgYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworaW5kZXggMWFkY2YyMS4uMTY2YmYzYiAxMDA2NDQKKy0tLSBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKKysrKyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKIEBAIC0zMyw3ICszMyw2IEBACiAgI2luY2x1ZGUgPHBvbGwuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTY2LDcgKzY4LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgCiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotQEAgLTYwLDYgKzU5LDcgQEAKK0BAIC01OSw2ICs1OCw3IEBACiAgI2VuZGlmCiAgCiAgI2luY2x1ZGUgIndlc3Rvbi1sYXVuY2guaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaAppbmRleCA3MGI5ODg4Li5kNjQ4NTM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSA4ZmY2ZWQwM2VjNDA3OWYzMmU5YjM0MDg1NDE0ZTU3YmU0NzMwZTA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOThiOWRiZGE5MDIyMjVjZGQ5NzJiNWJmZjZhNjQxYzM2Y2M3ZTkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgogRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAxNTo1MzozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSB3ZXN0b24tbGF1bmNoOiBQcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZXF1aXJlCi0gUEFNCitTdWJqZWN0OiBbUEFUQ0hdIHdlc3Rvbi1sYXVuY2g6IFByb3ZpZGUgYSBkZWZhdWx0IHZlcnNpb24gdGhhdCBkb2Vzbid0IHJlcXVpcmUgUEFNCiAKIHdlc3Rvbi1sYXVuY2ggcmVxdWlyZXMgUEFNIGZvciBzdGFydGluZyB3ZXN0b24gYXMgYSBub24tcm9vdCB1c2VyLgogCkBAIC0xNCwxNiArMTMsMTggQEAKIAogU2lnbmVkLW9mZi1ieTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgOSArKysrKysrLS0KICBsaWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIHwgMjAgKysrKysrKysrKysrKysrKysrKysKICAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ2Y2IyYzcuLmJiNDVmNDYgMTAwNjQ0CitpbmRleCBkYzljODAyLi40OGNmNWNiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC00MzUsMTMgKzQzNSwxNyBAQCBBQ19BUkdfRU5BQkxFKHJlc2l6ZS1vcHRpbWl6YXRpb24sCitAQCAtNDUxLDEzICs0NTEsMTcgQEAgQUNfQVJHX0VOQUJMRShyZXNpemUtb3B0aW1pemF0aW9uLAogIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9yZXNpemVfb3B0aW1pemF0aW9uIiA9ICJ4eWVzIl0sCiAgICAgICAgW0FDX0RFRklORShbVVNFX1JFU0laRV9QT09MXSwgWzFdLCBbVXNlIHJlc2l6ZSBtZW1vcnkgcG9vbCBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbl0pXSkKICAKQEAgLTQzLDcgKzQ0LDcgQEAKICBmaQogIAogIEFNX0NPTkRJVElPTkFMKEhBVkVfUEFOR08sIHRlc3QgIngkaGF2ZV9wYW5nbyIgPSAieHllcyIpCi1AQCAtNzAxLDYgKzcwNSw3IEBAIEFDX01TR19SRVNVTFQoWworQEAgLTcwMiw2ICs3MDYsNyBAQCBBQ19NU0dfUkVTVUxUKFsKICAJRW5hYmxlIGRldmVsb3BlciBkb2N1bWVudGF0aW9uCSR7ZW5hYmxlX2RldmRvY3N9CiAgCiAgCXdlc3Rvbi1sYXVuY2ggdXRpbGl0eQkJJHtlbmFibGVfd2VzdG9uX2xhdW5jaH0KQEAgLTUyLDcgKzUzLDcgQEAKICAJc3lzdGVtZCBub3RpZnkgc3VwcG9ydAkJJHtlbmFibGVfc3lzdGVtZF9ub3RpZnl9CiAgCiBkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLWluZGV4IDA0OTE4OTYuLjA3ZTc0NjkgMTAwNjQ0CitpbmRleCAxNjZiZjNiLi42ZmI5MjMyIDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogQEAgLTUxLDcgKzUxLDkgQEAKQEAgLTY1LDcgKzY2LDcgQEAKICAKICAjaWZkZWYgSEFWRV9TWVNURU1EX0xPR0lOCiAgI2luY2x1ZGUgPHN5c3RlbWQvc2QtbG9naW4uaD4KLUBAIC05Myw4ICs5NSwxMCBAQCBkcm1TZXRNYXN0ZXIoaW50IGRybV9mZCkKK0BAIC0xMDEsOCArMTAzLDEwIEBAIGRybVNldE1hc3RlcihpbnQgZHJtX2ZkKQogICNlbmRpZgogIAogIHN0cnVjdCB3ZXN0b25fbGF1bmNoIHsKQEAgLTc2LDcgKzc3LDcgQEAKICAJaW50IHR0eTsKICAJaW50IHR0eW5yOwogIAlpbnQgc29ja1syXTsKLUBAIC0xODEsNiArMTg1LDcgQEAgd2VzdG9uX2xhdW5jaF9hbGxvd2VkKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKK0BAIC0xODksNiArMTkzLDcgQEAgd2VzdG9uX2xhdW5jaF9hbGxvd2VkKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKICAJcmV0dXJuIGZhbHNlOwogIH0KICAKQEAgLTg0LDcgKzg1LDcgQEAKICBzdGF0aWMgaW50CiAgcGFtX2NvbnZlcnNhdGlvbl9mbihpbnQgbXNnX2NvdW50LAogIAkJICAgIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1lc3NhZ2VzLAotQEAgLTIyMSw2ICsyMjYsNyBAQCBzZXR1cF9wYW0oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQorQEAgLTIyOSw2ICsyMzQsNyBAQCBzZXR1cF9wYW0oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQogIAogIAlyZXR1cm4gMDsKICB9CkBAIC05Miw3ICs5Myw3IEBACiAgCiAgc3RhdGljIGludAogIHNldHVwX2xhdW5jaGVyX3NvY2tldChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCi1AQCAtNDE0LDYgKzQyMCw3IEBAIHF1aXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBpbnQgc3RhdHVzKQorQEAgLTQyMiw2ICs0MjgsNyBAQCBxdWl0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgaW50IHN0YXR1cykKICAJY2xvc2Uod2wtPnNpZ25hbGZkKTsKICAJY2xvc2Uod2wtPnNvY2tbMF0pOwogIApAQCAtMTAwLDcgKzEwMSw3IEBACiAgCWlmICh3bC0+bmV3X3VzZXIpIHsKICAJCWVyciA9IHBhbV9jbG9zZV9zZXNzaW9uKHdsLT5waCwgMCk7CiAgCQlpZiAoZXJyKQotQEAgLTQyMSw2ICs0MjgsNyBAQCBxdWl0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgaW50IHN0YXR1cykKK0BAIC00MjksNiArNDM2LDcgQEAgcXVpdChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGludCBzdGF0dXMpCiAgCQkJCWVyciwgcGFtX3N0cmVycm9yKHdsLT5waCwgZXJyKSk7CiAgCQlwYW1fZW5kKHdsLT5waCwgZXJyKTsKICAJfQpAQCAtMTA4LDcgKzEwOSw3IEBACiAgCiAgCWlmIChpb2N0bCh3bC0+dHR5LCBLRFNLQk1VVEUsIDApICYmCiAgCSAgICBpb2N0bCh3bC0+dHR5LCBLRFNLQk1PREUsIHdsLT5rYl9tb2RlKSkKLUBAIC02MDAsNiArNjA4LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQorQEAgLTYwOCw2ICs2MTYsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCiAgCXNldGVudigiSE9NRSIsIHdsLT5wdy0+cHdfZGlyLCAxKTsKICAJc2V0ZW52KCJTSEVMTCIsIHdsLT5wdy0+cHdfc2hlbGwsIDEpOwogIApAQCAtMTE2LDcgKzExNyw3IEBACiAgCWVudiA9IHBhbV9nZXRlbnZsaXN0KHdsLT5waCk7CiAgCWlmIChlbnYpIHsKICAJCWZvciAoaSA9IDA7IGVudltpXTsgKytpKSB7Ci1AQCAtNjA4LDYgKzYxNyw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02MTYsNiArNjI1LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAkJfQogIAkJZnJlZShlbnYpOwogIAl9CkBAIC0xMjQsMTcgKzEyNSwxOCBAQAogIAogIAkvKgogIAkgKiBXZSBvcGVuIGEgbmV3IHNlc3Npb24sIHNvIGl0IG1ha2VzIHNlbnNlCi1AQCAtNjc1LDcgKzY4NSw5IEBAIHN0YXRpYyB2b2lkCitAQCAtNjgzLDggKzY5MywxMCBAQCBzdGF0aWMgdm9pZAogIGhlbHAoY29uc3QgY2hhciAqbmFtZSkKICB7CiAgCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFthcmdzLi4uXSBbLS0gW3dlc3RvbiBhcmdzLi5dXVxuIiwgbmFtZSk7CiArI2lmZGVmIEhBVkVfUEFNCi0gCWZwcmludGYoc3RkZXJyLCAiICAtdSwgLS11c2VyICAgICAgU3RhcnQgc2Vzc2lvbiBhcyBzcGVjaWZpZWQgdXNlcm5hbWVcbiIpOworIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXUsIC0tdXNlciAgICAgIFN0YXJ0IHNlc3Npb24gYXMgc3BlY2lmaWVkIHVzZXJuYW1lLFxuIgorIAkJCSIgICAgICAgICAgICAgICAgICBlLmcuIC11IGpvZSwgcmVxdWlyZXMgcm9vdC5cbiIpOwogKyNlbmRpZgotIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXQsIC0tdHR5ICAgICAgIFN0YXJ0IHNlc3Npb24gb24gYWx0ZXJuYXRpdmUgdHR5XG4iKTsKKyAJZnByaW50ZihzdGRlcnIsICIgIC10LCAtLXR0eSAgICAgICBTdGFydCBzZXNzaW9uIG9uIGFsdGVybmF0aXZlIHR0eSxcbiIKKyAJCQkiICAgICAgICAgICAgICAgICAgZS5nLiAtdCAvZGV2L3R0eTQsIHJlcXVpcmVzIC11IG9wdGlvbi5cbiIpOwogIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXYsIC0tdmVyYm9zZSAgIEJlIHZlcmJvc2VcbiIpOwotIAlmcHJpbnRmKHN0ZGVyciwgIiAgLWgsIC0taGVscCAgICAgIERpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2VcbiIpOwotQEAgLTY4OCw3ICs3MDAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtNjk4LDcgKzcxMCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaW50IGksIGM7CiAgCWNoYXIgKnR0eSA9IE5VTEw7CiAgCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewpAQCAtMTQ0LDggKzE0Niw4IEBACiAgCQl7ICJ0dHkiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd0JyB9LAogIAkJeyAidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAndicgfSwKICAJCXsgImhlbHAiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ2gnIH0sCi1AQCAtNzAwLDkgKzcxNCwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJ1OnQ6OnZoIiwgb3B0cywgJmkpKSAhPSAtMSkgeworQEAgLTcxMCw5ICs3MjQsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAidTp0OnZoIiwgb3B0cywgJmkpKSAhPSAtMSkgewogIAkJc3dpdGNoIChjKSB7CiAgCQljYXNlICd1JzoKICsjaWZkZWYgSEFWRV9QQU0KQEAgLTE1OCw3ICsxNjAsNyBAQAogIAkJCWJyZWFrOwogIAkJY2FzZSAndCc6CiAgCQkJdHR5ID0gb3B0YXJnOwotQEAgLTc0MCw4ICs3NTgsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTc1Myw4ICs3NzEsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpZiAoc2V0dXBfdHR5KCZ3bCwgdHR5KSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAgCkBAIC0xNjksNiArMTcxLDMgQEAKICAKICAJaWYgKHNldHVwX2xhdW5jaGVyX3NvY2tldCgmd2wpIDwgMCkKICAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWMwZDRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLU9uIHRoZSBtdXNsIEMgbGlicmFyeSwgdGVzdHMvdGltZXNwZWMtdGV4dC5jIGRvZXMgbm90IGJ1aWxkLCB3aXRoIHRoZQotZm9sbG93aW5nIGVycm9yOgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRlc3RzL3RpbWVzcGVjLXRlc3QuYzozNjowOgotICAgIC4vc2hhcmVkL3RpbWVzcGVjLXV0aWwuaDo0MToyMTogd2FybmluZzog4oCYc3RydWN0IHRpbWVzcGVj4oCZIGRlY2xhcmVkCi0gICAgaW5zaWRlIHBhcmFtZXRlciBsaXN0IHdpbGwgbm90IGJlIHZpc2libGUgb3V0c2lkZSBvZiB0aGlzIGRlZmluaXRpb24KLSAgICBvciBkZWNsYXJhdGlvbgotICAgICB0aW1lc3BlY19zdWIoc3RydWN0IHRpbWVzcGVjICpyLAotICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Ci0gICBbLi4uXQotCi1JbmRlZWQsIHN0cnVjdCB0aW1lc3BlYyBpcyBkZWZpbmVkIGluIHRpbWUuaCwgc28gd2UgbXVzdCBpbmNsdWRlIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmYTQxYmRmYmMwYjk2MmZkNzNiODlmMDFhYWIxYTUzNzBjOWMyOGViXQotCi1TaWduZWQtb2ZmLWJ5OiAiWWFubiBFLiBNT1JJTiIgPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgotUmV2aWV3ZWQtYnk6IFBla2thIFBhYWxhbmVuIDxwZWtrYS5wYWFsYW5lbkBjb2xsYWJvcmEuY28udWs+Ci0KLUluZGV4OiB3ZXN0b24tMy4wLjAvc2hhcmVkL3RpbWVzcGVjLXV0aWwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdlc3Rvbi0zLjAuMC5vcmlnL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKLSsrKyB3ZXN0b24tMy4wLjAvc2hhcmVkL3RpbWVzcGVjLXV0aWwuaAotQEAgLTI4LDYgKzI4LDcgQEAKLSAKLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDx0aW1lLmg+Ci0gCi0gI2RlZmluZSBOU0VDX1BFUl9TRUMgMTAwMDAwMDAwMAotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi93ZXN0b24tZ2wtcmVuZGVyZXItU2V0LXBpdGNoLWNvcnJlY3RseS1mb3Itc3Vic2FtcGxlZC10ZXh0dXJlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlMWQwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi93ZXN0b24tZ2wtcmVuZGVyZXItU2V0LXBpdGNoLWNvcnJlY3RseS1mb3Itc3Vic2FtcGxlZC10ZXh0dXJlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLU11bHRpLXBsYW5lIHN1Yi1zYW1wbGVkIHRleHR1cmVzIGhhdmUgcGFydGlhbCB3aWR0aC9oZWlnaHQsIGUuZy4KLVlVVjQyMC9JNDIwIGhhcyBhIGZ1bGwtc2l6ZSBZIHBsYW5lLCBmb2xsb3dlZCBieSBhIGhhbGYtd2lkdGgvaGVpZ2h0IFUKLXBsYW5lLCBhbmQgYSBoYWxmLXdpZHRoL2hlaWdodCBWIHBsYW5lLgotCi16d3BfbGludXhfZG1hYnVmX3YxIGFsbG93cyBjbGllbnRzIHRvIHBhc3MgYW4gZXhwbGljaXQgcGl0Y2ggZm9yIGVhY2gKLXBsYW5lLCBidXQgZm9yIHdsX3NobSB0aGlzIG11c3QgYmUgaW5mZXJyZWQuIGdsLXJlbmRlcmVyIHdhcyBjb3JyZWN0bHkKLWFjY291bnRpbmcgZm9yIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gc3Vic2FtcGxpbmcsIGJ1dCB0aGUgcGl0Y2ggd2FzCi1iZWluZyB0YWtlbiBhcyB0aGUgcGl0Y2ggZm9yIHRoZSBmaXJzdCBwbGFuZS4KLQotVGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZW1lbnRzIGZvciBHU3RyZWFtZXIncyB3YXlsYW5kc2luaywgaW4KLXBhcnRpY3VsYXIsIGFzIHdlbGwgYXMgb3RoZXIgY2xpZW50cy4gRml4IHRoZSBTSE0gdXBsb2FkIHBhdGggdG8KLWNvcnJlY3RseSBzZXQgdGhlIHBpdGNoIGZvciBlYWNoIHBsYW5lLCBhY2NvcmRpbmcgdG8gc3Vic2FtcGxpbmcuCi0KLVRlc3RlZCB3aXRoOgotICAkIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIHdheWxhbmRzaW5rCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xODA3NjcvXQotCi1TaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KLUZpeGVzOiBmZGVlZmU0MjQxOCAoImdsLXJlbmRlcmVyOiBhZGQgc3VwcG9ydCBvZiBXTF9TSE1fRk9STUFUX1lVVjQyMCIpCi1SZXBvcnRlZC1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+Ci1CdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDYzCi0KLS0tLQotIGxpYndlc3Rvbi9nbC1yZW5kZXJlci5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jIGIvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKLWluZGV4IDI0NGNlMzA5Li40MGJmMGJiNiAxMDA2NDQKLS0tLSBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCi0rKysgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYwotQEAgLTE0NDUsMTQgKzE0NDUsMTMgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKLSAJCWdvdG8gZG9uZTsKLSAJfQotIAotLQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoKTsKLS0KLSAJaWYgKGdzLT5uZWVkc19mdWxsX3VwbG9hZCkgewotIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFNfRVhULCAwKTsKLSAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIDApOwotIAkJd2xfc2htX2J1ZmZlcl9iZWdpbl9hY2Nlc3MoYnVmZmVyLT5zaG1fYnVmZmVyKTsKLSAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKLSAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7Ci0rCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKLSAJCQlnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAJCQkJICAgICBncy0+Z2xfZm9ybWF0W2pdLAotIAkJCQkgICAgIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdLAotQEAgLTE0NzcsNiArMTQ3Niw3IEBAIGdsX3JlbmRlcmVyX2ZsdXNoX2RhbWFnZShzdHJ1Y3Qgd2VzdG9uX3N1cmZhY2UgKnN1cmZhY2UpCi0gCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1NfRVhULCByLnkxKTsKLSAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKLSAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7Ci0rCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKLSAJCQlnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAJCQkJCXIueDEgLyBncy0+aHN1YltqXSwKLSAJCQkJCXIueTEgLyBncy0+dnN1YltqXSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMGNkYzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNjttZDU9ZTM0MmRmNzQ5MTc0YThlZTExMDY1NTgzMTU3YzdhMzgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotCSAgIGZpbGU6Ly93ZXN0b24tZ2wtcmVuZGVyZXItU2V0LXBpdGNoLWNvcnJlY3RseS1mb3Itc3Vic2FtcGxlZC10ZXh0dXJlcy5wYXRjaCBcCi0JICAgZmlsZTovL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiOWM0MmE0YzUxYTFiOWYzNWQwNDBmYTlkNDVhZGEzNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RlMWQ1NWU4ZGQ3MGMzY2JiM2QxZWM3MmY2MGU2MDAwMDA0MTU3OWNhYTFkNmEyNjJiZDljMzVlOTM3MjNhNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVzZXJhZGQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCi1ERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2V0dWlkLWluc3RhbGwgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZHAtY29tcG9zaXRvciBcCi0gICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDT05GX2FwcGVuZF9xZW11eDg2ID0gIlwKLQkJV0VTVE9OX05BVElWRV9CQUNLRU5EPWZiZGV2LWJhY2tlbmQuc28gXAotCQkiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYtNjQgPSAiXAotCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCi0JCSIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAna21zIGZiZGV2IHdheWxhbmQgZWdsJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kIHgxMScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgY2xpZW50cyBsYXVuY2giCi0jCi0jIENvbXBvc2l0b3IgY2hvaWNlcwotIwotIyBXZXN0b24gb24gS01TCi1QQUNLQUdFQ09ORklHW2ttc10gPSAiLS1lbmFibGUtZHJtLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWRybS1jb21wb3NpdG9yLGRybSB1ZGV2IHZpcnR1YWwvbWVzYSBtdGRldiIKLSMgV2VzdG9uIG9uIFdheWxhbmQgKG5lc3RlZCBXZXN0b24pCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQtY29tcG9zaXRvciwtLWRpc2FibGUtd2F5bGFuZC1jb21wb3NpdG9yLHZpcnR1YWwvbWVzYSIKLSMgV2VzdG9uIG9uIFgxMQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMS1jb21wb3NpdG9yLC0tZGlzYWJsZS14MTEtY29tcG9zaXRvcix2aXJ0dWFsL2xpYngxMSBsaWJ4Y2IgbGlieGNiIGxpYnhjdXJzb3IgY2Fpcm8iCi0jIEhlYWRsZXNzIFdlc3RvbgotUEFDS0FHRUNPTkZJR1toZWFkbGVzc10gPSAiLS1lbmFibGUtaGVhZGxlc3MtY29tcG9zaXRvciwtLWRpc2FibGUtaGVhZGxlc3MtY29tcG9zaXRvciIKLSMgV2VzdG9uIG9uIGZyYW1lYnVmZmVyCi1QQUNLQUdFQ09ORklHW2ZiZGV2XSA9ICItLWVuYWJsZS1mYmRldi1jb21wb3NpdG9yLC0tZGlzYWJsZS1mYmRldi1jb21wb3NpdG9yLHVkZXYgbXRkZXYiCi0jIHdlc3Rvbi1sYXVuY2gKLVBBQ0tBR0VDT05GSUdbbGF1bmNoXSA9ICItLWVuYWJsZS13ZXN0b24tbGF1bmNoLC0tZGlzYWJsZS13ZXN0b24tbGF1bmNoLGRybSIKLSMgVkEtQVBJIGRlc2t0b3AgcmVjb3JkZXIKLVBBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLXJlY29yZGVyLC0tZGlzYWJsZS12YWFwaS1yZWNvcmRlcixsaWJ2YSIKLSMgV2VzdG9uIHdpdGggRUdMIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wgLS1lbmFibGUtc2ltcGxlLWVnbC1jbGllbnRzLC0tZGlzYWJsZS1lZ2wgLS1kaXNhYmxlLXNpbXBsZS1lZ2wtY2xpZW50cyx2aXJ0dWFsL2VnbCIKLSMgV2VzdG9uIHdpdGggY2Fpcm8gZ2xlc3YyIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY2Fpcm8tZ2xlc3YyXSA9ICItLXdpdGgtY2Fpcm8tZ2xlc3YyLC0td2l0aC1jYWlybz1pbWFnZSxjYWlybyIKLSMgV2VzdG9uIHdpdGggbGNtcyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2xjbXNdID0gIi0tZW5hYmxlLWxjbXMsLS1kaXNhYmxlLWxjbXMsbGNtcyIKLSMgV2VzdG9uIHdpdGggd2VicCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3dlYnBdID0gIi0td2l0aC13ZWJwLC0td2l0aG91dC13ZWJwLGxpYndlYnAiCi0jIFdlc3RvbiB3aXRoIHVud2luZGluZyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgotIyBXZXN0b24gd2l0aCBzeXN0ZW1kLWxvZ2luIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZC1sb2dpbiwtLWRpc2FibGUtc3lzdGVtZC1sb2dpbixzeXN0ZW1kIGRidXMiCi0jIFdlc3RvbiB3aXRoIFh3YXlsYW5kIHN1cHBvcnQgKHJlcXVpcmVzIFgxMSBhbmQgV2F5bGFuZCkKLVBBQ0tBR0VDT05GSUdbeHdheWxhbmRdID0gIi0tZW5hYmxlLXh3YXlsYW5kLC0tZGlzYWJsZS14d2F5bGFuZCIKLSMgY29sb3JkIENNUyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NvbG9yZF0gPSAiLS1lbmFibGUtY29sb3JkLC0tZGlzYWJsZS1jb2xvcmQsY29sb3JkIgotIyBDbGllbnRzIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY2xpZW50c10gPSAiLS1lbmFibGUtY2xpZW50cyAtLWVuYWJsZS1zaW1wbGUtY2xpZW50cyAtLWVuYWJsZS1kZW1vLWNsaWVudHMtaW5zdGFsbCwtLWRpc2FibGUtY2xpZW50cyAtLWRpc2FibGUtc2ltcGxlLWNsaWVudHMiCi0jIFdlc3RvbiB3aXRoIFBBTSBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZXN0b24gZG9lc24ndCBuZWVkIHRoZSAubGEgZmlsZXMgdG8gbG9hZCBtb2R1bGVzLCBzbyB3aXBlIHRoZW0KLQlybSAtZiAke0R9LyR7bGliZGlyfS9saWJ3ZXN0b24tMy8qLmxhCi0KLQkjIElmIFgxMSwgc2hpcCBhIGRlc2t0b3AgZmlsZSB0byBsYXVuY2ggaXQKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24ucG5nICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQlpbnN0YWxsIC1EbSA2NDQgJHtXT1JLRElSfS94d2F5bGFuZC53ZXN0b24tc3RhcnQgJHtEfSR7ZGF0YWRpcn0vd2VzdG9uLXN0YXJ0L3h3YXlsYW5kCi0JZmkKLX0KLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJyR7UE59LXh3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgbGlid2VzdG9uLTMgJHtQTn0tZXhhbXBsZXMiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS93ZXN0b24gJHtiaW5kaXJ9L3dlc3Rvbi10ZXJtaW5hbCAke2JpbmRpcn0vd2VzdG9uLWluZm8gJHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2ggJHtiaW5kaXJ9L3djYXAtZGVjb2RlICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvICR7ZGF0YWRpcn0iCi0KLUZJTEVTX2xpYndlc3Rvbi0zID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7bGliZGlyfS9saWJ3ZXN0b24tMy8qLnNvIgotU1VNTUFSWV9saWJ3ZXN0b24tMyA9ICJIZWxwZXIgbGlicmFyeSBmb3IgaW1wbGVtZW50aW5nICd3YXlsYW5kIHdpbmRvdyBtYW5hZ2VycycuIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2JpbmRpcn0vKiIKLQotRklMRVNfJHtQTn0teHdheWxhbmQgPSAiJHtsaWJkaXJ9L2xpYndlc3Rvbi0zL3h3YXlsYW5kLnNvIgotUkRFUEVORFNfJHtQTn0teHdheWxhbmQgKz0gInhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInhrZXlib2FyZC1jb25maWciCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWJlcmF0aW9uLWZvbnRzIgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICJ3YXlsYW5kLXByb3RvY29scyIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHdlc3Rvbi1sYXVuY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl81LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzUuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MTcxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl81LjAuMC5iYgpAQCAtMCwwICsxLDEwOCBAQAorU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgorREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNzttZDU9NmM1M2JiYmQ5OTI3M2Y0ZjdjNGFmZmE4NTVjMzNjMGEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjc1MmEwNGNlM2M2NWFmNDg4NGNmYWM0ZTU3MjMxYmRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1YTIzNDIzYmNmYTQ1ZTMxZTFkZWRjMGNkNTI0YmE3MWUyOTMwZGYxNzRmZGU5Yzk5YjcxYTUzN2M0ZTRjYWYiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjaworIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgorREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKKworV0VTVE9OX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjFdKX0iCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zZXR1aWQtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJkcC1jb21wb3NpdG9yIFwKKyAgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCB4MTEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgorIworIyBDb21wb3NpdG9yIGNob2ljZXMKKyMKKyMgV2VzdG9uIG9uIEtNUworUEFDS0FHRUNPTkZJR1trbXNdID0gIi0tZW5hYmxlLWRybS1jb21wb3NpdG9yLC0tZGlzYWJsZS1kcm0tY29tcG9zaXRvcixkcm0gdWRldiB2aXJ0dWFsL21lc2EgdmlydHVhbC9saWJnYm0gbXRkZXYiCisjIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix2aXJ0dWFsL21lc2EiCisjIFdlc3RvbiBvbiBYMTEKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEtY29tcG9zaXRvciwtLWRpc2FibGUteDExLWNvbXBvc2l0b3IsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgorIyBIZWFkbGVzcyBXZXN0b24KK1BBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi0tZW5hYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IiCisjIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgorUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLS1lbmFibGUtZmJkZXYtY29tcG9zaXRvciwtLWRpc2FibGUtZmJkZXYtY29tcG9zaXRvcix1ZGV2IG10ZGV2IgorIyB3ZXN0b24tbGF1bmNoCitQQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLS1lbmFibGUtd2VzdG9uLWxhdW5jaCwtLWRpc2FibGUtd2VzdG9uLWxhdW5jaCxkcm0iCisjIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaS1yZWNvcmRlciwtLWRpc2FibGUtdmFhcGktcmVjb3JkZXIsbGlidmEiCisjIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0tZW5hYmxlLXNpbXBsZS1lZ2wtY2xpZW50cywtLWRpc2FibGUtZWdsIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsdmlydHVhbC9lZ2wiCisjIFdlc3RvbiB3aXRoIGNhaXJvIGdsZXN2MiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NhaXJvLWdsZXN2Ml0gPSAiLS13aXRoLWNhaXJvLWdsZXN2MiwtLXdpdGgtY2Fpcm89aW1hZ2UsY2Fpcm8iCisjIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zLC0tZGlzYWJsZS1sY21zLGxjbXMiCisjIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgorIyBXZXN0b24gd2l0aCBzeXN0ZW1kLWxvZ2luIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZC1sb2dpbiwtLWRpc2FibGUtc3lzdGVtZC1sb2dpbixzeXN0ZW1kIGRidXMiCisjIFdlc3RvbiB3aXRoIFh3YXlsYW5kIHN1cHBvcnQgKHJlcXVpcmVzIFgxMSBhbmQgV2F5bGFuZCkKK1BBQ0tBR0VDT05GSUdbeHdheWxhbmRdID0gIi0tZW5hYmxlLXh3YXlsYW5kLC0tZGlzYWJsZS14d2F5bGFuZCIKKyMgY29sb3JkIENNUyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NvbG9yZF0gPSAiLS1lbmFibGUtY29sb3JkLC0tZGlzYWJsZS1jb2xvcmQsY29sb3JkIgorIyBDbGllbnRzIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbY2xpZW50c10gPSAiLS1lbmFibGUtY2xpZW50cyAtLWVuYWJsZS1zaW1wbGUtY2xpZW50cyAtLWVuYWJsZS1kZW1vLWNsaWVudHMtaW5zdGFsbCwtLWRpc2FibGUtY2xpZW50cyAtLWRpc2FibGUtc2ltcGxlLWNsaWVudHMiCisjIFdlc3RvbiB3aXRoIFBBTSBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZXN0b24gZG9lc24ndCBuZWVkIHRoZSAubGEgZmlsZXMgdG8gbG9hZCBtb2R1bGVzLCBzbyB3aXBlIHRoZW0KKwlybSAtZiAke0R9LyR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5sYQorCisJIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisJCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKKworCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAorCWZpCit9CisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGxpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSAke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKKworRklMRVNfbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5zbyIKK1NVTU1BUllfbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059L3h3YXlsYW5kLnNvIgorUkRFUEVORFNfJHtQTn0teHdheWxhbmQgKz0gInhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKKworUkRFUEVORFNfJHtQTn0gKz0gInhrZXlib2FyZC1jb25maWciCitSUkVDT01NRU5EU18ke1BOfSA9ICJ3ZXN0b24tY29uZiBsaWJlcmF0aW9uLWZvbnRzIgorUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICJ3YXlsYW5kLXByb3RvY29scyIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHdlc3Rvbi1sYXVuY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWNmMTg2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNyZWF0ZSBhbiBpbmRleCBvZiBzY2FsYWJsZSBmb250IGZpbGVzIGZvciBYIgotCi1ERVNDUklQVElPTiA9ICJGb3IgZWFjaCBkaXJlY3RvcnkgYXJndW1lbnQsIG1rZm9udHNjYWxlIHJlYWRzIGFsbCBvZiB0aGUgXAotc2NhbGFibGUgZm9udCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LiBGb3IgZXZlcnkgZm9udCBmaWxlIGZvdW5kLCBhbiBYMTEgXAotZm9udCBuYW1lIChYTEZEKSBpcyBnZW5lcmF0ZWQsIGFuZCBpcyB3cml0dGVuIHRvZ2V0aGVyIHdpdGggdGhlIGZpbGUgXAotbmFtZSB0byBhIGZpbGUgZm9udHMuc2NhbGUgaW4gdGhlIGRpcmVjdG9yeS4gIFRoZSByZXN1bHRpbmcgZm9udHMuc2NhbGUgXAotaXMgdXNlZCBieSB0aGUgbWtmb250ZGlyIHByb2dyYW0uIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zLW5hdGl2ZSB6bGliIGxpYmZvbnRlbmMgZnJlZXR5cGUgeHByb3RvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmUwZDEyOWQwNTMwNTE3NmQxYTc5MGUwYWMxYWNiN2YiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YmRkNmViZmE2MmIxYmJkNDc0OTA2YWM4NmE0MGZkOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YzZkNTIyOGFmODg1NDc3YjlhZWM2MGNhNmYxNzI1NzhlN2QyZGU0MjIzNDM1N2FmNjJmYjAwNDM5NDUzZjIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTZiZWMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNyZWF0ZSBhbiBpbmRleCBvZiBzY2FsYWJsZSBmb250IGZpbGVzIGZvciBYIgorCitERVNDUklQVElPTiA9ICJGb3IgZWFjaCBkaXJlY3RvcnkgYXJndW1lbnQsIG1rZm9udHNjYWxlIHJlYWRzIGFsbCBvZiB0aGUgXAorc2NhbGFibGUgZm9udCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LiBGb3IgZXZlcnkgZm9udCBmaWxlIGZvdW5kLCBhbiBYMTEgXAorZm9udCBuYW1lIChYTEZEKSBpcyBnZW5lcmF0ZWQsIGFuZCBpcyB3cml0dGVuIHRvZ2V0aGVyIHdpdGggdGhlIGZpbGUgXAorbmFtZSB0byBhIGZpbGUgZm9udHMuc2NhbGUgaW4gdGhlIGRpcmVjdG9yeS4gIFRoZSByZXN1bHRpbmcgZm9udHMuc2NhbGUgXAoraXMgdXNlZCBieSB0aGUgbWtmb250ZGlyIHByb2dyYW0uIgorCitERVBFTkRTID0gInV0aWwtbWFjcm9zLW5hdGl2ZSB6bGliIGxpYmZvbnRlbmMgZnJlZXR5cGUgeG9yZ3Byb3RvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmUwZDEyOWQwNTMwNTE3NmQxYTc5MGUwYWMxYWNiN2YiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ODdjNDM4ZTc5ZjVkZGI4NGE5YzU3MjZhMTYxMDgxOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTk4ZGY2OWVlNWY0NTQyZDcxMWUxNDBlMWQ5M2UyYzNmMjc3NTQwN2NjYmI3ODQ5MTEwZDUyYjkxNzgyYTZhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvcmdiXzEuMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvcmdiXzEuMC42LmJiCmluZGV4IDg3MjY4MDQuLmMzZTg1MzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3JnYl8xLjAuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9yZ2JfMS4wLjYuYmIKQEAgLTYsNyArNiw3IEBACiBsb29rdXAsIHRoZSByZ2IgcHJvZ3JhbSB0byBjb252ZXJ0IHRoZSB0ZXh0IGZpbGUgaW50byB0aGUgYmluYXJ5IGRhdGFiYXNlIFwKIGZvcm1hdC4iCiAKLURFUEVORFMgKz0gIiB4cHJvdG8gdXRpbC1tYWNyb3MiCitERVBFTkRTICs9ICIgeG9yZ3Byb3RvIHV0aWwtbWFjcm9zIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWY1OThhZGJlMjQxYmQwYjBiOTExMzgzMWY2ZTI0OWEiCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXZfMS4yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXZfMS4yLjIuYmIKaW5kZXggZjE1MWI1Ny4uMDcwNWI3ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGV2XzEuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hldl8xLjIuMi5iYgpAQCAtMTAsNyArMTAsNyBAQAogCiBQRSA9ICIxIgogCi1ERVBFTkRTICs9ICJsaWJ4cmFuZHIgeHByb3RvIgorREVQRU5EUyArPSAibGlieHJhbmRyIHhvcmdwcm90byIKIAogU1JDX1VSSSArPSAiZmlsZTovL2RpZXQteDExLnBhdGNoIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXllc18xLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hleWVzXzEuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGQwY2I4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hleWVzXzEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWDExIGV5ZXMgdGhhdCBmb2xsb3cgdGhlIG1vdXNlIGN1cnNvciBkZW1vIgotREVTQ1JJUFRJT04gPSAiWGV5ZXMgaXMgYSBzbWFsbCBYMTEgYXBwbGljYXRpb24gdGhhdCBzaG93cyBhIHBhaXIgb2YgZXllcyB0aGF0IG1vdmUgdG8gXAotZm9sbG93IHRoZSBsb2NhdGlvbiBvZiB0aGUgbW91c2UgY3Vyc29yIGFyb3VuZCB0aGUgc2NyZWVuLiIKLQotUEUgPSAiMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2VhNTFiMzY1MDUxYWMzMmQxODEzYTdkYmFhNGJmYzYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMzAzNWRjZWNkYmRiODllODY0MTc3YzA4MDkyNDk4MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzVlOTg2ODBjZDU5ZTFmOTQzOTAxNjM4NjYwOTU0NmVkMDhjMjg0ZDBmMDVhOTUyNzZmOTZhY2E2ZThhNTIxIgotCi1ERVBFTkRTICs9ICJsaWJ4YXUgbGlieHQgbGlieGV4dCBsaWJ4bXUgbGlieHJlbmRlciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hleWVzXzEuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGV5ZXNfMS4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY4ODVmOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hleWVzXzEuMS4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlgxMSBleWVzIHRoYXQgZm9sbG93IHRoZSBtb3VzZSBjdXJzb3IgZGVtbyIKK0RFU0NSSVBUSU9OID0gIlhleWVzIGlzIGEgc21hbGwgWDExIGFwcGxpY2F0aW9uIHRoYXQgc2hvd3MgYSBwYWlyIG9mIGV5ZXMgdGhhdCBtb3ZlIHRvIFwKK2ZvbGxvdyB0aGUgbG9jYXRpb24gb2YgdGhlIG1vdXNlIGN1cnNvciBhcm91bmQgdGhlIHNjcmVlbi4iCisKK1BFID0gIjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNlYTUxYjM2NTA1MWFjMzJkMTgxM2E3ZGJhYTRiZmM2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmYwNTQzZWM4NDI4M2RmNTc0M2VlYWZjMTczYmVhNGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdiY2VjMGQyZDE2N2FmOWU1ZDQ0ZDBkYmQ3NGM2ZDdjMGYwNTkxY2QwNjA4OTUyYjIzYzc0OWZkZDkxMDU1MyIKKworREVQRU5EUyArPSAibGlieGF1IGxpYnh0IGxpYnhleHQgbGlieG11IGxpYnhyZW5kZXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjMuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0XzEuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzE4NTE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0XzEuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWCBXaW5kb3cgU3lzdGVtIGluaXRpYWxpemVyIgotCi1ERVNDUklQVElPTiA9ICJUaGUgeGluaXQgcHJvZ3JhbSBpcyB1c2VkIHRvIHN0YXJ0IHRoZSBYIFdpbmRvdyBTeXN0ZW0gXAotc2VydmVyIGFuZCBhIGZpcnN0IGNsaWVudCBwcm9ncmFtIG9uIHN5c3RlbXMgdGhhdCBjYW5ub3Qgc3RhcnQgWCBcCi1kaXJlY3RseSBmcm9tIC9ldGMvaW5pdCBvciBpbiBlbnZpcm9ubWVudHMgdGhhdCB1c2UgbXVsdGlwbGUgd2luZG93IFwKLXN5c3RlbXMuIFdoZW4gdGhpcyBmaXJzdCBjbGllbnQgZXhpdHMsIHhpbml0IHdpbGwga2lsbCB0aGUgWCBzZXJ2ZXIgYW5kIFwKLXRoZW4gdGVybWluYXRlLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MThmMDFlN2IzOTgwN2JlYmUyYjhkZjEwMWEwMzliNjgiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZTkyODQ1MmRmYWY3Mzg1MTQxM2EyZDhiOGM3NjM4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWQ4OGQ3Mzk3YTA3ZTAxZGIyNTMxNjNiN2M3YTAwYjI0OWIzZDMwZTk5NDg5ZjI3MzRjYWM5YTBjNzkwMmIzIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9NQ09PS0lFPSR7YmluZGlyfS9tY29va2llIgotCi1SREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eC1tY29va2llIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzJhMDZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjAuYmIKQEAgLTAsMCArMSwyMCBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWCBXaW5kb3cgU3lzdGVtIGluaXRpYWxpemVyIgorCitERVNDUklQVElPTiA9ICJUaGUgeGluaXQgcHJvZ3JhbSBpcyB1c2VkIHRvIHN0YXJ0IHRoZSBYIFdpbmRvdyBTeXN0ZW0gXAorc2VydmVyIGFuZCBhIGZpcnN0IGNsaWVudCBwcm9ncmFtIG9uIHN5c3RlbXMgdGhhdCBjYW5ub3Qgc3RhcnQgWCBcCitkaXJlY3RseSBmcm9tIC9ldGMvaW5pdCBvciBpbiBlbnZpcm9ubWVudHMgdGhhdCB1c2UgbXVsdGlwbGUgd2luZG93IFwKK3N5c3RlbXMuIFdoZW4gdGhpcyBmaXJzdCBjbGllbnQgZXhpdHMsIHhpbml0IHdpbGwga2lsbCB0aGUgWCBzZXJ2ZXIgYW5kIFwKK3RoZW4gdGVybWluYXRlLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MThmMDFlN2IzOTgwN2JlYmUyYjhkZjEwMWEwMzliNjgiCisKK1BFID0gIjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZGExNTRiMmY4MGNhOTYzN2IxYTE3YjEzYWYwODgwYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzA4MzVlZWYyZjU5NzhhMWUxMzQ0OTI4MTY4MTE5MzczZjZkZjFkMGEzMmMwOTUxNWU1NDU3MjFlZTU4MmVmIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9NQ09PS0lFPSR7YmluZGlyfS9tY29va2llIgorCitSREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eC1tY29va2llIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5ZGMzMjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjb21waWxlIFhLQiBrZXlib2FyZCBkZXNjcmlwdGlvbiIKLQotREVTQ1JJUFRJT04gPSAiVGhlIHhrYmNvbXAga2V5bWFwIGNvbXBpbGVyIGNvbnZlcnRzIGEgZGVzY3JpcHRpb24gb2YgYW4gXAotWEtCIGtleW1hcCBpbnRvIG9uZSBvZiBzZXZlcmFsIG91dHB1dCBmb3JtYXRzLiBUaGUgbW9zdCBjb21tb24gdXNlIGZvciBcCi14a2Jjb21wIGlzIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIGtleW1hcCBmaWxlICgueGttIGV4dGVuc2lvbikgd2hpY2ggY2FuIFwKLWJlIHJlYWQgZGlyZWN0bHkgYnkgWEtCLWNhcGFibGUgWCBzZXJ2ZXJzIG9yIHV0aWxpdGllcy4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4NDM2ZTRmNDQ3Njk2NGUyZTJkZDdlN2U0MWUwNzZhIgotCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotREVQRU5EUyArPSAibGlieGtiZmlsZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYzIyYjIzMmJjNzhhMzAzMzcxOTgzZTFiNDg3OTRhYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzY5Yzg3NDhjMDNjNWFkOWFmZGM4ZGZmOWRiMTE5OTRkZDg3MWI2MTRjNjVmODk0MDUxNmRhNmJmNjFjZTZiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFmOGVhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIKQEAgLTAsMCArMSwxNyBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNvbXBpbGUgWEtCIGtleWJvYXJkIGRlc2NyaXB0aW9uIgorCitERVNDUklQVElPTiA9ICJUaGUgeGtiY29tcCBrZXltYXAgY29tcGlsZXIgY29udmVydHMgYSBkZXNjcmlwdGlvbiBvZiBhbiBcCitYS0Iga2V5bWFwIGludG8gb25lIG9mIHNldmVyYWwgb3V0cHV0IGZvcm1hdHMuIFRoZSBtb3N0IGNvbW1vbiB1c2UgZm9yIFwKK3hrYmNvbXAgaXMgdG8gY3JlYXRlIGEgY29tcGlsZWQga2V5bWFwIGZpbGUgKC54a20gZXh0ZW5zaW9uKSB3aGljaCBjYW4gXAorYmUgcmVhZCBkaXJlY3RseSBieSBYS0ItY2FwYWJsZSBYIHNlcnZlcnMgb3IgdXRpbGl0aWVzLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDg0MzZlNGY0NDc2OTY0ZTJlMmRkN2U3ZTQxZTA3NmEiCisKK0RFUEVORFMgKz0gImxpYnhrYmZpbGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTI2MTBkZjE5ZGYyYWYzNzk3ZjJjMTMwZWUyYmNlOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRkOGJjYjliZTdlODViZDcyOTRhYmUyNjFiOGM3YjA1MzlkMmZjOTNlNDFiODBmYjhiZDAxMzc2N2NlODQyNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hwcm9wXzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHByb3BfMS4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3OGJmMDQ1MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94cHJvcF8xLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlV0aWxpdHkgdG8gZGlzcGxheSB3aW5kb3cgYW5kIGZvbnQgcHJvcGVydGllcyBvZiBhbiBYIHNlcnZlciIKLQotREVTQ1JJUFRJT04gPSAiVGhlIHhwcm9wIHV0aWxpdHkgaXMgZm9yIGRpc3BsYXlpbmcgd2luZG93IGFuZCBmb250IFwKLXByb3BlcnRpZXMgaW4gYW4gWCBzZXJ2ZXIuIE9uZSB3aW5kb3cgb3IgZm9udCBpcyBzZWxlY3RlZCB1c2luZyB0aGUgXAotY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvciBwb3NzaWJseSBpbiB0aGUgY2FzZSBvZiBhIHdpbmRvdywgYnkgY2xpY2tpbmcgXAotb24gdGhlIGRlc2lyZWQgd2luZG93LiBBIGxpc3Qgb2YgcHJvcGVydGllcyBpcyB0aGVuIGdpdmVuLCBwb3NzaWJseSB3aXRoIFwKLWZvcm1hdHRpbmcgaW5mb3JtYXRpb24uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMjI2YWI4ZGI4OGFjMGJjMDM5MTY3M2JlNDBjOWY5MSIKLQotREVQRU5EUyArPSAibGlieG11IgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmFlM2QyZmRhMDc2ODQwMjdhNjQzY2E3ODNkNTk1Y2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWJlZTg4YjEwMjU4NjVhZDEyMWY3MmQzMjU3NmRkMzAyN2FmMTQ0Njc3NGFhODMwMGNjZTNjMjYxZDg2OWJjNiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hwcm9wXzEuMi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHByb3BfMS4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1OGQ0NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hwcm9wXzEuMi4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlV0aWxpdHkgdG8gZGlzcGxheSB3aW5kb3cgYW5kIGZvbnQgcHJvcGVydGllcyBvZiBhbiBYIHNlcnZlciIKKworREVTQ1JJUFRJT04gPSAiVGhlIHhwcm9wIHV0aWxpdHkgaXMgZm9yIGRpc3BsYXlpbmcgd2luZG93IGFuZCBmb250IFwKK3Byb3BlcnRpZXMgaW4gYW4gWCBzZXJ2ZXIuIE9uZSB3aW5kb3cgb3IgZm9udCBpcyBzZWxlY3RlZCB1c2luZyB0aGUgXAorY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvciBwb3NzaWJseSBpbiB0aGUgY2FzZSBvZiBhIHdpbmRvdywgYnkgY2xpY2tpbmcgXAorb24gdGhlIGRlc2lyZWQgd2luZG93LiBBIGxpc3Qgb2YgcHJvcGVydGllcyBpcyB0aGVuIGdpdmVuLCBwb3NzaWJseSB3aXRoIFwKK2Zvcm1hdHRpbmcgaW5mb3JtYXRpb24uIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMjI2YWI4ZGI4OGFjMGJjMDM5MTY3M2JlNDBjOWY5MSIKKworREVQRU5EUyArPSAibGlieG11IgorCitQRSA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGJlY2IzZGRjNDY3NGQ3NDE0ODcxODllNGNlM2QwYjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDIyYWZiMjhjODZkODVmZmYxMGE1MDE1NmE3ZDBmYTkzMGM4MGFlODY1ZDcwYjI2ZDgwNWZkMjhhMTdhNTIxYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXRfMS4yLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0XzEuMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjgzYjc2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXRfMS4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBzZXR0aW5nIHZhcmlvdXMgdXNlciBwcmVmZXJlbmNlIG9wdGlvbnMgb2YgdGhlIGRpc3BsYXkiCi0KLURFU0NSSVBUSU9OID0gInhzZXQgaXMgYSB1dGlsaXR5IHRoYXQgaXMgdXNlZCB0byBzZXQgdmFyaW91cyB1c2VyIFwKLXByZWZlcmVuY2Ugb3B0aW9ucyBvZiB0aGUgZGlzcGxheS4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmVhODFjYzk4MjdjZGYxYWYwZTEyYzJiODIyOGNmOGQiCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnh4Zjg2bWlzYyBsaWJ4bXUgbGlieGF1IgotUEUgPSAiMSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2Rpc2FibGUteGtiLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGNkMjI3Mzg4YjU3NDg3ZDU0M2NhYjJmZDdhNjAyZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM4MmY0ZmIyOWI4ODY0N2UxM2YzYjRiYzI5MjYzMTM0MjcwNzQ3ZmMxNTljZmM1ZjdlM2FmMjM1ODhjODA2MyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14a2IgLS13aXRob3V0LWZvbnRjYWNoZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXRfMS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0XzEuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NDg4MzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0XzEuMi40LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlV0aWxpdHkgZm9yIHNldHRpbmcgdmFyaW91cyB1c2VyIHByZWZlcmVuY2Ugb3B0aW9ucyBvZiB0aGUgZGlzcGxheSIKKworREVTQ1JJUFRJT04gPSAieHNldCBpcyBhIHV0aWxpdHkgdGhhdCBpcyB1c2VkIHRvIHNldCB2YXJpb3VzIHVzZXIgXAorcHJlZmVyZW5jZSBvcHRpb25zIG9mIHRoZSBkaXNwbGF5LiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iZWE4MWNjOTgyN2NkZjFhZjBlMTJjMmI4MjI4Y2Y4ZCIKK0RFUEVORFMgKz0gImxpYnhleHQgbGlieHhmODZtaXNjIGxpYnhtdSBsaWJ4YXUiCitQRSA9ICIxIgorCitTUkNfVVJJICs9ICJmaWxlOi8vZGlzYWJsZS14a2IucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MGVhN2JjN2JhY2YxYTEyNGIxNjkyNjA1ODgzZjYyMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGZkOTUyODBkZjUyYTg4ZTliMGFiYzFmZWUxMWRjZjBmMzRmYzI0MDQxYjlmNDVhMjQ3ZTUyZGY5NDFjOTU3IgorCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhrYiAtLXdpdGhvdXQtZm9udGNhY2hlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHdpbmluZm9fMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d2luaW5mb18xLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMyM2QxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d2luaW5mb18xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIldpbmRvdyBpbmZvcm1hdGlvbiB1dGlsaXR5IGZvciBYIgotCi1ERVNDUklQVElPTiA9ICJYd2luaW5mbyBpcyBhIHV0aWxpdHkgZm9yIGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQgXAotd2luZG93cy4gIEluZm9ybWF0aW9uIG1heSBpbmNsdWRlIHdpbmRvdyBwb3NpdGlvbiwgc2l6ZSwgY29sb3IgZGVwdGgsIFwKLWFuZCBhIG51bWJlciBvZiBvdGhlciBpdGVtcy4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4OTc2Y2QzMTE1ZjZmYWY2MTVhY2NjNGUwOTRkOTBlIgotREVQRU5EUyArPSAibGlieGV4dCBsaWJ4bXUgZ2V0dGV4dC1uYXRpdmUiCi0KLVBFID0gIjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNzc3YmFmYjY3NDU1NWU0OGZkODQzNzYxODI3MDkzMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMThlYjBlYTk1YmQ4ZGU3OTAzZGZhYTI2NDIzODIwYzUyM2FkMTU5OGJlMDc1MWQyZDhiNmEyYzIzYjIzZmY4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHdpbmluZm9fMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d2luaW5mb18xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmI5MGRkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHdpbmluZm9fMS4xLjQuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiV2luZG93IGluZm9ybWF0aW9uIHV0aWxpdHkgZm9yIFgiCisKK0RFU0NSSVBUSU9OID0gIlh3aW5pbmZvIGlzIGEgdXRpbGl0eSBmb3IgZGlzcGxheWluZyBpbmZvcm1hdGlvbiBhYm91dCBcCit3aW5kb3dzLiAgSW5mb3JtYXRpb24gbWF5IGluY2x1ZGUgd2luZG93IHBvc2l0aW9uLCBzaXplLCBjb2xvciBkZXB0aCwgXAorYW5kIGEgbnVtYmVyIG9mIG90aGVyIGl0ZW1zLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Nzg5NzZjZDMxMTVmNmZhZjYxNWFjY2M0ZTA5NGQ5MGUiCitERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnhtdSBnZXR0ZXh0LW5hdGl2ZSIKKworUEUgPSAiMCIKKworU1JDX1VSSVttZDVzdW1dID0gIjlhNTA1YjkxYWU3MTYwYmJkZWMzNjA5NjhkMDYwYzgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzOTQ5OGFhNDZiNDk2NDkyYTVjNjVjZDQyY2QyZTg2ZTBkYTg4MTQ5YjA2NzJlOTBjYjkxNjQ4ZjhjZDViMDEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWV2ZGV2XzIuMTAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmIyMjBjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKLQotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBldmVudCBkZXZpY2VzIChldmRldikgaW5wdXQgZHJpdmVyIgotCi1ERVNDUklQVElPTiA9ICJldmRldiBpcyBhbiBYb3JnIGlucHV0IGRyaXZlciBmb3IgTGludXgncyBnZW5lcmljIGV2ZW50IFwKLWRldmljZXMuIEl0IHRoZXJlZm9yZSBzdXBwb3J0cyBhbGwgaW5wdXQgZGV2aWNlcyB0aGF0IHRoZSBrZXJuZWwga25vd3MgXAotYWJvdXQsIGluY2x1ZGluZyBtb3N0IG1pY2UgYW5kIGtleWJvYXJkcy4gXAotXAotVGhlIGV2ZGV2IGRyaXZlciBjYW4gc2VydmUgYXMgYm90aCBhIHBvaW50ZXIgYW5kIGEga2V5Ym9hcmQgaW5wdXQgXAotZGV2aWNlLCBhbmQgbWF5IGJlIHVzZWQgYXMgYm90aCB0aGUgY29yZSBrZXlib2FyZCBhbmQgdGhlIGNvcmUgcG9pbnRlci4gXAotTXVsdGlwbGUgaW5wdXQgZGV2aWNlcyBhcmUgc3VwcG9ydGVkIGJ5IG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGlzIFwKLWRyaXZlciwgd2l0aCBvbmUgTG9hZCBkaXJlY3RpdmUgZm9yIGV2ZGV2IGluIHRoZSBNb2R1bGUgc2VjdGlvbiBvZiB5b3VyIFwKLXhvcmcuY29uZiBmb3IgZWFjaCBpbnB1dCBkZXZpY2UgdGhhdCB3aWxsIHVzZSB0aGlzIGRyaXZlci4gIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZWZlMzNiMWNmMGNhY2JhMGU3MmUzYjBmYTBmMGUxNiIKLQotREVQRU5EUyArPSAibXRkZXYgbGliZXZkZXYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGMyYzgzNTRjNzRhYjFjZmJiYjBhMjIyMDc4YjljNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZWRhYTYyMDViYWY2ZDI5MjJjYzRkYjNkOGU1NGE3ZTc3NzNiNWY3MzNiMGFlOTBmNmJlNzcyNWY5ODNiNzBkIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWV2ZGV2XzIuMTAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZTMyNWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWV2ZGV2XzIuMTAuNi5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYworCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIGV2ZW50IGRldmljZXMgKGV2ZGV2KSBpbnB1dCBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gImV2ZGV2IGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciBMaW51eCdzIGdlbmVyaWMgZXZlbnQgXAorZGV2aWNlcy4gSXQgdGhlcmVmb3JlIHN1cHBvcnRzIGFsbCBpbnB1dCBkZXZpY2VzIHRoYXQgdGhlIGtlcm5lbCBrbm93cyBcCithYm91dCwgaW5jbHVkaW5nIG1vc3QgbWljZSBhbmQga2V5Ym9hcmRzLiBcCitcCitUaGUgZXZkZXYgZHJpdmVyIGNhbiBzZXJ2ZSBhcyBib3RoIGEgcG9pbnRlciBhbmQgYSBrZXlib2FyZCBpbnB1dCBcCitkZXZpY2UsIGFuZCBtYXkgYmUgdXNlZCBhcyBib3RoIHRoZSBjb3JlIGtleWJvYXJkIGFuZCB0aGUgY29yZSBwb2ludGVyLiBcCitNdWx0aXBsZSBpbnB1dCBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgXAorZHJpdmVyLCB3aXRoIG9uZSBMb2FkIGRpcmVjdGl2ZSBmb3IgZXZkZXYgaW4gdGhlIE1vZHVsZSBzZWN0aW9uIG9mIHlvdXIgXAoreG9yZy5jb25mIGZvciBlYWNoIGlucHV0IGRldmljZSB0aGF0IHdpbGwgdXNlIHRoaXMgZHJpdmVyLiAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlZmUzM2IxY2YwY2FjYmEwZTcyZTNiMGZhMGYwZTE2IgorCitERVBFTkRTICs9ICJtdGRldiBsaWJldmRldiIKKworU1JDX1VSSVttZDVzdW1dID0gImU4YmQxZWRjNjc1MWY5MmU0MjVjYWU3ZWJhM2M2MWViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3MjYwNzNlODE4NjFiYzdiMjMyMWU3NjI3MmNiZGJkMzNjN2UxYTEyMTUzNWE5ODI3OTc3MjY1YjkwMzNlYzAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGMzM2Q3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKLQotU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgotCi1ERVBFTkRTICs9ICJsaWJpbnB1dCIKLQotU1JDX1VSSVttZDVzdW1dID0gImRhNDdlZjYyZWFiMWQwZTkyMmE4ZmE5MjlmZjgxNzU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiY2E1NThmYzIyMjZmMjk1NjkxZjFjZjM0MTJkNGMwZWRlYWE0MzlmNjc3Y2EyNWI1YzlmYWIzMTBkMjM4N2IiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI4LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1M2I1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yOC4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCisKK1NVTU1BUlkgPSAiR2VuZXJpYyBpbnB1dCBkcml2ZXIgZm9yIHRoZSBYLk9yZyBzZXJ2ZXIgYmFzZWQgb24gbGliaW5wdXQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZTZiMjBlYTJlZjk0YTk5ODE0NWYwZWEzZjc4OGVlMCIKKworREVQRU5EUyArPSAibGliaW5wdXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDc1MTlhYzBlMzlkNGM4OGYzYmUzMmU4MWE2MzdhYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTk5NGQwNjVmYzI2ZTg1ZDFjM2ZjODdkODQ3OWI5YzIyNjk5ZWQ1YTAxMTlkZjk4ZmJlMDAwMGU4NDYzMGExIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveG9yZy5jb25mLmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW1vdXNlXzEuOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1tb3VzZV8xLjkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc1MDQ3Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW1vdXNlXzEuOS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKLQotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBtb3VzZSBpbnB1dCBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gIm1vdXNlIGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciBtaWNlLiBUaGUgZHJpdmVyIFwKLXN1cHBvcnRzIG1vc3QgYXZhaWxhYmxlIG1vdXNlIHR5cGVzIGFuZCBpbnRlcmZhY2VzLiAgVGhlIG1vdXNlIGRyaXZlciBcCi1mdW5jdGlvbnMgYXMgYSBwb2ludGVyIGlucHV0IGRldmljZSwgYW5kIG1heSBiZSB1c2VkIGFzIHRoZSBYIHNlcnZlcidzIFwKLWNvcmUgcG9pbnRlci4gTXVsdGlwbGUgbWljZSBhcmUgc3VwcG9ydGVkIGJ5IG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGlzIFwKLWRyaXZlci4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwZWE5ZjkwZDcyYjZkOTMyN2RlZGU1ZmZkYjJhNTEwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2UyZDY3OTI4M2EyMmM4ZTBkY2NkZDkyNDg1OTQ4NDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjQyNWQ1YjA1YzZhYjQxMmEyN2UwYTExMDZiYjgzZjllMjY2MmIzMDcyMTBhYmJlNDgyNzA4OTIzODdmNGIyZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbW91c2VfMS45LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW1vdXNlXzEuOS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOGRhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW1vdXNlXzEuOS4zLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gbW91c2UgaW5wdXQgZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJtb3VzZSBpcyBhbiBYb3JnIGlucHV0IGRyaXZlciBmb3IgbWljZS4gVGhlIGRyaXZlciBcCitzdXBwb3J0cyBtb3N0IGF2YWlsYWJsZSBtb3VzZSB0eXBlcyBhbmQgaW50ZXJmYWNlcy4gIFRoZSBtb3VzZSBkcml2ZXIgXAorZnVuY3Rpb25zIGFzIGEgcG9pbnRlciBpbnB1dCBkZXZpY2UsIGFuZCBtYXkgYmUgdXNlZCBhcyB0aGUgWCBzZXJ2ZXIncyBcCitjb3JlIHBvaW50ZXIuIE11bHRpcGxlIG1pY2UgYXJlIHN1cHBvcnRlZCBieSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhpcyBcCitkcml2ZXIuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGVhOWY5MGQ3MmI2ZDkzMjdkZWRlNWZmZGIyYTUxMCIKKworU1JDX1VSSVttZDVzdW1dID0gImEyMTA0NjkzYmJjZmUxNDEzMzk3Zjc5MDVlZWNkM2RjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzZWNiMzUwNjA0ZDA1YmU5OGI3ZDRlNWRiM2I4MTU1YTQ0ODkwMDY5YTdkOGQ2YjgwMGMwYmVhNzljODVjYzUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXN5bmFwdGljc18xLjkuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzI3YTNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKLQotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBzeW5hcHRpY3MgdG91Y2hwYWQgaW5wdXQgZHJpdmVyIgotCi1ERVNDUklQVElPTiA9ICJzeW5hcHRpY3MgaXMgYW4gWG9yZyBpbnB1dCBkcml2ZXIgZm9yIHRoZSB0b3VjaHBhZHMgZnJvbSBcCi1TeW5hcHRpY3MgSW5jb3Jwb3JhdGVkLiBFdmVuIHRob3VnaCB0aGVzZSB0b3VjaHBhZHMgKGJ5IGRlZmF1bHQsIFwKLW9wZXJhdGluZyBpbiBhIGNvbXBhdGliaWxpdHkgbW9kZSBlbXVsYXRpbmcgYSBzdGFuZGFyZCBtb3VzZSkgY2FuIGJlIFwKLWhhbmRsZWQgYnkgdGhlIG5vcm1hbCBldmRldiBvciBtb3VzZSBkcml2ZXJzLCB0aGlzIGRyaXZlciBhbGxvd3MgbW9yZSBcCi1hZHZhbmNlZCBmZWF0dXJlcyBvZiB0aGUgdG91Y2hwYWQgdG8gYmVjb21lIGF2YWlsYWJsZS4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1YWFjZDM1MzVhNzQxODI0OTU1YzVlYjhmMDYxMzk4IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNThlNWI3NzIyYTQwMjExNDA5M2JmMTkzOTYyZDFlM2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWZiYTMyODlkN2E0MDIxN2ExOWQ5MGRiOThjZTE4MTc3MmY5Y2E2ZDc3ZTE4OTg3MjdiMGFmY2YwMjA3M2I1YSIKLQotREVQRU5EUyArPSAibGlieGkgbXRkZXYgbGlieHRzdCBsaWJldmRldiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMzMTg5MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gc3luYXB0aWNzIHRvdWNocGFkIGlucHV0IGRyaXZlciIKKworREVTQ1JJUFRJT04gPSAic3luYXB0aWNzIGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciB0aGUgdG91Y2hwYWRzIGZyb20gXAorU3luYXB0aWNzIEluY29ycG9yYXRlZC4gRXZlbiB0aG91Z2ggdGhlc2UgdG91Y2hwYWRzIChieSBkZWZhdWx0LCBcCitvcGVyYXRpbmcgaW4gYSBjb21wYXRpYmlsaXR5IG1vZGUgZW11bGF0aW5nIGEgc3RhbmRhcmQgbW91c2UpIGNhbiBiZSBcCitoYW5kbGVkIGJ5IHRoZSBub3JtYWwgZXZkZXYgb3IgbW91c2UgZHJpdmVycywgdGhpcyBkcml2ZXIgYWxsb3dzIG1vcmUgXAorYWR2YW5jZWQgZmVhdHVyZXMgb2YgdGhlIHRvdWNocGFkIHRvIGJlY29tZSBhdmFpbGFibGUuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWFhY2QzNTM1YTc0MTgyNDk1NWM1ZWI4ZjA2MTM5OCIKKworU1JDX1VSSVttZDVzdW1dID0gImNmYjc5ZDNjOTc1MTUxZjliYmYzMGI3MjdjMjYwY2I5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhZjgzNTI2ZWZmMWM3NmU4YjllMTU1M2IzNDI0NWMyMDNkMDI5MDI4ZDgwNDRkZDlkY2Y3MWVlZjEwMDE1NzYiCisKK0RFUEVORFMgKz0gImxpYnhpIG10ZGV2IGxpYnh0c3QgbGliZXZkZXYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWZiZGV2XzAuNC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1mYmRldl8wLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJlOWJkMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWZiZGV2XzAuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLXZpZGVvLmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIGZiZGV2IGRpc3BsYXkgZHJpdmVyIgotREVTQ1JJUFRJT04gPSAiZmJkZXYgaXMgYW4gWG9yZyBkcml2ZXIgZm9yIGZyYW1lYnVmZmVyIGRldmljZXMuIFRoaXMgaXMgYSBub24tYWNjZWxlcmF0ZWQgZHJpdmVyLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDhjYmQ5OWZmZjc3M2Y5MmU4NDQ5NDhmNzRlZjBkZjgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzOTMxYzBlMTlkNDQxY2M1NzZkYzA4OGY5ZWI5ZmQ3MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZGQ0YjMyNjQ5ODIyM2FiYmZkZjc4NjA4OWE0NmVhM2RiNGZhNmJiZDM0MTMwOGViNDhhOWUwMGJjM2ZkNTFiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1mYmRldl8wLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZmJkZXZfMC41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0YWM4OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZmJkZXZfMC41LjAuYmIKQEAgLTAsMCArMSw5IEBACityZXF1aXJlIHhvcmctZHJpdmVyLXZpZGVvLmluYworCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIGZiZGV2IGRpc3BsYXkgZHJpdmVyIgorREVTQ1JJUFRJT04gPSAiZmJkZXYgaXMgYW4gWG9yZyBkcml2ZXIgZm9yIGZyYW1lYnVmZmVyIGRldmljZXMuIFRoaXMgaXMgYSBub24tYWNjZWxlcmF0ZWQgZHJpdmVyLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDhjYmQ5OWZmZjc3M2Y5MmU4NDQ5NDhmNzRlZjBkZjgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMDc0NzU2NTUzNzZiZTVhMTI0ZDgxODdhYWNkODdiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkY2MzZDg1ZjM3ODAyMjE4MGU0MzdhOWVjMDBhNTliNmNiNzY4MGZmNzljNDAzOTRkNjk1MDYwYWYyMzc0Njk5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTVkZDM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvYWx3YXlzX2luY2x1ZGVfeG9yZ19zZXJ2ZXIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUluY2x1ZGUgeG9yZy1zZXJ2ZXIuaCB0byBmaXggYnVpbGQgZXJyb3JzIHNlZW4gd2l0aCBnbGliYyAyLjIwCi0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9zdHJpbmcuaDo2MzQ6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvd29yay9pNTg2LW9lLWxpbnV4L3hmODYtdmlkZW8taW50ZWwvMl8yLjk5LjkxMi1yMC94Zjg2LXZpZGVvLWludGVsLTIuOTkuOTEyL3NyYy9iYWNrbGlnaHQuYzozOToKLS9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcvb3MuaDo1Nzk6MTogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgb3IgJygnIGJlZm9yZSAnX19leHRlbnNpb25fXycKLSBzdHJuZHVwKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IG4pOwotIF4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiB4Zjg2LXZpZGVvLWludGVsLTIuOTkuOTEyL3NyYy9iYWNrbGlnaHQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHhmODYtdmlkZW8taW50ZWwtMi45OS45MTIub3JpZy9zcmMvYmFja2xpZ2h0LmMJMjAxNC0wNC0wOSAxMDo0MToxOC4wMDAwMDAwMDAgLTA3MDAKLSsrKyB4Zjg2LXZpZGVvLWludGVsLTIuOTkuOTEyL3NyYy9iYWNrbGlnaHQuYwkyMDE0LTA4LTI4IDE4OjUyOjI1LjUyNDA3MDU4NyAtMDcwMAotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHhvcmctc2VydmVyLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9kaXNhYmxlLXgxMS1kcmkzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9kaXNhYmxlLXgxMS1kcmkzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGRkZDMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvZGlzYWJsZS14MTEtZHJpMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZXNlIG1vZHVsZXMgYXJlIG9ubHkgdXNlZCBmb3IgdGVzdHMgdGhhdCBkb24ndCBnZXQgaW5zdGFsbGVkLCBhbmQgdGhlCi1hdXRvbWF0aWMgZGV0ZWN0aW9uIHdpdGhvdXQgZXhwbGljaXQgZGVwZW5kZW5jaWVzIG1lYW5zIHRoYXQgYSBidWlsZCBjYW4gZmluZAotZS5nLiB4c2htZmVuY2UgYXQgY29uZmlndXJlIHRpbWUgYnV0IHRoZW4gaXQncyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3lzcm9vdCBieQotdGhlIHRpbWUgY29tcGlsZSBoYXBwZW5zLgotCi1BcyB0aGUgdGVzdHMgZG9uJ3QgZ2V0IGluc3RhbGxlZCwganVzdCBkaXNhYmxlIHRoZSBjaGVja3MuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiZDY1NGYzLi43OGEwZTBkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNzkgKzI3OSBAQCBmaQotLVBLR19DSEVDS19NT0RVTEVTKFgxMV9EUkkzLCBbeGNiLWRyaTMgeGNiLXN5bmMgeGNiLXhmaXhlcyB4Y2ItcHJlc2VudCB4MTEteGNiIHhzaG1mZW5jZSB4MTEgeGNvbXBvc2l0ZSB4ZGFtYWdlIHhyZW5kZXIgeHJhbmRyIHh4Zjg2dm0geGV4dCBsaWJkcm1dLCBbeDExX2RyaTM9InllcyJdLCBbeDExX2RyaTM9Im5vIl0pCi0rI1BLR19DSEVDS19NT0RVTEVTKFgxMV9EUkkzLCBbeGNiLWRyaTMgeGNiLXN5bmMgeGNiLXhmaXhlcyB4Y2ItcHJlc2VudCB4MTEteGNiIHhzaG1mZW5jZSB4MTEgeGNvbXBvc2l0ZSB4ZGFtYWdlIHhyZW5kZXIgeHJhbmRyIHh4Zjg2dm0geGV4dCBsaWJkcm1dLCBbeDExX2RyaTM9InllcyJdLCBbeDExX2RyaTM9Im5vIl0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2dsaWJjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9nbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE5ZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9nbGliYy5wYXRjaApAQCAtMCwwICsxLDI1IEBACitBZGQgYSBtaXNzaW5nIGluY2x1ZGUgbmVlZGVkIGZvciBnbGliYyAyLjI4IHRvIGF2b2lkOgorCit8IC4uLy4uL2dpdC90b29scy9iYWNrbGlnaHRfaGVscGVyLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKK3wgLi4vLi4vZ2l0L3Rvb2xzL2JhY2tsaWdodF9oZWxwZXIuYzo1NDozNDogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdtYWpvcicgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCit8ICAgaWYgKGZkIDwgMCB8fCBmc3RhdChmZCwgJnN0KSB8fCBtYWpvcihzdC5zdF9kZXYpKQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn4KK3wgLi4vLi4vZ2l0L3Rvb2xzL2JhY2tsaWdodF9oZWxwZXIuYzo1NDozNDogd2FybmluZzogbmVzdGVkIGV4dGVybiBkZWNsYXJhdGlvbiBvZiAnbWFqb3InIFstV25lc3RlZC1leHRlcm5zXQorfCBjYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKK3wgTWFrZWZpbGU6NjY2OiByZWNpcGUgZm9yIHRhcmdldCAnYmFja2xpZ2h0X2hlbHBlci5vJyBmYWlsZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitSUCAyMDE4LzgvMTIKKworSW5kZXg6IGdpdC90b29scy9iYWNrbGlnaHRfaGVscGVyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90b29scy9iYWNrbGlnaHRfaGVscGVyLmMKKysrKyBnaXQvdG9vbHMvYmFja2xpZ2h0X2hlbHBlci5jCitAQCAtOCw2ICs4LDcgQEAKKyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAKKyAjaWYgTUFKT1JfSU5fTUtERVYKKyAjaW5jbHVkZSA8c3lzL21rZGV2Lmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCmluZGV4IDI2MjNjYjIuLjY1NWZkNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC0xNCwyOCArMTQsMjUgQEAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9kcml2ZXIveGY4Ni12aWRlby1pbnRlbCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXgxMS1kcmkzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Fsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtQ29mZmVlbGFrZS1QQ0ktSURzLWZvci1TLVNrdXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2xpYmMucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmYTE5NmE2NmU1MmMwYzYyNGZlNWQzNTBhZjdhNWU3YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGI3ODFlZWEwNTU1ODI4MjBhMTIzYzQ3YjYyNDExYmRmNmFhYmY0ZjAzZGMwNTY4ZmFlYzU1ZmFmOTY2N2M5IgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCiBERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBkcm0gbGlicGNpYWNjZXNzIHBpeG1hbiIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gInh2bWMgdXhhIHVkZXYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZHJpIGRyaTEgZHJpMicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAieHZtYyB1eGEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMiBkcmkzJywgJycsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpIgotUEFDS0FHRUNPTkZJR1tkcmkxXSA9ICItLWVuYWJsZS1kcmkxLC0tZGlzYWJsZS1kcmkxLHhmODZkcmlwcm90byIKLVBBQ0tBR0VDT05GSUdbZHJpMl0gPSAiLS1lbmFibGUtZHJpMiwtLWRpc2FibGUtZHJpMixkcmkycHJvdG8iCi1QQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsLS1kaXNhYmxlLWRyaTMsZHJpM3Byb3RvIgorUEFDS0FHRUNPTkZJR1tkcmkxXSA9ICItLWVuYWJsZS1kcmkxLC0tZGlzYWJsZS1kcmkxIgorUEFDS0FHRUNPTkZJR1tkcmkyXSA9ICItLWVuYWJsZS1kcmkyLC0tZGlzYWJsZS1kcmkyIgorUEFDS0FHRUNPTkZJR1tkcmkzXSA9ICItLWVuYWJsZS1kcmkzLC0tZGlzYWJsZS1kcmkzIgogUEFDS0FHRUNPTkZJR1tzbmFdID0gIi0tZW5hYmxlLXNuYSwtLWRpc2FibGUtc25hIgogUEFDS0FHRUNPTkZJR1t1eGFdID0gIi0tZW5hYmxlLXV4YSwtLWRpc2FibGUtdXhhIgogUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyB4Y2ItdXRpbCIKLVBBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyxsaWJ4aW5lcmFtYSBsaWJ4cmFuZHIgbGlieGRhbWFnZSBsaWJ4Zml4ZXMgbGlieGN1cnNvciBsaWJ4dHN0IGxpYnhleHQgbGlieHJlbmRlciIKK1BBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyxsaWJ4aW5lcmFtYSBsaWJ4cmFuZHIgbGlieGRhbWFnZSBsaWJ4Zml4ZXMgbGlieGN1cnNvciBsaWJ4dHN0IGxpYnhyZW5kZXIgbGlieHNjcm5zYXZlciBsaWJ4ZXh0IGxpYngxMSBwaXhtYW4gbGlieGNiIGxpYnhzaG1mZW5jZSIKIAogIyAtLWVuYWJsZS1rbXMtb25seSBvcHRpb24gaXMgcmVxdWlyZWQgYnkgUk9PVExFU1NfWAogRVhUUkFfT0VDT05GICs9ICcke0BvZS51dGlscy5jb25kaXRpb25hbCggIlJPT1RMRVNTX1giLCAiMSIsICIgLS1lbmFibGUta21zLW9ubHkiLCAiIiwgZCApfScKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcF8wLjQuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcF8wLjQuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMzYzNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLXZpZGVvLmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIFRleGFzIEluc3RydW1lbnRzIE9NQVAgZnJhbWVidWZmZXIgZHJpdmVyIgotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIFRJIE9NQVAgaW50ZWdyYXRlZCBncmFwaGljcyBjaGlwc2V0cyBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gIk9wZW4tc291cmNlIFgub3JnIGdyYXBoaWNzIGRyaXZlciBmb3IgVEkgT01BUCBncmFwaGljcyBcCi1DdXJyZW50bHkgcmVsaWVzIG9uIGEgY2xvc2VkLXNvdXJjZSBzdWJtb2R1bGUgZm9yIEVYQSBhY2NlbGVyYXRpb24gb24gXAotdGhlIGZvbGxvd2luZyBjaGlwc2V0czogXAotICArIE9NQVAzNDMwIFwKLSAgKyBPTUFQMzYzMCBcCi0gICsgT01BUDQ0MzAgXAotICArIE9NQVA0NDYwIFwKLSAgKyBPTUFQNTQzMCBcCi0gICsgT01BUDU0MzIgXAotXAotTk9URTogdGhpcyBkcml2ZXIgaXMgd29yayBpbiBwcm9ncmVzcy4uICB5b3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB0cnkgXAotYW5kIHVzZSBpdCB5ZXQuICBUaGUgQVBJL0FCSSBiZXR3ZWVuIGRyaXZlciBhbmQga2VybmVsLCBhbmQgZHJpdmVyIGFuZCBcCi1hY2NlbGVyYXRpb24gc3VibW9kdWxlcyBpcyBub3Qgc3RhYmxlIHlldC4gIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBcCi1vbWFwZHJtIGtlcm5lbCBkcml2ZXIgdy8gR0VNIHN1cHBvcnQuIFwKLSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGNlNWRlM2IxMTEzMTVlYTY1MmE1Zjc0ZWMwYzYwMiIKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGxpYmRybSB4Zjg2ZHJpcHJvdG8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYjhlYTVlOGZiYTYzMzU1YzBkYzY2ODFjNDlkNWZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5M2U3ZDQyMTA3NTIxZTYxZjYxOTgwZWFlYTY0ZmI0NTJlODdiN2I5NDI3MmU0ODkzOGFjOGQ5MDRjY2ZhYjVhIgotCi1DRkxBR1MgKz0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3hvcmcgIgotCi0jIFVzZSBvdmVybGF5IDIgb24gb21hcDMgdG8gZW5hYmxlIG90aGVyIGFwcHMgdG8gdXNlIG92ZXJsYXkgMSAoZS5nLiBkbWFpIG9yIG9tYXBmYnBsYXkpCi1kb19jb21waWxlX3ByZXBlbmRfYXJtdjdhICgpIHsKLSAgICAgICAgc2VkIC1pIC1lIHM6ZmIxOmZiMjpnICR7U30vc3JjL29tYXBfeHYuYwotfQotCi1weXRob24gKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIidvcGVuZ2wnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMTkyMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMS1QcmV2ZW50cy1vbWFwZmItZnJvbS1mcm9tLWNyYXNoaW5nLXdoZW4tcGl4ZWxjbG9jay1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAyOGMwMDZjOTRlNTdlYTcxZGYxMWVjNGZmZjc5ZDdmZmNmYzQ4NjBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmFyIE1jS29uIDxGYXJNY0tvbkBidWdsYWJzLm5ldD4KLURhdGU6IFR1ZSwgMyBNYXkgMjAxMSAyMDo1OTowNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50cyBvbWFwZmIgZnJvbSBmcm9tIGNyYXNoaW5nIHdoZW4gcGl4ZWxjbG9jayBvZiAwIGlzCi0gc2VudCB0byBpdC4KLQotRHVlIHRvIGEgTGludXggZGVzaWduIGJ1ZyBpdCBpcyBlYXN5IHRvIGdldCBhIHBpeGVsY2xvY2sgc2V0IHRvIHplcm8KLXdoZW4gY2hhbmdpbmcgZGlzcGxheXMgYXQgcnVudGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBzcmMvb21hcGZiLW91dHB1dC5jIHwgOSArKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi1vdXRwdXQuYyBiL3NyYy9vbWFwZmItb3V0cHV0LmMKLWluZGV4IGY4YjRkYjMuLjRkNTkyNjUgMTAwNjQ0Ci0tLS0gYS9zcmMvb21hcGZiLW91dHB1dC5jCi0rKysgYi9zcmMvb21hcGZiLW91dHB1dC5jCi1AQCAtMTI1LDggKzEyNSwxMyBAQCBPTUFQRkJPdXRwdXRHZXRNb2Rlcyh4Zjg2T3V0cHV0UHRyIG91dHB1dCkKLSAJLyogT25seSBwb3B1bGF0ZSB0aGUgbmF0aXZlIChjdXJyZW50KSBtb2RlICovCi0gCW1vZGUgPSBjYWxsb2MoMSwgc2l6ZW9mKERpc3BsYXlNb2RlUmVjKSk7Ci0gCW1vZGUtPnR5cGUgICAgICB8PSBNX1RfUFJFRkVSUkVEOwotLQltb2RlLT5DbG9jayA9IFBJQ09TMktIWihvZmItPnN0YXRlX2luZm8ucGl4Y2xvY2spOwotLQltb2RlLT5TeW50aENsb2NrID0gUElDT1MyS0haKG9mYi0+c3RhdGVfaW5mby5waXhjbG9jayk7Ci0rCWlmIChvZmItPnN0YXRlX2luZm8ucGl4Y2xvY2sgPT0gMCkgewotKwkJbW9kZS0+Q2xvY2sgPSAwOwotKwkJbW9kZS0+U3ludGhDbG9jayA9IDA7Ci0rCX0gZWxzZSB7Ci0rCQltb2RlLT5DbG9jayA9IFBJQ09TMktIWihvZmItPnN0YXRlX2luZm8ucGl4Y2xvY2spOwotKwkJbW9kZS0+U3ludGhDbG9jayA9IFBJQ09TMktIWihvZmItPnN0YXRlX2luZm8ucGl4Y2xvY2spOwotKwl9Ci0gCW1vZGUtPkhEaXNwbGF5ICAgPSBvZmItPnN0YXRlX2luZm8ueHJlczsKLSAJbW9kZS0+SFN5bmNTdGFydCA9IG1vZGUtPkhEaXNwbGF5Ci0gCSAgICAgICAgICAgICAgICAgICsgb2ZiLT5zdGF0ZV9pbmZvLnJpZ2h0X21hcmdpbjsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMS1SZXZlcnQtU2V0LWEtbGFyZ2UtQ1JUQy11cHBlci1saW1pdC10by1ub3QtcHJ1bmUtbGFyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMS1SZXZlcnQtU2V0LWEtbGFyZ2UtQ1JUQy11cHBlci1saW1pdC10by1ub3QtcHJ1bmUtbGFyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmIwMWQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDEtUmV2ZXJ0LVNldC1hLWxhcmdlLUNSVEMtdXBwZXItbGltaXQtdG8tbm90LXBydW5lLWxhci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gOGZiN2QwZjk5ZDRhZmJiNTc0YjMwY2I0ZjFlNjZhOGY4OWQ5NGFkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBXZWQsIDI2IEphbiAyMDExIDEyOjA0OjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS82XSBSZXZlcnQgIlNldCBhIGxhcmdlIENSVEMgdXBwZXIgbGltaXQgdG8gbm90IHBydW5lIGxhcmdlcgotIHJlc29sdXRpb25zIgotCi1QaWN0dXJlIGlzIGdhcmJsZWQgYWZ0ZXIgc3dpdGNoaW5nIHJlc29sdXRpb25zLCBzbyByZXZlcnQgaXQuCi1WaXJ0dWFsIHNpemUgdG9vIGJpZywgcmV2ZXJ0IHRoZSBjb21taXQgOWM0ZDc1OTJkY2I3ZGMyMGE0OGE2Zjk0MWQ5ZDk0YmQ3M2QzNDE1My4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9vbWFwZmItY3J0Yy5jIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvb21hcGZiLWNydGMuYyBiL3NyYy9vbWFwZmItY3J0Yy5jCi1pbmRleCA5YWFhNTJmLi5jYmVmZjM1IDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi1jcnRjLmMKLSsrKyBiL3NyYy9vbWFwZmItY3J0Yy5jCi1AQCAtMTkwLDEzICsxOTAsMTMgQEAgT01BUEZCQ1JUQ0luaXQoU2NybkluZm9QdHIgcFNjcm4pCi0gCSAqIEluIHByYWN0aXNlLCB0aGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQuCi0gCSAqIChubyB3YXkgdG8gc2V0dXAgdGhlIG92ZXJsYXkgb2Zmc2V0L2Jhc2UgYWRkcmVzcykKLSAJICovCi0tCSAvKiBGSVhNRTogZmlndXJlIG91dCB3aGF0IG1ha2VzIHNlbnNlIGhlcmUuIEEga25vd24gbWF4IHJlc29sdXRpb24/Ci0tCSAgKiBmcmFtZWJ1ZmZlciBzaXplPwotLQkgICovCi0gCXhmODZDcnRjU2V0U2l6ZVJhbmdlKHBTY3JuLAotLQkgICAgICAgICAgICAgICAgICAgICA4LCA4LCAyMDQ4LCAyMDQ4KTsKLSsJICAgICAgICAgICAgICAgICAgICAgOCwgOCwKLSsJICAgICAgICAgICAgICAgICAgICAgb2ZiLT5zdGF0ZV9pbmZvLnhyZXNfdmlydHVhbCwKLSsJICAgICAgICAgICAgICAgICAgICAgb2ZiLT5zdGF0ZV9pbmZvLnlyZXNfdmlydHVhbCk7Ci0gCi0gCW9mYi0+Y3J0YyA9IHhmODZDcnRjQ3JlYXRlKHBTY3JuLCAmT01BUEZCQ3J0Y0Z1bmNzKTsKLSsKLSB9Ci0gCi0gCi0tLSAKLTEuOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDItUmV2ZXJ0LVNldC12aXJ0dWFsLXNpemUtd2hlbi1jb25maWd1cmluZy1mcmFtZWJ1ZmZlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDItUmV2ZXJ0LVNldC12aXJ0dWFsLXNpemUtd2hlbi1jb25maWd1cmluZy1mcmFtZWJ1ZmZlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgzYTk4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAyLVJldmVydC1TZXQtdmlydHVhbC1zaXplLXdoZW4tY29uZmlndXJpbmctZnJhbWVidWZmZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDg1NWMzMzNhYzBkMTYzNTBmODk1ZjFkMWI5MzkxZTljYmIwYjZkYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogV2VkLCAyNiBKYW4gMjAxMSAxMzoyNzoyMCArMDEwMAotU3ViamVjdDogW1BBVENIIDIvNl0gUmV2ZXJ0ICJTZXQgdmlydHVhbCBzaXplIHdoZW4gY29uZmlndXJpbmcgZnJhbWVidWZmZXIiCi0KLVZpcnR1YWwgc2l6ZSB0b28gYmlnLCBzbyByZXZlcnQgaXQuCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgMjY1M2VmMDc4ODNmYmQxYTVlNzAyNWY5MzAwY2Y4OWI3OWJhNDI5YS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9vbWFwZmItY3J0Yy5jIHwgMiAtLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi1jcnRjLmMgYi9zcmMvb21hcGZiLWNydGMuYwotaW5kZXggY2JlZmYzNS4uOTY1NWRiMiAxMDA2NDQKLS0tLSBhL3NyYy9vbWFwZmItY3J0Yy5jCi0rKysgYi9zcmMvb21hcGZiLWNydGMuYwotQEAgLTk4LDggKzk4LDYgQEAgT01BUEZCQ3J0Y0NvbW1pdENoYW5nZU1vZGUgKHhmODZDcnRjUHRyIGNydGMpCi0gCXYgPSBvZmItPnN0YXRlX2luZm87Ci0gCXYueHJlcyA9IG1vZGUtPkhEaXNwbGF5OwotIAl2LnlyZXMgPSBtb2RlLT5WRGlzcGxheTsKLS0Jdi54cmVzX3ZpcnR1YWwgPSBjcnRjLT5zY3JuLT52aXJ0dWFsWDsKLS0Jdi55cmVzX3ZpcnR1YWwgPSBjcnRjLT5zY3JuLT52aXJ0dWFsWTsKLSAJdi5hY3RpdmF0ZSA9IEZCX0FDVElWQVRFX05PVzsKLSAJdi5waXhjbG9jayA9IEtIWjJQSUNPUyhtb2RlLT5DbG9jayA/IG1vZGUtPkNsb2NrIDogNTYwMDApOwotIAl2LmxlZnRfbWFyZ2luID0gbW9kZS0+SFRvdGFsIC0gbW9kZS0+SFN5bmNFbmQ7Ci0tLSAKLTEuOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDMtZm9yY2UtcGxhaW4tbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDMtZm9yY2UtcGxhaW4tbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdlYTdjMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAzLWZvcmNlLXBsYWluLW1vZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDI1MmY0NGMwNzJkMzQ0N2EzMjEyN2ZjOWFmZTVkMGQ0MGYzYzUxMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogV2VkLCAyNiBKYW4gMjAxMSAxMzoyMDoyMCArMDEwMAotU3ViamVjdDogW1BBVENIIDMvNl0gZm9yY2UgJ3BsYWluJyBtb2RlCi0KLVRoZSBuZXcgRFNTIG1vZGUgYnJlYWtzIFhWLCBzbyBmb3JjZSBwbGFpbiBtb2RlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL29tYXBmYi1kcml2ZXIuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9vbWFwZmItZHJpdmVyLmMgYi9zcmMvb21hcGZiLWRyaXZlci5jCi1pbmRleCAwMThlMDQwLi40OGFhMDljIDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi1kcml2ZXIuYwotKysrIGIvc3JjL29tYXBmYi1kcml2ZXIuYwotQEAgLTMyNiw3ICszMjYsNyBAQCBPTUFQRkJQcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpCi0gCU9NQVBGQlByb2JlQ29udHJvbGxlcihvZmItPmN0cmxfbmFtZSk7Ci0gCi0gCS8qIERvIHdlIGhhdmUgdGhlIERTUyBrZXJuZWwgQVBJPyAqLwotLQlpZiAoc3RhdChTWVNGU19EU1NfRElSLCAmc3QpID09IDApIHsKLSsJaWYgKDApIHsgLy9zdGF0KFNZU0ZTX0RTU19ESVIsICZzdCkgPT0gMCkgewotIAkJb2ZiLT5kc3MgPSBUUlVFOwotIAl9IGVsc2UgewotIAkJb2ZiLT5kc3MgPSBGQUxTRTsKLS0tIAotMS44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNC1ibGFja2xpc3QtdHYtb3V0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNC1ibGFja2xpc3QtdHYtb3V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGFjOWE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDQtYmxhY2tsaXN0LXR2LW91dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gY2ZhNDZiNjdmNTkxMTVmNmQ4ZWY5NDE0YWY2MDM4MDc0OWZmM2ViMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBXZWQsIDI2IEphbiAyMDExIDEzOjIxOjEyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNC82XSBibGFja2xpc3QgdHYgb3V0Ci0KLVRoZSB0di1vdXQgZ2V0cyBhZGRlZCBsYXN0IGFuZCB0aGUgZHJpdmVyIHRyaWVzIHRvIHJlY29uZmlndXJlIGR2aSB0byBUViByZXNvbHV0aW9ucywgd2hpY2ggZmFpbHMuIHNvIGJsYWNrbGlzdCBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9vbWFwZmItb3V0cHV0LWRzcy5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi1vdXRwdXQtZHNzLmMgYi9zcmMvb21hcGZiLW91dHB1dC1kc3MuYwotaW5kZXggNmNjNTJkZS4uODNjYjcxMSAxMDA2NDQKLS0tLSBhL3NyYy9vbWFwZmItb3V0cHV0LWRzcy5jCi0rKysgYi9zcmMvb21hcGZiLW91dHB1dC1kc3MuYwotQEAgLTIwNSw2ICsyMDUsMTAgQEAgT01BUEZCRFNTT3V0cHV0RGV0ZWN0ICh4Zjg2T3V0cHV0UHRyIG91dHB1dCkKLSAJaWYob2ZiLT50aW1pbmdzW2lkeF1bMF0gPT0gJ1wwJykKLSAJCXJldHVybiBYRjg2T3V0cHV0U3RhdHVzRGlzY29ubmVjdGVkOwotIAotKwkvLyBIYWNrIHRvIGRpc2FibGUgdGhlIHR2IG91dAotKwlpZiAoc3RybmNtcChvdXRwdXQtPm5hbWUsICJ0diIsIDIpID09IDApCi0rCQlyZXR1cm4gWEY4Nk91dHB1dFN0YXR1c0Rpc2Nvbm5lY3RlZDsKLSsKLSAJcmV0dXJuIFhGODZPdXRwdXRTdGF0dXNDb25uZWN0ZWQ7Ci0gfQotIAotLS0gCi0xLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA1LUF0dGVtcHQtdG8tZml4LVZSRkIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA1LUF0dGVtcHQtdG8tZml4LVZSRkIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjI4NDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNS1BdHRlbXB0LXRvLWZpeC1WUkZCLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLUZyb20gOGIxZjY5N2E2MGUzNWFiODJmZmZkYWJmYWVmZGI0NWU5YTlkZjM3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVpbm8tVmlsbGUgVGFsdmFsYSA8dGFsdmFsYUBzdGFuZm9yZC5lZHU+Ci1EYXRlOiBUdWUsIDIzIEF1ZyAyMDExIDE4OjM3OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNS82XSBBdHRlbXB0IHRvIGZpeCBWUkZCCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1odHRwOi8vZG9taW5pb24udGhydWhlcmUubmV0L2dpdC9jZ2l0LmNnaS94Zjg2LXZpZGVvLW9tYXBmYi9jb21taXQvP2g9a29lbi9maXh1cHMmaWQ9NjgzM2ZjOWY3OTUyNjVlNDk0M2QyNDgxMDNmYmFmMzQ2M2I1MTVkNgotCi1TaWduZWQtb2ZmLWJ5OiBTZWJhc3RpYW4gS3J6eXN6a293aWFrIDxkb3NAZG9zb3dpc2tvLm5ldD4KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuYyB8ICA0ICstLQotIHNyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuaCB8ICAyICstCi0gc3JjL29tYXBmYi1kcml2ZXIuYyAgICAgICAgICAgIHwgMjggKysrKysrKysrKysrKy0tLQotIHNyYy9vbWFwZmIteHYtYmxpenphcmQuYyAgICAgICB8ICAxICsKLSBzcmMvb21hcGZiLXh2LWdlbmVyaWMuYyAgICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSBzcmMvb21hcGZiLXh2LmMgICAgICAgICAgICAgICAgfCAgMyArKwotIDYgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmMgYi9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmMKLWluZGV4IGRjZWZhOWIuLmQ0MzQyN2QgMTAwNjQ0Ci0tLS0gYS9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmMKLSsrKyBiL3NyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuYwotQEAgLTM4LDEzICszOCwxMyBAQAotICNpbmNsdWRlICJpbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuaCIKLSAKLSAvKiBCYXNpYyBsaW5lLWJhc2VkIGNvcHkgZm9yIHBhY2tlZCBmb3JtYXRzICovCi0tdm9pZCBwYWNrZWRfbGluZV9jb3B5KGludCB3LCBpbnQgaCwgaW50IHN0cmlkZSwgdWludDhfdCAqc3JjLCB1aW50OF90ICpkZXN0KQotK3ZvaWQgcGFja2VkX2xpbmVfY29weShpbnQgdywgaW50IGgsIGludCBzcmNfc3RyaWRlLCBpbnQgZHN0X3N0cmlkZSwgdWludDhfdCAqc3JjLCB1aW50OF90ICpkZXN0KQotIHsKLSAJaW50IGk7Ci0gCWludCBsZW4gPSB3ICogMjsKLSAJZm9yIChpID0gMDsgaSA8IGg7IGkrKykKLSAJewotLQkJbWVtY3B5KGRlc3QgKyBpICogbGVuLCBzcmMgKyBpICogc3RyaWRlLCBsZW4pOwotKwkJbWVtY3B5KGRlc3QgKyBpICogZHN0X3N0cmlkZSwgc3JjICsgaSAqIHNyY19zdHJpZGUsIGxlbik7Ci0gCX0KLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5oIGIvc3JjL2ltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5oCi1pbmRleCA1ODQ4OTZhLi5iYTdjYWYyIDEwMDY0NAotLS0tIGEvc3JjL2ltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5oCi0rKysgYi9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotIC8qIEJhc2ljIGxpbmUtYmFzZWQgY29weSBmb3IgcGFja2VkIGZvcm1hdHMgKi8KLS12b2lkIHBhY2tlZF9saW5lX2NvcHkoaW50IHcsIGludCBoLCBpbnQgc3RyaWRlLCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKmRlc3QpOwotK3ZvaWQgcGFja2VkX2xpbmVfY29weShpbnQgdywgaW50IGgsIGludCBzcmNfc3RyaWRlLCBpbnQgZHN0X3N0cmlkZSwgdWludDhfdCAqc3JjLCB1aW50OF90ICpkZXN0KTsKLSAKLSAvKiBCYXNpYyBDIGltcGxlbWVudGF0aW9uIG9mIFlWMTIvSTQyMCB0byBVWVZZIGNvbnZlcnNpb24gKi8KLSB2b2lkIHV2MTJfdG9fdXl2eShpbnQgdywgaW50IGgsIGludCB5X3BpdGNoLCBpbnQgdXZfcGl0Y2gsIHVpbnQ4X3QgKnlfcCwgdWludDhfdCAqdV9wLCB1aW50OF90ICp2X3AsIHVpbnQ4X3QgKmRlc3QpOwotZGlmZiAtLWdpdCBhL3NyYy9vbWFwZmItZHJpdmVyLmMgYi9zcmMvb21hcGZiLWRyaXZlci5jCi1pbmRleCA0OGFhMDljLi4wNzk4OWY1IDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi1kcml2ZXIuYwotKysrIGIvc3JjL29tYXBmYi1kcml2ZXIuYwotQEAgLTY2LDYgKzY2LDcgQEAKLSAjZGVmaW5lIE9NQVBGQl9WRVJTSU9OIDEwMDAKLSAjZGVmaW5lIE9NQVBGQl9EUklWRVJfTkFNRSAiT01BUEZCIgotICNkZWZpbmUgT01BUEZCX05BTUUgIm9tYXBmYiIKLSsjZGVmaW5lIEVORk9SQ0VfTU9ERVMKLSAKLSBzdGF0aWMgQm9vbCBPTUFQRkJQcm9iZShEcml2ZXJQdHIgZHJ2LCBpbnQgZmxhZ3MpOwotIHN0YXRpYyBCb29sIE9NQVBGQlByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncyk7Ci1AQCAtMTA1LDExICsxMDYsMTMgQEAgc3RhdGljIFN5bVRhYlJlYyBPTUFQRkJDaGlwc2V0c1tdID0gewotIHR5cGVkZWYgZW51bSB7Ci0gCU9QVElPTl9BQ0NFTE1FVEhPRCwKLSAJT1BUSU9OX0ZCLAotKwlPUFRJT05fUk9UQVRFLAotIH0gRkJEZXZPcHRzOwotIAotIHN0YXRpYyBjb25zdCBPcHRpb25JbmZvUmVjIE9NQVBGQk9wdGlvbnNbXSA9IHsKLSAJeyBPUFRJT05fQUNDRUxNRVRIT0QsCSJBY2NlbE1ldGhvZCIsCU9QVFZfU1RSSU5HLAl7MH0sCUZBTFNFIH0sCi0gCXsgT1BUSU9OX0ZCLAkJImZiIiwJCU9QVFZfU1RSSU5HLAl7MH0sCUZBTFNFIH0sCi0rCXsgT1BUSU9OX1JPVEFURSwJInJvdGF0aW9uIiwJT1BUVl9TVFJJTkcsCXswfSwJRkFMU0UgfSwKLSAJeyAtMSwJCQlOVUxMLAkJT1BUVl9OT05FLAl7MH0sCUZBTFNFIH0KLSB9OwotIAotQEAgLTI4Niw2ICsyODksNyBAQCBPTUFQRkJQcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpCi0gewotIAlPTUFQRkJQdHIgb2ZiOwotIAlFbnRpdHlJbmZvUHRyIHBFbnQ7Ci0rCWNoYXIgKnJvdGF0ZTsKLSAJcmdiIHplcm9zID0geyAwLCAwLCAwIH07Ci0gCXN0cnVjdCBzdGF0IHN0OwotIAotQEAgLTM3OSw2ICszODMsOCBAQCBPTUFQRkJQcmVJbml0KFNjcm5JbmZvUHRyIHBTY3JuLCBpbnQgZmxhZ3MpCi0gCXBTY3JuLT5wcm9nQ2xvY2sgPSBUUlVFOwotIAlwU2Nybi0+Y2hpcHNldCAgID0gIm9tYXBmYiI7Ci0gCQotKwl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfSU5GTywgIlJvdGF0ZSB0ZXN0IHZlcnNpb24gMC4wMlxuIik7Ci0rCQotIAkvKiBTdGFydCB3aXRoIGNvbmZpZ3VyZWQgdmlydHVhbCBzaXplICovCi0gCXBTY3JuLT52aXJ0dWFsWCA9IHBTY3JuLT5kaXNwbGF5LT52aXJ0dWFsWDsKLSAJcFNjcm4tPnZpcnR1YWxZID0gcFNjcm4tPmRpc3BsYXktPnZpcnR1YWxZOwotQEAgLTQ5NiwxMiArNTAyLDIxIEBAIE9NQVBGQlNjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJb2ZiLT5DbG9zZVNjcmVlbiA9IHBTY3JlZW4tPkNsb3NlU2NyZWVuOwotIAlwU2NyZWVuLT5DbG9zZVNjcmVlbiA9IE9NQVBGQkNsb3NlU2NyZWVuOwotIAotKwkvKiBFbmZvcmNlIHRoZSBkZWZhdWx0IG1vZGUgKHRoaXMgaXMgc2lsbHkgSSBndWVzcykgKi8KLSsjaWZkZWYgRU5GT1JDRV9NT0RFUwotKwkvL3hmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9JTkZPLCAiRW5mb3JjaW5nIG1vZGVzXG4iKTsKLSsJLy9zZXRfbW9kZShvZmIsICZvZmItPmRlZmF1bHRfbW9kZSk7Ci0rCS8vcFNjcm4tPmRpc3BsYXlXaWR0aCA9IG9mYi0+Zml4ZWRfaW5mby5saW5lX2xlbmd0aCAvCi0rCS8vICAob2ZiLT5zdGF0ZV9pbmZvLmJpdHNfcGVyX3BpeGVsPj4zKTsgLy9vZmItPnN0YXRlX2luZm8ueHJlczsKLSsjZW5kaWYKLSsKLSAJLyogTWFwIG91ciBmcmFtZWJ1ZmZlciBtZW1vcnkgKi8KLSsJb2ZiLT5tZW1faW5mby5zaXplID0gb2ZiLT5maXhlZF9pbmZvLmxpbmVfbGVuZ3RoICogb2ZiLT5zdGF0ZV9pbmZvLnlyZXM7Ci0gCW9mYi0+ZmIgPSBtbWFwIChOVUxMLCBvZmItPm1lbV9pbmZvLnNpemUsCi0gCSAgICAgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELAotIAkgICAgICAgICAgICAgICAgb2ZiLT5mZCwgMCk7Ci0tCWlmIChvZmItPmZiID09IE5VTEwpIHsKLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAiTWFwcGluZyBmcmFtZWJ1ZmZlciBtZW1vcnkgZmFpbGVkXG4iKTsKLSsJaWYgKG9mYi0+ZmIgPT0gTUFQX0ZBSUxFRCkgewotKwkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJNYXBwaW5nIGZyYW1lYnVmZmVyIG1lbW9yeSBmYWlsZWQsIHdhbnRlZCAlZCBieXRlcy5cbiIsIG9mYi0+bWVtX2luZm8uc2l6ZSk7Ci0gCQlyZXR1cm4gRkFMU0U7Ci0gCX0KLSAKLUBAIC01NzgsOCArNTkzLDEzIEBAIE9NQVBGQlNjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJfSBlbHNlIGlmICghb2ZiLT5kc3MpIHsKLSAKLSAJCW9mYi0+cGxhbmVfaW5mby5lbmFibGVkID0gMTsKLS0JCW9mYi0+cGxhbmVfaW5mby5vdXRfd2lkdGggPSBvZmItPnN0YXRlX2luZm8ueHJlczsKLS0JCW9mYi0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID0gb2ZiLT5zdGF0ZV9pbmZvLnlyZXM7Ci0rCQlpZiAob2ZiLT5zdGF0ZV9pbmZvLnJvdGF0ZSA9PSAwIHx8IG9mYi0+c3RhdGVfaW5mby5yb3RhdGUgPT0gMikgewotKwkJCW9mYi0+cGxhbmVfaW5mby5vdXRfd2lkdGggPSBvZmItPnN0YXRlX2luZm8ueHJlczsKLSsJCQlvZmItPnBsYW5lX2luZm8ub3V0X2hlaWdodCA9IG9mYi0+c3RhdGVfaW5mby55cmVzOwotKwkJfSBlbHNlIHsKLSsJCQlvZmItPnBsYW5lX2luZm8ub3V0X3dpZHRoID0gb2ZiLT5zdGF0ZV9pbmZvLnlyZXM7Ci0rCQkJb2ZiLT5wbGFuZV9pbmZvLm91dF9oZWlnaHQgPSBvZmItPnN0YXRlX2luZm8ueHJlczsKLSsJCX0KLSAKLSAJCWlmIChpb2N0bCAob2ZiLT5mZCwgT01BUEZCX1NFVFVQX1BMQU5FLCAmb2ZiLT5wbGFuZV9pbmZvKSkgewotIAkJCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLAotZGlmZiAtLWdpdCBhL3NyYy9vbWFwZmIteHYtYmxpenphcmQuYyBiL3NyYy9vbWFwZmIteHYtYmxpenphcmQuYwotaW5kZXggNDA2ZmZjNi4uYjcxZDJhYSAxMDA2NDQKLS0tLSBhL3NyYy9vbWFwZmIteHYtYmxpenphcmQuYwotKysrIGIvc3JjL29tYXBmYi14di1ibGl6emFyZC5jCi1AQCAtMjIwLDYgKzIyMCw3IEBAIGludCBPTUFQRkJYVlB1dEltYWdlQmxpenphcmQgKFNjcm5JbmZvUHRyIHBTY3JuLAotIAkJCXBhY2tlZF9saW5lX2NvcHkoc3JjX3cgJiB+MywKLSAJCQkgICAgICAgICAgICAgICAgIHNyY19oICYgfjMsCi0gCQkJICAgICAgICAgICAgICAgICAoKHNyY193ICsgMSkgJiB+MSkgKiAyLAotKwkJCQkJIG9mYi0+cG9ydC0+Zml4ZWRfaW5mby5saW5lX2xlbmd0aCwKLSAJCQkgICAgICAgICAgICAgICAgICh1aW50OF90KilidWYsCi0gCQkJICAgICAgICAgICAgICAgICAodWludDhfdCopb2ZiLT5wb3J0LT5mYik7Ci0gCQkJYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi14di1nZW5lcmljLmMgYi9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYwotaW5kZXggZTZmODlmZS4uYjMzZjM0NCAxMDA2NDQKLS0tLSBhL3NyYy9vbWFwZmIteHYtZ2VuZXJpYy5jCi0rKysgYi9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYwotQEAgLTYyLDcgKzYyLDcgQEAgaW50IE9NQVBYVkFsbG9jUGxhbmUoU2NybkluZm9QdHIgcFNjcm4pCi0gewotIAlPTUFQRkJQdHIgb2ZiID0gT01BUEZCKHBTY3JuKTsKLSAKLS0JLyogVGhlIG1lbW9yeSBzaXplIGlzIGFscmVhZHkgc2V0IGluIE9NQVBGQlhWUXVlcnlJbWFnZUF0dHJpYnV0ZXMgKi8KLSsJLyogVGhlIG1lbW9yeSBzaXplIGlzIGFscmVhZHkgc2V0IGJlZm9yZSB3ZSBnZXQgaGVyZSAqLwotIAlpZiAoaW9jdGwob2ZiLT5wb3J0LT5mZCwgT01BUEZCX1NFVFVQX01FTSwgJm9mYi0+cG9ydC0+bWVtX2luZm8pICE9IDApIHsKLSAJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwKLSAJCSAgICAgICAgICAgIkZhaWxlZCB0byBhbGxvY2F0ZSB2aWRlbyBwbGFuZSBtZW1vcnlcbiIpOwotQEAgLTczLDE5ICs3MywyMCBAQCBpbnQgT01BUFhWQWxsb2NQbGFuZShTY3JuSW5mb1B0ciBwU2NybikKLSAJb2ZiLT5wb3J0LT5mYiA9IG1tYXAgKE5VTEwsIG9mYi0+cG9ydC0+bWVtX2luZm8uc2l6ZSwKLSAJICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsCi0gCSAgICAgICAgICAgICAgICBvZmItPnBvcnQtPmZkLCAwKTsKLS0JaWYgKG9mYi0+cG9ydC0+ZmIgPT0gTlVMTCkgewotKwlpZiAob2ZiLT5wb3J0LT5mYiA9PSBNQVBfRkFJTEVEKSB7Ci0gCQl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsCi0gCQkgICAgICAgICAgICJNYXBwaW5nIHZpZGVvIG1lbW9yeSBmYWlsZWRcbiIpOwotIAkJcmV0dXJuIFh2QmFkQWxsb2M7Ci0gCX0KLSAKLSAJLyogVXBkYXRlIHRoZSBzdGF0ZSBpbmZvICovCi0rCS8qIExldCdzIG5vdCAtIGl0J3MgYmFkCi0gCWlmIChpb2N0bCAob2ZiLT5wb3J0LT5mZCwgRkJJT0dFVF9WU0NSRUVOSU5GTywgJm9mYi0+cG9ydC0+c3RhdGVfaW5mbykpCi0gCXsKLSAJCXhmODZNc2coWF9FUlJPUiwgIiVzOiBSZWFkaW5nIHN0YXRlIGluZm8gZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOwotIAkJcmV0dXJuIFh2QmFkQWxsb2M7Ci0gCX0KLS0KLSsJKi8KLSAJcmV0dXJuIFN1Y2Nlc3M7Ci0gfQotIAotQEAgLTkzLDYgKzk0LDcgQEAgaW50IE9NQVBYVkFsbG9jUGxhbmUoU2NybkluZm9QdHIgcFNjcm4pCi0gaW50IE9NQVBYVlNldHVwVmlkZW9QbGFuZShTY3JuSW5mb1B0ciBwU2NybikKLSB7Ci0gCU9NQVBGQlB0ciBvZmIgPSBPTUFQRkIocFNjcm4pOwotKwlpbnQgcmV0OwotIAotIAlpZiAoaW9jdGwgKG9mYi0+cG9ydC0+ZmQsIEZCSU9QVVRfVlNDUkVFTklORk8sICZvZmItPnBvcnQtPnN0YXRlX2luZm8pKQotIAl7Ci1AQCAtMTA0LDYgKzEwNiwzMSBAQCBpbnQgT01BUFhWU2V0dXBWaWRlb1BsYW5lKFNjcm5JbmZvUHRyIHBTY3JuKQotIAkJeGY4Nk1zZyhYX0VSUk9SLCAiJXM6IFJlYWRpbmcgc3RhdGUgaW5mbyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gCQlyZXR1cm4gWHZCYWRBbGxvYzsKLSAJfQotKwkvKiBDaGFuZ2luZyByb3RhdGlvbi9ub25zdGQgZmxhZ3MgY2FuIGNoYW5nZSB0aGUgZml4ZWQgaW5mbyEgKi8KLSsJaWYgKGlvY3RsIChvZmItPnBvcnQtPmZkLCBGQklPR0VUX0ZTQ1JFRU5JTkZPLCAmb2ZiLT5wb3J0LT5maXhlZF9pbmZvKSkKLSsJewotKwkJeGY4Nk1zZyhYX0VSUk9SLCAiJXM6IFJlYWRpbmcgc3RhdGUgaW5mbyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0rCQlyZXR1cm4gWHZCYWRBbGxvYzsKLSsJfQotKwkvKiBDb3JyZWN0IGZpeGVkIGluZm8gcmVxdWlyZXMgcmVjYWxjdWxhdGlvbiBvZiBuZWVkZWQgbWVtb3J5ICovCi0rCW9mYi0+cG9ydC0+bWVtX2luZm8uc2l6ZSA9IG9mYi0+cG9ydC0+Zml4ZWRfaW5mby5saW5lX2xlbmd0aCAqIG9mYi0+cG9ydC0+c3RhdGVfaW5mby55cmVzOwotKwotKwkvKiBBbGxvY2F0ZSBidWZmZXIgbWVtb3J5ICovCi0rCXJldCA9IE9NQVBYVkFsbG9jUGxhbmUocFNjcm4pOwotKwlpZiAocmV0ICE9IFN1Y2Nlc3MpCi0rCQlyZXR1cm4gcmV0OwotKwotKwkvKiBXb3JrYXJvdW5kIGZvciByZXNldCBvZiBtb2RlIGFmdGVyIG1lbW9yeSBhbGxvICovCi0rCWlmIChpb2N0bCAob2ZiLT5wb3J0LT5mZCwgRkJJT1BVVF9WU0NSRUVOSU5GTywgJm9mYi0+cG9ydC0+c3RhdGVfaW5mbykpCi0rCXsKLSsJCXhmODZNc2coWF9FUlJPUiwgIiVzOiBzZXR0aW5nIHN0YXRlIGluZm8gZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOwotKwkJcmV0dXJuIFh2QmFkQWxsb2M7Ci0rCX0KLSsJaWYgKGlvY3RsIChvZmItPnBvcnQtPmZkLCBGQklPR0VUX1ZTQ1JFRU5JTkZPLCAmb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvKSkKLSsJewotKwkJeGY4Nk1zZyhYX0VSUk9SLCAiJXM6IFJlYWRpbmcgc3RhdGUgaW5mbyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0rCQlyZXR1cm4gWHZCYWRBbGxvYzsKLSsJfQotIAotIAlpZihpb2N0bChvZmItPnBvcnQtPmZkLCBPTUFQRkJfU0VUVVBfUExBTkUsCi0gCSAgICZvZmItPnBvcnQtPnBsYW5lX2luZm8pICE9IDApIHsKLUBAIC0xMjQsNiArMTUxLDggQEAgaW50IE9NQVBGQlhWUHV0SW1hZ2VHZW5lcmljIChTY3JuSW5mb1B0ciBwU2NybiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdhYmxlUHRyIHBEcmF3KQotIHsKLSAJT01BUEZCUHRyIG9mYiA9IE9NQVBGQihwU2Nybik7Ci0rCXNob3J0IGRyd190ZW1wOwotKwlzaG9ydCByb3RfeHJlcywgcm90X3lyZXM7Ci0gCi0gCWlmICghb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLmVuYWJsZWQKLSAJIHx8IG9mYi0+cG9ydC0+dXBkYXRlX3dpbmRvdy54ICE9IHNyY194Ci1AQCAtMTYzLDEzICsxOTIsNiBAQCBpbnQgT01BUEZCWFZQdXRJbWFnZUdlbmVyaWMgKFNjcm5JbmZvUHRyIHBTY3JuLAotIAkJCXJldHVybiBTdWNjZXNzOwotIAkJfQotIAotLQkJLyogSWYgd2UgZG9uJ3QgaGF2ZSB0aGUgcGxhbmUgcnVubmluZywgZW5hYmxlIGl0ICovCi0tCQlpZiAoIW9mYi0+cG9ydC0+cGxhbmVfaW5mby5lbmFibGVkKSB7Ci0tCQkJcmV0ID0gT01BUFhWQWxsb2NQbGFuZShwU2Nybik7Ci0tCQkJaWYgKHJldCAhPSBTdWNjZXNzKQotLQkJCQlyZXR1cm4gcmV0OwotLQkJfQotLQotIAkJLyogU2V0IHVwIHRoZSBzdGF0ZSBpbmZvLCB4cmVzIGFuZCB5cmVzIHdpbGwgYmUgdXNlZCBmb3IKLSAJCSAqIHNjYWxpbmcgdG8gdGhlIHZhbHVlcyBpbiB0aGUgcGxhbmUgaW5mbyBzdHJ1Y3QKLSAJCSAqLwotQEAgLTE3OSwxMiArMjAxLDMxIEBAIGludCBPTUFQRkJYVlB1dEltYWdlR2VuZXJpYyAoU2NybkluZm9QdHIgcFNjcm4sCi0gCQlvZmItPnBvcnQtPnN0YXRlX2luZm8ueXJlc192aXJ0dWFsID0gMDsKLSAJCW9mYi0+cG9ydC0+c3RhdGVfaW5mby54b2Zmc2V0ID0gMDsKLSAJCW9mYi0+cG9ydC0+c3RhdGVfaW5mby55b2Zmc2V0ID0gMDsKLS0JCW9mYi0+cG9ydC0+c3RhdGVfaW5mby5yb3RhdGUgPSAwOwotKwkJLy9vZmItPnBvcnQtPnN0YXRlX2luZm8ucm90YXRlID0gMDsKLSAJCW9mYi0+cG9ydC0+c3RhdGVfaW5mby5ncmF5c2NhbGUgPSAwOwotIAkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLmFjdGl2YXRlID0gRkJfQUNUSVZBVEVfTk9XOwotIAkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLmJpdHNfcGVyX3BpeGVsID0gMDsKLSAJCW9mYi0+cG9ydC0+c3RhdGVfaW5mby5ub25zdGQgPSB4dl90b19vbWFwZmJfZm9ybWF0KGltYWdlKTsKLSAKLSsJCS8qIFBsYW5lIGluZm8gZG9lcyBub3Qgcm90YXRlIHdpdGggc3RhdGVfaW5mbyAqLwotKwkJaWYgKG9mYi0+cG9ydC0+c3RhdGVfaW5mby5yb3RhdGUgPT0gMSB8fAotKwkJICBvZmItPnBvcnQtPnN0YXRlX2luZm8ucm90YXRlID09IDMpIHsKLSsJCQlkcndfdGVtcCA9IGRyd194OwotKwkJCWRyd194ID0gZHJ3X3k7Ci0rCQkJZHJ3X3kgPSBkcndfdGVtcDsKLSsKLSsJCQlkcndfdGVtcCA9IGRyd193OwotKwkJCWRyd193ID0gZHJ3X2g7Ci0rCQkJZHJ3X2ggPSBkcndfdGVtcDsKLSsKLSsJCQlyb3RfeHJlcyA9IG9mYi0+cG9ydC0+c3RhdGVfaW5mby55cmVzOwotKwkJCXJvdF95cmVzID0gb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnhyZXM7Ci0rCQl9IGVsc2UgewotKwkJCXJvdF94cmVzID0gb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnhyZXM7Ci0rCQkJcm90X3lyZXMgPSBvZmItPnBvcnQtPnN0YXRlX2luZm8ueXJlczsKLSsJCX0KLSsKLSsKLSAJCS8qIFNldCB1cCB0aGUgdmlkZW8gcGxhbmUgaW5mbyAqLwotIAkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLmVuYWJsZWQgPSAxOwotIAkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLnBvc194ID0gZHJ3X3g7Ci1AQCAtMTkzLDEzICsyMzQsMTMgQEAgaW50IE9NQVBGQlhWUHV0SW1hZ2VHZW5lcmljIChTY3JuSW5mb1B0ciBwU2NybiwKLSAJCW9mYi0+cG9ydC0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID0gZHJ3X2ggJiB+MTU7Ci0gCi0gCQkvKiBDYXAgb3V0cHV0IHRvIHNjcmVlbiBzaXplICovCi0tCQlpZiAob2ZiLT5wb3J0LT5wbGFuZV9pbmZvLm91dF93aWR0aCA+IG9mYi0+c3RhdGVfaW5mby54cmVzKSB7Ci0rCQlpZiAob2ZiLT5wb3J0LT5wbGFuZV9pbmZvLm91dF93aWR0aCA+IHJvdF94cmVzKSB7Ci0gCQkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLnBvc194ID0gMDsKLS0JCQlvZmItPnBvcnQtPnBsYW5lX2luZm8ub3V0X3dpZHRoID0gb2ZiLT5zdGF0ZV9pbmZvLnhyZXM7Ci0rCQkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLm91dF93aWR0aCA9IHJvdF94cmVzOwotIAkJfQotLQkJaWYgKG9mYi0+cG9ydC0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID4gb2ZiLT5zdGF0ZV9pbmZvLnlyZXMpIHsKLSsJCWlmIChvZmItPnBvcnQtPnBsYW5lX2luZm8ub3V0X2hlaWdodCA+IHJvdF95cmVzKSB7Ci0gCQkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLnBvc195ID0gMDsKLS0JCQlvZmItPnBvcnQtPnBsYW5lX2luZm8ub3V0X2hlaWdodCA9IG9mYi0+c3RhdGVfaW5mby55cmVzOwotKwkJCW9mYi0+cG9ydC0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID0gcm90X3lyZXM7Ci0gCQl9Ci0gCi0gCQlyZXQgPSBPTUFQWFZTZXR1cFZpZGVvUGxhbmUocFNjcm4pOwotQEAgLTIyMyw2ICsyNjQsNyBAQCBpbnQgT01BUEZCWFZQdXRJbWFnZUdlbmVyaWMgKFNjcm5JbmZvUHRyIHBTY3JuLAotIAkJCXBhY2tlZF9saW5lX2NvcHkoc3JjX3cgJiB+MTUsCi0gCQkJICAgICAgICAgICAgICAgICBzcmNfaCAmIH4xNSwKLSAJCQkgICAgICAgICAgICAgICAgICgoc3JjX3cgKyAxKSAmIH4xKSAqIDIsCi0rCQkJICAgICAgICAgICAgICAgICBvZmItPnBvcnQtPmZpeGVkX2luZm8ubGluZV9sZW5ndGgsCi0gCQkJICAgICAgICAgICAgICAgICAodWludDhfdCopYnVmLAotIAkJCSAgICAgICAgICAgICAgICAgKHVpbnQ4X3QqKW9mYi0+cG9ydC0+ZmIpOwotIAkJCWJyZWFrOwotZGlmZiAtLWdpdCBhL3NyYy9vbWFwZmIteHYuYyBiL3NyYy9vbWFwZmIteHYuYwotaW5kZXggMWRmNjUxZS4uMGZlZTJjNiAxMDA2NDQKLS0tLSBhL3NyYy9vbWFwZmIteHYuYwotKysrIGIvc3JjL29tYXBmYi14di5jCi1AQCAtMTY5LDggKzE2OSwxMSBAQCBzdGF0aWMgaW50IE9NQVBGQlhWUXVlcnlJbWFnZUF0dHJpYnV0ZXMgKFNjcm5JbmZvUHRyIHBTY3JuLAotIAloID0gKmhlaWdodDsKLSAKLSAJdyA9ICh3ICsgMSkgJiB+MTsKLSsKLSsJLyogQ2FuJ3QgY2FsY3VsYXRlIHRoZXNlIGhlcmUgLSBkb24ndCBrbm93IGxpbmUgbGVuZ3RoCi0gCW9mYi0+cG9ydC0+bWVtX2luZm8uc2l6ZSA9IHcgPDwgMTsKLSAJb2ZiLT5wb3J0LT5tZW1faW5mby5zaXplICo9IGg7Ci0rCSovCi0gCi0gCXJldHVybiBzaXplOwotIH0KLS0tIAotMS44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNi1vbWFwZmItcG9ydC10by1uZXcteHNlcnZlci12aWRlby1BUEkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA2LW9tYXBmYi1wb3J0LXRvLW5ldy14c2VydmVyLXZpZGVvLUFQSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU2NzI5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA2LW9tYXBmYi1wb3J0LXRvLW5ldy14c2VydmVyLXZpZGVvLUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MiArMCwwIEBACi1Gcm9tIDgwM2VjZjI5MDk5NDllNjE1MmY0YTgxYjZjYmI5MmE0NDMwNjc5YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIzIE5vdiAyMDEyIDAwOjMxOjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNi82XSBvbWFwZmI6IHBvcnQgdG8gbmV3IHhzZXJ2ZXIgdmlkZW8gQVBJCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY29tcGF0LWFwaS5oICAgIHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvb21hcGZiLWRyaXZlci5jIHwgNDEgKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2NvbXBhdC1hcGkuaAotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBhdC1hcGkuaCBiL3NyYy9jb21wYXQtYXBpLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMTU5MWIxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvY29tcGF0LWFwaS5oCi1AQCAtMCwwICsxLDk2IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgMjAxMiBSZWQgSGF0LCBJbmMuCi0rICoKLSsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQotKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0rICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQotKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rICoKLSsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0rICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotKyAqIFNvZnR3YXJlLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0rICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSsgKgotKyAqIEF1dGhvcjogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KLSsgKi8KLSsKLSsvKiB0aGlzIGZpbGUgcHJvdmlkZXMgQVBJIGNvbXBhdCBiZXR3ZWVuIHNlcnZlciBwb3N0IDEuMTMgYW5kIHByZSBpdCwKLSsgICBpdCBzaG91bGQgYmUgcmV1c2VkIGluc2lkZSBhcyBtYW55IGRyaXZlcnMgYXMgcG9zc2libGUgKi8KLSsjaWZuZGVmIENPTVBBVF9BUElfSAotKyNkZWZpbmUgQ09NUEFUX0FQSV9ICi0rCi0rI2lmbmRlZiBHTFlQSF9IQVNfR0xZUEhfUElDVFVSRV9BQ0NFU1NPUgotKyNkZWZpbmUgR2V0R2x5cGhQaWN0dXJlKGcsIHMpIEdseXBoUGljdHVyZSgoZykpWyhzKS0+bXlOdW1dCi0rI2RlZmluZSBTZXRHbHlwaFBpY3R1cmUoZywgcywgcCkgR2x5cGhQaWN0dXJlKChnKSlbKHMpLT5teU51bV0gPSBwCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBYRjg2X0hBU19TQ1JOX0NPTlYKLSsjZGVmaW5lIHhmODZTY3JlZW5Ub1Njcm4ocykgeGY4NlNjcmVlbnNbKHMpLT5teU51bV0KLSsjZGVmaW5lIHhmODZTY3JuVG9TY3JlZW4ocykgc2NyZWVuSW5mby5zY3JlZW5zWyhzKS0+c2NybkluZGV4XQotKyNlbmRpZgotKwotKyNpZm5kZWYgWEY4Nl9TQ1JOX0lOVEVSRkFDRQotKwotKyNkZWZpbmUgU0NSTl9BUkdfVFlQRSBpbnQKLSsjZGVmaW5lIFNDUk5fSU5GT19QVFIoYXJnMSkgU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuc1soYXJnMSldCi0rCi0rI2RlZmluZSBTQ1JFRU5fQVJHX1RZUEUgaW50Ci0rI2RlZmluZSBTQ1JFRU5fUFRSKGFyZzEpIFNjcmVlblB0ciBwU2NyZWVuID0gc2NyZWVuSW5mby5zY3JlZW5zWyhhcmcxKV0KLSsKLSsjZGVmaW5lIFNDUkVFTl9JTklUX0FSR1NfREVDTCBpbnQgaW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YKLSsKLSsjZGVmaW5lIEJMT0NLSEFORExFUl9BUkdTX0RFQ0wgaW50IGFyZywgcG9pbnRlciBibG9ja0RhdGEsIHBvaW50ZXIgcFRpbWVvdXQsIHBvaW50ZXIgcFJlYWRtYXNrCi0rI2RlZmluZSBCTE9DS0hBTkRMRVJfQVJHUyBhcmcsIGJsb2NrRGF0YSwgcFRpbWVvdXQsIHBSZWFkbWFzawotKwotKyNkZWZpbmUgQ0xPU0VfU0NSRUVOX0FSR1NfREVDTCBpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbgotKyNkZWZpbmUgQ0xPU0VfU0NSRUVOX0FSR1Mgc2NybkluZGV4LCBwU2NyZWVuCi0rCi0rI2RlZmluZSBBREpVU1RfRlJBTUVfQVJHU19ERUNMIGludCBhcmcsIGludCB4LCBpbnQgeSwgaW50IGZsYWdzCi0rCi0rI2RlZmluZSBTV0lUQ0hfTU9ERV9BUkdTX0RFQ0wgaW50IGFyZywgRGlzcGxheU1vZGVQdHIgbW9kZSwgaW50IGZsYWdzCi0rCi0rI2RlZmluZSBGUkVFX1NDUkVFTl9BUkdTX0RFQ0wgaW50IGFyZywgaW50IGZsYWdzCi0rI2RlZmluZSBGUkVFX1NDUkVFTl9BUkdTKHgpICh4KS0+c2NybkluZGV4LCAwCi0rCi0rI2RlZmluZSBWVF9GVU5DX0FSR1NfREVDTCBpbnQgYXJnLCBpbnQgZmxhZ3MKLSsjZGVmaW5lIFZUX0ZVTkNfQVJHUyhmbGFncykgcFNjcm4tPnNjcm5JbmRleCwgKGZsYWdzKQotKwotKyNkZWZpbmUgWEY4Nl9FTkFCTEVESVNBQkxFRkJfQVJHKHgpICgoeCktPnNjcm5JbmRleCkKLSsjZWxzZQotKyNkZWZpbmUgU0NSTl9BUkdfVFlQRSBTY3JuSW5mb1B0cgotKyNkZWZpbmUgU0NSTl9JTkZPX1BUUihhcmcxKSBTY3JuSW5mb1B0ciBwU2NybiA9IChhcmcxKQotKwotKyNkZWZpbmUgU0NSRUVOX0FSR19UWVBFIFNjcmVlblB0cgotKyNkZWZpbmUgU0NSRUVOX1BUUihhcmcxKSBTY3JlZW5QdHIgcFNjcmVlbiA9IChhcmcxKQotKwotKyNkZWZpbmUgU0NSRUVOX0lOSVRfQVJHU19ERUNMIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YKLSsKLSsjZGVmaW5lIEJMT0NLSEFORExFUl9BUkdTX0RFQ0wgU2NyZWVuUHRyIGFyZywgcG9pbnRlciBwVGltZW91dCwgcG9pbnRlciBwUmVhZG1hc2sKLSsjZGVmaW5lIEJMT0NLSEFORExFUl9BUkdTIGFyZywgcFRpbWVvdXQsIHBSZWFkbWFzawotKwotKyNkZWZpbmUgQ0xPU0VfU0NSRUVOX0FSR1NfREVDTCBTY3JlZW5QdHIgcFNjcmVlbgotKyNkZWZpbmUgQ0xPU0VfU0NSRUVOX0FSR1MgcFNjcmVlbgotKwotKyNkZWZpbmUgQURKVVNUX0ZSQU1FX0FSR1NfREVDTCBTY3JuSW5mb1B0ciBhcmcsIGludCB4LCBpbnQgeQotKyNkZWZpbmUgU1dJVENIX01PREVfQVJHU19ERUNMIFNjcm5JbmZvUHRyIGFyZywgRGlzcGxheU1vZGVQdHIgbW9kZQotKwotKyNkZWZpbmUgRlJFRV9TQ1JFRU5fQVJHU19ERUNMIFNjcm5JbmZvUHRyIGFyZwotKyNkZWZpbmUgRlJFRV9TQ1JFRU5fQVJHUyh4KSAoeCkKLSsKLSsjZGVmaW5lIFZUX0ZVTkNfQVJHU19ERUNMIFNjcm5JbmZvUHRyIGFyZwotKyNkZWZpbmUgVlRfRlVOQ19BUkdTKGZsYWdzKSBwU2NybgotKwotKyNkZWZpbmUgWEY4Nl9FTkFCTEVESVNBQkxFRkJfQVJHKHgpICh4KQotKwotKyNlbmRpZgotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9vbWFwZmItZHJpdmVyLmMgYi9zcmMvb21hcGZiLWRyaXZlci5jCi1pbmRleCAwNzk4OWY1Li40ODZmZmE0IDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi1kcml2ZXIuYwotKysrIGIvc3JjL29tYXBmYi1kcml2ZXIuYwotQEAgLTQ0LDYgKzQ0LDggQEAKLSAKLSAjaW5jbHVkZSAiZXhhLmgiCi0gCi0rI2luY2x1ZGUgImNvbXBhdC1hcGkuaCIKLSsKLSAjaWZkZWYgSEFWRV9YRVhUUFJPVE9fNzEKLSAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvZHBtc2NvbnN0Lmg+Ci0gI2Vsc2UKLUBAIC03MCwxMCArNzIsMTAgQEAKLSAKLSBzdGF0aWMgQm9vbCBPTUFQRkJQcm9iZShEcml2ZXJQdHIgZHJ2LCBpbnQgZmxhZ3MpOwotIHN0YXRpYyBCb29sIE9NQVBGQlByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncyk7Ci0tc3RhdGljIEJvb2wgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKLS1zdGF0aWMgQm9vbCBPTUFQRkJFbnRlclZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncyk7Ci0tc3RhdGljIHZvaWQgT01BUEZCTGVhdmVWVChpbnQgc2NybkluZGV4LCBpbnQgZmxhZ3MpOwotLXN0YXRpYyBCb29sIE9NQVBGQlN3aXRjaE1vZGUoaW50IHNjcm5JbmRleCwgRGlzcGxheU1vZGVQdHIgbW9kZSwgaW50IGZsYWdzKTsKLStzdGF0aWMgQm9vbCBPTUFQRkJTY3JlZW5Jbml0KFNDUkVFTl9JTklUX0FSR1NfREVDTCk7Ci0rc3RhdGljIEJvb2wgT01BUEZCRW50ZXJWVChWVF9GVU5DX0FSR1NfREVDTCk7Ci0rc3RhdGljIHZvaWQgT01BUEZCTGVhdmVWVChWVF9GVU5DX0FSR1NfREVDTCk7Ci0rc3RhdGljIEJvb2wgT01BUEZCU3dpdGNoTW9kZShTV0lUQ0hfTU9ERV9BUkdTX0RFQ0wpOwotIAotIHN0YXRpYyBCb29sCi0gT01BUEZCRW5zdXJlUmVjKFNjcm5JbmZvUHRyIHBTY3JuKQotQEAgLTQ4MSw3ICs0ODMsNyBAQCBPTUFQRkJYdlNjcmVlbkluaXQoU2NyZWVuUHRyIHBTY3JlZW4pCi0gfQotIAotIHN0YXRpYyBCb29sCi0tT01BUEZCQ2xvc2VTY3JlZW4oaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4pCi0rT01BUEZCQ2xvc2VTY3JlZW4oQ0xPU0VfU0NSRUVOX0FSR1NfREVDTCkKLSB7Ci0gCVNjcm5JbmZvUHRyIHBTY3JuID0geGY4NlNjcmVlbnNbcFNjcmVlbi0+bXlOdW1dOwotIAlPTUFQRkJQdHIgb2ZiID0gT01BUEZCKHBTY3JuKTsKLUBAIC00OTAsMTEgKzQ5MiwxMSBAQCBPTUFQRkJDbG9zZVNjcmVlbihpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbikKLSAKLSAJcFNjcmVlbi0+Q2xvc2VTY3JlZW4gPSBvZmItPkNsb3NlU2NyZWVuOwotIAkKLS0JcmV0dXJuICgqcFNjcmVlbi0+Q2xvc2VTY3JlZW4pKHNjcm5JbmRleCwgcFNjcmVlbik7Ci0rCXJldHVybiAoKnBTY3JlZW4tPkNsb3NlU2NyZWVuKShDTE9TRV9TQ1JFRU5fQVJHUyk7Ci0gfQotIAotIHN0YXRpYyBCb29sCi0tT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK09NQVBGQlNjcmVlbkluaXQoU0NSRUVOX0lOSVRfQVJHU19ERUNMKQotIHsKLSAJU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuc1twU2NyZWVuLT5teU51bV07Ci0gCU9NQVBGQlB0ciBvZmIgPSBPTUFQRkIocFNjcm4pOwotQEAgLTUxNiw3ICs1MTgsNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSAgICAgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELAotIAkgICAgICAgICAgICAgICAgb2ZiLT5mZCwgMCk7Ci0gCWlmIChvZmItPmZiID09IE1BUF9GQUlMRUQpIHsKLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAiTWFwcGluZyBmcmFtZWJ1ZmZlciBtZW1vcnkgZmFpbGVkLCB3YW50ZWQgJWQgYnl0ZXMuXG4iLCBvZmItPm1lbV9pbmZvLnNpemUpOwotKwkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLCAiTWFwcGluZyBmcmFtZWJ1ZmZlciBtZW1vcnkgZmFpbGVkLCB3YW50ZWQgJWQgYnl0ZXMuXG4iLCBvZmItPm1lbV9pbmZvLnNpemUpOwotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci0gCi1AQCAtNTI2LDcgKzUyOCw3IEBAIE9NQVBGQlNjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJLyogT25seSBzdXBwb3J0IFRydWVDb2xvciBmb3Igbm93ICovCi0gCWlmICghbWlTZXRWaXN1YWxUeXBlcyhwU2Nybi0+ZGVwdGgsIFRydWVDb2xvck1hc2ssCi0gCQlwU2Nybi0+cmdiQml0cywgcFNjcm4tPmRlZmF1bHRWaXN1YWwpKSB7Ci0tCQl4Zjg2RHJ2TXNnKHNjcm5JbmRleCwgWF9FUlJPUiwgInZpc3VhbCB0eXBlIHNldHVwIGZhaWxlZCIKLSsJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwgInZpc3VhbCB0eXBlIHNldHVwIGZhaWxlZCIKLSAJCSAgICAgICAgICAgIiBmb3IgJWQgYml0cyBwZXIgcGl4ZWwgWzFdXG4iLAotIAkJICAgICAgICAgICBwU2Nybi0+Yml0c1BlclBpeGVsKTsKLSAJCXJldHVybiBGQUxTRTsKLUBAIC01MzQsNyArNTM2LDcgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotIAkvKiBTZXQgdXAgcGl4bWFwIGRlcHRoIGluZm9ybWF0aW9uICovCi0gCWlmICghbWlTZXRQaXhtYXBEZXB0aHMoKSkgewotLQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsWF9FUlJPUiwicGl4bWFwIGRlcHRoIHNldHVwIGZhaWxlZFxuIik7Ci0rCQl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsWF9FUlJPUiwicGl4bWFwIGRlcHRoIHNldHVwIGZhaWxlZFxuIik7Ci0gCQlyZXR1cm4gRkFMU0U7Ci0gCX0KLSAKLUBAIC01NDYsNyArNTQ4LDcgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkgICAgICAgICAgICAgICAgICBwU2Nybi0+dmlydHVhbFksIHBTY3JuLT54RHBpLAotIAkgICAgICAgICAgICAgICAgICBwU2Nybi0+eURwaSwgcFNjcm4tPmRpc3BsYXlXaWR0aCwKLSAJICAgICAgICAgICAgICAgICAgcFNjcm4tPmJpdHNQZXJQaXhlbCkpIHsKLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAiZmJTY3JlZW5Jbml0IGZhaWxlZFxuIik7Ci0rCQl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsICJmYlNjcmVlbkluaXQgZmFpbGVkXG4iKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotIAotQEAgLTU2Nyw3ICs1NjksNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCi0gCS8qIEluaXRpYWxpemUgWFJlbmRlciBmYWxsYmFja3MgKi8KLSAJaWYgKCFmYlBpY3R1cmVJbml0KHBTY3JlZW4sIE5VTEwsIDApKSB7Ci0tCQl4Zjg2RHJ2TXNnKHNjcm5JbmRleCwgWF9FUlJPUiwgImZiUGljdHVyZUluaXQgZmFpbGVkXG4iKTsKLSsJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwgImZiUGljdHVyZUluaXQgZmFpbGVkXG4iKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotIAkKLUBAIC01NzksNyArNTgxLDcgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotIAkvKiBJbml0aWFsaXplIGRlZmF1bHQgY29sb3JtYXAgKi8KLSAJaWYgKCFtaUNyZWF0ZURlZkNvbG9ybWFwKHBTY3JlZW4pKSB7Ci0tCQl4Zjg2RHJ2TXNnKHNjcm5JbmRleCwgWF9FUlJPUiwKLSsJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwKLSAJCSAgICAgICAgICAgImNyZWF0aW5nIGRlZmF1bHQgY29sb3JtYXAgZmFpbGVkXG4iKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotQEAgLTU4OSw3ICs1OTEsNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkvKiBUaGlzIGlzIG5vbi1mYXRhbCBzaW5jZSB3ZSBtaWdodCBiZSBydW5uaW5nIGFnYWluc3Qgb2xkZXIKLSAJCSAqIGtlcm5lbCBkcml2ZXIgaW4gd2hpY2ggY2FzZSB3ZSBvbmx5IGRvIGJhc2ljIDJEIHN0dWZmLi4uCi0gCQkgKi8KLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAiUmVhZGluZyBwbGFuZSBpbmZvIGZhaWxlZFxuIik7Ci0rCQl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsICJSZWFkaW5nIHBsYW5lIGluZm8gZmFpbGVkXG4iKTsKLSAJfSBlbHNlIGlmICghb2ZiLT5kc3MpIHsKLSAKLSAJCW9mYi0+cGxhbmVfaW5mby5lbmFibGVkID0gMTsKLUBAIC02MDIsNyArNjA0LDcgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJfQotIAotIAkJaWYgKGlvY3RsIChvZmItPmZkLCBPTUFQRkJfU0VUVVBfUExBTkUsICZvZmItPnBsYW5lX2luZm8pKSB7Ci0tCQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsCi0rCQkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLAotIAkJCSAgICAgICAgICAgICIlczogUGxhbmUgc2V0dXAgZmFpbGVkOiAlc1xuIiwKLSAJCQkgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHN0cmVycm9yKGVycm5vKSk7Ci0gCQkJcmV0dXJuIEZBTFNFOwotQEAgLTY0NSw5ICs2NDcsMTAgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlyZXR1cm4gVFJVRTsKLSB9Ci0gCi0tc3RhdGljIEJvb2wgT01BUEZCU3dpdGNoTW9kZShpbnQgc2NybkluZGV4LCBEaXNwbGF5TW9kZVB0ciBtb2RlLCBpbnQgZmxhZ3MpCi0rc3RhdGljIEJvb2wgT01BUEZCU3dpdGNoTW9kZShTV0lUQ0hfTU9ERV9BUkdTX0RFQ0wpCi0gewotLQlyZXR1cm4geGY4NlNldFNpbmdsZU1vZGUgKHhmODZTY3JlZW5zW3Njcm5JbmRleF0sIG1vZGUsIFJSX1JvdGF0ZV8wKTsKLSsJU0NSTl9JTkZPX1BUUihhcmcpOwotKwlyZXR1cm4geGY4NlNldFNpbmdsZU1vZGUgKHBTY3JuLCBtb2RlLCBSUl9Sb3RhdGVfMCk7Ci0gfQotIAotIHZvaWQKLUBAIC02OTksMTQgKzcwMiwxNCBAQCBPTUFQRkJQcmludENhcGFiaWxpdGllcyhTY3JuSW5mb1B0ciBwU2NybiwKLSAvKioqIFVuaW1wbGVtZW50ZWQ6ICovCi0gCi0gc3RhdGljIEJvb2wKLS1PTUFQRkJFbnRlclZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncykKLStPTUFQRkJFbnRlclZUKFZUX0ZVTkNfQVJHU19ERUNMKQotIHsKLSAJeGY4Nk1zZyhYX05PVF9JTVBMRU1FTlRFRCwgIiVzXG4iLCBfX0ZVTkNUSU9OX18pOwotIAlyZXR1cm4gVFJVRTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1PTUFQRkJMZWF2ZVZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncykKLStPTUFQRkJMZWF2ZVZUKFZUX0ZVTkNfQVJHU19ERUNMKQotIHsKLSAJeGY4Nk1zZyhYX05PVF9JTVBMRU1FTlRFRCwgIiVzXG4iLCBfX0ZVTkNUSU9OX18pOwotIH0KLS0tIAotMS44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNy1hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNy1hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzBiOWIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDctYWx3YXlzX2luY2x1ZGVfeG9yZ19zZXJ2ZXIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZpeCBlcnJvcnMgd2l0aCBnbGliYyAyLjIwCi0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9zdHJpbmcuaDo2MzQ6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL29zLmg6NTMsCi0gICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUveG9yZy9taXNjLmg6MTE1LAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcveGY4NnN0ci5oOjM3LAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcveGY4Ni5oOjQ0LAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy93b3JrL2k1ODYtb2UtbGludXgveGY4Ni12aWRlby1vbWFwZmIvMl8wLjEuMStnaXRyQVVUT0lOQysyOGMwMDZjOTRlLXIyMS43L2dpdC9zcmMvb21hcGZiLXh2LWJsaXp6YXJkLmM6MzM6Ci0vaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL29zLmg6NTc5OjE6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIG9yICcoJyBiZWZvcmUgJ19fZXh0ZW5zaW9uX18nCi0gc3RybmR1cChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBuKTsKLSBeCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvc3RyaW5nLmg6NjM0OjAsCi0gICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUveG9yZy9vcy5oOjUzLAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcvbWlzYy5oOjExNSwKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL3hmODZzdHIuaDozNywKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL3hmODYuaDo0NCwKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvd29yay9pNTg2LW9lLWxpbnV4L3hmODYtdmlkZW8tb21hcGZiLzJfMC4xLjErZ2l0ckFVVE9JTkMrMjhjMDA2Yzk0ZS1yMjEuNy9naXQvc3JjL29tYXBmYi14di1nZW5lcmljLmM6Mjg6Ci0vaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL29zLmg6NTc5OjE6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIG9yICcoJyBiZWZvcmUgJ19fZXh0ZW5zaW9uX18nCi0gc3RybmR1cChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBuKTsKLSBeCi0KLVNpbmdlZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdpdC9zcmMvb21hcGZiLXh2LWJsaXp6YXJkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zcmMvb21hcGZiLXh2LWJsaXp6YXJkLmMJMjAxNC0wOC0yOCAwNToxNjoyNS42ODQwNzA1ODcgLTA3MDAKLSsrKyBnaXQvc3JjL29tYXBmYi14di1ibGl6emFyZC5jCTIwMTQtMDgtMjggMTk6MDU6MzkuNDQwMDcwNTg3IC0wNzAwCi1AQCAtMzAsNiArMzAsNyBAQAotICAqICAtCi0gICovCi0gCi0rI2luY2x1ZGUgPHhvcmctc2VydmVyLmg+Ci0gI2luY2x1ZGUgInhmODYuaCIKLSAjaW5jbHVkZSAieGY4Nl9PU2xpYi5oIgotICNpbmNsdWRlICJ4Zjg2eHYuaCIKLUluZGV4OiBnaXQvc3JjL29tYXBmYi14di1nZW5lcmljLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYwkyMDE0LTA4LTI4IDA1OjE2OjI1LjY4NDA3MDU4NyAtMDcwMAotKysrIGdpdC9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYwkyMDE0LTA4LTI4IDE5OjA1OjUxLjc4MDA3MDU4NyAtMDcwMAotQEAgLTI1LDYgKzI1LDcgQEAKLSAgKiBHZW5lcmljIGZ1bmN0aW9ucyBmb3IgdGhlIFhWIGRyaXZlcgotICAqLwotIAotKyNpbmNsdWRlIDx4b3JnLXNlcnZlci5oPgotICNpbmNsdWRlICJ4Zjg2LmgiCi0gI2luY2x1ZGUgInhmODZfT1NsaWIuaCIKLSAjaW5jbHVkZSAieGY4Nnh2LmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYl9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYmI5NjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci12aWRlby5pbmMKLQotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBUZXhhcyBJbnN0cnVtZW50cyBPTUFQIGZyYW1lYnVmZmVyIGRyaXZlciIKLQotREVTQ1JJUFRJT04gPSAib21hcGZiIGRyaXZlciBzdXBwb3J0cyB0aGUgYmFzaWMgVGV4YXMgSW5zdHJ1bWVudHMgT01BUCBcCi1mcmFtZWJ1ZmZlci4iCi0KLUxJQ0VOU0UgPSAiTUlULVggJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02M2UyY2JhYzUzODYzZjYwZTJmNDMzNDNmYjM0MzY3ZiIKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIgotCi1TUkNSRVYgPSAiMzNlMzZjMTJkZGUzMzZlZGJkZDM0NjI2ZGQ4YWRmY2FlYmM4ZmJiOCIKLVBSID0gIiR7SU5DX1BSfS43IgotUFYgPSAiMC4xLjErZ2l0ciR7U1JDUFZ9IgotCi0jIEJsYWNrbGlzdCBkZWJpYW4tc3BlY2lmaWMgdGFncyBpbiB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykoPyEtKSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L3hmODYtdmlkZW8tb21hcGZiLmdpdCBcCi0gIGZpbGU6Ly8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2ggXAotICBmaWxlOi8vMDAwMS1SZXZlcnQtU2V0LWEtbGFyZ2UtQ1JUQy11cHBlci1saW1pdC10by1ub3QtcHJ1bmUtbGFyLnBhdGNoIFwKLSAgZmlsZTovLzAwMDItUmV2ZXJ0LVNldC12aXJ0dWFsLXNpemUtd2hlbi1jb25maWd1cmluZy1mcmFtZWJ1ZmZlci5wYXRjaCBcCi0gIGZpbGU6Ly8wMDAzLWZvcmNlLXBsYWluLW1vZGUucGF0Y2ggXAotICBmaWxlOi8vMDAwNC1ibGFja2xpc3QtdHYtb3V0LnBhdGNoIFwKLSAgZmlsZTovLzAwMDUtQXR0ZW1wdC10by1maXgtVlJGQi5wYXRjaCBcCi0gIGZpbGU6Ly8wMDA2LW9tYXBmYi1wb3J0LXRvLW5ldy14c2VydmVyLXZpZGVvLUFQSS5wYXRjaCBcCi0gIGZpbGU6Ly8wMDA3LWFsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DRkxBR1MgKz0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3hvcmcgIgotCi0jIFVzZSBvdmVybGF5IDIgb24gb21hcDMgdG8gZW5hYmxlIG90aGVyIGFwcHMgdG8gdXNlIG92ZXJsYXkgMSAoZS5nLiBkbWFpIG9yIG9tYXBmYnBsYXkpCi1kb19jb21waWxlX3ByZXBlbmRfYXJtdjdhICgpIHsKLSAgICAgICAgc2VkIC1pIC1lIHM6ZmIxOmZiMjpnICR7U30vc3JjL29tYXBmYi14di5jCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZlc2FfMi4zLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZlc2FfMi4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjUxYjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12ZXNhXzIuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci12aWRlby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTFmMDYxMGViZGM2ZjMxNGE5ZmE1MTAyYThjNWMxYjAiCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gR2VuZXJpYyBWZXNhIHZpZGVvIGRyaXZlciIKLQotREVTQ1JJUFRJT04gPSAidmVzYSBpcyBhbiBYb3JnIGRyaXZlciBmb3IgZ2VuZXJpYyBWRVNBIHZpZGVvIGNhcmRzLiBJdCBcCi1jYW4gZHJpdmUgbW9zdCBWRVNBLWNvbXBhdGlibGUgdmlkZW8gY2FyZHMsIGJ1dCBvbmx5IG1ha2VzIHVzZSBvZiB0aGUgXAotYmFzaWMgc3RhbmRhcmQgVkVTQSBjb3JlIHRoYXQgaXMgY29tbW9uIHRvIHRoZXNlIGNhcmRzLiBUaGUgZHJpdmVyIFwKLXN1cHBvcnRzIGRlcHRocyA4LCAxNSAxNiBhbmQgMjQuIgotCi1QUiA9ICIke0lOQ19QUn0uMCIKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgcmFuZHJwcm90byBsaWJwY2lhY2Nlc3MiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjQpLiotbGludXgnCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJ4c2VydmVyLXhvcmctbW9kdWxlLWxpYmludDEwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTg5M2MzN2M1ODlmN2EzMWNlYTkyOWE1ZDg5NmEwZTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2JkZGY0ZDg3OWRkNmY2NzA4OGVjYjIwM2EzMWUxMjMzNGFhYjk4MDE3NGJkMDkwOTkzMGEyMWYzMmUyNTFjMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tdmVzYV8yLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tdmVzYV8yLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTExMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12ZXNhXzIuNC4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWExZjA2MTBlYmRjNmYzMTRhOWZhNTEwMmE4YzVjMWIwIgorCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIEdlbmVyaWMgVmVzYSB2aWRlbyBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gInZlc2EgaXMgYW4gWG9yZyBkcml2ZXIgZm9yIGdlbmVyaWMgVkVTQSB2aWRlbyBjYXJkcy4gSXQgXAorY2FuIGRyaXZlIG1vc3QgVkVTQS1jb21wYXRpYmxlIHZpZGVvIGNhcmRzLCBidXQgb25seSBtYWtlcyB1c2Ugb2YgdGhlIFwKK2Jhc2ljIHN0YW5kYXJkIFZFU0EgY29yZSB0aGF0IGlzIGNvbW1vbiB0byB0aGVzZSBjYXJkcy4gVGhlIGRyaXZlciBcCitzdXBwb3J0cyBkZXB0aHMgOCwgMTUgMTYgYW5kIDI0LiIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeG9yZ3Byb3RvIGxpYnBjaWFjY2VzcyIKKworQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTM0MjAxYmVhZjZmNzcxNTBjNzgwOWMzY2M4MDJlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZjQ0M2M5NGQ3YmY2Y2Q0ZTI0OGY4YTMxNDdmNDY0N2JlMDRkYzRjODAyNTBkOTQwNTAwNjI2M2JiZGVlMzhjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12bXdhcmVfMTMuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12bXdhcmVfMTMuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDZkMzVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tdm13YXJlXzEzLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gVk13YXJlIFNWR0EgZGlzcGxheSBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gInZtd2FyZSBpcyBhbiBYb3JnIGRyaXZlciBmb3IgVk13YXJlIHZpcnR1YWwgdmlkZW8gY2FyZHMuIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZmNkN2Q0MzdhOTU5YTE1ZmJlZTg3MDc3NDdjNmI1MyIKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeGluZXJhbWFwcm90byB2aWRlb3Byb3RvIGxpYnBjaWFjY2VzcyIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDItYWRkLW9wdGlvbi1mb3Itdm13Z2Z4LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGMzOTEyZTRkODk0N2Y2YzJmYzFlZTllMmYyMTFkNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJmN2Y3MTAxZmJhN2Y1M2IyNjhlN2EyNTkwOGJhYmJmMTU1YjM5ODRmYjUyNjhiM2QyNDRlYjZjMTFiZjYyYiIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2LiotbGludXh8eDg2XzY0LiotbGludXgpJwotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW3Ztd2dmeF0gPSAiLS1lbmFibGUtdm13Z2Z4LCAtLWRpc2FibGUtdm13Z2Z4LCBsaWJkcm0gdmlydHVhbC9tZXNhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12bXdhcmVfMTMuMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12bXdhcmVfMTMuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNjEyYjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZtd2FyZV8xMy4zLjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci12aWRlby5pbmMKKworU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBWTXdhcmUgU1ZHQSBkaXNwbGF5IGRyaXZlciIKKworREVTQ1JJUFRJT04gPSAidm13YXJlIGlzIGFuIFhvcmcgZHJpdmVyIGZvciBWTXdhcmUgdmlydHVhbCB2aWRlbyBjYXJkcy4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmY2Q3ZDQzN2E5NTlhMTVmYmVlODcwNzc0N2M2YjUzIgorCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSB4b3JncHJvdG8gbGlicGNpYWNjZXNzIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMi1hZGQtb3B0aW9uLWZvci12bXdnZngucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOGQ2NmQwNjIwNTUwODBmZjY5OWFiNDg2OTcyNmVhMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Nzk3MTkyNDY1OWU1MTY2NmE3NTcyNjlhZDk0MWEwNTllZjVhZmU3YTQ3YjUxMDFjMTc0YTYwMjJhYzQwNjZjIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODYuKi1saW51eHx4ODZfNjQuKi1saW51eCknCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbdm13Z2Z4XSA9ICItLWVuYWJsZS12bXdnZngsIC0tZGlzYWJsZS12bXdnZngsIGxpYmRybSB2aXJ0dWFsL21lc2EiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwppbmRleCBiY2EwYWFkLi5lNjU3YzY1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKQEAgLTcsNyArNyw3IEBACiBQRSA9ICIyIgogSU5DX1BSID0gInIyMSIKIAotREVQRU5EUyA9ICJ2aXJ0dWFsL3hzZXJ2ZXIgeHByb3RvIHJhbmRycHJvdG8gdXRpbC1tYWNyb3MiCitERVBFTkRTID0gInZpcnR1YWwveHNlcnZlciB4b3JncHJvdG8gdXRpbC1tYWNyb3MiCiAKIFNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kcml2ZXIvJHtCUE59LSR7UFZ9LnRhci5iejIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWlucHV0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWlucHV0LmluYwppbmRleCAzNDIwNjdkLi41NzkxMmU3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1pbnB1dC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItaW5wdXQuaW5jCkBAIC0xLDYgKzEsNiBAQAogcmVxdWlyZSB4b3JnLWRyaXZlci1jb21tb24uaW5jCiAKLURFUEVORFMgKz0gImlucHV0cHJvdG8ga2Jwcm90byAiCitERVBFTkRTICs9ICJ4b3JncHJvdG8iCiAKIHB5dGhvbiBhZGRfeG9yZ19hYmlfZGVwZW5kcygpIHsKICAgICBfYWRkX3hvcmdfYWJpX2RlcGVuZHMoZCwgImlucHV0IikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYwppbmRleCBiNTg2MmRhLi4yOTM4ZWYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItdmlkZW8uaW5jCkBAIC0xLDYgKzEsNiBAQAogcmVxdWlyZSB4b3JnLWRyaXZlci1jb21tb24uaW5jCiAKLURFUEVORFMgPSsgInJlbmRlcnByb3RvIHZpZGVvcHJvdG8geGV4dHByb3RvIGZvbnRzcHJvdG8iCitERVBFTkRTID0rICJ4b3JncHJvdG8iCiAKIHB5dGhvbiBhZGRfeG9yZ19hYmlfZGVwZW5kcygpIHsKICAgICBfYWRkX3hvcmdfYWJpX2RlcGVuZHMoZCwgInZpZGVvIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmRteF8xLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmRteF8xLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYyM2NlZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJkbXhfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJETVg6IERpc3RyaWJ1dGVkIE11bHRpaGVhZCBYIGV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJUaGUgRE1YIGV4dGVuc2lvbiBwcm92aWRlcyBzdXBwb3J0IGZvciBjb21tdW5pY2F0aW9uIHdpdGggXAotYW5kIGNvbnRyb2wgb2YgWGRteCgxKSBzZXJ2ZXIuIEF0dHJpYnV0ZXMgb2YgdGhlIFhkbXgoMSkgc2VydmVyIGFuZCBvZiBcCi10aGUgYmFjay1lbmQgc2NyZWVucyBhdHRhY2hlZCB0byB0aGUgc2VydmVyIGNhbiBiZSBxdWVyaWVkIGFuZCBtb2RpZmllZCBcCi12aWEgdGhpcyBwcm90b2NvbC4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTNjMzQ5OTIzMWE4MDM1ZWZkMGUwMDRjZmJkM2I3MmEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2RteC5jO2VuZGxpbmU9MzM7bWQ1PWM0M2YxOWFmMDNjN2M4NjE5Y2FkYzk3MjRlZDlhZmUxIgotCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IGRteHByb3RvIgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmE5ODNlYmE1YTlmMDVkMTUyYTA3MjViOGU4NjMxNTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzk3ZGEzNmQyZTU2YTJkN2I2ZTRmODk2MjQxNzg1YWNjOTVlOTdlYjk1NTc0NjVmZDY2YmEyYTE1NWE3YjIwMSIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliZG14XzEuMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliZG14XzEuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MTcyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJkbXhfMS4xLjQuYmIKQEAgLTAsMCArMSwyMCBAQAorcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiRE1YOiBEaXN0cmlidXRlZCBNdWx0aWhlYWQgWCBleHRlbnNpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiVGhlIERNWCBleHRlbnNpb24gcHJvdmlkZXMgc3VwcG9ydCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIFwKK2FuZCBjb250cm9sIG9mIFhkbXgoMSkgc2VydmVyLiBBdHRyaWJ1dGVzIG9mIHRoZSBYZG14KDEpIHNlcnZlciBhbmQgb2YgXAordGhlIGJhY2stZW5kIHNjcmVlbnMgYXR0YWNoZWQgdG8gdGhlIHNlcnZlciBjYW4gYmUgcXVlcmllZCBhbmQgbW9kaWZpZWQgXAordmlhIHRoaXMgcHJvdG9jb2wuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEzYzM0OTkyMzFhODAzNWVmZDBlMDA0Y2ZiZDNiNzJhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kbXguYztlbmRsaW5lPTMzO21kNT1jNDNmMTlhZjAzYzdjODYxOWNhZGM5NzI0ZWQ5YWZlMSIKKworREVQRU5EUyArPSAibGlieGV4dCB4b3JncHJvdG8iCisKK1BFID0gIjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMmYxZjBlYzY4YWMzOTMyZGQ3ZjFkOWFhMGE3YTExYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNTNmOTAwMDVkMTM0ZmE3YTIwOWZiY2JjNWEzMDI0MzM1MzY3YzkzMGFkZjBmMzIwM2U3NTRjZjMyNzQ3MjQzIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJmb250ZW5jXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliZm9udGVuY18xLjEuMy5iYgppbmRleCBhMTgxZjA1Li4zNGQ1ZmM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJmb250ZW5jXzEuMS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmZvbnRlbmNfMS4xLjMuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk2MjU0YzIwYWI4MWM2M2U2NWIyNmYwZGJjZDRhMWMxIgogCi1ERVBFTkRTICs9ICJ6bGliIHhwcm90byBmb250LXV0aWwiCitERVBFTkRTICs9ICJ6bGliIHhvcmdwcm90byBmb250LXV0aWwiCiBQRSA9ICIxIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmljZV8xLjAuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmljZV8xLjAuOS5iYgppbmRleCA1Y2NkMWQ4Li45OTk0MzRlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJpY2VfMS4wLjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliaWNlXzEuMC45LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQxNjJiMWIzYzZmYTgxMmRhOWQ4MDRkY2Y4NTg0YTkzIgogCi1ERVBFTkRTICs9ICJ4cHJvdG8geHRyYW5zIgorREVQRU5EUyArPSAieG9yZ3Byb3RvIHh0cmFucyIKIFBST1ZJREVTID0gImljZSIKIAogUEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTQuYmIKaW5kZXggYTQ0YTVjOC4uZDAzMGMzMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTQuYmIKQEAgLTE2LDMgKzE2LDUgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3N2FhZGE1MjIyYjlhMjJmYmYzNDcxZmYzNjg3MDY4IgogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJzbV8xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnNtXzEuMi4yLmJiCmluZGV4IDQ4OTIyY2IuLmZkYzY5M2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnNtXzEuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnNtXzEuMi4yLmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMwZmIzN2Y0NGUwMmJkYmRlODA1NDYwMjQ0MDA3MjhkIgogCi1ERVBFTkRTICs9ICJsaWJpY2UgeHByb3RvIHh0cmFucyIKK0RFUEVORFMgKz0gImxpYmljZSB4b3JncHJvdG8geHRyYW5zIgogCiAjIGxpYlNNIGNhbiB3b3JrIHdpdGhvdXQgbGlidXVpZCwgd2UgZXhwbGljaXRseSBkaXNhYmxlIGl0IHRvIGJyZWFrIHRoZSBmb2xsb3dpbmcgY2lyY3VsYXIgZGVwZW5kZW5jeQogIyB3aGVuIERJU1RST19GRUFUVVJFUyBjb250YWlucyAnc3lzdGVtZCcgYW5kICd4MTEnLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1Zjk2YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgbGlieDExLmluYwotCi1ERVNDUklQVElPTiArPSAiIFN1cHBvcnQgZm9yIFhDTVMgYW5kIFhMT0NBTEUgaXMgZGlzYWJsZWQgaW4gXAotdGhpcyB2ZXJzaW9uLiIKLQotU1JDX1VSSSArPSAiZmlsZTovL1gxOE5DTVNzdHVicy5kaWZmIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUlBST1ZJREVTXyR7UE59LWRldiA9ICJsaWJ4MTEtZGV2IgotUlBST1ZJREVTXyR7UE59LWxvY2FsZSA9ICJsaWJ4MTEtbG9jYWxlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGY2MThkYjcwYzQwNTRjYTY3Y2VlMGNjMTU2YTQyNTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQzODkwZGIyYmEyMjViYThjNTVjYTYzYzY0MDljMWViYjA3OGEyODA2ZGU1OWZiMTYzNDI3NjhhZTYzNDM1ZCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUteGxvY2FsZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiYTRlNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi42LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgbGlieDExLmluYworCitERVNDUklQVElPTiArPSAiIFN1cHBvcnQgZm9yIFhDTVMgYW5kIFhMT0NBTEUgaXMgZGlzYWJsZWQgaW4gXAordGhpcyB2ZXJzaW9uLiIKKworU1JDX1VSSSArPSAiZmlsZTovL1gxOE5DTVNzdHVicy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZml4LWRpc2FibGUteGxvY2FsZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImxpYngxMS1kZXYiCitSUFJPVklERVNfJHtQTn0tbG9jYWxlID0gImxpYngxMS1sb2NhbGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjBmODNlODUxYjNiNDY5ZGQ2NjBmM2E5NWFjM2U0MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NWZlMTgxZDQwZWM3N2Y0NTQxNzcxMGM2YTY3NDMxODE0YWIyNTJkMjFjMmU4NWM3NWRkMWVkNTY4YWY0MTRmIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14bG9jYWxlIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMKaW5kZXggNGFmNDBhYi4uMzZjOTUwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jCkBAIC02LDggKzYsNiBAQAogCiByZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKIAotaW5oZXJpdCBzaXRlaW5mbwotCiBGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9saWJ4MTE6IgogCiBQRSA9ICIxIgpAQCAtMTgsOCArMTYsOCBAQAogTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNzIyNTVkZWU2NmJiMDE1MTQzNWIyZDVkNzA5ZmNmNyIKIAotREVQRU5EUyArPSAieHByb3RvIHhleHRwcm90byB4dHJhbnMgbGlieGNiIGticHJvdG8gaW5wdXRwcm90byIKLURFUEVORFMgKz0gInhwcm90by1uYXRpdmUiCitERVBFTkRTICs9ICJ4b3JncHJvdG8geHRyYW5zIGxpYnhjYiIKK0RFUEVORFMgKz0gInhvcmdwcm90by1uYXRpdmUiCiAKIEVYVFJBX09FQ09ORiArPSAiLS13aXRoLWtleXN5bWRlZmRpcj0ke1NUQUdJTkdfSU5DRElSfS9YMTEvIC0tZGlzYWJsZS14Zjg2YmlnZm9udCIKIEVYVFJBX09FTUFLRSArPSAnQ1dBUk5GTEFHUz0iIicKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9YMThOQ01Tc3R1YnMuZGlmZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9YMThOQ01Tc3R1YnMuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ0Y2VkYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvWDE4TkNNU3N0dWJzLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw1MjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLUluZGV4OiBsaWJYMTEtMS4zL3NyYy9pbUNvbnYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYlgxMS0xLjMub3JpZy9zcmMvaW1Db252LmMKLSsrKyBsaWJYMTEtMS4zL3NyYy9pbUNvbnYuYwotQEAgLTgzLDYgKzgzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBTdWJzdFJlYyBTdWJzdFRhYmxlWwotICAqIGZyb20gVUNTIGNoYXIgdG8gc3BlY2lmaWVkIGNoYXJzZXQgY2hhci4KLSAgKiBUaGlzIGNvbnZlcnRlciBpcyBuZWVkZWQgZm9yIF9YaW1HZXRDaGFyQ29kZSBzdWJyb3V0aW5lLgotICAqLwotKyNpZmRlZiBYTE9DQUxFCi0gWFBvaW50ZXIKLSBfWGltR2V0TG9jYWxlQ29kZSAoCi0gICAgIF9YY29uc3QgY2hhcioJZW5jb2RpbmdfbmFtZSkKLUBAIC05Niw2ICs5Nyw3IEBAIF9YaW1HZXRMb2NhbGVDb2RlICgKLSAgICAgfQotICAgICByZXR1cm4gY3Z0OwotIH0KLSsjZW5kaWYKLSAKLSAvKgotICAqIFJldHVybnMgdGhlIGxvY2FsZSBkZXBlbmRlbnQgcmVwcmVzZW50YXRpb24gb2YgYSBrZXlzeW0uCi1AQCAtMTA2LDYgKzEwOCw3IEBAIF9YaW1HZXRMb2NhbGVDb2RlICgKLSAgKiB0ZXJtaW5hdGluZyBOVUwgYnl0ZS4gUmV0dXJuIDAgaWYgdGhlIGtleXN5bSBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiB0aGUKLSAgKiBsb2NhbGUKLSAgKi8KLSsjaWZkZWYgWExPQ0FMRQotIC8qQVJHU1VTRUQqLwotIGludAotIF9YaW1HZXRDaGFyQ29kZSAoCi1AQCAtMTM1LDYgKzEzOCw3IEBAIF9YaW1HZXRDaGFyQ29kZSAoCi0gICAgICAgICBidWZbY291bnRdPSAnXDAnOwotICAgICByZXR1cm4gY291bnQ7Ci0gfQotKyNlbmRpZgotIAotICNpZmRlZiBYS0IKLSBzdGF0aWMgaW50IGxvb2t1cF9zdHJpbmcoCi1JbmRleDogbGliWDExLTEuMy9zcmMvWDE4TkNNU3N0dWJzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBsaWJYMTEtMS4zL3NyYy9YMThOQ01Tc3R1YnMuYwotQEAgLTAsMCArMSw0MjggQEAKLSsvKgotKyAqIFgxOE5DTVNzdHVicy5jCi0rICogLSBQcm92aWRlcyBzdHVicyBhbmQgZHVtbXkgZnVuY3MgbmVlZGVkIHdoZW4gWGNtcyBhbmQgWExvY2FsZSBzdHVmZiByZW1vdmVkCi0rICoKLSsgKiBDb3B5cmlnaHQgqSAyMDAzIE1hdHRoZXcgQWxsdW0KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwotKyAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0Ci0rICogdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0Ci0rICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZwotKyAqIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIE1hdHRoZXcgQWxsdW0gbm90IGJlIHVzZWQgaW4KLSsgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgS2VpdGggUGFja2FyZCBhbmQgQ29tcGFxIG1ha2VzIG5vCi0rICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0Ci0rICogaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KLSsgKgotKyAqIE1BVFRIRVcgQUxMVU0gRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgCi0rICogU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgCi0rICogSU4gTk8gRVZFTlQgU0hBTEwgS0VJVEggUEFDS0FSRCBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUgotKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLAotKyAqIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKLSsgKiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCi0rICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgIlhsaWJpbnQuaCIKLSsjaW5jbHVkZSAiWGxjaW50LmgiCi0rI2luY2x1ZGUgPFgxMS9YbG9jYWxlLmg+Ci0rI2luY2x1ZGUgPFgxMS9Yb3MuaD4KLSsjaWZkZWYgV0lOMzIKLSsjdW5kZWYgY2xvc2UKLSsjZW5kaWYKLSsjaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0rI2luY2x1ZGUgIlhsY1B1YkkuaCIKLSsKLSsjaW5jbHVkZSAiWGNtc2ludC5oIiAJCS8qIGZvciBYY21zQ0NDIHR5cGUgICovCi0rI2luY2x1ZGUgIlhsY1B1YkkuaCIgICAgICAgICAgICAvKiBmb3IgWExDZCB0eXBlICovCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKwotKyNpZiAhIFhMT0NBTEUKLSsKLStCb29sCi0rWFN1cHBvcnRzTG9jYWxlKCkKLSt7Ci0rICByZXR1cm4gRmFsc2U7IAkJCi0rfQotKwotK2NoYXIgKgotK1hTZXRMb2NhbGVNb2RpZmllcnMoCi0rICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVycykKLSt7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rWExDZAotK19YT3BlbkxDKAotKyAgICBjaGFyICpuYW1lKQotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStYTENkCi0rX1hsY0N1cnJlbnRMQygpCi0rewotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3ZvaWQKLStfWGxjVmFUb0FyZ0xpc3QoCi0rICAgIHZhX2xpc3QgdmFyLAotKyAgICBpbnQgY291bnQsCi0rICAgIFhsY0FyZ0xpc3QgKmFyZ3NfcmV0KQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rdm9pZAotK19YbGNDb3VudFZhTGlzdCgKLSsgICAgdmFfbGlzdCB2YXIsCi0rICAgIGludCAqY291bnRfcmV0KQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rdm9pZAotK19YQ2xvc2VMQygKLSsgICAgWExDZCBsY2QpCi0rewotKyAgcmV0dXJuOwotK30KLSsKLStpbnQKLStfWGxjQ29udmVydCgKLSsgICAgWGxjQ29udiBjb252LAotKyAgICBYUG9pbnRlciAqZnJvbSwKLSsgICAgaW50ICpmcm9tX2xlZnQsCi0rICAgIFhQb2ludGVyICp0bywKLSsgICAgaW50ICp0b19sZWZ0LAotKyAgICBYUG9pbnRlciAqYXJncywKLSsgICAgaW50IG51bV9hcmdzKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBYSU0gU3R1YnMgKi8KLSsKLStYUG9pbnRlcgotK19YaW1HZXRMb2NhbGVDb2RlICggX1hjb25zdCBjaGFyKiBlbmNvZGluZ19uYW1lICkKLSt7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0raW50Ci0rX1hpbUdldENoYXJDb2RlICgKLSsgICAgWFBvaW50ZXIgICAgICAgICAgICB1Y3NfY29udiwKLSsgICAgS2V5U3ltICAgICAgICAgICAgICBrZXlzeW0sCi0rICAgIHVuc2lnbmVkIGNoYXIqICAgICAgYnVmLAotKyAgICBpbnQgICAgICAgICAgICAgICAgIG5ieXRlcykKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogWHJtIFN0dWJzICovCi0rCi0rWHJtTWV0aG9kcwotK19Ycm1Jbml0UGFyc2VJbmZvKAotKyAgICBYUG9pbnRlciAqc3RhdGUpCi0rewotKyAgICByZXR1cm4gKFhybU1ldGhvZHMpIE5VTEw7Ci0rfQotKwotKy8qIFh3YyBTdHVicyAqLwotKwotK2ludAotK1h3Y1RleHRFeHRlbnRzKAotKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAotKyAgICBfWGNvbnN0IHdjaGFyX3QgICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4sCi0rICAgIFhSZWN0YW5nbGUgICAgICAgICAqb3ZlcmFsbF9pbmtfZXh0ZW50cywKLSsgICAgWFJlY3RhbmdsZSAgICAgICAgICpvdmVyYWxsX2xvZ2ljYWxfZXh0ZW50cykKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rdm9pZCAKLStYd2NEcmF3U3RyaW5nKERpc3BsYXkgKmRpc3BsYXksCi0rCSAgICAgIERyYXdhYmxlIGQsCi0rCSAgICAgIFhGb250U2V0IGZvbnRfc2V0LAotKwkgICAgICBHQyBnYywKLSsJICAgICAgaW50IHgsIGludCB5LAotKwkgICAgICBfWGNvbnN0IHdjaGFyX3QgKnN0cmluZywKLSsJICAgICAgaW50IG51bV93Y2hhcnMpCi0rewotKyAgOwotK30KLSsKLSt2b2lkCi0rWHdjRHJhd1RleHQoCi0rICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAotKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCi0rICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCi0rICAgIGludCAgICAgICAgICAgICAgICAgeCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB5LAotKyAgICBYd2NUZXh0SXRlbSAgICAgICAgKnRleHRfaXRlbXMsCi0rICAgIGludCAgICAgICAgICAgICAgICAgbml0ZW1zKQotK3sKLSsgIDsKLSt9Ci0rCi0rdm9pZAotK1h3Y0RyYXdJbWFnZVN0cmluZygKLSsgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCi0rICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKLSsgICAgWEZvbnRTZXQgICAgICAgICAgICBmb250X3NldCwKLSsgICAgR0MgICAgICAgICAgICAgICAgICBnYywKLSsgICAgaW50ICAgICAgICAgICAgICAgICB4LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCi0rICAgIF9YY29uc3Qgd2NoYXJfdCAgICAqdGV4dCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbikKLSt7Ci0rICA7Ci0rfQotKwotK2ludAotK1h3Y1RleHRFc2NhcGVtZW50KAotKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAotKyAgICBfWGNvbnN0IHdjaGFyX3QgICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4pCi0rewotKyAgcmV0dXJuIDA7Ci0rfQotKwotK1N0YXR1cwotK1h3Y1RleHRQZXJDaGFyRXh0ZW50cygKLSsgICAgWEZvbnRTZXQgICAgICAgICAgICBmb250X3NldCwKLSsgICAgX1hjb25zdCB3Y2hhcl90ICAgICp0ZXh0LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHRleHRfbGVuLAotKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKmlua19leHRlbnRzX2J1ZmZlciwKLSsgICAgWFJlY3RhbmdsZSAgICAgICAgICpsb2dpY2FsX2V4dGVudHNfYnVmZmVyLAotKyAgICBpbnQgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplLAotKyAgICBpbnQgICAgICAgICAgICAgICAgKm51bV9jaGFycywKLSsgICAgWFJlY3RhbmdsZSAgICAgICAgICptYXhfaW5rX2V4dGVudHMsCi0rICAgIFhSZWN0YW5nbGUgICAgICAgICAqbWF4X2xvZ2ljYWxfZXh0ZW50cykKLSt7Ci0rICByZXR1cm4oWGNtc0ZhaWx1cmUpOwotK30KLSsKLStpbnQKLStYd2NUZXh0UHJvcGVydHlUb1RleHRMaXN0KAotKyAgICBEaXNwbGF5ICpkcHksCi0rICAgIGNvbnN0IFhUZXh0UHJvcGVydHkgKnRleHRfcHJvcCwKLSsgICAgd2NoYXJfdCAqKipsaXN0X3JldCwKLSsgICAgaW50ICpjb3VudF9yZXQpCi0rewotKyAgcmV0dXJuIDA7Ci0rfQotKwotK2ludAotK1h3Y1RleHRMaXN0VG9UZXh0UHJvcGVydHkoCi0rICAgIERpc3BsYXkgKmRweSwKLSsgICAgd2NoYXJfdCAqKmxpc3QsCi0rICAgIGludCBjb3VudCwKLSsgICAgWElDQ0VuY29kaW5nU3R5bGUgc3R5bGUsCi0rICAgIFhUZXh0UHJvcGVydHkgKnRleHRfcHJvcCkKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rdm9pZAotK1h3Y0ZyZWVTdHJpbmdMaXN0KHdjaGFyX3QgKipsaXN0KQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rCi0rdm9pZCBYbWJTZXRXTVByb3BlcnRpZXMgKCAgICAgICAgLyogQWN0dWFsbHkgZnJvbSBtYldNUHJvcHMuYyAqLwotKyAgICBEaXNwbGF5ICpkcHksCi0rICAgIFdpbmRvdyB3LAotKyAgICBfWGNvbnN0IGNoYXIgKndpbmRvd05hbWUsCi0rICAgIF9YY29uc3QgY2hhciAqaWNvbk5hbWUsCi0rICAgIGNoYXIgKiphcmd2LAotKyAgICBpbnQgYXJnYywKLSsgICAgWFNpemVIaW50cyAqc2l6ZUhpbnRzLAotKyAgICBYV01IaW50cyAqd21IaW50cywKLSsgICAgWENsYXNzSGludCAqY2xhc3NIaW50cykKLSt7Ci0rICByZXR1cm47Ci0rfQotKwotK2ludAotK1htYlRleHRQcm9wZXJ0eVRvVGV4dExpc3QoCi0rICAgIERpc3BsYXkgKmRweSwKLSsgICAgY29uc3QgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wLAotKyAgICBjaGFyICoqKmxpc3RfcmV0LAotKyAgICBpbnQgKmNvdW50X3JldCkKLSt7Ci0rICByZXR1cm4gWExvY2FsZU5vdFN1cHBvcnRlZDsKLSt9Ci0rCi0raW50Ci0rWG1iVGV4dExpc3RUb1RleHRQcm9wZXJ0eSgKLSsgICAgRGlzcGxheSAqZHB5LAotKyAgICBjaGFyICoqbGlzdCwKLSsgICAgaW50IGNvdW50LAotKyAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKLSsgICAgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wKQotK3sKLSsgIHJldHVybiBYTG9jYWxlTm90U3VwcG9ydGVkOwotK30KLSsKLStpbnQKLStYbWJUZXh0RXh0ZW50cygKLSsgICAgWEZvbnRTZXQgICAgICAgIGZvbnRfc2V0LAotKyAgICBfWGNvbnN0IGNoYXIgICAqdGV4dCwKLSsgICAgaW50ICAgICAgICAgICAgIHRleHRfbGVuLAotKyAgICBYUmVjdGFuZ2xlICAgICAqb3ZlcmFsbF9pbmtfZXh0ZW50cywKLSsgICAgWFJlY3RhbmdsZSAgICAgKm92ZXJhbGxfbG9naWNhbF9leHRlbnRzKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSt2b2lkCi0rWG1iRHJhd1RleHQoCi0rICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAotKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCi0rICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCi0rICAgIGludCAgICAgICAgICAgICAgICAgeCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB5LAotKyAgICBYbWJUZXh0SXRlbSAgICAgICAgKnRleHRfaXRlbXMsCi0rICAgIGludCAgICAgICAgICAgICAgICAgbml0ZW1zKQotK3sKLSsgIDsKLSt9Ci0rCi0rdm9pZAotK1htYkRyYXdTdHJpbmcoCi0rICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAotKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCi0rICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCi0rICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCi0rICAgIGludCAgICAgICAgICAgICAgICAgeCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB5LAotKyAgICBfWGNvbnN0IGNoYXIgICAgICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4pCi0rewotKyAgOwotK30KLSsKLSt2b2lkCi0rWG1iRHJhd0ltYWdlU3RyaW5nKAotKyAgICBEaXNwbGF5ICAgICAgICAgICAgKmRweSwKLSsgICAgRHJhd2FibGUgICAgICAgICAgICBkLAotKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAotKyAgICBHQyAgICAgICAgICAgICAgICAgIGdjLAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHgsCi0rICAgIGludCAgICAgICAgICAgICAgICAgeSwKLSsgICAgX1hjb25zdCBjaGFyICAgICAgICp0ZXh0LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHRleHRfbGVuKQotK3sKLSsgIDsKLSt9Ci0rCi0raW50Ci0rWG1iVGV4dEVzY2FwZW1lbnQoCi0rICAgIFhGb250U2V0ICAgICAgICBmb250X3NldCwKLSsgICAgX1hjb25zdCBjaGFyICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICB0ZXh0X2xlbikKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rU3RhdHVzCi0rWG1iVGV4dFBlckNoYXJFeHRlbnRzKAotKyAgICBYRm9udFNldCAgICAgICAgZm9udF9zZXQsCi0rICAgIF9YY29uc3QgY2hhciAgICp0ZXh0LAotKyAgICBpbnQgICAgICAgICAgICAgdGV4dF9sZW4sCi0rICAgIFhSZWN0YW5nbGUgICAgICppbmtfZXh0ZW50c19idWZmZXIsCi0rICAgIFhSZWN0YW5nbGUgICAgICpsb2dpY2FsX2V4dGVudHNfYnVmZmVyLAotKyAgICBpbnQgICAgICAgICAgICAgYnVmZmVyX3NpemUsCi0rICAgIGludCAgICAgICAgICAgICpudW1fY2hhcnMsCi0rICAgIFhSZWN0YW5nbGUgICAgICptYXhfaW5rX2V4dGVudHMsCi0rICAgIFhSZWN0YW5nbGUgICAgICptYXhfbG9naWNhbF9leHRlbnRzKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSt1bnNpZ25lZCBpbnQKLStLZXlTeW1Ub1VjczQoS2V5U3ltIGtleXN5bSkKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rI2VuZGlmIAotKwotKyNpZiAhIFhDTVMKLSsKLStYY21zQ0NDIAotK1hjbXNDQ0NPZkNvbG9ybWFwKGRweSwgY21hcCkKLSsgICAgRGlzcGxheSAqZHB5OwotKyAgICBDb2xvcm1hcCBjbWFwOwotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStTdGF0dXMKLStfWGNtc1Jlc29sdmVDb2xvclN0cmluZyAoCi0rICAgIFhjbXNDQ0MgY2NjLAotKyAgICBjb25zdCBjaGFyICoqY29sb3Jfc3RyaW5nLAotKyAgICBYY21zQ29sb3IgKnBDb2xvcl9leGFjdF9yZXR1cm4sCi0rICAgIFhjbXNDb2xvckZvcm1hdCByZXN1bHRfZm9ybWF0KQotK3sKLSsgIHJldHVybihYY21zRmFpbHVyZSk7Ci0rfQotKwotK3ZvaWQKLStfWGNtc1VucmVzb2x2ZUNvbG9yKAotKyAgICBYY21zQ0NDIGNjYywKLSsgICAgWGNtc0NvbG9yICpwQ29sb3IpCi0rewotKyAgcmV0dXJuOwotK30KLSsKLSt2b2lkCi0rX1hVbnJlc29sdmVDb2xvcigKLSsgICAgWGNtc0NDQyBjY2MsCi0rICAgIFhDb2xvciAqcFhDb2xvcikKLSt7Ci0rICByZXR1cm47Ci0rfQotKwotK1hjbXNDbWFwUmVjICoKLStfWGNtc0FkZENtYXBSZWMoZHB5LCBjbWFwLCB3aW5kb3dJRCwgdmlzdWFsKQotKyAgICBEaXNwbGF5ICpkcHk7Ci0rICAgIENvbG9ybWFwIGNtYXA7Ci0rICAgIFdpbmRvdyB3aW5kb3dJRDsKLSsgICAgVmlzdWFsICp2aXN1YWw7Ci0rewotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3ZvaWQKLStfWGNtc1JHQl90b19YQ29sb3IoCi0rICAgIFhjbXNDb2xvciAqcENvbG9ycywKLSsgICAgWENvbG9yICpwWENvbG9ycywKLSsgICAgdW5zaWduZWQgaW50IG5Db2xvcnMpCi0rewotKyAgcmV0dXJuOwotK30KLSsKLStYY21zQ21hcFJlYyAqCi0rX1hjbXNDb3B5Q21hcFJlY0FuZEZyZWUoCi0rICAgIERpc3BsYXkgKmRweSwKLSsgICAgQ29sb3JtYXAgc3JjX2NtYXAsCi0rICAgIENvbG9ybWFwIGNvcHlfY21hcCkKLSt7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rdm9pZAotK19YY21zRGVsZXRlQ21hcFJlYygKLSsgICAgRGlzcGxheSAqZHB5LAotKyAgICBDb2xvcm1hcCBjbWFwKQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rI2VuZGlmCi1JbmRleDogbGliWDExLTEuMy9zcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJYMTEtMS4zLm9yaWcvc3JjL01ha2VmaWxlLmFtCi0rKysgbGliWDExLTEuMy9zcmMvTWFrZWZpbGUuYW0KLUBAIC0zMzUsNiArMzM1LDggQEAgaWYgVEhSU1RVQlMKLSBsaWJYMTFfbGFfU09VUkNFUys9VUlUaHJTdHVicy5jCi0gZW5kaWYKLSAKLStsaWJYMTFfbGFfU09VUkNFUys9WDE4TkNNU3N0dWJzLmMKLSsKLSB4MTFkYXRhZGlyID0gQFgxMV9EQVRBRElSQAotIHgxMWRhdGFfREFUQSA9IFhLZXlzeW1EQiBYRXJyb3JEQgotIAotQEAgLTM0Miw2ICszNDQsNyBAQCBFWFRSQV9ESVNUID0gXAotIAkkKHgxMWRhdGFfREFUQSkgXAotIAlvczJTdHVicy5jIFwKLS0JVUlUaHJTdHVicy5jIAotKwlVSVRoclN0dWJzLmMgXAotKwlYMThOQ01Tc3R1YnMuYwotIAotIGlmIFhDQgotIGxpYlgxMV9sYV9TT1VSQ0VTICs9IFwKLUluZGV4OiBsaWJYMTEtMS4zL3NyYy9sb2NraW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJYMTEtMS4zLm9yaWcvc3JjL2xvY2tpbmcuYwotKysrIGxpYlgxMS0xLjMvc3JjL2xvY2tpbmcuYwotQEAgLTY2LDcgKzY2LDkgQEAgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYQotICNkZWZpbmUgTlVNX0ZSRUVfQ1ZMUyA0Ci0gCi0gLyogaW4gbGNXcmFwLmMgKi8KLSsjaWZkZWYgWExPQ0FMRQotIGV4dGVybiBMb2NrSW5mb1B0ciBfWGkxOG5fbG9jazsKLSsjZW5kaWYKLSAKLSAjaWZkZWYgV0lOMzIKLSBzdGF0aWMgRFdPUkQgX1hfVGxzSW5kZXggPSAoRFdPUkQpLTE7Ci1AQCAtNTk0LDkgKzU5NiwxMSBAQCBTdGF0dXMgWEluaXRUaHJlYWRzKHZvaWQpCi0gICAgIF9YZ2xvYmFsX2xvY2sgPSAmZ2xvYmFsX2xvY2s7Ci0gICAgIHhtdXRleF9pbml0KF9YZ2xvYmFsX2xvY2stPmxvY2spOwotICAgICB4bXV0ZXhfc2V0X25hbWUoX1hnbG9iYWxfbG9jay0+bG9jaywgIlhsaWIgZ2xvYmFsIik7Ci0rI2lmZGVmIFhMT0NBTEUKLSAgICAgX1hpMThuX2xvY2sgPSAmaTE4bl9sb2NrOwotICAgICB4bXV0ZXhfaW5pdChfWGkxOG5fbG9jay0+bG9jayk7Ci0gICAgIHhtdXRleF9zZXRfbmFtZShfWGkxOG5fbG9jay0+bG9jaywgIlhsaWIgaTE4biIpOwotKyNlbmRpZgotICAgICBfWExvY2tNdXRleF9mbiA9IF9YTG9ja011dGV4OwotICAgICBfWFVubG9ja011dGV4X2ZuID0gX1hVbmxvY2tNdXRleDsKLSAgICAgX1hDcmVhdGVNdXRleF9mbiA9IF9YQ3JlYXRlTXV0ZXg7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvWDE4TkNNU3N0dWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL1gxOE5DTVNzdHVicy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTE3MjE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL1gxOE5DTVNzdHVicy5wYXRjaApAQCAtMCwwICsxLDUzNiBAQAorRnJvbSA2MjAwNWFkMDE5ZDZhZmI4MWRhMTAwYjMxMTMyOTJhMTY0NzJkMjQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTAgU2VwIDIwMTggMDk6MDg6MjcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gU3R1YiBvdXQgeDE4bgorCitVcGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiAxLjYuNgorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSAgICB8ICAgNSArLQorIHNyYy9YMThOQ01Tc3R1YnMuYyB8IDQyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9pbUNvbnYuYyAgICAgICB8ICAgNSArLQorIHNyYy9sb2NraW5nLmMgICAgICB8ICAgNCArCisgNCBmaWxlcyBjaGFuZ2VkLCA0MzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL1gxOE5DTVNzdHVicy5jCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IGY4YzQ3NmQuLmNkYmNiYmQgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTMzNiwxMyArMzM2LDE2IEBAIGlmIFRIUlNUVUJTCisgbGliWDExX2xhX1NPVVJDRVMrPVVJVGhyU3R1YnMuYworIGVuZGlmCisgCisrbGliWDExX2xhX1NPVVJDRVMrPVgxOE5DTVNzdHVicy5jCisrCisgeDExZGF0YWRpciA9IEBYMTFfREFUQURJUkAKKyB4MTFkYXRhX0RBVEEgPSBYRXJyb3JEQgorIAorIEVYVFJBX0RJU1QgPSBcCisgCSQoeDExZGF0YV9EQVRBKSBcCisgCW9zMlN0dWJzLmMgXAorLQlVSVRoclN0dWJzLmMgCisrCVVJVGhyU3R1YnMuYyBcCisrCVgxOE5DTVNzdHVicy5jCisgCisgbGliWDExX3hjYl9sYV9TT1VSQ0VTID0geDExX3hjYi5jIFh4Y2JpbnQuaAorIGxpYlgxMV94Y2JfbGFfTERGTEFHUyA9IC12ZXJzaW9uLW51bWJlciAxOjA6MCAtbm8tdW5kZWZpbmVkCitkaWZmIC0tZ2l0IGEvc3JjL1gxOE5DTVNzdHVicy5jIGIvc3JjL1gxOE5DTVNzdHVicy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDI5Y2IzMQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL1gxOE5DTVNzdHVicy5jCitAQCAtMCwwICsxLDQyNiBAQAorKyAvKiAtIFByb3ZpZGVzIHN0dWJzIGFuZCBkdW1teSBmdW5jcyBuZWVkZWQgd2hlbiBYY21zIGFuZCBYTG9jYWxlIHN0dWZmIHJlbW92ZWQKKysgKgorKyAqIENvcHlyaWdodCDCqSAyMDAzIE1hdHRoZXcgQWxsdW0KKysgKgorKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cworKyAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0CisrICogdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0CisrICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZworKyAqIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIE1hdHRoZXcgQWxsdW0gbm90IGJlIHVzZWQgaW4KKysgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKKysgKiBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgS2VpdGggUGFja2FyZCBhbmQgQ29tcGFxIG1ha2VzIG5vCisrICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0CisrICogaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKysgKgorKyAqIE1BVFRIRVcgQUxMVU0gRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgCisrICogU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgCisrICogSU4gTk8gRVZFTlQgU0hBTEwgS0VJVEggUEFDS0FSRCBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUgorKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLAorKyAqIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKKysgKiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCisrICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKysgKi8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgIlhsaWJpbnQuaCIKKysjaW5jbHVkZSAiWGxjaW50LmgiCisrI2luY2x1ZGUgPFgxMS9YbG9jYWxlLmg+CisrI2luY2x1ZGUgPFgxMS9Yb3MuaD4KKysjaWZkZWYgV0lOMzIKKysjdW5kZWYgY2xvc2UKKysjZW5kaWYKKysjaW5jbHVkZSA8WDExL1h1dGlsLmg+CisrI2luY2x1ZGUgIlhsY1B1YkkuaCIKKysKKysjaW5jbHVkZSAiWGNtc2ludC5oIiAJCS8qIGZvciBYY21zQ0NDIHR5cGUgICovCisrI2luY2x1ZGUgIlhsY1B1YkkuaCIgICAgICAgICAgICAvKiBmb3IgWExDZCB0eXBlICovCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpZiAhIFhMT0NBTEUKKysKKytCb29sCisrWFN1cHBvcnRzTG9jYWxlKCkKKyt7CisrICByZXR1cm4gRmFsc2U7IAkJCisrfQorKworK2NoYXIgKgorK1hTZXRMb2NhbGVNb2RpZmllcnMoCisrICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVycykKKyt7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrWExDZAorK19YT3BlbkxDKAorKyAgICBjaGFyICpuYW1lKQorK3sKKysgIHJldHVybiBOVUxMOworK30KKysKKytYTENkCisrX1hsY0N1cnJlbnRMQygpCisreworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK3ZvaWQKKytfWGxjVmFUb0FyZ0xpc3QoCisrICAgIHZhX2xpc3QgdmFyLAorKyAgICBpbnQgY291bnQsCisrICAgIFhsY0FyZ0xpc3QgKmFyZ3NfcmV0KQorK3sKKysgIHJldHVybjsKKyt9CisrCisrdm9pZAorK19YbGNDb3VudFZhTGlzdCgKKysgICAgdmFfbGlzdCB2YXIsCisrICAgIGludCAqY291bnRfcmV0KQorK3sKKysgIHJldHVybjsKKyt9CisrCisrdm9pZAorK19YQ2xvc2VMQygKKysgICAgWExDZCBsY2QpCisreworKyAgcmV0dXJuOworK30KKysKKytpbnQKKytfWGxjQ29udmVydCgKKysgICAgWGxjQ29udiBjb252LAorKyAgICBYUG9pbnRlciAqZnJvbSwKKysgICAgaW50ICpmcm9tX2xlZnQsCisrICAgIFhQb2ludGVyICp0bywKKysgICAgaW50ICp0b19sZWZ0LAorKyAgICBYUG9pbnRlciAqYXJncywKKysgICAgaW50IG51bV9hcmdzKQorK3sKKysgIHJldHVybiAwOworK30KKysKKysvKiBYSU0gU3R1YnMgKi8KKysKKytYUG9pbnRlcgorK19YaW1HZXRMb2NhbGVDb2RlICggX1hjb25zdCBjaGFyKiBlbmNvZGluZ19uYW1lICkKKyt7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisraW50CisrX1hpbUdldENoYXJDb2RlICgKKysgICAgWFBvaW50ZXIgICAgICAgICAgICB1Y3NfY29udiwKKysgICAgS2V5U3ltICAgICAgICAgICAgICBrZXlzeW0sCisrICAgIHVuc2lnbmVkIGNoYXIqICAgICAgYnVmLAorKyAgICBpbnQgICAgICAgICAgICAgICAgIG5ieXRlcykKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogWHJtIFN0dWJzICovCisrCisrWHJtTWV0aG9kcworK19Ycm1Jbml0UGFyc2VJbmZvKAorKyAgICBYUG9pbnRlciAqc3RhdGUpCisreworKyAgICByZXR1cm4gKFhybU1ldGhvZHMpIE5VTEw7CisrfQorKworKy8qIFh3YyBTdHVicyAqLworKworK2ludAorK1h3Y1RleHRFeHRlbnRzKAorKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAorKyAgICBfWGNvbnN0IHdjaGFyX3QgICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4sCisrICAgIFhSZWN0YW5nbGUgICAgICAgICAqb3ZlcmFsbF9pbmtfZXh0ZW50cywKKysgICAgWFJlY3RhbmdsZSAgICAgICAgICpvdmVyYWxsX2xvZ2ljYWxfZXh0ZW50cykKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrdm9pZCAKKytYd2NEcmF3U3RyaW5nKERpc3BsYXkgKmRpc3BsYXksCisrCSAgICAgIERyYXdhYmxlIGQsCisrCSAgICAgIFhGb250U2V0IGZvbnRfc2V0LAorKwkgICAgICBHQyBnYywKKysJICAgICAgaW50IHgsIGludCB5LAorKwkgICAgICBfWGNvbnN0IHdjaGFyX3QgKnN0cmluZywKKysJICAgICAgaW50IG51bV93Y2hhcnMpCisreworKyAgOworK30KKysKKyt2b2lkCisrWHdjRHJhd1RleHQoCisrICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAorKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCisrICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCisrICAgIGludCAgICAgICAgICAgICAgICAgeCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB5LAorKyAgICBYd2NUZXh0SXRlbSAgICAgICAgKnRleHRfaXRlbXMsCisrICAgIGludCAgICAgICAgICAgICAgICAgbml0ZW1zKQorK3sKKysgIDsKKyt9CisrCisrdm9pZAorK1h3Y0RyYXdJbWFnZVN0cmluZygKKysgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCisrICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKKysgICAgWEZvbnRTZXQgICAgICAgICAgICBmb250X3NldCwKKysgICAgR0MgICAgICAgICAgICAgICAgICBnYywKKysgICAgaW50ICAgICAgICAgICAgICAgICB4LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCisrICAgIF9YY29uc3Qgd2NoYXJfdCAgICAqdGV4dCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbikKKyt7CisrICA7CisrfQorKworK2ludAorK1h3Y1RleHRFc2NhcGVtZW50KAorKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAorKyAgICBfWGNvbnN0IHdjaGFyX3QgICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4pCisreworKyAgcmV0dXJuIDA7CisrfQorKworK1N0YXR1cworK1h3Y1RleHRQZXJDaGFyRXh0ZW50cygKKysgICAgWEZvbnRTZXQgICAgICAgICAgICBmb250X3NldCwKKysgICAgX1hjb25zdCB3Y2hhcl90ICAgICp0ZXh0LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHRleHRfbGVuLAorKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKmlua19leHRlbnRzX2J1ZmZlciwKKysgICAgWFJlY3RhbmdsZSAgICAgICAgICpsb2dpY2FsX2V4dGVudHNfYnVmZmVyLAorKyAgICBpbnQgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplLAorKyAgICBpbnQgICAgICAgICAgICAgICAgKm51bV9jaGFycywKKysgICAgWFJlY3RhbmdsZSAgICAgICAgICptYXhfaW5rX2V4dGVudHMsCisrICAgIFhSZWN0YW5nbGUgICAgICAgICAqbWF4X2xvZ2ljYWxfZXh0ZW50cykKKyt7CisrICByZXR1cm4oWGNtc0ZhaWx1cmUpOworK30KKysKKytpbnQKKytYd2NUZXh0UHJvcGVydHlUb1RleHRMaXN0KAorKyAgICBEaXNwbGF5ICpkcHksCisrICAgIGNvbnN0IFhUZXh0UHJvcGVydHkgKnRleHRfcHJvcCwKKysgICAgd2NoYXJfdCAqKipsaXN0X3JldCwKKysgICAgaW50ICpjb3VudF9yZXQpCisreworKyAgcmV0dXJuIDA7CisrfQorKworK2ludAorK1h3Y1RleHRMaXN0VG9UZXh0UHJvcGVydHkoCisrICAgIERpc3BsYXkgKmRweSwKKysgICAgd2NoYXJfdCAqKmxpc3QsCisrICAgIGludCBjb3VudCwKKysgICAgWElDQ0VuY29kaW5nU3R5bGUgc3R5bGUsCisrICAgIFhUZXh0UHJvcGVydHkgKnRleHRfcHJvcCkKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrdm9pZAorK1h3Y0ZyZWVTdHJpbmdMaXN0KHdjaGFyX3QgKipsaXN0KQorK3sKKysgIHJldHVybjsKKyt9CisrCisrCisrdm9pZCBYbWJTZXRXTVByb3BlcnRpZXMgKCAgICAgICAgLyogQWN0dWFsbHkgZnJvbSBtYldNUHJvcHMuYyAqLworKyAgICBEaXNwbGF5ICpkcHksCisrICAgIFdpbmRvdyB3LAorKyAgICBfWGNvbnN0IGNoYXIgKndpbmRvd05hbWUsCisrICAgIF9YY29uc3QgY2hhciAqaWNvbk5hbWUsCisrICAgIGNoYXIgKiphcmd2LAorKyAgICBpbnQgYXJnYywKKysgICAgWFNpemVIaW50cyAqc2l6ZUhpbnRzLAorKyAgICBYV01IaW50cyAqd21IaW50cywKKysgICAgWENsYXNzSGludCAqY2xhc3NIaW50cykKKyt7CisrICByZXR1cm47CisrfQorKworK2ludAorK1htYlRleHRQcm9wZXJ0eVRvVGV4dExpc3QoCisrICAgIERpc3BsYXkgKmRweSwKKysgICAgY29uc3QgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wLAorKyAgICBjaGFyICoqKmxpc3RfcmV0LAorKyAgICBpbnQgKmNvdW50X3JldCkKKyt7CisrICByZXR1cm4gWExvY2FsZU5vdFN1cHBvcnRlZDsKKyt9CisrCisraW50CisrWG1iVGV4dExpc3RUb1RleHRQcm9wZXJ0eSgKKysgICAgRGlzcGxheSAqZHB5LAorKyAgICBjaGFyICoqbGlzdCwKKysgICAgaW50IGNvdW50LAorKyAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKKysgICAgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wKQorK3sKKysgIHJldHVybiBYTG9jYWxlTm90U3VwcG9ydGVkOworK30KKysKKytpbnQKKytYbWJUZXh0RXh0ZW50cygKKysgICAgWEZvbnRTZXQgICAgICAgIGZvbnRfc2V0LAorKyAgICBfWGNvbnN0IGNoYXIgICAqdGV4dCwKKysgICAgaW50ICAgICAgICAgICAgIHRleHRfbGVuLAorKyAgICBYUmVjdGFuZ2xlICAgICAqb3ZlcmFsbF9pbmtfZXh0ZW50cywKKysgICAgWFJlY3RhbmdsZSAgICAgKm92ZXJhbGxfbG9naWNhbF9leHRlbnRzKQorK3sKKysgIHJldHVybiAwOworK30KKysKKyt2b2lkCisrWG1iRHJhd1RleHQoCisrICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAorKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCisrICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCisrICAgIGludCAgICAgICAgICAgICAgICAgeCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB5LAorKyAgICBYbWJUZXh0SXRlbSAgICAgICAgKnRleHRfaXRlbXMsCisrICAgIGludCAgICAgICAgICAgICAgICAgbml0ZW1zKQorK3sKKysgIDsKKyt9CisrCisrdm9pZAorK1htYkRyYXdTdHJpbmcoCisrICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAorKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCisrICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCisrICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCisrICAgIGludCAgICAgICAgICAgICAgICAgeCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB5LAorKyAgICBfWGNvbnN0IGNoYXIgICAgICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4pCisreworKyAgOworK30KKysKKyt2b2lkCisrWG1iRHJhd0ltYWdlU3RyaW5nKAorKyAgICBEaXNwbGF5ICAgICAgICAgICAgKmRweSwKKysgICAgRHJhd2FibGUgICAgICAgICAgICBkLAorKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAorKyAgICBHQyAgICAgICAgICAgICAgICAgIGdjLAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHgsCisrICAgIGludCAgICAgICAgICAgICAgICAgeSwKKysgICAgX1hjb25zdCBjaGFyICAgICAgICp0ZXh0LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHRleHRfbGVuKQorK3sKKysgIDsKKyt9CisrCisraW50CisrWG1iVGV4dEVzY2FwZW1lbnQoCisrICAgIFhGb250U2V0ICAgICAgICBmb250X3NldCwKKysgICAgX1hjb25zdCBjaGFyICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICB0ZXh0X2xlbikKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrU3RhdHVzCisrWG1iVGV4dFBlckNoYXJFeHRlbnRzKAorKyAgICBYRm9udFNldCAgICAgICAgZm9udF9zZXQsCisrICAgIF9YY29uc3QgY2hhciAgICp0ZXh0LAorKyAgICBpbnQgICAgICAgICAgICAgdGV4dF9sZW4sCisrICAgIFhSZWN0YW5nbGUgICAgICppbmtfZXh0ZW50c19idWZmZXIsCisrICAgIFhSZWN0YW5nbGUgICAgICpsb2dpY2FsX2V4dGVudHNfYnVmZmVyLAorKyAgICBpbnQgICAgICAgICAgICAgYnVmZmVyX3NpemUsCisrICAgIGludCAgICAgICAgICAgICpudW1fY2hhcnMsCisrICAgIFhSZWN0YW5nbGUgICAgICptYXhfaW5rX2V4dGVudHMsCisrICAgIFhSZWN0YW5nbGUgICAgICptYXhfbG9naWNhbF9leHRlbnRzKQorK3sKKysgIHJldHVybiAwOworK30KKysKKyt1bnNpZ25lZCBpbnQKKytLZXlTeW1Ub1VjczQoS2V5U3ltIGtleXN5bSkKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmIAorKworKyNpZiAhIFhDTVMKKysKKytYY21zQ0NDIAorK1hjbXNDQ0NPZkNvbG9ybWFwKGRweSwgY21hcCkKKysgICAgRGlzcGxheSAqZHB5OworKyAgICBDb2xvcm1hcCBjbWFwOworK3sKKysgIHJldHVybiBOVUxMOworK30KKysKKytTdGF0dXMKKytfWGNtc1Jlc29sdmVDb2xvclN0cmluZyAoCisrICAgIFhjbXNDQ0MgY2NjLAorKyAgICBjb25zdCBjaGFyICoqY29sb3Jfc3RyaW5nLAorKyAgICBYY21zQ29sb3IgKnBDb2xvcl9leGFjdF9yZXR1cm4sCisrICAgIFhjbXNDb2xvckZvcm1hdCByZXN1bHRfZm9ybWF0KQorK3sKKysgIHJldHVybihYY21zRmFpbHVyZSk7CisrfQorKworK3ZvaWQKKytfWGNtc1VucmVzb2x2ZUNvbG9yKAorKyAgICBYY21zQ0NDIGNjYywKKysgICAgWGNtc0NvbG9yICpwQ29sb3IpCisreworKyAgcmV0dXJuOworK30KKysKKyt2b2lkCisrX1hVbnJlc29sdmVDb2xvcigKKysgICAgWGNtc0NDQyBjY2MsCisrICAgIFhDb2xvciAqcFhDb2xvcikKKyt7CisrICByZXR1cm47CisrfQorKworK1hjbXNDbWFwUmVjICoKKytfWGNtc0FkZENtYXBSZWMoZHB5LCBjbWFwLCB3aW5kb3dJRCwgdmlzdWFsKQorKyAgICBEaXNwbGF5ICpkcHk7CisrICAgIENvbG9ybWFwIGNtYXA7CisrICAgIFdpbmRvdyB3aW5kb3dJRDsKKysgICAgVmlzdWFsICp2aXN1YWw7CisreworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK3ZvaWQKKytfWGNtc1JHQl90b19YQ29sb3IoCisrICAgIFhjbXNDb2xvciAqcENvbG9ycywKKysgICAgWENvbG9yICpwWENvbG9ycywKKysgICAgdW5zaWduZWQgaW50IG5Db2xvcnMpCisreworKyAgcmV0dXJuOworK30KKysKKytYY21zQ21hcFJlYyAqCisrX1hjbXNDb3B5Q21hcFJlY0FuZEZyZWUoCisrICAgIERpc3BsYXkgKmRweSwKKysgICAgQ29sb3JtYXAgc3JjX2NtYXAsCisrICAgIENvbG9ybWFwIGNvcHlfY21hcCkKKyt7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrdm9pZAorK19YY21zRGVsZXRlQ21hcFJlYygKKysgICAgRGlzcGxheSAqZHB5LAorKyAgICBDb2xvcm1hcCBjbWFwKQorK3sKKysgIHJldHVybjsKKyt9CisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2ltQ29udi5jIGIvc3JjL2ltQ29udi5jCitpbmRleCBjM2MxOTc0Li4wNGVjYzgxIDEwMDY0NAorLS0tIGEvc3JjL2ltQ29udi5jCisrKysgYi9zcmMvaW1Db252LmMKK0BAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgU3Vic3RSZWMgU3Vic3RUYWJsZVtdID0geworICAqIGZyb20gVUNTIGNoYXIgdG8gc3BlY2lmaWVkIGNoYXJzZXQgY2hhci4KKyAgKiBUaGlzIGNvbnZlcnRlciBpcyBuZWVkZWQgZm9yIF9YaW1HZXRDaGFyQ29kZSBzdWJyb3V0aW5lLgorICAqLworKyNpZmRlZiBYTE9DQUxFCisgWFBvaW50ZXIKKyBfWGltR2V0TG9jYWxlQ29kZSAoCisgICAgIF9YY29uc3QgY2hhcioJZW5jb2RpbmdfbmFtZSkKK0BAIC05Myw3ICs5NCw3IEBAIF9YaW1HZXRMb2NhbGVDb2RlICgKKyAgICAgfQorICAgICByZXR1cm4gY3Z0OworIH0KKy0KKysjZW5kaWYKKyAvKgorICAqIFJldHVybnMgdGhlIGxvY2FsZSBkZXBlbmRlbnQgcmVwcmVzZW50YXRpb24gb2YgYSBrZXlzeW0uCisgICogVGhlIGxvY2FsZSdzIGVuY29kaW5nIGlzIHBhc3NlZCBpbiBmb3JtIG9mIHBvaW50ZXIgdG8gVUNTIGNvbnZlcnRvci4KK0BAIC0xMDUsNiArMTA1LDcgQEAgX1hpbUdldExvY2FsZUNvZGUgKAorICAqIGxvY2FsZQorICAqLworIC8qQVJHU1VTRUQqLworKyNpZmRlZiBYTE9DQUxFCisgaW50CisgX1hpbUdldENoYXJDb2RlICgKKyAgICAgWFBvaW50ZXIgICAgICAgICAgICB1Y3NfY29udiwKK0BAIC0xMzMsNiArMTM0LDcgQEAgX1hpbUdldENoYXJDb2RlICgKKyAgICAgICAgIGJ1Zltjb3VudF09ICdcMCc7CisgICAgIHJldHVybiBjb3VudDsKKyB9CisrI2VuZGlmCisKKyAjaWZkZWYgWEtCCisgc3RhdGljIGludCBsb29rdXBfc3RyaW5nKAorZGlmZiAtLWdpdCBhL3NyYy9sb2NraW5nLmMgYi9zcmMvbG9ja2luZy5jCitpbmRleCA5ZjRmZTA2Li5lNjk2N2VlIDEwMDY0NAorLS0tIGEvc3JjL2xvY2tpbmcuYworKysrIGIvc3JjL2xvY2tpbmcuYworQEAgLTY1LDcgKzY1LDkgQEAgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBmcm9tIFRoZSBPcGVuIEdyb3VwLgorICNkZWZpbmUgTlVNX0ZSRUVfQ1ZMUyA0CisgCisgLyogaW4gbGNXcmFwLmMgKi8KKysjaWZkZWYgWExPQ0FMRQorIGV4dGVybiBMb2NrSW5mb1B0ciBfWGkxOG5fbG9jazsKKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lOMzIKKyBzdGF0aWMgRFdPUkQgX1hfVGxzSW5kZXggPSAoRFdPUkQpLTE7CitAQCAtNTk3LDkgKzU5OSwxMSBAQCBTdGF0dXMgWEluaXRUaHJlYWRzKHZvaWQpCisgICAgIF9YZ2xvYmFsX2xvY2sgPSAmZ2xvYmFsX2xvY2s7CisgICAgIHhtdXRleF9pbml0KF9YZ2xvYmFsX2xvY2stPmxvY2spOworICAgICB4bXV0ZXhfc2V0X25hbWUoX1hnbG9iYWxfbG9jay0+bG9jaywgIlhsaWIgZ2xvYmFsIik7CisrI2lmZGVmIFhMT0NBTEUKKyAgICAgX1hpMThuX2xvY2sgPSAmaTE4bl9sb2NrOworICAgICB4bXV0ZXhfaW5pdChfWGkxOG5fbG9jay0+bG9jayk7CisgICAgIHhtdXRleF9zZXRfbmFtZShfWGkxOG5fbG9jay0+bG9jaywgIlhsaWIgaTE4biIpOworKyNlbmRpZgorICAgICBfWExvY2tNdXRleF9mbiA9IF9YTG9ja011dGV4OworICAgICBfWFVubG9ja011dGV4X2ZuID0gX1hVbmxvY2tNdXRleDsKKyAgICAgX1hDcmVhdGVNdXRleF9mbiA9IF9YQ3JlYXRlTXV0ZXg7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LWRpc2FibGUteGxvY2FsZS5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2MzOTg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWGlhb2ZlbmcgWWFuIDx4aWFvZmVuZy55YW5Ad2luZHJpdmVyLmNvbT4KLS0tLSBsaWJYMTEtWDExUjcuMC0xLjAuMC9zcmMvRm9udC5jLm9yaWcJMjAwNi0wMy0xMiAxODozNTo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJYMTEtWDExUjcuMC0xLjAuMC9zcmMvRm9udC5jCTIwMDYtMDMtMTIgMTg6NDA6MjcuMDAwMDAwMDAwICswMTAwCi1AQCAtNzAxLDcgKzcwMSwxMSBAQAotICAgICB9Ci0gICAgIGlmIChsIC0gMiAtIChwIC0gY2hhcnNldCkgPCAwKQotIAlyZXR1cm4gMDsKLSsjaWZkZWYgWExPQ0FMRQotICAgICBpZiAoX1hsY05Db21wYXJlSVNPTGF0aW4xKG5hbWUgKyBsIC0gMiAtIChwIC0gY2hhcnNldCksIGNoYXJzZXQsIHAgLSBjaGFyc2V0KSkKLSsjZWxzZQotKyAgICBpZiAoc3RybmNhc2VjbXAobmFtZSArIGwgLSAyIC0gKHAgLSBjaGFyc2V0KSwgY2hhcnNldCwgcCAtIGNoYXJzZXQpKQotKyNlbmRpZgotIAlyZXR1cm4gMDsKLSAgICAgaWYgKHN0cmxlbihwICsgMSkgKyBsIC0gMSA+PSBzaXplb2YoYnVmKSAtIDEpCi0gCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC1kaXNhYmxlLXhsb2NhbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LWRpc2FibGUteGxvY2FsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWNmNzRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC1kaXNhYmxlLXhsb2NhbGUucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1YzE2OTMwMjhlZjEyYWI3NjdkN2NkYmMzNDljMjdlZmExYWRhODdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTAgU2VwIDIwMTggMDk6MTM6MzggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdoZW4geGxvY2FsZSBkaXNhYmxlZAorCitTaWduZWQtb2ZmLWJ5OiBYaWFvZmVuZyBZYW4gPHhpYW9mZW5nLnlhbkB3aW5kcml2ZXIuY29tPgorCitVcGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiAxLjYuNgorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgc3JjL0ZvbnQuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9Gb250LmMgYi9zcmMvRm9udC5jCitpbmRleCBhNzNmOWIxLi44ZjRkMjEwIDEwMDY0NAorLS0tIGEvc3JjL0ZvbnQuYworKysrIGIvc3JjL0ZvbnQuYworQEAgLTY3NSw3ICs2NzUsMTEgQEAgaW50IF9YRjg2TG9hZFF1ZXJ5TG9jYWxlRm9udCgKKyAgICAgfQorICAgICBpZiAobCAtIDIgLSAocCAtIGNoYXJzZXQpIDwgMCkKKyAJcmV0dXJuIDA7CisrI2lmZGVmIFhMT0NBTEUKKyAgICAgaWYgKF9YbGNOQ29tcGFyZUlTT0xhdGluMShuYW1lICsgbCAtIDIgLSAocCAtIGNoYXJzZXQpLCBjaGFyc2V0LCBwIC0gY2hhcnNldCkpCisrI2Vsc2UKKysgICAgaWYgKHN0cm5jYXNlY21wKG5hbWUgKyBsIC0gMiAtIChwIC0gY2hhcnNldCksIGNoYXJzZXQsIHAgLSBjaGFyc2V0KSkKKysjZW5kaWYKKyAJcmV0dXJuIDA7CisgICAgIGlmIChzdHJsZW4ocCArIDEpICsgbCAtIDEgPj0gc2l6ZW9mKGJ1ZikgLSAxKQorIAlyZXR1cm4gMDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9maXgtdXRmOC13cm9uZy1kZWZpbmUucGF0Y2gKaW5kZXggYzYzNDdmNS4uMGI1N2UwYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoCkBAIC0xLDE5ICsxLDMxIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK0Zyb20gMDQ2NzAzMzczMDU1YzcwMjljMTlkMTcxZTQxNWZmM2NhYWE4NzM3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDEwIFNlcCAyMDE4IDA5OjE2OjMzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgdW5pY29kZQogCiBTaWduZWQtb2ZmLWJ5OiBYaWFvZmVuZyBZYW4gPHhpYW9mZW5nLnlhbkB3aW5kcml2ZXIuY29tPgogCi0jCi0jIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5ob2xnZXJzY2h1cmlnLmRlL3BhdGNoZXIuaHRtbAotIworVXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gMS42LjYKIAotLS0tIGxpYlgxMS1YMTFSNy4wLTEuMC4wL2luY2x1ZGUvWDExL1hsaWIuaH5maXgtdXRmOC13cm9uZy1kZWZpbmUKLSsrKyBsaWJYMTEtWDExUjcuMC0xLjAuMC9pbmNsdWRlL1gxMS9YbGliLmgKLUBAIC0xMDMsNyArMTAzLDcgQEAKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGluY2x1ZGUvWDExL1hsaWIuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvWDExL1hsaWIuaCBiL2luY2x1ZGUvWDExL1hsaWIuaAoraW5kZXggODQ0MDNmNy4uNTZiZTY1NCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvWDExL1hsaWIuaAorKysrIGIvaW5jbHVkZS9YMTEvWGxpYi5oCitAQCAtNjcsNyArNjcsNyBAQCBfWG1ibGVuKAogIAogIC8qIEFQSSBtZW50aW9uaW5nICJVVEY4IiBvciAidXRmOCIgaXMgYW4gWEZyZWU4NiBleHRlbnNpb24sIGludHJvZHVjZWQgaW4KICAgICBOb3ZlbWJlciAyMDAwLiBJdHMgcHJlc2VuY2UgaXMgaW5kaWNhdGVkIHRocm91Z2ggdGhlIGZvbGxvd2luZyBtYWNyby4gKi8KIC0jZGVmaW5lIFhfSEFWRV9VVEY4X1NUUklORyAxCiArI3VuZGVmIFhfSEFWRV9VVEY4X1NUUklORwogIAotIHR5cGVkZWYgY2hhciAqWFBvaW50ZXI7Ci0gCisgLyogVGhlIFhsaWIgc3RydWN0cyBhcmUgZnVsbCBvZiBpbXBsaWNpdCBwYWRkaW5nIHRvIHByb3Blcmx5IGFsaWduIG1lbWJlcnMuCisgICAgV2UgY2FuJ3QgY2xlYW4gdGhhdCB1cCB3aXRob3V0IGJyZWFraW5nIEFCSSwgc28gdGVsbCBjbGFuZyBub3QgdG8gYm90aGVyCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI3YmYyOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGxpYngxMS5pbmMKLWluaGVyaXQgZ2V0dGV4dAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kaXNhYmxlX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9GaXgtaGFuZ2luZy1pc3N1ZS1pbi1fWFJlcGx5LnBhdGNoIFwKLSAgICAgICAgICAgIgotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0gICAgc2VkIC1pIC1lICIvWDExX0NGTEFHUy9kIiAke0J9L3NyYy91dGlsL01ha2VmaWxlCi19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZjYxOGRiNzBjNDA1NGNhNjdjZWUwY2MxNTZhNDI1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDM4OTBkYjJiYTIyNWJhOGM1NWNhNjNjNjQwOWMxZWJiMDc4YTI4MDZkZTU5ZmIxNjM0Mjc2OGFlNjM0MzVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZWUxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjYuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSBsaWJ4MTEuaW5jCitpbmhlcml0IGdldHRleHQKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICJmaWxlOi8vZGlzYWJsZV90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vRml4LWhhbmdpbmctaXNzdWUtaW4tX1hSZXBseS5wYXRjaCBcCisgICAgICAgICAgICIKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworICAgIHNlZCAtaSAtZSAiL1gxMV9DRkxBR1MvZCIgJHtCfS9zcmMvdXRpbC9NYWtlZmlsZQorfQorCitTUkNfVVJJW21kNXN1bV0gPSAiNmIwZjgzZTg1MWIzYjQ2OWRkNjYwZjNhOTVhYzNlNDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjVmZTE4MWQ0MGVjNzdmNDU0MTc3MTBjNmE2NzQzMTgxNGFiMjUyZDIxYzJlODVjNzVkZDFlZDU2OGFmNDE0ZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhhdV8xLjAuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhhdV8xLjAuOC5iYgppbmRleCAyZWY4YmZhLi44YzUyNDc1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4YXVfMS4wLjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGF1XzEuMC44LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc5MDhlMzQyNDkxMTk4NDAxMzIxY2VjMTk1NjgwN2VjIgogCi1ERVBFTkRTICs9ICIgeHByb3RvIgorREVQRU5EUyArPSAiIHhvcmdwcm90byIKIFBST1ZJREVTID0gInhhdSIKIAogUEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGUvZml4LXhjYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGUvZml4LXhjYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYxNDg4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlL2ZpeC14Y2IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlcmUgaXMgbm8gZXh0cmEgcmVwbHkgZGF0YSBhbmQgaWYgd2Ugc2F5IG5vdCB0byBkaXNnYXJkIGl0LCB4Y2IKLXRocm93cyBmYXRhbCBhc3NlcnRzLgotCi1SUCAtIDI2LzExLzA5Ci0KLUluZGV4OiBnaXQveGNhbGlicmF0ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcveGNhbGlicmF0ZS5jCTIwMDktMTEtMjYgMDg6MTE6NDguMDAwMDAwMDAwICswMDAwCi0rKysgZ2l0L3hjYWxpYnJhdGUuYwkyMDA5LTExLTI2IDA4OjA5OjU1LjAwMDAwMDAwMCArMDAwMAotQEAgLTIxNiw3ICsyMTYsNyBAQAotICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKLSAgIHJlcS0+eENhbGlicmF0ZVJlcVR5cGUgPSBYX1hDYWxpYnJhdGVSYXdNb2RlOwotICAgcmVxLT5vbiA9IGVuYWJsZTsKLS0gIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIHhGYWxzZSkpIAotKyAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeFRydWUpKSAKLSAgICAgewotICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgU3luY0hhbmRsZSAoKTsKLUBAIC0yNDAsNyArMjQwLDcgQEAKLSAgIHJlcS0+eENhbGlicmF0ZVJlcVR5cGUgPSBYX1hDYWxpYnJhdGVTY3JlZW5Ub0Nvb3JkOwotICAgcmVxLT54ID0gKng7Ci0gICByZXEtPnkgPSAqeTsKLS0gIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIHhGYWxzZSkpIAotKyAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeFRydWUpKSAKLSAgICAgewotICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgU3luY0hhbmRsZSAoKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZTY1MzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlhDYWxpYnJhdGU6IFRvdWNoc2NyZWVuIGNhbGlicmF0aW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gImxpYlhDYWxpYnJhdGUgaXMgYSBsaWJyYXJ5IGZvciBwZXJmb3JtaW5nIHRvdWNoc2NyZWVuIFwKLWNhbGlicmF0aW9uIHdpdGggdGhlIGtkcml2ZSB0c2xpYiB0b3VjaHNjcmVlbiBkcml2ZXIuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Y2FsaWJyYXRlLmg7ZW5kbGluZT0yMTttZDU9ZmE1NzJkZjY0MzlmMGYyMzVmMjYxMmYzNzBmMTUzZDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8veGNhbGlicmF0ZS5jO2VuZGxpbmU9MjE7bWQ1PWZhNTcyZGY2NDM5ZjBmMjM1ZjI2MTJmMzcwZjE1M2Q3IgotCi1ERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGNhbGlicmF0ZXByb3RvIGxpYnhleHQiCi0KLVNSQ1JFViA9ICIyMDlkODNhZjYxZWQzOGEwMDJjODA5NjM3N2RlYWMyOTJiM2UzOTZjIgotUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2xpYi9saWJYQ2FsaWJyYXRlIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC14Y2IucGF0Y2giCi1VUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59LWxvY2FsZSArPSAiJHtkYXRhZGlyfS9YMTEvbG9jYWxlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL0ZpeC1pbmNvbnNpc3RlbnQtdXNlLW9mLXRhYnMtdnMuLXNwYWNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL0ZpeC1pbmNvbnNpc3RlbnQtdXNlLW9mLXRhYnMtdnMuLXNwYWNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTkyMzg2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYi9GaXgtaW5jb25zaXN0ZW50LXVzZS1vZi10YWJzLXZzLi1zcGFjZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gODc0MGEyODhjYTQ2ODQzMzE0MTM0MTM0N2FhMTE1Yjk1NDQ4OTFkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+Ci1EYXRlOiBUaHUsIDE5IE1heSAyMDE2IDE3OjMxOjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbmNvbnNpc3RlbnQgdXNlIG9mIHRhYnMgdnMuIHNwYWNlLgotCi1OZWVkZWQgZm9yIGF0IGxlYXN0IHB5dGhvbi0zLjUueC4KLQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLVNpZ25lZC1vZmYtYnk6IFVsaSBTY2hsYWNodGVyIDxwc3ljaG9uQHpuYy5pbj4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9jX2NsaWVudC5weSB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jX2NsaWVudC5weSBiL3NyYy9jX2NsaWVudC5weQotaW5kZXggNTdkZTNmYi4uMDQzMzM4ZCAxMDA2NDQKLS0tLSBhL3NyYy9jX2NsaWVudC5weQotKysrIGIvc3JjL2NfY2xpZW50LnB5Ci1AQCAtMTM2NCw3ICsxMzY0LDcgQEAgZGVmIF9jX3NlcmlhbGl6ZShjb250ZXh0LCBzZWxmKToKLSAgICAgICAgICAgICBfYygnICAgIHVuc2lnbmVkIGludCB4Y2JfYWxpZ25fdG8gPSAwOycpCi0gICAgICAgICBpZiBzZWxmLmlzX3N3aXRjaDoKLSAgICAgICAgICAgICBfYygnICAgIHVuc2lnbmVkIGludCB4Y2JfcGFkZGluZ19vZmZzZXQgPSAlZDsnLAotLQkgICAgICAgc2VsZi5nZXRfYWxpZ25fb2Zmc2V0KCkgKQotKyAgICAgICAgICAgICAgIHNlbGYuZ2V0X2FsaWduX29mZnNldCgpICkKLSAgICAgICAgIHByZWZpeCA9IFsoJ19hdXgnLCAnLT4nLCBzZWxmKV0KLSAgICAgICAgIGF1eF9wdHIgPSAneGNiX291dCcKLSAKLUBAIC0xMzkwLDcgKzEzOTAsNyBAQCBkZWYgX2Nfc2VyaWFsaXplKGNvbnRleHQsIHNlbGYpOgotICAgICAgICAgX2MoJyAgICB1bnNpZ25lZCBpbnQgeGNiX2FsaWduX3RvID0gMDsnKQotICAgICAgICAgaWYgc2VsZi5pc19zd2l0Y2g6Ci0gICAgICAgICAgICAgX2MoJyAgICB1bnNpZ25lZCBpbnQgeGNiX3BhZGRpbmdfb2Zmc2V0ID0gJWQ7JywKLS0JICAgICAgIHNlbGYuZ2V0X2FsaWduX29mZnNldCgpICkKLSsgICAgICAgICAgICAgICBzZWxmLmdldF9hbGlnbl9vZmZzZXQoKSApCi0gCi0gICAgIGVsaWYgJ3NpemVvZicgPT0gY29udGV4dDoKLSAgICAgICAgIHBhcmFtX25hbWVzID0gW3BbMl0gZm9yIHAgaW4gcGFyYW1zXQotQEAgLTE5MzAsMTQgKzE5MzAsMTQgQEAgZGVmIF9jX2FjY2Vzc29yc19saXN0KHNlbGYsIGZpZWxkKToKLSAgICAgICAgICAgICAgICAgICAgICMgZnJvbSB0aGUgcmVxdWVzdCBzaXplIGFuZCBkaXZpZGUgdGhhdCBieSB0aGUgbWVtYmVyIHNpemUKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKCgoUi0+bGVuZ3RoICogNCkgLSBzaXplb2YoJysgc2VsZi5jX3R5cGUgKyAnKSkvJysnc2l6ZW9mKCcrZmllbGQudHlwZS5tZW1iZXIuY193aXJldHlwZSsnKSknCi0gICAgICAgICAgICAgICAgIGVsc2U6Ci0tCQkgICAgIyB1c2UgdGhlIGFjY2Vzc29yIHRvIGdldCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QsIHRoZW4KLS0JCSAgICAjIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiBpdCBieSBzdWJ0cmFjdGluZyBpdCBmcm9tCi0rICAgICAgICAgICAgICAgICAgICAjIHVzZSB0aGUgYWNjZXNzb3IgdG8gZ2V0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCwgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgIyBjb21wdXRlIHRoZSBsZW5ndGggb2YgaXQgYnkgc3VidHJhY3RpbmcgaXQgZnJvbQotICAgICAgICAgICAgICAgICAgICAgIyB0aGUgYWRyZXNzIG9mIHRoZSBmaXJzdCBieXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAjIHJlcXVlc3QKLS0JCSAgICBhZnRlcl9lbmRfb2ZfcmVxdWVzdCA9ICcoKChjaGFyKilSKSArIFItPmxlbmd0aCAqIDQpJwotLQkJICAgIHN0YXJ0X29mX2xpc3QgPSAnJXMoUiknICUgKGZpZWxkLmNfYWNjZXNzb3JfbmFtZSkKLSsgICAgICAgICAgICAgICAgICAgIGFmdGVyX2VuZF9vZl9yZXF1ZXN0ID0gJygoKGNoYXIqKVIpICsgUi0+bGVuZ3RoICogNCknCi0rICAgICAgICAgICAgICAgICAgICBzdGFydF9vZl9saXN0ID0gJyVzKFIpJyAlIChmaWVsZC5jX2FjY2Vzc29yX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICBieXRlc2l6ZV9vZl9saXN0ID0gJyVzIC0gKGNoYXIqKSglcyknICUgKGFmdGVyX2VuZF9vZl9yZXF1ZXN0LCBzdGFydF9vZl9saXN0KQotLQkJICAgIHJldHVybiAnKCVzKSAvIHNpemVvZiglcyknICUgKGJ5dGVzaXplX29mX2xpc3QsIGZpZWxkLnR5cGUubWVtYmVyLmNfd2lyZXR5cGUpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyglcykgLyBzaXplb2YoJXMpJyAlIChieXRlc2l6ZV9vZl9saXN0LCBmaWVsZC50eXBlLm1lbWJlci5jX3dpcmV0eXBlKQotICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICJsZW5ndGhsZXNzIGxpc3RzIHdpdGggdmFyc2l6ZWQgbWVtYmVycyBhcmUgbm90IHN1cHBvcnRlZC4gRmllbGRuYW1lICclcyciCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYl8xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOGJkZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIlhDQjogVGhlIFggcHJvdG9jb2wgQyBiaW5kaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgWCBwcm90b2NvbCBDLWxhbmd1YWdlIEJpbmRpbmcgKFhDQikgaXMgYSByZXBsYWNlbWVudCBcCi1mb3IgWGxpYiBmZWF0dXJpbmcgYSBzbWFsbCBmb290cHJpbnQsIGxhdGVuY3kgaGlkaW5nLCBkaXJlY3QgYWNjZXNzIHRvIFwKLXRoZSBwcm90b2NvbCwgaW1wcm92ZWQgdGhyZWFkaW5nIHN1cHBvcnQsIGFuZCBleHRlbnNpYmlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1YQ0IiCi1TRUNUSU9OID0gIngxMS9saWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3NjNiMDgxY2IxMGMyMjM0MzViMDFlMDBkYzBhYmE3IgotCi1TUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QvbGlieGNiLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8veGNiaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYy1taXBzLXByNjgzMDItbWlwcy13b3JrYXJvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0ZpeC1pbmNvbnNpc3RlbnQtdXNlLW9mLXRhYnMtdnMuLXNwYWNlLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjhlNTUyYmQ3OGJjMTA1MGI2YjI2Y2ExZGIwZTViYjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGFkZmIxYjdjNjdlOTliYzljMmNjYjExMGIyZjE3NTY4NjU3NmQyZjc5MmM4YTcxYjljOGIxOTAxNDA1N2I1YiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1ERVBFTkRTID0gInhjYi1wcm90byB4cHJvdG8gbGlieGF1IGxpYnB0aHJlYWQtc3R1YnMgbGlieGRtY3AiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYnhjYi0uKiIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnhjYi5zby4qIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgVGhlIGxpYnhhdSBhbmQgb3RoZXJzIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLQotZXhwb3J0IFBZVEhPTiA9ICJweXRob24zIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgJyR7bGliZGlyfScsICdebGlieGNiLSguKilcLnNvXC4uKiQnLCAnbGlieGNiLSVzJywgJ1hDQiBsaWJyYXJ5IG1vZHVsZSBmb3IgJXMnLCBhbGxvd19saW5rcz1UcnVlKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2JfMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGUwMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTMuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJYQ0I6IFRoZSBYIHByb3RvY29sIEMgYmluZGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVGhlIFggcHJvdG9jb2wgQy1sYW5ndWFnZSBCaW5kaW5nIChYQ0IpIGlzIGEgcmVwbGFjZW1lbnQgXAorZm9yIFhsaWIgZmVhdHVyaW5nIGEgc21hbGwgZm9vdHByaW50LCBsYXRlbmN5IGhpZGluZywgZGlyZWN0IGFjY2VzcyB0byBcCit0aGUgcHJvdG9jb2wsIGltcHJvdmVkIHRocmVhZGluZyBzdXBwb3J0LCBhbmQgZXh0ZW5zaWJpbGl0eS4iCitIT01FUEFHRSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9WENCIgorU0VDVElPTiA9ICJ4MTEvbGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzYzYjA4MWNiMTBjMjIzNDM1YjAxZTAwZGMwYWJhNyIKKworU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0L2xpYnhjYi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3hjYmluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nY2MtbWlwcy1wcjY4MzAyLW1pcHMtd29ya2Fyb3VuZC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJiNmNmOTI4YWZhMTZiMDA0N2M5NzRlN2FhYTc4M2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTg4Yzg3NTIxOTNjNTBmZjJkYmU4OWRiNDU1NGM2M2RmMmUyNmEyZTQ3YjBmYTQxNWE3MDkxOGI1Yjg1MWRhYSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitERVBFTkRTID0gInhjYi1wcm90byB4b3JncHJvdG8gbGlieGF1IGxpYnB0aHJlYWQtc3R1YnMgbGlieGRtY3AiCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYnhjYi0uKiIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnhjYi5zby4qIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgVGhlIGxpYnhhdSBhbmQgb3RoZXJzIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKKworZXhwb3J0IFBZVEhPTiA9ICJweXRob24zIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgJyR7bGliZGlyfScsICdebGlieGNiLSguKilcLnNvXC4uKiQnLCAnbGlieGNiLSVzJywgJ1hDQiBsaWJyYXJ5IG1vZHVsZSBmb3IgJXMnLCBhbGxvd19saW5rcz1UcnVlKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNvbXBvc2l0ZV8wLjQuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjb21wb3NpdGVfMC40LjQuYmIKaW5kZXggNzAyNTcxOS4uNzNlMjk0OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNvbXBvc2l0ZV8wLjQuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y29tcG9zaXRlXzAuNC40LmJiCkBAIC0xNCw3ICsxNCw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNmMjkwN2FhZDU0MWY2ZjIyNmZiYzU4Y2MxYjNjZGYxIgogCi1ERVBFTkRTICs9ICIgY29tcG9zaXRlcHJvdG8gdmlydHVhbC9saWJ4MTEgbGlieGZpeGVzIGxpYnhleHQiCitERVBFTkRTICs9ICIgeG9yZ3Byb3RvIHZpcnR1YWwvbGlieDExIGxpYnhmaXhlcyBsaWJ4ZXh0IgogUFJPVklERVMgPSAieGNvbXBvc2l0ZSIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZGFtYWdlXzEuMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGRhbWFnZV8xLjEuNC5iYgppbmRleCBjM2Q3MDA0Li42ZDZmZmFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZGFtYWdlXzEuMS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhkYW1hZ2VfMS4xLjQuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWZlMTAxZjMwZGQyNDEzNGNmNDMxNDY4NjMyNDE4NjgiCiAKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGRhbWFnZXByb3RvIGxpYnhmaXhlcyIKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhvcmdwcm90byBsaWJ4Zml4ZXMiCiBQUk9WSURFUyA9ICJ4ZGFtYWdlIgogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhkbWNwXzEuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGRtY3BfMS4xLjIuYmIKaW5kZXggZjRlMzBkOS4uNDY2ZjM0OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGRtY3BfMS4xLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGRtY3BfMS4xLjIuYmIKQEAgLTEzLDcgKzEzLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDU1OWZiMjZlMTI5NjI2MDIyZTA1MmE1ZTZlMGUxMjMiCiAKLURFUEVORFMgKz0gInhwcm90byIKK0RFUEVORFMgKz0gInhvcmdwcm90byIKIFBST1ZJREVTID0gInhkbWNwIgogCiBQRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGV4dF8xLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhleHRfMS4zLjMuYmIKaW5kZXggMDYzZTUzMS4uYWFlOGYyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGV4dF8xLjMuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZXh0XzEuMy4zLmJiCkBAIC0xMyw3ICsxMyw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3OWNlMjY2Nzg1NDE0YmQxY2JjM2JjMmY0ZDlkN2M4IgogCi1ERVBFTkRTICs9ICJ4cHJvdG8gdmlydHVhbC9saWJ4MTEgeGV4dHByb3RvIgorREVQRU5EUyArPSAieG9yZ3Byb3RvIHZpcnR1YWwvbGlieDExIgogUFJPVklERVMgPSAieGV4dCIKIAogUEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmaXhlc181LjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmaXhlc181LjAuMy5iYgppbmRleCBjODAwNDJkLi5mMGUyZjYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zml4ZXNfNS4wLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZpeGVzXzUuMC4zLmJiCkBAIC0xMCw3ICsxMCw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNjMWNlNDJjMzM0YTZmNWNjY2IwMjc3NTU2YTA1M2UwIgogCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSB4cHJvdG8gZml4ZXNwcm90byB4ZXh0cHJvdG8iCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSB4b3JncHJvdG8iCiAKIFBFID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYgppbmRleCA1ZjI3YTU1Li4yYjcyZDY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udDJfMi4wLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiCkBAIC05LDcgKzksNyBAQAogTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKIAotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgorREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIHhvcmdwcm90byBsaWJmb250ZW5jIHpsaWIiCiAKIFhPUkdfUE4gPSAibGliWGZvbnQyIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS40LmJiCmluZGV4IDc5Zjc3ZmMuLjk0YzZjNjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS40LmJiCkBAIC05LDcgKzksNyBAQAogTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKIAotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgorREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIHhvcmdwcm90byBsaWJmb250ZW5jIHpsaWIiCiBQUk9WSURFUyA9ICJ4Zm9udCIKIAogUEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhpXzEuNy45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGlfMS43LjkuYmIKaW5kZXggNzRmMDUyNy4uMDgzODFkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGlfMS43LjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGlfMS43LjkuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE3YjA2NDc4OWZhYjkzNmExYzU4YzRlMTNkOTY1YjBmIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9YSUdldERldkZvY3VzLmM7ZW5kbGluZT0yMzttZDU9Y2RmYjBkNDM1YTMzZWM1N2VhMGQxZThlMzk1YjcyOWYiCiAKLURFUEVORFMgKz0gImxpYnhleHQgaW5wdXRwcm90byBsaWJ4Zml4ZXMiCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byBsaWJ4Zml4ZXMiCiAKIFBFID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhpbmVyYW1hXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMDNmNDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYaW5lcmFtYTogWGluZXJhbWEgZXh0ZW5zaW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gIlhpbmVyYW1hIGlzIGEgc2ltcGxlIGxpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHRoZSBcCi1YaW5lcmFtYSBFeHRlbnNpb24gZm9yIHJldHJpZXZpbmcgaW5mb3JtYXRpb24gYWJvdXQgcGh5c2ljYWwgb3V0cHV0IFwKLWRldmljZXMgd2hpY2ggbWF5IGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9naWNhbCBYIHNjcmVlbi4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmY0ZjYzNGQxNjQzYTJlNjM4YmJhM2ZjZDE5YzI1MzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL1hpbmVyYW1hLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yNTttZDU9ZmNlZjI3M2JmYjY2MzM5MjU2NDExZGQwNmVhNzljMDIiCi0KLURFUEVORFMgKz0gImxpYnhleHQgeGluZXJhbWFwcm90byIKLVBST1ZJREVTID0gInhpbmVyYW1hIgotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYaW5lcmFtYSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkzMzZkYzQ2YWUzYmY1ZjgxYzI0N2Y3MTMxNDYxZWZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhNDU2OTlmMTc3MzA5NWEzZjgyMWU0OTFjYmQ1ZTEwYzg4N2M1YTVmY2U1ZDhkM2ZjZWQxNWMyZmY3Njk4ZTIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhpbmVyYW1hXzEuMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRjZTM1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhpbmVyYW1hXzEuMS40LmJiCkBAIC0wLDAgKzEsMjIgQEAKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitTVU1NQVJZID0gIlhpbmVyYW1hOiBYaW5lcmFtYSBleHRlbnNpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiWGluZXJhbWEgaXMgYSBzaW1wbGUgbGlicmFyeSBkZXNpZ25lZCB0byBpbnRlcmZhY2UgdGhlIFwKK1hpbmVyYW1hIEV4dGVuc2lvbiBmb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbiBhYm91dCBwaHlzaWNhbCBvdXRwdXQgXAorZGV2aWNlcyB3aGljaCBtYXkgYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBsb2dpY2FsIFggc2NyZWVuLiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZjRmNjM0ZDE2NDNhMmU2MzhiYmEzZmNkMTljMjUzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvWGluZXJhbWEuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTI1O21kNT1mY2VmMjczYmZiNjYzMzkyNTY0MTFkZDA2ZWE3OWMwMiIKKworREVQRU5EUyArPSAibGlieGV4dCB4b3JncHJvdG8iCitQUk9WSURFUyA9ICJ4aW5lcmFtYSIKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWGluZXJhbWEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZDVmODI2YTE5N2RhZTc0ZGE2N2FmNGE5ZWYzNTg4NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDA4ZGJkN2VjZjcxN2UxZTUwN2VlZDE4NTZhYjBkOWNmOTQ2ZDAzMjAxYjg1ZDVkY2Y2MTQ4OWJiMDJkNzIwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MGQwYjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmljIFhLQiBrZXltYXAgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYnhrYmNvbW1vbiBpcyBhIGtleW1hcCBjb21waWxlciBhbmQgc3VwcG9ydCBsaWJyYXJ5IHdoaWNoIFwKLXByb2Nlc3NlcyBhIHJlZHVjZWQgc3Vic2V0IG9mIGtleW1hcHMgYXMgZGVmaW5lZCBieSB0aGUgWEtCIHNwZWNpZmljYXRpb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54a2Jjb21tb24ub3JnIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTUyNWVkOTgwOWUxZjhhMDdjZjRiY2U4YjA5ZThiODciCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLQotREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkMGU0YzRhMTM3ZDBhYzQ1YmY2YjMyOGM4NGMzYTgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4MjkyNjVkYjA0ZTBhZWJmYjA1OTFiNmRjMzM3N2I2NDU5OTU1ODE2Nzg0NmMzZjVlZTVjNWU1MzY0MWZlNmQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3MiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSxsaWJ4Y2IgeGtleWJvYXJkLWNvbmZpZywiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNmNTA4YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguMi5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAorcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorCitERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWY3Zjg1MzNmOTA3ZWJjZmIxY2Y4ZGNlYjk1MDEyNjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FiOGM0YjM0MDNkODlkMDE4OTgwNjZiNzJjYjYwNjliZGRlYjVhZjk0OTA1YTY1MzY4ZjY3MWEwMjZlZDU4YyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmZpbGVfMS4wLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2JmaWxlXzEuMC45LmJiCmluZGV4IDM5YTM0NGMuLmY1YzE4NjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmZpbGVfMS4wLjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiZmlsZV8xLjAuOS5iYgpAQCAtOCw3ICs4LDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGJlNzM2N2Y3ZTVkNjA1YTQyNmY3NmJiMzdkNGQ2MWYiCiAKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGticHJvdG8iCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSB4b3JncHJvdG8iCiAKIFBFID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyYW5kcl8xLjUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyYW5kcl8xLjUuMS5iYgppbmRleCA0OGU4OGQyLi5iOTBlYmM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmFuZHJfMS41LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJhbmRyXzEuNS4xLmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNFTlNFID0gIk1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5ZDFhMjExOGE2Y2Q1NzI3NTIxZGI4ZTdhMmZlZTY5IgogCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSByYW5kcnByb3RvIGxpYnhyZW5kZXIgbGlieGV4dCIKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhvcmdwcm90byBsaWJ4cmVuZGVyIGxpYnhleHQiCiAKIFBFID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZW5kZXJfMC45LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlbmRlcl8wLjkuMTAuYmIKaW5kZXggOTJiMzEwMi4uOWIxODM2NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlbmRlcl8wLjkuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlbmRlcl8wLjkuMTAuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDhiYzcxOTg2ZDNiOWIzNjM5ZjZkZmQ2ZmFjOGYxOTYiCiAKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHJlbmRlcnByb3RvIHhwcm90byIKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhvcmdwcm90byIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIKaW5kZXggOGMzNGU0Ny4uYWY2YmIxOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjIuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiCkBAIC0xMCw3ICsxMCw3IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjODk0NDFhOGRmMjYxYmRjNTY1ODc0NjVlMTNjN2ZhIgogCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IHJlc291cmNlcHJvdG8iCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNjcm5zYXZlcl8xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzY3Juc2F2ZXJfMS4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NGU1ZGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNjcm5zYXZlcl8xLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhzY3Juc2F2ZXI6IFggU2NyZWVuIFNhdmVyIGV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJUaGUgWCBXaW5kb3cgU3lzdGVtIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNoYW5naW5nIHRoZSBcCi1pbWFnZSBvbiBhIGRpc3BsYXkgc2NyZWVuIGFmdGVyIGEgdXNlci1zZXR0YWJsZSBwZXJpb2Qgb2YgaW5hY3Rpdml0eSB0byBcCi1hdm9pZCBidXJuaW5nIHRoZSBjYXRob2RlIHJheSB0dWJlIHBob3NwaG9ycy4gSG93ZXZlciwgbm8gaW50ZXJmYWNlcyBhcmUgXAotcHJvdmlkZWQgZm9yIHRoZSB1c2VyIHRvIGNvbnRyb2wgdGhlIGltYWdlIHRoYXQgaXMgZHJhd24uIFRoaXMgZXh0ZW5zaW9uIFwKLWFsbG93cyBhbiBleHRlcm5hbCBcInNjcmVlbiBzYXZlclwiIGNsaWVudCB0byBkZXRlY3Qgd2hlbiB0aGUgYWx0ZXJuYXRlIFwKLWltYWdlIGlzIHRvIGJlIGRpc3BsYXllZCBhbmQgdG8gcHJvdmlkZSB0aGUgZ3JhcGhpY3MuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxZmQxNTRlZTc1NzgxMzYzMmFkYTg3MWEzNDExM2ZiIgotCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IHNjcm5zYXZlcnByb3RvIgotUFJPVklERVMgPSAibGlieHNzIgotUlJFUExBQ0VTXyR7UE59ID0gImxpYnhzcyIKLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWFNjcm5TYXZlciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdhNzczYjE2MTY1ZTM5ZTkzODY1MGJjYzkwMjdjMWQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmZjFlZmE3MzQxYzdmMzRiY2Y5YjE3Yzg5NjQ4ZDYzMjVkZGFhZTIyZTM5MDRlMDkxNzk0ZTBiNDQyNmNlMWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2NybnNhdmVyXzEuMi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNjcm5zYXZlcl8xLjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWQ1MmU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNjcm5zYXZlcl8xLjIuMy5iYgpAQCAtMCwwICsxLDIzIEBACityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJYc2NybnNhdmVyOiBYIFNjcmVlbiBTYXZlciBleHRlbnNpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiVGhlIFggV2luZG93IFN5c3RlbSBwcm92aWRlcyBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgXAoraW1hZ2Ugb24gYSBkaXNwbGF5IHNjcmVlbiBhZnRlciBhIHVzZXItc2V0dGFibGUgcGVyaW9kIG9mIGluYWN0aXZpdHkgdG8gXAorYXZvaWQgYnVybmluZyB0aGUgY2F0aG9kZSByYXkgdHViZSBwaG9zcGhvcnMuIEhvd2V2ZXIsIG5vIGludGVyZmFjZXMgYXJlIFwKK3Byb3ZpZGVkIGZvciB0aGUgdXNlciB0byBjb250cm9sIHRoZSBpbWFnZSB0aGF0IGlzIGRyYXduLiBUaGlzIGV4dGVuc2lvbiBcCithbGxvd3MgYW4gZXh0ZXJuYWwgXCJzY3JlZW4gc2F2ZXJcIiBjbGllbnQgdG8gZGV0ZWN0IHdoZW4gdGhlIGFsdGVybmF0ZSBcCitpbWFnZSBpcyB0byBiZSBkaXNwbGF5ZWQgYW5kIHRvIHByb3ZpZGUgdGhlIGdyYXBoaWNzLiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMWZkMTU0ZWU3NTc4MTM2MzJhZGE4NzFhMzQxMTNmYiIKKworREVQRU5EUyArPSAibGlieGV4dCB4b3JncHJvdG8iCitQUk9WSURFUyA9ICJsaWJ4c3MiCitSUkVQTEFDRVNfJHtQTn0gPSAibGlieHNzIgorUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYU2NyblNhdmVyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWVlYTlkNWFmM2U2YzE0M2QwZWExNzIxZDI3YTVlNDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjkxNzA3NWExYjdiNWEzOGQ2N2E4YjAyMzhlYWFiMTRhY2QyNTU3Njc5ODM1YjE1NGNmMmJjYTU3NmU4OWJmOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZS9leHRlbnNpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlL2V4dGVuc2lvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYzllMDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlL2V4dGVuc2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1XaXRoIGdsaWJjIDIuMjcgbWVtZmRfY3JlYXRlIGlzIGJlaGluZCBhIF9HTlVfU09VUkNFIGd1YXJkLCBzbyBjYWxsCi1BQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgdG8gZ2V0IHRoYXQgZGVmaW5lZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBjOTg4NzUuLmViZjRkZWUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI5LDQgKzI5LDYgQEAgQUNfQ09ORklHX1NSQ0RJUihbTWFrZWZpbGUuYW1dKQotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gCi0rQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0rCi0gIyBJbml0aWFsaXplIEF1dG9tYWtlCi0gQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBkaXN0LWJ6aXAyXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGYwNjhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIlNoYXJlZCBtZW1vcnkgJ1N5bmNGZW5jZScgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZSIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IG9mZmVycyBhIENQVS1iYXNlZCBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIGNvbXBhdGlibGUgXAotd2l0aCB0aGUgWCBTeW5jRmVuY2Ugb2JqZWN0cyB0aGF0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBwcm9jZXNzZXMgXAotdXNpbmcgZmlsZSBkZXNjcmlwdG9yIHBhc3NpbmcuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00N2U1MDhjYTI4MGZkZTk3OTA2ZWFjYjc3ODkyYzNhYyIKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSArPSAiZmlsZTovL2V4dGVuc2lvbnMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NjY2MmU3Njg5OTExMmMwZjk5ZTIyZjJmYzc3NWE3ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjFiMmQxZmQ3OGMxZWZiZTFmMmMxNmRhZTFjYjIzZjhmZDIzMWRjZjg5MTQ2NWI4ZGViZTYzNmE5MDU0YjBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVhNDhlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJTaGFyZWQgbWVtb3J5ICdTeW5jRmVuY2UnIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUiCisKK0RFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBvZmZlcnMgYSBDUFUtYmFzZWQgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZSBjb21wYXRpYmxlIFwKK3dpdGggdGhlIFggU3luY0ZlbmNlIG9iamVjdHMgdGhhdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gcHJvY2Vzc2VzIFwKK3VzaW5nIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDdlNTA4Y2EyODBmZGU5NzkwNmVhY2I3Nzg5MmMzYWMiCisKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmRkYTgwMTY5NDNkYzEyYWZmMmMwM2EwMzZlMDkzNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODg0MzAwZDI2YTE0OTYxYTA3NmZiZWJjNzYyYTM5ODMxY2I3NWY5MmJlZDVjY2Y5ODM2MzQ1YjQ1OTIyMGM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYgppbmRleCAxODBkMDBkLi5mOGQ5NGEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYgpAQCAtMTYsNyArMTYsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjU2NWIxZTAwOTRlYTFjYWFlMDk3MWNjNDAzNWYzNDMiCiAKIAotREVQRU5EUyArPSAidXRpbC1saW51eCBsaWJ4Y2IgbGlic20gdmlydHVhbC9saWJ4MTEga2Jwcm90byBsaWJ4ZG1jcCIKK0RFUEVORFMgKz0gInV0aWwtbGludXggbGlieGNiIGxpYnNtIHZpcnR1YWwvbGlieDExIHhvcmdwcm90byBsaWJ4ZG1jcCIKIFBST1ZJREVTID0gInh0IgogCiBQRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRzdF8xLjIuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0c3RfMS4yLjMuYmIKaW5kZXggNTcxN2ZhNS4uMjY2YmQxYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRzdF8xLjIuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dHN0XzEuMi4zLmJiCkBAIC0xMCw3ICsxMCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYjRmODk5NzJjMzg2OWY2MTdmNjFjMWE3OWFkMTk1MiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvWFRlc3QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMyO21kNT1iMWM4YzlkZmY4NDJiNGQ1Yjg5Y2E1ZmEzMmM0MGU5OSIKIAotREVQRU5EUyArPSAibGlieGV4dCByZWNvcmRwcm90byBpbnB1dHByb3RvIGxpYnhpIgorREVQRU5EUyArPSAibGlieGV4dCB4b3JncHJvdG8gbGlieGkiCiBQUk9WSURFUyA9ICJ4dHN0IgogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHZfMS4wLjExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHZfMS4wLjExLmJiCmluZGV4IGEyMjZjMjcuLmM2MDI3MjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh2XzEuMC4xMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dl8xLjAuMTEuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODI3ZGE5YWZhYjFmNzI3ZjJhNjY1NzQ2MjllMGYzOWMiCiAKLURFUEVORFMgKz0gImxpYnhleHQgdmlkZW9wcm90byIKK0RFUEVORFMgKz0gImxpYnhleHQgeG9yZ3Byb3RvIgogCiBYT1JHX1BOID0gImxpYlh2IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dm1jXzEuMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh2bWNfMS4wLjEwLmJiCmluZGV4IDZlZDQ5YjEuLjdlNDlhOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh2bWNfMS4wLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh2bWNfMS4wLjEwLmJiCkBAIC05LDcgKzksNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGEyMDdmMDhkNDk2MTQ4OWM1NTA0NmM5YTVlNTAwZGEgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd3JhcHBlci9Ydk1DV3JhcHBlci5jO2VuZGxpbmU9MjY7bWQ1PTUxNTFkYWE4MTcyYTNmMWJiMGNiMGUwZmYxNTdkOWRlIgogCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnh2IHZpZGVvcHJvdG8iCitERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnh2IHhvcmdwcm90byIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZkZ2FfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4NmRnYV8xLjEuNC5iYgppbmRleCA2OTVhMzk2Li42MjYxOTllIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4NmRnYV8xLjEuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4NmRnYV8xLjEuNC5iYgpAQCAtOSw3ICs5LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWJiOTlhYzEyNWY4NGY0MjRhNDI3ODE1Mzk4OGUzMmYiCiAKLURFUEVORFMgKz0gImxpYnhleHQgeGY4NmRnYXByb3RvIgorREVQRU5EUyArPSAibGlieGV4dCIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZtaXNjXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZtaXNjXzEuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjZmMWY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2bWlzY18xLjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiWEZyZWU4Ni1NaXNjOiBYRnJlZTg2IG1pc2NlbGxhbmVvdXMgZXh0ZW5zaW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gIlRoZSBYRnJlZTg2LU1pc2MgZXh0ZW5zaW9uLCBwcm92aWRlcyBhIG1lYW5zIHRvIGFjY2VzcyBcCi1pbnB1dCBkZXZpY2UgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBzcGVjaWZpYyB0byB0aGUgWEZyZWU4Ni9Yb3JnIEREWC4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3YzkxZWNjNDM1YmQzZDJiZmFkODY4OTE0Yzk0YjQ1IgotCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IHhmODZtaXNjcHJvdG8iCi1QUk9WSURFUyA9ICJ4eGY4Nm1pc2MiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWHhmODZtaXNjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmJjMGJmNzg5MDlmZDcxMDIxYzQ2NmM3OTNkNDM4NWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTYzZjQyMDA4NjJlZmQzMzM0YzMzYTY2OWUwYTBhYWU1YmFiMzFmMzk5OGRiNzViODdhOTlhNjk3Y2MyNmI1YiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZtaXNjXzEuMC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZtaXNjXzEuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YjA2NzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4Nm1pc2NfMS4wLjQuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJYRnJlZTg2LU1pc2M6IFhGcmVlODYgbWlzY2VsbGFuZW91cyBleHRlbnNpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiVGhlIFhGcmVlODYtTWlzYyBleHRlbnNpb24sIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWNjZXNzIFwKK2lucHV0IGRldmljZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHNwZWNpZmljIHRvIHRoZSBYRnJlZTg2L1hvcmcgRERYLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjdjOTFlY2M0MzViZDNkMmJmYWQ4Njg5MTRjOTRiNDUiCisKK0RFUEVORFMgKz0gImxpYnhleHQiCitQUk9WSURFUyA9ICJ4eGY4Nm1pc2MiCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWHhmODZtaXNjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzdhZDcwZjhiNTNiOTRiNTUwZjkyOTBiZTk3ZmJlMmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTg5YzAzZTJiMGYxNjIzOWQ2N2EyMDMxYjkwMDNmMzFiNWE2ODYxMDZiYmRiM2M3OTdmYjg4YWU0NzJhZjM4MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2dm1fMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4NnZtXzEuMS40LmJiCmluZGV4IDM1Zjg3ZDIuLjk1ZmMwYjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2dm1fMS4xLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZ2bV8xLjEuNC5iYgpAQCAtMTAsNyArMTAsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYTBiOWM0NjJkOGYyZjEzZWJhMjY0OTJkNDJlYTYzZCIKIAotREVQRU5EUyArPSAibGlieGV4dCB4Zjg2dmlkbW9kZXByb3RvIgorREVQRU5EUyArPSAibGlieGV4dCB4b3JncHJvdG8iCiAKIFBFID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkODk0Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgotCi1ERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCi1XaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKLWZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAotV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAotc3lzdGVtcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYjYxZmIzZmQ0MTllODE3ZGY1NzJiMGM4ZDk0YTg4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZWFlYzk5ODlmYmM0NDMzNThiNDM4NjQ0MzdiN2I2ZDM5Y2FmZjA3ODkwYTRhODA1NTEwNWNlOWZjYWE1OWJkIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCi0gICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwZTYwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgorCitERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCitXaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKK2ZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAorV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAorc3lzdGVtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NGM0YmRmNTIzODIxMjdjYjU4MDJjM2YyYWI0NDFlMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWIxODU4MGY0NmI0ZTRlYTkxMzcwN2Y2YzhkNjhhYjUyODY4NzljM2E2NTkxNDYyZjNiOWU3NjBkM2FjNGQ3IgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94dHJhbnMvbXVsdGlsaWJmaXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94dHJhbnMvbXVsdGlsaWJmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxM2JhZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3h0cmFucy9tdWx0aWxpYmZpeC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitUaGUgeHRyYW5zLnBjIGZpbGUgaXMgaW5zdGFsbGVkIGludG8gYSBub24tYXJjaCBkaXJlY3RvcnkgeWV0IGNvbnRhaW5zIGxpYmRpcgord2hpY2ggY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHdoaWNoIG11bHRpbGliIGlzIGNvbmZpZ3VyZWQuIFRoZSAucGMgZmlsZSBkb2VzCitub3QgcmVxdWlyZSBsaWJkaXIgc28gcmVtb3ZlIHRoaXMgdG8gZml4IG11bHRpbGliIGJ1aWxkcy4KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IHh0cmFucy0xLjMuNS94dHJhbnMucGMuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB4dHJhbnMtMS4zLjUub3JpZy94dHJhbnMucGMuaW4KKysrKyB4dHJhbnMtMS4zLjUveHRyYW5zLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBYVHJhbnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3h0cmFuc18xLjMuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3h0cmFuc18xLjMuNS5iYgppbmRleCBkNWI3ZjFhLi4yMDA3MTZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94dHJhbnNfMS4zLjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveHRyYW5zXzEuMy41LmJiCkBAIC0xMiw2ICsxMiw4IEBACiBMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ5MzQ3OTIxZDRkNTI2ODAyMWE5OTlmMjUwZWRjOWNhIgogCitTUkNfVVJJICs9ICJmaWxlOi8vbXVsdGlsaWJmaXgucGF0Y2giCisKIFBFID0gIjEiCiAKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2JpZ3JlcXNwcm90b18xLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vYmlncmVxc3Byb3RvXzEuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzk4YTQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vYmlncmVxc3Byb3RvXzEuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotUEUgPSAiMSIKLQotU1VNTUFSWSA9ICJCaWdSZXFzOiBYIEJpZyBSZXF1ZXN0cyBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgXAotQklHLVJFUVVFU1RTIGV4dGVuc2lvbiwgdXNlZCB0byBzZW5kIGxhcmdlciByZXF1ZXN0cyB0aGF0IHVzdWFsIGluIG9yZGVyIFwKLXRvIGF2b2lkIGZyYWdtZW50YXRpb24uIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxMjcxNTYzMGRhNmYyNjhkMGQzNzEyZWUxYTUwNGY0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWEwNWZiMDFmYTFkNTE5ODg5NGM5MzFjZjkyNWMwMjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDYyMTE2YWI0NGU0MWQ4MTIxYmZkZTk0NzMyMTk1MDM3MGIyODVhNTMxNjYxMmI4ZmNlODMzNGQ1MDc1MWIxZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG8vZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90by9maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmOGNiMjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90by9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQWRkIG1pc3NpbmcgbGVuZ3RoIGZpZWxkcyB0byB0aGUgcmVwbGllcy4gV2l0aG91dCB0aGVzZSwgc2FuaXR5IGNoZWNraW5nIGluIHJlY2VudCBYCi1icmVha3MgdGhpbmdzLgotCi1SUCAxMS8yLzEwCi0KLQotSW5kZXg6IGdpdC94Y2FsaWJyYXRlcHJvdG8uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3hjYWxpYnJhdGVwcm90by5oCTIwMTAtMDItMTEgMTE6NDc6NDUuNzExOTg1OTMyICswMDAwCi0rKysgZ2l0L3hjYWxpYnJhdGVwcm90by5oCTIwMTAtMDItMTEgMTE6NDA6MjEuMDAwMDAwMDAwICswMDAwCi1AQCAtNjcsMTMgKzY3LDEzIEBACi0gICAgIEJZVEUgICAgdHlwZTsgICAvKiBYX1JlcGx5ICovCi0gICAgIEJZVEUgICAgcGFkMTsKLSAgICAgQ0FSRDE2ICBzZXF1ZW5jZU51bWJlciBCMTY7Ci0rICAgIENBUkQzMiAgbGVuZ3RoOwotICAgICBDQVJEMzIgIHN0YXR1czsKLSAgICAgQ0FSRDMyICBwYWQyIEIzMjsKLSAgICAgQ0FSRDMyICBwYWQzIEIzMjsKLSAgICAgQ0FSRDMyICBwYWQ0IEIzMjsKLSAgICAgQ0FSRDMyICBwYWQ1IEIzMjsKLSAgICAgQ0FSRDMyICBwYWQ2IEIzMjsKLS0gICAgQ0FSRDMyICBwYWQ3IEIzMjsKLSB9IHhYQ2FsaWJyYXRlUmF3TW9kZVJlcGx5OwotIAotICNkZWZpbmUgc3pfeFhDYWxpYnJhdGVSYXdNb2RlUmVwbHkJMzIKLUBAIC05MiwxMyArOTIsMTMgQEAKLSAgICAgQllURSAgICB0eXBlOyAgIC8qIFhfUmVwbHkgKi8KLSAgICAgQllURSAgICBwYWQxOwotICAgICBDQVJEMTYgIHNlcXVlbmNlTnVtYmVyIEIxNjsKLSsgICAgQ0FSRDMyICBsZW5ndGg7Ci0gICAgIENBUkQzMiAgeDsKLSAgICAgQ0FSRDMyICB5OwotICAgICBDQVJEMzIgIHBhZDIgQjMyOwotICAgICBDQVJEMzIgIHBhZDMgQjMyOwotICAgICBDQVJEMzIgIHBhZDQgQjMyOwotICAgICBDQVJEMzIgIHBhZDUgQjMyOwotLSAgICBDQVJEMzIgIHBhZDYgQjMyOwotIH0geFhDYWxpYnJhdGVTY3JlZW5Ub0Nvb3JkUmVwbHk7Ci0gCi0gI2RlZmluZSBzel94WENhbGlicmF0ZVNjcmVlblRvQ29vcmRSZXBseQkzMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI0YjQyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWENhbGlicmF0ZTogVG91Y2hzY3JlZW4gY2FsaWJyYXRpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgXAotVG91Y2hzY3JlZW4gY2FsaWJyYXRpb24gZXh0ZW5zaW9uLiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Y2FsaWJyYXRld2lyZS5oO2VuZGxpbmU9MjM7bWQ1PTdmODZlZjdiMDNjY2U2YzRjOWViZDU5ZDIwY2E0ODVmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3hjYWxpYnJhdGVwcm90by5oO2VuZGxpbmU9MjM7bWQ1PWU0NDkwNDkxZWRjYzE3MWNhMjRmOTg1NjllZTU4MGRiIgotCi1TUkNSRVYgPSAiMWRhNmZkMWUyYzdhNDk2NDgyNDVjOTg0ODFmYWJlYThiOTY5MGE4YyIKLQotUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8gXAotICAgICAgICAgICBmaWxlOi8vZml4LnBhdGNoO2FwcGx5PXllcyIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY29tcG9zaXRlcHJvdG9fMC40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NvbXBvc2l0ZXByb3RvXzAuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGZlZTI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY29tcG9zaXRlcHJvdG9fMC40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhjb21wb3NpdGU6IFggY29tcG9zaXRlIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIFwKLWNvbXBvc2l0ZSBleHRlbnNpb24uICBUaGUgWCBjb21wb3NpdGUgZXh0ZW5zaW9uIHByb3ZpZGVzIHRocmVlIHJlbGF0ZWQgXAotbWVjaGFuaXNtcyBmb3IgY29tcG9zaXRpbmcgYW5kIG9mZi1zY3JlZW4gc3RvcmFnZS4iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmM0YmZlMTM2ZjRhNDQxOGVhMmYyYTk2YjdjOGYzYzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tcG9zaXRlLmg7ZW5kbGluZT00MzttZDU9Y2JkNDRkNDA3OTA1M2FhNzU5MzBlZDJmMDJiOTI5MjYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiY29tcG9zaXRlZXh0IgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVBSID0gInIxIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk4NDgyZjY1YmExZTc0YTA4YmY1YjA1NmE0MDMxZWYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0OTM1OWYwYmUwYjJiOTg0YTgxNDljOTY2ZGQwNGU4YzU4ZTZlYWRlMmE0YTMwOWNmMTEyNjYzNWNjZDBjZmMiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZGFtYWdlcHJvdG9fMS4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2RhbWFnZXByb3RvXzEuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWQwMjY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZGFtYWdlcHJvdG9fMS4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhkYW1hZ2U6IFggRGFtYWdlIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBEQU1BR0UgXAotZXh0ZW5zaW9uLiAgVGhlIERBTUFHRSBleHRlbnNpb24gYWxsb3dzIGFwcGxpY2F0aW9ucyB0byByZWNlaXZlIFwKLWluZm9ybWF0aW9uIGFib3V0IGNoYW5nZXMgbWFkZSB0byBwaXhlbCBjb250ZW50cyBvZiB3aW5kb3dzIGFuZCBcCi1waXhtYXBzLiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNWY1YTJkZTY1YzNhODRjYmRlNzY5ZjA3YTc2OTYwOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYW1hZ2V3aXJlLmg7ZW5kbGluZT0yMzttZDU9NGE0NTAxYTU5MmRiYzdkZTVjZTg5MjU1ZTUwZDAyOTYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZGFtYWdlZXh0IgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1QUiA9ICJyMSIKLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5OThlNTkwNDc2NGI4MjY0MmNjNjNkOTdiNGJhOWU5NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YzdjMTEyZTliOWVhOGE5ZDViMDE5ZTVmMTdkNDgxYWUyMGY3NjZjYjdhNDY0ODM2MGU3YzFiNDZmYzlmYzViIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kbXhwcm90b18yLjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZG14cHJvdG9fMi4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NjBlNWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kbXhwcm90b18yLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiRE1YOiBEaXN0cmlidXRlZCBNdWx0aWhlYWQgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIERNWCBcCi1leHRlbnNpb24uICBUaGUgRE1YIGV4dGVuc2lvbiBwcm92aWRlcyBzdXBwb3J0IGZvciBjb21tdW5pY2F0aW9uIHdpdGggXAotYW5kIGNvbnRyb2wgb2YgWGRteCBzZXJ2ZXIuICBBdHRyaWJ1dGVzIG9mIHRoZSBYZG14IHNlcnZlciBhbmQgb2YgdGhlIFwKLWJhY2stZW5kIHNjcmVlbnMgYXR0YWNoZWQgdG8gdGhlIHNlcnZlciBjYW4gYmUgcXVlcmllZCBhbmQgbW9kaWZpZWQgdmlhIFwKLXRoaXMgcHJvdG9jb2wuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEzYzM0OTkyMzFhODAzNWVmZDBlMDA0Y2ZiZDNiNzJhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RteHByb3RvLmg7ZW5kbGluZT0zMjttZDU9YWI4NTA5OTU1YzNkZDRjNjVmYWM3MjhlMWIzNjdiYzQiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZWUxNzViYmQ0NGQwNWMzNGQ0M2JiMTI5YmU1MDk4YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzIwNTFlNmEzZTA2YjIzNmQxOWVlZDU2MzY4MTE3Yjc0NWNhMWUxYTI3YmRjNTBmZDUxYWEzNzViZWE2NTA5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkycHJvdG9fMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkycHJvdG9fMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGM0MGM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZHJpMnByb3RvXzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiRFJJMjogRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAyIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIERpcmVjdCBcCi1SZW5kZXJpbmcgSWZucmFzdHJ1Y3R1cmUgMi4gIERJUiBpcyByZXF1aXJlZCBmb3IgbWF5IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTM5NmZhOTE4MzRmODc4NjAzMmNhZDJkYTU2MzhmMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kcmkycHJvdG8uaDtlbmRsaW5lPTMxO21kNT0yMmYyOGJmNjhkMDFiNTMzZjI2MTk1ZTk0YjNlZDhjYSIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjI3MjFkNWQyNGMwNGQ5OTgwYTBjNjU0MGNiNTM5NmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjliNTU0NzZkZWY0NGZjN2M0NTliMjUzN2QxN2RiYzczMWUzNmVkNWQ0MTZhZjdjYTBiMWUyZTY3NmY4YWEwNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZHJpM3Byb3RvXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZHJpM3Byb3RvXzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkOTdiMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2RyaTNwcm90b18xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgMyBFeHRlbnNpb24iCi0KLURFU0NSSVBUSU9OID0gIlRoZSBEUkkzIGV4dGVuc2lvbiBwcm92aWRlcyBtZWNoYW5pc21zIHRvIHRyYW5zbGF0ZSBiZXR3ZWVuIGRpcmVjdCBcCi1yZW5kZXJlZCBidWZmZXJzIGFuZCBYIHBpeG1hcHMuIFdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJlc2VudCBleHRlbnNpb24sIFwKLWEgY29tcGxldGUgZGlyZWN0IHJlbmRlcmluZyBzb2x1dGlvbiBmb3IgT3BlbkdMIGlzIHByb3ZpZGVkLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kcmkzcHJvdG8uaDtlbmRsaW5lPTIxO21kNT1hYzkwZDFkNDE2YmUzY2IxM2UxZDNjODhjZDUxNjZiZiIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTNkMmNiZTYwYTljYTFiZjNhZWE2YzkzYzgxN2ZlZTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDFiZTQ5ZDcwMjAwNTE4YjlhNmIyOTcxMzFmNmNjNzFmNGVhMmRlMTc0MzY4OTZhZjE1MzIyNmE3NzRmYzA3NCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZml4ZXNwcm90b181LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2ZpeGVzcHJvdG9fNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWZiODhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZml4ZXNwcm90b181LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhGaXhlczogWCBGaXhlcyBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBGaXhlcyBcCi1leHRlbnNpb24uICBUaGlzIGV4dGVuc2lvbiBpcyBkZXNpZ25lZCB0byBwcm92aWRlIHNlcnZlci1zaWRlIHN1cHBvcnQgXAotZm9yIGFwcGxpY2F0aW9uIHdvcmsgYXJvdW5kcyB0byBzaG9ydGNvbWluZ3MgaW4gdGhlIGNvcmUgWCB3aW5kb3cgXAotc3lzdGVtLiIKLQotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI2MmE3YTg3ZGE1NmU2NmRkNjM5YmY3MzM0YTExMGM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3hmaXhlc3Byb3RvLmg7ZW5kbGluZT00MzttZDU9YzNhOWVlNmRiMzUzMmVkMGQ0NGRlYTI2NmNmYzk3ZjQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZml4ZXNleHQiCi1QUiA9ICJyMSIKLVBFID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gImU3NDMxYWI4NGQzN2IyNjc4YWY3MWUyOTM1NWUxMDFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhMmYzZjMxMjQ2YmRkM2YyYTBhY2Y4YmQzYjA5YmE5OWNhYjk2NWM3ZmIyYzJjOTJiN2RjNzI4NzBlNDI0Y2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2ZvbnRzcHJvdG9fMi4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2ZvbnRzcHJvdG9fMi4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZmMyODEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9mb250c3Byb3RvXzIuMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYRm9udDogWCBGb250IHJhc3RlcmlzYXRpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBGb250IFwKLXJhc3RlcmlzYXRpb24gZXh0ZW5zaW9ucy4gIFRoZXNlIGV4dGVuc2lvbnMgYXJlIHVzZWQgdG8gY29udHJvbCBcCi1zZXJ2ZXItc2lkZSBmb250IGNvbmZpZ3VyYXRpb25zLiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jM2U0OGFhOWNlODY4YzhlOTBmMDQwMWRiNDFjMTFhMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9GU3Byb3RvLmg7ZW5kbGluZT00NDttZDU9ZDJlNThlMjcwOTVlNWVhN2Q0YWQ0NTZjY2I5MTk4NmMiCi0KLVBFID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY5MzRkMDBiMDA1NTVlYWFjZGU5ZjA5MWYzOTJmOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjU5MDQ2YjBkZDkxMzA4MjVjNGE0YzQ3OWJhMzU5MWQ2ZDBmMTdhMzNmNTRlMjk0YjU2NDc4NzI5YTZlNWFiOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZ2xwcm90b18xLjQuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2dscHJvdG9fMS40LjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjAzZDMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZ2xwcm90b18xLjQuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIk9wZW5HTDogWCBPcGVuR0wgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFwKLU9wZW5HTC1yZWxhdGVkIGV4dGVuc2lvbnMsIHVzZWQgdG8gZW5hYmxlIHRoZSByZW5kZXJpbmcgb2YgYXBwbGljYXRpb25zIFwKLXVzaW5nIE9wZW5HTC4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDQ0ZWQwMTQ2OTk3ODU2MzA0ZGZiYjUxMmE1OWE4ZGUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2x4cHJvdG8uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTMyO21kNT02Yjc5YzU3MGY2NDQzNjNiMzU2NDU2ZTdkNDQ0NzFkOSIKLQotUEUgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1NTY1ZjFiMGZhY2Y0YTU5YzI3NzgyMjljMWY3MGQxMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZGFhOTRiZGVkMzEwYTJiZmNiYjlkZWI0ZDc1MWQ5NjVmY2ZlNmZiM2EyZjZkMjQyZTJkZjJkNjU4OWRiZTQwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjVlNjZiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vaW5wdXRwcm90b18yLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEk6IFggSW5wdXQgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggSW5wdXQgXAotZXh0ZW5zaW9uLiAgVGhlIGV4dGVuc2lvbiBzdXBwb3J0cyBpbnB1dCBkZXZpY2VzIG90aGVyIHRoZW4gdGhlIGNvcmUgWCBcCi1rZXlib2FyZCBhbmQgcG9pbnRlci4iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTU2MmNjMGY2NTg3Yjk2MWYwMzIyMTFkODE2MGYzMWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vWEkycHJvdG8uaDtlbmRsaW5lPTQ4O21kNT0xYWMxNTgxZTYxMTg4ZGEyODg1Y2MxNGZmNDliMjBiZSIKLQotUEUgPSAiMSIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyOTBhNDYzYWY3ZGVmNDgzZTZlMTkwZGU0NjBmMzFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5M2E2YWY1NTczMzI2MjA1OGEyN2IzOGVlYjFlZGM3MzM2NjlmMDFkNDA0ZTg1ODFiMTY3ZjAzYzAzZWYzMWQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWFzY2lpZG9jIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9rYnByb3RvXzEuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9rYnByb3RvXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmY1YzkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8va2Jwcm90b18xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEtCOiBYIEtleWJvYXJkIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIFwKLUtleWJvYXJkIGV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uIGlzIHVzZWQgdG8gY29udHJvbCBvcHRpb25zIHJlbGF0ZWQgXAotdG8ga2V5Ym9hcmQgaGFuZGxpbmcgYW5kIGxheW91dC4iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2RkNmVhOTllMmE4M2E1NTJjMDJjODA5NjM2MjNjMzggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vWEtCcHJvdG8uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI1O21kNT01NzQ0ZWVmZjQwN2FlYjZlN2ExMzQ2ZWViYWI0ODZhMiIKLQotUEUgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRhZmM5MGMxZjdiZWY0YTI3ZmRkNTllY2UzOWM4NzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjg4MjIxMGI3NjM3NmUzZmEwMDZiMTFkYmQ4OTBlNTZlYzA5NDJiYzU2ZTY1ZDEyNDlmZjRhZjg2ZjkwYjg1NyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcHJlc2VudHByb3RvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcHJlc2VudHByb3RvX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkMzJmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3ByZXNlbnRwcm90b19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgYmFzaWMgaGVhZGVycyBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKLURFU0NSSVBUSU9OID0gIlRoZSBQcmVzZW50IGV4dGVuc2lvbiBwcm92aWRlcyBhIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHVwZGF0ZSB0aGVpciBcCi0gICAgICAgICAgICAgICB3aW5kb3cgY29udGVudHMgZnJvbSBhIHBpeG1hcCBpbiBhIHdlbGwgZGVmaW5lZCBmYXNoaW9uLCBzeW5jaHJvbml6aW5nIFwKLSAgICAgICAgICAgICAgIHdpdGggdGhlIGRpc3BsYXkgcmVmcmVzaCBhbmQgcG90ZW50aWFsbHkgdXNpbmcgYSBtb3JlIGVmZmljaWVudCBcCi0gICAgICAgICAgICAgICBtZWNoYW5pc20gdGhhbiBjb3B5aW5nIHRoZSBjb250ZW50cyBvZiB0aGUgc291cmNlIHBpeG1hcC5cCi0gICAgICAgICAgICAgICIKLQotTElDRU5TRSA9ICJHUEx2MiIKLQotU1JDUkVWID0gImJmZGM3ZTA1MjMwMmM3OWM1ODAzYWQ5NWE3M2M5YjYzYjM1MGM0MGMiCi1QViA9ICIxLjErZ2l0JHtTUkNQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ3ZTUwOGNhMjgwZmRlOTc5MDZlYWNiNzc4OTJjM2FjIgotCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL3Byb3RvL3ByZXNlbnRwcm90byIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yYW5kcnByb3RvXzEuNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yYW5kcnByb3RvXzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTllNTI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmFuZHJwcm90b18xLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWFJhbmRSOiBYIFJlc2l6ZSwgUm90YXRlIGFuZCBSZWZsZWN0IGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIFJlc2l6ZSwgXAotUm90YXRlIGFuZCBSZWZsZWN0IGV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIFwKLXJlc2l6ZSwgcm90YXRlIGFuZCByZWZsZWN0IHRoZSByb290IHdpbmRvdyBvZiBhIHNjcmVlbi4iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDA0MjZkNDFiZDNkOTI2N2NmOWJiYjJkZjkzMjNhNWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmFuZHJwcm90by5oO2VuZGxpbmU9MzA7bWQ1PTM4ODU5NTdjNjA0OGZkZjMzMTBhYzhiYTU0Y2EyYzNmIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInJhbmRyZXh0IgotUEUgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTQ2NzY1YzhkY2FjYjcxMTRjODIxYmFmMGRmMWU3OTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM2NzU1MzNlNzljZDczMDk5N2QyMzJjODg5NGI2NjkyMTc0ZGNlNThkM2UyMDcwMjFiOGY4NjBiZTQ5ODQ2OCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmVjb3JkcHJvdG9fMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yZWNvcmRwcm90b18xLjE0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMjMxN2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yZWNvcmRwcm90b18xLjE0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhSZWNvcmQ6IFggUmVjb3JkIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIFJlY29yZCBcCi1leHRlbnNpb24uICBUaGlzIGV4dGVuc2lvbiBpcyB1c2VkIHRvIHJlY29yZCBhbmQgcGxheSBiYWNrIGV2ZW50IFwKLXNlcXVlbmNlcy4iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTc1ODI3YTBmNTU0YmJlZDMzMjU0Mjk3NmQ1ZjNkNDAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVjb3JkcHJvdG8uaDtlbmRsaW5lPTE5O21kNT0xY2JiMGRkNDVhMGIwNjBmZjgzMzkwMTYyMGEzZTczOCIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJyZWNvcmRleHQiCi1QUiA9ICJyMSIKLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjRlNWRlZGU1ZWE1MTkwNmYxNTMwY2ExZTIxZDIxNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzc3NTQ4ZDJlOTJhYTI1OWYxNTI4ZGUzYzRhMzZkMTVlMDdhNDY1MGQwOTc2NTczYThlMmZmNTQzN2U3MzcwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yZW5kZXJwcm90b18wLjExLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JlbmRlcnByb3RvXzAuMTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY4MDBlYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JlbmRlcnByb3RvXzAuMTEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWFJlbmRlcjogWCByZW5kZXJpbmcgRXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggXAotUmVuZGVyaW5nIGV4dGVuc2lvbi4gIFRoaXMgaXMgdGhlIGJhc2lzIHRoZSBpbWFnZSBjb21wb3NpdGlvbiB3aXRoaW4gdGhlIFwKLVggd2luZG93IHN5c3RlbS4iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjgyNmQ5OTc2NTE5NjM1MmU2MTIyYTQwNmNmMGQwMjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVuZGVycHJvdG8uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTI0O21kNT0zZTVlMjg1MWRhZDI0MGIwYTNhMjdjNDc3NmI0ZmQxZiIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJyZW5kZXJleHQiCi1QUiA9ICJyMSIKLVBFID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gImE5MTRjY2MxZGU2NmRkZWI0YjYxMWM2YjA2ODZlMjc0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NzM1YTViOTJiMjA3NTkyMDRlNDc1MWVjZDYwNjRhMmFkOGE2MjQ2YmI2NWIzMDc4Yjg2MmEwMGRlZjI1MzciCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmVzb3VyY2Vwcm90b18xLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmVzb3VyY2Vwcm90b18xLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhiNjEwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3Jlc291cmNlcHJvdG9fMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhSZXM6IFggUmVzb3VyY2UgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggXAotUmVzb3VyY2UgZXh0ZW5zaW9uLiAgWFJlcyBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdGhhdCBhbGxvd3MgWCBjbGllbnRzIHRvIFwKLXNlZSBhbmQgbW9uaXRvciBYIHJlc291cmNlIHVzYWdlIG9mIHZhcmlvdXMgY2xpZW50cy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjA0ODU5MzA1ZTY2MjUwMzA3NzI0MGZlZThjNzdkOTciCi0KLVJDT05GTElDVFNfJHtQTn0gPSAicmVzb3VyY2VleHQiCi0KLVBSID0gInIxIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImNmZGI1N2RhZTIyMWI3MWIyNzAzZjhlMjk4MGVhYWY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjNjYwMDNhNmJkZWIwZjcwOTMyYTllZDNjZjU3Y2M1NTQyMzQxNTQzNzhkMzAxZTBjNWNmYTE4OWQ4ZjY4MTgiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vc2NybnNhdmVycHJvdG9fMS4yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3Njcm5zYXZlcnByb3RvXzEuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjA3ZjUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vc2NybnNhdmVycHJvdG9fMS4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhzY3Juc2F2ZXI6IFggU2NyZWVuIFNhdmVyIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIFNjcmVlbiBcCi1TYXZlciBleHRlbnNpb24uICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgYW4gZXh0ZXJuYWwgXCJzY3JlZW4gc2F2ZXJcIiBcCi1jbGllbnQgdG8gZGV0ZWN0IHdoZW4gdGhlIGFsdGVybmF0aXZlIGltYWdlIGlzIHRvIGJlIGRpc3BsYXllZCBhbmQgdG8gXAotcHJvdmlkZSB0aGUgZ3JhcGhpY3MuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVlZDQ5Yjc4YjE1YjQzNmM5MzNiNmI4YjA1NGUzOTAxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NhdmVycHJvdG8uaDtlbmRsaW5lPTI2O21kNT1hODRjMDYzNzMwNTE1OWYzYzBhYjE3M2FhZWVkZTQ4ZCIKLQotUEUgPSAiMSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1lbmFibGUtc3BlY3M9bm8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZGQ4YTczNzc1ZThlY2UxZDY5NTE1ZGQxNzc2N2JmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YmI3MGE4ZGExNjQ5MzBjY2VhZWI0Yzc0MTgwMjkxNjYwNTMzYWQzY2M0NTM3N2IzMGE3OTVkMWI4NWJjZDY1IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by92aWRlb3Byb3RvXzIuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by92aWRlb3Byb3RvXzIuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Zjk3YTI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vdmlkZW9wcm90b18yLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWHY6IFggVmlkZW8gZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggVmlkZW8gXAotZXh0ZW5zaW9uLiAgVGhpcyBleHRlbnNpb24gYWxvd3MgZm9yIGFjY2VybGF0ZWQgZHJhd2luZyBvZiB2aWRlb3MuIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNlMzQ3MmExMTlhODY0MDg1ZmE0MTU1Y2IwOTc5YTdiIgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmU4NmRlOGVhM2ViNTNiNWE4ZjUyOTU2YzVjZDMxNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc4MDM4ODlmZDA4ZTZmY2FmN2I2OGNjMzk0ZmIwMzhiMjMyNWQxZjMxNWU1NzFhNjk1NDU3N2UwN2NjYTcwMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvLzAwMDEtTWFrZS13aGl0ZXNwYWNlLXVzZS1jb25zaXN0ZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMS1NYWtlLXdoaXRlc3BhY2UtdXNlLWNvbnNpc3RlbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZWM2NjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMS1NYWtlLXdoaXRlc3BhY2UtdXNlLWNvbnNpc3RlbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotRnJvbSBlYTdhM2FjNmM2NTgxNjQ2OTBlMGZlYmI1NWY0NDY3Y2I5ZTBiY2FjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLURhdGU6IFRodSwgMTkgTWF5IDIwMTYgMTc6MzA6MDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIE1ha2Ugd2hpdGVzcGFjZSB1c2UgY29uc2lzdGVudC4KLQotQXQgbGVhc3QgcHl0aG9uLTMuNS54IGNvbXBsYWlucyBhYm91dCB0aGlzIGZvcmNlZnVsbHkuCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBVbGkgU2NobGFjaHRlciA8cHN5Y2hvbkB6bmMuaW4+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB4Y2JnZW4vYWxpZ24ucHkgfCA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS94Y2JnZW4vYWxpZ24ucHkgYi94Y2JnZW4vYWxpZ24ucHkKLWluZGV4IDVlMzE4MzguLmQ0YzEyZWUgMTAwNjQ0Ci0tLS0gYS94Y2JnZW4vYWxpZ24ucHkKLSsrKyBiL3hjYmdlbi9hbGlnbi5weQotQEAgLTE2LDEyICsxNiwxMiBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKLSAgICAgICAgIHJldHVybiBzZWxmLmFsaWduID09IG90aGVyLmFsaWduIGFuZCBzZWxmLm9mZnNldCA9PSBvdGhlci5vZmZzZXQKLSAKLSAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0tCXJldHVybiAiKGFsaWduPSVkLCBvZmZzZXQ9JWQpIiAlIChzZWxmLmFsaWduLCBzZWxmLm9mZnNldCkKLSsgICAgICAgIHJldHVybiAiKGFsaWduPSVkLCBvZmZzZXQ9JWQpIiAlIChzZWxmLmFsaWduLCBzZWxmLm9mZnNldCkKLSAKLSAgICAgQHN0YXRpY21ldGhvZAotICAgICBkZWYgZm9yX3ByaW1pdGl2ZV90eXBlKHNpemUpOgotLQkjIGNvbXB1dGUgdGhlIHJlcXVpcmVkIHN0YXJ0X2FsaWdubWVudCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgdHlwZQotLQlpZiBzaXplICUgOCA9PSAwOgotKyAgICAgICAgIyBjb21wdXRlIHRoZSByZXF1aXJlZCBzdGFydF9hbGlnbm1lbnQgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlIHR5cGUKLSsgICAgICAgIGlmIHNpemUgJSA4ID09IDA6Ci0gICAgICAgICAgICAgIyBkbyA4LWJ5dGUgcHJpbWl0aXZlcyByZXF1aXJlIDgtYnl0ZSBhbGlnbm1lbnQgaW4gWDExPwotICAgICAgICAgICAgIHJldHVybiBBbGlnbm1lbnQoOCwwKQotICAgICAgICAgZWxpZiBzaXplICUgNCA9PSAwOgotQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6Ci0gCi0gCi0gICAgIGRlZiBhbGlnbl9hZnRlcl9maXhlZF9zaXplKHNlbGYsIHNpemUpOgotLQluZXdfb2Zmc2V0ID0gKHNlbGYub2Zmc2V0ICsgc2l6ZSkgJSBzZWxmLmFsaWduCi0rICAgICAgICBuZXdfb2Zmc2V0ID0gKHNlbGYub2Zmc2V0ICsgc2l6ZSkgJSBzZWxmLmFsaWduCi0gICAgICAgICByZXR1cm4gQWxpZ25tZW50KHNlbGYuYWxpZ24sIG5ld19vZmZzZXQpCi0gCi0gCi1AQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKLSAgICAgICAgICcnJwotICAgICAgICAgQXNzdW1pbmcgdGhlIGdpdmVuIGV4dGVybmFsX2FsaWduLCBjaGVja3Mgd2hldGhlcgotICAgICAgICAgc2VsZiBpcyBmdWxmaWxsZWQgZm9yIGFsbCBjYXNlcy4KLS0JUmV0dXJucyBUcnVlIGlmIHllcywgRmFsc2Ugb3RoZXJ3aXNlLgotKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIHllcywgRmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICAgJycnCi0gICAgICAgICBpZiBzZWxmLmFsaWduID09IDEgYW5kIHNlbGYub2Zmc2V0ID09IDA6Ci0gICAgICAgICAgICAgIyBhbGlnbm1lbnQgMSB3aXRoIG9mZnNldCAwIGlzIGFsd2F5cyBmdWxmaWxsZWQKLUBAIC01NSw5ICs1NSw5IEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgotICAgICAgICAgICAgICMgdGhlIGV4dGVybmFsIGFsaWduIGd1YXJhbnRlZXMgbGVzcyBhbGlnbm1lbnQgLT4gbm90IGd1YXJhbnRlZWQKLSAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAKLS0JaWYgZXh0ZXJuYWxfYWxpZ24uYWxpZ24gJSBzZWxmLmFsaWduICE9IDA6Ci0rICAgICAgICBpZiBleHRlcm5hbF9hbGlnbi5hbGlnbiAlIHNlbGYuYWxpZ24gIT0gMDoKLSAgICAgICAgICAgICAjIHRoZSBleHRlcm5hbCBhbGlnbiBjYW5ub3QgYmUgZGl2aWRlZCBieSBvdXIgYWxpZ24KLS0JICAgICMgLT4gbm90IGd1YXJhbnRlZWQKLSsgICAgICAgICAgICAjIC0+IG5vdCBndWFyYW50ZWVkCi0gICAgICAgICAgICAgIyAodGhpcyBjYW4gb25seSBoYXBwZW4gaWYgdGhlcmUgYXJlIGFsaWdubWVudHMgdGhhdCBhcmUgbm90Ci0gICAgICAgICAgICAgIyBhIHBvd2VyIG9mIDIsIHdoaWNoIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4gQnV0IGJldHRlciBiZQotICAgICAgICAgICAgICMgc2FmZSBhbmQgY2hlY2sgZm9yIGl0KQotQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6Ci0gCi0gICAgIGRlZiBjb21iaW5lX3dpdGgoc2VsZiwgb3RoZXIpOgotICAgICAgICAgIyByZXR1cm5zIHRoZSBhbGlnbm1lbnQgdGhhdCBpcyBndWFyYW50ZWVkIHdoZW4KLS0JIyBib3RoLCBzZWxmIG9yIG90aGVyLCBjYW4gaGFwcGVuCi0rICAgICAgICAjIGJvdGgsIHNlbGYgb3Igb3RoZXIsIGNhbiBoYXBwZW4KLSAgICAgICAgIG5ld19hbGlnbiA9IGdjZChzZWxmLmFsaWduLCBvdGhlci5hbGlnbikKLSAgICAgICAgIG5ld19vZmZzZXRfY2FuZGlkYXRlMSA9IHNlbGYub2Zmc2V0ICUgbmV3X2FsaWduCi0gICAgICAgICBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTIgPSBvdGhlci5vZmZzZXQgJSBuZXdfYWxpZ24KLUBAIC04Myw4ICs4Myw4IEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgotICAgICAgICAgICAgIG5ld19hbGlnbiA9IGdjZChuZXdfYWxpZ24sIG9mZnNldF9kaWZmKQotICAgICAgICAgICAgIG5ld19vZmZzZXRfY2FuZGlkYXRlMSA9IHNlbGYub2Zmc2V0ICUgbmV3X2FsaWduCi0gICAgICAgICAgICAgbmV3X29mZnNldF9jYW5kaWRhdGUyID0gb3RoZXIub2Zmc2V0ICUgbmV3X2FsaWduCi0tCSAgICBhc3NlcnQgbmV3X29mZnNldF9jYW5kaWRhdGUxID09IG5ld19vZmZzZXRfY2FuZGlkYXRlMgotLQkgICAgbmV3X29mZnNldCA9IG5ld19vZmZzZXRfY2FuZGlkYXRlMQotKyAgICAgICAgICAgIGFzc2VydCBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTEgPT0gbmV3X29mZnNldF9jYW5kaWRhdGUyCi0rICAgICAgICAgICAgbmV3X29mZnNldCA9IG5ld19vZmZzZXRfY2FuZGlkYXRlMQotICAgICAgICAgIyByZXR1cm4gdGhlIHJlc3VsdAotICAgICAgICAgcmV0dXJuIEFsaWdubWVudChuZXdfYWxpZ24sIG5ld19vZmZzZXQpCi0gCi1AQCAtOTIsNDQgKzkyLDQ0IEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgotIGNsYXNzIEFsaWdubWVudExvZyhvYmplY3QpOgotIAotICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0tCXNlbGYub2tfbGlzdCA9IFtdCi0tCXNlbGYuZmFpbF9saXN0ID0gW10KLS0Jc2VsZi52ZXJib3NpdHkgPSAxCi0rICAgICAgICBzZWxmLm9rX2xpc3QgPSBbXQotKyAgICAgICAgc2VsZi5mYWlsX2xpc3QgPSBbXQotKyAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAxCi0gCi0gICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotLQlyZXN1bHQgPSAiIgotKyAgICAgICAgcmVzdWx0ID0gIiIKLSAKLS0JIyBvdXRwdXQgdGhlIE9LLWxpc3QKLS0JZm9yIChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIGFsaWduX2FmdGVyKSBpbiBzZWxmLm9rX2xpc3Q6Ci0tCSAgICBzdGFja3NpemUgPSBsZW4oY2FsbHN0YWNrKQotKyAgICAgICAgIyBvdXRwdXQgdGhlIE9LLWxpc3QKLSsgICAgICAgIGZvciAoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCBhbGlnbl9hZnRlcikgaW4gc2VsZi5va19saXN0OgotKyAgICAgICAgICAgIHN0YWNrc2l6ZSA9IGxlbihjYWxsc3RhY2spCi0gICAgICAgICAgICAgaW5kZW50ID0gJyAgJyAqIHN0YWNrc2l6ZQotLQkgICAgaWYgc2VsZi5va19jYWxsc3RhY2tfaXNfcmVsZXZhbnQoY2FsbHN0YWNrKToKLSsgICAgICAgICAgICBpZiBzZWxmLm9rX2NhbGxzdGFja19pc19yZWxldmFudChjYWxsc3RhY2spOgotICAgICAgICAgICAgICAgICBpZiBmaWVsZF9uYW1lIGlzIE5vbmUgb3IgZmllbGRfbmFtZSA9PSAiIjoKLS0JICAgICAgICAgICAgcmVzdWx0ICs9ICgiICAgICVzb2s6ICVzOlxuXHQlc2JlZm9yZTogJXMsIGFmdGVyOiAlc1xuIgotLQkJICAgICAgICAlIChpbmRlbnQsIHN0cih0eXBlX29iaiksIGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIHN0cihhbGlnbl9hZnRlcikpKQotLQkgICAgICAgIGVsc2U6Ci0tCQkgICAgcmVzdWx0ICs9ICgiICAgICVzb2s6IGZpZWxkIFwiJXNcIiBpbiAlczpcblx0JXNiZWZvcmU6ICVzLCBhZnRlcjogJXNcbiIKLS0JCSAgICAgICAgJSAoaW5kZW50LCBzdHIoZmllbGRfbmFtZSksIHN0cih0eXBlX29iaiksCi0tCQkgICAgICAgICAgIGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIHN0cihhbGlnbl9hZnRlcikpKQotKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICgiICAgICVzb2s6ICVzOlxuXHQlc2JlZm9yZTogJXMsIGFmdGVyOiAlc1xuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGluZGVudCwgc3RyKHR5cGVfb2JqKSwgaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgc3RyKGFsaWduX2FmdGVyKSkpCi0rICAgICAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gKCIgICAgJXNvazogZmllbGQgXCIlc1wiIGluICVzOlxuXHQlc2JlZm9yZTogJXMsIGFmdGVyOiAlc1xuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGluZGVudCwgc3RyKGZpZWxkX25hbWUpLCBzdHIodHlwZV9vYmopLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIHN0cihhbGlnbl9hZnRlcikpKQotICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+PSAxOgotLQkJICAgIHJlc3VsdCArPSBzZWxmLmNhbGxzdGFja190b19zdHIoaW5kZW50LCBjYWxsc3RhY2spCi0rICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5jYWxsc3RhY2tfdG9fc3RyKGluZGVudCwgY2FsbHN0YWNrKQotIAotLQkjIG91dHB1dCB0aGUgZmFpbC1saXN0Ci0tCWZvciAoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCByZWFzb24pIGluIHNlbGYuZmFpbF9saXN0OgotLQkgICAgc3RhY2tzaXplID0gbGVuKGNhbGxzdGFjaykKLSsgICAgICAgICMgb3V0cHV0IHRoZSBmYWlsLWxpc3QKLSsgICAgICAgIGZvciAoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCByZWFzb24pIGluIHNlbGYuZmFpbF9saXN0OgotKyAgICAgICAgICAgIHN0YWNrc2l6ZSA9IGxlbihjYWxsc3RhY2spCi0gICAgICAgICAgICAgaW5kZW50ID0gJyAgJyAqIHN0YWNrc2l6ZQotLQkgICAgaWYgZmllbGRfbmFtZSBpcyBOb25lIG9yIGZpZWxkX25hbWUgPT0gIiI6Ci0tCSAgICAgICAgcmVzdWx0ICs9ICgiICAgICVzZmFpbDogYWxpZ24gJXMgaXMgaW5jb21wYXRpYmxlIHdpdGhcblx0JXMlc1xuXHQlc1JlYXNvbjogJXNcbiIKLS0JCSAgICAlIChpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBpbmRlbnQsIHN0cih0eXBlX29iaiksIGluZGVudCwgcmVhc29uKSkKLS0JICAgIGVsc2U6Ci0tCQlyZXN1bHQgKz0gKCIgICAgJXNmYWlsOiBhbGlnbiAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aFxuXHQlc2ZpZWxkIFwiJXNcIiBpbiAlc1xuXHQlc1JlYXNvbjogJXNcbiIKLS0JCSAgICAlIChpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBpbmRlbnQsIHN0cihmaWVsZF9uYW1lKSwgc3RyKHR5cGVfb2JqKSwgaW5kZW50LCByZWFzb24pKQotKyAgICAgICAgICAgIGlmIGZpZWxkX25hbWUgaXMgTm9uZSBvciBmaWVsZF9uYW1lID09ICIiOgotKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gKCIgICAgJXNmYWlsOiBhbGlnbiAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aFxuXHQlcyVzXG5cdCVzUmVhc29uOiAlc1xuIgotKyAgICAgICAgICAgICAgICAgICAgJSAoaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgaW5kZW50LCBzdHIodHlwZV9vYmopLCBpbmRlbnQsIHJlYXNvbikpCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICgiICAgICVzZmFpbDogYWxpZ24gJXMgaXMgaW5jb21wYXRpYmxlIHdpdGhcblx0JXNmaWVsZCBcIiVzXCIgaW4gJXNcblx0JXNSZWFzb246ICVzXG4iCi0rICAgICAgICAgICAgICAgICAgICAlIChpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBpbmRlbnQsIHN0cihmaWVsZF9uYW1lKSwgc3RyKHR5cGVfb2JqKSwgaW5kZW50LCByZWFzb24pKQotIAotICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID49IDE6Ci0tCSAgICAgICAgcmVzdWx0ICs9IHNlbGYuY2FsbHN0YWNrX3RvX3N0cihpbmRlbnQsIGNhbGxzdGFjaykKLSsgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNlbGYuY2FsbHN0YWNrX3RvX3N0cihpbmRlbnQsIGNhbGxzdGFjaykKLSAKLSAKLS0JcmV0dXJuIHJlc3VsdAotKyAgICAgICAgcmV0dXJuIHJlc3VsdAotIAotIAotICAgICBkZWYgY2FsbHN0YWNrX3RvX3N0cihzZWxmLCBpbmRlbnQsIGNhbGxzdGFjayk6Ci1AQCAtMTM3LDQxICsxMzcsNDEgQEAgY2xhc3MgQWxpZ25tZW50TG9nKG9iamVjdCk6Ci0gICAgICAgICBmb3Igc3RhY2tfZWxlbSBpbiBjYWxsc3RhY2s6Ci0gICAgICAgICAgICAgcmVzdWx0ICs9ICJcdCAgJXMlc1xuIiAlIChpbmRlbnQsIHN0cihzdGFja19lbGVtKSkKLSAgICAgICAgIHJlc3VsdCArPSAiXHQlc11cbiIgJSBpbmRlbnQKLS0JcmV0dXJuIHJlc3VsdAotKyAgICAgICAgcmV0dXJuIHJlc3VsdAotIAotIAotICAgICBkZWYgb2tfY2FsbHN0YWNrX2lzX3JlbGV2YW50KHNlbGYsIG9rX2NhbGxzdGFjayk6Ci0gICAgICAgICAjIGRldGVybWluZSB3aGV0aGVyIGFuIG9rIGNhbGxzdGFjayBpcyByZWxldmFudCBmb3IgbG9nZ2luZwotLQlpZiBzZWxmLnZlcmJvc2l0eSA+PSAyOgotLQkgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID49IDI6Ci0rICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAKLSAgICAgICAgICMgZW1wdHkgY2FsbHN0YWNrcyBhcmUgYWx3YXlzIHJlbGV2YW50Ci0tCWlmIGxlbihva19jYWxsc3RhY2spID09IDA6Ci0rICAgICAgICBpZiBsZW4ob2tfY2FsbHN0YWNrKSA9PSAwOgotICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gCi0tCSMgY2hlY2sgd2hldGhlciB0aGUgb2tfY2FsbHN0YWNrIGlzIGEgc3Vic2V0IG9yIGVxdWFsIHRvIGEgZmFpbF9jYWxsc3RhY2sKLSsgICAgICAgICMgY2hlY2sgd2hldGhlciB0aGUgb2tfY2FsbHN0YWNrIGlzIGEgc3Vic2V0IG9yIGVxdWFsIHRvIGEgZmFpbF9jYWxsc3RhY2sKLSAgICAgICAgIGZvciAoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgZmFpbF9jYWxsc3RhY2ssIHJlYXNvbikgaW4gc2VsZi5mYWlsX2xpc3Q6Ci0gICAgICAgICAgICAgaWYgbGVuKG9rX2NhbGxzdGFjaykgPD0gbGVuKGZhaWxfY2FsbHN0YWNrKToKLSAgICAgICAgICAgICAgICAgemlwcGVkID0gemlwKG9rX2NhbGxzdGFjaywgZmFpbF9jYWxsc3RhY2tbOmxlbihva19jYWxsc3RhY2spXSkKLS0JCWlzX3N1YnNldCA9IGFsbChbaSA9PSBqIGZvciBpLCBqIGluIHppcHBlZF0pCi0tCQlpZiBpc19zdWJzZXQ6Ci0rICAgICAgICAgICAgICAgIGlzX3N1YnNldCA9IGFsbChbaSA9PSBqIGZvciBpLCBqIGluIHppcHBlZF0pCi0rICAgICAgICAgICAgICAgIGlmIGlzX3N1YnNldDoKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gCi0gICAgICAgICByZXR1cm4gRmFsc2UKLSAKLSAKLSAgICAgZGVmIG9rKHNlbGYsIGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgYWxpZ25fYWZ0ZXIpOgotLQlzZWxmLm9rX2xpc3QuYXBwZW5kKChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIGFsaWduX2FmdGVyKSkKLSsgICAgICAgIHNlbGYub2tfbGlzdC5hcHBlbmQoKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgYWxpZ25fYWZ0ZXIpKQotIAotICAgICBkZWYgZmFpbChzZWxmLCBhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIHJlYXNvbik6Ci0tCXNlbGYuZmFpbF9saXN0LmFwcGVuZCgoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCByZWFzb24pKQotKyAgICAgICAgc2VsZi5mYWlsX2xpc3QuYXBwZW5kKChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIHJlYXNvbikpCi0gCi0gICAgIGRlZiBhcHBlbmQoc2VsZiwgb3RoZXIpOgotLQlzZWxmLm9rX2xpc3QuZXh0ZW5kKG90aGVyLm9rX2xpc3QpCi0tCXNlbGYuZmFpbF9saXN0LmV4dGVuZChvdGhlci5mYWlsX2xpc3QpCi0rICAgICAgICBzZWxmLm9rX2xpc3QuZXh0ZW5kKG90aGVyLm9rX2xpc3QpCi0rICAgICAgICBzZWxmLmZhaWxfbGlzdC5leHRlbmQob3RoZXIuZmFpbF9saXN0KQotIAotICAgICBkZWYgb2tfY291bnQoc2VsZik6Ci0tCXJldHVybiBsZW4oc2VsZi5va19saXN0KQotKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLm9rX2xpc3QpCi0gCi0gCi0gCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by8wMDAyLXByaW50LWlzLWEtZnVuY3Rpb24tYW5kLW5lZWRzLXBhcmVudGhlc2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJhY2I4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIGJlYTVlMWM4NWJkYzA5NTA5MTM3OTAzNjRlMTgyMjhmMjAzOTVhM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgotRGF0ZTogVGh1LCAxOSBNYXkgMjAxNiAxNzozMDowNSArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gcHJpbnQoKSBpcyBhIGZ1bmN0aW9uIGFuZCBuZWVkcyBwYXJlbnRoZXNlcy4KLQotRml4ZXMgYnVpbGQgd2l0aCBweXRob24tMy54LgotCi1TaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgotU2lnbmVkLW9mZi1ieTogVWxpIFNjaGxhY2h0ZXIgPHBzeWNob25Aem5jLmluPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0geGNiZ2VuL3h0eXBlcy5weSB8IDEyICsrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS94Y2JnZW4veHR5cGVzLnB5IGIveGNiZ2VuL3h0eXBlcy5weQotaW5kZXggYzNiNTc1OC4uYjgzYjExOSAxMDA2NDQKLS0tLSBhL3hjYmdlbi94dHlwZXMucHkKLSsrKyBiL3hjYmdlbi94dHlwZXMucHkKLUBAIC01MDEsNyArNTAxLDcgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6Ci0gICAgICAgICAgICAgICAgIGludChyZXF1aXJlZF9zdGFydF9hbGlnbl9lbGVtZW50LmdldCgnYWxpZ24nLCAiNCIpLCAwKSwKLSAgICAgICAgICAgICAgICAgaW50KHJlcXVpcmVkX3N0YXJ0X2FsaWduX2VsZW1lbnQuZ2V0KCdvZmZzZXQnLCAiMCIpLCAwKSkKLSAgICAgICAgICAgICBpZiB2ZXJib3NlX2FsaWduX2xvZzoKLS0gICAgICAgICAgICAgICAgcHJpbnQgIkV4cGxpY2l0IHN0YXJ0LWFsaWduIGZvciAlczogJXNcbiIgJSAoc2VsZiwgc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbikKLSsgICAgICAgICAgICAgICAgcHJpbnQgKCJFeHBsaWNpdCBzdGFydC1hbGlnbiBmb3IgJXM6ICVzXG4iICUgKHNlbGYsIHNlbGYucmVxdWlyZWRfc3RhcnRfYWxpZ24pKQotIAotICAgICBkZWYgcmVzb2x2ZShzZWxmLCBtb2R1bGUpOgotICAgICAgICAgaWYgc2VsZi5yZXNvbHZlZDoKLUBAIC01OTIsNyArNTkyLDcgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6Ci0gICAgICAgICAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgotICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCJjYWxjX3JlcXVpcmVkX3N0YXJ0X2FsaWduOiAlcyBoYXMgc3RhcnQtYWxpZ24gJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3RyKHNlbGYpLCBzdHIoc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbikpKQotLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkRldGFpbHM6XG4iICsgc3RyKGxvZykKLSsgICAgICAgICAgICAgICAgICAgIHByaW50ICgiRGV0YWlsczpcbiIgKyBzdHIobG9nKSkKLSAgICAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbi5vZmZzZXQgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ICgoIldBUk5JTkc6ICVzXG5cdGhhcyBzdGFydC1hbGlnbiB3aXRoIG5vbi16ZXJvIG9mZnNldDogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG5cdHN1Z2dlc3QgdG8gYWRkIGV4cGxpY2l0IGRlZmluaXRpb24gd2l0aDoiCi1AQCAtNjE5LDEyICs2MTksMTIgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6Ci0gICAgICAgICAgICAgZm9yIG9mZnNldCBpbiByYW5nZSgwLGFsaWduKToKLSAgICAgICAgICAgICAgICAgYWxpZ25fY2FuZGlkYXRlID0gQWxpZ25tZW50KGFsaWduLCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgotLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgInRyeWluZyAlcyBmb3IgJXMiICUgKHN0cihhbGlnbl9jYW5kaWRhdGUpLCBzdHIoc2VsZikpCi0rICAgICAgICAgICAgICAgICAgICBwcmludCAoInRyeWluZyAlcyBmb3IgJXMiICUgKHN0cihhbGlnbl9jYW5kaWRhdGUpLCBzdHIoc2VsZikpKQotICAgICAgICAgICAgICAgICBteV9sb2cgPSBBbGlnbm1lbnRMb2coKQotICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX3Bvc3NpYmxlX3N0YXJ0X2FsaWduKGFsaWduX2NhbmRpZGF0ZSwgY2FsbHN0YWNrLCBteV9sb2cpOgotICAgICAgICAgICAgICAgICAgICAgbG9nLmFwcGVuZChteV9sb2cpCi0gICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlX2FsaWduX2xvZzoKLS0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiZm91bmQgc3RhcnQtYWxpZ24gJXMgZm9yICVzIiAlIChzdHIoYWxpZ25fY2FuZGlkYXRlKSwgc3RyKHNlbGYpKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgiZm91bmQgc3RhcnQtYWxpZ24gJXMgZm9yICVzIiAlIChzdHIoYWxpZ25fY2FuZGlkYXRlKSwgc3RyKHNlbGYpKSkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlnbl9jYW5kaWRhdGUKLSAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIG15X29rX2NvdW50ID0gbXlfbG9nLm9rX2NvdW50KCkKLUBAIC02NDEsNyArNjQxLDcgQEAgY2xhc3MgQ29tcGxleFR5cGUoVHlwZSk6Ci0gICAgICAgICAjIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgYXBwbGllcwotICAgICAgICAgIyB0aGlzIHR5cGUgaGFzIGlsbGVnYWwgaW50ZXJuYWwgYWxpZ25zIGZvciBhbGwgcG9zc2libGUgc3RhcnRfYWxpZ25zCi0gICAgICAgICBpZiB2ZXJib3NlX2FsaWduX2xvZzoKLS0gICAgICAgICAgICBwcmludCAiZGlkbid0IGZpbmQgc3RhcnQtYWxpZ24gZm9yICVzIiAlIHN0cihzZWxmKQotKyAgICAgICAgICAgIHByaW50ICgiZGlkbid0IGZpbmQgc3RhcnQtYWxpZ24gZm9yICVzIiAlIHN0cihzZWxmKSkKLSAgICAgICAgIGxvZy5hcHBlbmQoYmVzdF9sb2cpCi0gICAgICAgICByZXR1cm4gTm9uZQotIAotQEAgLTkwMCw3ICs5MDAsNyBAQCBjbGFzcyBTd2l0Y2hUeXBlKENvbXBsZXhUeXBlKToKLSAgICAgIyBhdXggZnVuY3Rpb24gZm9yIHVuY2hlY2tlZF9nZXRfYWxpZ25tZW50X2FmdGVyCi0gICAgIGRlZiBnZXRfYWxpZ25fZm9yX3NlbGVjdGVkX2Nhc2VfZmllbGQoc2VsZiwgY2FzZV9maWVsZCwgc3RhcnRfYWxpZ24sIGNhbGxzdGFjaywgbG9nKToKLSAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgotLSAgICAgICAgICAgIHByaW50ICJnZXRfYWxpZ25fZm9yX3NlbGVjdGVkX2Nhc2VfZmllbGQ6ICVzLCBjYXNlX2ZpZWxkID0gJXMiICUgKHN0cihzZWxmKSwgc3RyKGNhc2VfZmllbGQpKQotKyAgICAgICAgICAgIHByaW50ICgiZ2V0X2FsaWduX2Zvcl9zZWxlY3RlZF9jYXNlX2ZpZWxkOiAlcywgY2FzZV9maWVsZCA9ICVzIiAlIChzdHIoc2VsZiksIHN0cihjYXNlX2ZpZWxkKSkpCi0gICAgICAgICB0b3RhbF9hbGlnbiA9IHN0YXJ0X2FsaWduCi0gICAgICAgICBmb3IgZmllbGQgaW4gc2VsZi5iaXRjYXNlczoKLSAgICAgICAgICAgICBteV9jYWxsc3RhY2sgPSBjYWxsc3RhY2tbOl0KLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YTgzNzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiWENCOiBUaGUgWCBwcm90b2NvbCBDIGJpbmRpbmcgaGVhZGVycyIKLURFU0NSSVBUSU9OID0gIkZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBYIHByb3RvY29sIEMtbGFuZ3VhZ2UgQmluZGluZyBcCi0oWENCKS4gIFhDQiBpcyBhIHJlcGxhY2VtZW50IGZvciBYbGliIGZlYXR1cmluZyBhIHNtYWxsIGZvb3RwcmludCwgXAotbGF0ZW5jeSBoaWRpbmcsIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHByb3RvY29sLCBpbXByb3ZlZCB0aHJlYWRpbmcgXAotc3VwcG9ydCwgYW5kIGV4dGVuc2liaWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PVhDQiIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc2M2IwODFjYjEwYzIyMzQzNWIwMWUwMGRjMGFiYTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2RyaTIueG1sO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjg7bWQ1PWY4NzYzYjEzZmY0MzJlODU5N2UwZDYxMGNmNTk4ZTY1IgotCi1TUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2Utd2hpdGVzcGFjZS11c2UtY29uc2lzdGVudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXByaW50LWlzLWEtZnVuY3Rpb24tYW5kLW5lZWRzLXBhcmVudGhlc2VzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjE0ZTYwOTE5Zjg1OTU2MGYyODQyNmE2ODVhNTU1OTYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5MjJhYmE0YzY2NGFiNzg5OWEyOWQ5MmVhOTFhODdhYTRjMWZjN2ViNWVlNTUwMzI1YzMyMTZjNDgwYTQ5MDYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIEZvcmNlIHRoZSB1c2Ugb2YgUHl0aG9uIDMgYW5kIGEgc3BlY2lmaWMgbGlicmFyeSBwYXRoIHNvIHdlIGRvbid0IG5lZWQgdG8KLSMgZGVwZW5kIG9uIHB5dGhvbjMtbmF0aXZlCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiUFlUSE9OPXB5dGhvbjMgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0ke2xpYmRpcn0veGNiLXByb3RvIgotCi1QQUNLQUdFUyArPSAicHl0aG9uLXhjYmdlbiIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3hjYi8qLnhtbCAke2RhdGFkaXJ9L3hjYi8qLnhzZCIKLUZJTEVTX3B5dGhvbi14Y2JnZW4gPSAiJHtsaWJkaXJ9L3hjYi1wcm90byIKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBOZWVkIHRvIGRvIHRoaXMgZGFuY2UgYmVjYXVzZSB3ZSdyZSBmb3JjaW5nIHRoZSB1c2Ugb2YgaG9zdCBQeXRob24gYWJvdmUgYW5kCi0jIGlmIHhjYi1wcm90byBpcyBidWlsdCB3aXRoIFB5My41IGFuZCB0aGVuIHJlLXVzZWQgZnJvbSBzc3RhdGUgb24gYSBob3N0IHdpdGgKLSMgUHkzLjYgdGhlIHNlY29uZCBidWlsZCB3aWxsIHdyaXRlIG5ldyBjYWNoZSBmaWxlcyBpbnRvIHRoZSBzeXNyb290IHdoaWNoIHdvbid0Ci0jIGJlIGxpc3RlZCBpbiB0aGUgbWFuaWZlc3Qgc28gd29uJ3QgYmUgZGVsZXRlZCwgcmVzdWx0aW5nIGluIGFuIGVycm9yIG9uCi0jIHJlYnVpbGRzLiAgU29sdmUgdGhpcyBieSBkZWxldGluZyB0aGUgZW50aXJlIGNhY2hlIGRpcmVjdG9yeSB3aGVuIHRoaXMgcGFja2FnZQotIyBpcyByZW1vdmVkIGZyb20gdGhlIHN5c3Jvb3QuCi1TU1RBVEVQT1NUSU5TVEZVTkNTICs9ICJ4Y2Jfc3N0YXRlX3Bvc3RpbnN0IgoteGNiX3NzdGF0ZV9wb3N0aW5zdCgpIHsKLQlpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdCIgLW8gIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCi0JdGhlbgotCQljYXQgPDxFT0YgPiR7U1NUQVRFX0lOU1RfUE9TVFJNfQotIyEvYmluL3NoCi1ybSAtcmYgJHtsaWJkaXJ9L3hjYi1wcm90by94Y2JnZW4vX19weWNhY2hlX18KLUVPRgotCWZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTAzNzg2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMy5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIlhDQjogVGhlIFggcHJvdG9jb2wgQyBiaW5kaW5nIGhlYWRlcnMiCitERVNDUklQVElPTiA9ICJGdW5jdGlvbiBwcm90b3R5cGVzIGZvciB0aGUgWCBwcm90b2NvbCBDLWxhbmd1YWdlIEJpbmRpbmcgXAorKFhDQikuICBYQ0IgaXMgYSByZXBsYWNlbWVudCBmb3IgWGxpYiBmZWF0dXJpbmcgYSBzbWFsbCBmb290cHJpbnQsIFwKK2xhdGVuY3kgaGlkaW5nLCBkaXJlY3QgYWNjZXNzIHRvIHRoZSBwcm90b2NvbCwgaW1wcm92ZWQgdGhyZWFkaW5nIFwKK3N1cHBvcnQsIGFuZCBleHRlbnNpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1YQ0IiCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3NjNiMDgxY2IxMGMyMjM0MzViMDFlMDBkYzBhYmE3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kcmkyLnhtbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTI4O21kNT1mODc2M2IxM2ZmNDMyZTg1OTdlMGQ2MTBjZjU5OGU2NSIKKworU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0LyR7QlB9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYmU5YWE0ODg2MTM4MTUwYmJjMDRhZTRmMjliOTBlMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Yjk4NzIxZTY2OWJlODAyODRlOWJiZmVhYjAyZDJkMGQ1NGNkMTExNzJiNzIyNzFlNDdhMmZlODc1ZTJiZGUxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBGb3JjZSB0aGUgdXNlIG9mIFB5dGhvbiAzIGFuZCBhIHNwZWNpZmljIGxpYnJhcnkgcGF0aCBzbyB3ZSBkb24ndCBuZWVkIHRvCisjIGRlcGVuZCBvbiBweXRob24zLW5hdGl2ZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlBZVEhPTj1weXRob24zIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtsaWJkaXJ9L3hjYi1wcm90byIKKworUEFDS0FHRVMgKz0gInB5dGhvbi14Y2JnZW4iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS94Y2IvKi54bWwgJHtkYXRhZGlyfS94Y2IvKi54c2QiCitGSUxFU19weXRob24teGNiZ2VuID0gIiR7bGliZGlyfS94Y2ItcHJvdG8iCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgTmVlZCB0byBkbyB0aGlzIGRhbmNlIGJlY2F1c2Ugd2UncmUgZm9yY2luZyB0aGUgdXNlIG9mIGhvc3QgUHl0aG9uIGFib3ZlIGFuZAorIyBpZiB4Y2ItcHJvdG8gaXMgYnVpbHQgd2l0aCBQeTMuNSBhbmQgdGhlbiByZS11c2VkIGZyb20gc3N0YXRlIG9uIGEgaG9zdCB3aXRoCisjIFB5My42IHRoZSBzZWNvbmQgYnVpbGQgd2lsbCB3cml0ZSBuZXcgY2FjaGUgZmlsZXMgaW50byB0aGUgc3lzcm9vdCB3aGljaCB3b24ndAorIyBiZSBsaXN0ZWQgaW4gdGhlIG1hbmlmZXN0IHNvIHdvbid0IGJlIGRlbGV0ZWQsIHJlc3VsdGluZyBpbiBhbiBlcnJvciBvbgorIyByZWJ1aWxkcy4gIFNvbHZlIHRoaXMgYnkgZGVsZXRpbmcgdGhlIGVudGlyZSBjYWNoZSBkaXJlY3Rvcnkgd2hlbiB0aGlzIHBhY2thZ2UKKyMgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzeXNyb290LgorU1NUQVRFUE9TVElOU1RGVU5DUyArPSAieGNiX3NzdGF0ZV9wb3N0aW5zdCIKK3hjYl9zc3RhdGVfcG9zdGluc3QoKSB7CisJaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3QiIC1vICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgXQorCXRoZW4KKwkJY2F0IDw8RU9GID4ke1NTVEFURV9JTlNUX1BPU1RSTX0KKyMhL2Jpbi9zaAorcm0gLXJmICR7bGliZGlyfS94Y2ItcHJvdG8veGNiZ2VuL19fcHljYWNoZV9fCitFT0YKKwlmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y21pc2Nwcm90b18xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNtaXNjcHJvdG9fMS4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NTFiOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y21pc2Nwcm90b18xLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEMtTUlTQzogWCBYQy1NaXNjZWxsYW5lb3VzIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYQy1NSVNDIFwKLWV4dGVuc2lvbiwgd2hpY2ggaXMgdXNlZCB0byBnZXQgZGV0YWlscyBvZiBYSUQgYWxsb2NhdGlvbnMgd2l0aGluIHRoZSBcCi1zZXJ2ZXIuIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA5ZDgzMDQ3YzE1OTk0ZTA1ZGIyOWI0MjNlZDY2NjJlIgotCi1QRSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZjQ4NDdjNzhlNDFiODAxOTgyYzhhNWUwNjM2NWIyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTMyMzY4NjkzNzIyNTZjMzZkYjc5YWUzOWQ1NDIxNDE3MjY3N2ZiNzllOWNkYzU1NWRjZWVjODBiZDlkMmRmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94ZXh0cHJvdG9fNy4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hleHRwcm90b183LjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQwYmQ5NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hleHRwcm90b183LjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEV4dDogWCBFeHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciBzZXZlcmFsIFggXAotZXh0ZW5zaW9ucy4gIFRoZXNlIHByb3RvY29sIGV4dGVuc2lvbnMgaW5jbHVkZSBET1VCTEUtQlVGRkVSLCBEUE1TLCBcCi1FeHRlbmRlZC1WaXN1YWwtSW5mb3JtYXRpb24sIExCWCwgTUlUX1NITSwgTUlUX1NVTkRSWS1OT05TVEFOREFSRCwgXAotTXVsdGktQnVmZmVyaW5nLCBTRUNVUklUWSwgU0hBUEUsIFNZTkMsIFRPRy1DVVAsIFhDLUFQUEdST1VQLCBYQy1NSVNDLCBcCi1YVEVTVC4gIEluIGFkZGl0aW9uIGEgc21hbGwgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGFyZSBhbHNvIFwKLWF2YWlsYWJsZS4iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODZmMjczMjkxNzU5ZDBiYTJhMjI1ODVjZDFjMDZjNTMiCi0KLVBFID0gIjEiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWVuYWJsZS1zcGVjcz1ubyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzBjOTBmMzEzYjRiMDg1MTc1OGVmNzdiOTUwMTk1ODQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNmNGIyM2FjOGRiOWMzYTllMGQ4ZWRiNTkxNzEzZjNkNzBlZjljM2IxNzU5NzBkZDg4MjNkZmM5MmFhNWJiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NmRnYXByb3RvXzIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NmRnYXByb3RvXzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZmM2NlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hmODZkZ2Fwcm90b18yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhGcmVlODYtREdBOiBYRnJlZTg2IERpcmVjdCBHcmFwaGljcyBBY2Nlc3MgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFhGcmVlODYgXAotRGlyZWN0IEdyYXBoaWNzIEFjY2VzcyBleHRlbnNpb24uIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBkaXJlY3QgZ3JhcGhpY3MgXAotYWNjZXNzIHRvIGEgZnJhbWVidWZmZXItbGlrZSByZWdpb24sIGFzIHdlbGwgYXMgcmVsYXRpdmUgbW91c2UgXAotcmVwb3J0aW5nLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMDFlNjZlNGIzMTcwODhjZjg2OWJjOThlNmFmNGZiNiIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ4eGY4NmRnYWV4dCIKLVBSID0gInIyIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImEwMzZkYzJmY2JmMDUyZWMxMDYyMWZkNDhiNjhkYmIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjNWVmNjUxMDhlMWYyMTQ2Mjg2ZTUzMDgwOTc1NjgzZGFlNDlmYzk0NjgwMDQyZTA0YmQxZTIwMTBlOTkwNTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hmODZkcmlwcm90b18yLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NmRyaXByb3RvXzIuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2Y5MjEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NmRyaXByb3RvXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYRnJlZTg2LURSSTogWEZyZWU4NiBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYRnJlZTg2IFwKLURpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgZXh0ZW5zaW9uLiAgVGhlIFhGcmVlODYtRFJJIGV4dGVuc2lvbiBpcyBcCi11c2VkIHRvIG9yZ2FuaXplIGRpcmVjdCByZW5kZXJpbmcgc3VwcG9ydCBvciAzRCBjbGllbnRzIGFuZCBoZWxwIFwKLWFyYml0cmF0ZSByZXF1ZXN0cy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWYxMDNiOWQ5NTFlMzlmZjdlMjNkMzg2ZTIwMTFmYTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8veGY4NmRyaXByb3RvLmg7ZW5kbGluZT0zNTttZDU9NDJiZTNkOGU2ZDQyOWFiNzkxNzI1NzJiYjBjZmY1NDQiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZDcxNmQwZGFjM2I2NjRlNWVlMjBjNjlkMzRiYzEwZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzRiOGQ3MjIxY2I2ZGM0MzA5MjY5Y2NjMDA4YTIyNzUzNjk4YWU5MjQ1YTM5OGE1OWRmMzVmMTQwNGQ2NjFmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2bWlzY3Byb3RvXzAuOS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2bWlzY3Byb3RvXzAuOS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDY2M2VhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4Nm1pc2Nwcm90b18wLjkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEZyZWU4Ni1NaXNjOiBYRnJlZTg2IG1pc2NlbGxhbmVvdXMgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFhGcmVlIFwKLW1pc2NlbGxhbmVvdXMgZXh0ZW5zaW9uLiAgVGhlIFhGcmVlODYtTWlzYyBleHRlbnNpb24gcHJvdmlkZXMgYSBtZWFucyB0byBcCi1hY2Nlc3MgaW5wdXQgZGV2aWNlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mgc3BlY2lmaWMgdG8gdGhlIFhGcmVlODYvWG9yZyBcCi1ERFguIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMWU2NmU0YjMxNzA4OGNmODY5YmM5OGU2YWY0ZmI2IgotCi1QUiA9ICJyMSIKLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTYzYmJiMzFjZjViN2YzN2IyMjM3ZTkyM2ZmMjU3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NWI4ZWM2YTRhOGNhMjEwNjZkY2UxMTdlMDlkY2M4ODUzOTg2MmU2MTZlNjBmYjM5MWRlMDViMzZmNjNiMDk1IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2dmlkbW9kZXByb3RvXzIuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2dmlkbW9kZXByb3RvXzIuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjMxOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NnZpZG1vZGVwcm90b18yLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEZyZWU4Ni1WTTogWEZyZWU4NiB2aWRlbyBtb2RlIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYRnJlZTg2IFwKLXZpZGVvIG1vZGUgZXh0ZW5zaW9uLiAgVGhpcyBleHRlbnNpb24gYWxsb3dzIGNsaWVudCBhcHBsaWNhdGlvbnMgdG8gZ2V0IFwKLWFuZCBzZXQgdmlkZW8gbW9kZSB0aW1pbmdzLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00OTliZTJmZjM4N2E0MmY4NDYyOGMzNWYzMTFmMTUwMiIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ4eGY4NnZtZXh0IgotCi1QUiA9ICJyMSIKLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzkzZWNlZmVhZWNmZWFiZDFhZWQ2YTAxMDk1MTc0ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NWQ5NDk5YWE3YjczMjAzZmQ2YjM1MDViMDI1OTYyNGFmZWQ1YzE2Yjk0MWJkMDRmY2YxMjNlNWRlNjk4NzcwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94aW5lcmFtYXByb3RvXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94aW5lcmFtYXByb3RvXzEuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGU3ZTlkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGluZXJhbWFwcm90b18xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWGluZXJhbWE6IFhpbmVyYW1hIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYaW5lcmFtYSBcCi1leHRlbnNpb24uICBUaGlzIGV4dGVuc2lvbiBpcyB1c2VkIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGFib3V0IFwKLXBoeXNpY2FsIG91dHB1dCBkZXZpY2VzIHdoaWNoIG1heSBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGxvZ2ljYWwgWCBcCi1zY3JlZW4uIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNlMzk3YTUzMjZjODNkNWQwZWJmNWIzZjg3MTYzYWM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Bhbm9yYW1pWHByb3RvLmg7ZW5kbGluZT0yNDttZDU9MDk4ZTBiYzA4OTM2OGE5ODgwOTJiM2NiZGE2MTdhNTciCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5OTU5ZmUwYmZiMjJhMGU3MjYwNDMzYjhkMTk5NTkwYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Nzc1NzRiYjNkYzE5MmVjZDljNTVmNTlmOTkxZWMxZGZmMzQwYmUzZTMxMzkyYzk1ZGVmZjQyM2RhNTI0ODViIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90by8wMDAxLVJlbW92ZS1saWJkaXItc3BlY2lmaWNhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvLzAwMDEtUmVtb3ZlLWxpYmRpci1zcGVjaWZpY2F0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4Mjk2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90by8wMDAxLVJlbW92ZS1saWJkaXItc3BlY2lmaWNhdGlvbi5wYXRjaApAQCAtMCwwICsxLDQ2OCBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3Byb3RvL3hvcmdwcm90by9jb21taXQvP2lkPTkxYzFjOGUxNDkwYzk3MDM3OWVmYjE2Nzg0MDAzNDI2ZmFlYzgwNmUKKworRnJvbSA2ZmViOTc0ZTBkZWIzMzU1OTA4YzMwZTA3MjkzZDgyYTNmNjk5NmVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBNb24sIDExIEp1biAyMDE4IDE2OjQyOjQzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBsaWJkaXIgc3BlY2lmaWNhdGlvbi4KKworQ3VycmVudGx5IHRoZSBwYyBmaWxlcyBkZWZpbmUgbGliZGlyLCBob3dldmVyIHRoZXkgYXJlIGluc3RhbGxlZCBpbnRvCisvdXNyL3NoYXJlLCB3aGljaCBtZWFucyB0aGV5IHNob3VsZCBiZSBhcmNoaXRlY3R1cmUgYWdub3N0aWMuIEluIGEKK211bHRpbGliIHN5c3RlbSwgeG9yZy1wcm90byBidWlsdCBmb3IgZWFjaCBtdWx0aWxpYiBhYmksIHRoZSB2YWx1ZSBvZgorbGliZGlyIGlzIGdvaW5nIHRvIGJlIGRpZmZlcmVudC4gVGhlc2Ugc2hvdWxkIGVpdGhlciBiZSBpbnN0YWxsZWQgaW4KKzxsaWJkaXI+L3BrZ2NvbmZpZyBvciB0aGV5IHNob3VsZG4ndCBkZWZpbmUgbGliZGlyLCBlc3BlaWNhbGx5IHNpbmNlCit0aGV5IGRvbid0IGFjdHVhbGx5IHVzZSB0aGUgZGVmaW5pdGlvbi4gVGhpcyBzcGVjaWZpY2FsbHkgY2F1c2VzIGFuCitpc3N1ZSB3aGVuIHRyeWluZyB0byBpbnN0YWxsIGJvdGggYWJpcyBhdCB0aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5IGFyZQorbm90IGJpbmFyeSBpZGVudGljYWwsIHNvbWV0aGluZyBsaWtlIHJwbSB3aWxsIGNvbXBsYWluIHRoYXQgdGhleQorCistLS0KKyBhcHBsZXdtcHJvdG8ucGMuaW4gICAgIHwgMSAtCisgYmlncmVxc3Byb3RvLnBjLmluICAgICB8IDEgLQorIGNvbXBvc2l0ZXByb3RvLnBjLmluICAgfCAxIC0KKyBkYW1hZ2Vwcm90by5wYy5pbiAgICAgIHwgMSAtCisgZG14cHJvdG8ucGMuaW4gICAgICAgICB8IDEgLQorIGRyaTJwcm90by5wYy5pbiAgICAgICAgfCAxIC0KKyBkcmkzcHJvdG8ucGMuaW4gICAgICAgIHwgMSAtCisgZXZpZXByb3RvLnBjLmluICAgICAgICB8IDEgLQorIGZpeGVzcHJvdG8ucGMuaW4gICAgICAgfCAxIC0KKyBmb250Y2FjaGVwcm90by5wYy5pbiAgIHwgMSAtCisgZm9udHNwcm90by5wYy5pbiAgICAgICB8IDEgLQorIGdscHJvdG8ucGMuaW4gICAgICAgICAgfCAxIC0KKyBpbnB1dHByb3RvLnBjLmluICAgICAgIHwgMSAtCisga2Jwcm90by5wYy5pbiAgICAgICAgICB8IDEgLQorIGxnM2Rwcm90by5wYy5pbiAgICAgICAgfCAxIC0KKyBwcmVzZW50cHJvdG8ucGMuaW4gICAgIHwgMSAtCisgcHJpbnRwcm90by5wYy5pbiAgICAgICB8IDEgLQorIHJhbmRycHJvdG8ucGMuaW4gICAgICAgfCAxIC0KKyByZWNvcmRwcm90by5wYy5pbiAgICAgIHwgMSAtCisgcmVuZGVycHJvdG8ucGMuaW4gICAgICB8IDEgLQorIHJlc291cmNlcHJvdG8ucGMuaW4gICAgfCAxIC0KKyBzY3Juc2F2ZXJwcm90by5wYy5pbiAgIHwgMSAtCisgdHJhcHByb3RvLnBjLmluICAgICAgICB8IDEgLQorIHZpZGVvcHJvdG8ucGMuaW4gICAgICAgfCAxIC0KKyB3aW5kb3dzd21wcm90by5wYy5pbiAgIHwgMSAtCisgeGNhbGlicmF0ZXByb3RvLnBjLmluICB8IDEgLQorIHhjbWlzY3Byb3RvLnBjLmluICAgICAgfCAxIC0KKyB4ZXh0cHJvdG8ucGMuaW4gICAgICAgIHwgMSAtCisgeGY4NmJpZ2ZvbnRwcm90by5wYy5pbiB8IDEgLQorIHhmODZkZ2Fwcm90by5wYy5pbiAgICAgfCAxIC0KKyB4Zjg2ZHJpcHJvdG8ucGMuaW4gICAgIHwgMSAtCisgeGY4Nm1pc2Nwcm90by5wYy5pbiAgICB8IDEgLQorIHhmODZydXNocHJvdG8ucGMuaW4gICAgfCAxIC0KKyB4Zjg2dmlkbW9kZXByb3RvLnBjLmluIHwgMSAtCisgeGluZXJhbWFwcm90by5wYy5pbiAgICB8IDEgLQorIHhwcm90by5wYy5pbiAgICAgICAgICAgfCAxIC0KKyB4cHJveHltbmdwcm90by5wYy5pbiAgIHwgMSAtCisgMzcgZmlsZXMgY2hhbmdlZCwgMzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hcHBsZXdtcHJvdG8ucGMuaW4gYi9hcHBsZXdtcHJvdG8ucGMuaW4KK2luZGV4IDE3ODQxYWMuLjMyMjdiMjEgMTAwNjQ0CistLS0gYS9hcHBsZXdtcHJvdG8ucGMuaW4KKysrKyBiL2FwcGxld21wcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IEFwcGxlV01Qcm90bworZGlmZiAtLWdpdCBhL2JpZ3JlcXNwcm90by5wYy5pbiBiL2JpZ3JlcXNwcm90by5wYy5pbgoraW5kZXggOTQ1NzdlZC4uZTIxYmI1OSAxMDA2NDQKKy0tLSBhL2JpZ3JlcXNwcm90by5wYy5pbgorKysrIGIvYmlncmVxc3Byb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogQmlnUmVxc1Byb3RvCitkaWZmIC0tZ2l0IGEvY29tcG9zaXRlcHJvdG8ucGMuaW4gYi9jb21wb3NpdGVwcm90by5wYy5pbgoraW5kZXggZGE0MjljNy4uYjBkYWRhMSAxMDA2NDQKKy0tLSBhL2NvbXBvc2l0ZXByb3RvLnBjLmluCisrKysgYi9jb21wb3NpdGVwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgCisgTmFtZTogQ29tcG9zaXRlRXh0CitkaWZmIC0tZ2l0IGEvZGFtYWdlcHJvdG8ucGMuaW4gYi9kYW1hZ2Vwcm90by5wYy5pbgoraW5kZXggNmZkOWVmMS4uYmZkNTI0NCAxMDA2NDQKKy0tLSBhL2RhbWFnZXByb3RvLnBjLmluCisrKysgYi9kYW1hZ2Vwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgCisgTmFtZTogRGFtYWdlUHJvdG8KK2RpZmYgLS1naXQgYS9kbXhwcm90by5wYy5pbiBiL2RteHByb3RvLnBjLmluCitpbmRleCBlODJlZTdkLi5kMTQwZTFjIDEwMDY0NAorLS0tIGEvZG14cHJvdG8ucGMuaW4KKysrKyBiL2RteHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogRE1YUHJvdG8KK2RpZmYgLS1naXQgYS9kcmkycHJvdG8ucGMuaW4gYi9kcmkycHJvdG8ucGMuaW4KK2luZGV4IGNiNWIxNzEuLmZhOWQyNGQgMTAwNjQ0CistLS0gYS9kcmkycHJvdG8ucGMuaW4KKysrKyBiL2RyaTJwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IERSSTJQcm90bworZGlmZiAtLWdpdCBhL2RyaTNwcm90by5wYy5pbiBiL2RyaTNwcm90by5wYy5pbgoraW5kZXggZTQyZDYwZS4uMjBkYTM1OCAxMDA2NDQKKy0tLSBhL2RyaTNwcm90by5wYy5pbgorKysrIGIvZHJpM3Byb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogRFJJM1Byb3RvCitkaWZmIC0tZ2l0IGEvZXZpZXByb3RvLnBjLmluIGIvZXZpZXByb3RvLnBjLmluCitpbmRleCA2NGUwZWM0Li5mZDU0NDJiIDEwMDY0NAorLS0tIGEvZXZpZXByb3RvLnBjLmluCisrKysgYi9ldmllcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIAorIE5hbWU6IEV2SUVFeHQKK2RpZmYgLS1naXQgYS9maXhlc3Byb3RvLnBjLmluIGIvZml4ZXNwcm90by5wYy5pbgoraW5kZXggZjgyNThlMi4uYzdmY2I4MSAxMDA2NDQKKy0tLSBhL2ZpeGVzcHJvdG8ucGMuaW4KKysrKyBiL2ZpeGVzcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIAorIE5hbWU6IEZpeGVzUHJvdG8KK2RpZmYgLS1naXQgYS9mb250Y2FjaGVwcm90by5wYy5pbiBiL2ZvbnRjYWNoZXByb3RvLnBjLmluCitpbmRleCBlYjQyMzhiLi44ZmZmZmU5IDEwMDY0NAorLS0tIGEvZm9udGNhY2hlcHJvdG8ucGMuaW4KKysrKyBiL2ZvbnRjYWNoZXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogRm9udGNhY2hlUHJvdG8KK2RpZmYgLS1naXQgYS9mb250c3Byb3RvLnBjLmluIGIvZm9udHNwcm90by5wYy5pbgoraW5kZXggOWQyMjM1NC4uZWJiNjFhNCAxMDA2NDQKKy0tLSBhL2ZvbnRzcHJvdG8ucGMuaW4KKysrKyBiL2ZvbnRzcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBGb250c1Byb3RvCitkaWZmIC0tZ2l0IGEvZ2xwcm90by5wYy5pbiBiL2dscHJvdG8ucGMuaW4KK2luZGV4IGI5NTFkYjUuLmU5N2JmYzkgMTAwNjQ0CistLS0gYS9nbHByb3RvLnBjLmluCisrKysgYi9nbHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogR0xQcm90bworZGlmZiAtLWdpdCBhL2lucHV0cHJvdG8ucGMuaW4gYi9pbnB1dHByb3RvLnBjLmluCitpbmRleCAxZWI2NjE5Li4yNzBiOTVjIDEwMDY0NAorLS0tIGEvaW5wdXRwcm90by5wYy5pbgorKysrIGIvaW5wdXRwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IElucHV0UHJvdG8KK2RpZmYgLS1naXQgYS9rYnByb3RvLnBjLmluIGIva2Jwcm90by5wYy5pbgoraW5kZXggYmRkMzlmMS4uMzJhMTcyZCAxMDA2NDQKKy0tLSBhL2ticHJvdG8ucGMuaW4KKysrKyBiL2ticHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBLQlByb3RvCitkaWZmIC0tZ2l0IGEvbGczZHByb3RvLnBjLmluIGIvbGczZHByb3RvLnBjLmluCitpbmRleCAzOTMwYWQ3Li40M2ZiYTI5IDEwMDY0NAorLS0tIGEvbGczZHByb3RvLnBjLmluCisrKysgYi9sZzNkcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBMZzNkUHJvdG8KK2RpZmYgLS1naXQgYS9wcmVzZW50cHJvdG8ucGMuaW4gYi9wcmVzZW50cHJvdG8ucGMuaW4KK2luZGV4IDZlYzRiN2QuLjU1Yjg0ZGMgMTAwNjQ0CistLS0gYS9wcmVzZW50cHJvdG8ucGMuaW4KKysrKyBiL3ByZXNlbnRwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFByZXNlbnRQcm90bworZGlmZiAtLWdpdCBhL3ByaW50cHJvdG8ucGMuaW4gYi9wcmludHByb3RvLnBjLmluCitpbmRleCA4YTJlMmQ2Li5hMmRhNjZkIDEwMDY0NAorLS0tIGEvcHJpbnRwcm90by5wYy5pbgorKysrIGIvcHJpbnRwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgCisgTmFtZTogUHJpbnRQcm90bworZGlmZiAtLWdpdCBhL3JhbmRycHJvdG8ucGMuaW4gYi9yYW5kcnByb3RvLnBjLmluCitpbmRleCA1YTVlZGIyLi42ZDYwY2JiIDEwMDY0NAorLS0tIGEvcmFuZHJwcm90by5wYy5pbgorKysrIGIvcmFuZHJwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFJhbmRyUHJvdG8KK2RpZmYgLS1naXQgYS9yZWNvcmRwcm90by5wYy5pbiBiL3JlY29yZHByb3RvLnBjLmluCitpbmRleCAwZmY0YzBiLi5hODdhYTgyIDEwMDY0NAorLS0tIGEvcmVjb3JkcHJvdG8ucGMuaW4KKysrKyBiL3JlY29yZHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogUmVjb3JkUHJvdG8KK2RpZmYgLS1naXQgYS9yZW5kZXJwcm90by5wYy5pbiBiL3JlbmRlcnByb3RvLnBjLmluCitpbmRleCBlNjAyOGFjLi4zNGIxNWUwIDEwMDY0NAorLS0tIGEvcmVuZGVycHJvdG8ucGMuaW4KKysrKyBiL3JlbmRlcnByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBSZW5kZXJQcm90bworZGlmZiAtLWdpdCBhL3Jlc291cmNlcHJvdG8ucGMuaW4gYi9yZXNvdXJjZXByb3RvLnBjLmluCitpbmRleCBhNDA5ZGI5Li5mOTI3Y2JiIDEwMDY0NAorLS0tIGEvcmVzb3VyY2Vwcm90by5wYy5pbgorKysrIGIvcmVzb3VyY2Vwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFJlc291cmNlUHJvdG8KK2RpZmYgLS1naXQgYS9zY3Juc2F2ZXJwcm90by5wYy5pbiBiL3Njcm5zYXZlcnByb3RvLnBjLmluCitpbmRleCA2NTU2YTJjLi5mZDlkMzY4IDEwMDY0NAorLS0tIGEvc2NybnNhdmVycHJvdG8ucGMuaW4KKysrKyBiL3Njcm5zYXZlcnByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogU2NyblNhdmVyUHJvdG8KK2RpZmYgLS1naXQgYS90cmFwcHJvdG8ucGMuaW4gYi90cmFwcHJvdG8ucGMuaW4KK2luZGV4IDhjYjBhYTguLjhhMjIwYjkgMTAwNjQ0CistLS0gYS90cmFwcHJvdG8ucGMuaW4KKysrKyBiL3RyYXBwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFRyYXBQcm90bworZGlmZiAtLWdpdCBhL3ZpZGVvcHJvdG8ucGMuaW4gYi92aWRlb3Byb3RvLnBjLmluCitpbmRleCAxNGI5MDdhLi41YzIyZjdhIDEwMDY0NAorLS0tIGEvdmlkZW9wcm90by5wYy5pbgorKysrIGIvdmlkZW9wcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgCisgTmFtZTogVmlkZW9Qcm90bworZGlmZiAtLWdpdCBhL3dpbmRvd3N3bXByb3RvLnBjLmluIGIvd2luZG93c3dtcHJvdG8ucGMuaW4KK2luZGV4IDBhMmVjMGIuLmVjNTZlODIgMTAwNjQ0CistLS0gYS93aW5kb3dzd21wcm90by5wYy5pbgorKysrIGIvd2luZG93c3dtcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBXaW5kb3dzV01Qcm90bworZGlmZiAtLWdpdCBhL3hjYWxpYnJhdGVwcm90by5wYy5pbiBiL3hjYWxpYnJhdGVwcm90by5wYy5pbgoraW5kZXggNDBiNmZkMC4uZjFlYTVkZSAxMDA2NDQKKy0tLSBhL3hjYWxpYnJhdGVwcm90by5wYy5pbgorKysrIGIveGNhbGlicmF0ZXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBYQ2FsaWJyYXRlCitkaWZmIC0tZ2l0IGEveGNtaXNjcHJvdG8ucGMuaW4gYi94Y21pc2Nwcm90by5wYy5pbgoraW5kZXggMGRmYmYyMS4uYjcyYmJjNiAxMDA2NDQKKy0tLSBhL3hjbWlzY3Byb3RvLnBjLmluCisrKysgYi94Y21pc2Nwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhDTWlzY1Byb3RvCitkaWZmIC0tZ2l0IGEveGV4dHByb3RvLnBjLmluIGIveGV4dHByb3RvLnBjLmluCitpbmRleCBmNjZlZWFlLi45NDE5YzkxIDEwMDY0NAorLS0tIGEveGV4dHByb3RvLnBjLmluCisrKysgYi94ZXh0cHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBYRXh0UHJvdG8KK2RpZmYgLS1naXQgYS94Zjg2YmlnZm9udHByb3RvLnBjLmluIGIveGY4NmJpZ2ZvbnRwcm90by5wYy5pbgoraW5kZXggMThjNTY0Ny4uNGE2N2JlNiAxMDA2NDQKKy0tLSBhL3hmODZiaWdmb250cHJvdG8ucGMuaW4KKysrKyBiL3hmODZiaWdmb250cHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBYRjg2QmlnRm9udFByb3RvCitkaWZmIC0tZ2l0IGEveGY4NmRnYXByb3RvLnBjLmluIGIveGY4NmRnYXByb3RvLnBjLmluCitpbmRleCA1YzVmOGIxLi5lMDI5Y2Q0IDEwMDY0NAorLS0tIGEveGY4NmRnYXByb3RvLnBjLmluCisrKysgYi94Zjg2ZGdhcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBYRjg2REdBUHJvdG8KK2RpZmYgLS1naXQgYS94Zjg2ZHJpcHJvdG8ucGMuaW4gYi94Zjg2ZHJpcHJvdG8ucGMuaW4KK2luZGV4IDkzZGYyOTIuLmM4ZmFmMTQgMTAwNjQ0CistLS0gYS94Zjg2ZHJpcHJvdG8ucGMuaW4KKysrKyBiL3hmODZkcmlwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhGODZEUklQcm90bworZGlmZiAtLWdpdCBhL3hmODZtaXNjcHJvdG8ucGMuaW4gYi94Zjg2bWlzY3Byb3RvLnBjLmluCitpbmRleCBhZjczZmEzLi4wNWQ1ZDllIDEwMDY0NAorLS0tIGEveGY4Nm1pc2Nwcm90by5wYy5pbgorKysrIGIveGY4Nm1pc2Nwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhGODZNaXNjUHJvdG8KK2RpZmYgLS1naXQgYS94Zjg2cnVzaHByb3RvLnBjLmluIGIveGY4NnJ1c2hwcm90by5wYy5pbgoraW5kZXggZmM1ZjYzYi4uMWM3ZmYxYiAxMDA2NDQKKy0tLSBhL3hmODZydXNocHJvdG8ucGMuaW4KKysrKyBiL3hmODZydXNocHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBYRjg2UnVzaFByb3RvCitkaWZmIC0tZ2l0IGEveGY4NnZpZG1vZGVwcm90by5wYy5pbiBiL3hmODZ2aWRtb2RlcHJvdG8ucGMuaW4KK2luZGV4IGZjYjc0ZjIuLmVmMDYyYjMgMTAwNjQ0CistLS0gYS94Zjg2dmlkbW9kZXByb3RvLnBjLmluCisrKysgYi94Zjg2dmlkbW9kZXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogWEY4NlZpZE1vZGVQcm90bworZGlmZiAtLWdpdCBhL3hpbmVyYW1hcHJvdG8ucGMuaW4gYi94aW5lcmFtYXByb3RvLnBjLmluCitpbmRleCAxZmZkMzdkLi45MTcyZjFlIDEwMDY0NAorLS0tIGEveGluZXJhbWFwcm90by5wYy5pbgorKysrIGIveGluZXJhbWFwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhpbmVyYW1hUHJvdG8KK2RpZmYgLS1naXQgYS94cHJvdG8ucGMuaW4gYi94cHJvdG8ucGMuaW4KK2luZGV4IDhmZjJkM2QuLjg5OTMxNmEgMTAwNjQ0CistLS0gYS94cHJvdG8ucGMuaW4KKysrKyBiL3hwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgaW5jbHVkZXgxMWRpcj1AaW5jbHVkZWRpckAvWDExCisgIAorZGlmZiAtLWdpdCBhL3hwcm94eW1uZ3Byb3RvLnBjLmluIGIveHByb3h5bW5ncHJvdG8ucGMuaW4KK2luZGV4IDVjNmZhZDYuLjFhODFlMjggMTAwNjQ0CistLS0gYS94cHJveHltbmdwcm90by5wYy5pbgorKysrIGIveHByb3h5bW5ncHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBYUHJveHlNYW5hZ2VtZW50UHJvdG9jb2wKKy0tIAorMi4xMS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMTguNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMTguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWM2ZTg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAxOC40LmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWENhbGlicmF0ZTogVG91Y2hzY3JlZW4gY2FsaWJyYXRpb24gaGVhZGVycyIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBoZWFkZXJzIGFuZCBzcGVjaWZpY2F0aW9uIGRvY3VtZW50cyBkZWZpbmluZyBcCit0aGUgY29yZSBwcm90b2NvbCBhbmQgKG1hbnkpIGV4dGVuc2lvbnMgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCisKK0xJQ0VOU0UgPSAiTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy14MTFwcm90bzttZDU9YjllMDUxMTA3ZDU2Mjg5NjY3MzlhMGIyZTliMzI2NzYiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVJlbW92ZS1saWJkaXItc3BlY2lmaWNhdGlvbi5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjgxNTU3Y2E0N2VlNjZhNGU1NDU5MGZjZGFkZDI4MTE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlZTg4NWUwNTEyODk5ZWE1MjgwYzU5M2ZkYjI3MzViZWIxNjkzYWQxNzBjMjJlYmNjODQ0NDcwZWVjNDE1YTAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5ZWQ5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotRG9uJ3QgYWx3YXlzIGRlZmluZSBMT05HNjQgZm9yIEFNRDY0Ci0gICAgCi1YMzIgZGVmaW5lcyBfX2FtZDY0X18vYW1kNjQgd2l0aCAzMmJpdCBsb25nLiAgV2Ugc2hvdWxkIHNpbXBseSBjaGVjawotX19MUDY0X18gYmVmb3JlIGRlZmluaW5nIExPTkc2NCB3aXRob3V0IGNoZWNraW5nIF9fYW1kNjRfXy9hbWQ2NC4KLQotVGhpcyBmaXhlcyBjb21waWxhdGlvbiB3aXRoIHgzMiB0b29sY2hhaW4uCi0KLVJlY2VpdmVkIHRoaXMgcGF0Y2ggZnJvbSBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4gMjAxMS8xMi8xCi0KLUluZGV4OiB4cHJvdG8tNy4wLjMxL1htZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geHByb3RvLTcuMC4zMS5vcmlnL1htZC5oCi0rKysgeHByb3RvLTcuMC4zMS9YbWQuaAotQEAgLTYyLDcgKzYyLDYgQEAgU09GVFdBUkUuCi0gICAgICBkZWZpbmVkKF9faWE2NF9fKSB8fCBkZWZpbmVkKGlhNjQpIHx8IFwKLSAgICAgIGRlZmluZWQoX19zcGFyYzY0X18pIHx8IFwKLSAgICAgIGRlZmluZWQoX19zMzkweF9fKSB8fCBcCi0tICAgICBkZWZpbmVkKF9fYW1kNjRfXykgfHwgZGVmaW5lZChhbWQ2NCkgfHwgXAotICAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICMgIGlmICFkZWZpbmVkKF9fSUxQMzJfXykgLyogYW1kNjQteDMyIGlzIDMyYml0ICovCi0gIyAgIGRlZmluZSBMT05HNjQJCQkJLyogMzIvNjQtYml0IGFyY2hpdGVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG9fNy4wLjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG9fNy4wLjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWJjYzY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvXzcuMC4zMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWGxpYjogQyBMYW5ndWFnZSBYIGludGVyZmFjZSBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGJhc2ljIGhlYWRlcnMgZm9yIHRoZSBYIFdpbmRvdyBcCi1TeXN0ZW0uIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI5ZTA1MTEwN2Q1NjI4OTY2NzM5YTBiMmU5YjMyNjc2IgotCi1QRSA9ICIxIgotCi1TUkNfVVJJICs9ICJmaWxlOi8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWVuYWJsZS1zcGVjcz1ubyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE2NzkxZjdjYThjNTFhMjA2MDhhZjExNzAyZTUxMDgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2Zjk3NDdkYTBiZDNhOTVmODZiMTdmYjhkZDVlNzE3YzhmM2FiN2YwZWNlM2JhMWIyNDc4OTllYzFlZjc3NDciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvZ2NjbWFrZWRlcF8xLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC9nY2NtYWtlZGVwXzEuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTNhNjY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC9nY2NtYWtlZGVwXzEuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9ncmFtIHRvIGNyZWF0ZSBkZXBlbmRlbmNpZXMgaW4gbWFrZWZpbGVzIgotCi1ERVNDUklQVElPTiA9ICJUaGUgZ2NjbWFrZWRlcCBwcm9ncmFtIGNhbGxzICdnY2MgLU0nIHRvIG91dHB1dCBtYWtlZmlsZSBcCi1ydWxlcyBkZXNjcmliaW5nIHRoZSBkZXBlbmRlbmNpZXMgb2YgZWFjaCBzb3VyY2VmaWxlLCBzbyB0aGF0IG1ha2Uga25vd3MgXAotd2hpY2ggb2JqZWN0IGZpbGVzIG11c3QgYmUgcmVjb21waWxlZCB3aGVuIGEgZGVwZW5kZW5jeSBoYXMgY2hhbmdlZC4iCi0KLXJlcXVpcmUgeG9yZy11dGlsLWNvbW1vbi5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01ha2VmaWxlLmFtO2VuZGxpbmU9MjA7bWQ1PTIzYzI3NzM5NmQ2OTA0MTMyNDVlYmI4OWIxOGM1ZDRkIgotREVTQ1JJUFRJT04gPSAiY3JlYXRlIGRlcGVuZGVuY2llcyBpbiBtYWtlZmlsZXMgdXNpbmcgJ2djYyAtTSciCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIgotUkRFUEVORFNfJHtQTn0gPSAiZ2NjIgotCi1QUiA9ICJyMyIKLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMjdkZGI2MTMxZWI0YTU2ZmRmNjY0NGE2M2FkZTc4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOWUyZTdhNTkwZTI3Zjg0YjY3MDhhYjdhODFlNTQ2Mzk5Yjk0OWJmNjUyZmI5Yjk1MTkzZTBlNTQzZTZhNTQ4IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlzZWQgLWkgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsIiAke0R9JHtiaW5kaXJ9L2djY21ha2VkZXAKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC9tYWtlZGVwZW5kXzEuMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL21ha2VkZXBlbmRfMS4wLjUuYmIKaW5kZXggODRhOTY3YS4uNzI3YWI1NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL21ha2VkZXBlbmRfMS4wLjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL21ha2VkZXBlbmRfMS4wLjUuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIGNhbiByZWZlcmVuY2UgZmlsZXMgaGF2aW5nIG90aGVyICNpbmNsdWRlIGRpcmVjdGl2ZXMsIGFuZCBwYXJzaW5nIHdpbGwgXAogb2NjdXIgaW4gdGhlc2UgZmlsZXMgYXMgd2VsbC4iCiAKLURFUEVORFMgPSAieHByb3RvIHV0aWwtbWFjcm9zIgorREVQRU5EUyA9ICJ4b3JncHJvdG8gdXRpbC1tYWNyb3MiCiBQRSA9ICIxIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC91dGlsLW1hY3Jvc18xLjE5LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvdXRpbC1tYWNyb3NfMS4xOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzlkNzg3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC91dGlsLW1hY3Jvc18xLjE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIlggYXV0b3Rvb2xzIG1hY3JvcyIKLQotREVTQ1JJUFRJT04gPSAiTTQgYXV0b3Rvb2xzIG1hY3JvcyB1c2VkIGJ5IHZhcmlvdXMgWC5vcmcgcHJvZ3JhbXMuIgotCi1yZXF1aXJlIHhvcmctdXRpbC1jb21tb24uaW5jCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTk3MDUxMWZkZGQ0MzliMDdhNmJhNzg5ZDI4ZmY2NjIiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZjhhOGU2MTAwNTU2ZjdmMjhlNDY5ODA5ODA1ZGVlOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzJhZDBlNDFkMWUwYWJmNWVjYWZkMjk0NjBiZjFiOGQ0N2U1M2Q0YjdkM2FiZjFmNjZkMDJkYzU3NjU0N2I4IgotCi0jICR7UE59IGlzIGVtcHR5IHNvIHdlIG5lZWQgdG8gdHdlYWsgLWRldiBhbmQgLWRiZyBwYWNrYWdlIGRlcGVuZGVuY2llcwotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC91dGlsLW1hY3Jvc18xLjE5LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvdXRpbC1tYWNyb3NfMS4xOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODA1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvdXRpbC1tYWNyb3NfMS4xOS4yLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiWCBhdXRvdG9vbHMgbWFjcm9zIgorCitERVNDUklQVElPTiA9ICJNNCBhdXRvdG9vbHMgbWFjcm9zIHVzZWQgYnkgdmFyaW91cyBYLm9yZyBwcm9ncmFtcy4iCisKK3JlcXVpcmUgeG9yZy11dGlsLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xOTcwNTExZmRkZDQzOWIwN2E2YmE3ODlkMjhmZjY2MiIKKworUEUgPSAiMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjUwNTliMzI4ZmFjMDg2YjczM2ZmYWM2NjA3MTY0YzQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyMjVjNDVjM2RlNjBmYWY5NzE5NzlhNTVhNTUzNmYzNTYyYmFhNGI2ZjAyMjQ2YzIzZTk4YWMwYzA5YTc1YjciCisKKyMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgppbmRleCBmNGNkMTM5Li4wM2I5NGRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgpAQCAtMjYsNiArMjYsNyBAQAogICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgU2NyZWVuIgogICAgIERldmljZSAgICAgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCiAgICAgTW9uaXRvciAgICAgICAgIkdlbmVyaWMgTW9uaXRvciIKKyAgICBEZWZhdWx0RGVwdGggICAgMTYKICAgICBTdWJTZWN0aW9uICJEaXNwbGF5IgogICAgICAgICBNb2RlcyAgICAgIjY0MHg0ODAiCiAgICAgRW5kU3ViU2VjdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwppbmRleCBjZjIyODZjLi40ODlhNDI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwpAQCAtMTcsNyArMTcsNiBAQAogCiBYT1JHX1BOID0gInhvcmctc2VydmVyIgogU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL3hzZXJ2ZXIvJHtYT1JHX1BOfS0ke1BWfS50YXIuYnoyIgotU1JDX1VSSSArPSAiZmlsZTovL21hY3JvX3R3ZWFrLnBhdGNoIgogCiBTID0gIiR7V09SS0RJUn0vJHtYT1JHX1BOfS0ke1BWfSIKIApAQCAtMjYsNyArMjUsNyBAQAogaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKLVBST1RPX0RFUFMgPSAicmFuZHJwcm90byByZW5kZXJwcm90byBmaXhlc3Byb3RvIGRhbWFnZXByb3RvIHhleHRwcm90byB4cHJvdG8geGY4NmRnYXByb3RvIHhmODZtaXNjcHJvdG8geGY4NnZpZG1vZGVwcm90byBjb21wb3NpdGVwcm90byByZWNvcmRwcm90byByZXNvdXJjZXByb3RvIHZpZGVvcHJvdG8gc2NybnNhdmVycHJvdG8gIHhpbmVyYW1hcHJvdG8gZm9udHNwcm90byBrYnByb3RvIGlucHV0cHJvdG8gYmlncmVxc3Byb3RvIHhjbWlzY3Byb3RvIHByZXNlbnRwcm90byIKK1BST1RPX0RFUFMgPSAieG9yZ3Byb3RvIgogTElCX0RFUFMgPSAicGl4bWFuIGxpYnhmb250MiB4dHJhbnMgbGlieGF1IGxpYnhleHQgbGlieGRtY3AgbGliZHJtIGxpYnhrYmZpbGUgbGlicGNpYWNjZXNzIgogREVQRU5EUyA9ICIke1BST1RPX0RFUFN9ICR7TElCX0RFUFN9IGZvbnQtdXRpbCIKIApAQCAtMTIzLDIyICsxMjIsMjIgQEAKIFBBQ0tBR0VDT05GSUcgPz89ICJkcmkyIHVkZXYgJHtYT1JHX0NSWVBUT30gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJyR7T1BFTkdMX1BLR0NPTkZJR1N9JywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wgd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kIHN5c3RlbWQtbG9naW5kJywgJycsIGQpfSBcCiAiCiAKIFBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS1lbmFibGUtY29uZmlnLXVkZXYsLS1kaXNhYmxlLWNvbmZpZy11ZGV2LHVkZXYiCi1QQUNLQUdFQ09ORklHW2RyaV0gPSAiLS1lbmFibGUtZHJpLC0tZGlzYWJsZS1kcmksZ2xwcm90byB2aXJ0dWFsL21lc2EgeGY4NmRyaXByb3RvIgotUEFDS0FHRUNPTkZJR1tkcmkyXSA9ICItLWVuYWJsZS1kcmkyLC0tZGlzYWJsZS1kcmkyLGRyaTJwcm90byIKK1BBQ0tBR0VDT05GSUdbZHJpXSA9ICItLWVuYWJsZS1kcmksLS1kaXNhYmxlLWRyaSx4b3JncHJvdG8gdmlydHVhbC9tZXNhIgorUEFDS0FHRUNPTkZJR1tkcmkyXSA9ICItLWVuYWJsZS1kcmkyLC0tZGlzYWJsZS1kcmkyLHhvcmdwcm90byIKICMgRFJJMyByZXF1aXJlcyB4c2htZmVuY2UgdG8gYWxzbyBiZSBlbmFibGVkCi1QQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsLS1kaXNhYmxlLWRyaTMsZHJpM3Byb3RvIgotUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LGdscHJvdG8gdmlydHVhbC9saWJnbCB2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywtLWRpc2FibGUtZHJpMyx4b3JncHJvdG8iCitQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgseG9yZ3Byb3RvIHZpcnR1YWwvbGliZ2wgdmlydHVhbC9saWJ4MTEiCiBQQUNLQUdFQ09ORklHW2dsYW1vcl0gPSAiLS1lbmFibGUtZ2xhbW9yLC0tZGlzYWJsZS1nbGFtb3IsbGliZXBveHkgdmlydHVhbC9saWJnYm0sbGliZWdsIgogUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKIFBBQ0tBR0VDT05GSUdbeHNobWZlbmNlXSA9ICItLWVuYWJsZS14c2htZmVuY2UsLS1kaXNhYmxlLXhzaG1mZW5jZSxsaWJ4c2htZmVuY2UiCiBQQUNLQUdFQ09ORklHW3htbHRvXSA9ICItLXdpdGgteG1sdG8sIC0td2l0aG91dC14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKIFBBQ0tBR0VDT05GSUdbc3lzdGVtZC1sb2dpbmRdID0gIi0tZW5hYmxlLXN5c3RlbWQtbG9naW5kPXllcywtLWVuYWJsZS1zeXN0ZW1kLWxvZ2luZD1ubyxkYnVzLCIKIFBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQtZGFlbW9uLC0td2l0aG91dC1zeXN0ZW1kLWRhZW1vbixzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t4aW5lcmFtYV0gPSAiLS1lbmFibGUteGluZXJhbWEsLS1kaXNhYmxlLXhpbmVyYW1hLHhpbmVyYW1hcHJvdG8iCitQQUNLQUdFQ09ORklHW3hpbmVyYW1hXSA9ICItLWVuYWJsZS14aW5lcmFtYSwtLWRpc2FibGUteGluZXJhbWEseG9yZ3Byb3RvIgogUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUgd2F5bGFuZC1wcm90b2NvbHMgbGliZXBveHkiCiAKICMgWG9yZyByZXF1aXJlcyBhIFNIQTEgaW1wbGVtZW50YXRpb24sIHBpY2sgb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29uZmlnLWZpeC1OVUxMLXZhbHVlLWRldGVjdGlvbi1mb3ItSURfSU5QVVQtYmVpbmctdS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb25maWctZml4LU5VTEwtdmFsdWUtZGV0ZWN0aW9uLWZvci1JRF9JTlBVVC1iZWluZy11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjRkNWRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb25maWctZml4LU5VTEwtdmFsdWUtZGV0ZWN0aW9uLWZvci1JRF9JTlBVVC1iZWluZy11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhMzA5MzIzMzI4ZDlkNmUwYmY1ZDllYTFkNzU5MjBlNTNiOWJlZWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLURhdGU6IEZyaSwgNSBKYW4gMjAxOCAxMTo1ODo0MiArMTAwMAotU3ViamVjdDogW1BBVENIXSBjb25maWc6IGZpeCBOVUxMIHZhbHVlIGRldGVjdGlvbiBmb3IgSURfSU5QVVQgYmVpbmcgdW5zZXQKLQotRXJyb25lb3VzIGNvbmRpdGlvbiBjYXVzZWQgdXMgdG8ga2VlcCBnb2luZyB3aXRoIGFsbCBkZXZpY2VzIHRoYXQgZGlkbid0IGhhdmUKLUlEX0lOUFVUIHNldC4KLQotRml4ZXM6IDVhYWQ4MTQ0NWM4YzNkNgotQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDM4MgotUmV2aWV3ZWQtYnk6IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydAotaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE5NjA5MC8KLUFmZmVjdHM6IDwgMS4yMC4wCi1bWW9jdG8gIyAxMjg5OV0KLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzZXI4MDhAZ21haWwuY29tPgotCi0tLS0KLSBjb25maWcvdWRldi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlnL3VkZXYuYyBiL2NvbmZpZy91ZGV2LmMKLWluZGV4IGUxOThlODYwOS4uM2E3MzE4OWUyIDEwMDY0NAotLS0tIGEvY29uZmlnL3VkZXYuYwotKysrIGIvY29uZmlnL3VkZXYuYwotQEAgLTEzNSw3ICsxMzUsNyBAQCBkZXZpY2VfYWRkZWQoc3RydWN0IHVkZXZfZGV2aWNlICp1ZGV2X2RldmljZSkKLSAjZW5kaWYKLSAKLSAgICAgdmFsdWUgPSB1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUodWRldl9kZXZpY2UsICJJRF9JTlBVVCIpOwotLSAgICBpZiAodmFsdWUgJiYgIXN0cmNtcCh2YWx1ZSwgIjAiKSkgewotKyAgICBpZiAoIXZhbHVlIHx8ICFzdHJjbXAodmFsdWUsICIwIikpIHsKLSAgICAgICAgIExvZ01lc3NhZ2VWZXJiKFhfSU5GTywgMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29uZmlnL3VkZXY6IGlnbm9yaW5nIGRldmljZSAlcyB3aXRob3V0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBJRF9JTlBVVCBzZXRcbiIsIHBhdGgpOwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZWMzZWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLURpc2NvdmVyIG1vbm90b25pYyBjbG9jayB1c2luZyBjb21waWxlLXRpbWUgY2hlY2sKLQotbW9ub3RvbmljIGNsb2NrIGNoZWNrIGRvZXMgbm90IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtEb2VzIG5vdCB3b3JrIG9uIE9wZW5CU0RdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0KLQotT3JpZ2luYWwgcGF0Y2ggZm9sbG93czoKLQotV2hlbiB4b3JnLXhzZXJ2ZXIgaXMgYmVpbmcgY3Jvc3MtY29tcGlsZWQsIHRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkKLWZvciB1cyB0byBkZXRlY3Qgd2hldGhlciB0aGUgbW9ub3RvbmljIGNsb2NrIGlzIGF2YWlsYWJsZSBvbiB0aGUKLXRhcmdldCBzeXN0ZW0sIGJlY2F1c2Ugd2UgYXJlbid0IGFibGUgdG8gcnVuIGEgdGVzdCBwcm9ncmFtIG9uIHRoZSBob3N0Ci1zeXN0ZW0uIEN1cnJlbnRseSwgaW4gdGhpcyBzaXR1YXRpb24sIHdlIGRlZmF1bHQgdG8gbm90IHVzZSB0aGUKLW1vbm90b25pYyBjbG9jay4gT25lIHByb2JsZW0gd2l0aCB0aGlzIHNpdHVhdGlvbiBpcyB0aGF0IHRoZSB1c2VyIHdpbGwKLWJlIHRyZWF0ZWQgYXMgaWRsZSB3aGVuIHRoZSBkYXRlIGlzIHVwZGF0ZWQuCi0KLVRvIGZpeCB0aGlzIHNpdHVhdGlvbiwgd2Ugbm93IHVzZSBhIGNvbXBpbGUtdGltZSBjaGVjayB0byBkZXRlY3Qgd2hldGhlciB0aGUKLW1vbm90b25pYyBjbG9jayBpcyBhdmFpbGFibGUuIFRoaXMgY2hlY2sgY2FuIHJ1biBqdXN0IGZpbmUgd2hlbiB3ZSBhcmUKLWNyb3NzLWNvbXBpbGluZy4KLQotU2lnbmVkLW9mZi1ieTogRGF2aWQgSmFtZXMgPGRhdmlkamFtZXMgYXQgZ29vZ2xlLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDE3ICsrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGY3YWI0OGMuLjI2ZTg1Y2QgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNDgsMTkgKzEwNDgsMTYgQEAgaWYgISB0ZXN0ICJ4JGhhdmVfY2xvY2tfZ2V0dGltZSIgPSB4bm87IHRoZW4KLSAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfUE9TSVhfQ19TT1VSQ0U9MjAwMTEyTCIKLSAgICAgZmkKLSAKLS0gICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwotKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLSAjaW5jbHVkZSA8dGltZS5oPgotLQotLWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W1tdXSkgewotLSAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7Ci0tCi0tICAgIGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRwKSA9PSAwKQotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLStpbnQgbWFpbigpIHsKLSsjaWYgIShkZWZpbmVkKF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0spICYmIF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0sgPj0gMCAmJiBkZWZpbmVkKENMT0NLX01PTk9UT05JQykpCi0rICAgICAgICAjZXJyb3IgTm8gbW9ub3RvbmljIGNsb2NrCi0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0gfQotLSAgICBdKV0sIFtNT05PVE9OSUNfQ0xPQ0s9eWVzXSwgW01PTk9UT05JQ19DTE9DSz1ub10sCi0tICAgICAgIFtNT05PVE9OSUNfQ0xPQ0s9ImNyb3NzIGNvbXBpbGluZyJdKQotK11dKV0sW01PTk9UT05JQ19DTE9DSz15ZXNdLCBbTU9OT1RPTklDX0NMT0NLPW5vXSkKLSAKLSAgICAgTElCUz0iJExJQlNfU0FWRSIKLSAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHU19TQVZFIgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDMtUmVtb3ZlLWNoZWNrLWZvci11c2VTSUdJTy1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDMtUmVtb3ZlLWNoZWNrLWZvci11c2VTSUdJTy1vcHRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZWQ2Y2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAzLVJlbW92ZS1jaGVjay1mb3ItdXNlU0lHSU8tb3B0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBjZjQwN2IxNmNkNjVhZDZlMjZhOWM4ZTU5ODRlMTYzNDA5YTVjMGY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhYmh1IFN1bmRhcmFyYWogPHByYWJodS5zdW5kYXJhcmFqQG54cC5jb20+Ci1EYXRlOiBNb24sIDMwIEphbiAyMDE3IDE2OjMyOjA2IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBjaGVjayBmb3IgdXNlU0lHSU8gb3B0aW9uCi0KLUNvbW1pdCA2YTVhNGU2MDM3M2MxMzg2YjMxMWIyYThiYjY2NmMzMmQ2OGE5ZDk5IHJlbW92ZXMgdGhlIGNvbmZpZ3VyZSBvZiB1c2VTSUdJTwotb3B0aW9uLgotCi1BcyB0aGUgeGZyZWU4NiBTSUdJTyBzdXBwb3J0IGlzIHJld29ya2VkIHRvIHVzZSBpbnRlcm5hbCB2ZXJzaW9ucyBvZiBPc0Jsb2NrU0lHSU8KLWFuZCBPc1JlbGVhc2VTSUdJTy4KLQotTm8gbG9uZ2VyIHRoZSBjaGVjayBmb3IgdXNlU0lHSU8gaXMgbmVlZGVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQcmFiaHUgU3VuZGFyYXJhaiA8cHJhYmh1LnN1bmRhcmFyYWpAbnhwLmNvbT4KLS0tLQotIGh3L3hmcmVlODYvb3Mtc3VwcG9ydC9zaGFyZWQvc2lnaW8uYyB8IDYgLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody94ZnJlZTg2L29zLXN1cHBvcnQvc2hhcmVkL3NpZ2lvLmMgYi9ody94ZnJlZTg2L29zLXN1cHBvcnQvc2hhcmVkL3NpZ2lvLmMKLWluZGV4IDg4NGE3MWMuLmJlNzY0OTggMTAwNjQ0Ci0tLS0gYS9ody94ZnJlZTg2L29zLXN1cHBvcnQvc2hhcmVkL3NpZ2lvLmMKLSsrKyBiL2h3L3hmcmVlODYvb3Mtc3VwcG9ydC9zaGFyZWQvc2lnaW8uYwotQEAgLTE4NSw5ICsxODUsNiBAQCB4Zjg2SW5zdGFsbFNJR0lPSGFuZGxlcihpbnQgZmQsIHZvaWQgKCpmKSAoaW50LCB2b2lkICopLCB2b2lkICpjbG9zdXJlKQotICAgICBpbnQgaTsKLSAgICAgaW50IGluc3RhbGxlZCA9IEZBTFNFOwotIAotLSAgICBpZiAoIXhmODZJbmZvLnVzZVNJR0lPKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tCi0gICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfRlVOQ1M7IGkrKykgewotICAgICAgICAgaWYgKCF4Zjg2U2lnSU9GdW5jc1tpXS5mKSB7Ci0gICAgICAgICAgICAgaWYgKHhmODZJc1BpcGUoZmQpKQotQEAgLTI1Niw5ICsyNTMsNiBAQCB4Zjg2UmVtb3ZlU0lHSU9IYW5kbGVyKGludCBmZCkKLSAgICAgaW50IG1heDsKLSAgICAgaW50IHJldDsKLSAKLS0gICAgaWYgKCF4Zjg2SW5mby51c2VTSUdJTykKLS0gICAgICAgIHJldHVybiAwOwotLQotICAgICBtYXggPSAwOwotICAgICByZXQgPSAwOwotICAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0ZVTkNTOyBpKyspIHsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAzLW1vZGVzZXR0aW5nLUZpeC0xNi1iaXQtZGVwdGgtYnBwLW1vZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI0Mzc2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNTAyOGVmNDZmZjRhYjA5MzAyMjRiNzEwMjRhNzM0OWIwNTYxMGQ0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBBZ25lciA8c3RlZmFuQGFnbmVyLmNoPgotRGF0ZTogVGh1LCAyMiBEZWMgMjAxNiAxNTo0MTowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBtb2Rlc2V0dGluZzogRml4IDE2IGJpdCBkZXB0aC9icHAgbW9kZQotCi1XaGVuIHNldHRpbmcgRGVmYXVsdERlcHRoIHRvIDE2IGluIHRoZSBTY3JlZW4gc2VjdGlvbiwgdGhlIGN1cnJlbnQKLWNvZGUgcmVxdWVzdHMgYSAzMiBicHAgZnJhbWVidWZmZXIsIGhvd2V2ZXIgdGhlIFgtU2VydmVyIHNlZW1zIHRvCi1hc3N1bWVzIDE2IGJwcC4KLQotRml4ZXMgY29tbWl0IDIxMjE3ZDAyMTY4ZCAoIm1vZGVzZXR0aW5nOiBJbXBsZW1lbnQgMzItPjI0IGJwcAotY29udmVyc2lvbiBpbiBzaGFkb3cgdXBkYXRlIikKLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEFnbmVyIDxzdGVmYW5AYWduZXIuY2g+Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQotCi1bMV0gaHR0cHM6Ly9saXN0cy54Lm9yZy9hcmNoaXZlcy94b3JnLWRldmVsLzIwMTYtRGVjZW1iZXIvMDUyMTEzLmh0bWwKLS0tLQotIGh3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcml2ZXIuYyB8IDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2h3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcml2ZXIuYyBiL2h3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcml2ZXIuYwotaW5kZXggZDcwMzBlNS4uNjQ3YWQ4MyAxMDA2NDQKLS0tLSBhL2h3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcml2ZXIuYwotKysrIGIvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RyaXZlci5jCi1AQCAtOTMwLDcgKzkzMCw3IEBAIFByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgIlVzaW5nIDI0YnBwIGh3IGZyb250IGJ1ZmZlciB3aXRoIDMyYnBwIHNoYWRvd1xuIik7Ci0gICAgICAgICBkZWZhdWx0YnBwID0gMzI7Ci0gICAgIH0gZWxzZSB7Ci0tICAgICAgICBtcy0+ZHJtbW9kZS5rYnBwID0gZGVmYXVsdGJwcDsKLSsgICAgICAgIG1zLT5kcm1tb2RlLmticHAgPSAwOwotICAgICB9Ci0gICAgIGJwcGZsYWdzID0gUHJlZmVyQ29udmVydDI0dG8zMiB8IFN1cHBvcnRDb252ZXJ0MjR0bzMyIHwgU3VwcG9ydDMyYnBwRmI7Ci0gCi1AQCAtOTUwLDYgKzk1MCw4IEBAIFByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgfQotICAgICB4Zjg2UHJpbnREZXB0aEJwcChwU2Nybik7Ci0rICAgIGlmICghbXMtPmRybW1vZGUua2JwcCkKLSsgICAgICAgIG1zLT5kcm1tb2RlLmticHAgPSBwU2Nybi0+Yml0c1BlclBpeGVsOwotIAotICAgICAvKiBQcm9jZXNzIHRoZSBvcHRpb25zICovCi0gICAgIHhmODZDb2xsZWN0T3B0aW9ucyhwU2NybiwgTlVMTCk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTgtMTQ2NjUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE4LTE0NjY1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNjIzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE4LTE0NjY1LnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0luY29ycmVjdCBjb21tYW5kLWxpbmUgcGFyYW1ldGVyIHZhbGlkYXRpb24gaW4gdGhlIFhvcmcgWCBzZXJ2ZXIgY2FuIGxlYWQgdG8KK3ByaXZpbGVnZSBlbGV2YXRpb24gYW5kL29yIGFyYml0cmFyeSBmaWxlcyBvdmVyd3JpdGUsIHdoZW4gdGhlIFggc2VydmVyIGlzCitydW5uaW5nIHdpdGggZWxldmF0ZWQgcHJpdmlsZWdlcyAoaWUgd2hlbiBYb3JnIGlzIGluc3RhbGxlZCB3aXRoIHRoZSBzZXR1aWQgYml0CitzZXQgYW5kIHN0YXJ0ZWQgYnkgYSBub24tcm9vdCB1c2VyKS4gVGhlIC1tb2R1bGVwYXRoIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvCitzcGVjaWZ5IGFuIGluc2VjdXJlIHBhdGggdG8gbW9kdWxlcyB0aGF0IGFyZSBnb2luZyB0byBiZSBsb2FkZWQgaW4gdGhlIFggc2VydmVyLAorYWxsb3dpbmcgdG8gZXhlY3V0ZSB1bnByaXZpbGVnZWQgY29kZSBpbiB0aGUgcHJpdmlsZWdlZCBwcm9jZXNzLiBUaGUgLWxvZ2ZpbGUKK2FyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIG92ZXJ3cml0ZSBhcmJpdHJhcnkgZmlsZXMgaW4gdGhlIGZpbGUgc3lzdGVtLCBkdWUgdG8KK2luY29ycmVjdCBjaGVja3MgaW4gdGhlIHBhcnNpbmcgb2YgdGhlIG9wdGlvbi4KKworQ1ZFOiBDVkUtMjAxOC0xNDY2NQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA1MGMwY2Y4ODVhNmU5MWMwZWE3MWZiNDlmYThmMWI3Yzg2ZmUzMzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dGhpZXUgSGVycmIgPG1hdHRoaWV1QGhlcnJiLmV1PgorRGF0ZTogVHVlLCAyMyBPY3QgMjAxOCAyMToyOTowOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIC1sb2dmaWxlIGFuZCAtbW9kdWxlcGF0aCB3aGVuIHJ1bm5pbmcgd2l0aCBlbGV2YXRlZAorIHByaXZpbGVnZXMKKworQ291bGQgY2F1c2UgcHJpdmlsZWdlIGVsZXZhdGlvbiBhbmQvb3IgYXJiaXRyYXJ5IGZpbGVzIG92ZXJ3cml0ZSwgd2hlbgordGhlIFggc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCBlbGV2YXRlZCBwcml2aWxlZ2VzIChpZSB3aGVuIFhvcmcgaXMKK2luc3RhbGxlZCB3aXRoIHRoZSBzZXR1aWQgYml0IHNldCBhbmQgc3RhcnRlZCBieSBhIG5vbi1yb290IHVzZXIpLgorCitDVkUtMjAxOC0xNDY2NQorCitJc3N1ZSByZXBvcnRlZCBieSBOYXJlbmRyYSBTaGluZGUgYW5kIFJlZCBIYXQuCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IEhlcnJiIDxtYXR0aGlldUBoZXJyYi5ldT4KK1Jldmlld2VkLWJ5OiBBbGFuIENvb3BlcnNtaXRoIDxhbGFuLmNvb3BlcnNtaXRoQG9yYWNsZS5jb20+CitSZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KK1Jldmlld2VkLWJ5OiBBZGFtIEphY2tzb24gPGFqYXhAcmVkaGF0LmNvbT4KKy0tLQorIGh3L3hmcmVlODYvY29tbW9uL3hmODZJbml0LmMgfCA4ICsrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L3hmcmVlODYvY29tbW9uL3hmODZJbml0LmMgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2SW5pdC5jCitpbmRleCA2YzI1ZWRhNzMuLjBmNTdlZmE4NiAxMDA2NDQKKy0tLSBhL2h3L3hmcmVlODYvY29tbW9uL3hmODZJbml0LmMKKysrKyBiL2h3L3hmcmVlODYvY29tbW9uL3hmODZJbml0LmMKK0BAIC05MzUsMTQgKzkzNSwxOCBAQCBkZHhQcm9jZXNzQXJndW1lbnQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBpbnQgaSkKKyAgICAgLyogRmlyc3QgdGhlIG9wdGlvbnMgdGhhdCBhcmUgbm90IGFsbG93ZWQgd2l0aCBlbGV2YXRlZCBwcml2aWxlZ2VzICovCisgICAgIGlmICghc3RyY21wKGFyZ3ZbaV0sICItbW9kdWxlcGF0aCIpKSB7CisgICAgICAgICBDSEVDS19GT1JfUkVRVUlSRURfQVJHVU1FTlQoKTsKKy0gICAgICAgIHhmODZDaGVja1ByaXZzKGFyZ3ZbaV0sIGFyZ3ZbaSArIDFdKTsKKysgICAgICAgIGlmICh4Zjg2UHJpdnNFbGV2YXRlZCgpKQorKyAgICAgICAgICAgICAgRmF0YWxFcnJvcigiXG5JbnZhbGlkIGFyZ3VtZW50IC1tb2R1bGVwYXRoICIKKysgICAgICAgICAgICAgICAgIndpdGggZWxldmF0ZWQgcHJpdmlsZWdlc1xuIik7CisgICAgICAgICB4Zjg2TW9kdWxlUGF0aCA9IGFyZ3ZbaSArIDFdOworICAgICAgICAgeGY4Nk1vZFBhdGhGcm9tID0gWF9DTURMSU5FOworICAgICAgICAgcmV0dXJuIDI7CisgICAgIH0KKyAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1sb2dmaWxlIikpIHsKKyAgICAgICAgIENIRUNLX0ZPUl9SRVFVSVJFRF9BUkdVTUVOVCgpOworLSAgICAgICAgeGY4NkNoZWNrUHJpdnMoYXJndltpXSwgYXJndltpICsgMV0pOworKyAgICAgICAgaWYgKHhmODZQcml2c0VsZXZhdGVkKCkpCisrICAgICAgICAgICAgICBGYXRhbEVycm9yKCJcbkludmFsaWQgYXJndW1lbnQgLWxvZ2ZpbGUgIgorKyAgICAgICAgICAgICAgICAid2l0aCBlbGV2YXRlZCBwcml2aWxlZ2VzXG4iKTsKKyAgICAgICAgIHhmODZMb2dGaWxlID0gYXJndltpICsgMV07CisgICAgICAgICB4Zjg2TG9nRmlsZUZyb20gPSBYX0NNRExJTkU7CisgICAgICAgICByZXR1cm4gMjsKKy0tIAorMi4xOC4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9tYWNyb190d2Vhay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM2ZTRlNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhpcyBpcyB0aGUgcmV2aXNlZCB2ZXJzaW9uIG9mIGZpbGVzL21hY3JvX3R3ZWFrLnBhdGNoIGZvcgoteG9yZy1zZXJ2ZXIgMS44Ljk5LjkwNCBhbmQgbmV3ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgotCi1JbmRleDogeG9yZy1zZXJ2ZXItMS4xOS42L3hvcmctc2VydmVyLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geG9yZy1zZXJ2ZXItMS4xOS42Lm9yaWcveG9yZy1zZXJ2ZXIubTQKLSsrKyB4b3JnLXNlcnZlci0xLjE5LjYveG9yZy1zZXJ2ZXIubTQKLUBAIC0yOCwxMCArMjgsMTIgQEAgZG5sCi0gIyBDaGVja3MgZm9yIHRoZSBNQUNSTyBkZWZpbmUgaW4geG9yZy1zZXJ2ZXIuaCAoZnJvbSB0aGUgc2RrKS4gIElmIGl0Ci0gIyBpcyBkZWZpbmVkLCB0aGVuIGFkZCB0aGUgZ2l2ZW4gUFJPVE8gdG8gJFJFUVVJUkVEX01PRFVMRVMuCi0gCi0rbTRfcGF0dGVybl9hbGxvdyhQS0dfQ09ORklHX1NZU1JPT1RfRElSKQotKwotIEFDX0RFRlVOKFtYT1JHX0RSSVZFUl9DSEVDS19FWFRdLFsKLSAJQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCi0gCVNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotLQlDRkxBR1M9IiRDRkxBR1MgLUlgJFBLR19DT05GSUcgLS12YXJpYWJsZT1zZGtkaXIgeG9yZy1zZXJ2ZXJgIgotKwlDRkxBR1M9IiRDRkxBR1MgLUkkUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXNka2RpciB4b3JnLXNlcnZlcmAiCi0gCUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSAjaW5jbHVkZSAieG9yZy1zZXJ2ZXIuaCIKLSAjaWYgIWRlZmluZWQgJDEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvcGtnY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVmOWZhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL21lcmdlX3JlcXVlc3RzLzIyXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA1ZjY1YTYyNDZmZTc1Mjc2NDA0NWRkMWUzODkxMmYxZGNjZWM3MWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFRodSwgMjAgU2VwIDIwMTggMjA6MTI6MjQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0geG9yZy1zZXJ2ZXIubTQ6IGp1c3QgYWxsIGNmbGFncyBpbnN0ZWFkIG9mIGp1c3Qgc2RrZGlyCisKK0luc3RlYWQgb2YgZmV0Y2hpbmcganVzdCB0aGUgc2RrZGlyIHZhcmlhYmxlIG9mIHhvcmctc2VydmVyIHVzaW5nIHBrZy1jb25maWcsCitzaW1wbHkgZ2V0IGFsbCBvZiB0aGUgQ0ZMQUdTLiAgQXNpZGUgZnJvbSBjb21wbGV0ZW5lc3MsIHRoaXMgaGVscHMgYnVpbGRzIGluCitzeXNyb290cyBhcyBwa2ctY29uZmlnIGtub3dzIHdoYXQgdG8gZG8gd2l0aCAtLWNmbGFncyBidXQgZG9lc24ndCByZW1hcAorYXJiaXRyYXJ5IHZhcmlhYmxlcy4KKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKy0tLQorIHhvcmctc2VydmVyLm00IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEveG9yZy1zZXJ2ZXIubTQgYi94b3JnLXNlcnZlci5tNAoraW5kZXggMTgyNTViOTFhLi4xOTViZGE1ZDggMTAwNjQ0CistLS0gYS94b3JnLXNlcnZlci5tNAorKysrIGIveG9yZy1zZXJ2ZXIubTQKK0BAIC0zMSw3ICszMSw3IEBAIGRubAorIEFDX0RFRlVOKFtYT1JHX0RSSVZFUl9DSEVDS19FWFRdLFsKKyAJQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgCVNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgorLQlDRkxBR1M9IiRDRkxBR1MgLUlgJFBLR19DT05GSUcgLS12YXJpYWJsZT1zZGtkaXIgeG9yZy1zZXJ2ZXJgIgorKwlDRkxBR1M9IiRDRkxBR1MgYCRQS0dfQ09ORklHIC0tY2ZsYWdzIHhvcmctc2VydmVyYCIKKyAJQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworICNpbmNsdWRlICJ4b3JnLXNlcnZlci5oIgorICNpZiAhZGVmaW5lZCAkMQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U4YTk1NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1vZGVzZXR0aW5nLUZpeC0xNi1iaXQtZGVwdGgtYnBwLW1vZGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtUmVtb3ZlLWNoZWNrLWZvci11c2VTSUdJTy1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctZml4LU5VTEwtdmFsdWUtZGV0ZWN0aW9uLWZvci1JRF9JTlBVVC1iZWluZy11LnBhdGNoIFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzZTQ3Nzc3ZmYwMzRhMzMxYWVkMjMyMmIwNzg2OTRhOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzMyNTAyZjFkYjAwMGNmMzZhMzc2Y2QwYzAxMGZmZGJmMzJlY2RkN2YxZmEwOGJhN2Y1YmRmOTYwMWNjMTk3IgotCi0jIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCi0jIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgotCi1SUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZDJlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuMS5iYgpAQCAtMCwwICsxLDMxIEBACityZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL211c2wtYXJtLWluYi1vdXRiLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTQ2NjUucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImU1MjU4NDZkMWQwYWY1NzMyYmE4MzVmMmUyZWMwNjZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5Yzk5ZmU4NmZlNzViODE2NGM2NTY3YmZjNmU5ODJhZWNjMmU0YTUxZTZmYmFjMWI4NDJkNWQwMDU0OWU5MTgiCisKKyMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KKyMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCisKK1JSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCmluZGV4IDYwNTI2NTAuLmVkNDMyN2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgpAQCAtMTEsNiArMTEsOSBAQAogZmlsZTovLzAwMDEtRGlzYWJsZS1pbnN0YWxsaW5nLWhlYWRlci1maWxlLXByb3ZpZGVkLWJ5LWFub3RoZXItcC5wYXRjaCBcCiBmaWxlOi8vMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTMucGF0Y2ggXAogZmlsZTovLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjE3LnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLXJlZmFjdG9yaW5nLXNwbGl0LWJpZy1mdW5jdGlvbi10by1zaW1wbGlmeS1tYWludGFpbmEucGF0Y2ggXAorZmlsZTovLzAwMDItcmVmYWN0b3JpbmctcmVsb2NhdGUtY29kZS10by1zaW1wbGlmeS1sYXRlci1wYXRjaGVzLnBhdGNoIFwKK2ZpbGU6Ly8wMDAzLWNvbnZlcnQtdG8tbmV3LUFFQUQtaW50ZXJmYWNlLWluLWtlcm5lbHMtdjQuMi5wYXRjaCBcCiAiCiAKIEVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IiBQUkVGSVg9IiR7RH0iJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiCmluZGV4IDlhZmIzZGUuLjYxN2RiNmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LXRlc3RzXzEuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIKQEAgLTIsMTAgKzIsMTEgQEAKIAogU1VNTUFSWSA9ICJBIHRlc3Qgc3VpdGUgZm9yIC9kZXYvY3J5cHRvIGRldmljZSBkcml2ZXIiCiAKLURFUEVORFMgKz0gIm9wZW5zc2wxMCIKK0RFUEVORFMgKz0gIm9wZW5zc2wiCiAKIFNSQ19VUkkgKz0gIiBcCiBmaWxlOi8vMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLVBvcnQtdGVzdHMtdG8tb3BlbnNzbC0xLjEucGF0Y2ggXAogIgogCiBFWFRSQV9PRU1BS0U9J0tFUk5FTF9ESVI9IiR7U1RBR0lOR19FWEVDUFJFRklYRElSfSIgUFJFRklYPSIke0R9IicKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1Qb3J0LXRlc3RzLXRvLW9wZW5zc2wtMS4xLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLVBvcnQtdGVzdHMtdG8tb3BlbnNzbC0xLjEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2OTEyNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1Qb3J0LXRlc3RzLXRvLW9wZW5zc2wtMS4xLnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitGcm9tIDJmZTRiZGViOGNkZDBiMGY0NmQ5Y2FlZDgwNzgxMjg1NWQ1MWVhNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjggTWFyIDIwMTggMjA6MTE6MDUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUG9ydCB0ZXN0cyB0byBvcGVuc3NsIDEuMQorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC9wdWxsLzM2XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIHRlc3RzL29wZW5zc2xfd3JhcHBlci5jIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL29wZW5zc2xfd3JhcHBlci5jIGIvdGVzdHMvb3BlbnNzbF93cmFwcGVyLmMKK2luZGV4IDAzOGM1OGYuLmRlYTI0OTYgMTAwNjQ0CistLS0gYS90ZXN0cy9vcGVuc3NsX3dyYXBwZXIuYworKysrIGIvdGVzdHMvb3BlbnNzbF93cmFwcGVyLmMKK0BAIC00LDYgKzQsNyBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Nsdi5oPgorIAorIC8vI2RlZmluZSBERUJVRworIAorQEAgLTIzLDEwICsyNCwxNyBAQCBlbnVtIGN0eF90eXBlIHsKKyAJY3R4X3R5cGVfbWQsCisgfTsKKyAKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTAorK3VuaW9uIG9wZW5zc2xfY3R4IHsKKysJSE1BQ19DVFggKmhtYWM7CisrCUVWUF9NRF9DVFggKm1kOworK307CisrI2Vsc2UKKyB1bmlvbiBvcGVuc3NsX2N0eCB7CisgCUhNQUNfQ1RYIGhtYWM7CisgCUVWUF9NRF9DVFggbWQ7CisgfTsKKysjZW5kaWYKKyAKKyBzdHJ1Y3QgY3R4X21hcHBpbmcgeworIAlfX3UzMiBzZXM7CitAQCAtNjMsNiArNzEsMTYgQEAgc3RhdGljIHZvaWQgcmVtb3ZlX21hcHBpbmcoX191MzIgc2VzKQorIAlzd2l0Y2ggKG1hcHBpbmctPnR5cGUpIHsKKyAJY2FzZSBjdHhfdHlwZV9ub25lOgorIAkJYnJlYWs7CisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwKKysJY2FzZSBjdHhfdHlwZV9obWFjOgorKwkJZGJncCgiJXM6IGNhbGxpbmcgSE1BQ19DVFhfZnJlZVxuIiwgX19mdW5jX18pOworKwkJSE1BQ19DVFhfZnJlZShtYXBwaW5nLT5jdHguaG1hYyk7CisrCQlicmVhazsKKysJY2FzZSBjdHhfdHlwZV9tZDoKKysJCWRiZ3AoIiVzOiBjYWxsaW5nIEVWUF9NRF9DVFhfZnJlZVxuIiwgX19mdW5jX18pOworKwkJRVZQX01EX0NUWF9mcmVlKG1hcHBpbmctPmN0eC5tZCk7CisrCQlicmVhazsKKysjZWxzZQorIAljYXNlIGN0eF90eXBlX2htYWM6CisgCQlkYmdwKCIlczogY2FsbGluZyBITUFDX0NUWF9jbGVhbnVwXG4iLCBfX2Z1bmNfXyk7CisgCQlITUFDX0NUWF9jbGVhbnVwKCZtYXBwaW5nLT5jdHguaG1hYyk7CitAQCAtNzEsNiArODksNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVfbWFwcGluZyhfX3UzMiBzZXMpCisgCQlkYmdwKCIlczogY2FsbGluZyBFVlBfTURfQ1RYX2NsZWFudXBcbiIsIF9fZnVuY19fKTsKKyAJCUVWUF9NRF9DVFhfY2xlYW51cCgmbWFwcGluZy0+Y3R4Lm1kKTsKKyAJCWJyZWFrOworKyNlbmRpZgorIAl9CisgCW1lbXNldChtYXBwaW5nLCAwLCBzaXplb2YoKm1hcHBpbmcpKTsKKyB9CitAQCAtMTI3LDEwICsxNDYsMTcgQEAgc3RhdGljIGludCBvcGVuc3NsX2htYWMoc3RydWN0IHNlc3Npb25fb3AgKnNlc3MsIHN0cnVjdCBjcnlwdF9vcCAqY29wKQorIAorIAkJbWFwcGluZy0+c2VzID0gc2Vzcy0+c2VzOworIAkJbWFwcGluZy0+dHlwZSA9IGN0eF90eXBlX2htYWM7CisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwKKysJCWN0eCA9IG1hcHBpbmctPmN0eC5obWFjOworKworKwkJZGJncCgiY2FsbGluZyBITUFDX0NUWF9uZXciKTsKKysJCWN0eCA9IEhNQUNfQ1RYX25ldygpOworKyNlbHNlCisgCQljdHggPSAmbWFwcGluZy0+Y3R4LmhtYWM7CisgCisgCQlkYmdwKCJjYWxsaW5nIEhNQUNfQ1RYX2luaXQiKTsKKyAJCUhNQUNfQ1RYX2luaXQoY3R4KTsKKysjZW5kaWYKKyAJCWRiZ3AoImNhbGxpbmcgSE1BQ19Jbml0X2V4Iik7CisgCQlpZiAoIUhNQUNfSW5pdF9leChjdHgsIHNlc3MtPm1hY2tleSwgc2Vzcy0+bWFja2V5bGVuLAorIAkJCQlzZXNzX3RvX2V2cF9tZChzZXNzKSwgTlVMTCkpIHsKK0BAIC0xNzIsMTAgKzE5OCwxNyBAQCBzdGF0aWMgaW50IG9wZW5zc2xfbWQoc3RydWN0IHNlc3Npb25fb3AgKnNlc3MsIHN0cnVjdCBjcnlwdF9vcCAqY29wKQorIAorIAkJbWFwcGluZy0+c2VzID0gc2Vzcy0+c2VzOworIAkJbWFwcGluZy0+dHlwZSA9IGN0eF90eXBlX21kOworKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMDBMCisrCQljdHggPSBtYXBwaW5nLT5jdHgubWQ7CisrCisrCQlkYmdwKCJjYWxsaW5nIEVWUF9NRF9DVFhfbmV3Iik7CisrCQljdHggPSBFVlBfTURfQ1RYX25ldygpOworKyNlbHNlCisgCQljdHggPSAmbWFwcGluZy0+Y3R4Lm1kOworIAorIAkJZGJncCgiY2FsbGluZyBFVlBfTURfQ1RYX2luaXQiKTsKKyAJCUVWUF9NRF9DVFhfaW5pdChjdHgpOworKyNlbmRpZgorIAkJZGJncCgiY2FsbGluZyBFVlBfRGlnZXN0SW5pdCIpOworIAkJRVZQX0RpZ2VzdEluaXQoY3R4LCBzZXNzX3RvX2V2cF9tZChzZXNzKSk7CisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1yZWZhY3RvcmluZy1zcGxpdC1iaWctZnVuY3Rpb24tdG8tc2ltcGxpZnktbWFpbnRhaW5hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLXJlZmFjdG9yaW5nLXNwbGl0LWJpZy1mdW5jdGlvbi10by1zaW1wbGlmeS1tYWludGFpbmEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1N2I1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1yZWZhY3RvcmluZy1zcGxpdC1iaWctZnVuY3Rpb24tdG8tc2ltcGxpZnktbWFpbnRhaW5hLnBhdGNoCkBAIC0wLDAgKzEsMjUwIEBACitGcm9tIDIwZGNmMDcxYmMzMDc2ZWU3ZGI5ZDYwM2NmYmU2YTA2ZTg2YzdkNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgorRGF0ZTogVGh1LCA0IE1heSAyMDE3IDE1OjA2OjIwICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSByZWZhY3RvcmluZzogc3BsaXQgYmlnIGZ1bmN0aW9uIHRvIHNpbXBsaWZ5IG1haW50YWluYW5jZQorCitUaGUgc2V0dXAgb2YgYXV0aF9idWYgaW4gdGxzIGFuZCBhZWFkIGlzIG5vdyBkdXBsaWNhdGVkIGJ1dCB0aGlzCitpcyB0ZW1wb3JhcnkgYW5kIGFsbG93cyBuZWNlc3NhcnkgY29ycmVjdGlvbnMgZm9yIHRoZSBhZWFkIGNhc2UKK3dpdGggdjQuMisga2VybmVscy4KKworU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitDb21taXQgSUQ6IDIwZGNmMDcxYmMzMDc2ZWU3ZGI5ZDYwM2MKKworU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGF1dGhlbmMuYyB8IDE5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hdXRoZW5jLmMgYi9hdXRoZW5jLmMKK2luZGV4IDFiZDczNzcuLjI4ZWIwZjkgMTAwNjQ0CistLS0gYS9hdXRoZW5jLmMKKysrKyBiL2F1dGhlbmMuYworQEAgLTYwOSw5NiArNjA5LDE1MSBAQCBhdXRoX25fY3J5cHQoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dGhfb3AgKmtjYW9wLAorIAlyZXR1cm4gMDsKKyB9CisgCistLyogVGhpcyBpcyB0aGUgbWFpbiBjcnlwdG8gZnVuY3Rpb24gLSB6ZXJvLWNvcHkgZWRpdGlvbiAqLworLXN0YXRpYyBpbnQKKy1fX2NyeXB0b19hdXRoX3J1bl96YyhzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0aF9vcCAqa2Nhb3ApCisrc3RhdGljIGludCBjcnlwdG9fYXV0aF96Y19zcnRwKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXRoX29wICprY2FvcCkKKyB7CistCXN0cnVjdCBzY2F0dGVybGlzdCAqZHN0X3NnLCAqYXV0aF9zZywgKnNyY19zZzsKKysJc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3Rfc2csICphdXRoX3NnOworIAlzdHJ1Y3QgY3J5cHRfYXV0aF9vcCAqY2FvcCA9ICZrY2FvcC0+Y2FvcDsKKy0JaW50IHJldCA9IDA7CisrCWludCByZXQ7CisgCistCWlmIChjYW9wLT5mbGFncyAmIENPUF9GTEFHX0FFQURfU1JUUF9UWVBFKSB7CistCQlpZiAodW5saWtlbHkoc2VzX3B0ci0+Y2RhdGEuaW5pdCAhPSAwICYmCistCQkgICAgICAgICAgICAgKHNlc19wdHItPmNkYXRhLnN0cmVhbSA9PSAwIHx8CistCQkJICAgICAgc2VzX3B0ci0+Y2RhdGEuYWVhZCAhPSAwKSkpIHsKKy0JCQlkZXJyKDAsICJPbmx5IHN0cmVhbSBtb2RlcyBhcmUgYWxsb3dlZCBpbiBTUlRQIG1vZGUgKGJ1dCBub3QgQUVBRCkiKTsKKy0JCQlyZXR1cm4gLUVJTlZBTDsKKy0JCX0KKysJaWYgKHVubGlrZWx5KHNlc19wdHItPmNkYXRhLmluaXQgIT0gMCAmJgorKwkJKHNlc19wdHItPmNkYXRhLnN0cmVhbSA9PSAwIHx8IHNlc19wdHItPmNkYXRhLmFlYWQgIT0gMCkpKSB7CisrCQlkZXJyKDAsICJPbmx5IHN0cmVhbSBtb2RlcyBhcmUgYWxsb3dlZCBpbiBTUlRQIG1vZGUgKGJ1dCBub3QgQUVBRCkiKTsKKysJCXJldHVybiAtRUlOVkFMOworKwl9CisgCistCQlyZXQgPSBnZXRfdXNlcmJ1Zl9zcnRwKHNlc19wdHIsIGtjYW9wLCAmYXV0aF9zZywgJmRzdF9zZyk7CistCQlpZiAodW5saWtlbHkocmV0KSkgeworLQkJCWRlcnIoMSwgImdldF91c2VyYnVmX3NydHAoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworLQkJCXJldHVybiByZXQ7CistCQl9CisrCXJldCA9IGdldF91c2VyYnVmX3NydHAoc2VzX3B0ciwga2Nhb3AsICZhdXRoX3NnLCAmZHN0X3NnKTsKKysJaWYgKHVubGlrZWx5KHJldCkpIHsKKysJCWRlcnIoMSwgImdldF91c2VyYnVmX3NydHAoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworKwkJcmV0dXJuIHJldDsKKysJfQorIAorLQkJcmV0ID0gc3J0cF9hdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorLQkJCSAgIGRzdF9zZywgY2FvcC0+bGVuKTsKKysJcmV0ID0gc3J0cF9hdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorKwkJCWRzdF9zZywgY2FvcC0+bGVuKTsKKyAKKy0JCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKy0JfSBlbHNlIHsgLyogVExTIGFuZCBub3JtYWwgY2FzZXMuIEhlcmUgYXV0aCBkYXRhIGFyZSB1c3VhbGx5IHNtYWxsCistCSAgICAgICAgICAqIHNvIHdlIGp1c3QgY29weSB0aGVtIHRvIGEgZnJlZSBwYWdlLCBpbnN0ZWFkIG9mIHRyeWluZworLQkgICAgICAgICAgKiB0byBtYXAgdGhlbS4KKy0JICAgICAgICAgICovCistCQl1bnNpZ25lZCBjaGFyICphdXRoX2J1ZiA9IE5VTEw7CistCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgdG1wOworKwlyZWxlYXNlX3VzZXJfcGFnZXMoc2VzX3B0cik7CisgCistCQlpZiAodW5saWtlbHkoY2FvcC0+YXV0aF9sZW4gPiBQQUdFX1NJWkUpKSB7CistCQkJZGVycigxLCAiYXV0aCBkYXRhIGxlbiBpcyBleGNlc3NpdmUuIik7CistCQkJcmV0dXJuIC1FSU5WQUw7CistCQl9CisrCXJldHVybiByZXQ7CisrfQorIAorLQkJYXV0aF9idWYgPSAoY2hhciAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsKKy0JCWlmICh1bmxpa2VseSghYXV0aF9idWYpKSB7CistCQkJZGVycigxLCAidW5hYmxlIHRvIGdldCBhIGZyZWUgcGFnZS4iKTsKKy0JCQlyZXR1cm4gLUVOT01FTTsKKy0JCX0KKytzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX3RscyhzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0aF9vcCAqa2Nhb3ApCisreworKwlzdHJ1Y3QgY3J5cHRfYXV0aF9vcCAqY2FvcCA9ICZrY2FvcC0+Y2FvcDsKKysJc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3Rfc2csICphdXRoX3NnOworKwl1bnNpZ25lZCBjaGFyICphdXRoX2J1ZiA9IE5VTEw7CisrCXN0cnVjdCBzY2F0dGVybGlzdCB0bXA7CisrCWludCByZXQ7CisgCistCQlpZiAoY2FvcC0+YXV0aF9zcmMgJiYgY2FvcC0+YXV0aF9sZW4gPiAwKSB7CistCQkJaWYgKHVubGlrZWx5KGNvcHlfZnJvbV91c2VyKGF1dGhfYnVmLCBjYW9wLT5hdXRoX3NyYywgY2FvcC0+YXV0aF9sZW4pKSkgeworLQkJCQlkZXJyKDEsICJ1bmFibGUgdG8gY29weSBhdXRoIGRhdGEgZnJvbSB1c2Vyc3BhY2UuIik7CistCQkJCXJldCA9IC1FRkFVTFQ7CistCQkJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKy0JCQl9CisrCWlmICh1bmxpa2VseShzZXNfcHRyLT5jZGF0YS5hZWFkICE9IDApKSB7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwlpZiAodW5saWtlbHkoY2FvcC0+YXV0aF9sZW4gPiBQQUdFX1NJWkUpKSB7CisrCQlkZXJyKDEsICJhdXRoIGRhdGEgbGVuIGlzIGV4Y2Vzc2l2ZS4iKTsKKysJCXJldHVybiAtRUlOVkFMOworKwl9CisrCisrCWF1dGhfYnVmID0gKGNoYXIgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CisrCWlmICh1bmxpa2VseSghYXV0aF9idWYpKSB7CisrCQlkZXJyKDEsICJ1bmFibGUgdG8gZ2V0IGEgZnJlZSBwYWdlLiIpOworKwkJcmV0dXJuIC1FTk9NRU07CisrCX0KKyAKKy0JCQlzZ19pbml0X29uZSgmdG1wLCBhdXRoX2J1ZiwgY2FvcC0+YXV0aF9sZW4pOworLQkJCWF1dGhfc2cgPSAmdG1wOworLQkJfSBlbHNlIHsKKy0JCQlhdXRoX3NnID0gTlVMTDsKKysJaWYgKGNhb3AtPmF1dGhfc3JjICYmIGNhb3AtPmF1dGhfbGVuID4gMCkgeworKwkJaWYgKHVubGlrZWx5KGNvcHlfZnJvbV91c2VyKGF1dGhfYnVmLCBjYW9wLT5hdXRoX3NyYywgY2FvcC0+YXV0aF9sZW4pKSkgeworKwkJCWRlcnIoMSwgInVuYWJsZSB0byBjb3B5IGF1dGggZGF0YSBmcm9tIHVzZXJzcGFjZS4iKTsKKysJCQlyZXQgPSAtRUZBVUxUOworKwkJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKyAJCX0KKyAKKy0JCWlmIChjYW9wLT5mbGFncyAmIENPUF9GTEFHX0FFQURfVExTX1RZUEUgJiYgc2VzX3B0ci0+Y2RhdGEuYWVhZCA9PSAwKSB7CistCQkJcmV0ID0gZ2V0X3VzZXJidWZfdGxzKHNlc19wdHIsIGtjYW9wLCAmZHN0X3NnKTsKKy0JCQlpZiAodW5saWtlbHkocmV0KSkgeworLQkJCQlkZXJyKDEsICJnZXRfdXNlcmJ1Zl90bHMoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworLQkJCQlnb3RvIGZyZWVfYXV0aF9idWY7CistCQkJfQorKwkJc2dfaW5pdF9vbmUoJnRtcCwgYXV0aF9idWYsIGNhb3AtPmF1dGhfbGVuKTsKKysJCWF1dGhfc2cgPSAmdG1wOworKwl9IGVsc2UgeworKwkJYXV0aF9zZyA9IE5VTEw7CisrCX0KKyAKKy0JCQlyZXQgPSB0bHNfYXV0aF9uX2NyeXB0KHNlc19wdHIsIGtjYW9wLCBhdXRoX3NnLCBjYW9wLT5hdXRoX2xlbiwKKy0JCQkJICAgZHN0X3NnLCBjYW9wLT5sZW4pOworLQkJfSBlbHNlIHsKKy0JCQlpZiAodW5saWtlbHkoc2VzX3B0ci0+Y2RhdGEuaW5pdCA9PSAwIHx8CistCQkJICAgICAgICAgICAgIChzZXNfcHRyLT5jZGF0YS5zdHJlYW0gPT0gMCAmJgorLQkJCQkgICAgICBzZXNfcHRyLT5jZGF0YS5hZWFkID09IDApKSkgeworLQkJCQlkZXJyKDAsICJPbmx5IHN0cmVhbSBhbmQgQUVBRCBjaXBoZXJzIGFyZSBhbGxvd2VkIGZvciBhdXRoZW5jIik7CistCQkJCXJldCA9IC1FSU5WQUw7CistCQkJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKy0JCQl9CisrCXJldCA9IGdldF91c2VyYnVmX3RscyhzZXNfcHRyLCBrY2FvcCwgJmRzdF9zZyk7CisrCWlmICh1bmxpa2VseShyZXQpKSB7CisrCQlkZXJyKDEsICJnZXRfdXNlcmJ1Zl90bHMoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworKwkJZ290byBmcmVlX2F1dGhfYnVmOworKwl9CisgCistCQkJcmV0ID0gZ2V0X3VzZXJidWYoc2VzX3B0ciwgY2FvcC0+c3JjLCBjYW9wLT5sZW4sIGNhb3AtPmRzdCwga2Nhb3AtPmRzdF9sZW4sCistCQkJCQkgIGtjYW9wLT50YXNrLCBrY2FvcC0+bW0sICZzcmNfc2csICZkc3Rfc2cpOworLQkJCWlmICh1bmxpa2VseShyZXQpKSB7CistCQkJCWRlcnIoMSwgImdldF91c2VyYnVmKCk6IEVycm9yIGdldHRpbmcgdXNlciBwYWdlcy4iKTsKKy0JCQkJZ290byBmcmVlX2F1dGhfYnVmOworLQkJCX0KKysJcmV0ID0gdGxzX2F1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCisrCQkJZHN0X3NnLCBjYW9wLT5sZW4pOworKwlyZWxlYXNlX3VzZXJfcGFnZXMoc2VzX3B0cik7CisrCisrZnJlZV9hdXRoX2J1ZjoKKysJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWF1dGhfYnVmKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGludCBjcnlwdG9fYXV0aF96Y19hZWFkKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXRoX29wICprY2FvcCkKKyt7CisrCXN0cnVjdCBzY2F0dGVybGlzdCAqZHN0X3NnLCAqYXV0aF9zZywgKnNyY19zZzsKKysJc3RydWN0IGNyeXB0X2F1dGhfb3AgKmNhb3AgPSAma2Nhb3AtPmNhb3A7CisrCXVuc2lnbmVkIGNoYXIgKmF1dGhfYnVmID0gTlVMTDsKKysJc3RydWN0IHNjYXR0ZXJsaXN0IHRtcDsKKysJaW50IHJldDsKKyAKKy0JCQlyZXQgPSBhdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorLQkJCQkJICAgc3JjX3NnLCBkc3Rfc2csIGNhb3AtPmxlbik7CisrCWlmICh1bmxpa2VseShzZXNfcHRyLT5jZGF0YS5pbml0ID09IDAgfHwKKysJCShzZXNfcHRyLT5jZGF0YS5zdHJlYW0gPT0gMCAmJiBzZXNfcHRyLT5jZGF0YS5hZWFkID09IDApKSkgeworKwkJZGVycigwLCAiT25seSBzdHJlYW0gYW5kIEFFQUQgY2lwaGVycyBhcmUgYWxsb3dlZCBmb3IgYXV0aGVuYyIpOworKwkJcmV0dXJuIC1FSU5WQUw7CisrCX0KKysKKysJaWYgKHVubGlrZWx5KGNhb3AtPmF1dGhfbGVuID4gUEFHRV9TSVpFKSkgeworKwkJZGVycigxLCAiYXV0aCBkYXRhIGxlbiBpcyBleGNlc3NpdmUuIik7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwlhdXRoX2J1ZiA9IChjaGFyICopX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOworKwlpZiAodW5saWtlbHkoIWF1dGhfYnVmKSkgeworKwkJZGVycigxLCAidW5hYmxlIHRvIGdldCBhIGZyZWUgcGFnZS4iKTsKKysJCXJldHVybiAtRU5PTUVNOworKwl9CisrCisrCWlmIChjYW9wLT5hdXRoX3NyYyAmJiBjYW9wLT5hdXRoX2xlbiA+IDApIHsKKysJCWlmICh1bmxpa2VseShjb3B5X2Zyb21fdXNlcihhdXRoX2J1ZiwgY2FvcC0+YXV0aF9zcmMsIGNhb3AtPmF1dGhfbGVuKSkpIHsKKysJCQlkZXJyKDEsICJ1bmFibGUgdG8gY29weSBhdXRoIGRhdGEgZnJvbSB1c2Vyc3BhY2UuIik7CisrCQkJcmV0ID0gLUVGQVVMVDsKKysJCQlnb3RvIGZyZWVfYXV0aF9idWY7CisgCQl9CisgCistCQlyZWxlYXNlX3VzZXJfcGFnZXMoc2VzX3B0cik7CisrCQlzZ19pbml0X29uZSgmdG1wLCBhdXRoX2J1ZiwgY2FvcC0+YXV0aF9sZW4pOworKwkJYXV0aF9zZyA9ICZ0bXA7CisrCX0gZWxzZSB7CisrCQlhdXRoX3NnID0gTlVMTDsKKysJfQorKworKwlyZXQgPSBnZXRfdXNlcmJ1ZihzZXNfcHRyLCBjYW9wLT5zcmMsIGNhb3AtPmxlbiwgY2FvcC0+ZHN0LCBrY2FvcC0+ZHN0X2xlbiwKKysJCQlrY2FvcC0+dGFzaywga2Nhb3AtPm1tLCAmc3JjX3NnLCAmZHN0X3NnKTsKKysJaWYgKHVubGlrZWx5KHJldCkpIHsKKysJCWRlcnIoMSwgImdldF91c2VyYnVmKCk6IEVycm9yIGdldHRpbmcgdXNlciBwYWdlcy4iKTsKKysJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKysJfQorKworKwlyZXQgPSBhdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorKwkJCXNyY19zZywgZHN0X3NnLCBjYW9wLT5sZW4pOworKworKwlyZWxlYXNlX3VzZXJfcGFnZXMoc2VzX3B0cik7CisgCisgZnJlZV9hdXRoX2J1ZjoKKy0JCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylhdXRoX2J1Zik7CisrCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylhdXRoX2J1Zik7CisrCisrCXJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbnQKKytfX2NyeXB0b19hdXRoX3J1bl96YyhzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0aF9vcCAqa2Nhb3ApCisreworKwlzdHJ1Y3QgY3J5cHRfYXV0aF9vcCAqY2FvcCA9ICZrY2FvcC0+Y2FvcDsKKysJaW50IHJldDsKKysKKysJaWYgKGNhb3AtPmZsYWdzICYgQ09QX0ZMQUdfQUVBRF9TUlRQX1RZUEUpIHsKKysJCXJldCA9IGNyeXB0b19hdXRoX3pjX3NydHAoc2VzX3B0ciwga2Nhb3ApOworKwl9IGVsc2UgaWYgKGNhb3AtPmZsYWdzICYgQ09QX0ZMQUdfQUVBRF9UTFNfVFlQRSkgeworKwkJcmV0ID0gY3J5cHRvX2F1dGhfemNfdGxzKHNlc19wdHIsIGtjYW9wKTsKKysJfSBlbHNlIHsKKysJCXJldCA9IGNyeXB0b19hdXRoX3pjX2FlYWQoc2VzX3B0ciwga2Nhb3ApOworIAl9CisgCisgCXJldHVybiByZXQ7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDItcmVmYWN0b3JpbmctcmVsb2NhdGUtY29kZS10by1zaW1wbGlmeS1sYXRlci1wYXRjaGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAyLXJlZmFjdG9yaW5nLXJlbG9jYXRlLWNvZGUtdG8tc2ltcGxpZnktbGF0ZXItcGF0Y2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2Q5MDA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAyLXJlZmFjdG9yaW5nLXJlbG9jYXRlLWNvZGUtdG8tc2ltcGxpZnktbGF0ZXItcGF0Y2hlcy5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIGMyYmYwZTQyYjFkOWZkYTYwY2RlNGEzYTY4Mjc4NGQzNDllZjFjMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgorRGF0ZTogVGh1LCA0IE1heSAyMDE3IDE1OjA2OjIxICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSByZWZhY3RvcmluZzogcmVsb2NhdGUgY29kZSB0byBzaW1wbGlmeSBsYXRlciBwYXRjaGVzCisKK1RoaXMgY29kZSBtb3ZlIHdpbGwgc2ltcGxpZnkgdGhlIGNvbnZlcnNpb24gdG8gbmV3IEFFQUQgaW50ZXJmYWNlIGluCituZXh0IHBhdGNoZXMKKworU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitDb21taXQgSUQ6IGMyYmYwZTQyYjFkOWZkYQorCitTaWduZWQtb2ZmLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0aGVuYy5jIHwgMTcgKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXV0aGVuYy5jIGIvYXV0aGVuYy5jCitpbmRleCAyOGViMGY5Li45NTcyN2I0IDEwMDY0NAorLS0tIGEvYXV0aGVuYy5jCisrKysgYi9hdXRoZW5jLmMKK0BAIC03MTEsMTEgKzcxMSwxOCBAQCBzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX2FlYWQoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dAorIAkJcmV0dXJuIC1FTk9NRU07CisgCX0KKyAKKysJcmV0ID0gZ2V0X3VzZXJidWYoc2VzX3B0ciwgY2FvcC0+c3JjLCBjYW9wLT5sZW4sIGNhb3AtPmRzdCwga2Nhb3AtPmRzdF9sZW4sCisrCQkJa2Nhb3AtPnRhc2ssIGtjYW9wLT5tbSwgJnNyY19zZywgJmRzdF9zZyk7CisrCWlmICh1bmxpa2VseShyZXQpKSB7CisrCQlkZXJyKDEsICJnZXRfdXNlcmJ1ZigpOiBFcnJvciBnZXR0aW5nIHVzZXIgcGFnZXMuIik7CisrCQlnb3RvIGZyZWVfYXV0aF9idWY7CisrCX0KKysKKyAJaWYgKGNhb3AtPmF1dGhfc3JjICYmIGNhb3AtPmF1dGhfbGVuID4gMCkgeworIAkJaWYgKHVubGlrZWx5KGNvcHlfZnJvbV91c2VyKGF1dGhfYnVmLCBjYW9wLT5hdXRoX3NyYywgY2FvcC0+YXV0aF9sZW4pKSkgeworIAkJCWRlcnIoMSwgInVuYWJsZSB0byBjb3B5IGF1dGggZGF0YSBmcm9tIHVzZXJzcGFjZS4iKTsKKyAJCQlyZXQgPSAtRUZBVUxUOworLQkJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKysJCQlnb3RvIGZyZWVfcGFnZXM7CisgCQl9CisgCisgCQlzZ19pbml0X29uZSgmdG1wLCBhdXRoX2J1ZiwgY2FvcC0+YXV0aF9sZW4pOworQEAgLTcyNCwxNiArNzMxLDEwIEBAIHN0YXRpYyBpbnQgY3J5cHRvX2F1dGhfemNfYWVhZChzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0CisgCQlhdXRoX3NnID0gTlVMTDsKKyAJfQorIAorLQlyZXQgPSBnZXRfdXNlcmJ1ZihzZXNfcHRyLCBjYW9wLT5zcmMsIGNhb3AtPmxlbiwgY2FvcC0+ZHN0LCBrY2FvcC0+ZHN0X2xlbiwKKy0JCQlrY2FvcC0+dGFzaywga2Nhb3AtPm1tLCAmc3JjX3NnLCAmZHN0X3NnKTsKKy0JaWYgKHVubGlrZWx5KHJldCkpIHsKKy0JCWRlcnIoMSwgImdldF91c2VyYnVmKCk6IEVycm9yIGdldHRpbmcgdXNlciBwYWdlcy4iKTsKKy0JCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKy0JfQorLQorIAlyZXQgPSBhdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorIAkJCXNyY19zZywgZHN0X3NnLCBjYW9wLT5sZW4pOworIAorK2ZyZWVfcGFnZXM6CisgCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKyAKKyBmcmVlX2F1dGhfYnVmOgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAzLWNvbnZlcnQtdG8tbmV3LUFFQUQtaW50ZXJmYWNlLWluLWtlcm5lbHMtdjQuMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMy1jb252ZXJ0LXRvLW5ldy1BRUFELWludGVyZmFjZS1pbi1rZXJuZWxzLXY0LjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYwMjMwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMy1jb252ZXJ0LXRvLW5ldy1BRUFELWludGVyZmFjZS1pbi1rZXJuZWxzLXY0LjIucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gYTcwNTM2MDE5NzI2MGQyODUzNTc0NmFlOThjNDYxYmEyY2ZiN2E5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+CitEYXRlOiBUaHUsIDQgTWF5IDIwMTcgMTU6MDY6MjIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIGNvbnZlcnQgdG8gbmV3IEFFQUQgaW50ZXJmYWNlIGluIGtlcm5lbHMgdjQuMisKKworVGhlIGNyeXB0byBBUEkgZm9yIEFFQUQgY2lwaGVycyBjaGFuZ2VkIGluIHJlY2VudCBrZXJuZWxzIHNvIHRoYXQKK2Fzc29jaWF0ZWQgZGF0YSBpcyBub3cgcGFydCBvZiBib3RoIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gc2NhdHRlcgorZ2F0aGVycy4gVGhlIHNvdXJjZSwgZGVzdGluYXRpb24gYW5kIGFzc29jaWF0ZWQgZGF0YSBidWZmZXJzIG5lZWQKK3RvIGJlIHN0aWNoZWQgYWNjb3JkaW5nbHkgZm9yIHRoZSBvcGVyYXRpb25zIHRvIHN1Y2NlZWQ6CisKK3NyY19zZzogYXV0aF9idWYgKyBzcmNfYnVmCitkc3Rfc2c6IGF1dGhfYnVmICsgKGRzdF9idWYgKyB0YWcgc3BhY2UpCisKK1RoaXMgcGF0Y2ggZml4ZXMgYSBrZXJuZWwgY3Jhc2ggb2JzZXJ2ZWQgd2l0aCBjaXBoZXItZ2NtIHRlc3QuCisKK1NlZSBhbHNvIGtlcm5lbCBwYXRjaDogODFjNGMzNWViNjFhNjljMjI5ODcxYzQ5MGIwMTFjMTE3MTUxMWQ1YQorICAgIGNyeXB0bzogY2NtIC0gQ29udmVydCB0byBuZXcgQUVBRCBpbnRlcmZhY2UKKworUmVwb3J0ZWQtYnk6IFBoaWwgU3V0dGVyIDxwaGlsQG53bC5jYz4KK1NpZ25lZC1vZmYtYnk6IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworQ29tbWl0IElEOiBhNzA1MzYwMTk3MjYwZDI4NTM1NzQKKworU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGF1dGhlbmMuYyB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2F1dGhlbmMuYyBiL2F1dGhlbmMuYworaW5kZXggOTU3MjdiNC4uNjkyOTUxZiAxMDA2NDQKKy0tLSBhL2F1dGhlbmMuYworKysrIGIvYXV0aGVuYy5jCitAQCAtNjg4LDEyICs2ODgsMjAgQEAgZnJlZV9hdXRoX2J1ZjoKKyAKKyBzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX2FlYWQoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dGhfb3AgKmtjYW9wKQorIHsKKy0Jc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3Rfc2csICphdXRoX3NnLCAqc3JjX3NnOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdF9zZzsKKysJc3RydWN0IHNjYXR0ZXJsaXN0ICpzcmNfc2c7CisgCXN0cnVjdCBjcnlwdF9hdXRoX29wICpjYW9wID0gJmtjYW9wLT5jYW9wOworIAl1bnNpZ25lZCBjaGFyICphdXRoX2J1ZiA9IE5VTEw7CistCXN0cnVjdCBzY2F0dGVybGlzdCB0bXA7CisgCWludCByZXQ7CisgCisrI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCAyLCAwKSkKKysJc3RydWN0IHNjYXR0ZXJsaXN0IHRtcDsKKysJc3RydWN0IHNjYXR0ZXJsaXN0ICphdXRoX3NnOworKyNlbHNlCisrCXN0cnVjdCBzY2F0dGVybGlzdCBhdXRoMVsyXTsKKysJc3RydWN0IHNjYXR0ZXJsaXN0IGF1dGgyWzJdOworKyNlbmRpZgorKworIAlpZiAodW5saWtlbHkoc2VzX3B0ci0+Y2RhdGEuaW5pdCA9PSAwIHx8CisgCQkoc2VzX3B0ci0+Y2RhdGEuc3RyZWFtID09IDAgJiYgc2VzX3B0ci0+Y2RhdGEuYWVhZCA9PSAwKSkpIHsKKyAJCWRlcnIoMCwgIk9ubHkgc3RyZWFtIGFuZCBBRUFEIGNpcGhlcnMgYXJlIGFsbG93ZWQgZm9yIGF1dGhlbmMiKTsKK0BAIC03MTgsNiArNzI2LDcgQEAgc3RhdGljIGludCBjcnlwdG9fYXV0aF96Y19hZWFkKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXQKKyAJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKyAJfQorIAorKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgMiwgMCkpCisgCWlmIChjYW9wLT5hdXRoX3NyYyAmJiBjYW9wLT5hdXRoX2xlbiA+IDApIHsKKyAJCWlmICh1bmxpa2VseShjb3B5X2Zyb21fdXNlcihhdXRoX2J1ZiwgY2FvcC0+YXV0aF9zcmMsIGNhb3AtPmF1dGhfbGVuKSkpIHsKKyAJCQlkZXJyKDEsICJ1bmFibGUgdG8gY29weSBhdXRoIGRhdGEgZnJvbSB1c2Vyc3BhY2UuIik7CitAQCAtNzMzLDYgKzc0MiwzMyBAQCBzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX2FlYWQoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dAorIAorIAlyZXQgPSBhdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorIAkJCXNyY19zZywgZHN0X3NnLCBjYW9wLT5sZW4pOworKyNlbHNlCisrCWlmIChjYW9wLT5hdXRoX3NyYyAmJiBjYW9wLT5hdXRoX2xlbiA+IDApIHsKKysJCWlmICh1bmxpa2VseShjb3B5X2Zyb21fdXNlcihhdXRoX2J1ZiwgY2FvcC0+YXV0aF9zcmMsIGNhb3AtPmF1dGhfbGVuKSkpIHsKKysJCQlkZXJyKDEsICJ1bmFibGUgdG8gY29weSBhdXRoIGRhdGEgZnJvbSB1c2Vyc3BhY2UuIik7CisrCQkJcmV0ID0gLUVGQVVMVDsKKysJCQlnb3RvIGZyZWVfcGFnZXM7CisrCQl9CisrCisrCQlzZ19pbml0X3RhYmxlKGF1dGgxLCAyKTsKKysJCXNnX3NldF9idWYoYXV0aDEsIGF1dGhfYnVmLCBjYW9wLT5hdXRoX2xlbik7CisrCQlzZ19jaGFpbihhdXRoMSwgMiwgc3JjX3NnKTsKKysKKysJCWlmIChzcmNfc2cgPT0gZHN0X3NnKSB7CisrCQkJc3JjX3NnID0gYXV0aDE7CisrCQkJZHN0X3NnID0gYXV0aDE7CisrCQl9IGVsc2UgeworKwkJCXNnX2luaXRfdGFibGUoYXV0aDIsIDIpOworKwkJCXNnX3NldF9idWYoYXV0aDIsIGF1dGhfYnVmLCBjYW9wLT5hdXRoX2xlbik7CisrCQkJc2dfY2hhaW4oYXV0aDIsIDIsIGRzdF9zZyk7CisrCQkJc3JjX3NnID0gYXV0aDE7CisrCQkJZHN0X3NnID0gYXV0aDI7CisrCQl9CisrCX0KKysKKysJcmV0ID0gYXV0aF9uX2NyeXB0KHNlc19wdHIsIGtjYW9wLCBOVUxMLCBjYW9wLT5hdXRoX2xlbiwKKysJCQlzcmNfc2csIGRzdF9zZywgY2FvcC0+bGVuKTsKKysjZW5kaWYKKyAKKyBmcmVlX3BhZ2VzOgorIAlyZWxlYXNlX3VzZXJfcGFnZXMoc2VzX3B0cik7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKaW5kZXggOWE5MGQ0NC4uN2E5MjNiZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYwpAQCAtNyw3ICs3LDYgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2R0Yy9kdGMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL21ha2VfaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYjM4NGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYzdhNGMzODE3Nzk2MTA3YmI4MjRhMWYxNzNmYWY5MGZhZTQ1Mzk2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Ci1EYXRlOiBXZWQsIDI3IFNlcCAyMDE3IDE1OjA0OjA5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNoZWNrczogVXNlIHByb3BlciBmb3JtYXQgbW9kaWZpZXIgZm9yIHNpemVfdAotCi1UaGUgc2l6ZSBvZiBzaXplX3QgY2FuIHZhcnkgYmV0d2VlbiBhcmNoaXRlY3R1cmVzLCBzbyB1c2luZyAlbGQgaXNuJ3QKLWdvaW5nIHRvIHdvcmsgb24gMzItYml0IGJ1aWxkcy4gVXNlIHRoZSAlenUgbW9kaWZpZXIgdG8gbWFrZSBzdXJlIGl0IGlzCi1hbHdheXMgY29ycmVjdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KLUFja2VkLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgotU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNoZWNrcy5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NoZWNrcy5jIGIvY2hlY2tzLmMKLWluZGV4IDkwMmYyZTMuLjA4YTNhMjkgMTAwNjQ0Ci0tLS0gYS9jaGVja3MuYwotKysrIGIvY2hlY2tzLmMKLUBAIC05NzIsNyArOTcyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfcHJvcGVydHlfcGhhbmRsZV9hcmdzKHN0cnVjdCBjaGVjayAqYywKLSAJaW50IGNlbGwsIGNlbGxzaXplID0gMDsKLSAKLSAJaWYgKHByb3AtPnZhbC5sZW4gJSBzaXplb2YoY2VsbF90KSkgewotLQkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlbGQgaW4gbm9kZSAlcyIsCi0rCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICV6dSBpbiBub2RlICVzIiwKLSAJCSAgICAgcHJvcC0+bmFtZSwgcHJvcC0+dmFsLmxlbiwgc2l6ZW9mKGNlbGxfdCksIG5vZGUtPmZ1bGxwYXRoKTsKLSAJCXJldHVybjsKLSAJfQotQEAgLTExNjMsNyArMTE2Myw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2ludGVycnVwdHNfcHJvcGVydHkoc3RydWN0IGNoZWNrICpjLAotIAkJcmV0dXJuOwotIAotIAlpZiAoaXJxX3Byb3AtPnZhbC5sZW4gJSBzaXplb2YoY2VsbF90KSkKLS0JCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJWxkIGluIG5vZGUgJXMiLAotKwkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlenUgaW4gbm9kZSAlcyIsCi0gCQkgICAgIGlycV9wcm9wLT5uYW1lLCBpcnFfcHJvcC0+dmFsLmxlbiwgc2l6ZW9mKGNlbGxfdCksCi0gCQkgICAgIG5vZGUtPmZ1bGxwYXRoKTsKLSAKLS0tIAotMi4xNS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjL21ha2VfaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjL21ha2VfaW5zdGFsbC5wYXRjaAppbmRleCBjY2YxN2IzLi5lYTkzNTllIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy9tYWtlX2luc3RhbGwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCkBAIC0xLDE3ICsxLDI2IEBACitGcm9tIGU5ODUyYjlkMjA2ZGYxZTQyYWE0YzhhZmVjNTVhMGY1ZTA5OWI1MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDMgTm92IDIwMTEgMDg6MzU6NDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZHRjOiBBZGQgcGF0Y2ggdG8gY29ycmVjdGx5IGluc3RhbGwgc2hhcmVkIGxpYnJhcmllcyBhbmQKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi1JbmRleDogZ2l0L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKLSsrKyBnaXQvTWFrZWZpbGUKLUBAIC0xNjgsOCArMTY4LDggQEAgaW5zdGFsbC1iaW46IGFsbCAkKFNDUklQVFMpCistLS0KKyBNYWtlZmlsZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBkOGViYzRmLi5mNWUwMWJlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMjA1LDggKzIwNSw4IEBAIGluc3RhbGwtYmluOiBhbGwgJChTQ1JJUFRTKQogIGluc3RhbGwtbGliOiBhbGwKICAJQCQoVkVDSE8pIElOU1RBTEwtTElCCiAgCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQoTElCRElSKQotLQkkKElOU1RBTEwpICQoTElCRkRUX2xpYikgJChERVNURElSKSQoTElCRElSKQorLQkkKElOU1RBTExfTElCKSAkKExJQkZEVF9saWIpICQoREVTVERJUikkKExJQkRJUikKIC0JbG4gLXNmICQobm90ZGlyICQoTElCRkRUX2xpYikpICQoREVTVERJUikkKExJQkRJUikvJChMSUJGRFRfc29uYW1lKQogKwkkKElOU1RBTEwpICQoTElCRkRUX2xpYikgJChERVNURElSKSQoTElCRElSKS8kKExJQkZEVF9zb25hbWUpCiArCWxuIC1zZiAkKExJQkZEVF9zb25hbWUpICQoREVTVERJUikkKExJQkRJUikvJChub3RkaXIgJChMSUJGRFRfbGliKSkKICAJbG4gLXNmICQoTElCRkRUX3NvbmFtZSkgJChERVNURElSKSQoTElCRElSKS9saWJmZHQuJChTSEFSRURMSUJfRVhUKQotIAkkKElOU1RBTEwpIC1tIDY0NCAkKExJQkZEVF9hcmNoaXZlKSAkKERFU1RESVIpJChMSUJESVIpCisgCSQoSU5TVEFMTF9EQVRBKSAkKExJQkZEVF9hcmNoaXZlKSAkKERFU1RESVIpJChMSUJESVIpCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTQ2Y2ZiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBkdGMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkgICAgZmlsZTovL2xpYmZkdC9saWJmZHQuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTUyO21kNT1mYjM2MDk2MzE1MWY4ZWMyZDZjMDZiMDU1YmNiYjY4YyIKLQotU1JDUkVWID0gIjIyYTY1YzUzMzFjMjI5NzlkNDE2NzM4ZWI3NTZiOTU0MTY3MmUwMGQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlNDYyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC43LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgZHRjLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKwkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCisKK1NSQ1JFViA9ICI4OGYxODkwOWRiNzMxYTYyNzQ1NmYyNmQ3Nzk0NDVmODRlNDQ5NTM2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKaW5kZXggNGNjZjliMC4uYjM1M2MyMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtNCw3ICs0LDcgQEAKIAogREVQRU5EUyA9ICJnaXQtbmF0aXZlIgogCi1TUkNSRVYgPSAiOGNkMTM1MDBhMjdjMGE2YTkxMWNjODNjMDM0OWRlYzAxZWY2NmUyNyIKK1NSQ1JFViA9ICJkNjUyOWY4NmZjNWJjYjM1MTQ5NTNmZjlmYTJmNTFhM2ZiZjAzYTBmIgogUFIgPSAicjEyIgogUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1rZXhlYy1maXgtZm9yLVVuaGFuZGxlZC1yZWxhLXJlbG9jYXRpb24tUl9YODZfNjRfUExULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEta2V4ZWMtZml4LWZvci1VbmhhbmRsZWQtcmVsYS1yZWxvY2F0aW9uLVJfWDg2XzY0X1BMVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGNjZWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEta2V4ZWMtZml4LWZvci1VbmhhbmRsZWQtcmVsYS1yZWxvY2F0aW9uLVJfWDg2XzY0X1BMVC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGI5ZGUyMWVmNTFhN2NlYWI3MTIyYTcwN2MxODg2MDJlYWUyMmM0ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpcyBDbGF5dG9uIDxjaHJpczI1NTNAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBNb24sIDIwIEF1ZyAyMDE4IDEyOjAwOjMxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGtleGVjOiBmaXggZm9yICJVbmhhbmRsZWQgcmVsYSByZWxvY2F0aW9uOiBSX1g4Nl82NF9QTFQzMiIgZXJyb3IKKworSW4gcmVzcG9uc2UgdG8gYSBjaGFuZ2UgaW4gYmludXRpbHMsIGNvbW1pdCBiMjFlYmYyZmI0YworKHg4NjogVHJlYXQgUl9YODZfNjRfUExUMzIgYXMgUl9YODZfNjRfUEMzMikgd2FzIGFwcGxpZWQgdG8KK3RoZSBsaW51eCBrZXJuZWwgZHVyaW5nIHRoZSA0LjE2IGRldmVsb3BtZW50IGN5Y2xlIGFuZCBoYXMKK3NpbmNlIGJlZW4gYmFja3BvcnRlZCB0byBlYXJsaWVyIHN0YWJsZSBrZXJuZWwgc2VyaWVzLiBUaGUKK2NoYW5nZSByZXN1bHRzIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2UgaW4gJFNVQkpFQ1Qgd2hlbgorcmVib290aW5nIHZpYSBrZXhlYy4KKworRml4IHRoaXMgYnkgcmVwbGljYXRpbmcgdGhlIGNoYW5nZSBpbiBrZXhlYy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmdpdC9jb21taXQvP2lkPWI5ZGUyMWVmNTFhN2NlYWI3MTIyYTcwN2MxODg2MDJlYWUyMmM0ZWVdCisKK1NpZ25lZC1vZmYtYnk6IENocmlzIENsYXl0b24gPGNocmlzMjU1M0Bnb29nbGVtYWlsLmNvbT4KK0Fja2VkLWJ5OiBCYW9xdWFuIEhlIDxiaGVAcmVkaGF0LmNvbT4KK1Rlc3RlZC1ieTogQmh1cGVzaCBTaGFybWEgPGJoc2hhcm1hQHJlZGhhdC5jb20+CitBY2tlZC1ieTogQmh1cGVzaCBTaGFybWEgPGJoc2hhcm1hQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBTaW1vbiBIb3JtYW4gPGhvcm1zQHZlcmdlLm5ldC5hdT4KK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBrZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYtcmVsLXg4Nl82NC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYtcmVsLXg4Nl82NC5jIGIva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworaW5kZXggN2ZkZGU3My4uZGI4NWI0NCAxMDA2NDQKKy0tLSBhL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMKKysrKyBiL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMKK0BAIC03OSw2ICs3OSw3IEBAIHZvaWQgbWFjaGluZV9hcHBseV9lbGZfcmVsKHN0cnVjdCBtZW1fZWhkciAqVU5VU0VEKGVoZHIpLAorIAkJCWdvdG8gb3ZlcmZsb3c7CisgCQlicmVhazsKKyAJY2FzZSBSX1g4Nl82NF9QQzMyOiAKKysJY2FzZSBSX1g4Nl82NF9QTFQzMjoKKyAJCSoodWludDMyX3QgKilsb2NhdGlvbiA9IHZhbHVlIC0gYWRkcmVzczsKKyAJCWJyZWFrOworIAlkZWZhdWx0OgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2R1bXAuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlCmluZGV4IDAxM2M1YTYuLmI0YTJjMDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlCkBAIC0xLDcgKzEsOCBAQAogW1VuaXRdCiBEZXNjcmlwdGlvbj1SZWJvb3QgYW5kIGR1bXAgdm1jb3JlIHZpYSBrZXhlYwogRGVmYXVsdERlcGVuZGVuY2llcz1ubwotQWZ0ZXI9YmFzaWMudGFyZ2V0CitSZXF1aXJlcz1zeXNpbml0LnRhcmdldAorQWZ0ZXI9c3lzaW5pdC50YXJnZXQKIAogW1NlcnZpY2VdCiBUeXBlPW9uZXNob3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmI0ODMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0KLVNVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgotQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCi1TRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgotREVQRU5EUyA9ICJ6bGliIHh6IgotCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8va2R1bXAgXAotICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcG93ZXJwYy1jaGFuZ2UtdGhlLW1lbW9yeS1zaXplLWxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHVyZ2F0b3J5LVBhc3Mtci1kaXJlY3RseS10by1saW5rZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1rZXhlYy1BUk0tRml4LWFkZF9idWZmZXJfcGh5c192aXJ0LWFsaWduLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tleGVjLXgzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIFwKLSAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxOTg5NjhkZTc5YjVkZWQ5NmY5N2YzYzJlYTk2MzdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmMTdmYzk5YmY3N2M5YjM5ZjA2ZWU4OGFjMGU4NmQwMzQ5YzRhMGMzZjgyMTRhM2NjNzhlZWNlODcyZjZmM2EiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotZXhwb3J0IExERkxBR1MgPSAiLUwke1NUQUdJTkdfTElCRElSfSIKLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLXpsaWI9eWVzIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgdGhlIHByZXBhY2thZ2VkIGNvbmZpZy5oIGZyb20gdGhlIHNvdXJjZSB0cmVlIGFzIGl0IG92ZXJyaWRlcwotICAgICMgdGhlIHNhbWUgZmlsZSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlIGFuZCBwbGFjZWQgaW4gdGhlIGJ1aWxkIHRyZWUKLSAgICBybSAtZiAke1N9L2luY2x1ZGUvY29uZmlnLmgKLQotICAgICMgUmVtb3ZlIHRoZSAnKi5kJyBmaWxlIHRvIG1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCi0gICAgZm9yIGRlcCBpbiBgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgJyouZCdgOyBkbwotICAgICAgICBkZXBfbm9fZD0iYGVjaG8gJGRlcCB8IHNlZCAncyMuZCQjIydgIgotICAgICAgICAjIFJlbW92ZSBmaWxlLmQgd2hlbiB0aGVyZSBpcyBhIGZpbGUubwotICAgICAgICBpZiBbIC1mICIkZGVwX25vX2QubyIgXTsgdGhlbgotICAgICAgICAgICAgcm0gLWYgJGRlcAotICAgICAgICBmaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAotICAgICAgICBmaQotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKLUZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlciBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UgXAotIgotCi1GSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAia2R1bXAiCi1JTklUU0NSSVBUX05BTUVfa2R1bXAgPSAia2R1bXAiCi1JTklUU0NSSVBUX1BBUkFNU19rZHVtcCA9ICJzdGFydCA1NiAyIDMgNCA1IC4gc3RvcCA1NiAwIDEgNiAuIgotCi1TRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0Lip8cG93ZXJwYy4qfG1pcHMuKiktKGxpbnV4fGZyZWVic2QuKiknCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjliNWFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNy5iYgpAQCAtMCwwICsxLDg4IEBACisKK1NVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCitERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgorQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgorSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCitTRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgorREVQRU5EUyA9ICJ6bGliIHh6IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1rZXhlYy1maXgtZm9yLVVuaGFuZGxlZC1yZWxhLXJlbG9jYXRpb24tUl9YODZfNjRfUExULnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGUwNzFjYTQ3MzY5NGE3MWU0YWU2MGVkN2VmNmYzNzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDUwYzg3YmEwNDg2NDFlYjA1Zjk3MTdmNTU2N2FjYTU3ZjA2M2MyNjYxNDlhZTY2M2I1OGEzNGU1ODUyZGVhZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKK0ZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAia2R1bXAiCitTWVNURU1EX1NFUlZJQ0Vfa2R1bXAgPSAia2R1bXAuc2VydmljZSIKKworU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJworCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kX2dpdC5iYgppbmRleCA2OTE4NWIyLi5iZDIxZDJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kX2dpdC5iYgpAQCAtMTMsOSArMTMsNyBAQAogUkNPTkZMSUNUU19saWJrbW9kMiArPSAibW9kdWxlLWluaXQtdG9vbHMtaW5zbW9kLXN0YXRpYyBtb2R1bGUtaW5pdC10b29scy1kZXBtb2QgbW9kdWxlLWluaXQtdG9vbHMiCiAKICMgYXV0b3Rvb2xzIHNldCBwcmVmaXggdG8gL3VzciwgaG93ZXZlciB3ZSB3YW50IHRoZW0gaW4gL2JpbiBhbmQgL3NiaW4KLWJpbmRpciA9ICIke2Jhc2VfYmluZGlyfSIKLXNiaW5kaXIgPSAiJHtiYXNlX3NiaW5kaXJ9IgotIyBsaWJkaXIgPSAiJHtiYXNlX2xpYmRpcn0iCitFWFRSQV9PRUNPTkYgKz0gIiAtLWJpbmRpcj0ke2Jhc2VfYmluZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgICAgIGluc3RhbGwgLWRtNzU1ICR7RH0ke2Jhc2VfYmluZGlyfQpAQCAtNDEsNyArMzksNyBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgYmFzaC1jb21wbGV0aW9uCiAKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNzAiCiAKIEFMVEVSTkFUSVZFX2ttb2QgPSAiaW5zbW9kIG1vZHByb2JlIHJtbW9kIG1vZGluZm8gYmluLWxzbW9kIGxzbW9kIGRlcG1vZCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKaW5kZXggY2Y3YWJiMC4uMjUyNTU0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCkBAIC02NiwxMiArNjYsMTMgQEAKICAgICBmaWxlOi8vTElDRU5DRS5BYmlsaXM7bWQ1PWI1ZWUzZjQxMDc4MGU1NjcxMWFkNDhlYWRjMjJiOGJjIFwKICAgICBmaWxlOi8vTElDRU5DRS5hZHNwX3NzdDttZDU9NjE1YzQ1YjkxYTVhNGE5ZmUwNDZkNmFiOWEyZGY3MjggXAogICAgIGZpbGU6Ly9MSUNFTkNFLmFnZXJlO21kNT1hZjAxMzNkZTZiNGE5YjI1MjJkZWZkNWYxODhhZmQzMSBcCi0gICAgZmlsZTovL0xJQ0VOU0UuYW1kZ3B1O21kNT0wYWEzYzJmM2U3MzZhZjMyMGEwOGEzYWVlY2NlY2YyOSBcCisgICAgZmlsZTovL0xJQ0VOU0UuYW1kZ3B1O21kNT04OGI4NjViYzc0ZjNmZmNjNTQ2NDBiNGVhODU0MGI0NiBcCiAgICAgZmlsZTovL0xJQ0VOU0UuYW1kLXVjb2RlO21kNT0zYzUzOTlkYzkxNDhkN2YwZTFmNDFlMzRiNjljZjE0ZiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZTttZDU9MzBhMTRjNzgyM2JlZWRhYzlmYTM5YzY0ZmRkMDFhMTMgXAogICAgIGZpbGU6Ly9MSUNFTlNFLmF0bWVsO21kNT1hYTc0YWMwYzYwNTk1ZGVlNGQ0ZTIzOTEwN2VhNzdhMyBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eDttZDU9MzE2MGMxNGRmNzIyODg5MWI4NjgwNjBlMTk1MWRmYmMgXAogICAgIGZpbGU6Ly9MSUNFTkNFLmNhMDEzMjttZDU9MjA5YjMzZTY2ZWU1YmUwNDYxZjEzZDMxZGEzOTIxOTggXAorICAgIGZpbGU6Ly9MSUNFTkNFLmNhZGVuY2U7bWQ1PTAwOWY0NjgxNmY2OTU2Y2ZiNzVlZGUxM2QzZTFjZWUwIFwKICAgICBmaWxlOi8vTElDRU5DRS5jYXZpdW07bWQ1PWMzN2FhZmZiMWViZTU5MzliMjU4MGQwNzNhOTVkYWVhIFwKICAgICBmaWxlOi8vTElDRU5DRS5jaGVsc2lvX2Zpcm13YXJlO21kNT04MTlhYThjM2ZhNDUzZjFiMjU4ZWQ4ZDE2OGE5ZDkwMyBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuY3cxMjAwO21kNT1mMGY3NzA4NjRlN2E4NDQ0YTVjNWFhOWQxMmEzYTdlZCBcCkBAIC05MSw2ICs5Miw3IEBACiAgICAgZmlsZTovL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZTttZDU9M2ZkODQyOTExZWE5M2MyOWNkMzI2NzlhYTIzZTFjODggXAogICAgIGZpbGU6Ly9MSUNFTkNFLmthd2V0aDttZDU9YjFkODc2ZTU2MmY0YjNiOGQzOTFhZDgzOTVkZmUwM2YgXAogICAgIGZpbGU6Ly9MSUNFTkNFLk1hcnZlbGw7bWQ1PTlkZGVhMTczNGE0YmFmM2M3OGQ4NDUxNTFmNDJhMzdhIFwKKyAgICBmaWxlOi8vTElDRU5DRS5tZWRpYXRlazttZDU9N2MxOTc2YjYzMjE3ZDc2Y2U0N2QwYTExZDhhNzljZjIgXAogICAgIGZpbGU6Ly9MSUNFTkNFLm1veGE7bWQ1PTEwODY2MTQ3NjdkOGNjZjc0NGE5MjMyODlkM2Q0MjYxIFwKICAgICBmaWxlOi8vTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZTttZDU9NDJlMzJmYjg5ZjZiOTU5Y2EyMjJlMjVhYzhkZjhmZWQgXAogICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9NGFkZDA4ZjI1NzcwODZkNDQ0NDc5OTY1MDNjZGRmNWYgXApAQCAtMTIwLDcgKzEyMiw3IEBACiAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwO21kNT0xZTE3MGMxMzE3NTMyM2MzMmM3ZjRkMDk5OGQ1M2Y2NiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAotICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PWVhYWYzMTBiYWMwMmZlZTA1ZWExYjMzNGY1OGM1Y2FmIFwKKyAgICBmaWxlOi8vV0hFTkNFO21kNT0zNmVmM2U5ODg3YmI4YjM4ZmYyNjVjNjAyZGU2NzQwZSBcCiAiCiAKICMgVGhlc2UgYXJlIG5vdCBjb21tb24gbGljZW5zZXMsIHNldCBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIHRoZW0KQEAgLTEzNCw2ICsxMzYsNyBAQAogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0bWVsXSA9ICJMSUNFTlNFLmF0bWVsIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhdID0gIkxJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYTAxMzJdID0gIkxJQ0VOQ0UuY2EwMTMyIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhZGVuY2VdID0gIkxJQ0VOQ0UuY2FkZW5jZSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYXZpdW1dID0gIkxJQ0VOQ0UuY2F2aXVtIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNoZWxzaW9fZmlybXdhcmVdID0gIkxJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jdzEyMDBdID0gIkxJQ0VOQ0UuY3cxMjAwIgpAQCAtMTUzLDYgKzE1Niw3IEBACiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZV0gPSAiTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWthd2V0aF0gPSAiTElDRU5DRS5rYXdldGgiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtTWFydmVsbF0gPSAiTElDRU5DRS5NYXJ2ZWxsIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1lZGlhdGVrXSA9ICJMSUNFTkNFLm1lZGlhdGVrIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1veGFdID0gIkxJQ0VOQ0UubW94YSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZV0gPSAiTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1uZXRyb25vbWVdID0gIkxJQ0VOQ0UuTmV0cm9ub21lIgpAQCAtMTg0LDcgKzE4OCw3IEBACiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM1MDAwY10gPSAiTElDRU5DRS54YzUwMDBjIgogTk9fR0VORVJJQ19MSUNFTlNFW1dIRU5DRV0gPSAiV0hFTkNFIgogCi1TUkNSRVYgPSAiZDExNDczMjcyMzJlYzQ2MTZhNjZhYjg5OGRmODRmOTcwMGM4MTZjMSIKK1NSQ1JFViA9ICI0NGQ0ZmNhOTkyMmEyNTJhMGJkODFmNjMwN2JjYzA3MmE3OGRhNTRhIgogUEUgPSAiMSIKIFBWID0gIjAuMCtnaXQke1NSQ1BWfSIKIApAQCAtMjMyLDYgKzIzNiw3IEBACiAgICAgICAgICAgICAgJHtQTn0tcmFkZW9uLWxpY2Vuc2UgJHtQTn0tcmFkZW9uIFwKICAgICAgICAgICAgICAke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgJHtQTn0tcGNpZTg4OTcgJHtQTn0tcGNpZTg5OTcgXAogICAgICAgICAgICAgICR7UE59LXNkODY4NiAke1BOfS1zZDg2ODggJHtQTn0tc2Q4Nzg3ICR7UE59LXNkODc5NyAke1BOfS1zZDg4MDEgJHtQTn0tc2Q4ODg3ICR7UE59LXNkODg5NyBcCisgICAgICAgICAgICAgJHtQTn0tdXNiODk5NyBcCiAgICAgICAgICAgICAgJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2wxMnh4ICR7UE59LXdsMTh4eCBcCiAgICAgICAgICAgICAgJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgJHtQTn0tdnQ2NjU2IFwKICAgICAgICAgICAgICAke1BOfS1ydGwtbGljZW5zZSAke1BOfS1ydGw4MTg4ICR7UE59LXJ0bDgxOTJjdSAke1BOfS1ydGw4MTkyY2UgJHtQTn0tcnRsODE5MnN1ICR7UE59LXJ0bDg3MjMgJHtQTn0tcnRsODgyMSBcCkBAIC00MDksNiArNDE0LDcgQEAKIExJQ0VOU0VfJHtQTn0tc2Q4ODAxID0gIkZpcm13YXJlLU1hcnZlbGwiCiBMSUNFTlNFXyR7UE59LXNkODg4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgogTElDRU5TRV8ke1BOfS1zZDg4OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tdXNiODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgogTElDRU5TRV8ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiRmlybXdhcmUtTWFydmVsbCIKIAogRklMRVNfJHtQTn0tbWFydmVsbC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5NYXJ2ZWxsIgpAQCAtNDQzLDYgKzQ0OSw5IEBACiBGSUxFU18ke1BOfS1zZDg4OTcgPSAiIFwKICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODg5N191YXBzdGEuYmluIFwKICIKK0ZJTEVTXyR7UE59LXVzYjg5OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3VzYnVzYjg5OTdfY29tYm9fdjQuYmluIFwKKyIKIAogUkRFUEVORFNfJHtQTn0tc2Q4Njg2ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1zZDg2ODggKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKQEAgLTQ1MSw2ICs0NjAsNyBAQAogUkRFUEVORFNfJHtQTn0tc2Q4ODAxICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1zZDg4ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LXNkODg5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tdXNiODk5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgogCiAjIEZvciBuZXRyb25vbWUKIExJQ0VOU0VfJHtQTn0tbmV0cm9ub21lID0gIkZpcm13YXJlLW5ldHJvbm9tZSIKQEAgLTgwMSw5ICs4MTEsOSBAQAogRklMRVNfJHtQTn0taWJ0LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmlidF9maXJtd2FyZSIKIEZJTEVTXyR7UE59LWlidC1ody0zNy03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjcqLmJzZXEiCiBGSUxFU18ke1BOfS1pYnQtaHctMzctOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy44Ki5ic2VxIgotRklMRVNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5zZmkgL2xpYi9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5kZGMiCi1GSUxFU18ke1BOfS1pYnQtMTItMTYgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5zZmkgL2xpYi9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuZGRjIgotRklMRVNfJHtQTn0taWJ0LTE3ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouc2ZpIC9saWIvZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouZGRjIgorRklMRVNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTItMTYgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuZGRjIgorRklMRVNfJHtQTn0taWJ0LTE3ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouZGRjIgogRklMRVNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pYnQtKiIKIAogUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LTcgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMKaW5kZXggYjVjZjk2ZC4uYmUyMTVhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwpAQCAtMzAsNyArMzAsNyBAQAogIwogIyAtLSBSUAogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzgxMGZhYjc0ODdmYjBhYWQzMjdiNzZmMWJlN2NkNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgogCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIG1ham9yID0gZC5nZXRWYXIoIlBWIikuc3BsaXQoJy4nKVswXQpAQCAtNTMsMTIgKzUzLDkgQEAKIAogRVhUUkFfT0VNQUtFID0gIiBIT1NUQ0M9IiR7QlVJTERfQ0N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIgogCi1kb19jb25maWd1cmUoKSB7Ci0Jb2VfcnVubWFrZSBhbGxub2NvbmZpZwotfQorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAotZG9fY29tcGlsZSAoKSB7Ci19Citkb19jb21waWxlW25vZXhlY10gPSAiMSIKIAogZG9faW5zdGFsbCgpIHsKIAlvZV9ydW5tYWtlIGhlYWRlcnNfaW5zdGFsbCBJTlNUQUxMX0hEUl9QQVRIPSR7RH0ke2V4ZWNfcHJlZml4fQpAQCAtOTIsNCArODksNCBAQAogUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLURFUEVORFMgKz0gInVuaWZkZWYtbmF0aXZlIgorREVQRU5EUyArPSAidW5pZmRlZi1uYXRpdmUgYmlzb24tbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaW5jbHVkZS1saW51eC1zdGRkZWYuaC1pbi1zd2FiLmgtdWFwaS1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxN2RhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaW5jbHVkZS1saW51eC1zdGRkZWYuaC1pbi1zd2FiLmgtdWFwaS1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA5NzA4ZGM3NGQ5ZjQ5NDg4ZDY2OWUwNzA5ODJmNjIyNGE4ODhkNjFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTIgU2VwIDIwMTggMTc6MDg6NTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBsaW51eC9zdGRkZWYuaCBpbiBzd2FiLmggdWFwaSBoZWFkZXIKKworc3dhYi5oIHVzZXMgX19hbHdheXNfaW5saW5lIHdpdGhvdXQgaW5jbHVkaW5nIHRoZSBoZWFkZXIgd2hlcmUgaXQgaXMKK2RlZmluZWQsIHRoaXMgaXMgZXhwb3NlZCBieSBtdXNsIGJhc2VkIGRpc3RyaWJ1dGlvbnMgd2hlcmUgdGhpcyBtYWNybyBpcworbm90IGRlZmluZWQgYnkgc3lzdGVtIEMgbGlicmFyeSBoZWFkZXJzIHVubGlrZSBnbGliYyB3aGVyZSBpdCBpcyBkZWZpbmVkCitpbiBzeXMvY2RlZnMuaCBhbmQgdGhhdCBoZWFkZXIgZ2V0cyBwdWxsZWQgaW4gaW5kaXJlY3RseSB2aWEKKworZmVhdHVyZXMuaCAtPiBzeXMvY2RlZnMuaAorCithbmQgZmVhdHVyZXMuaCBnZXRzIHB1bGxlZCBpbiBhIGxvdCBvZiBoZWFkZXJzLiBUaGVyZWZvcmUgaXQgbWF5IHdvcmsgaW4KK2Nhc2VzIHdoZXJlIGZlYXR1cmVzLmggaXMgaW5jbHVkZXMgYnV0IG5vdCBvdGhlcndpc2UuCisKK0FkZGluZyBsaW51eC9zdGRkZWYuaCBoZXJlIGVuc3VyZXMgdGhhdCBfX2Fsd2F5c19pbmxpbmUgaXMgYWx3YXlzCitkZWZpbmVkIGluZGVwZW5kZW50IG9mIHdoaWNoIEMgbGlicmFyeSBpcyB1c2VkIGluIHVzZXJzcGFjZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTgvOS8xMy83OF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0NjOiBQaGlsaXBwZSBPbWJyZWRhbm5lIDxwb21icmVkYW5uZUBuZXhiLmNvbT4KK0NjOiBLYXRlIFN0ZXdhcnQgPGtzdGV3YXJ0QGxpbnV4Zm91bmRhdGlvbi5vcmc+CitDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK0NjOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KKy0tLQorIGluY2x1ZGUvdWFwaS9saW51eC9zd2FiLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oCitpbmRleCAyM2NkODQ4NjhjYzMuLmFjZGRiZTUwYTIwZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgKKysrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgKK0BAIC0zLDYgKzMsNyBAQAorICNkZWZpbmUgX1VBUElfTElOVVhfU1dBQl9ICisgCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisrI2luY2x1ZGUgPGxpbnV4L3N0ZGRlZi5oPgorICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgorICNpbmNsdWRlIDxhc20vc3dhYi5oPgorIAorLS0gCisyLjE5LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2RiNGM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYwotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1tdXNsLV9kb2VzXy1kZWZpbmUtSUZGX0xPV0VSX1VQLURPUk1BTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggXAotICAgIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MTg2Y2U2M2M0ODkxOTliNThiNmE1OGFkMmEyNGE5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDQ0ZGY0YjIzYTNlMGVkYzE0YmU2M2RmOTVkNzY4Yjk2MDBiMzFjMzViZTA1ZmI4OWY5MzIyNjkwN2ZjOGM2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3YmVlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTguYmIKQEAgLTAsMCArMSwxMyBAQAorcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1saW51eC1zdGRkZWYuaC1pbi1zd2FiLmgtdWFwaS1oZWFkZXIucGF0Y2ggXAorICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmVlNWZlNTNlZTFjMzE0MmI4ZjBjMTJjMGQzMzQ4ZjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTlkOGJjZjQ5ZWY1MzBjZDRlMzY0YTQ1YjRhMjJmYTcwNzE0YjcwMzQ5YzgxMDBlNzMwODQ4OGUyNmYxZWFmMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKaW5kZXggOGJiZmEyMy4uMzYxYWQyMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKQEAgLTI1LDYyICsyNSwyMTQgQEAKIGRvX3BhdGNoW25vZXhlY10gPSAiMSIKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiBkb19jb21waWxlW25vZXhlY10gPSAiMSIKLWRvX3BvcHVsYXRlX3N5c3Jvb3Rbbm9leGVjXSA9ICIxIgorZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiAKIFMgPSAiJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgogQiA9ICIke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfSIKIAotS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25faGVhZGVycygnJHtTfScpfSIKLQogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAorS0VSTkVMX0JVSUxEX1JPT1Q9Ii9saWIvbW9kdWxlcy8iCisKIGRvX2luc3RhbGwoKSB7Ci0gICAgICAgIGtlcm5lbGRpcj0ke0R9JHtLRVJORUxfU1JDX1BBVEh9Ci0gICAgICAgIGluc3RhbGwgLWQgJGtlcm5lbGRpcgorICAgIGtlcm5lbGRpcj0ke0R9JHtLRVJORUxfQlVJTERfUk9PVH0ke0tFUk5FTF9WRVJTSU9OfQorICAgIGluc3RhbGwgLWQgJGtlcm5lbGRpcgogCi0gICAgICAgICMKLSAgICAgICAgIyBDb3B5IHRoZSBzdGFnaW5nIGRpciBzb3VyY2UgKGFuZCBtb2R1bGUgYnVpbGQgc3VwcG9ydCkgaW50byB0aGUgZGV2c3JjIHN0cnVjdHVyZS4KLSAgICAgICAgIyBXZSBjYW4ga2VlcCB0aGlzIGNvcHkgc2ltcGxlIGFuZCB0YWtlIGV2ZXJ5dGhpbmcsIHNpbmNlIGEgd2UnbGwgY2xlYW4gdXAgYW55IGJ1aWxkCi0gICAgICAgICMgYXJ0aWZhY3RzIGFmdGVyd2FyZHMsIGFuZCB0aGUgZXh0cmEgaS9vIGlzIG5vdCBzaWduaWZpY2FudAotICAgICAgICAjCi0gICAgICAgIGNkICR7Qn0KLSAgICAgICAgZmluZCAuIC10eXBlIGQgLW5hbWUgJy5naXQqJyAtcHJ1bmUgLW8gLXBhdGggJy5kZWJ1ZycgLXBydW5lIC1vIC10eXBlIGYgLXByaW50MCB8IGNwaW8gLS1udWxsIC1wZGx1ICRrZXJuZWxkaXIKLSAgICAgICAgY2QgJHtTfQotCWZpbmQgLiAtdHlwZSBkIC1uYW1lICcuZ2l0KicgLXBydW5lIC1vIC10eXBlIGQgLW5hbWUgJy5rZXJuZWwtbWV0YScgLXBydW5lIC1vIC10eXBlIGYgLXByaW50MCB8IGNwaW8gLS1udWxsIC1wZGx1ICRrZXJuZWxkaXIKKyAgICAjIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZQorICAgIHJtIC1mICRrZXJuZWxkaXIvYnVpbGQKKyAgICBybSAtZiAka2VybmVsZGlyL3NvdXJjZQorICAgIG1rZGlyIC1wICRrZXJuZWxkaXIvYnVpbGQKIAotICAgICAgICAjIEV4cGxpY2l0bHkgc2V0IEtCVUlMRF9PVVRQVVQgdG8gZW5zdXJlIHRoYXQgdGhlIGltYWdlIGRpcmVjdG9yeSBpcyBjbGVhbmVkIGFuZCBub3QKLSAgICAgICAgIyBUaGUgbWFpbiBidWlsZCBhcnRpZmFjdHMuIFdlIGNsZWFuIHRoZSBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3JzIG9uIG1pc21hdGNoZWQKLSAgICAgICAgIyBhcmNoaXRlY3R1cmUgKHNpbmNlIHNjcmlwdHMgYW5kIGhlbHBlcnMgYXJlIG5hdGl2ZSBmb3JtYXQpLgotICAgICAgICBLQlVJTERfT1VUUFVUPSIka2VybmVsZGlyIgotICAgICAgICBvZV9ydW5tYWtlIC1DICRrZXJuZWxkaXIgQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgY2xlYW4gX21ycHJvcGVyX3NjcmlwdHMKLSAgICAgICAgIyBtYWtlIGNsZWFuIGdlbmVyYXRlcyBhbiBhYnNvbHV0ZSBwYXRoIHN5bWxpbmsgY2FsbGVkICJzb3VyY2UiCi0gICAgICAgICMgaW4gJGtlcm5lbGRpciBwb2ludHMgdG8gJGtlcm5lbGRpciwgd2hpY2ggZG9lc24ndCBtYWtlIGFueQotICAgICAgICAjIHNlbnNlLCBzbyByZW1vdmUgaXQuCi0gICAgICAgIGlmIFsgLUwgJGtlcm5lbGRpci9zb3VyY2UgXTsgdGhlbgotICAgICAgICAgICAgYmJub3RlICJSZW1vdmluZyAka2VybmVsZGlyL3NvdXJjZSBzeW1saW5rIgotICAgICAgICAgICAgcm0gLWYgJGtlcm5lbGRpci9zb3VyY2UKLSAgICAgICAgZmkKKyAgICAjIGZvciBjb21wYXRpYmlsaXR5IHdpdGggc29tZSBvbGRlciB2YXJpYW50cyBvZiB0aGlzIHBhY2thZ2UsIHdlCisgICAgIyBjcmVhdGUgIGEgL3Vzci9zcmMva2VybmVsIHN5bWxpbmsgdG8gL2xpYi9tb2R1bGVzLzx2ZXJzaW9uPi9zb3VyY2UKKyAgICBta2RpciAtcCAke0R9L3Vzci9zcmMKKyAgICAoCisJY2QgJHtEfS91c3Ivc3JjCisJbG4gLXMgJHtLRVJORUxfQlVJTERfUk9PVH0ke0tFUk5FTF9WRVJTSU9OfS9zb3VyY2Uga2VybmVsCisgICAgKQogCi0gICAgICAgICMgQXMgb2YgTGludXgga2VybmVsIHZlcnNpb24gMy4wLjEsIHRoZSBjbGVhbiB0YXJnZXQgcmVtb3ZlcwotICAgICAgICAjIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gd2hpY2ggaXMgcHJlc2VudCBpbgotICAgICAgICAjIEtCVUlMRF9MREZMQUdTX01PRFVMRSwgbWFraW5nIGl0IHJlcXVpcmVkIHRvIGJ1aWxkIGV4dGVybmFsIG1vZHVsZXMuCi0gICAgICAgIGlmIFsgJHtBUkNIfSA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgbWtkaXIgLXAgJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliLwotICAgICAgICAgICAgICAgIGNwICR7Qn0vYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8KLSAgICAgICAgZmkKKyAgICAjIGZvciBvbiB0YXJnZXQgcHVycG9zZXMsIHdlIHVuaWZ5IGJ1aWxkIGFuZCBzb3VyY2UKKyAgICAoCisJY2QgJGtlcm5lbGRpcgorCWxuIC1zIGJ1aWxkIHNvdXJjZQorICAgICkKIAotICAgICAgICAjIFJlbW92ZSBmaXhkZXAvb2JqdG9vbCBhcyB0aGV5IHdvbid0IGJlIHRhcmdldCBiaW5hcmllcwotICAgICAgICBmb3IgaSBpbiBmaXhkZXAgb2JqdG9vbDsgZG8KLSAgICAgICAgICAgICAgICBpZiBbIC1lICRrZXJuZWxkaXIvdG9vbHMvb2JqdG9vbC8kaSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBybSAtcmYgJGtlcm5lbGRpci90b29scy9vYmp0b29sLyRpCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQorICAgICMgZmlyc3QgY29weSBldmVyeXRoaW5nCisgICAgKAorCWNkICR7U30KKwljcCAtLXBhcmVudHMgJChmaW5kICAtdHlwZSBmIC1uYW1lICJNYWtlZmlsZSoiIC1vIC1uYW1lICJLY29uZmlnKiIpICRrZXJuZWxkaXIvYnVpbGQKKwljcCAtLXBhcmVudHMgJChmaW5kICAtdHlwZSBmIC1uYW1lICJCdWlsZCIgLW8gLW5hbWUgIkJ1aWxkLmluY2x1ZGUiKSAka2VybmVsZGlyL2J1aWxkCisgICAgKQogCi0gICAgICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9CisgICAgIyB0aGVuIGRyb3AgYWxsIGJ1dCB0aGUgbmVlZGVkIE1ha2VmaWxlcy9LY29uZmlnIGZpbGVzCisgICAgcm0gLXJmICRrZXJuZWxkaXIvYnVpbGQvRG9jdW1lbnRhdGlvbgorICAgIHJtIC1yZiAka2VybmVsZGlyL2J1aWxkL3NjcmlwdHMKKyAgICBybSAtcmYgJGtlcm5lbGRpci9idWlsZC9pbmNsdWRlCisKKyAgICAjIG5vdyBjb3B5IGluIHBhcnRzIGZyb20gdGhlIGJ1aWxkIHRoYXQgd2UnbGwgbmVlZCBsYXRlcgorICAgICgKKwljZCAke0J9CisKKwljcCBNb2R1bGUuc3ltdmVycyAka2VybmVsZGlyL2J1aWxkCisJY3AgU3lzdGVtLm1hcCogJGtlcm5lbGRpci9idWlsZAorCWlmIFsgLXMgTW9kdWxlLm1hcmtlcnMgXTsgdGhlbgorCSAgICBjcCBNb2R1bGUubWFya2VycyAka2VybmVsZGlyL2J1aWxkCisJZmkKKworCWNwIC5jb25maWcgJGtlcm5lbGRpci9idWlsZAorCisJIyBUaGlzIHNjcmlwdHMgY29weSBibG93IHVwIFFBLCBzbyBmb3Igbm93LCB3ZSByZXF1aXJlIGEgbW9yZQorCSMgY29tcGxleCAnbWFrZSBzY3JpcHRzJyB0byByZXN0b3JlIHRoZXNlLCB2ZXJzdXMgY29weWluZyB0aGVtCisJIyBoZXJlLiBMZWZ0IGFzIGEgcmVmZXJlbmNlIHRvIGluZGljYXRlIHRoYXQgd2Uga25vdyB0aGUgc2NyaXB0cyBtdXN0CisJIyBiZSBkZWFsdCB3aXRoLgorCSMgY3AgLWEgc2NyaXB0cyAka2VybmVsZGlyL2J1aWxkCisKKyAgICAgICAgaWYgWyAtZCBhcmNoLyR7QVJDSH0vc2NyaXB0cyBdOyB0aGVuCisJICAgIGNwIC1hIGFyY2gvJHtBUkNIfS9zY3JpcHRzICRrZXJuZWxkaXIvYnVpbGQvYXJjaC8ke0FSQ0h9CisJZmkKKwlpZiBbIC1mIGFyY2gvJHtBUkNIfS8qbGRzIF07IHRoZW4KKwkgICAgY3AgLWEgYXJjaC8ke0FSQ0h9LypsZHMgJGtlcm5lbGRpci9idWlsZC9hcmNoLyR7QVJDSH0KKwlmaQorCisJcm0gLWYgJGtlcm5lbGRpci9idWlsZC9zY3JpcHRzLyoubworCXJtIC1mICRrZXJuZWxkaXIvYnVpbGQvc2NyaXB0cy8qLyoubworCisJaWYgWyAiJHtBUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorCSAgICBpZiBbIC1lIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLlMgXSB8fAorCQkgICBbIC1lIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gXTsgdGhlbgorCQljcCAtYSAtLXBhcmVudHMgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMuW1NvXSAka2VybmVsZGlyL2J1aWxkLworCSAgICBmaQorCWZpCisKKwlpZiBbICIke0FSQ0h9IiA9ICJhcm02NCIgXTsgdGhlbgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcyAka2VybmVsZGlyL2J1aWxkLworCWZpCisKKwljcCAtYSBpbmNsdWRlICRrZXJuZWxkaXIvYnVpbGQvaW5jbHVkZQorICAgICkKKworICAgICMgbm93IGdyYWIgdGhlIGNodW5rcyBmcm9tIHRoZSBzb3VyY2UgdHJlZSB0aGF0IHdlIG5lZWQKKyAgICAoCisJY2QgJHtTfQorCisJY3AgLWEgc2NyaXB0cyAka2VybmVsZGlyL2J1aWxkCisKKwkjIGlmIG91ciBidWlsZCBkaXIgaGFkIG9ianRvb2wsIGl0IHdpbGwgYWxzbyBiZSByZWJ1aWx0IG9uIHRhcmdldCwgc28KKwkjIHdlIGNvcHkgd2hhdCBpcyByZXF1aXJlZCBmb3IgdGhhdCBidWlsZAorCWlmIFsgLWYgJHtCfS90b29scy9vYmp0b29sL29ianRvb2wgXTsgdGhlbgorCSAgICAjIHRoZXNlIGFyZSBhIGZldyBmaWxlcyBhc3NvY2lhdGVkIHdpdGggb2JqdG9vbCwgc2luY2Ugd2UnbGwgbmVlZCB0bworCSAgICAjIHJlYnVpbGQgaXQKKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2J1aWxkL0J1aWxkLmluY2x1ZGUgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2J1aWxkL0J1aWxkICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9idWlsZC9maXhkZXAuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvc2NyaXB0cy91dGlsaXRpZXMubWFrICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgIyBleHRyYSBmaWxlcywganVzdCBpbiBjYXNlCisJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9vYmp0b29sLyogJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdHJfZXJyb3Jfci5jICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9saWIvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdWJjbWQvKiAka2VybmVsZGlyL2J1aWxkLworCisJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlLyogJGtlcm5lbGRpci9idWlsZC8KKwlmaQorCisJaWYgWyAiJHtBUkNIfSIgPSAiYXJtNjQiIF07IHRoZW4KKwkgICAgIyBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3hlbiByZWZlcmVuY2VzIGFyY2gvYXJtCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybS9pbmNsdWRlL2FzbS94ZW4gJGtlcm5lbGRpci9idWlsZC8KKwkgICAgIyBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL29wY29kZXMuaCByZWZlcmVuY2VzIGFyY2gvYXJtCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybS9pbmNsdWRlL2FzbS9vcGNvZGVzLmggJGtlcm5lbGRpci9idWlsZC8KKworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vZ2V0dGltZW9mZGF5LlMgJGtlcm5lbGRpci9idWlsZC8KKyAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL3NpZ3JldHVybi5TICRrZXJuZWxkaXIvYnVpbGQvCisgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9ub3RlLlMgJGtlcm5lbGRpci9idWlsZC8KKyAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL2dlbl92ZHNvX29mZnNldHMuc2ggJGtlcm5lbGRpci9idWlsZC8KKworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5sZHMgJGtlcm5lbGRpci9idWlsZC8KKwlmaQorCisJIyBpbmNsdWRlIHRoZSBtYWNoaW5lIHNwZWNpZmljIGhlYWRlcnMgZm9yIEFSTSB2YXJpYW50cywgaWYgYXZhaWxhYmxlLgorCWlmIFsgIiR7QVJDSH0iID0gImFybSIgXTsgdGhlbgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC8ke0FSQ0h9L21hY2gtKi9pbmNsdWRlICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgIyBpbmNsdWRlIGEgZmV3IGZpbGVzIGZvciAnbWFrZSBwcmVwYXJlJworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm0vdG9vbHMvZ2VuLW1hY2gtdHlwZXMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtL3Rvb2xzL21hY2gtdHlwZXMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwqICRrZXJuZWxkaXIvYnVpbGQvCisKKyAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybS9rZXJuZWwvbW9kdWxlLmxkcyAka2VybmVsZGlyL2J1aWxkLworCWZpCisKKwlpZiBbIC1kIGFyY2gvJHtBUkNIfS9pbmNsdWRlIF07IHRoZW4KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvJHtBUkNIfS9pbmNsdWRlICRrZXJuZWxkaXIvYnVpbGQvCisJZmkKKworCWNwIC1hIGluY2x1ZGUgJGtlcm5lbGRpci9idWlsZAorCisJY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2luY2x1ZGUvdG9vbHMvbGVfYnl0ZXNoaWZ0LmggJGtlcm5lbGRpci9idWlsZC8KKwljcCAtYSAtLXBhcmVudHMgdG9vbHMvaW5jbHVkZS90b29scy9iZV9ieXRlc2hpZnQuaCAka2VybmVsZGlyL2J1aWxkLworCisJIyByZXF1aXJlZCBmb3IgZ2VuZXJhdGUgbWlzc2luZyBzeXNjYWxscyBwcmVwYXJlIHBoYXNlCisJY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsICRrZXJuZWxkaXIvYnVpbGQKKworCWlmIFsgIiR7QVJDSH0iID0gIng4NiIgXTsgdGhlbgorCSAgICAjIGZpbGVzIGZvciAnbWFrZSBwcmVwYXJlJyB0byBzdWNjZWVkIHdpdGgga2VybmVsLWRldmVsCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbHRibC5zaCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbGhkci5zaCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc18zMi5jICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfNjQuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc19jb21tb24uYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzLmggJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3B1cmdhdG9yeS9wdXJnYXRvcnkuYyAka2VybmVsZGlyL2J1aWxkLworCisJICAgICMgNC4xOCArIGhhdmUgdW5pZmllZCB0aGUgcHVyZ2F0b3J5IGZpbGVzLCBzbyB3ZSBpZ25vcmUgYW55IGVycm9ycyBpZgorCSAgICAjIHRoZXNlIGZpbGVzIGFyZSBub3QgcHJlc2VudAorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3NoYTI1Ni5oICRrZXJuZWxkaXIvYnVpbGQvIDI+L2Rldi9udWxsIHx8IDoKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3B1cmdhdG9yeS9zaGEyNTYuYyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CisKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3B1cmdhdG9yeS9zdGFjay5TICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9wdXJnYXRvcnkvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3B1cmdhdG9yeS9zZXR1cC14ODZfNjQuUyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L2VudHJ5NjQuUyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvYm9vdC9zdHJpbmcuaCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvYm9vdC9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvYm9vdC9jdHlwZS5oICRrZXJuZWxkaXIvYnVpbGQvCisJZmkKKworCWlmIFsgIiR7QVJDSH0iID0gIm1pcHMiIF07IHRoZW4KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvbWlwcy9LYnVpbGQucGxhdGZvcm1zICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC0tcGFyZW50cyAkKGZpbmQJIC10eXBlIGYgLW5hbWUgIlBsYXRmb3JtIikgJGtlcm5lbGRpci9idWlsZAorCSAgICBjcCAtLXBhcmVudHMgYXJjaC9taXBzL2Jvb3QvdG9vbHMvcmVsb2NzKiAka2VybmVsZGlyL2J1aWxkCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL21pcHMva2VybmVsL2FzbS1vZmZzZXRzLmMgJGtlcm5lbGRpci9idWlsZAorCSAgICBjcCAtYSAtLXBhcmVudHMga2VybmVsL3RpbWUvdGltZWNvbnN0LmJjICRrZXJuZWxkaXIvYnVpbGQKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGtlcm5lbC9ib3VuZHMuYyAka2VybmVsZGlyL2J1aWxkCisJICAgIGNwIC1hIC0tcGFyZW50cyBLYnVpbGQgJGtlcm5lbGRpci9idWlsZAorCWZpCisKKyAgICAgICAgIyByZXF1aXJlZCB0byBidWlsZCBzY3JpcHRzL3NlbGludXgvZ2VuaGVhZGVycy9nZW5oZWFkZXJzCisgICAgICAgIGNwIC1hIC0tcGFyZW50cyBzZWN1cml0eS9zZWxpbnV4L2luY2x1ZGUvKiAka2VybmVsZGlyL2J1aWxkLworICAgICkKKworICAgICMgTWFrZSBzdXJlIHRoZSBNYWtlZmlsZSBhbmQgdmVyc2lvbi5oIGhhdmUgYSBtYXRjaGluZyB0aW1lc3RhbXAgc28gdGhhdAorICAgICMgZXh0ZXJuYWwgbW9kdWxlcyBjYW4gYmUgYnVpbHQKKyAgICB0b3VjaCAtciAka2VybmVsZGlyL2J1aWxkL01ha2VmaWxlICRrZXJuZWxkaXIvYnVpbGQvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9saW51eC92ZXJzaW9uLmgKKworICAgICMgQ29weSAuY29uZmlnIHRvIGluY2x1ZGUvY29uZmlnL2F1dG8uY29uZiBzbyAibWFrZSBwcmVwYXJlIiBpcyB1bm5lY2Vzc2FyeS4KKyAgICBjcCAka2VybmVsZGlyL2J1aWxkLy5jb25maWcgJGtlcm5lbGRpci9idWlsZC9pbmNsdWRlL2NvbmZpZy9hdXRvLmNvbmYKKworICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9CiB9CisKICMgRW5zdXJlIHdlIGRvbid0IHJhY2UgYWdhaW5zdCAibWFrZSBzY3JpcHRzIiBkdXJpbmcgY3BpbwogZG9faW5zdGFsbFtsb2NrZmlsZXNdID0gIiR7VE1QRElSfS9rZXJuZWwtc2NyaXB0cy5sb2NrIgogCi1QQUNLQUdFUyA9ICJrZXJuZWwtZGV2c3JjIgotRklMRVNfJHtQTn0gPSAiJHtLRVJORUxfU1JDX1BBVEh9IgotUkRFUEVORFNfJHtQTn0gPSAiYmMiCitGSUxFU18ke1BOfSA9ICIke0tFUk5FTF9CVUlMRF9ST09UfSAke0tFUk5FTF9TUkNfUEFUSH0iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7S0VSTkVMX0JVSUxEX1JPT1R9Ki9idWlsZC9zY3JpcHRzLyovLmRlYnVnLyoiCisKK1JERVBFTkRTXyR7UE59ID0gImJjIHB5dGhvbiBmbGV4IGJpc29uICR7VENMSUJDfS11dGlscyIKKyMgNC4xNSsgbmVlZHMgdGhlc2UgbmV4dCB0d28gUkRFUEVORFMKK1JERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsLWRldiB1dGlsLWxpbnV4IgorIyBhbmQgeDg2IG5lZWRzIGEgYml0IG1vcmUgZm9yIDQuMTUrCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCmluZGV4IDQyMDFmYWYuLjIzY2IzNTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMTAsNiArMTAsOCBAQAogCiBpbmhlcml0IGtlcm5lbAogcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKyMgZm9yIG5jdXJzZXMgdGVzdHMKK2luaGVyaXQgcGtnY29uZmlnCiAKICMgcHJvdmlkZSB0aGlzIC5pbmMgdG8gc2V0IHNwZWNpZmljIHJldmlzaW9ucwogaW5jbHVkZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYtcmV2aXNpb25zLmluYwpAQCAtMjgsMTAgKzMwLDEyIEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xNi1yYysiCitMSU5VWF9WRVJTSU9OID89ICI0LjE5LXJjKyIKIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID89ICIteW9jdG9kZXYtJHtMSU5VWF9LRVJORUxfVFlQRX0iCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKwogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCiBERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZhOGI2MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCi19Ci0KLVNSQ1JFVl9tYWNoaW5lID89ICJlZjg4YzMzMjZmNjJjZWM0Yjk4MzQwMzI0ZGRiZTdmN2Y3NzA0ZmQ1IgotU1JDUkVWX21ldGEgPz0gIjJhZTY1MjI2ZjY0ZWQ1Yzg4OGQ2MGVlZjc2YjYyNDlkYjY3OGQwNjAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMi5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjgiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdXBwY3xxZW11bWlwcykiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNjZhNDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1LQlJBTkNIID89ICJ2NC4xNS9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiZTI1ZGJmZTk1MzAyZWVhYTFhMDNhODI4ZDA1YzA5NDc5NTc0NDg4YSIKLVNSQ1JFVl9tZXRhID89ICI0NWMyNTZhNWNhNmY5NDc4YmNlMjEyZmVjMTllMmJjMjczNDcyNjMxIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xNS4xOCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzdkZTNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTguYmIKQEAgLTAsMCArMSw0MyBAQAorS0JSQU5DSCA/PSAidjQuMTgvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCisjIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZworIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgorIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKworU1JDUkVWX21hY2hpbmUgPz0gIjhlMDBjMzBjZTIyZjM3OGVjYjdmMjQzYjFkZjNkMjA5YjhlZTI5YmMiCitTUkNSRVZfbWV0YSA/PSAiYmY5OGUxOTVhNGNmMjQwNGEwNjQwNTZiMzU5M2U4M2E3ZGU4NGYyNSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE4O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTguMTQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVhcm02NHxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNGVmM2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEyLjI4IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiZTU2MjI2N2JhZTViNTE4YWNjYTg4MGM5MjlmYmJkZjZiZTA0N2UwYSIKLVNSQ1JFVl9tZXRhID89ICIyYWU2NTIyNmY2NGVkNWM4ODhkNjBlZWY3NmI2MjQ5ZGI2NzhkMDYwIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjliM2M3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1LQlJBTkNIID89ICJ2NC4xNS9zdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xNS4xOCIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmUgPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWV0YSA/PSAiNDVjMjU2YTVjYTZmOTQ3OGJjZTIxMmZlYzE5ZTJiYzI3MzQ3MjYzMSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE1O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkxZDQxYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTguYmIKQEAgLTAsMCArMSwyOSBAQAorS0JSQU5DSCA/PSAidjQuMTgvc3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTguMTQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworU1JDUkVWX21hY2hpbmUgPz0gIjMzODU5YjMwNzdjODNkOGEwMjQ5NDZiYTA2YTU5OTkwNTQ2ZmNiYzciCitTUkNSRVZfbWV0YSA/PSAiYmY5OGUxOTVhNGNmMjQwNGEwNjQwNTZiMzU5M2U4M2E3ZGU4NGYyNSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE4O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0ZFQVRVUkVTID0gIiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKaW5kZXggM2JiODcyYS4uMWViZmI2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCkBAIC0yLDcgKzIsNyBAQAogU0VDVElPTiA9ICJrZXJuZWwiCiBMSUNFTlNFID0gIkdQTHYyIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzgxMGZhYjc0ODdmYjBhYWQzMjdiNzZmMWJlN2NkNyIKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzgxMGZhYjc0ODdmYjBhYWQzMjdiNzZmMWJlN2NkNyIKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCiAKQEAgLTI4LDYgKzI4LDggQEAKIAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgZmVhdHVyZXMvZGVidWcvcHJpbnRrLnNjYyIKIAorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnbnVtYScsICdmZWF0dXJlcy9udW1hL251bWEuc2NjJywgJycsIGQpfSIKKwogIyBBIEtNQUNISU5FIGlzIHRoZSBtYXBwaW5nIG9mIGEgeW9jdG8gJE1BQ0hJTkUgdG8gd2hhdCBpcyBidWlsdAogIyBieSB0aGUga2VybmVsLiBUaGlzIGlzIHR5cGljYWxseSB0aGUgYnJhbmNoIHRoYXQgc2hvdWxkIGJlIGJ1aWx0LAogIyBhbmQgaXQgY2FuIGJlIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIG9yIHNoYXJlZApAQCAtNjcsMyArNjksNiBAQAogYWRkdGFzayBrZXJuZWxfdmVyc2lvbl9zYW5pdHlfY2hlY2sgYWZ0ZXIgZG9fa2VybmVsX21ldGFkYXRhIGRvX2tlcm5lbF9jaGVja291dCBiZWZvcmUgZG9fY29tcGlsZQogYWRkdGFzayB2YWxpZGF0ZV9icmFuY2hlcyBiZWZvcmUgZG9fcGF0Y2ggYWZ0ZXIgZG9fa2VybmVsX2NoZWNrb3V0CiBhZGR0YXNrIGtlcm5lbF9jb25maWdjaGVjayBhZnRlciBkb19jb25maWd1cmUgYmVmb3JlIGRvX2NvbXBpbGUKKworIyBlbmFibGUga2VybmVsLXNhbXBsZSBmb3Igb2VxYS9ydW50aW1lL2Nhc2VzJ3Mga3NhbXBsZS5weSB0ZXN0CitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBmZWF0dXJlcy9rZXJuZWwtc2FtcGxlL2tlcm5lbC1zYW1wbGUuc2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlYTA1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKLUtCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJiODRlY2VmYzI0M2E2ZWQ2N2Q4YjYwMjAzOTQ5NjNkZTEyNDBhOWYwIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJlNTYyMjY3YmFlNWI1MThhY2NhODgwYzkyOWZiYmRmNmJlMDQ3ZTBhIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjE1YjFhYjY4ZjczZmE2MGRkOTVhNzRjNjQwZTg3ZTA1ZmFkMTcxNmQiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJlNTYyMjY3YmFlNWI1MThhY2NhODgwYzkyOWZiYmRmNmJlMDQ3ZTBhIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZTU2MjI2N2JhZTViNTE4YWNjYTg4MGM5MjlmYmJkZjZiZTA0N2UwYSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImU1NjIyNjdiYWU1YjUxOGFjY2E4ODBjOTI5ZmJiZGY2YmUwNDdlMGEiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI1N2EzZjcyYTAyMGZjODRmMmRhNWIwYjRjNWRlNGNkYmMyMmIzMjg0IgotU1JDUkVWX21hY2hpbmUgPz0gImU1NjIyNjdiYWU1YjUxOGFjY2E4ODBjOTI5ZmJiZGY2YmUwNDdlMGEiCi1TUkNSRVZfbWV0YSA/PSAiMmFlNjUyMjZmNjRlZDVjODg4ZDYwZWVmNzZiNjI0OWRiNjc4ZDA2MCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEyLjI4IgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkzNjcwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE1L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInY0LjE1L3N0YW5kYXJkL3FlbXVhcm02NCIKLUtCUkFOQ0hfcWVtdW1pcHMgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAidjQuMTUvc3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXVtaXBzNjQgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJkMTZiMTBmYjY5OTc0ZjE4MDRhMDJmMjY3OGY0MGQyMmM4MDUyNmNmIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJlMjVkYmZlOTUzMDJlZWFhMWEwM2E4MjhkMDVjMDk0Nzk1NzQ0ODhhIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjE4MmVhZWZhYjcxMmY0MzYwMTI2ZTA0NGM3NThlNzVkNzYzZDA1YzQiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJlMjVkYmZlOTUzMDJlZWFhMWEwM2E4MjhkMDVjMDk0Nzk1NzQ0ODhhIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZTI1ZGJmZTk1MzAyZWVhYTFhMDNhODI4ZDA1YzA5NDc5NTc0NDg4YSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJjZTM4NzZhMDkxNDc3MjYwZmNiMTE5N2UzYzY1NjVkZmJmOWM2ZTgwIgotU1JDUkVWX21hY2hpbmUgPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWV0YSA/PSAiNDVjMjU2YTVjYTZmOTQ3OGJjZTIxMmZlYzE5ZTJiYzI3MzQ3MjYzMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE1LjE4IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTE2MGNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTguYmIKQEAgLTAsMCArMSw0OCBAQAorS0JSQU5DSCA/PSAidjQuMTgvc3RhbmRhcmQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcworS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTgvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIX3FlbXVhcm02NCA/PSAidjQuMTgvc3RhbmRhcmQvcWVtdWFybTY0IgorS0JSQU5DSF9xZW11bWlwcyA/PSAidjQuMTgvc3RhbmRhcmQvbXRpLW1hbHRhMzIiCitLQlJBTkNIX3FlbXVwcGMgID89ICJ2NC4xOC9zdGFuZGFyZC9xZW11cHBjIgorS0JSQU5DSF9xZW11eDg2ICA/PSAidjQuMTgvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjQuMTgvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjQuMTgvc3RhbmRhcmQvbXRpLW1hbHRhNjQiCisKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjA1NzNlZDNjNzM3YzgyYjI0ZmQ2NjFjYzVlYTk2MWNhYzA3ZWEyZmUiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjMzODU5YjMwNzdjODNkOGEwMjQ5NDZiYTA2YTU5OTkwNTQ2ZmNiYzciCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNDY1MjUyYmEwZWMwMGFlMTAzOTdjYjQ2MjNjM2Q3N2M4OWU1NDJhNSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjMzODU5YjMwNzdjODNkOGEwMjQ5NDZiYTA2YTU5OTkwNTQ2ZmNiYzciCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICIzMzg1OWIzMDc3YzgzZDhhMDI0OTQ2YmEwNmE1OTk5MDU0NmZjYmM3IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiMzM4NTliMzA3N2M4M2Q4YTAyNDk0NmJhMDZhNTk5OTA1NDZmY2JjNyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjZkOTFkYzYyODExZjQ2ODhlZmM2Nzg0NTE4NTg1ODY0NWI0Y2NmYjgiCitTUkNSRVZfbWFjaGluZSA/PSAiMzM4NTliMzA3N2M4M2Q4YTAyNDk0NmJhMDZhNTk5OTA1NDZmY2JjNyIKK1NSQ1JFVl9tZXRhID89ICJiZjk4ZTE5NWE0Y2YyNDA0YTA2NDA1NmIzNTkzZTgzYTdkZTg0ZjI1IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE4O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorTElOVVhfVkVSU0lPTiA/PSAiNC4xOC4xNCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyOTQwMmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJhYmVsdHJhY2UgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCi1ERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2JhYmVsdHJhY2UvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCi0KLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9maWxlcy9iYWJlbHRyYWNlL2JhYmVsdHJhY2UtJHtQVn0udGFyLmJ6MiBcCi0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNlOGNkYWZlYzNhYzAzNDZhMzg5ODcwZTg3YmYxMzQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2NDMwMzk5MjNhMGFiYzc1YTI1YjNkNTk0Y2VlMDAxNzQyM2I1N2YxMGQyYjYyNWU5NmVkMWU4ZDQ4OTFmYzEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YzMxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNi5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkJhYmVsdHJhY2UgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCitERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2JhYmVsdHJhY2UvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGludXhmb3VuZGF0aW9uLm9yZy9kaWFtb24vYmFiZWx0cmFjZS5naXQ7YnJhbmNoPXN0YWJsZS0xLjUiCitTUkNSRVYgPSAiNGYxMGE0YWRhYmVlNWNhNjFjMjdiYTM5OWIzNDM4NTA1ZTBjZDZkZSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgorCitBU05FRURFRCA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy8wMDAxLUZpeC1idHJmcy1SZW1vdmUtdW5uZWNlc3NhcnktZnNfaW5mby1wYXJhbWV0ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy8wMDAxLUZpeC1idHJmcy1SZW1vdmUtdW5uZWNlc3NhcnktZnNfaW5mby1wYXJhbWV0ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlNGVlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzLzAwMDEtRml4LWJ0cmZzLVJlbW92ZS11bm5lY2Vzc2FyeS1mc19pbmZvLXBhcmFtZXRlci5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSA1MWFiMGIxZGEyOTM1NDM3NWExOWY4NjVhYmNkMjMzZGQyMTc4Mjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CitEYXRlOiBNb24sIDE4IEp1biAyMDE4IDE0OjUzOjE5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeDogYnRyZnM6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmc19pbmZvIHBhcmFtZXRlcgorCitTZWUgdXBzdHJlYW0gY29tbWl0OgorCisgIGNvbW1pdCAzZGNhNWM5NDJkYWM2MDE2NGU2YTZlODkxNzJmMjViODZhZjA3Y2U3CisgIEF1dGhvcjogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+CisgIERhdGU6ICAgVGh1IEFwciAyNiAxNDoyNDoyNSAyMDE4ICswODAwCisKKyAgICBidHJmczogdHJhY2U6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmc19pbmZvIHBhcmFtZXRlciBmb3IgYnRyZnNfX3Jlc2VydmVfZXh0ZW50IGV2ZW50IGNsYXNzCisKKyAgICBmc19pbmZvIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBidHJmc19ibG9ja19ncm91cF9jYWNoZSwgYW5kIGFsbAorICAgIGJ0cmZzX2Jsb2NrX2dyb3VwX2NhY2hlIGlzIGNyZWF0ZWQgYnkgYnRyZnNfY3JlYXRlX2Jsb2NrX2dyb3VwX2NhY2hlKCkKKyAgICB3aXRoIGZzX2luZm8gaW5pdGlhbGl6ZWQsIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgTlVMTCBwb2ludGVyCisgICAgZGVyZWZlcmVuY2UuCisKK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSmVhbnNvbiA8bWplYW5zb25AZWZmaWNpb3MuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0aGlldSBEZXNub3llcnMgPG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyBpbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9idHJmcy5oIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5zdHJ1bWVudGF0aW9uL2V2ZW50cy9sdHRuZy1tb2R1bGUvYnRyZnMuaCBiL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL2J0cmZzLmgKK2luZGV4IDc1Y2M3M2IuLmZkMWI2YjggMTAwNjQ0CistLS0gYS9pbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9idHJmcy5oCisrKysgYi9pbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9idHJmcy5oCitAQCAtMTY1OCw4ICsxNjU4LDU3IEBAIExUVE5HX1RSQUNFUE9JTlRfRVZFTlRfSU5TVEFOQ0UoYnRyZnNfX3Jlc2VydmVkX2V4dGVudCwgIGJ0cmZzX3Jlc2VydmVkX2V4dGVudF9mCisgCisgI2VuZGlmIC8qICNlbHNlICNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsMTAsMCkpICovCisgCistI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwxNCwwKSkKKysjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LDE4LDApKQorK0xUVE5HX1RSQUNFUE9JTlRfRVZFTlRfTUFQKGZpbmRfZnJlZV9leHRlbnQsCisrCisrCWJ0cmZzX2ZpbmRfZnJlZV9leHRlbnQsCisrCisrCVRQX1BST1RPKGNvbnN0IHN0cnVjdCBidHJmc19mc19pbmZvICppbmZvLCB1NjQgbnVtX2J5dGVzLCB1NjQgZW1wdHlfc2l6ZSwKKysJCSB1NjQgZGF0YSksCisrCisrCVRQX0FSR1MoaW5mbywgbnVtX2J5dGVzLCBlbXB0eV9zaXplLCBkYXRhKSwKKysKKysJVFBfRklFTERTKAorKwkJY3RmX2FycmF5KHU4LCBmc2lkLCBpbmZvLT5mc2lkLCBCVFJGU19VVUlEX1NJWkUpCisrCQljdGZfaW50ZWdlcih1NjQsIG51bV9ieXRlcywgbnVtX2J5dGVzKQorKwkJY3RmX2ludGVnZXIodTY0LCBlbXB0eV9zaXplLCBlbXB0eV9zaXplKQorKwkJY3RmX2ludGVnZXIodTY0LCBkYXRhLCBkYXRhKQorKwkpCisrKQorKworK0xUVE5HX1RSQUNFUE9JTlRfRVZFTlRfQ0xBU1MoYnRyZnNfX3Jlc2VydmVfZXh0ZW50LAorKworKwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgYnRyZnNfYmxvY2tfZ3JvdXBfY2FjaGUgKmJsb2NrX2dyb3VwLCB1NjQgc3RhcnQsCisrCQkgdTY0IGxlbiksCisrCisrCVRQX0FSR1MoYmxvY2tfZ3JvdXAsIHN0YXJ0LCBsZW4pLAorKworKwlUUF9GSUVMRFMoCisrCQljdGZfYXJyYXkodTgsIGZzaWQsIGJsb2NrX2dyb3VwLT5mc19pbmZvLT5mc2lkLCBCVFJGU19VVUlEX1NJWkUpCisrCQljdGZfaW50ZWdlcih1NjQsIGJnX29iamVjdGlkLCBibG9ja19ncm91cC0+a2V5Lm9iamVjdGlkKQorKwkJY3RmX2ludGVnZXIodTY0LCBmbGFncywgYmxvY2tfZ3JvdXAtPmZsYWdzKQorKwkJY3RmX2ludGVnZXIodTY0LCBzdGFydCwgc3RhcnQpCisrCQljdGZfaW50ZWdlcih1NjQsIGxlbiwgbGVuKQorKwkpCisrKQorKworK0xUVE5HX1RSQUNFUE9JTlRfRVZFTlRfSU5TVEFOQ0UoYnRyZnNfX3Jlc2VydmVfZXh0ZW50LCBidHJmc19yZXNlcnZlX2V4dGVudCwKKysKKysJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGJ0cmZzX2Jsb2NrX2dyb3VwX2NhY2hlICpibG9ja19ncm91cCwgdTY0IHN0YXJ0LAorKwkJIHU2NCBsZW4pLAorKworKwlUUF9BUkdTKGJsb2NrX2dyb3VwLCBzdGFydCwgbGVuKQorKykKKysKKytMVFROR19UUkFDRVBPSU5UX0VWRU5UX0lOU1RBTkNFKGJ0cmZzX19yZXNlcnZlX2V4dGVudCwgYnRyZnNfcmVzZXJ2ZV9leHRlbnRfY2x1c3RlciwKKysKKysJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGJ0cmZzX2Jsb2NrX2dyb3VwX2NhY2hlICpibG9ja19ncm91cCwgdTY0IHN0YXJ0LAorKwkJIHU2NCBsZW4pLAorKworKwlUUF9BUkdTKGJsb2NrX2dyb3VwLCBzdGFydCwgbGVuKQorKykKKyAKKysjZWxpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsMTQsMCkpCisgTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVF9NQVAoZmluZF9mcmVlX2V4dGVudCwKKyAKKyAJYnRyZnNfZmluZF9mcmVlX2V4dGVudCwKK0BAIC0xNjcwLDYgKzE3MTksNyBAQCBMVFROR19UUkFDRVBPSU5UX0VWRU5UX01BUChmaW5kX2ZyZWVfZXh0ZW50LAorIAlUUF9BUkdTKGluZm8sIG51bV9ieXRlcywgZW1wdHlfc2l6ZSwgZGF0YSksCisgCisgCVRQX0ZJRUxEUygKKysJCWN0Zl9hcnJheSh1OCwgZnNpZCwgaW5mby0+ZnNpZCwgQlRSRlNfVVVJRF9TSVpFKQorIAkJY3RmX2ludGVnZXIodTY0LCBudW1fYnl0ZXMsIG51bV9ieXRlcykKKyAJCWN0Zl9pbnRlZ2VyKHU2NCwgZW1wdHlfc2l6ZSwgZW1wdHlfc2l6ZSkKKyAJCWN0Zl9pbnRlZ2VyKHU2NCwgZGF0YSwgZGF0YSkKK0BAIC0xNjg1LDYgKzE3MzUsNyBAQCBMVFROR19UUkFDRVBPSU5UX0VWRU5UX0NMQVNTKGJ0cmZzX19yZXNlcnZlX2V4dGVudCwKKyAJVFBfQVJHUyhpbmZvLCBibG9ja19ncm91cCwgc3RhcnQsIGxlbiksCisgCisgCVRQX0ZJRUxEUygKKysJCWN0Zl9hcnJheSh1OCwgZnNpZCwgaW5mby0+ZnNpZCwgQlRSRlNfVVVJRF9TSVpFKQorIAkJY3RmX2ludGVnZXIodTY0LCBiZ19vYmplY3RpZCwgYmxvY2tfZ3JvdXAtPmtleS5vYmplY3RpZCkKKyAJCWN0Zl9pbnRlZ2VyKHU2NCwgZmxhZ3MsIGJsb2NrX2dyb3VwLT5mbGFncykKKyAJCWN0Zl9pbnRlZ2VyKHU2NCwgc3RhcnQsIHN0YXJ0KQorQEAgLTE3MjIsNiArMTc3Myw3IEBAIExUVE5HX1RSQUNFUE9JTlRfRVZFTlRfTUFQKGZpbmRfZnJlZV9leHRlbnQsCisgCVRQX0FSR1MoaW5mbywgbnVtX2J5dGVzLCBlbXB0eV9zaXplLCBkYXRhKSwKKyAKKyAJVFBfRklFTERTKAorKwkJY3RmX2FycmF5KHU4LCBmc2lkLCBpbmZvLT5mc2lkLCBCVFJGU19VVUlEX1NJWkUpCisgCQljdGZfaW50ZWdlcih1NjQsIG51bV9ieXRlcywgbnVtX2J5dGVzKQorIAkJY3RmX2ludGVnZXIodTY0LCBlbXB0eV9zaXplLCBlbXB0eV9zaXplKQorIAkJY3RmX2ludGVnZXIodTY0LCBkYXRhLCBkYXRhKQorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvMDAwMS1GaXgtbmV0LWV4cG9zZS1zay13bWVtLWluLXNvY2tfZXhjZWVkX2J1Zl9saW1pdC10cmFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvMDAwMS1GaXgtbmV0LWV4cG9zZS1zay13bWVtLWluLXNvY2tfZXhjZWVkX2J1Zl9saW1pdC10cmFjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZTEyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy8wMDAxLUZpeC1uZXQtZXhwb3NlLXNrLXdtZW0taW4tc29ja19leGNlZWRfYnVmX2xpbWl0LXRyYWMucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorRnJvbSA5ZTY3YjRjOTRiOTQ0OTMxMjNkMzgzNzliZDliM2VjZWFlMjNhNmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CitEYXRlOiBGcmksIDcgU2VwIDIwMTggMTI6MjE6MTIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4OiBuZXQ6IGV4cG9zZSBzayB3bWVtIGluIHNvY2tfZXhjZWVkX2J1Zl9saW1pdCB0cmFjZXBvaW50CisgKDQuMTkpCisKK1NlZSB1cHN0cmVhbSBjb21taXQ6CisKKyAgY29tbWl0IGQ2ZjE5OTM4ZWIwMzFlZTIxNTgyNzI3NTdkYjMzMjU4MTUzYWU1OWMKKyAgQXV0aG9yOiBZYWZhbmcgU2hhbyA8bGFvYXIuc2hhb0BnbWFpbC5jb20+CisgIERhdGU6ICAgU3VuIEp1bCAxIDIzOjMxOjMwIDIwMTggKzA4MDAKKworICAgIG5ldDogZXhwb3NlIHNrIHdtZW0gaW4gc29ja19leGNlZWRfYnVmX2xpbWl0IHRyYWNlcG9pbnQKKworICAgIEN1cnJlbnRseSB0cmFjZV9zb2NrX2V4Y2VlZF9idWZfbGltaXQoKSBvbmx5IHNob3cgcm1lbSBpbmZvLAorICAgIGJ1dCB3bWVtIGxpbWl0IG1heSBhbHNvIGJlIGhpdC4KKyAgICBTbyBleHBvc2Ugd21lbSBpbmZvIGluIHRoaXMgdHJhY2Vwb2ludCBhcyB3ZWxsLgorCisgICAgUmVnYXJkaW5nIG1lbWNnLCBJIHRoaW5rIGl0IGlzIGJldHRlciB0byBpbnRyb2R1Y2UgYSBuZXcgdHJhY2Vwb2ludChpZgorICAgIHRoYXQgaXMgbmVlZGVkKSwgaS5lLiB0cmFjZV9tZW1jZ19saW1pdF9oaXQgb3RoZXIgdGhhbiBzaG93IG1lbWNnIGluZm8gaW4KKyAgICB0cmFjZV9zb2NrX2V4Y2VlZF9idWZfbGltaXQuCisKK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSmVhbnNvbiA8bWplYW5zb25AZWZmaWNpb3MuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0aGlldSBEZXNub3llcnMgPG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyBpbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9zb2NrLmggfCAyMyArKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9zb2NrLmggYi9pbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9zb2NrLmgKK2luZGV4IDVjZDAyY2EuLmNkMGM5MmIgMTAwNjQ0CistLS0gYS9pbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9zb2NrLmgKKysrKyBiL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL3NvY2suaAorQEAgLTIxLDcgKzIxLDI4IEBAIExUVE5HX1RSQUNFUE9JTlRfRVZFTlQoc29ja19yY3ZxdWV1ZV9mdWxsLAorIAkpCisgKQorIAorLSNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsMTUsMCkpCisrI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwxOSwwKSkKKysKKytMVFROR19UUkFDRVBPSU5UX0VWRU5UKHNvY2tfZXhjZWVkX2J1Zl9saW1pdCwKKysKKysJVFBfUFJPVE8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcHJvdG8gKnByb3QsIGxvbmcgYWxsb2NhdGVkLCBpbnQga2luZCksCisrCisrCVRQX0FSR1Moc2ssIHByb3QsIGFsbG9jYXRlZCwga2luZCksCisrCisrCVRQX0ZJRUxEUygKKysJCWN0Zl9zdHJpbmcobmFtZSwgcHJvdC0+bmFtZSkKKysJCWN0Zl9hcnJheShsb25nLCBzeXNjdGxfbWVtLCBwcm90LT5zeXNjdGxfbWVtLCAzKQorKwkJY3RmX2ludGVnZXIobG9uZywgYWxsb2NhdGVkLCBhbGxvY2F0ZWQpCisrCQljdGZfaW50ZWdlcihpbnQsIHN5c2N0bF9ybWVtLCBza19nZXRfcm1lbTAoc2ssIHByb3QpKQorKwkJY3RmX2ludGVnZXIoaW50LCBybWVtX2FsbG9jLCBhdG9taWNfcmVhZCgmc2stPnNrX3JtZW1fYWxsb2MpKQorKwkJY3RmX2ludGVnZXIoaW50LCBzeXNjdGxfd21lbSwgc2tfZ2V0X3dtZW0wKHNrLCBwcm90KSkKKysJCWN0Zl9pbnRlZ2VyKGludCwgd21lbV9hbGxvYywgcmVmY291bnRfcmVhZCgmc2stPnNrX3dtZW1fYWxsb2MpKQorKwkJY3RmX2ludGVnZXIoaW50LCB3bWVtX3F1ZXVlZCwgc2stPnNrX3dtZW1fcXVldWVkKQorKwkJY3RmX2ludGVnZXIoaW50LCBraW5kLCBraW5kKQorKwkpCisrKQorKworKyNlbGlmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwxNSwwKSkKKyAKKyBMVFROR19UUkFDRVBPSU5UX0VWRU5UKHNvY2tfZXhjZWVkX2J1Zl9saW1pdCwKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTQ2OTY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNFQ1RJT04gPSAiZGV2ZWwiCi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgS0VSTkVMIE1PRFVMRSIKLURFU0NSSVBUSU9OID0gIlRoZSBsdHRuZy1tb2R1bGVzIDIuMCBwYWNrYWdlIGNvbnRhaW5zIHRoZSBrZXJuZWwgdHJhY2VyIG1vZHVsZXMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDYxM2QxZjhhOTU4N2JkN2IzNjYxOTE4MzAzNjRiMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0yNDNiNzI1ZDcxYmI1ZGY0YTFlNTkyMGIzNDRiODZhZCBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCBtb2R1bGUKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFhcmNoNjR8bWlwc3xuaW9zMnxhcm0pLiotbGludXgnCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MTEwMDk5ZjQ2MTVmYzg5YTc0ZmZlOTE4OWI1NmNmYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGEwODBjODE3NDNlYjI5ZDE4MWJhYzI5Y2ViMGMxNTgxOWEyZjQyMTA3OTNmMmNjOTk1OGQ4ODU0MzUwMjlmIgotCi1leHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbHR0bmctbW9kdWxlcyIKLQotRVhUUkFfT0VNQUtFICs9ICJLRVJORUxESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgRGVsZXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIFFBIGZhaWx1cmVzIGlmIG5vIG1vZHVsZXMgd2VyZSBidWlsdAotCWZpbmQgJHtEfS8ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1kZXB0aCAtdHlwZSBkIC1lbXB0eSAtZXhlYyBybWRpciB7fSBcOwotfQotCi1weXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgewotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0QnKSwgZC5nZXRWYXIoJ25vbmFyY2hfYmFzZV9saWJkaXInKVsxOl0sICdtb2R1bGVzJykpOgotICAgICAgICBiYi53YXJuKCIlczogbm8gbW9kdWxlcyB3ZXJlIGNyZWF0ZWQ7IHRoaXMgbWF5IGJlIGR1ZSB0byBDT05GSUdfVFJBQ0VQT0lOVFMgbm90IGJlaW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWwuIiAlIGQuZ2V0VmFyKCdQTicpKQotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjODY1YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuNy5iYgpAQCAtMCwwICsxLDM3IEBACitTRUNUSU9OID0gImRldmVsIgorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCitERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ2MTNkMWY4YTk1ODdiZDdiMzY2MTkxODMwMzY0YjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MjQzYjcyNWQ3MWJiNWRmNGExZTU5MjBiMzQ0Yjg2YWQgXAorICAgICAgICAgICAgICAgICAgICAiCisKK2luaGVyaXQgbW9kdWxlCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtKS4qLWxpbnV4JworCisjaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctbW9kdWxlcy9sdHRuZy1tb2R1bGVzLTIuMTAuNy50YXIuYnoyCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbmV0LWV4cG9zZS1zay13bWVtLWluLXNvY2tfZXhjZWVkX2J1Zl9saW1pdC10cmFjLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImQzY2I0NTIwOTQ4MDgzYmYxNTczYTJlNGNiNzQwNmFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYwNDk0MjhkM2QxMzFlMTAzYTdhNzAzOGQxODQ3MzFiZjdiY2RjZTAwNTAzZmMxOWEyYzliNTY5M2VjYmIzYjUiCisKK2V4cG9ydCBJTlNUQUxMX01PRF9ESVI9Imtlcm5lbC9sdHRuZy1tb2R1bGVzIgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5FTERJUj0nJHtTVEFHSU5HX0tFUk5FTF9ESVJ9JyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBEZWxldGUgZW1wdHkgZGlyZWN0b3JpZXMgdG8gYXZvaWQgUUEgZmFpbHVyZXMgaWYgbm8gbW9kdWxlcyB3ZXJlIGJ1aWx0CisJZmluZCAke0R9LyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0gLWRlcHRoIC10eXBlIGQgLWVtcHR5IC1leGVjIHJtZGlyIHt9IFw7Cit9CisKK3B5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQoKSB7CisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihkLmdldFZhcignRCcpLCBkLmdldFZhcignbm9uYXJjaF9iYXNlX2xpYmRpcicpWzE6XSwgJ21vZHVsZXMnKSk6CisgICAgICAgIGJiLndhcm4oIiVzOiBubyBtb2R1bGVzIHdlcmUgY3JlYXRlZDsgdGhpcyBtYXkgYmUgZHVlIHRvIENPTkZJR19UUkFDRVBPSU5UUyBub3QgYmVpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4iICUgZC5nZXRWYXIoJ1BOJykpCit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLUFsbG93LW11bHRpcGxlLWF0dGVtcHRzLXRvLWNvbm5lY3QtdG8tcmVsYXlkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtQWxsb3ctbXVsdGlwbGUtYXR0ZW1wdHMtdG8tY29ubmVjdC10by1yZWxheWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJhMDk3OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLUFsbG93LW11bHRpcGxlLWF0dGVtcHRzLXRvLWNvbm5lY3QtdG8tcmVsYXlkLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNzBlZmY4OTkxMDRiODZiYWUwMjg2MjkyN2M3NmNhYWVmNWRlNWQzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pa2FlbCBCZWNraXVzIDxtaWthZWwuYmVja2l1c0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA3IE1heSAyMDE1IDE2OjE0OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IG11bHRpcGxlIGF0dGVtcHRzIHRvIGNvbm5lY3QgdG8gcmVsYXlkLgorCitJdCBpcyB1bmNsZWFyIHdoeSBhIHNlc3Npb24gbmVlZHMgdG8gYmUgbWFkZQordW51c2FibGUgYWZ0ZXIgYSBmYWlsdXJlIHRvIGNvbm5lY3QgdG8gcmVsYXlkCitzaW5jZSBhIGNoZWNrIGZvciBhIHJlbGF5ZCBjb25uZWN0aW9uIGlzCithbHdheXMgbWFkZSBiZWZvcmUgYSBzZXNzaW9uIGNhbiBiZSBjb25maWd1cmVkLgorCitUaGUgYmVoYXZpb3VyIHdhcyBpbnRyb2R1Y2VkIGluOgorZDkwNzhkMGMwMDBkMDRkNDljNTk5YTcyYzFhNzI1MDI2YjYzNmVjMAorCitTaWduZWQtb2ZmLWJ5OiBNaWthZWwgQmVja2l1cyA8bWlrYWVsLmJlY2tpdXNAd2luZHJpdmVyLmNvbT4KK1sgVGhlIGNvbnRleHQgaGFzIG1vdmVkLCBhZGp1c3QgdGhlIGh1bmsgYWNjb3JkaW5nbHkgXQorU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9jbWQuYyB8ICAgIDggLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iaW4vbHR0bmctc2Vzc2lvbmQvY21kLmMgYi9zcmMvYmluL2x0dG5nLXNlc3Npb25kL2NtZC5jCitpbmRleCA3M2I0Y2UzLi4zNmY2MmVlIDEwMDY0NAorLS0tIGEvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9jbWQuYworKysrIGIvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9jbWQuYworQEAgLTY4OSwxNCArNjg5LDYgQEAgY2xvc2Vfc29jazoKKyAJZnJlZShyc29jayk7CisgCisgZXJyb3I6CistCWlmIChyZXQgIT0gTFRUTkdfT0spIHsKKy0JCS8qCistCQkgKiBUaGUgY29uc3VtZXIgb3V0cHV0IGZvciB0aGlzIHNlc3Npb24gc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUKKy0JCSAqIHNpbmNlIHRoZSByZWxheWQgY29ubmVjdGlvbiBmYWlsZWQgdGh1cyBtYWtpbmcgYW55IHRyYWNpbmcgb3IvYW5kCistCQkgKiBzdHJlYW1pbmcgbm90IHVzYWJsZS4KKy0JCSAqLworLQkJY29uc3VtZXItPmVuYWJsZWQgPSAwOworLQl9CisgCXJldHVybiByZXQ7CisgfQorIAorLS0gCisxLjcuOS41CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL2x0dG5nLXNlc3Npb25kLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFmODEzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlCkBAIC0wLDAgKzEsOSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1MVFRuZyAyLnggY2VudHJhbCB0cmFjaW5nIHJlZ2lzdHJ5IHNlc3Npb24gZGFlbW9uCisKK1tTZXJ2aWNlXQorVHlwZT1mb3JraW5nCitFeGVjU3RhcnQ9L3Vzci9iaW4vbHR0bmctc2Vzc2lvbmQgLWQKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiCmluZGV4IDkzNjI2ZGQuLjAzMTRiNTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKQEAgLTMwLDEyICszMCwxNyBAQAogU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy10b29scy9sdHRuZy10b29scy0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL3gzMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BbGxvdy1tdWx0aXBsZS1hdHRlbXB0cy10by1jb25uZWN0LXRvLXJlbGF5ZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMDUxMjI0ZWI5OTFhZWUwN2Y4NzIxZmYxODc3ZDBiOTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc4MzllYjZmYzZjNjUyMTI1ZjA4YWNmZDkzNjk3MDFjMjUxNmViMDVjYzIwODQxNjBlN2VmYzdhM2ZiNzMxYyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZyB1c2VyYWRkIHB5dGhvbjMtZGlyIG1hbnBhZ2VzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImx0dG5nLXNlc3Npb25kLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCiBHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICJ0cmFjaW5nIgpAQCAtNTEsNiArNTYsMTIgQEAKIElOU0FORV9TS0lQXyR7UE59ID0gImxpYmV4ZWMgZGV2LXNvIgogSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmV4ZWMiCiAKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGUKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbHR0bmctc2Vzc2lvbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorfQorCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKICAgICBmb3IgZiBpbiBNYWtlZmlsZSB0ZXN0cy9NYWtlZmlsZSB0ZXN0cy91dGlscy91dGlscy5zaCA7IGRvCiAgICAgICAgIGluc3RhbGwgLUQgIiR7Qn0vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYtcGVybC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLXBlcmwuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNzczMTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLXBlcmwuaW5jCkBAIC0wLDAgKzEsNyBAQAoraW5oZXJpdCBwZXJsbmF0aXZlIGNwYW4tYmFzZQorCisjIEVudiB2YXIgd2hpY2ggdGVsbHMgcGVybCBpZiBpdCBzaG91bGQgdXNlIGhvc3QgKG5vKSBvciB0YXJnZXQgKHllcykgc2V0dGluZ3MKK2V4cG9ydCBQRVJMQ09ORklHVEFSR0VUID0gIiR7QGlzX3RhcmdldChkKX0iCitleHBvcnQgUEVSTF9JTkMgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9DT1JFIgorZXhwb3J0IFBFUkxfTElCID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCitleHBvcnQgUEVSTF9BUkNITElCID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCA5MGJiZWQyLi5iYWU0OTQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKQEAgLTEyLDYgKzEyLDcgQEAKIFBSID0gInI5IgogCiBQQUNLQUdFQ09ORklHID8/PSAic2NyaXB0aW5nIHR1aSBsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHW2R3YXJmXSA9ICIsTk9fRFdBUkY9MSIKIFBBQ0tBR0VDT05GSUdbc2NyaXB0aW5nXSA9ICIsTk9fTElCUEVSTD0xIE5PX0xJQlBZVEhPTj0xLHBlcmwgcHl0aG9uIgogIyBndWkgc3VwcG9ydCB3YXMgYWRkZWQgd2l0aCBrZXJuZWwgMy42LjM1CiAjIHNpbmNlIDMuMTAgbGlibmV3dCB3YXMgcmVwbGFjZWQgYnkgc2xhbmcKQEAgLTIxLDI0ICsyMiwyNiBAQAogUEFDS0FHRUNPTkZJR1tsaWJudW1hXSA9ICIsTk9fTElCTlVNQT0xIgogUEFDS0FHRUNPTkZJR1tzeXN0ZW10YXBdID0gIixOT19TRFQ9MSxzeXN0ZW10YXAiCiBQQUNLQUdFQ09ORklHW2p2bXRpXSA9ICIsTk9fSlZNVEk9MSIKLQogIyBsaWJhdWRpdCBzdXBwb3J0IHdvdWxkIG5lZWQgc2NyaXB0aW5nIHRvIGJlIGVuYWJsZWQKIFBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIixOT19MSUJBVURJVD0xLGF1ZGl0IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLCx4bWx0by1uYXRpdmUgYXNjaWlkb2MtbmF0aXZlIgorCisjIGxpYnVud2luZCBpcyBub3QgeWV0IHBvcnRlZCBmb3Igc29tZSBhcmNoaXRlY3R1cmVzCitQQUNLQUdFQ09ORklHX3JlbW92ZV9hcmMgPSAibGlidW53aW5kIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3Y2NCA9ICJsaWJ1bndpbmQiCiAKIERFUEVORFMgPSAiIFwKICAgICB2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyBcCiAgICAgJHtNTFBSRUZJWH1lbGZ1dGlscyBcCiAgICAgJHtNTFBSRUZJWH1iaW51dGlscyBcCiAgICAgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIHh6IFwKLSAgICB4bWx0by1uYXRpdmUgXAotICAgIGFzY2lpZG9jLW5hdGl2ZSBcCiAiCiAKIGRvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiAKIFBST1ZJREVTID0gInZpcnR1YWwvcGVyZiIKIAotaW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaAoraW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaCBtYW5wYWdlcwogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUHl0aG9uIGJpbmRpbmdzCiBpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdweXRob25uYXRpdmUnLCAnJywgZCl9CkBAIC01MSwxMyArNTQsNyBAQAogZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFBlcmwgYmluZGluZwotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncGVybG5hdGl2ZScsICcnLCBkKX0KLWluaGVyaXQgY3Bhbi1iYXNlCi0jIEVudiB2YXIgd2hpY2ggdGVsbHMgcGVybCBpZiBpdCBzaG91bGQgdXNlIGhvc3QgKG5vKSBvciB0YXJnZXQgKHllcykgc2V0dGluZ3MKLWV4cG9ydCBQRVJMQ09ORklHVEFSR0VUID0gIiR7QGlzX3RhcmdldChkKX0iCi1leHBvcnQgUEVSTF9JTkMgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9DT1JFIgotZXhwb3J0IFBFUkxfTElCID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCi1leHBvcnQgUEVSTF9BUkNITElCID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCitpbmNsdWRlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdwZXJmLXBlcmwuaW5jJywgJycsIGQpfQogCiBpbmhlcml0IGtlcm5lbHNyYwogCkBAIC04MCw4ICs3Nyw5IEBACiAgICAgRVhUUkFfQ0ZMQUdTPSItbGR3IiBcCiAgICAgRVhUUkFfTERGTEFHUz0iJHtQRVJGX0VYVFJBX0xERkxBR1N9IiBcCiAgICAgcGVyZmV4ZWNkaXI9JHtsaWJleGVjZGlyfSBcCi0gICAgTk9fR1RLMj0xIE5PX0RXQVJGPTEgXAorICAgIE5PX0dUSzI9MSBcCiAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisgICAgVE1QRElSPSIke0J9IiBcCiAnCiAKIEVYVFJBX09FTUFLRSArPSAiXApAQCAtMTQ2LDYgKzE0NCw4IEBACiAgICAgZm9yIHMgaW4gc291cmNlczoKICAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHNyY19kaXIsIHMpCiAgICAgICAgIGRlc3QgPSBvZS5wYXRoLmpvaW4oZGVzdF9kaXIsIHMpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmMpOgorICAgICAgICAgICAgYmIuZmF0YWwoIlBhdGggZG9lcyBub3QgZXhpc3Q6ICVzLiBNYXliZSBQRVJGX1NSQyBkb2VzIG5vdCBtYXRjaCB0aGUga2VybmVsIHZlcnNpb24uIiAlIHNyYykKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgogICAgICAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZGVzdCkKICAgICAgICAgZWxzZToKQEAgLTI0Niw3ICsyNDYsNiBAQAogUEFDS0FHRVMgPSsgIiR7UE59LWFyY2hpdmUgJHtQTn0tdGVzdHMgJHtQTn0tcGVybCAke1BOfS1weXRob24iCiAKIFJERVBFTkRTXyR7UE59ICs9ICJlbGZ1dGlscyBiYXNoIgotUkRFUEVORFNfJHtQTn0tZG9jICs9ICJtYW4iCiBSREVQRU5EU18ke1BOfS1hcmNoaXZlID0rICJiYXNoIgogUkRFUEVORFNfJHtQTn0tcHl0aG9uID0rICJiYXNoIHB5dGhvbiBweXRob24tbW9kdWxlcyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdWRpdCcsICdhdWRpdC1weXRob24nLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0tcGVybCA9KyAiYmFzaCBwZXJsIHBlcmwtbW9kdWxlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaAppbmRleCBlMjhmZGNhLi5hZGU1MWNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCkBAIC0xLDI2ICsxLDI3IEBACi1Gcm9tIGMyNDk1YTRjMDQyZTZhNjc1ZGE2OWJhYjIwY2MzNjY5MzkxZThlMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQzMzJiNDgwMjU3YWE5OGI2M2QzOWMzYzk0ODk2YTExMTUzNmY5MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTg6Mzg6MjYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIERvIG5vdCBidWlsZCBhbnl0aGluZyBpbiBoZWxwLyBhcyBpdCByZXF1aXJlcyBpdHN0b29sLgorU3ViamVjdDogW1BBVENIIDIvMl0gRG8gbm90IGJ1aWxkIGFueXRoaW5nIGluIGhlbHAvIGFzIGl0IHJlcXVpcmVzIGl0c3Rvb2wuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBtZXNvbi5idWlsZCB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA0YWMzOTM0Li44YzQzNjlhIDEwMDY0NAoraW5kZXggMzk4NjI3My4uYWUyZjY1ZSAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTExNiw3ICsxMTYsNiBAQCBzdWJkaXIoJ3Rvb2xzJykKK0BAIC0xNjQsNyArMTY0LDYgQEAgc3ViZGlyKCd0b29scycpCiAgc3ViZGlyKCd0ZXN0cycpCiAgCiAgc3ViZGlyKCdkYXRhJykKIC1zdWJkaXIoJ2hlbHAnKQogIHN1YmRpcigncG8nKQogIAotIG1lc29uLmFkZF9pbnN0YWxsX3NjcmlwdCgnYnVpbGQtYXV4L21lc29uX3Bvc3RfaW5zdGFsbC5zaCcpCisgbWVzb24uYWRkX2luc3RhbGxfc2NyaXB0KCdidWlsZC1hdXgvbWVzb24vcG9zdF9pbnN0YWxsLnNoJykKIC0tIAotMi4xNC4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWZpeC1ub24tbGl0ZXJhbC1mb3JtYXQtc3RyaW5nLWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtZml4LW5vbi1saXRlcmFsLWZvcm1hdC1zdHJpbmctaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZjlmNWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWZpeC1ub24tbGl0ZXJhbC1mb3JtYXQtc3RyaW5nLWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGRlMTNkMWY5MDgzMzVjYzg4MmM0NDdlNGQ3YzQzNjBiOWU1ZGExOTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA2IFNlcCAyMDE4IDE3OjQ5OjQ0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nIGlzc3VlcworCitjbGFuZyBlcnJvcnMgb3V0IHdoZW4gdXNpbmcgLVdlcnJvcj1mb3JtYXQtbm9ubGl0ZXJhbAorc2luY2UgdGhlIGRlZmluaXRpb24gb2YgZ19zdHJkdXBfdnByaW50ZigpIGZyb20gZ2xpYi0yLjAKK2lzIHVzaW5nIHZhX2xpc3QgYW5kIGNsYW5ncyBzdGlsbCB3YXJucyB3aGVyZSBhcworZ2NjIGRvZXNuJ3QgZG8gdGhhdCBmb3IgdmFfbGlzdCBhcmd1bWVudHMKKworRml4ZXMKK3NyYy9zcC13aW5kb3cuYzo5NjoyNzogZXJyb3I6IGZvcm1hdCBzdHJpbmcgaXMgbm90IGEgc3RyaW5nIGxpdGVyYWwgWy1XZXJyb3IsLVdmb3JtYXQtbm9ubGl0ZXJhbF0KK3wgICBzdHIgPSBnX3N0cmR1cF92cHJpbnRmIChmb3JtYXQsIGFyZ3MpOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3N5c3Byb2YvbWVyZ2VfcmVxdWVzdHMvNl0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvc3Atd2luZG93LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc3Atd2luZG93LmMgYi9zcmMvc3Atd2luZG93LmMKK2luZGV4IDRkZmFjMmQuLmFmZjQ3NzkgMTAwNjQ0CistLS0gYS9zcmMvc3Atd2luZG93LmMKKysrKyBiL3NyYy9zcC13aW5kb3cuYworQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHMgW05fU0lHTkFMU107Cisgc3RhdGljIHZvaWQgc3Bfd2luZG93X3NldF9wcm9maWxlciAoU3BXaW5kb3cgICAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcFByb2ZpbGVyICpwcm9maWxlcik7CisgCistc3RhdGljIHZvaWQKKytzdGF0aWMgR19HTlVDX1BSSU5URigzLCA0KSB2b2lkCisgc3Bfd2luZG93X25vdGlmeV91c2VyIChTcFdpbmRvdyAgICAgICAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEd0a01lc3NhZ2VUeXBlICBtZXNzYWdlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqZm9ybWF0LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvd29yZHNpemUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy93b3Jkc2l6ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjViMTNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvd29yZHNpemUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9zeXNwcm9mL21lcmdlX3JlcXVlc3RzLzVdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGJjN2UzZTI3YzI4ZDBiYWI4YmVhNzJmMjMxNDE5MTUzMmIyZTc4NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogRnJpLCA3IFNlcCAyMDE4IDAxOjMwOjA5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNhcHR1cmU6IHVzZSBzaXplIG9mIHZvaWQqIGluc3RlYWQgb2YgZ2xpYmMtc3BlY2lmaWMKKyBfX1dPUkRTSVpFCisKK19fV09SRFNJWkUgaXMgZ2xpYmMtc3BlY2lmaWMgc28gc3AtY2FwdHVyZS10eXBlcy5oIGRvZXNuJ3Qgd29yayB3aXRoIG11c2wuCistLS0KKyBsaWIvY2FwdHVyZS9zcC1jYXB0dXJlLXR5cGVzLmggfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvY2FwdHVyZS9zcC1jYXB0dXJlLXR5cGVzLmggYi9saWIvY2FwdHVyZS9zcC1jYXB0dXJlLXR5cGVzLmgKK2luZGV4IDQ4ZmNmYjguLjFkNmNkMWQgMTAwNjQ0CistLS0gYS9saWIvY2FwdHVyZS9zcC1jYXB0dXJlLXR5cGVzLmgKKysrKyBiL2xpYi9jYXB0dXJlL3NwLWNhcHR1cmUtdHlwZXMuaAorQEAgLTMyLDEyICszMiwxNCBAQCBHX0JFR0lOX0RFQ0xTCisgI2RlZmluZSBTUF9DQVBUVVJFX01BR0lDIChHVUlOVDMyX1RPX0xFKDB4RkRDQTk3NUUpKQorICNkZWZpbmUgU1BfQ0FQVFVSRV9BTElHTiAoc2l6ZW9mKFNwQ2FwdHVyZUFkZHJlc3MpKQorIAorLSNpZiBfX1dPUkRTSVpFID09IDY0CisrI2lmIEdMSUJfU0laRU9GX1ZPSURfUCA9PSA4CisgIyBkZWZpbmUgU1BfQ0FQVFVSRV9KSVRNQVBfTUFSSyAgICBHX0dVSU5UNjRfQ09OU1RBTlQoMHhFMDAwMDAwMDAwMDAwMDAwKQorICMgZGVmaW5lIFNQX0NBUFRVUkVfQUREUkVTU19GT1JNQVQgIjB4JTAxNmx4IgorLSNlbHNlCisrI2VsaWYgR0xJQl9TSVpFT0ZfVk9JRF9QID09IDQKKyAjIGRlZmluZSBTUF9DQVBUVVJFX0pJVE1BUF9NQVJLICAgIEdfR1VJTlQ2NF9DT05TVEFOVCgweEUwMDAwMDAwKQorICMgZGVmaW5lIFNQX0NBUFRVUkVfQUREUkVTU19GT1JNQVQgIjB4JTAxNmxseCIKKysjZWxzZQorKyNlcnJvciBVbmtub3duIEdMSUJfU0laRU9GX1ZPSURfUAorICNlbmRpZgorIAorICNkZWZpbmUgU1BfQ0FQVFVSRV9DVVJSRU5UX1RJTUUgICAoc3BfY2xvY2tfZ2V0X2N1cnJlbnRfdGltZSgpKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk4OWI1Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2ZjlmOTQ3OTYwYmE3OWJiMTI2OWQ4ZWU0OWI3ZGI3OCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ4YjlkNWMyMjQ2Njk2ZTRhMzc3NmEzMTI3MzFkYzdjMDE0ZmJkMzM0NzhiYjE0ZDU1MTJjNmYxZjM1YTNiMTEiCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKLVBBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKLQotU09MSUJTID0gIi5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKLQotIyBXZSBkbyBub3QgeWV0IHdvcmsgZm9yIGFhcmNoNjQuCi1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKLSAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjMwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlkY2YyNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zMC4wLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhZTg5NmE4YTIzNjRlMThjMDdmYWZhOTU3MzIwMmY1OSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjI5Y2QyYzRiZTI3N2YwMDY5OGRjZTQ4MjU5MjE5NTU3YzRmZGRjMmMwMTI1NGI4ZmFjOTU5MDBhOGM2NjNmNjMiCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd29yZHNpemUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbm9uLWxpdGVyYWwtZm9ybWF0LXN0cmluZy1pc3N1ZXMucGF0Y2ggXAorICAgICAgICAgICAiCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJXYWl0aW5nIGZvciByZXNvbHV0aW9uIG9mIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ2MjUiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKK1BBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKKworU09MSUJTID0gIi5zbyIKK0ZJTEVTX1NPTElCU0RFViA9ICIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwY2ViNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBhNzE0NjU4NzI3MjA2ZDJhOThhNzE5NGI3ZTZkMjlkYmQzZTI3YjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGF2aWQgU21pdGggPGRzbWl0aEByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAxNjo1MDowNSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBBZGRlZCBhIGNvdXBsZSBvZiBzbWFsbCBzeXNyb290IGZpeGVzLgotCi0qIHRhcHNldHMuY3h4IChkd2FyZl9idWlsZGVyOjpidWlsZCk6IEZpeCBjb21taXQgNGZmZWNkZGY1LgotICAocGF0aF9yZW1vdmVfc3lzcm9vdCk6IEZpeCBleHRyYSAnLycgcHJlc2VudCBhdCBzdGFydCBvZiBwYXRocy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci0tLS0KLSB0YXBzZXRzLmN4eCB8IDEwICsrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L3RhcHNldHMuY3h4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGFwc2V0cy5jeHgKLSsrKyBnaXQvdGFwc2V0cy5jeHgKLUBAIC0xMzk1LDcgKzEzOTUsOCBAQCBzdHJpbmcgcGF0aF9yZW1vdmVfc3lzcm9vdChjb25zdCBzeXN0ZW10Ci0gICBzdHJpbmcgcmV0dmFsID0gcGF0aDsKLSAgIGlmICghc2Vzcy5zeXNyb290LmVtcHR5KCkgJiYKLSAgICAgICAocG9zID0gcmV0dmFsLmZpbmQoc2Vzcy5zeXNyb290KSkgIT0gc3RyaW5nOjpucG9zKQotLSAgICByZXR2YWwucmVwbGFjZShwb3MsIHNlc3Muc3lzcm9vdC5sZW5ndGgoKSwgIi8iKTsKLSsgICAgcmV0dmFsLnJlcGxhY2UocG9zLCBzZXNzLnN5c3Jvb3QubGVuZ3RoKCksCi0rCQkgICAoc2Vzcy5zeXNyb290LmJhY2soKSA9PSAnLycgPyAiLyI6ICIiKSk7Ci0gICByZXR1cm4gcmV0dmFsOwotIH0KLSAKLUBAIC04NDEyLDggKzg0MTMsMTEgQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgotIAotICAgICAgIC8vIFBSMTMzMzg6IHVucXVvdGUgZ2xvYiByZXN1bHRzCi0gICAgICAgbW9kdWxlX25hbWUgPSB1bmVzY2FwZV9nbG9iX2NoYXJzIChtb2R1bGVfbmFtZSk7Ci0tICAgICAgdXNlcl9wYXRoID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSwgIiIsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0Ci0tICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpKQotKyAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpOyAvLyBjYW5vbmljYWxpemUgaXQKLSsgICAgICAvLyBOb3RlIHdlIGRvbid0IG5lZWQgdG8gcGFzcyB0aGUgc3lzcm9vdCB0bwotKyAgICAgIC8vIGlzX2Z1bGx5X3Jlc29sdmVkKCksIHNpbmNlIHdlIGp1c3QgcGFzc2VkIGl0IHRvCi0rICAgICAgLy8gZmluZF9leGVjdXRhYmxlKCkuCi0rICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsICIiLCBzZXNzLnN5c2VudikpCi0gICAgICAgICB0aHJvdyBTRU1BTlRJQ19FUlJPUihfRigiY2Fubm90IGZpbmQgZXhlY3V0YWJsZSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfcGF0aC50b19zdHJpbmcoKS5jX3N0cigpKSk7Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5OTUxYTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1EZWxheS1hZGRpbmctc3lzcm9vdC1wYXRoLXRvLW1vZHVsZS1uYW1lLWluLWNhc2Utb2YtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSA0ZmZlY2RkZjU0MzNkNjVhNmYwMTI0MTk5MGM5ZDUxNjU4NmIxYzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1EYXRlOiBNb24sIDE5IE1hciAyMDE4IDA4OjUzOjUxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlbGF5IGFkZGluZyBzeXNyb290IHBhdGggdG8gbW9kdWxlIG5hbWUgaW4gY2FzZSBvZiBub24KLSBhYnNvbHV0ZSBleGVjdXRhYmxlCi0KLUN1cnJlbnQgc3RhcCBjb2RlIGFkZHMgc3lzcm9vdCBwcmVtYXR1cmVseSBmb3IgcHJvYmVzIHRoYXQgc3BlY2lmeSBub24KLWFic29sdXRlIHBhdGggbmFtZSwgaS5lIGxpa2UgImZvbyIsIHNvIHdoZW4gZmluZF9leGVjdXRhYmxlIGNhbGxlZCBpdAotcmVjZWl2ZXMgZnVsbCBwYXRoIGFzIDxzeXNyb290Pi9mb28gYW5kIGZpbmRfZXhlY3V0YWJsZSBkb2VzIG5vdCBzZWFyY2gKLVBBVEggd2hpbGUgYXBwbHlpbmcgc3lzcm9vdC4KLQotRml4IGRlbGF5cyBhZGRpbmcgc3lzcm9vdCB0aWxsIHBhdGggaW5zaWRlIG9mIHN5c3Jvb3QgaXMgc2VhcmNoZWQgZmlyc3QuCi0KLUFsc28gZml4IG1pc3Npbmcgc3lzcm9vdCBhZGRpdGlvbiBpbiBnbG9iIGV4cGFuc2lvbiBjYXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLS0tLQotIHRhcHNldHMuY3h4IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvdGFwc2V0cy5jeHgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90YXBzZXRzLmN4eAotKysrIGdpdC90YXBzZXRzLmN4eAotQEAgLTc0Niw3ICs3NDYsNyBAQCBiYXNlX3F1ZXJ5OjpiYXNlX3F1ZXJ5KGR3ZmxwcCAmIGR3LCBsaXRlCi0gICAgICAgICAgICAgICBwaWRfdmFsID0gMDsKLSAgICAgICAgICAgICAgIGdldF9zdHJpbmdfcGFyYW0ocGFyYW1zLCBUT0tfUFJPQ0VTUywgbW9kdWxlX3ZhbCk7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpOwotKyAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsKLSAgICAgICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpKQotICAgICAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV92YWwudG9fc3RyaW5nKCkuY19zdHIoKSkpOwotQEAgLTgyODcsNyArODI4Nyw2IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICBtb2R1bGVfbmFtZSA9IChzdHJpbmcpc2Vzcy5zeXNyb290ICsgKHN0cmluZyltb2R1bGVfbmFtZTsKLSAgICAgICAgICAgICAgIGZpbGxlZF9wYXJhbWV0ZXJzW1RPS19QUk9DRVNTXSA9IG5ldyBsaXRlcmFsX3N0cmluZyhtb2R1bGVfbmFtZSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotQEAgLTgzMjEsNyArODMyMCw4IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKLSAgICAgICAgICAgYXNzZXJ0IChsaXQpOwotIAotICAgICAgICAgICAvLyBFdmFsdWF0ZSBnbG9iIGhlcmUsIGFuZCBjYWxsIGRlcml2ZV9wcm9iZXMgcmVjdXJzaXZlbHkgd2l0aCBlYWNoIG1hdGNoLgotLSAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUpOwotKyAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAoc2Vzcy5zeXNyb290Ci0rCQkJCQkgICAgICAgKyBzdHJpbmcobW9kdWxlX25hbWUpKTsKLSAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0c19wcmUgPSBmaW5pc2hlZF9yZXN1bHRzLnNpemUoKTsKLSAgICAgICAgICAgZm9yIChhdXRvIGl0ID0gZ2xvYnMuYmVnaW4oKTsgaXQgIT0gZ2xvYnMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAgewotQEAgLTg0MTMsNyArODQxMyw3IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKLSAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cwotICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOwotICAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAotLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQotKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKLSAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wYXRoLnRvX3N0cmluZygpLmNfc3RyKCkpKTsKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4LVBSMjI1NTEtYnktdXBkYXRpbmctdGhlLXVzZS1vZi10aW1lcnMtZm9yLXRoZS00Li5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4LVBSMjI1NTEtYnktdXBkYXRpbmctdGhlLXVzZS1vZi10aW1lcnMtZm9yLXRoZS00Li5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYwYzNiNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotRnJvbSBmYmIyNmUxN2E0YzAyNmYwNWE0OTdmYzVkNTg0NTE2YmFkM2I2OTUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGF2aWQgU21pdGggPGRzbWl0aEByZWRoYXQuY29tPgotRGF0ZTogV2VkLCA2IERlYyAyMDE3IDE0OjM3OjQyIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBQUjIyNTUxIGJ5IHVwZGF0aW5nIHRoZSB1c2Ugb2YgdGltZXJzIGZvciB0aGUgNC4xNQotIGtlcm5lbC4KLQotKiBydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaDogTmV3IGZpbGUuCi0qIHJ1bnRpbWUvdGltZS5jOiBVcGRhdGUgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVyIHR5cGUuIFVwZGF0ZQotICB0aW1lciBpbml0aWFsaXphdGlvbi4KLSogcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYzogRGl0dG8uCi0qIHJ1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jOiBEaXR0by4KLSogdGFwc2V0LXRpbWVycy5jeHggKHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2RlY2xzKToKLSAgRGl0dG8uIEhhbmRsZSBvbGQgYW5kIG5ldyB0aW1lciBjYWxsYmFjayBpbnRlcmZhY2UuCi0qIHJ1bnRpbWUvbGludXgvcnVudGltZS5oOiBJbmNsdWRlIHRpbWVyX2NvbXBhdGliaWxpdHkuaCBpbnN0ZWFkIG9mIHRpbWVyLmguCi0qIHRhcHNldC9saW51eC9zY3NpLnN0cDogRGl0dG8uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotCi0tLS0KLSBydW50aW1lL2xpbnV4L3J1bnRpbWUuaCAgICAgICAgICAgICB8ICAyICstCi0gcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmggfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gcnVudGltZS90aW1lLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0tCi0gcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYyAgICAgICAgfCAgOCArKy0tCi0gcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMgICAgICAgfCAxMyArKystLS0tCi0gdGFwc2V0LXRpbWVycy5jeHggICAgICAgICAgICAgICAgICAgfCAxNCArKysrKy0tCi0gdGFwc2V0L2xpbnV4L3Njc2kuc3RwICAgICAgICAgICAgICAgfCAgMiArLQotIDcgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaAotCi1kaWZmIC0tZ2l0IGEvcnVudGltZS9saW51eC9ydW50aW1lLmggYi9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaAotaW5kZXggOWM1ODVhMi4uZGY5Yjc0YyAxMDA2NDQKLS0tLSBhL3J1bnRpbWUvbGludXgvcnVudGltZS5oCi0rKysgYi9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaAotQEAgLTM0LDcgKzM0LDcgQEAKLSAjaW5jbHVkZSA8bGludXgvY29tcGF0Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+Ci0rI2luY2x1ZGUgInRpbWVyX2NvbXBhdGliaWxpdHkuaCIKLSAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSAjaW5jbHVkZSA8bGludXgvcHJvZmlsZS5oPgotICNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgotZGlmZiAtLWdpdCBhL3J1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIGIvcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYzAzZGU5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9ydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaAotQEAgLTAsMCArMSw3NiBAQAotKy8qCi0rICogbGludXgvdGltZXIuaCBjb21wYXRpYmlsaXR5IGRlZmluZXMgYW5kIGlubGluZXMKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgUmVkIEhhdCBJbmMuCi0rICoKLSsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW10YXAsIGFuZCBpcyBmcmVlIHNvZnR3YXJlLiAgWW91IGNhbgotKyAqIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwKLSsgKiBQdWJsaWMgTGljZW5zZSAoR1BMKTsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKLSsgKiBsYXRlciB2ZXJzaW9uLgotKyAqLwotKwotKyNpZm5kZWYgX1RJTUVSX0NPTVBBVElCSUxJVFlfSF8KLSsjZGVmaW5lIF9USU1FUl9DT01QQVRJQklMSVRZX0hfCi0rCi0rI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+Ci0rCi0rLyoKLSsgKiBTdGFydGluZyB3aXRoIHRoZSA0LjE1IGtlcm5lbCwgdGhlIHRpbWVyIGludGVyZmFjZQotKyAqIGNoYW5nZWQuIE9yaWdpbmFsbHksIHlvdSdkIGRvIHNvbWV0aGluZyBsaWtlOgotKyAqCi0rICogICBzdGF0aWMgdm9pZCB0aW1lcl9mdW5jKHVuc2lnbmVkIGxvbmcgdmFsKTsKLSsgKgotKyAqICAgaW5pdF90aW1lcigmdGltZXIpOwotKyAqICAgdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfUkVMQVlfVElNRVJfSU5URVJWQUw7Ci0rICogICB0aW1lci5mdW5jdGlvbiA9IHRpbWVyX2Z1bmM7Ci0rICogICB0aW1lci5kYXRhID0gMDsKLSsgKiAgIGFkZF90aW1lcigmdGltZXIpOwotKyAqCi0rICogVGhlICdkYXRhJyBwYXJhbWV0ZXIgd291bGQgZ2V0IHBhc3NlZCB0byB0aGUgY2FsbGJhY2sKLSsgKiBmdW5jdGlvbi4gU3RhcnRpbmcgd2l0aCA0LjE1LCB5b3UnZCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzOgotKyAqCi0rICogICBzdGF0aWMgdm9pZCB0aW1lcl9mdW5jKHN0cnVjdCB0aW1lcl9saXN0ICp2YWwpOwotKyAqCi0rICogICB0aW1lcl9zZXR1cCgmdGltZXIsIHRpbWVyX2Z1bmMsIDApOwotKyAqICAgdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfUkVMQVlfVElNRVJfSU5URVJWQUw7Ci0rICogICBhZGRfdGltZXIoJnRpbWVyKTsKLSsgKiAgIAotKyAqIFdpdGggdGhlIG5ldyBjb2RlLCB0aGUgdGltZXIgdGhhdCBjYXVzZWQgdGhlIGNhbGxiYWNrIGdldHMgcGFzc2VkCi0rICogdG8gdGhlIHRpbWVyIGNhbGxiYWNrIGZ1bmN0aW9uLiBUaGUgJ2RhdGEnIGZpZWxkIGhhcyBiZWVuIHJlbW92ZWQuCi0rICoKLSsgKiBTbywgd2UncmUgZ29pbmcgdG8gdXNlIHRoZSBuZXcgaW50ZXJmYWNlLiBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlcwotKyAqIGJldHdlZW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHBhcmFtZXRlciB0eXBlLCB3ZSdsbCBkZWZpbmUgYSBuZXcKLSsgKiB0eXBlLCAnc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90Jy4KLSsgKgotKyAqIElmIGNvZGUgbmVlZHMgdG8gZmlndXJlIG91dCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldwotKyAqIGludGVyZmFjZSwgaXQgc2hvdWxkIHRlc3QgdGhlIFRJTUVSX1RSQUNFX0ZMQUdNQVNLIGRlZmluZSAod2hpY2gKLSsgKiBvbmx5IGV4aXN0cyBpbiB0aGUgbmV3IGludGVyZmFjZSkuCi0rICovCi0rCi0rI2lmIGRlZmluZWQoVElNRVJfVFJBQ0VfRkxBR01BU0spIAotKy8qIFRoaXMgaXMgdGhlID49IDQuMTUga2VybmVsIGludGVyZmFjZS4gKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCB0aW1lcl9saXN0ICogc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90OwotKwotKyNlbHNlCi0rLyogVGhpcyBpcyB0aGUgPCA0LjE1IGtlcm5lbCBpbnRlcmZhY2UuICovCi0rCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdDsKLSsKLSsvKioKLSsgKiB0aW1lcl9zZXR1cCAtIHByZXBhcmUgYSB0aW1lciBmb3IgZmlyc3QgdXNlCi0rICogQHRpbWVyOiB0aGUgdGltZXIgaW4gcXVlc3Rpb24KLSsgKiBAY2FsbGJhY2s6IHRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGltZXIgZXhwaXJlcwotKyAqIEBmbGFnczogYW55IFRJTUVSXyogZmxhZ3MgKG5vdGUgdGhhdCBhbnl0aGluZyBvdGhlciB0aGFuIDAgaXMgYW4KLSsgKiAJICAgZXJyb3IsIHNpbmNlIHRoaXMgY29tcGF0aWJpbGl0eSBmdW5jdGlvbiBjYW4ndCBzdXBwb3J0IGFueQotKyAqCSAgIG9mIHRoZSBUSU1FUl8qIGZsYWdzKQotKyAqLwotKyNkZWZpbmUgdGltZXJfc2V0dXAodGltZXIsIGNhbGxiYWNrLCBmbGFncykJCQlcCi0rCXsJCQkJCQkJXAotKwkJaW5pdF90aW1lcigodGltZXIpKTsJCQkJXAotKwkJKHRpbWVyKS0+ZnVuY3Rpb24gPSBjYWxsYmFjazsJCQlcCi0rCQkodGltZXIpLT5kYXRhID0gMDsJCQkJXAotKwkJQlVJTERfQlVHX09OX1pFUk8oKGZsYWdzKSAhPSAwKTsJCVwKLSsJfQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfVElNRVJfQ09NUEFUSUJJTElUWV9IXyAqLwotZGlmZiAtLWdpdCBhL3J1bnRpbWUvdGltZS5jIGIvcnVudGltZS90aW1lLmMKLWluZGV4IDJlNjY2ZDUuLjkxY2VhZmEgMTAwNjQ0Ci0tLS0gYS9ydW50aW1lL3RpbWUuYwotKysrIGIvcnVudGltZS90aW1lLmMKLUBAIC0xNjgsMTAgKzE2OCwxMCBAQCBfX3N0cF90aW1lX3NtcF9jYWxsYmFjayh2b2lkICp2YWwpCi0gCi0gLyogVGhlIHRpbWVyIGNhbGxiYWNrIGlzIGluIGEgc29mdElSUSAtLSBpbnRlcnJ1cHRzIGVuYWJsZWQuICovCi0gc3RhdGljIHZvaWQKLS1fX3N0cF90aW1lX3RpbWVyX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgdmFsKQotK19fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2soc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCkKLSB7Ci0gICAgIHN0cF90aW1lX3QgKnRpbWUgPV9fc3RwX3RpbWVfbG9jYWxfdXBkYXRlKCk7Ci0tICAgICh2b2lkKSB2YWw7Ci0rICAgICh2b2lkKSB1bnVzZWQ7Ci0gCi0gICAgIC8qIFBSNjQ4MTogbWFrZSBzdXJlIElSUXMgYXJlIGVuYWJsZWQgYmVmb3JlIHJlc2V0dGluZyB0aGUgdGltZXIKLSAgICAgICAgKElSUXMgYXJlIGRpc2FibGVkIGFuZCB0aGVuIHJlZW5hYmxlZCBpbgotQEAgLTIwMCw5ICsyMDAsOCBAQCBfX3N0cF9pbml0X3RpbWUodm9pZCAqaW5mbykKLSAgICAgdGltZS0+ZnJlcSA9IF9fc3RwX2dldF9mcmVxKCk7Ci0gICAgIF9fc3RwX3RpbWVfbG9jYWxfdXBkYXRlKCk7Ci0gCi0tICAgIGluaXRfdGltZXIoJnRpbWUtPnRpbWVyKTsKLSsgICAgdGltZXJfc2V0dXAoJnRpbWUtPnRpbWVyLCBfX3N0cF90aW1lX3RpbWVyX2NhbGxiYWNrLCAwKTsKLSAgICAgdGltZS0+dGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfVElNRV9TWU5DX0lOVEVSVkFMOwotLSAgICB0aW1lLT50aW1lci5mdW5jdGlvbiA9IF9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2s7Ci0gCi0gI2lmbmRlZiBTVEFQQ09ORl9BRERfVElNRVJfT04KLSAgICAgYWRkX3RpbWVyKCZ0aW1lLT50aW1lcik7Ci1kaWZmIC0tZ2l0IGEvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYyBiL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKLWluZGV4IGY4MWQ3NWQuLjEzNTk1MWEgMTAwNjQ0Ci0tLS0gYS9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jCi0rKysgYi9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jCi1AQCAtMzAsNyArMzAsNyBAQAotICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3JlbGF5Lmg+Ci0tI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+Ci0rI2luY2x1ZGUgIi4uL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCIKLSAjaW5jbHVkZSAiLi4vdWlkZ2lkX2NvbXBhdGliaWxpdHkuaCIKLSAjaW5jbHVkZSAicmVsYXlfY29tcGF0LmgiCi0gCi1AQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF9yZWFkZXJzKHN0cnVjdCByY2hhbl9idWYgKmJ1ZikKLSAJCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmYnVmLT5yZWFkX3dhaXQpOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIodW5zaWduZWQgbG9uZyB2YWwpCi0rc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpCi0gewotICNpZmRlZiBTVFBfQlVMS01PREUKLSAJaW50IGk7Ci1AQCAtMTUxLDEwICsxNTEsOCBAQCBzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIodW5zaWduZWQgbG9uZyB2YWwpCi0gc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfdGltZXJfaW5pdCh2b2lkKQotIHsKLSAJYXRvbWljX3NldCgmX3N0cF9yZWxheV9kYXRhLndha2V1cCwgMCk7Ci0tCWluaXRfdGltZXIoJl9zdHBfcmVsYXlfZGF0YS50aW1lcik7Ci0rCXRpbWVyX3NldHVwKCZfc3RwX3JlbGF5X2RhdGEudGltZXIsIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lciwgMCk7Ci0gCV9zdHBfcmVsYXlfZGF0YS50aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKLS0JX3N0cF9yZWxheV9kYXRhLnRpbWVyLmZ1bmN0aW9uID0gX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyOwotLQlfc3RwX3JlbGF5X2RhdGEudGltZXIuZGF0YSA9IDA7Ci0gCWFkZF90aW1lcigmX3N0cF9yZWxheV9kYXRhLnRpbWVyKTsKLSAJc21wX21iKCk7Ci0gfQotZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jIGIvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMKLWluZGV4IDM0MDBmMjIuLjMyMGZkMTggMTAwNjQ0Ci0tLS0gYS9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYwotKysrIGIvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMKLUBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIHZvaWQgX3N0cF9kZXRhY2godm9pZCkKLSB9Ci0gCi0gCi0tc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayh1bnNpZ25lZCBsb25nIHZhbCk7Ci0rc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayhzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKTsKLSAKLSAvKgotICAqIENhbGxlZCB3aGVuIHN0YXBpbyBvcGVucyB0aGUgY29udHJvbCBjaGFubmVsLgotQEAgLTMyMCwxMyArMzIwLDEyIEBAIHN0YXRpYyB2b2lkIF9zdHBfYXR0YWNoKHZvaWQpCi0gewotIAlkYnVnX3RyYW5zKDEsICJhdHRhY2hcbiIpOwotIAlfc3RwX3BpZCA9IGN1cnJlbnQtPnBpZDsKLS0gIGlmIChfc3RwX25hbWVzcGFjZXNfcGlkIDwgMSkKLS0gICAgX3N0cF9uYW1lc3BhY2VzX3BpZCA9IF9zdHBfcGlkOwotKwlpZiAoX3N0cF9uYW1lc3BhY2VzX3BpZCA8IDEpCi0rCQlfc3RwX25hbWVzcGFjZXNfcGlkID0gX3N0cF9waWQ7Ci0gCV9zdHBfdHJhbnNwb3J0X2RhdGFfZnNfb3ZlcndyaXRlKDApOwotLQlpbml0X3RpbWVyKCZfc3RwX2N0bF93b3JrX3RpbWVyKTsKLSsKLSsJdGltZXJfc2V0dXAoJl9zdHBfY3RsX3dvcmtfdGltZXIsIF9zdHBfY3RsX3dvcmtfY2FsbGJhY2ssIDApOwotIAlfc3RwX2N0bF93b3JrX3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX0NUTF9USU1FUl9JTlRFUlZBTDsKLS0JX3N0cF9jdGxfd29ya190aW1lci5mdW5jdGlvbiA9IF9zdHBfY3RsX3dvcmtfY2FsbGJhY2s7Ci0tCV9zdHBfY3RsX3dvcmtfdGltZXIuZGF0YT0gMDsKLSAJYWRkX3RpbWVyKCZfc3RwX2N0bF93b3JrX3RpbWVyKTsKLSB9Ci0gCi1AQCAtMzQxLDcgKzM0MCw3IEBAIHN0YXRpYyB2b2lkIF9zdHBfYXR0YWNoKHZvaWQpCi0gICoJbm90aWZpZWQuIFJlc2NoZWR1bGVzIGl0c2VsZiBpZiBzb21lb25lIGlzIHN0aWxsIGF0dGFjaGVkCi0gICoJdG8gdGhlIGNtZCBjaGFubmVsLgotICAqLwotLXN0YXRpYyB2b2lkIF9zdHBfY3RsX3dvcmtfY2FsbGJhY2sodW5zaWduZWQgbG9uZyB2YWwpCi0rc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayhzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKQotIHsKLSAJaW50IGRvX2lvID0gMDsKLSAJdW5zaWduZWQgbG9uZyBmbGFnczsKLWRpZmYgLS1naXQgYS90YXBzZXQtdGltZXJzLmN4eCBiL3RhcHNldC10aW1lcnMuY3h4Ci1pbmRleCAxYTQwYmNkLi4wYWI0ZDY5IDEwMDY0NAotLS0tIGEvdGFwc2V0LXRpbWVycy5jeHgKLSsrKyBiL3RhcHNldC10aW1lcnMuY3h4Ci1AQCAtMTIyLDkgKzEyMiwxMyBAQCB0aW1lcl9kZXJpdmVkX3Byb2JlX2dyb3VwOjplbWl0X21vZHVsZV9kZWNscyAoc3lzdGVtdGFwX3Nlc3Npb24mIHMpCi0gICBzLm9wLT5uZXdsaW5lKC0xKSA8PCAifTsiOwotICAgcy5vcC0+bmV3bGluZSgpOwotIAotLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdGF0aWMgdm9pZCBlbnRlcl90aW1lcl9wcm9iZSAodW5zaWduZWQgbG9uZyB2YWwpIHsiOwotKyAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdGF0aWMgdm9pZCBlbnRlcl90aW1lcl9wcm9iZSAoc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHZhbCkgeyI7Ci0rICBzLm9wLT5uZXdsaW5lKCkgPDwgIiNpZiBkZWZpbmVkKFRJTUVSX1RSQUNFX0ZMQUdNQVNLKSI7Ci0rICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSogc3RwID0gY29udGFpbmVyX29mKHZhbCwgc3RydWN0IHN0YXBfdGltZXJfcHJvYmUsIHRpbWVyX2xpc3QpOyI7Ci0rICBzLm9wLT5uZXdsaW5lKC0xKSA8PCAiI2Vsc2UiOwotICAgcy5vcC0+bmV3bGluZSgxKSA8PCAic3RydWN0IHN0YXBfdGltZXJfcHJvYmUqIHN0cCA9ICYgc3RhcF90aW1lcl9wcm9iZXMgW3ZhbF07IjsKLS0gIHMub3AtPm5ld2xpbmUoKSA8PCAiaWYgKChhdG9taWNfcmVhZCAoc2Vzc2lvbl9zdGF0ZSgpKSA9PSBTVEFQX1NFU1NJT05fU1RBUlRJTkcpIHx8IjsKLSsgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICIjZW5kaWYiOwotKyAgcy5vcC0+bmV3bGluZSgxKSA8PCAiaWYgKChhdG9taWNfcmVhZCAoc2Vzc2lvbl9zdGF0ZSgpKSA9PSBTVEFQX1NFU1NJT05fU1RBUlRJTkcpIHx8IjsKLSAgIHMub3AtPm5ld2xpbmUoKSA8PCAiICAgIChhdG9taWNfcmVhZCAoc2Vzc2lvbl9zdGF0ZSgpKSA9PSBTVEFQX1NFU1NJT05fUlVOTklORykpIjsKLSAgIHMub3AtPm5ld2xpbmUoMSkgPDwgIm1vZF90aW1lciAoJiBzdHAtPnRpbWVyX2xpc3QsIGppZmZpZXMgKyAiOwotICAgZW1pdF9pbnRlcnZhbCAocy5vcCk7Ci1AQCAtMTQ4LDkgKzE1MiwxMSBAQCB0aW1lcl9kZXJpdmVkX3Byb2JlX2dyb3VwOjplbWl0X21vZHVsZV9pbml0IChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKLSAgIHMub3AtPm5ld2xpbmUoKSA8PCAiZm9yIChpPTA7IGk8IiA8PCBwcm9iZXMuc2l6ZSgpIDw8ICI7IGkrKykgeyI7Ci0gICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSogc3RwID0gJiBzdGFwX3RpbWVyX3Byb2JlcyBbaV07IjsKLSAgIHMub3AtPm5ld2xpbmUoKSA8PCAicHJvYmVfcG9pbnQgPSBzdHAtPnByb2JlLT5wcDsiOwotLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJpbml0X3RpbWVyICgmIHN0cC0+dGltZXJfbGlzdCk7IjsKLS0gIHMub3AtPm5ld2xpbmUoKSA8PCAic3RwLT50aW1lcl9saXN0LmZ1bmN0aW9uID0gJiBlbnRlcl90aW1lcl9wcm9iZTsiOwotKwotKyAgcy5vcC0+bmV3bGluZSgpIDw8ICJ0aW1lcl9zZXR1cCAoJiBzdHAtPnRpbWVyX2xpc3QsIGVudGVyX3RpbWVyX3Byb2JlLCAwKTsiOwotKyAgcy5vcC0+bmV3bGluZSgpIDw8ICIjaWYgIWRlZmluZWQoVElNRVJfVFJBQ0VfRkxBR01BU0spIjsKLSAgIHMub3AtPm5ld2xpbmUoKSA8PCAic3RwLT50aW1lcl9saXN0LmRhdGEgPSBpOyI7IC8vIE5COiBpbXBvcnRhbnQhCi0rICBzLm9wLT5uZXdsaW5lKCkgPDwgIiNlbmRpZiI7Ci0gICAvLyBjb3B5IHRpbWVyIHJlbmV3IGNhbGN1bGF0aW9ucyBmcm9tIGFib3ZlIDotKAotICAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZXhwaXJlcyA9IGppZmZpZXMgKyAiOwotICAgZW1pdF9pbnRlcnZhbCAocy5vcCk7Ci1kaWZmIC0tZ2l0IGEvdGFwc2V0L2xpbnV4L3Njc2kuc3RwIGIvdGFwc2V0L2xpbnV4L3Njc2kuc3RwCi1pbmRleCA0NGY2ODZjLi4zNTc3OTQyIDEwMDY0NAotLS0tIGEvdGFwc2V0L2xpbnV4L3Njc2kuc3RwCi0rKysgYi90YXBzZXQvbGludXgvc2NzaS5zdHAKLUBAIC0xNCw3ICsxNCw3IEBACi0gI2luY2x1ZGUgPHNjc2kvc2NzaV9jbW5kLmg+Ci0gI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4KLSAjaW5jbHVkZSA8c2NzaS9zY3NpX2hvc3QuaD4KLS0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KLSsjaW5jbHVkZSAibGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIgotICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4KLSAlfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeGVzLWZvci1nY2MtOC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWIwYmZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLUZyb20gNGZmZTAwZjFkOWVhYzMzMmQ5MjhmN2RjMDFmZTI1MGRjMzJiMWJiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0YW4gQ294IDxzY294QHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDEzIEZlYiAyMDE4IDIyOjM4OjAzIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVzIGZvciBnY2MgOAotCi0qIGluY2x1ZGVzL3N5cy9zZHQuaCAoX19TRFRfQ09ORF9TSUdORUQpOiAgQWRkIENULCBjYXN0IHR5cGUgYXJndW1lbnQKLQotQXV0aG9yOiBXaWxsIENvaGVuIDx3Y29oZW4ucmVkaGF0LmNvbT4KLQotKiBzdGFwLXNlcnZlcmQuY3h4IChnZW5lcmF0ZV9tb2ssIGhhbmRsZVJlcXVlc3QsIGhhbmRsZV9jb25uZWN0aW9uKToKLSAgQ2F0Y2ggZm9ybWF0IG92ZXJmbG93Ci0KLSogdHJhbnNsYXRlLmN4eCAodHJhbnNsYXRlX3Bhc3MpOiBVc2UgcmVmIGluIGNhdGNoLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gaW5jbHVkZXMvc3lzL3NkdC5oIHwgMjAgKysrKysrKystLS0tLS0tLQotIHN0YXAtc2VydmVyZC5jeHggICB8IDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIHRyYW5zbGF0ZS5jeHggICAgICB8ICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3N5cy9zZHQuaCBiL2luY2x1ZGVzL3N5cy9zZHQuaAotaW5kZXggOTQwZjc0NDgzLi5jMGM1YTQ5MmMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlcy9zeXMvc2R0LmgKLSsrKyBiL2luY2x1ZGVzL3N5cy9zZHQuaAotQEAgLTExOSw4ICsxMTksOCBAQCBzdHJ1Y3QgX19zZHRfdHlwZQotICAgCi0gI2RlZmluZSBfX1NEVF9BTFdBWVNfU0lHTkVEKFQpIFwKLSB0ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gdHJ1ZTsgfTsKLS0jZGVmaW5lIF9fU0RUX0NPTkRfU0lHTkVEKFQpIFwKLS10ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gKChUKSgtMSkgPCAxKTsgfTsKLSsjZGVmaW5lIF9fU0RUX0NPTkRfU0lHTkVEKFQsQ1QpCQkJCQkJXAotK3RlbXBsYXRlPD4gc3RydWN0IF9fc2R0X3R5cGU8VD4geyBzdGF0aWMgY29uc3QgYm9vbCBfX3NkdF9zaWduZWQgPSAoKENUKSgtMSkgPCAxKTsgfTsKLSBfX1NEVF9BTFdBWVNfU0lHTkVEKHNpZ25lZCBjaGFyKQotIF9fU0RUX0FMV0FZU19TSUdORUQoc2hvcnQpCi0gX19TRFRfQUxXQVlTX1NJR05FRChpbnQpCi1AQCAtMTQxLDE0ICsxNDEsMTQgQEAgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBzaG9ydCkKLSBfX1NEVF9BTFdBWVNfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGludCkKLSBfX1NEVF9BTFdBWVNfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGxvbmcpCi0gX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBsb25nIGxvbmcpCi0tX19TRFRfQ09ORF9TSUdORUQoY2hhcikKLS1fX1NEVF9DT05EX1NJR05FRCh3Y2hhcl90KQotLV9fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIGNoYXIpCi0tX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgd2NoYXJfdCkKLS1fX1NEVF9DT05EX1NJR05FRChjb25zdCBjaGFyKQotLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHdjaGFyX3QpCi0tX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgY2hhcikKLS1fX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSB3Y2hhcl90KQotK19fU0RUX0NPTkRfU0lHTkVEKGNoYXIsIGNoYXIpCi0rX19TRFRfQ09ORF9TSUdORUQod2NoYXJfdCwgd2NoYXJfdCkKLStfX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSBjaGFyLCBjaGFyKQotK19fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIHdjaGFyX3QsIHdjaGFyX3QpCi0rX19TRFRfQ09ORF9TSUdORUQoY29uc3QgY2hhciwgY2hhcikKLStfX1NEVF9DT05EX1NJR05FRChjb25zdCB3Y2hhcl90LCB3Y2hhcl90KQotK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGNoYXIsIGNoYXIpCi0rX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgd2NoYXJfdCwgd2NoYXJfdCkKLSAjaWYgZGVmaW5lZCAoX19HTlVDX18pICYmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNCkpCi0gLyogX19TRFRfQ09ORF9TSUdORUQoY2hhcjE2X3QpICovCi0gLyogX19TRFRfQ09ORF9TSUdORUQoY2hhcjMyX3QpICovCi1kaWZmIC0tZ2l0IGEvc3RhcC1zZXJ2ZXJkLmN4eCBiL3N0YXAtc2VydmVyZC5jeHgKLWluZGV4IDdjZjc2YzYxNy4uNDFmNzdlZTllIDEwMDY0NAotLS0tIGEvc3RhcC1zZXJ2ZXJkLmN4eAotKysrIGIvc3RhcC1zZXJ2ZXJkLmN4eAotQEAgLTE2MDcsNiArMTYwNyw3IEBAIGdlbmVyYXRlX21vayhzdHJpbmcgJm1va19maW5nZXJwcmludCkKLSAgIGNoYXIgdG1wZGlyW1BBVEhfTUFYXSA9IHsgJ1wwJyB9OwotICAgc3RyaW5nIHB1YmxpY19jZXJ0X3BhdGgsIHByaXZhdGVfY2VydF9wYXRoLCBkZXN0ZGlyOwotICAgbW9kZV90IG9sZF91bWFzazsKLSsgIGludCByZXRsZW47Ci0gCi0gICBtb2tfZmluZ2VycHJpbnQuY2xlYXIgKCk7Ci0gCi1AQCAtMTYzMSw3ICsxNjMyLDE0IEBAIGdlbmVyYXRlX21vayhzdHJpbmcgJm1va19maW5nZXJwcmludCkKLSAgICAgfQotIAotICAgLy8gTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc3RvcmUgcmVzdWx0cyBpbi4KLS0gIHNucHJpbnRmICh0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgbW9rX3BhdGguY19zdHIgKCkpOwotKyAgcmV0bGVuID0gc25wcmludGYgKHRtcGRpciwgUEFUSF9NQVgsICIlcy9zdGFwLXNlcnZlci5YWFhYWFgiLCBtb2tfcGF0aC5jX3N0ciAoKSk7Ci0rICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgIHsKLSsgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJDb3VsZCBub3QgY3JlYXRlICVzIG5hbWUiLCAidGVtcG9yYXJ5IGRpcmVjdG9yeSIpKTsKLSsgICAgICB0bXBkaXJbMF0gPSAnXDAnOwotKyAgICAgIGdvdG8gY2xlYW51cDsKLSsgICAgfQotKwotICAgaWYgKG1rZHRlbXAgKHRtcGRpcikgPT0gTlVMTCkKLSAgICAgewotICAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlczogJXMiLCB0bXBkaXIsIAotQEAgLTE3MDQsNiArMTcxMiw3IEBAIGhhbmRsZVJlcXVlc3QgKGNvbnN0IHN0cmluZyAmcmVxdWVzdERpck5hbWUsIGNvbnN0IHN0cmluZyAmcmVzcG9uc2VEaXJOYW1lLCBzdHJpCi0gICB1bnNpZ25lZCB1OwotICAgdW5zaWduZWQgaTsKLSAgIEZJTEUqIGY7Ci0rICBpbnQgcmV0bGVuOwotIAotICAgLy8gU2F2ZSB0aGUgc2VydmVyIHZlcnNpb24uIERvIHRoaXMgZWFybHksIHNvIHRoZSBjbGllbnQga25vd3Mgd2hhdCB2ZXJzaW9uIG9mIHRoZSBzZXJ2ZXIKLSAgIC8vIGl0IGlzIGRlYWxpbmcgd2l0aCwgZXZlbiBpZiB0aGUgcmVxdWVzdCBpcyBub3QgZnVsbHkgY29tcGxldGVkLgotQEAgLTE3ODIsNyArMTc5MSwxMiBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQotICAgICAgIHN0cnVjdCBzdGF0IHN0OwotICAgICAgIGNoYXIgKmFyZzsKLSAKLS0gICAgICBzbnByaW50ZiAoc3RhcGFyZ2ZpbGUsIFBBVEhfTUFYLCAiJXMvYXJndiVkIiwgcmVxdWVzdERpck5hbWUuY19zdHIgKCksIGkpOwotKyAgICAgIHJldGxlbiA9IHNucHJpbnRmIChzdGFwYXJnZmlsZSwgUEFUSF9NQVgsICIlcy9hcmd2JWQiLCByZXF1ZXN0RGlyTmFtZS5jX3N0ciAoKSwgaSk7Ci0rICAgICAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQotKyAgICAgICAgewotKyAgICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInBhdGgiKSk7Ci0rICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSAKLSAgICAgICByYyA9IHN0YXQoc3RhcGFyZ2ZpbGUsICYgc3QpOwotICAgICAgIGlmIChyYykgYnJlYWs7Ci1AQCAtMTg4OCw3ICsxOTAyLDE1IEBAIGhhbmRsZVJlcXVlc3QgKGNvbnN0IHN0cmluZyAmcmVxdWVzdERpck5hbWUsIGNvbnN0IHN0cmluZyAmcmVzcG9uc2VEaXJOYW1lLCBzdHJpCi0gICAgIHsKLSAgICAgICBnbG9iX3QgZ2xvYmJlcjsKLSAgICAgICBjaGFyIHBhdHRlcm5bUEFUSF9NQVhdOwotLSAgICAgIHNucHJpbnRmIChwYXR0ZXJuLCBQQVRIX01BWCwgIiVzLyoua28iLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKTsKLSsgICAgICBpbnQgcmV0bGVuOwotKwotKyAgICAgIHJldGxlbiA9IHNucHJpbnRmIChwYXR0ZXJuLCBQQVRIX01BWCwgIiVzLyoua28iLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKTsKLSsgICAgICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicGF0dGVybiIpKTsKLSsgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotKwotICAgICAgIHJjID0gZ2xvYiAocGF0dGVybiwgR0xPQl9FUlIsIE5VTEwsICZnbG9iYmVyKTsKLSAgICAgICBpZiAocmMpCi0gICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJVbmFibGUgdG8gZmluZCBhIG1vZHVsZSBpbiAlcyIsIG5ld19zdGFwdG1wZGlyLmNfc3RyKCkpKTsKLUBAIC0yMTY0LDYgKzIxODYsNyBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQotICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgZm9yIGVhY2ggY29ubmVjdGlvbi4qLwotICAgdmVjdG9yPHN0cmluZz4gICAgIGFyZ3Y7Ci0gICBQUkludDMyICAgICAgICAgICAgYnl0ZXNSZWFkOwotKyAgaW50CQkgICAgIHJldGxlbjsKLSAKLSAgIC8qIERldGF0Y2ggdG8gYXZvaWQgYSBtZW1vcnkgbGVhayAqLwotICAgaWYobWF4X3RocmVhZHMgPiAwKQotQEAgLTIyMTMsNyArMjIzNiwxMyBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQotICNlbmRpZgotIAotICAgc2VjU3RhdHVzID0gU0VDRmFpbHVyZTsKLS0gIHNucHJpbnRmKHRtcGRpciwgUEFUSF9NQVgsICIlcy9zdGFwLXNlcnZlci5YWFhYWFgiLCBnZXRlbnYoIlRNUERJUiIpID86ICIvdG1wIik7Ci0rICByZXRsZW4gPSBzbnByaW50Zih0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgZ2V0ZW52KCJUTVBESVIiKSA/OiAiL3RtcCIpOwotKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQotKyAgICB7Ci0rICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJ0ZW1wb3JhcnkgZGlyZWN0b3J5IikpOwotKyAgICAgIHRtcGRpclswXT0wOyAvKiBwcmV2ZW50IC9iaW4vcm0gKi8KLSsgICAgICBnb3RvIGNsZWFudXA7Ci0rICAgIH0KLSAgIHJjMSA9IG1rZHRlbXAodG1wZGlyKTsKLSAgIGlmICghIHJjMSkKLSAgICAgewotQEAgLTIyMjMsOSArMjI1MiwyMCBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQotICAgICB9Ci0gCi0gICAvKiBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZXMgbmFtZXMgYW5kIGRpcmVjdG9yaWVzLiAgKi8KLS0gIHNucHJpbnRmIChyZXF1ZXN0RmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdC56aXAiLCB0bXBkaXIpOwotKyAgcmV0bGVuID0gc25wcmludGYgKHJlcXVlc3RGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXF1ZXN0LnppcCIsIHRtcGRpcik7Ci0rICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgIHsKLSsgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlcXVlc3QuemlwIHBhdGgiKSk7Ci0rICAgICAgZ290byBjbGVhbnVwOwotKyAgICB9Ci0rCi0rICByZXRsZW4gPSBzbnByaW50ZiAocmVxdWVzdERpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdCIsIHRtcGRpcik7Ci0rICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgIHsKLSsgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlcXVlc3QgZGlyZWN0b3J5IHBhdGgiKSk7Ci0rICAgICAgZ290byBjbGVhbnVwOwotKyAgICB9Ci0gCi0tICBzbnByaW50ZiAocmVxdWVzdERpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdCIsIHRtcGRpcik7Ci0gICByYyA9IG1rZGlyKHJlcXVlc3REaXJOYW1lLCAwNzAwKTsKLSAgIGlmIChyYykKLSAgICAgewotQEAgLTIyMzMsNyArMjI3MywxMyBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQotICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgfQotIAotLSAgc25wcmludGYgKHJlc3BvbnNlRGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZSIsIHRtcGRpcik7Ci0rICByZXRsZW4gPSBzbnByaW50ZiAocmVzcG9uc2VEaXJOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlIiwgdG1wZGlyKTsKLSsgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKLSsgICAgewotKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicmVzcG9uc2UgZGlyZWN0b3J5IHBhdGgiKSk7Ci0rICAgICAgZ290byBjbGVhbnVwOwotKyAgICB9Ci0rCi0gICByYyA9IG1rZGlyKHJlc3BvbnNlRGlyTmFtZSwgMDcwMCk7Ci0gICBpZiAocmMpCi0gICAgIHsKLUBAIC0yMjQzLDcgKzIyODksMTIgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKLSAgIC8vIFNldCB0aGlzIGVhcmx5LCBzaW5jZSBpdCBnZXRzIHVzZWQgZm9yIGVycm9ycyB0byBiZSByZXR1cm5lZCB0byB0aGUgY2xpZW50LgotICAgc3RhcHN0ZGVyciA9IHN0cmluZyhyZXNwb25zZURpck5hbWUpICsgIi9zdGRlcnIiOwotIAotLSAgc25wcmludGYgKHJlc3BvbnNlRmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UuemlwIiwgdG1wZGlyKTsKLSsgIHJldGxlbiA9IHNucHJpbnRmIChyZXNwb25zZUZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlLnppcCIsIHRtcGRpcik7Ci0rICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgIHsKLSsgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlc3BvbnNlLnppcCBwYXRoIikpOwotKyAgICAgIGdvdG8gY2xlYW51cDsKLSsgICAgfQotIAotICAgLyogUmVhZCBkYXRhIGZyb20gdGhlIHNvY2tldC4KLSAgICAqIElmIHRoZSB1c2VyIGlzIHJlcXVlc3RpbmcvcmVxdWlyaW5nIGF1dGhlbnRpY2F0aW9uLCBhdXRoZW50aWNhdGUKLWRpZmYgLS1naXQgYS90cmFuc2xhdGUuY3h4IGIvdHJhbnNsYXRlLmN4eAotaW5kZXggMTI0MGE4MGVjLi40YWRlMDZmZGQgMTAwNjQ0Ci0tLS0gYS90cmFuc2xhdGUuY3h4Ci0rKysgYi90cmFuc2xhdGUuY3h4Ci1AQCAtNzg2MCw3ICs3ODYwLDcgQEAgdHJhbnNsYXRlX3Bhc3MgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQotIAkgIGlmICh2ZXJzaW9ucy5zaXplKCkgPj0gMyAmJiBzLnZlcmJvc2UgPiAxKQotIAkgICAgY2xvZyA8PCBfRigiaWdub3JpbmcgZXh0cmEgcGFydHMgb2YgY29tcGF0IHZlcnNpb246ICVzIiwgcy5jb21wYXRpYmxlLmNfc3RyKCkpIDw8IGVuZGw7Ci0gCX0KLS0gICAgICBjYXRjaCAoY29uc3QgcnVudGltZV9lcnJvcikKLSsgICAgICBjYXRjaCAoY29uc3QgcnVudGltZV9lcnJvciYpCi0gCXsKLSAJICB0aHJvdyBTRU1BTlRJQ19FUlJPUihfRigicGFyc2UgZXJyb3IgaW4gY29tcGF0aWJpbGl0eSB2ZXJzaW9uOiAlcyIsIHMuY29tcGF0aWJsZS5jX3N0cigpKSk7Ci0gCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1JbnN0YWxsLXB5dGhvbi1tb2R1bGVzLXRvLWNvcnJlY3QtbGlicmFyeS1kaXIucGF0Y2gKaW5kZXggNTI4ODY0Yy4uNDhjZjRhZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1JbnN0YWxsLXB5dGhvbi1tb2R1bGVzLXRvLWNvcnJlY3QtbGlicmFyeS1kaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1JbnN0YWxsLXB5dGhvbi1tb2R1bGVzLXRvLWNvcnJlY3QtbGlicmFyeS1kaXIucGF0Y2gKQEAgLTUsMzIgKzUsNTIgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKK0FkZCBPRSdzIENGTEFHUyB3aGljaCBjb250YWlucyBgLWZkZWJ1Zy1wcmVmaXgtbWFwJyBvcHRpb25zIHRvCitzZXR1cC5weQorCitTdXBwbHkgIi0tcm9vdCIgZGlyZWN0b3J5IHRvIHRoZSAiaW5zdGFsbCIgY29tbWFuZCwgYW5kIHVzZQoraXQgYXMgYSBwcmVmaXggdG8gc3RyaXAgb2ZmIHRoZSBwdXJwb3J0ZWQgZmlsZW5hbWUgZW5jb2RlZAoraW4gYnl0ZWNvZGUgZmlsZXMuIChJdCBzdHJpcHMgYnVpbGQgcGF0aCBwcmVmaXggZnJvbSAucHljIGZpbGVzKQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSBweXRob24vTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIHB5dGhvbi9NYWtlZmlsZS5hbSB8IDggKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCBhMjU0NDgwZjkuLmVmZTlmM2MwMSAxMDA2NDQKK2luZGV4IGEyNTQ0ODAuLjU3ODYwMmYgMTAwNjQ0CiAtLS0gYS9weXRob24vTWFrZWZpbGUuYW0KICsrKyBiL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTQ3LDcgKzQ3LDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorQEAgLTgsNiArOCwxMCBAQCBBVVRPTUFLRV9PUFRJT05TID0gc3ViZGlyLW9iamVjdHMKKyBBTV9DUFBGTEFHUyA9IC1JJChzcmNkaXIpLy4uL2luY2x1ZGVzCisgQU1fQ1BQRkxBR1MgKz0gLUkkKGFic19idWlsZGRpcikvLi4vaW5jbHVkZXMvc3lzCisgCisrIyBBZGQgT0UncyBDRkxBR1Mgd2hpY2ggY29udGFpbnMgYC1mZGVidWctcHJlZml4LW1hcCcgb3B0aW9ucyB0bworKyMgZml4IGJ1aWxkIHBhdGggaXNzdWUKKytBTV9DUFBGTEFHUyArPSAkKENGTEFHUykKKysKKyAjIEFueSBzY3JpcHQgaW4gdGhlIGZvbGxvd2luZyB2YXJpYWJsZSB3aWxsIGdldCBieXRlLWNvbXBpbGVkIGF0CisgIyBpbnN0YWxsIHRpbWUuCisgcGtnbGliZXhlY3B5dGhvbl9QWVRIT04gPQorQEAgLTQ3LDcgKzUxLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgogIGlmIEhBVkVfUFlUSE9OMl9QUk9CRVMKICAJKGNkICQoc3JjZGlyKTsgQ0ZMQUdTPSIkKEFNX0NQUEZMQUdTKSIgJChQWVRIT04pIHNldHVwLnB5IGJ1aWxkIFwKICAgICAgICAgICAtLWJ1aWxkLWJhc2UgJChzaGVsbCByZWFkbGluayAtZiAkKGJ1aWxkZGlyKSkvcHkyYnVpbGQgXAogLQkgaW5zdGFsbCAtLXByZWZpeCAkKERFU1RESVIpJChwcmVmaXgpIFwKLSsJIGluc3RhbGwgLS1wcmVmaXggJChERVNURElSKSQocHJlZml4KSAtLWluc3RhbGwtbGliPSQoREVTVERJUikke3B5dGhvbmRpcn0gXAorKwkgaW5zdGFsbCAtLXJvb3QgJChERVNURElSKSAtLXByZWZpeCAkKHByZWZpeCkgLS1wcmVmaXggJChwcmVmaXgpIC0taW5zdGFsbC1saWI9JHtweXRob25kaXJ9IFwKICAJIC0tc2luZ2xlLXZlcnNpb24tZXh0ZXJuYWxseS1tYW5hZ2VkIFwKICAJIC0tcmVjb3JkICQoc2hlbGwgcmVhZGxpbmsgLWYgJChidWlsZGRpcikpL3B5MmJ1aWxkL2luc3RhbGxfZmlsZXMudHh0IFwKICAgICAgICAgICAtLXZlcmJvc2UpCi1AQCAtNTUsNyArNTUsNyBAQCBlbmRpZgorQEAgLTU1LDcgKzU5LDcgQEAgZW5kaWYKICBpZiBIQVZFX1BZVEhPTjNfUFJPQkVTCiAgCShjZCAkKHNyY2Rpcik7IENGTEFHUz0iJChBTV9DUFBGTEFHUykiICQoUFlUSE9OMykgc2V0dXAucHkgYnVpbGQgXAogICAgICAgICAgIC0tYnVpbGQtYmFzZSAkKHNoZWxsIHJlYWRsaW5rIC1mICQoYnVpbGRkaXIpKS9weTNidWlsZCBcCiAtCSBpbnN0YWxsIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAotKwkgaW5zdGFsbCAtLXByZWZpeCAkKERFU1RESVIpJChwcmVmaXgpIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uM2Rpcn0gXAorKwkgaW5zdGFsbCAtLXJvb3QgJChERVNURElSKSAtLXByZWZpeCAkKHByZWZpeCkgLS1pbnN0YWxsLWxpYj0ke3B5dGhvbjNkaXJ9IFwKICAJIC0tc2luZ2xlLXZlcnNpb24tZXh0ZXJuYWxseS1tYW5hZ2VkIFwKICAJIC0tcmVjb3JkICQoc2hlbGwgcmVhZGxpbmsgLWYgJChidWlsZGRpcikpL3B5M2J1aWxkL2luc3RhbGxfZmlsZXMudHh0IFwKICAgICAgICAgICAtLXZlcmJvc2UpCiAtLSAKLTIuMTEuMAorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2Q5MDMwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1Gcm9tIDQxZWZhZDA0NzMwYmU4OTg4OWQxNDgzNzE5ZjlhNmM5Mzk2ZGMyNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IE1hciAyMDE4IDE3OjA1OjI1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugc3VyZSBzeXNyb290IHBhdGhzIGRvbid0IGVuZCB3aXRoIGEgc2xhc2guCi0KLSogc2Vzc2lvbi5jeHggKHBhcnNlX2NtZGxpbmUpOiBNYWtlIHN1cmUgYSBzeXNyb290IHBhdGggZG9lcyBub3QgZW5kIHdpdGgKLSAgYSAnLycsIHNpbmNlIHdlIGJ1aWxkIHBhdGhzIGxpa2U6IHN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzIi4gSWYgdGhlCi0gIHN5c3Jvb3QgcGF0aCBlbmRzIHdpdGggYSAnLycsIHdlIGVuZCB1cCB3aXRoIHBhdGhzIGxpa2UKLSAgJy9TWVNST09ULy9saWIvbW9kdWxlcycuCi0gIChzZXR1cF9rZXJuZWxfcmVsZWFzZSk6IFRha2UgYSBzdHJpbmcgcGFyYW1ldGVyLCBub3QgYSBjaGFyYWN0ZXIgcG9pbnRlci4KLSogc2Vzc2lvbi5oOiBVcGRhdGUgc2V0dXBfa2VybmVsX3JlbGVhc2UoKSBwcm90b3R5cGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gc2Vzc2lvbi5jeHggfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gc2Vzc2lvbi5oICAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9zZXNzaW9uLmN4eAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Nlc3Npb24uY3h4Ci0rKysgZ2l0L3Nlc3Npb24uY3h4Ci1AQCAtNzIyLDYgKzcyMiw5IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKLSAgIGNsaWVudF9vcHRpb25zX2Rpc2FsbG93ZWRfZm9yX3VucHJpdmlsZWdlZCA9ICIiOwotICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IGFkZGl0aW9uYWxfdW53aW5kc3ltX21vZHVsZXM7Ci0gICBzdHJ1Y3QgcmxpbWl0IG91cl9ybGltaXQ7Ci0rICBib29sIHN5c3Jvb3Rfb3B0aW9uX3NlZW4gPSBmYWxzZTsKLSsgIHN0cmluZyBrZXJuZWxfcmVsZWFzZV92YWx1ZTsKLSsKLSAgIHdoaWxlICh0cnVlKQotICAgICB7Ci0gICAgICAgY2hhciAqIG51bV9lbmRwdHI7Ci1AQCAtODg3LDcgKzg5MCw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKLSAJICAgIC8vIE5vdGUgdGhhdCAnLScgbXVzdCBjb21lIGxhc3QgaW4gYSByZWdleCBicmFja2V0IGV4cHJlc3Npb24uCi0gICAgICAgICAgICAgYXNzZXJ0X3JlZ2V4cF9tYXRjaCgiLXIgcGFyYW1ldGVyIGZyb20gY2xpZW50Iiwgb3B0YXJnLCAiXlthLXowLTlfListXSskIik7Ci0gCSAgc2VydmVyX2FyZ3MucHVzaF9iYWNrIChzdHJpbmcgKCItIikgKyAoY2hhcilncmMgKyBvcHRhcmcpOwotLSAgICAgICAgICBzZXR1cF9rZXJuZWxfcmVsZWFzZShvcHRhcmcpOwotKwkgIGtlcm5lbF9yZWxlYXNlX3ZhbHVlID0gb3B0YXJnOwotICAgICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIGNhc2UgJ2EnOgotQEAgLTE0NzMsNyArMTQ3Niw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKLSAJICBpZiAoY2xpZW50X29wdGlvbnMpIHsKLSAJICAgICAgY2VyciA8PCBfRigiRVJST1I6ICVzIGludmFsaWQgd2l0aCAlcyIsICItLXN5c3Jvb3QiLCAiLS1jbGllbnQtb3B0aW9ucyIpIDw8IGVuZGw7Ci0gCSAgICAgIHJldHVybiAxOwotLQkgIH0gZWxzZSBpZiAoIXN5c3Jvb3QuZW1wdHkoKSkgewotKwkgIH0gZWxzZSBpZiAoc3lzcm9vdF9vcHRpb25fc2VlbikgewotIAkgICAgICBjZXJyIDw8ICJFUlJPUjogbXVsdGlwbGUgLS1zeXNyb290IG9wdGlvbnMgbm90IHN1cHBvcnRlZCIgPDwgZW5kbDsKLSAJICAgICAgcmV0dXJuIDE7Ci0gCSAgfSBlbHNlIHsKLUBAIC0xNDg3LDExICsxNDkwLDE3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKLSAKLSAJICAgICAgc3lzcm9vdCA9IHN0cmluZyhzcGF0aCk7Ci0gCSAgICAgIGZyZWUgKHNwYXRoKTsKLS0JICAgICAgaWYgKHN5c3Jvb3Rbc3lzcm9vdC5zaXplKCkgLSAxXSAhPSAnLycpCi0tCQkgIHN5c3Jvb3QuYXBwZW5kKCIvIik7Ci0gCi0tCSAgICAgIGJyZWFrOwotKwkgICAgICAvLyBXZSBkbyBwYXRoIGNyZWF0aW9uIGxpa2UgdGhpczoKLSsJICAgICAgLy8gICBzeXNyb290ICsgIi9saWIvbW9kdWxlcyIKLSsJICAgICAgLy8gU28sIHdlIGRvbid0IHdhbnQgdGhlIHN5c3Jvb3QgcGF0aCB0byBlbmQgd2l0aCBhICcvJywKLSsJICAgICAgLy8gb3RoZXJ3aXNlIHdlJ2xsIGVuZCB1cCB3aXRoICcvZm9vLy9saWIvbW9kdWxlcycuCi0rCSAgICAgIGlmIChzeXNyb290LmJhY2soKSA9PSAnLycpIHsKLSsJCSAgc3lzcm9vdC5wb3BfYmFjaygpOwotKwkgICAgICB9Ci0gCSAgfQotKwkgIHN5c3Jvb3Rfb3B0aW9uX3NlZW4gPSB0cnVlOwotKwkgIGJyZWFrOwotIAotIAljYXNlIExPTkdfT1BUX1NZU0VOVjoKLSAJICBpZiAoY2xpZW50X29wdGlvbnMpIHsKLUBAIC0xNTAxLDcgKzE1MTAsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCi0gCSAgICAgIHN0cmluZyBzeXNlbnZfc3RyID0gb3B0YXJnOwotIAkgICAgICBzdHJpbmcgdmFsdWU7Ci0gCSAgICAgIHNpemVfdCBwb3M7Ci0tCSAgICAgIGlmIChzeXNyb290LmVtcHR5KCkpIHsKLSsJICAgICAgaWYgKCEgc3lzcm9vdF9vcHRpb25fc2VlbikgewotIAkJICBjZXJyIDw8ICJFUlJPUjogLS1zeXNlbnYgbXVzdCBmb2xsb3cgLS1zeXNyb290IiA8PCBlbmRsOwotIAkJICByZXR1cm4gMTsKLSAJICAgICAgfQotQEAgLTE2NDYsNiArMTY1NSwxNSBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCi0gCX0KLSAgICAgfQotIAotKyAgaWYgKCEga2VybmVsX3JlbGVhc2VfdmFsdWUuZW1wdHkoKSkKLSsgIHsKLSsgICAgICBzZXR1cF9rZXJuZWxfcmVsZWFzZShrZXJuZWxfcmVsZWFzZV92YWx1ZSk7Ci0rICB9Ci0rICBlbHNlIGlmICghIHN5c3Jvb3QuZW1wdHkoKSkKLSsgIHsKLSsgICAgICBrZXJuZWxfYnVpbGRfdHJlZSA9IHN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzLyIgKyBrZXJuZWxfcmVsZWFzZSAgKyAiL2J1aWxkIjsKLSsgIH0KLSsKLSAgIHJldHVybiAwOwotIH0KLSAKLUBAIC0yMTUyLDcgKzIxNzAsNyBAQCB2b2lkIHN5c3RlbXRhcF9zZXNzaW9uOjppbnNlcnRfbG9hZGVkX21vCi0gfQotIAotIHZvaWQKLS1zeXN0ZW10YXBfc2Vzc2lvbjo6c2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IGNoYXIqIGtzdHIpIAotK3N5c3RlbXRhcF9zZXNzaW9uOjpzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3Qgc3RyaW5nJiBrc3RyKSAKLSB7Ci0gICAvLyBTb21ldGltZXMgd2UgbWF5IGdldCBkdXBlcyBoZXJlLi4uIGUuZy4gYSBzZXJ2ZXIgbWF5IGhhdmUgYSBmdWxsCi0gICAvLyAtciAvcGF0aC90by9rZXJuZWwgZm9sbG93ZWQgYnkgYSBjbGllbnQncyAtciBrZXJuZWwuCi1AQCAtMjE4Myw3ICsyMjAxLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnNldHVwX2tlcm5lbF9yZWxlYXNlCi0gICBlbHNlCi0gICAgIHsKLSAgICAgICB1cGRhdGVfcmVsZWFzZV9zeXNyb290ID0gdHJ1ZTsKLS0gICAgICBrZXJuZWxfcmVsZWFzZSA9IHN0cmluZyAoa3N0cik7Ci0rICAgICAga2VybmVsX3JlbGVhc2UgPSBrc3RyOwotICAgICAgIGlmICgha2VybmVsX3JlbGVhc2UuZW1wdHkoKSkKLSAgICAgICAgIGtlcm5lbF9idWlsZF90cmVlID0gIi9saWIvbW9kdWxlcy8iICsga2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKLSAKLUluZGV4OiBnaXQvc2Vzc2lvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc2Vzc2lvbi5oCi0rKysgZ2l0L3Nlc3Npb24uaAotQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6Ci0gCi0gICAvLyBOQjogSXQgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIGFsbCBvZiB0aGUgYWJvdmUgKGFuZCBiZWxvdykgZmllbGRzCi0gICAvLyB0byBiZSBjbGVhcmVkIGluIHRoZSBzeXN0ZW10YXBfc2Vzc2lvbiBjdG9yIChzZXNzaW9uLmN4eCkuCi0tICB2b2lkIHNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBjaGFyKiBrc3RyKTsKLSsgIHZvaWQgc2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IHN0ZDo6c3RyaW5nJiBrc3RyKTsKLSAgIHZvaWQgaW5zZXJ0X2xvYWRlZF9tb2R1bGVzICgpOwotIAotICAgLy8gY29tbWFuZCBsaW5lIHBhcnNpbmcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1Vc2Utc3lzcm9vdC13aGVuLWxvb2tpbmctZm9yLXRoZS1TeXN0ZW0ubWFwLWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyODIwYjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1Vc2Utc3lzcm9vdC13aGVuLWxvb2tpbmctZm9yLXRoZS1TeXN0ZW0ubWFwLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDQzNjA2M2Q1ZTQ3MzhhOWIwMzUzNWQzMzBhMjI0MmJlNTExOGU3NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDggTWFyIDIwMTggMTY6MDE6NTggLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIHN5c3Jvb3Qgd2hlbiBsb29raW5nIGZvciB0aGUgU3lzdGVtLm1hcCBmaWxlLgotCi1BZGQgc3lzcm9vdCB0byBzeXN0ZW1fbWFwX3BhdGggKyAiL2Jvb3QvU3lzdGVtLm1hcCIgY2FzZS4gT3RoZXJ3aXNlCi1zdGFwIHRyaWVzIHRvIGxvb2sgc3ltYm9scyBvbiBob3N0IHN5c3RlbSBhbmQgaXQgcHJvZHVjZSBlcnJvciBsaWtlIHRoaXM6Ci0KLT4gS2VybmVsIHN5bWJvbCB0YWJsZSAvYm9vdC9TeXN0ZW0ubWFwLTQuOS43OC15b2N0by1zdGFuZGFyZCB1bmF2YWlsYWJsZSwgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gc2Vzc2lvbi5jeHggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvc2Vzc2lvbi5jeHgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAotKysrIGdpdC9zZXNzaW9uLmN4eAotQEAgLTIwMTMsNyArMjAxMyw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9rZXJuZWxfZnVuY3Rpb24KLSAJY2xvZyA8PCBfRigiS2VybmVsIHN5bWJvbCB0YWJsZSAlcyB1bmF2YWlsYWJsZSwgKCVzKSIsCi0gCQkgICBzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgc3RyZXJyb3IoZXJybm8pKSA8PCBlbmRsOwotIAotLSAgICAgIHN5c3RlbV9tYXBfcGF0aCA9ICIvYm9vdC9TeXN0ZW0ubWFwLSIgKyBrZXJuZWxfcmVsZWFzZTsKLSsgICAgICBzeXN0ZW1fbWFwX3BhdGggPSBzeXNyb290ICsgIi9ib290L1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOwotICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKLSAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7Ci0gICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLV9zdHBfdW1vZHVsZV9yZWxvY2F0ZS1uZWVkcy10YXJnZXQtZmlsZS1wYXRoLW5vdC1ob3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLV9zdHBfdW1vZHVsZV9yZWxvY2F0ZS1uZWVkcy10YXJnZXQtZmlsZS1wYXRoLW5vdC1ob3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MTgxYTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAxODNjN2E3YTgxNjczMzNjODczNTI1Zjc5MDg5MTM4MzdiOGRjM2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1EYXRlOiBUdWUsIDIwIE1hciAyMDE4IDEyOjQxOjA1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIF9zdHBfdW1vZHVsZV9yZWxvY2F0ZSBuZWVkcyB0YXJnZXQgZmlsZSBwYXRoLCBub3QgaG9zdCBmaWxlCi0gcGF0aAotCi1TdHJpcCBvZiBzeXNyb290IGZyb20gbW9kdWxlIG5hbWUgaXMgcmVxdWlyZWQgd2hlbiBfc3RwX3Vtb2R1bGVfcmVsb2NhdGUKLWNhbGwgaXMgZ2VuZXJhdGVkLiBPdGhlcndpc2UgcGF0aCB3b24ndCBtYXRjaCBwYXRoIG9uIHRhcmdldCBhbmQgY291bGQKLXdpbGwgZmFpbCB0byBjYWxjdWxhdGVkIGFkZHJlc3Mgd2l0aGluIHRoZSBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLS0tLQotIGxvYzJzdGFwLmN4eCB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9sb2Myc3RhcC5jeHggYi9sb2Myc3RhcC5jeHgKLWluZGV4IDQ4MThlZTAuLmUwOTk1NGYgMTAwNjQ0Ci0tLS0gYS9sb2Myc3RhcC5jeHgKLSsrKyBiL2xvYzJzdGFwLmN4eAotQEAgLTE3LDYgKzE3LDcgQEAKLSAKLSAjaW5jbHVkZSAibG9jMnN0YXAuaCIKLSAjaW5jbHVkZSAiZHdmbHBwLmgiCi0rI2luY2x1ZGUgInRhcHNldHMuaCIKLSAKLSAjaWYgISBfRUxGVVRJTFNfUFJFUkVRKDAsIDE1MykKLSAjZGVmaW5lIERXX09QX0dOVV9lbnRyeV92YWx1ZSAweGYzCi1AQCAtMTA2LDcgKzEwNyw5IEBAIGxvY2F0aW9uX2NvbnRleHQ6OnRyYW5zbGF0ZV9hZGRyZXNzKER3YXJmX0FkZHIgYWRkcikKLSAgICAgICAgICAgYyA9ICIvKiBwcmFnbWE6dm1hICovICIKLSAgICAgICAgICAgICAgICIoeyB1bnNpZ25lZCBsb25nIGFkZHIgPSAwOyAiCi0gICAgICAgICAgICAgICAiYWRkciA9IF9zdHBfdW1vZHVsZV9yZWxvY2F0ZSAoXCIiCi0tICAgICAgICAgICAgICArIHJlc29sdmVfcGF0aChkdy0+bW9kdWxlX25hbWUuY19zdHIoKSkgKyAiXCIsICIKLSsgICAgICAgICAgICAgICsgcGF0aF9yZW1vdmVfc3lzcm9vdChkdy0+c2VzcywKLSsJCQkJICAgIHJlc29sdmVfcGF0aChkdy0+bW9kdWxlX25hbWUuY19zdHIoKSkpCi0rCSAgICAgICsgIlwiLCAiCi0gICAgICAgICAgICAgICArIGxleF9jYXN0X2hleCAoYWRkcikKLSAJICAgICAgKyAiLCBjdXJyZW50KTsgYWRkcjsgfSkiOwotIAl9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWJ1aWxkcnVuLXJlbW92ZS1xdW90ZXMtYXJvdW5kLUktaW5jbHVkZS1saW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1idWlsZHJ1bi1yZW1vdmUtcXVvdGVzLWFyb3VuZC1JLWluY2x1ZGUtbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk5NmZkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWJ1aWxkcnVuLXJlbW92ZS1xdW90ZXMtYXJvdW5kLUktaW5jbHVkZS1saW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA3NWM0YWVjNmRlM2E2MTU5MDlmMzI4M2VhYzU4NTc2MGRlMTAxYjhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotRGF0ZTogVHVlLCA3IE1hciAyMDE3IDEwOjQ2OjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkcnVuOiByZW1vdmUgcXVvdGVzIGFyb3VuZCAtSSBpbmNsdWRlIGxpbmUKLQotQnkgaGF2aW5nIHRoZSBxdW90ZXMsIHRoZSBrZXJuZWwgTWFrZWZpbGUgYWRkdHJlZSBtYWNybyBhZGRzIHRoZQota2VybmVsICRzcmN0cmVlIGRpcmVjdG9yeSBhcyBhIHByZWZpeCBhbmQgY2F1c2VzIGNvbXBpbGF0aW9uIGZhaWx1cmVzLgotUmVtb3ZpbmcgdGhlIHF1b3RlcyByZXNvbHZlcyB0aGUgaXNzdWUuCi0KLVRoaXMgaXMgdHJpbW1lZCBmcm9tIHRoZSB2ZXJib3NlIG91dHB1dCBvZiB0aGUgR0NDIGNvbW1hbmQgbGluZQotQmVmb3JlOgotIC1JL3Nydi9zZGIvYnVpbGRzLzQuOS90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni02NC9rZXJuZWwtc291cmNlLyIvc3J2L3NkYi9yZWxlYXNlcy9qZXRocm8vYnVpbGRzLzQuMS90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9zaGFyZS9zeXN0ZW10YXAvcnVudGltZSIKLQotQWZ0ZXI6Ci0gLUkvc3J2L3NkYi9idWlsZHMvNC45L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL3N5c3RlbXRhcC9ydW50aW1lCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotLS0tCi0gYnVpbGRydW4uY3h4IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbGRydW4uY3h4IGIvYnVpbGRydW4uY3h4Ci1pbmRleCBhYWVhNjRjLi44YThlZTlmIDEwMDY0NAotLS0tIGEvYnVpbGRydW4uY3h4Ci0rKysgYi9idWlsZHJ1bi5jeHgKLUBAIC00OTUsNyArNDk1LDcgQEAgY29tcGlsZV9wYXNzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKLSAgICNpZiBDSEVDS19QT0lOVEVSX0FSSVRIX1BSNTk0NwotICAgbyA8PCAiRVhUUkFfQ0ZMQUdTICs9IC1XcG9pbnRlci1hcml0aCIgPDwgZW5kbDsKLSAgICNlbmRpZgotLSAgbyA8PCAiRVhUUkFfQ0ZMQUdTICs9IC1JXCIiIDw8IHMucnVudGltZV9wYXRoIDw8ICJcIiIgPDwgZW5kbDsKLSsgIG8gPDwgIkVYVFJBX0NGTEFHUyArPSAtSSIgPDwgcy5ydW50aW1lX3BhdGggPDwgZW5kbDsKLSAgIC8vIFhYWDogdGhpcyBtYXkgaGVscCBwcGMgdG9jIG92ZXJmbG93Ci0gICAvLyBvIDw8ICJDRkxBR1MgOj0gJChzdWJzdCAtT3MsLU8yLCQoQ0ZMQUdTKSkgLWZtaW5pbWFsLXRvYyIgPDwgZW5kbDsKLSAgIG8gPDwgIm9iai1tIDo9ICIgPDwgcy5tb2R1bGVfbmFtZSA8PCAiLm8iIDw8IGVuZGw7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYwNjQyZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWRlYnVnaW5mby1sb29rdXAtd2l0aC1zeXNyb290LWNhc2UtZG8tbm90LXJlbW92ZS1zeXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGIyOWU0NDhlMTIwNDBlZDhmNGQ4Mzc0M2ExNGRiMGYxMzhhN2NjNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IFdlZCwgMTQgTWFyIDIwMTggMTY6NTQ6MDggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gZGVidWdpbmZvIGxvb2t1cCB3aXRoIHN5c3Jvb3QgY2FzZSBkbyBub3QgcmVtb3ZlIHN5c3Jvb3QgZnJvbQotIGZpbGVfbmFtZQotCi1JZiBzeXNyb290IG9wdGlvbiBpcyBwYXNzZWQsIGFuZCBkZWJ1ZyBzeW1ib2xzIHJlc2lkZSBpbiBzeXNyb290IGFsb25nCi13aXRoIGV4ZWN1dGFibGUgPGZvbz4gaW4gPGZvb19kaXI+Ly5kZWJ1Zy88Zm9vX2ZpbGU+IGRpcmVjdG9yeSwKLXN0YXAgZmFpbHMgdG8gZmluZCBkZWJ1Z2luZm8gYmVjYXVzZSBpdCBzdHJpcHMgb3V0IHN5c3Jvb3QgcGF0aAotZnJvbSBmaWxlX25hbWUgc28gZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyBlbmRzIHVwIGxvb2tpbmcgYXQKLWhvc3QgPGZvb19kaXI+Ly5kZWJ1Zy88Zm9vX2ZpbGU+IHJhdGhlciB0aGVuIGNoZWNraW5nCi08c3lzcm9vdD4vPGZvb19kaXI+Ly5kZWJ1Zy88Zm9vX2ZpbGU+LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLS0tLQotIHNldHVwZHdmbC5jeHggfCAxMiAtLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cGR3ZmwuY3h4IGIvc2V0dXBkd2ZsLmN4eAotaW5kZXggMTFlMGJiMi4uMmE4Nzk4MiAxMDA2NDQKLS0tLSBhL3NldHVwZHdmbC5jeHgKLSsrKyBiL3NldHVwZHdmbC5jeHgKLUBAIC02MjcsMTggKzYyNyw2IEBAIGludGVybmFsX2ZpbmRfZGVidWdpbmZvIChEd2ZsX01vZHVsZSAqbW9kLAotIAotICAgY2FsbF9kd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvOgotIAotLSAgaWYgKGN1cnJlbnRfc2Vzc2lvbl9mb3JfZmluZF9kZWJ1Z2luZm8pCi0tICAgIHsKLS0gICAgICBzdHJpbmcgc3lzcm9vdCA9IGN1cnJlbnRfc2Vzc2lvbl9mb3JfZmluZF9kZWJ1Z2luZm8tPnN5c3Jvb3QgKyAiLyoiOwotLSAgICAgIGludCAgICBmb3VuZCAgID0gZm5tYXRjaChzeXNyb290LmNfc3RyKCksIGZpbGVfbmFtZSwgMCk7Ci0tCi0tICAgICAgaWYgKGZvdW5kKQotLQl7Ci0tCSAgZmlsZV9uYW1lID0gZmlsZV9uYW1lCi0tCSAgICArIGN1cnJlbnRfc2Vzc2lvbl9mb3JfZmluZF9kZWJ1Z2luZm8tPnN5c3Jvb3QubGVuZ3RoKCkgLSAxOwotLQl9Ci0tICAgIH0KLS0KLSAgIC8qIENhbGwgdGhlIG9yaWdpbmFsIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gKi8KLSAgIHJldHVybiBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvKG1vZCwgdXNlcmRhdGEsIG1vZG5hbWUsIGJhc2UsCi0gICAgICAgICAgICAgICBmaWxlX25hbWUsIGRlYnVnbGlua19maWxlLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS1mb3ItYy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWZvci1jLWNvbXBpbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWE2ZjJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS1mb3ItYy1jb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA2Mjg4YmE1ZGYwYThjNzNlZjg0MmI2MDkwODE0NDlhYzRkZTg2MTIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxOCBKdWwgMjAxOCAxNjo1ODozMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBpbXByb3ZlIHJlcHJvZHVjaWJpbGl0eSBmb3IgYysrIGNvbXBpbGluZworCitVc2UgcmVsYXRpdmUgZGlyIHRvIGluY2x1ZGUgaGVhZGVyIHN0cmluZ19yZWYgdG8KK3N0cmlwIGJ1aWxkIHBhdGggcHJlZml4IGluIGMrKyBvYmplY3QgZmlsZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzdHJpbmd0YWJsZS5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3RyaW5ndGFibGUuaCBiL3N0cmluZ3RhYmxlLmgKK2luZGV4IDVmYzQyZTcuLjZmZDhhMWUgMTAwNjQ0CistLS0gYS9zdHJpbmd0YWJsZS5oCisrKysgYi9zdHJpbmd0YWJsZS5oCitAQCAtMTksNyArMTksNyBAQAorIAorICNpZiBkZWZpbmVkKEhBVkVfQk9PU1RfVVRJTElUWV9TVFJJTkdfUkVGX0hQUCkKKyAjaW5jbHVkZSA8Ym9vc3QvdmVyc2lvbi5ocHA+CistI2luY2x1ZGUgPGJvb3N0L3V0aWxpdHkvc3RyaW5nX3JlZi5ocHA+IC8vaGVhZGVyIHdpdGggc3RyaW5nX3JlZgorKyNpbmNsdWRlICJAUkVMQVRJVkVfU1RBR0lOR19JTkNESVJAL2Jvb3N0L3V0aWxpdHkvc3RyaW5nX3JlZi5ocHAiIC8vaGVhZGVyIHdpdGggc3RyaW5nX3JlZgorIAorIC8vIFhYWDogZXhwZXJpbWVudGFsIHR1bmFibGVzCisgI2RlZmluZSBJTlRFUk5FRF9TVFJJTkdfRklORF9NRU1NRU0gMSAvKiBwZXJmIHN0YXQgaW5kaWNhdGVzIGEgdmVyeSBzbGlnaHQgYmVuZWZpdCAqLworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZTdkNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLWZvbGxvdy11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA3ZTExZjEyOWZmMzcwY2U1ZjM5ODEyY2UyYWU2Y2U0MDgxOGEzNDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1EYXRlOiBUaHUsIDIyIE1hciAyMDE4IDE2OjAyOjAyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c3Jvb3Q6IGZpeCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBoYW5kbGluZyBmb2xsb3cgdXAKLQotSW4gY2FzZSBvZiBzeXNyb290IHNldCBhbmQgc2hvcnQgcmVsZWFzZSAtciBvcHRpb24gaXQgZG9lcyBub3QgbWFrZSBzZW5zZQotdG8gcGFzcyBzaG9ydCByZWxlYXNlIG5hbWUgaW50byBkd2ZsX2xpbnV4X2tlcm5lbF9yZXBvcnRfb2ZmbGluZQotZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgbm90IGF3YXJlIGFib3V0IHN5c3Jvb3QgYW5kIGl0IHdvbid0IGxvb2sgZm9yCi1rZXJuZWwgbW9kdWxlcyB1bmRlciBzeXNyb290IGRpcmVjdG9yeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci0tLS0KLSBzZXR1cGR3ZmwuY3h4IHwgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwZHdmbC5jeHggYi9zZXR1cGR3ZmwuY3h4Ci1pbmRleCBjNDE5YWZhLi4wY2Y1ODEwIDEwMDY0NAotLS0tIGEvc2V0dXBkd2ZsLmN4eAotKysrIGIvc2V0dXBkd2ZsLmN4eAotQEAgLTM2Nyw3ICszNjcsMTUgQEAgc2V0dXBfZHdmbF9rZXJuZWwgKHVuc2lnbmVkICptb2R1bGVzX2ZvdW5kLCBzeXN0ZW10YXBfc2Vzc2lvbiAmcykKLSAgIC8vIGhhcmQtY29kZSB0aGlzIG1hZ2ljIGhlcmUuCi0gICBzdHJpbmcgbGliX3BhdGggPSBzLnN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzLyIgKyBzLmtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7Ci0gICBpZiAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBsaWJfcGF0aCkKLS0gICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOwotKyAgICB7Ci0rICAgICAgaWYgKHMuc3lzcm9vdCAhPSAiIikKLSsgICAgICAgIC8vIElmIHdlIGhhdmUgc3lzcm9vdCBzZXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBwYXNzCi0rICAgICAgICAvLyBzaG9ydCByZWxlYXNlIHRvIGR3ZmwsIGl0IHdvbid0IHRha2UgYSBzeXNyb290IGludG8KLSsgICAgICAgIC8vIGFjY291bnQuIExldCdzIGNvbnN0cnVjdCBmdWxsIHBhdGggaW4gc3VjaCBjYXNlLgotKwllbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHN0cmluZyhzLnN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzLyIgKyBzLmtlcm5lbF9yZWxlYXNlKTsKLSsgICAgICBlbHNlCi0rCWVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfcmVsZWFzZTsKLSsgICAgfQotICAgZWxzZQotICAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX2J1aWxkX3RyZWU7Ci0gICBvZmZsaW5lX21vZHVsZXNfZm91bmQgPSAwOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMWQ2MjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBhOWNlODliY2QyZDc4NzI4ZmFlZjU5YmRhNjBlNzU1MTA5NzJjZDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1EYXRlOiBXZWQsIDE0IE1hciAyMDE4IDE3OjA5OjQ0IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c3Jvb3Q6IGZpeCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBoYW5kbGluZwotCi0qIHNldHVwZHdmbC5jeHggKGRlYnVnaW5mb19wYXRoX2luc2VydF9zeXNyb290KTogQWRkIGEgJy8nIHRvIHRoZSBlbmQgb2YKLSAgdGhlIHN5c3Jvb3QgZm9yIHBhdGhfaW5zZXJ0X3N5c3Jvb3QoKS4KLSAgKHNldHVwX2R3Zmxfa2VybmVsKTogU2ltcGxpZnkgbG9naWMgd2hlbiBmaW5kaW5nIHRoZSBrZXJuZWwgcGF0aCB0byBzZW5kCi0gIHRvIGVsZnV0aWxzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLS0tLQotIHNldHVwZHdmbC5jeHggfCAxOSArKysrKysrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cGR3ZmwuY3h4IGIvc2V0dXBkd2ZsLmN4eAotaW5kZXggMmE4Nzk4Mi4uZjZjMzE1NyAxMDA2NDQKLS0tLSBhL3NldHVwZHdmbC5jeHgKLSsrKyBiL3NldHVwZHdmbC5jeHgKLUBAIC0zMzksNiArMzM5LDEzIEBAIHN0YXRpYyBjaGFyICogcGF0aF9pbnNlcnRfc3lzcm9vdChzdHJpbmcgc3lzcm9vdCwgc3RyaW5nIHBhdGgpCi0gCi0gdm9pZCBkZWJ1Z2luZm9fcGF0aF9pbnNlcnRfc3lzcm9vdChzdHJpbmcgc3lzcm9vdCkKLSB7Ci0rICAvLyBGSVhNRTogVGhpcyBpcyBhIHNob3J0LXRlcm0gZml4LCB1bnRpbCB3ZSBleHBlY3Qgc3lzcm9vdCBwYXRocyB0bwotKyAgLy8gYWx3YXlzIGVuZCB3aXRoIGEgJy8nIChhbmQgbmV2ZXIgYmUgZW1wdHkpLgotKyAgLy8KLSsgIC8vIFRoZSBwYXRoX2luc2VydF9zeXNyb290KCkgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHN5c3Jvb3QgaGFzIGEgJy8nCi0rICAvLyBvbiB0aGUgZW5kLiBNYWtlIHN1cmUgdGhhdCBpcyB0cnVlLgotKyAgaWYgKHN5c3Jvb3QuYmFjaygpICE9ICcvJykKLSsgICAgc3lzcm9vdC5wdXNoX2JhY2soJy8nKTsKLSAgIGRlYnVnaW5mb19wYXRoID0gcGF0aF9pbnNlcnRfc3lzcm9vdChzeXNyb290LCBkZWJ1Z2luZm9fcGF0aCk7Ci0gICBkZWJ1Z2luZm9fdXNyX3BhdGggPSBwYXRoX2luc2VydF9zeXNyb290KHN5c3Jvb3QsIGRlYnVnaW5mb191c3JfcGF0aCk7Ci0gfQotQEAgLTM1OCwxMyArMzY1LDExIEBAIHNldHVwX2R3Zmxfa2VybmVsICh1bnNpZ25lZCAqbW9kdWxlc19mb3VuZCwgc3lzdGVtdGFwX3Nlc3Npb24gJnMpCi0gICAvLyBubyB3YXkgdG8gc2V0IHRoZSBkd2ZsX2NhbGxiYWNrLmRlYnVnaW5mb19wYXRoIGFuZCBhbHdheXMKLSAgIC8vIHBhc3NzIHRoZSBwbGFpbiBrZXJuZWxfcmVsZWFzZSBoZXJlLiAgU28gaW5zdGVhZCB3ZSBoYXZlIHRvCi0gICAvLyBoYXJkLWNvZGUgdGhpcyBtYWdpYyBoZXJlLgotLSAgIHN0cmluZyBsaWJfcGF0aCA9ICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKLS0gICBpZiAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBzdHJpbmcocy5zeXNyb290ICsgbGliX3BhdGgpIHx8Ci0tICAgICAgIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoCi0tCSYmIHMuc3lzcm9vdCA9PSAiLyIpKQotLSAgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfcmVsZWFzZTsKLS0gICBlbHNlCi0tICAgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9idWlsZF90cmVlOwotKyAgc3RyaW5nIGxpYl9wYXRoID0gcy5zeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsgcy5rZXJuZWxfcmVsZWFzZSArICIvYnVpbGQiOwotKyAgaWYgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gbGliX3BhdGgpCi0rICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfcmVsZWFzZTsKLSsgIGVsc2UKLSsgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9idWlsZF90cmVlOwotICAgb2ZmbGluZV9tb2R1bGVzX2ZvdW5kID0gMDsKLSAKLSAgIC8vIEZpcnN0IHRyeSB0byByZXBvcnQgZnVsbCBwYXRoIG1vZHVsZXMuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhM2QzOWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWhhbmRsZS1zeW1ib2xpYy1saW5rcy13aXRoLWFic29sdXRlLW5hbWUtcmVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLUZyb20gMjA0MTA4NWQxYTcwMDIwMWRjMDg4OTkxY2E4MTM2ZTc5MzViZjQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxMTozNToyNiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBoYW5kbGUgc3ltYm9saWMgbGlua3Mgd2l0aCBhYnNvbHV0ZSBuYW1lIHJlbGF0aXZlIHRvCi0gc3lzcm9vdAotCi1JbiBjYXNlIG9mIHN5bWJvbGljIGxpbmsgZm91bmQgdW5kZXIgc3lzcm9vdCBwb2ludCB0byBhYnNvbHV0ZSBwYXRoLAotaW5zdGVhZCBvZiB0cnlpbmcgdG8gbG9vayBmb3Igc3VjaCBhYnNvbHV0ZSBwYXRoIGluIGhvc3Qgc3lzdGVtLAotYXBwbHkgc3lzcm9vdCBwcmVmaXggZmlyc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gdXRpbC5jeHggfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC91dGlsLmN4eAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3V0aWwuY3h4Ci0rKysgZ2l0L3V0aWwuY3h4Ci1AQCAtNDQxLDYgKzQ0MSw2NCBAQCBzcGxpdF9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBuKQotICAgcmV0dXJuIGxpbmVzOwotIH0KLSAKLStzdGF0aWMgc3RyaW5nCi0rZm9sbG93X2xpbmsoY29uc3Qgc3RyaW5nJiBuYW1lLCBjb25zdCBzdHJpbmcmIHN5c3Jvb3QpCi0rewotKyAgY2hhciAqbGlua25hbWU7Ci0rICBzc2l6ZV90IHI7Ci0rICBzdHJpbmcgcmV0cGF0aDsKLSsgIHN0cnVjdCBzdGF0IHN0OwotKwotKyAgY29uc3QgY2hhciAqZiA9IG5hbWUuY19zdHIoKTsKLSsKLSsgIGxzdGF0KGYsICZzdCk7Ci0rCi0rICBsaW5rbmFtZSA9IChjaGFyICopIG1hbGxvYyhzdC5zdF9zaXplICsgMSk7Ci0rCi0rICBpZiAobGlua25hbWUpCi0rICAgIHsKLSsgICAgICByID0gcmVhZGxpbmsoZiwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKLSsgICAgICBsaW5rbmFtZVtzdC5zdF9zaXplXSA9ICdcMCc7Ci0rICAgICAgLyoKLSsgICAgICAgKiBJZiB3ZSBoYXZlIG5vbi1lbXB0eSBzeXNyb290IGFuZCB3ZSBnb3QgbGluayB0aGF0Ci0rICAgICAgICogcG9pbnRzIHRvIGFic29sdXRlIHBhdGggbmFtZSwgd2UgbmVlZCB0byBsb29rIGF0Ci0rICAgICAgICogdGhpcyBwYXRoIHJlbGF0aXZlIHRvIHN5c3Jvb3QgaXRzZWxmLiBhY2Nlc3MgYW5kCi0rICAgICAgICogc3RhdCB3aWxsIGZvbGxvdyBzeW1ib2xpYyBsaW5rcyBjb3JyZWN0bHkgb25seSBpbgotKyAgICAgICAqIGNhc2Ugd2l0aCBlbXB0eSBzeXNyb290LgotKyAgICAgICAqLwotKyAgICAgIHdoaWxlIChyICE9IC0xICYmIGxpbmtuYW1lICYmIGxpbmtuYW1lWzBdID09ICcvJykKLSsJewotKwkgIHN0cmluZyBmbmFtZTEgPSBzeXNyb290ICsgbGlua25hbWU7Ci0rCSAgY29uc3QgY2hhciAqZjEgPSBmbmFtZTEuY19zdHIoKTsKLSsJICBpZiAoYWNjZXNzKGYxLCBYX09LKSA9PSAwCi0rCSAgICAgICYmIHN0YXQoZjEsICZzdCkgPT0gMAotKwkgICAgICAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKQotKwkgICAgewotKwkgICAgICByZXRwYXRoID0gZm5hbWUxOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJICBlbHNlIGlmIChsc3RhdChmMSwgJnN0KSA9PSAwCi0rCQkgICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQotKwkgICAgewotKwkgICAgICBmcmVlKGxpbmtuYW1lKTsKLSsJICAgICAgbGlua25hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3Quc3Rfc2l6ZSArIDEpOwotKwkgICAgICBpZiAobGlua25hbWUpCi0rCQl7Ci0rCQkgIHIgPSByZWFkbGluayhmMSwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKLSsJCSAgbGlua25hbWVbc3Quc3Rfc2l6ZV0gPSAnXDAnOwotKwkJfQotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgZnJlZShsaW5rbmFtZSk7Ci0rCi0rICByZXR1cm4gcmV0cGF0aDsKLSt9Ci0rCi0gLy8gUmVzb2x2ZSBhbiBleGVjdXRhYmxlIG5hbWUgdG8gYSBjYW5vbmljYWwgZnVsbCBwYXRoIG5hbWUsIHdpdGggdGhlCi0gLy8gc2FtZSBwb2xpY3kgYXMgZXhlY3ZwKCkuICBBIHByb2dyYW0gbmFtZSBub3QgY29udGFpbmluZyBhIHNsYXNoCi0gLy8gd2lsbCBiZSBzZWFyY2hlZCBhbG9uZyB0aGUgJFBBVEguCi1AQCAtNDY1LDYgKzUyMywxNCBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCi0gICBpZiAobmFtZS5maW5kKCcvJykgIT0gc3RyaW5nOjpucG9zKSAvLyBzbGFzaCBpbiB0aGUgcGF0aCBhbHJlYWR5PwotICAgICB7Ci0gICAgICAgcmV0cGF0aCA9IHN5c3Jvb3QgKyBuYW1lOwotKwotKyAgICAgIGNvbnN0IGNoYXIgKmYgPSByZXRwYXRoLmNfc3RyKCk7Ci0rICAgICAgaWYgKHN5c3Jvb3QgIT0gIiIKLSsJICAmJiBsc3RhdChmLCAmc3QpID09IDAKLSsJICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQotKwl7Ci0rCSAgcmV0cGF0aCA9IGZvbGxvd19saW5rKGYsIHN5c3Jvb3QpOwotKwl9Ci0gICAgIH0KLSAgIGVsc2UgLy8gTm9wZSwgc2VhcmNoICRQQVRILgotICAgICB7Ci1AQCAtNDkzLDYgKzU1OSwxNiBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCi0gICAgICAgICAgICAgICAgICAgcmV0cGF0aCA9IGZuYW1lOwotICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICBlbHNlIGlmIChzeXNyb290ICE9ICIiCi0rICAgICAgICAgICAgICAgICAgICAgICAmJiBsc3RhdChmLCAmc3QpID09IDAKLSsgICAgICAgICAgICAgICAgICAgICAgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCi0rCQl7Ci0rCQkgIHJldHBhdGggPSBmb2xsb3dfbGluayhmLCBzeXNyb290KTsKLSsJCSAgaWYgKHJldHBhdGggIT0gIiIpCi0rCQkgICAgewotKwkJICAgICAgYnJlYWs7Ci0rCQkgICAgfQotKwkJfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvbW9uaXRvci1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaAppbmRleCBiN2VlMDcwLi45MzEzYTVhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaApAQCAtMTMsMTggKzEzLDE4IEBACiAgY29uZmlndXJlLmFjIHwgNSArKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNmJkMGM1ZmM0Li4yZWE5YjNjYmYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTc1MiwxMyArNzUyLDE2IEBAIGRubCBXZSB3YW50IGVpdGhlciAob3IgYm90aCkgcHl0aG9uIHByb2JlIHN1cHBvcnQuCitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC03NjYsMTMgKzc2NiwxNiBAQCBkbmwgV2Ugd2FudCBlaXRoZXIgKG9yIGJvdGgpIHB5dGhvbiBwcm9iCiAgQU1fQ09ORElUSU9OQUwoW0hBVkVfUFlUSE9OX1BST0JFU10sCiAgICBbdGVzdCAieCRoYXZlX3B5dGhvbjJfc3VwcG9ydCIgPSAieHllcyIgLW8gIngkaGF2ZV9weXRob24zX3N1cHBvcnQiID0gInh5ZXMiXSkKICAKICtBQ19BUkdfRU5BQkxFKFttb25pdG9yXSwgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1tb25pdG9yXSxbRGlzYWJsZSBtb25pdG9yXSkpCiAraWYgdGVzdCAiJGVuYWJsZV9tb25pdG9yIiAhPSAibm8iOyB0aGVuCiAgZG5sIENoZWNrIGZvciBwcmVzZW5jZSBvZiBqc29uLWMgYW5kIG5jdXJzZXMgZm9yIHVzZSBpbiBtb25pdG9yIG1vZGUKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhbanNvbmNdLCBbanNvbi1jID49IDAuMTJdLCBbaGF2ZV9qc29uYz15ZXNdLCBbaGF2ZV9qc29uYz1ub10pCisgUEtHX0NIRUNLX01PRFVMRVMoW2pzb25jXSwgW2pzb24tYyA+PSAwLjExXSwgW2hhdmVfanNvbmM9eWVzXSwgW2hhdmVfanNvbmM9bm9dKQogIFBLR19DSEVDS19NT0RVTEVTKFtuY3Vyc2VzXSwgW25jdXJzZXNdLCBbaGF2ZV9uY3Vyc2VzPXllc10sIFtoYXZlX25jdXJzZXM9bm9dKQogLUFNX0NPTkRJVElPTkFMKFtIQVZFX01PTklUT1JfTElCU10sIFt0ZXN0ICIke2hhdmVfanNvbmN9IiA9PSAieWVzIiAtYSAiJHtoYXZlX25jdXJzZXN9IiA9PSAieWVzIl0pCiAgaWYgdGVzdCAiJHtoYXZlX2pzb25jfSIgPT0gInllcyIgLWEgIiR7aGF2ZV9uY3Vyc2VzfSIgPT0geWVzOyB0aGVuCkBAIC0zNSw2ICszNSwzIEBACiAgCiAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhc3NlbWJsZXIgLnNlY3Rpb24gIj8iIGZsYWdzIHN1cHBvcnRdLCBzdGFwX2N2X3NlY3Rpb25xLCBbCiAgb2xkX0NGTEFHUz0iJENGTEFHUyIKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgppbmRleCBiMjgwZjU4Li42ZWUzZTFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCkBAIC0zLDYgKzMsOCBAQAogCiByZXF1aXJlIHN5c3RlbXRhcF9naXQuaW5jCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWZvci1jLWNvbXBpbGluZy5wYXRjaCIKKwogREVQRU5EUyA9ICJlbGZ1dGlscyIKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGliZWxmPSR7U1RBR0lOR19ESVJfVEFSR0VUfSAtLXdpdGhvdXQtcnBtIFwKQEAgLTIzLDcgKzI1LDI0IEBACiBQQUNLQUdFQ09ORklHW21vbml0b3JdID0gIi0tZW5hYmxlLW1vbml0b3IsLS1kaXNhYmxlLW1vbml0b3IsbmN1cnNlcyBqc29uLWMiCiBQQUNLQUdFQ09ORklHW3B5dGhvbjMtcHJvYmVzXSA9ICItLXdpdGgtcHl0aG9uMy1wcm9iZXMsLS13aXRob3V0LXB5dGhvbjMtcHJvYmVzLHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHN5c3RlbWQKKworUEFDS0FHRVMgPSsgIiR7UE59LWV4cG9ydGVyIgorCitGSUxFU18ke1BOfS1leHBvcnRlciA9ICIke3N5c2NvbmZkaXJ9L3N0YXAtZXhwb3J0ZXIvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9zdGFwLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3RhcC1leHBvcnRlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vc3RhcC1leHBvcnRlciIKKworUkRFUEVORFNfJHtQTn0tZXhwb3J0ZXIgPSAiJHtQTn0gcHl0aG9uMy1jb3JlIHB5dGhvbjMtbmV0Y2xpZW50IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tZXhwb3J0ZXIgPSAic3RhcC1leHBvcnRlci5zZXJ2aWNlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgIyBJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eSBmb3IgYysrIG9iamVjdCBmaWxlcworICAgIHJlbHRpdmVwYXRoPSIke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ1NUQUdJTkdfSU5DRElSJyksIGQuZ2V0VmFyKCdTJykpfSIKKyAgICBzZWQgLWkgInM6QFJFTEFUSVZFX1NUQUdJTkdfSU5DRElSQDokcmVsdGl2ZXBhdGg6ZyIgJHtTfS9zdHJpbmd0YWJsZS5oCit9CiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgIGlmIFsgISAtZiAke0R9JHtiaW5kaXJ9L3N0YXAgXTsgdGhlbgpAQCAtMzEsNiArNTAsMTQgQEAKICAgICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS8ke1BOfQogICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vJHtQTn0vc3RhcC1lbnYKICAgIGZpCisKKyAgICMgRml4IG1ha2VmaWxlIGhhcmRjb2RlZCBwYXRoIGFzc3VtcHRpb25zIGZvciBzeXN0ZW1kIChhc3N1bWVzICRwcmVmaXgpCisgICBpbnN0YWxsIC1kIGBkaXJuYW1lICR7RH0ke3N5c3RlbWRfdW5pdGRpcn1gCisgICBtdiAke0R9JHtwcmVmaXh9L2xpYi9zeXN0ZW1kIGBkaXJuYW1lICR7RH0ke3N5c3RlbWRfdW5pdGRpcn1gCisgICBybWRpciAke0R9JHtwcmVmaXh9L2xpYiAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eQorCisgICAjIEVuc3VyZSBjb3JyZWN0IG93bmVyc2hpcCBmb3IgZmlsZXMgY29waWVkIGluCisgICBjaG93biByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vc3RhcC1leHBvcnRlci8qIC1SCiB9CiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKaW5kZXggZTJmNTIwNC4uMjc0ZmNkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDcgKzEsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotU1JDUkVWID0gIjQwNTFjNzBjOTMxOGM4Mzc5ODEzODRjYmIyM2YzZTllYjFiZDA4OTIiCi1QViA9ICIzLjIiCitTUkNSRVYgPSAiNDI4Zjg0ZTllNjU2YmNlNzEwMThlODkwMmU0ZWRiOGFhY2FmY2MwZSIKK1BWID0gIjQuMCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvc3lzdGVtdGFwLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIFwKQEAgLTEwLDE5ICsxMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9uby1tc2dmbXQtY2hlY2sucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtbGV0LWNvbmZpZ3VyZS13cml0ZS1hLXB5dGhvbi1sb2NhdGlvbi1pbnRvLXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGFwcnVuLXN0YXBicGYtZG9uLXQtc3VwcG9ydC1pbnN0YWxsaW5nLWEtbm9uLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2ggXAogICAgICAgICAgICAiCiAKIENPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NHxtaWNyb2JsYXplZWx8bWlwcykuKi1saW51eCcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQva2VybmVsc2hhcmtfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNWU4MDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkdyYXBoaWNhbCB0cmFjZSB2aWV3ZXIgZm9yIEZ0cmFjZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLXJlcXVpcmUgdHJhY2UtY21kLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXJuZWwtc2hhcmsuYztiZWdpbmxpbmU9NjtlbmRsaW5lPTg7bWQ1PTJjMjJjOTY1YTY0OWRkZDc5NzNkNzkxM2M1NjM0YTVlIgotCi1ERVBFTkRTID0gImd0aysgbGlieG1sMiIKLVJERVBFTkRTXyR7UE59ID0gInRyYWNlLWNtZCIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgICdwcmVmaXg9JHtwcmVmaXh9JyBcCi0gICAgJ2JpbmRpcl9yZWxhdGl2ZT0ke0BvZS5wYXRoLnJlbGF0aXZlKHByZWZpeCwgYmluZGlyKX0nIFwKLSAgICAnbGliZGlyPSR7bGliZGlyfScgXAotICAgIE5PX1BZVEhPTj0xIFwKLSAgICBndWkgXAotIgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBNYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIHJtIC1mICR7Qn0vLiouZAotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbF9ndWkKLSAgICBybSAke0R9JHtiaW5kaXJ9L3RyYWNlLWNtZAotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3RyYWNlLWNtZAotICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC90cmFjZS1jbWQuYmFzaAotICAgIHJtZGlyICR7RH0ke2xpYmRpcn0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGExNzg5Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TUkNSRVYgPSAiN2QwMTQ3YmJiYTNlZDFkNWVmNmVlYTRlZWMzZjBhZDRjOThmMDJiNSIKLVBWID0gIjIuNyIKLQotaW5oZXJpdCBwa2djb25maWcKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vdHJhY2UtY21kOiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC8wMDAxLUluY2x1ZGUtbGltaXRzLmgtc28tdGhhdC1QQVRIX01BWC1pcy1kZWZpbmVkLWFuLWlzc3UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC8wMDAxLUluY2x1ZGUtbGltaXRzLmgtc28tdGhhdC1QQVRIX01BWC1pcy1kZWZpbmVkLWFuLWlzc3UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NjMwODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSA5NDg4ZjkyYzFkMGM3OTMxYzNlMTc5NTBkMWY5ZWVhMmFlYjNlMmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDE1OjU2OjE4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgbGltaXRzLmggc28gdGhhdCBQQVRIX01BWCBpcyBkZWZpbmVkIChhbiBpc3N1ZSBvbgotIG11c2wpLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gdHJhY2UtbGlzdGVuLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3RyYWNlLWxpc3Rlbi5jIGIvdHJhY2UtbGlzdGVuLmMKLWluZGV4IDE3ZmY5ZDguLjgzOGQ2YmMgMTAwNjQ0Ci0tLS0gYS90cmFjZS1saXN0ZW4uYwotKysrIGIvdHJhY2UtbGlzdGVuLmMKLUBAIC0zMSw2ICszMSw3IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAidHJhY2UtbG9jYWwuaCIKLSAjaW5jbHVkZSAidHJhY2UtbXNnLmgiCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC9ibGt0cmFjZS1hcGktY29tcGF0aWJpbGl0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjBkYjZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotdHJhY2UtY21kOiBBZGQgYmxrdHJhY2VfYXBpIGNvbXBhdGliaWxpdHkgZm9yIFRDX0JBUlJJRVIKLQotTmV3ZXIga2VybmVscyByZXBsYWNlIFRDX0JBUlJJRVIgd2l0aCBUQ19GTFVTSC4gRW5zdXJlIHRyYWNlLWNtZAotY2FuIGJ1aWxkIHJlZ2FyZGxlc3Mgb2YgdGhlIGxpbnV4LWtlcm5lbC1oZWFkZXJzIHZlcnNpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU3RvcCBnYXBdCi0KLVNpZ25lZC1vZmYtYnk6IERhcnJlbiBIYXJ0IDxkdmhhcnRAbGludXguaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvcGx1Z2luX2Jsay5jIGIvcGx1Z2luX2Jsay5jCi1pbmRleCA5MzI3YjE3Li5jOGU1ZTFjIDEwMDY0NAotLS0tIGEvcGx1Z2luX2Jsay5jCi0rKysgYi9wbHVnaW5fYmxrLmMKLUBAIC00NCw2ICs0NCwxNSBAQCBzdHJ1Y3QgYmxrX2RhdGEgewotIAl1bnNpZ25lZCBzaG9ydAkJcGR1X2xlbjsKLSB9OwotIAotKy8qCi0rICogTmV3ZXIga2VybmVscyBkb24ndCBkZWZpbmUgQkxLX1RDX0JBUlJJRVIgYW5kIGhhdmUgcmVwbGFjZWQgaXQgd2l0aAotKyAqIEJMS19UQ19GTFVTSC4gSW4gdGhpcyBjYXNlLCBkZWZpbmUgaXQgaGVyZSBhbmQgcmVwb3J0IEZMVVNIRVMgYXMgQkFSUklFUlMgYXMKLSsgKiBhIHdvcmthcm91bmQsIGFzIGRlc2NyaWJlZCBpbjoKLSsgKiBodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQ7YT1jb21taXQ7aD1jMDljNDdjYWVkYzk4NTRkNTkzNzhkNmUzNGM5ODllNTFjZmRkMmI0Ci0rICovCi0rI2lmbmRlZiBCTEtfVENfQkFSUklFUgotKyNkZWZpbmUgQkxLX1RDX0JBUlJJRVIgMTw8MgotKyNlbmRpZgotIHN0YXRpYyB2b2lkIGZpbGxfcndicyhjaGFyICpyd2JzLCBpbnQgYWN0aW9uLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCi0gewotIAlpbnQgaSA9IDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YzdjMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWRfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2VyIGludGVyZmFjZSB0byBGdHJhY2UiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotCi1yZXF1aXJlIHRyYWNlLWNtZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJhY2UtY21kLmM7YmVnaW5saW5lPTY7ZW5kbGluZT04O21kNT0yYzIyYzk2NWE2NDlkZGQ3OTczZDc5MTNjNTYzNGE1ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZWRiMTk1ZmU1MzhlNDU1MmMxZjZjYTBmZDdiZjRmMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJhY2UtaW5wdXQuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTg7bWQ1PTNlYzgyZjQzYmJlMGNmYjU5NTFmZjQxNGVmNGQ0NGQwIFwKLSIKLQotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAncHJlZml4PSR7cHJlZml4fScgXAotICAgICdiaW5kaXI9JHtiaW5kaXJ9JyBcCi0gICAgJ21hbl9kaXI9JHttYW5kaXJ9JyBcCi0gICAgJ2h0bWxfaW5zdGFsbD0ke2RhdGFkaXJ9L2tlcm5lbHNoYXJrL2h0bWwnIFwKLSAgICAnaW1nX2luc3RhbGw9JHtkYXRhZGlyfS9rZXJuZWxzaGFyay9odG1sL2ltYWdlcycgXAotICAgIFwKLSAgICAnYmluZGlyX3JlbGF0aXZlPSR7QG9lLnBhdGgucmVsYXRpdmUocHJlZml4LCBiaW5kaXIpfScgXAotICAgICdsaWJkaXI9JHtsaWJkaXJ9JyBcCi0gICAgXAotICAgIE5PX1BZVEhPTj0xIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgTWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKLSAgICBybSAtZiAke0J9Ly4qLmQKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCi19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWZwdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1mcHUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTVhOWRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWZwdS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWRlZiBnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBpbiBbICdzb2Z0JyBdOgotICAgICAgICByZXR1cm4gIi0td2l0aC1zb2Z0ZmxvYXQiCi0gICAgcmV0dXJuICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMWUyZGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0xMWZmODlhOGE3YTRhNjkwYTVjNzhlZmZlODE1OTU0NSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhMmI0NjVjM2E1MjY1ZDhhNTdmM2ZmMzljNmM0ZmMyOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGY2OGFkM2M2ZGEzNmIwYjUyNDFhYzNjNzk4YTdhNzFlMGU5N2Q1MWY5NzJlOWY3MjNiM2YyMGE5NjUwYWU2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotcmVxdWlyZSBhbHNhLWZwdS5pbmMKLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2Fsc2FfZnB1X3NldHRpbmcoYmIsIGQpfSAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXB5dGhvbiIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGFsc2EtY29uZiBhbHNhLWRvYyIKLUZJTEVTX2Fsc2Etc2VydmVyID0gIiR7YmluZGlyfS8qIgotRklMRVNfYWxzYS1jb25mID0gIiR7ZGF0YWRpcn0vYWxzYS8iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJhbHNhLWNvbmYiCi0KLSMgdXBncmFkZSBwYXRoCi1SUFJPVklERVNfJHtQTn0gPSAibGliYXNvdW5kIgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmFzb3VuZCIKLVJDT05GTElDVFNfJHtQTn0gPSAibGliYXNvdW5kIgotCi1SUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotCi1SUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgotUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZTdhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjYuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYzttZDU9ZGQxYmM3ZjQ0ODcyNjkwMjI0ZDg5YzFhOTgwNmU0OTU7YmVnaW5saW5lPTE7ZW5kbGluZT0yNiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMmY5ODFhOGY3ODk3YzU5ZWMyZGRjNDQ5MTZkMzM3ODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWYyY2QyNzRiMjcyY2FlMGQwZDExMWU4YTllMzYzZjA4NzgzMzI5MTU3ZThkZDY4YjNkZTBjMDk2ZGU2ZDcyNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0td2l0aC1zb2Z0ZmxvYXQnLCAnJywgZCl9IFwKKyAgICAtLWRpc2FibGUtcHl0aG9uIFwKKyIKKworUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGFsc2EtY29uZiBhbHNhLWRvYyIKKworRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImFsc2EtY29uZiIKKworIyB1cGdyYWRlIHBhdGgKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJhc291bmQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliYXNvdW5kIgorUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJhc291bmQiCisKK1JQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCisKK1JQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmQwYWNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIFBsdWdpbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi0jIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgotIwotIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQotIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCi0jCi0jIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAotIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCi0jIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKLSMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKLSAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAotIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjg5OGIwZTZlOGFjZjNmNmY4MmJjMmEwZjBjODRhOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzk3ZGE1ZjhmNTMzNzlmYmVhMjg4MTdiYzQ2NmRlMTZhZmZkMmMwNzg0OWU4NGYxYWY4ZDVlMjJmN2JiN2YxYyIKLQotREVQRU5EUyArPSAiYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICAgICBzYW1wbGVyYXRlIFwKLSAgICAgICAgc3BlZXhkc3AgXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1ttYWVtby1wbHVnaW5dID0gIi0tZW5hYmxlLW1hZW1vLXBsdWdpbiwtLWRpc2FibGUtbWFlbW8tcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttYWVtby1yZXNvdXJjZS1tYW5hZ2VyXSA9ICItLWVuYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLC0tZGlzYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLGRidXMiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtc2FtcGxlcmF0ZSwtLWRpc2FibGUtc2FtcGxlcmF0ZSxsaWJzYW1wbGVyYXRlMCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhkc3BdID0gIi0td2l0aC1zcGVleD1saWIsLS13aXRoLXNwZWV4PW5vLHNwZWV4ZHNwIgotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mJywgJycsIGQpfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJebGliYXNvdW5kLW1vZHVsZS0uKiIKLQotIyBUaGUgYWxzYS1wbHVnaW5zIHBhY2thZ2UgZG9lc24ndCBpdHNlbGYgY29udGFpbiBhbnl0aGluZywgaXQganVzdCBkZXBlbmRzIG9uCi0jIGFsbCBidWlsdCBwbHVnaW5zLgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gJHtEfSR7bGliZGlyfS9hbHNhLWxpYi8qLmxhCi0KLQkjIFdlIHVzZSB0aGUgZXhhbXBsZSBhcyBpcywgc28ganVzdCBkcm9wIHRoZSAuZXhhbXBsZSBzdWZmaXguCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQltdiAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgotCWZpCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vYWxzYS1saWIvJykKLSAgICBwYWNrYWdlcyA9ICIgIi5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgJ15saWJhc291bmRfbW9kdWxlXyguKilcLnNvJCcsICdsaWJhc291bmQtbW9kdWxlLSVzJywgJ0Fsc2EgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpKQotICAgIGQuc2V0VmFyKCJSREVQRU5EU19hbHNhLXBsdWdpbnMiLCBwYWNrYWdlcykKLX0KLQotIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCi0jIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6Ci0jCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCi0jCi0jIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bwotIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKLSMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgotIyB0aGUgc3ltbGlua3MpLgotIwotIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgotIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQotIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfbGF2Y3JhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zYW1wbGVyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zcGVleHJhdGVfKi5zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKLQotIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKLSMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KLSMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCi0jIFB1bHNlQXVkaW8gcGx1Z2luLgotRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2MxODc5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNi5iYgpAQCAtMCwwICsxLDEwMyBAQAorU1VNTUFSWSA9ICJBTFNBIFBsdWdpbnMiCitIT01FUEFHRSA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCisjIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgorIworIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQorIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCisjCisjIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAorIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCisjIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKKyAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAorIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiODM4NzI3OWU5OWZlZWIyZWNmZmFhYzVmMjkzMjIzZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmYxZDMxZWJlM2IxZmExY2M4ZGFkZTYwYjdiZWQxY2IyNTgzYWM5OTgxNjcwMDJkMzUwZGMwYTVlM2U0MGMxMyIKKworREVQRU5EUyArPSAiYWxzYS1saWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICAgICBzYW1wbGVyYXRlIFwKKyAgICAgICAgc3BlZXhkc3AgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyxsaWJhdiIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1ttYWVtby1wbHVnaW5dID0gIi0tZW5hYmxlLW1hZW1vLXBsdWdpbiwtLWRpc2FibGUtbWFlbW8tcGx1Z2luIgorUEFDS0FHRUNPTkZJR1ttYWVtby1yZXNvdXJjZS1tYW5hZ2VyXSA9ICItLWVuYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLC0tZGlzYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLGRidXMiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbc2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtc2FtcGxlcmF0ZSwtLWRpc2FibGUtc2FtcGxlcmF0ZSxsaWJzYW1wbGVyYXRlMCIKK1BBQ0tBR0VDT05GSUdbc3BlZXhkc3BdID0gIi0td2l0aC1zcGVleD1saWIsLS13aXRoLXNwZWV4PW5vLHNwZWV4ZHNwIgorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mJywgJycsIGQpfSIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICJebGliYXNvdW5kLW1vZHVsZS0uKiIKKworIyBUaGUgYWxzYS1wbHVnaW5zIHBhY2thZ2UgZG9lc24ndCBpdHNlbGYgY29udGFpbiBhbnl0aGluZywgaXQganVzdCBkZXBlbmRzIG9uCisjIGFsbCBidWlsdCBwbHVnaW5zLgorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJcm0gJHtEfSR7bGliZGlyfS9hbHNhLWxpYi8qLmxhCisKKwkjIFdlIHVzZSB0aGUgZXhhbXBsZSBhcyBpcywgc28ganVzdCBkcm9wIHRoZSAuZXhhbXBsZSBzdWZmaXguCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgorCQltdiAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgorCWZpCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vYWxzYS1saWIvJykKKyAgICBwYWNrYWdlcyA9ICIgIi5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgJ15saWJhc291bmRfbW9kdWxlXyguKilcLnNvJCcsICdsaWJhc291bmQtbW9kdWxlLSVzJywgJ0Fsc2EgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpKQorICAgIGQuc2V0VmFyKCJSREVQRU5EU19hbHNhLXBsdWdpbnMiLCBwYWNrYWdlcykKK30KKworIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCisjIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6CisjCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCisjCisjIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bworIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKKyMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgorIyB0aGUgc3ltbGlua3MpLgorIworIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgorIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQorIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfbGF2Y3JhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zYW1wbGVyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zcGVleHJhdGVfKi5zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKKworIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKKyMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KKyMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCisjIFB1bHNlQXVkaW8gcGx1Z2luLgorRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAorIgorCitSREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAyLUZpeC1jbGFuZy1XcmVzZXJ2ZWQtdXNlci1kZWZpbmVkLWxpdGVyYWwtd2FybmluZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAyLUZpeC1jbGFuZy1XcmVzZXJ2ZWQtdXNlci1kZWZpbmVkLWxpdGVyYWwtd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzN2JjOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzLzAwMDItRml4LWNsYW5nLVdyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbC13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitGcm9tIGE4NjFiZGFiZjAyY2Q5YmZiM2VjN2MwNTcxYzU2M2MwZmExNGFkZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNCBBcHIgMjAxOCAxMjoyNDozMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1czQyOGNvbnRyb2w6IEZpeCBjbGFuZyAtV3Jlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsCisgd2FybmluZ3MKKworfCB1czQyOGNvbnRyb2wuY2M6NjY6MTg6IGVycm9yOiBpbnZhbGlkIHN1ZmZpeCBvbiBsaXRlcmFsOyBDKysxMSByZXF1aXJlcyBhIHNwYWNlIGJldHdlZW4gbGl0ZXJhbCBhbmQgaWRlbnRpZmllciBbLVdyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbF0KK3wgICAgICAgICBwcmludGYoInVzYWdlOiAiUFJPR05BTUUiIFstdiB2ZXJib3NpdHlfbGV2ZWwgMC4uMl0gWy1jIGNhcmRdIFstRCBkZXZpY2VdIFstdSB1c2ItZGV2aWNlXSBbLW0gbW9kZV1cbiIpOworfCAgICAgICAgICAgICAgICAgICAgICAgICBeCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CistLS0KKyB1czQyOGNvbnRyb2wvdXM0Mjhjb250cm9sLmNjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdXM0Mjhjb250cm9sL3VzNDI4Y29udHJvbC5jYyBiL3VzNDI4Y29udHJvbC91czQyOGNvbnRyb2wuY2MKK2luZGV4IGU4MzliZjQuLjhjYjNjNDIgMTAwNjQ0CistLS0gYS91czQyOGNvbnRyb2wvdXM0Mjhjb250cm9sLmNjCisrKysgYi91czQyOGNvbnRyb2wvdXM0Mjhjb250cm9sLmNjCitAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQorIHsKKyAJcHJpbnRmKCJUYXNjYW0gVVMtNDI4IENvbnRyb2xcbiIpOworIAlwcmludGYoInZlcnNpb24gJXNcbiIsIFZFUlNJT04pOworLQlwcmludGYoInVzYWdlOiAiUFJPR05BTUUiIFstdiB2ZXJib3NpdHlfbGV2ZWwgMC4uMl0gWy1jIGNhcmRdIFstRCBkZXZpY2VdIFstdSB1c2ItZGV2aWNlXSBbLW0gbW9kZV1cbiIpOworKwlwcmludGYoInVzYWdlOiAiIFBST0dOQU1FICIgWy12IHZlcmJvc2l0eV9sZXZlbCAwLi4yXSBbLWMgY2FyZF0gWy1EIGRldmljZV0gWy11IHVzYi1kZXZpY2VdIFstbSBtb2RlXVxuIik7CisgCXByaW50ZigibW9kZSBpcyBvbmUgb2YgKHVzMjI0LCB1czQyOCwgbWl4eHgpXG4iKTsKKyB9CisgLyoKKy0tIAorMS43LjExLjcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2F1dG90b29scy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2F1dG90b29scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU3NDk2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1BZGQgcGFyYW1ldGVycyB0byBhdXRvcmVjb25mIHRvIHN1cHBvcnQgY3Jvc3MgY29tcGlsZS4KLVJlbW92ZSBzb21lIHN1Yi1jb21wb25lbnRzIHdoaWNoIG5lZWRzIGZ1cnRoZXIgcmVjaXBlIHN1cHBvcnQuCi0KLVNpZ25lZC1vZmYtYnk6IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtcnVOIGFsc2EtdG9vbHMtMS4wLjI0LjEtb3JpZy8vbGQxMGsxL2dpdGNvbXBpbGUgYWxzYS10b29scy0xLjAuMjQuMS9sZDEwazEvZ2l0Y29tcGlsZQotLS0tIGFsc2EtdG9vbHMtMS4wLjI0LjEtb3JpZy8vbGQxMGsxL2dpdGNvbXBpbGUJMjAxMS0wNy0wNiAxMToyNzo0MC4yMjc2NjUwMDIgKzA4MDAKLSsrKyBhbHNhLXRvb2xzLTEuMC4yNC4xL2xkMTBrMS9naXRjb21waWxlCTIwMTEtMDctMTQgMTM6MjY6MTguMDE3NjY1MDA0ICswODAwCi1AQCAtMSw2ICsxLDYgQEAKLSAjIS9iaW4vYmFzaAotIAotLWF1dG9yZWNvbmYgLWZpIHx8IGV4aXQgMQotK2F1dG9yZWNvbmYgJEFDTE9DQUxfRkxBR1MgLWZpIHx8IGV4aXQgMQotIGV4cG9ydCBDRkxBR1M9Jy1PMiAtV2FsbCAtcGlwZSAtZycKLSBlY2hvICJDRkxBR1M9JENGTEFHUyIKLSBlY2hvICIuL2NvbmZpZ3VyZSAkQCIKLWRpZmYgLXJ1TiBhbHNhLXRvb2xzLTEuMC4yNC4xLW9yaWcvL01ha2VmaWxlIGFsc2EtdG9vbHMtMS4wLjI0LjEvTWFrZWZpbGUKLS0tLSBhbHNhLXRvb2xzLTEuMC4yNC4xLW9yaWcvL01ha2VmaWxlCTIwMTEtMDctMDYgMTE6Mjc6NDAuMjA3NjY1MDAwICswODAwCi0rKysgYWxzYS10b29scy0xLjAuMjQuMS9NYWtlZmlsZQkyMDExLTA3LTE0IDE1OjA4OjA4Ljg3NzY2NTAwOSArMDgwMAotQEAgLTEsOCArMSw4IEBACi0gVkVSU0lPTiA9IDEuMS41Ci0gVE9QID0gLgotLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBoZHNwbG9hZGVyIGhkc3Bjb25mIGhkc3BtaXhlciBcCi0rU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIFwKLSAJICBtaXhhcnRsb2FkZXIgcGN4aHJsb2FkZXIgcm1lZGlnaWNvbnRyb2wgc2IxNl9jc3Agc2VxIHNzY2FwZV9jdGwgXAotLQkgIHVzNDI4Y29udHJvbCB1c3gyeWxvYWRlciB2eGxvYWRlciBlY2hvbWl4ZXIgbGQxMGsxIHFsbzEwazEgXAotKwkgIHVzNDI4Y29udHJvbCB1c3gyeWxvYWRlciB2eGxvYWRlciBlY2hvbWl4ZXIgXAotIAkgIGh3bWl4dm9sdW1lIGhkYWphY2tyZXRhc2sgaGRhLXZlcmIgaGRhamFja3NlbnNldGVzdAotIAotIGFsbDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTgzMjhiZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9naXRjb21waWxlX2hkYWphY2tzZW5zZXRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jIS9iaW4vYmFzaAotCi1hY2xvY2FsICRBQ0xPQ0FMX0ZMQUdTIHx8IGV4aXQgMQotYXV0b21ha2UgLS1mb3JlaWduIC0tYWRkLW1pc3NpbmcgfHwgZXhpdCAxCi1hdXRvY29uZiB8fCBleGl0IDEKLWV4cG9ydCBDRkxBR1M9Jy1PMiAtV2FsbCAtcGlwZSAtZycKLWVjaG8gIkNGTEFHUz0kQ0ZMQUdTIgotZWNobyAiLi9jb25maWd1cmUgJEAiCi0uL2NvbmZpZ3VyZSAkQCB8fCBleGl0IDEKLXVuc2V0IENGTEFHUwotaWYgWyAteiAiJEdJVENPTVBJTEVfTk9fTUFLRSIgXTsgdGhlbgotICBtYWtlIHx8IGV4aXQgMQotZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL21ha2VmaWxlX25vX2d0ay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL21ha2VmaWxlX25vX2d0ay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQzNzNkMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1SZW1vdmUgc29tZSBzdWItY29tcG9uZW50cyB3aGljaCBuZWVkIGd0aysuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUm9nZXJpbyBOdW5lcyA8cm9udW5lc0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotCi1VcGRhdGUgcGF0Y2ggZm9yIGFsc2EtdG9vbHMgMS4wLjI5Ci0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMjQ1N2ExYy4uNzIzNDZkOSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTEsOSArMSw5IEBACi0gVkVSU0lPTiA9IDEuMS41Ci0gVE9QID0gLgotLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBcCi0tCSAgbWl4YXJ0bG9hZGVyIHBjeGhybG9hZGVyIHJtZWRpZ2ljb250cm9sIHNiMTZfY3NwIHNlcSBzc2NhcGVfY3RsIFwKLS0JICB1czQyOGNvbnRyb2wgdXN4Mnlsb2FkZXIgdnhsb2FkZXIgZWNob21peGVyIFwKLS0JICBod21peHZvbHVtZSBoZGFqYWNrcmV0YXNrIGhkYS12ZXJiIGhkYWphY2tzZW5zZXRlc3QKLStTVUJESVJTID0gYXMxMGsxIFwKLSsJICBtaXhhcnRsb2FkZXIgcGN4aHJsb2FkZXIgc2IxNl9jc3Agc2VxIHNzY2FwZV9jdGwgXAotKwkgIHVzNDI4Y29udHJvbCB1c3gyeWxvYWRlciB2eGxvYWRlciBcCi0rCSAgaHdtaXh2b2x1bWUgaGRhLXZlcmIgaGRhamFja3NlbnNldGVzdAotIAotIGFsbDoKLSAJQGZvciBpIGluICQoU1VCRElSUyk7IGRvIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL211c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYjEyOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gMjM1ZDljNWU4MzgxNTE4YjBhODY2MTc4NmU3ZTBjYmRkMWJiY2QwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDEyIEp1biAyMDE4IDEzOjI0OjM0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxkMTBrMTogZGVmaW5lIF9HTlVfU09VUkNFIGFuZCB1c2Ugc2lnaGFuZGxlcl90CisKK19fc2lnaGFuZGxlcl90IGlzIGEgZ2xpYmMgaW50ZXJuYWwgdHlwZSB3aGljaCBkb2Vzbid0IGV4aXN0IGluIG11c2wuICBCeSB1c2luZworQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIHRvIGdldCBfR05VX1NPVVJDRSBkZWZpbmVkLCBib3RoIGdsaWJjIGFuZCBtdXNsCit0aGVuIGV4cG9zZSBzaWdoYW5kbGVyX3QuCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CistLS0KKyBsZDEwazEvY29uZmlndXJlLmFjICAgICAgfCAxICsKKyBsZDEwazEvc3JjL2xkMTBrMV9mbmMxLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xkMTBrMS9jb25maWd1cmUuYWMgYi9sZDEwazEvY29uZmlndXJlLmFjCitpbmRleCAyNzZiMjRlLi5mNDhjYTMxIDEwMDY0NAorLS0tIGEvbGQxMGsxL2NvbmZpZ3VyZS5hYworKysrIGIvbGQxMGsxL2NvbmZpZ3VyZS5hYworQEAgLTQsNiArNCw3IEBAIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKKyBBTV9NQUlOVEFJTkVSX01PREUoW2VuYWJsZV0pCisgCisgQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCisrQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisgQUNfUFJPR19DQworIEFDX1BST0dfTEQKKyBBQ19QUk9HX0lOU1RBTEwKK2RpZmYgLS1naXQgYS9sZDEwazEvc3JjL2xkMTBrMV9mbmMxLmMgYi9sZDEwazEvc3JjL2xkMTBrMV9mbmMxLmMKK2luZGV4IDM0MzU4NGMuLmRkYzQzYzYgMTAwNjQ0CistLS0gYS9sZDEwazEvc3JjL2xkMTBrMV9mbmMxLmMKKysrKyBiL2xkMTBrMS9zcmMvbGQxMGsxX2ZuYzEuYworQEAgLTE3OSw3ICsxNzksNyBAQCBpbnQgbWFpbl9sb29wKGNvbW1fcGFyYW0gKnBhcmFtLCBpbnQgYXVkaWd5LCBjb25zdCBjaGFyICpjYXJkX2lkLCBpbnQgdHJhbV9zaXplLAorIHsKKyAJZmRfc2V0IGFjdGl2ZV9mZF9zZXQvKiwgcmVhZF9mZF9zZXQqLzsKKyAJaW50IGksIGosIHJlcyA9IDA7CistCV9fc2lnaGFuZGxlcl90IG9sZF9zaWdfcGlwZTsKKysJc2lnaGFuZGxlcl90IG9sZF9zaWdfcGlwZTsKKyAKKyAJaW50IG1haW5fc29jayA9IDA7CisgCWludCBkYXRhX3NvY2sgPSAwOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJlNDNhYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiQWR2YW5jZWQgdG9vbHMgZm9yIGNlcnRhaW4gQUxTQSBzb3VuZCBjYXJkIGRyaXZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIrIgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGdsaWItMi4wIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9oZHNwbG9hZGVyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xkMTBrMS9DT1BZSU5HLkxJQjttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3Rvb2xzLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJywgJ2ZpbGU6Ly9tYWtlZmlsZV9ub19ndGsucGF0Y2gnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2FmYjkyZWIxYjRmMmVkYzg2OTE0OThlNTdjM2VjNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmMzYzY1NjdkZTgzNTIyM2VlN2Q2OTQ4N2I4YzIyZmIzOTVhMmU4YzYxMzM0MWIwYzk2ZTZhNWY2YTJiZDUzNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1FWFRSQV9PRU1BS0UgKz0gIkdJVENPTVBJTEVfQVJHUz0nLS1ob3N0PSR7SE9TVF9TWVN9IC0tYnVpbGQ9JHtCVUlMRF9TWVN9IC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IC0tcHJlZml4PSR7cHJlZml4fSciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdndGsrJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrK10gPSAiLCxndGsrIGd0ayszLCIKLQotIyBjb25maWd1cmUuYWMvLmluIGRvZXNuJ3QgZXhpc3Qgc28gZm9yY2UgY29weQotQVVUT1RPT0xTX0NPUFlBQ0xPQ0FMID0gIjEiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0gICAgI0F1dG9tYWtlIGRpciBpcyBub3QgY29ycmVjdGx5IGRldGVjdGVkIGluIGNyb3NzIGNvbXBpbGF0aW9uIGNhc2UKLSAgICBleHBvcnQgQVVUT01BS0VfRElSPSIkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKSIKLSAgICBleHBvcnQgQUNMT0NBTF9GTEFHUz0iLS1zeXN0ZW0tYWNkaXI9JHtBQ0xPQ0FMRElSfS8gJHtBQ0xPQ0FMRVhUUkFQQVRIfSIKLQotICAgIGNwICR7V09SS0RJUn0vZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0ICR7U30vaGRhamFja3NlbnNldGVzdC9naXRjb21waWxlCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xkMTBrMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBlNTRkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS42LmJiCkBAIC0wLDAgKzEsODcgQEAKK1NVTU1BUlkgPSAiQWR2YW5jZWQgdG9vbHMgZm9yIGNlcnRhaW4gQUxTQSBzb3VuZCBjYXJkIGRyaXZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIrIgorREVQRU5EUyA9ICJhbHNhLWxpYiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWNsYW5nLVdyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbC13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWNhOGM5NDM3YWU3Nzk5OTdjZDYyZmIyODE1ZmVmMTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDY5YzRkYzJmYjY0MWE5NzRkOTkwM2U5ZWI3OGM5NGNiMGM3YWM2YzQ1YmFlNjY0ZjBjOWQ2YzBhMTU5MzIyNyIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworIyBicm9rZW5zZXAgYXMgYXMxMGsxIChhbmQgcHJvYmFibHkgbW9yZSkgZmFpbCBvdXQgb2YgdHJlZQorQ0xFQU5CUk9LRU4gPSAiMSIKKworIyBIZXJlIHdlIHVzZSBQQUNLQUdFQ09ORklHIG9wdGlvbnMgdG8gcGljayB3aGljaCBkaXJlY3RvcmllcyB3ZSBjb25maWd1cmUvYnVpbGQuCisjIFJlbWVtYmVyIG9uIHVwZ3JhZGVzIHRvIGNoZWNrIHRoYXQgbm8gbmV3IHRvb2xzIGhhdmUgYmVlbiBhZGRlZC4KK1BBQ0tBR0VDT05GSUcgPz89ICJhczEwazEgaGRhamFja3NlbnNldGVzdCBoZGEtdmVyYiBoZHNwbG9hZGVyIGxkMTBrMSBtaXhhcnRsb2FkZXIgcGN4aHJsb2FkZXIgXAorICAgICAgICAgICAgICAgICAgIHNiMTZfY3NwIHNlcS0tc2JpbG9hZCBzc2NhcGVfY3RsIHVzNDI4Y29udHJvbCB1c3gyeWxvYWRlciB2eGxvYWRlciBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEsyRElTVFJPRkVBVFVSRVN9JywgJ2VjaG9taXhlciBlbnZ5MjRjb250cm9sIHJtZWRpZ2ljb250cm9sJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2hkYWphY2tyZXRhc2snLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUdbYXMxMGsxXSA9ICIiCitQQUNLQUdFQ09ORklHW2VjaG9taXhlcl0gPSAiLCxndGsrIgorUEFDS0FHRUNPTkZJR1tlbnZ5MjRjb250cm9sXSA9ICIsLGd0aysiCitQQUNLQUdFQ09ORklHW2hkYS12ZXJiXSA9ICIiCitQQUNLQUdFQ09ORklHW2hkYWphY2tyZXRhc2tdID0gIiwsZ3RrKzMiCitQQUNLQUdFQ09ORklHW2hkYWphY2tzZW5zZXRlc3RdID0gIiwsZ2xpYi0yLjAiCitQQUNLQUdFQ09ORklHW2hkc3Bjb25mXSA9ICIsLGZsdGsiCitQQUNLQUdFQ09ORklHW2hkc3Bsb2FkZXJdID0gIiIKK1BBQ0tBR0VDT05GSUdbaGRzcG1peGVyXSA9ICIsLGZsdGsiCitQQUNLQUdFQ09ORklHW2h3bWl4dm9sdW1lXSA9ICIsLCxweXRob24tY29yZSBweXRob24tcHlndGsiCitQQUNLQUdFQ09ORklHW2xkMTBrMV0gPSAiIgorUEFDS0FHRUNPTkZJR1ttaXhhcnRsb2FkZXJdID0gIiIKK1BBQ0tBR0VDT05GSUdbcGN4aHJsb2FkZXJdID0gIiIKK1BBQ0tBR0VDT05GSUdbcWxvMTBrMV0gPSAiLCxxdC14MTEtZnJlZSIKK1BBQ0tBR0VDT05GSUdbcm1lZGlnaWNvbnRyb2xdID0gIiwsZ3RrKyIKK1BBQ0tBR0VDT05GSUdbc2IxNl9jc3BdID0gIiIKK1BBQ0tBR0VDT05GSUdbc2VxLS1zYmlsb2FkXSA9ICIiCitQQUNLQUdFQ09ORklHW3NzY2FwZV9jdGxdID0gIiIKK1BBQ0tBR0VDT05GSUdbdXM0Mjhjb250cm9sXSA9ICIiCitQQUNLQUdFQ09ORklHW3VzeDJ5bG9hZGVyXSA9ICIiCitQQUNLQUdFQ09ORklHW3Z4bG9hZGVyXSA9ICIiCisKK3B5dGhvbiBkb19jb25maWd1cmUoKSB7CisgICAgZm9yIHN1YmRpciBpbiBkLmdldFZhcigiUEFDS0FHRUNPTkZJRyIpLnNwbGl0KCk6CisgICAgICAgIHN1YmRpciA9IHN1YmRpci5yZXBsYWNlKCItLSIsICIvIikKKyAgICAgICAgYmIubm90ZSgiQ29uZmlndXJpbmcgJXMiICUgc3ViZGlyKQorICAgICAgICBkZCA9IGQuY3JlYXRlQ29weSgpCisgICAgICAgIGRkLnNldFZhcigiUyIsIG9zLnBhdGguam9pbihkLmdldFZhcigiUyIpLCBzdWJkaXIpKQorICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImF1dG90b29sc19kb19jb25maWd1cmUiLCBkZCkKK30KKworcHl0aG9uIGRvX2NvbXBpbGUoKSB7CisgICAgZm9yIHN1YmRpciBpbiBkLmdldFZhcigiUEFDS0FHRUNPTkZJRyIpLnNwbGl0KCk6CisgICAgICAgIHN1YmRpciA9IHN1YmRpci5yZXBsYWNlKCItLSIsICIvIikKKyAgICAgICAgYmIubm90ZSgiQ29tcGlsaW5nICVzIiAlIHN1YmRpcikKKyAgICAgICAgZGQgPSBkLmNyZWF0ZUNvcHkoKQorICAgICAgICBkZC5zZXRWYXIoIlMiLCBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIlMiKSwgc3ViZGlyKSkKKyAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJhdXRvdG9vbHNfZG9fY29tcGlsZSIsIGRkKQorfQorCitweXRob24gZG9faW5zdGFsbCgpIHsKKyAgICBmb3Igc3ViZGlyIGluIGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikuc3BsaXQoKToKKyAgICAgICAgc3ViZGlyID0gc3ViZGlyLnJlcGxhY2UoIi0tIiwgIi8iKQorICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nICVzIiAlIHN1YmRpcikKKyAgICAgICAgZGQgPSBkLmNyZWF0ZUNvcHkoKQorICAgICAgICBkZC5zZXRWYXIoIlMiLCBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIlMiKSwgc3ViZGlyKSkKKyAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJhdXRvdG9vbHNfZG9faW5zdGFsbCIsIGRkKQorCisgICAgIyBKdXN0IHJlbW92ZSBiYXNoLW5lZWRpbmcgaW5pdCBzY3JpcHQgdGhhdCBpc24ndCBpbnN0YWxsZWQgYXMgYW4gaW5pdCBzY3JpcHQKKyAgICB0cnk6CisgICAgICAgIG9zLnJlbW92ZShvZS5wYXRoLmpvaW4oZC5nZXRWYXIoIkQiKSwgZC5nZXRWYXIoInNiaW5kaXIiKSwgImxkMTBrMWQiKSkKKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDdjYTVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gYjlkNDFiNzg0NjU3MTUyYTRjNTY4M2E5NDU4ZGZmYWI1NTdmMDY4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBGcmksIDI5IEF1ZyAyMDE0IDE4OjU4OjU2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsc2FjdGw6IGRvbid0IGxldCBzeXN0ZW1kIHVuaXQgcmVzdG9yZSB0aGUgdm9sdW1lIHdoZW4KLSBhc291bmQuc3RhdGUgaXMgbWlzc2luZwotCi1UaGlzIGF2b2lkcyBhbiBlcnJvciBvbiBib290dXAKLQotRmlsZWQgYXMgaHR0cHM6Ly9idWd0cmFjay5hbHNhLXByb2plY3Qub3JnL2Fsc2EtYnVnL3ZpZXcucGhwP2lkPTU0NTkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1TaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPgotCi1SZWJhc2VkIG9uIDEuMS4wLgotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBhbHNhY3RsL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgNyArKysrLS0tCi0gYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbiB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWxzYWN0bC9NYWtlZmlsZS5hbSBiL2Fsc2FjdGwvTWFrZWZpbGUuYW0KLWluZGV4IDkwZmFiOWQuLjE5MDUyNWEgMTAwNjQ0Ci0tLS0gYS9hbHNhY3RsL01ha2VmaWxlLmFtCi0rKysgYi9hbHNhY3RsL01ha2VmaWxlLmFtCi1AQCAtMzgsOSArMzgsMTAgQEAgaW5zdGFsbC1kYXRhLWhvb2s6Ci0gZW5kaWYKLSAKLSBlZGl0ID0gXAotLQkkKFNFRCkgLXIgLWUgJ3MsQHNiaW5kaXJcQCwkKHNiaW5kaXIpLGcnIFwKLS0JCSAgLWUgJ3MsQG15ZGF0YWRpclxALCQobXlkYXRhZGlyKSxnJyBcCi0tCQkgIC1lICdzLEBkYWVtb25zd2l0Y2hcQCwkKEFMU0FDVExfREFFTU9OU1dJVENIKSxnJyBcCi0rCSQoU0VEKSAtZSAncyxAbG9jYWxzdGF0ZWRpclxALCQobG9jYWxzdGF0ZWRpciksZycgXAotKwkgICAgICAgLWUgJ3MsQHNiaW5kaXJcQCwkKHNiaW5kaXIpLGcnIFwKLSsJICAgICAgIC1lICdzLEBteWRhdGFkaXJcQCwkKG15ZGF0YWRpciksZycgXAotKwkgICAgICAgLWUgJ3MsQGRhZW1vbnN3aXRjaFxALCQoQUxTQUNUTF9EQUVNT05TV0lUQ0gpLGcnIFwKLSAJCQkJCQkJPCAkPCA+ICRAIHx8IHJtICRACi0gCi0gYWxzYS1zdGF0ZS5zZXJ2aWNlOiBhbHNhLXN0YXRlLnNlcnZpY2UuaW4KLWRpZmYgLS1naXQgYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluIGIvYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbgotaW5kZXggODBmZDVmZC4uNmJlYjM2ZCAxMDA2NDQKLS0tLSBhL2Fsc2FjdGwvYWxzYS1yZXN0b3JlLnNlcnZpY2UuaW4KLSsrKyBiL2Fsc2FjdGwvYWxzYS1yZXN0b3JlLnNlcnZpY2UuaW4KLUBAIC03LDYgKzcsNyBAQAotIERlc2NyaXB0aW9uPVNhdmUvUmVzdG9yZSBTb3VuZCBDYXJkIFN0YXRlCi0gQ29uZGl0aW9uUGF0aEV4aXN0cz0hQGRhZW1vbnN3aXRjaEAKLSBDb25kaXRpb25QYXRoRXhpc3RzR2xvYj0vZGV2L3NuZC9jb250cm9sKgotK0NvbmRpdGlvblBhdGhFeGlzdHM9QGxvY2Fsc3RhdGVkaXJAL2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZQotIAotIFtTZXJ2aWNlXQotIFR5cGU9b25lc2hvdAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMyMTViZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTk1MjZiMDU1ZTI0NmI1NTU4ODA5YTVhZTI1YzBiOSIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCi0KLSMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgotIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCi0jIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgotIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKLSMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCi1QQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCi0KLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLC0td2l0aC11ZGV2LXJ1bGVzLWRpcj0vdW53YW50ZWQvcnVsZXMuZCx1ZGV2IgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvdXRpbHMvYWxzYS11dGlscy0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGZlNmVhMTQ3YTVlMDdhMDU2OTE5NTkxYzJmNWRhYzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIwYmQyODVlOTFkYjZlN2ZkN2RiM2M5ZWM2ZjU1YjAyZjM1NDQ5ZmYyNzNjNzg0NDc4MGFjNmE1YTNkZTJlOCIKLQotIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAotIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAotIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgotIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKLQotIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscwotIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgotCi1BTFNBX1VUSUxTX1BLR1MgPSAiXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAotICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgotRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQiCi1GSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCi1GSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKLUZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgotRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKLUZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kICovKi91ZGV2L3J1bGVzLmQgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgotRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20iCi0KLVNVTU1BUllfYWxzYS11dGlscy1hbHNhYmF0ICAgICAgPSAiQ29tbWFuZC1saW5lIHNvdW5kIHRlc3RlciBmb3IgQUxTQSBzb3VuZCBjYXJkIGRyaXZlciIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdHBsZyAgICAgPSAiQ29udmVydHMgdG9wb2xvZ3kgdGV4dCBmaWxlcyBpbnRvIGJpbmFyeSBmb3JtYXQgZm9yIGtlcm5lbCIKLVNVTU1BUllfYWxzYS11dGlscy1hcGxheSAgICAgICAgPSAiUGxheSAoYW5kIHJlY29yZCkgc291bmQgZmlsZXMgdXNpbmcgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hbWl4ZXIgICAgICAgPSAiQ29tbWFuZC1saW5lIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FtaXhlciAgICA9ICJuY3Vyc2VzLWJhc2VkIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgotU1VNTUFSWV9hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ICA9ICJBTFNBIHN1cnJvdW5kIHNwZWFrZXIgdGVzdCB1dGlsaXR5IgotU1VNTUFSWV9hbHNhLXV0aWxzLW1pZGkgICAgICAgICA9ICJNaXNjZWxsYW5lb3VzIE1JREkgdXRpbGl0aWVzIGZvciBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFjb25uZWN0ICAgICA9ICJBTFNBIHNlcXVlbmNlciBjb25uZWN0aW9uIG1hbmFnZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgID0gIk5ldHdvcmsgY2xpZW50L3NlcnZlciBmb3IgQUxTQSBzZXF1ZW5jZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgID0gIkFMU0EgdXRpbGl0eSBmb3Igc2V0dGluZy9zaG93aW5nIElFQzk1OCAoUy9QRElGKSBzdGF0dXMgYml0cyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhY3RsICAgICAgPSAiU2F2ZXMvcmVzdG9yZXMgQUxTQS1zZXR0aW5ncyBpbiAvZXRjL2Fzb3VuZC5zdGF0ZSIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxZHVtcCAgICAgPSAiU2hvd3MgdGhlIGV2ZW50cyByZWNlaXZlZCBhdCBhbiBBTFNBIHNlcXVlbmNlciBwb3J0IgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2Fsb29wICAgICA9ICJBTFNBIFBDTSBsb29wYmFjayB1dGlsaXR5IgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F1Y20gICAgICA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIiCi0KLVJSRUNPTU1FTkRTX2Fsc2EtdXRpbHMtYWxzYWN0bCA9ICJhbHNhLXN0YXRlcyIKLQotQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCi0JIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKLQlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKLQotCSMgSWYgdWRldiBpcyBkaXNhYmxlZCwgd2UgdG9sZCBjb25maWd1cmUgdG8gaW5zdGFsbCB0aGUgcnVsZXMKLQkjIGluIC91bndhbnRlZCwgc28gd2UgY2FuIHJlbW92ZSB0aGVtIG5vdy4gSWYgdWRldiBpcyBlbmFibGVkLAotCSMgdGhlbiAvdW53YW50ZWQgd29uJ3QgZXhpc3QgYW5kIHRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4KLQlybSAtcmYgJHtEfS91bndhbnRlZAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGJhMGNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjYuYmIKQEAgLTAsMCArMSwxMDcgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTJjZTdmN2I2NzM5NDg3ZmI3MmM2ODlkNDY1MjFmOTU4IgorREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgorCitQQUNLQUdFQ09ORklHID8/PSAidWRldiIKKworIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCisjIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKKyMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCisjIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dworIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KK1BBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKKworUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLS13aXRoLXVkZXYtcnVsZXMtZGlyPS91bndhbnRlZC9ydWxlcy5kLHVkZXYiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjUwYWU3NTU2NzQ1OTY0NmI4NDNiZWQ3OGQ5MTZiMDAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1NWNhZWNjNDBiMjIyMGY2ODZmMzRiYTM2NTVhNTNlM2JkYmMwNTg2YWRiMTA1NjczMzk0OWZlYWFmN2QzNmUiCisKKyMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKKyMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKKyMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KKyMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5CitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIG1hbnBhZ2VzCisKKyMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKKyMgaXBrIGRlcGVuZHMgb24gdGhlbS4KKworQUxTQV9VVElMU19QS0dTID0gIlwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKKyAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgorRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK0FMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgorCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCisKKwkjIElmIHVkZXYgaXMgZGlzYWJsZWQsIHdlIHRvbGQgY29uZmlndXJlIHRvIGluc3RhbGwgdGhlIHJ1bGVzCisJIyBpbiAvdW53YW50ZWQsIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBub3cuIElmIHVkZXYgaXMgZW5hYmxlZCwKKwkjIHRoZW4gL3Vud2FudGVkIHdvbid0IGV4aXN0IGFuZCB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisJcm0gLXJmICR7RH0vdW53YW50ZWQKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxOC0xNTgyMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxOC0xNTgyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDU4NjhhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE4LTE1ODIyLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNmI2N2Q3ZjA1OTE4ZjdhMWVlOGZjNmZmMjEzNTVkN2U4NzM2YWExMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CitEYXRlOiBTYXQsIDI4IEp1bCAyMDE4IDE1OjAzOjUwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2ZsdmVuYzogQ2hlY2sgYXVkaW8gcGFja2V0IHNpemUKKworRml4ZXM6IEFzc2VydGlvbiBmYWlsdXJlCitGaXhlczogYXNzZXJ0X2ZsdmVuYy5jOjk0MV8xLnN3ZgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vRkZtcGVnL0ZGbXBlZy9jb21taXQvNmI2N2Q3ZjA1OTE4ZjdhMWVlOGZjNmZmMjEzNTVkN2U4NzM2YWExMF0KK0NWRTogQ1ZFLTIwMTgtMTU4MjIKKworRm91bmQtYnk6ICNDSEVOIEhPTkdYVSMgPEhDSEVOMDE3QGUubnR1LmVkdS5zZz4KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvZmx2ZW5jLmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMgYi9saWJhdmZvcm1hdC9mbHZlbmMuYworaW5kZXggMWM1NTJhM2U2Yi4uZTQ4NjNmMWZjNyAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCisrKysgYi9saWJhdmZvcm1hdC9mbHZlbmMuYworQEAgLTg4Myw2ICs4ODMsMTEgQEAgc3RhdGljIGludCBmbHZfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKKyAgICAgaW50IGZsYWdzID0gLTEsIGZsYWdzX3NpemUsIHJldDsKKyAgICAgaW50NjRfdCBjdXJfb2Zmc2V0ID0gYXZpb190ZWxsKHBiKTsKKyAKKysgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8gJiYgIXBrdC0+c2l6ZSkgeworKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19XQVJOSU5HLCAiRW1wdHkgYXVkaW8gUGFja2V0XG4iKTsKKysgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisrICAgIH0KKysKKyAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2RiB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkEgfHwKKyAgICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2ICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQykKKyAgICAgICAgIGZsYWdzX3NpemUgPSAyOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzljZjdmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYmY0ZWFkMjI3ZmNlZGRkZjU0Yzg2MDEzNzA1YTk4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjkyZTk1NzhlZjhiM2U0OWVlYWIyMjllNjkzMDVmNWY0Y2JjMWZkYWEyMmU5MjdmYzdmY2ExOGFjY2NkNzQwIgotCi0jIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3Ci1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCi0jIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKLVBST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgotCi1ERVBFTkRTID0gImFsc2EtbGliIHpsaWIgbGlib2dnIHlhc20tbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIFwKLSAgICAgICAgICAgICAgICAgICBiemxpYiBncGwgbHptYSB0aGVvcmEgeDI2NCBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYnLCAnJywgZCl9IgotCi0jIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKLVBBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKLVBBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKLVBBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKLVBBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKLVBBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKLVBBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKLVBBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKLVBBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKLQotIyBmZWF0dXJlcyB0byBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwiCi1QQUNLQUdFQ09ORklHW2dzbV0gPSAiLS1lbmFibGUtbGliZ3NtLC0tZGlzYWJsZS1saWJnc20sbGliZ3NtIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1pbmRldj1qYWNrLC0tZGlzYWJsZS1pbmRldj1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2xpYnZvcmJpc10gPSAiLS1lbmFibGUtbGlidm9yYmlzLC0tZGlzYWJsZS1saWJ2b3JiaXMsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6IgotUEFDS0FHRUNPTkZJR1ttcDNsYW1lXSA9ICItLWVuYWJsZS1saWJtcDNsYW1lLC0tZGlzYWJsZS1saWJtcDNsYW1lLGxhbWUiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2RsMl0gPSAiLS1lbmFibGUtc2RsMiwtLWRpc2FibGUtc2RsMix2aXJ0dWFsL2xpYnNkbDIiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYiBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYi1zaG0gXAotICAgIC0tZGlzYWJsZS1saWJ4Y2IteGZpeGVzIFwKLSAgICAtLWRpc2FibGUtbGlieGNiLXNoYXBlIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAotICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCi0gICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCi0gICAgJHtFWFRSQV9GRkNPTkZ9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKLSAgICAtLWNwdT0ke0BjcHUoZCl9IFwKLSAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxYWYwNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjAuMi5iYgpAQCAtMCwwICsxLDE1OCBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTU4MjIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYWUwYmZkZjgwOTMwNmEyMTJiNGYwZTZlYjhkMWM3NWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk1YzBjYzllYjk5MGU5NDAzMWQyMTgzZjJlNmU0NDRjYzYxYzk5ZjZmMTgyZDE1NzVjNDMzZDYyYWZiMmY5NyIKKworIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKKyMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQorUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCisKK0RFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgbmFzbS1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAorICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4dicsICcnLCBkKX0iCisKKyMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAorUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgorUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgorUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgorUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgorUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgorUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgorUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgorUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgorCisjIGZlYXR1cmVzIHRvIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKK1BBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCitQQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEiCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCitQQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCitQQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgorUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCitQQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKKworIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKK1VTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgorCitkZWYgY3B1KGQpOgorICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6CisgICAgICAgICAgICByZXR1cm4gYXJnWzY6XQorICAgIHJldHVybiAnZ2VuZXJpYycKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCisgICAgLS1lbmFibGUtcGljIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKKyAgICAtLWRpc2FibGUtbGlieGNiIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXNobSBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi14Zml4ZXMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2hhcGUgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdVU0VfTk9ORlJFRScsICd5ZXMnLCAnLS1lbmFibGUtbm9uZnJlZScsICcnLCBkKX0gXAorICAgIFwKKyAgICAtLWNyb3NzLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKKyAgICBcCisgICAgLS1sZD0iJHtDQ0xEfSIgXAorICAgIC0tY2M9IiR7Q0N9IiBcCisgICAgLS1jeHg9IiR7Q1hYfSIgXAorICAgIC0tYXJjaD0ke1RBUkdFVF9BUkNIfSBcCisgICAgLS10YXJnZXQtb3M9ImxpbnV4IiBcCisgICAgLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCisgICAgLS1leHRyYS1jZmxhZ3M9IiR7VEFSR0VUX0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKKyAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7VEFSR0VUX0xERkxBR1N9IiBcCisgICAgLS1zeXNyb290PSIke1NUQUdJTkdfRElSX1RBUkdFVH0iIFwKKyAgICAtLWVuYWJsZS1oYXJkY29kZWQtdGFibGVzIFwKKyAgICAke0VYVFJBX0ZGQ09ORn0gXAorICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1zaGxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2ZmbXBlZyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0FWQUlMVFVORVMnLCAnbWlwczMycjInLCAnJywgJy0tZGlzYWJsZS1taXBzZHNwIC0tZGlzYWJsZS1taXBzZHNwcjInLCBkKX0gXAorICAgIC0tY3B1PSR7QGNwdShkKX0gXAorICAgIC0tcGtnLWNvbmZpZz1wa2ctY29uZmlnIFwKKyIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCisjIGdvbGQgY3Jhc2hlcyBvbiB4ODYsIGFub3RoZXIgc29sdXRpb24gaXMgdG8gLS1kaXNhYmxlLWFzbSBidXQgdGhhdHMgbW9yZSBoYWNreQorIyBsZC5nb2xkOiBpbnRlcm5hbCBlcnJvciBpbiByZWxvY2F0ZV9zZWN0aW9uLCBhdCAuLi8uLi9nb2xkL2kzODYuY2M6MzY4NAorCitMREZMQUdTX2FwcGVuZF94ODYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCisgICAgICAgICAgICAgbGliYXZkZXZpY2UgXAorICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKKyAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCisgICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGliYXZ1dGlsIFwKKyAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCisgICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGlic3dzY2FsZSIKKworRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKK0ZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgorCisjIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZpbGVzL0NWRS0yMDE3LTY4ODgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmlsZXMvQ1ZFLTIwMTctNjg4OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5YWI5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmlsZXMvQ1ZFLTIwMTctNjg4OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNGY0N2I2M2U5Yzk3MWU2MzkxNTkwY2FmMDBhMGYyYTVlZDYxMmU2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVyaWsgZGUgQ2FzdHJvIExvcG8gPGVyaWtkQG1lZ2EtbmVyZC5jb20+Ci1EYXRlOiBTYXQsIDggQXByIDIwMTcgMTg6MzQ6NDkgKzEwMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3RyZWFtX2RlY29kZXIuYzogRml4IGEgbWVtb3J5IGxlYWsKLQotTGVhayByZXBvcnRlZCBieSBTZWN1bmlhIFJlc2VhcmNoLgotQ1ZFOiBDVkUtMjAxNy02ODg4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC54aXBoLm9yZy8/cD1mbGFjLmdpdDthPWNvbW1pdGRpZmY7aD00ZjQ3YjYzZTljOTcxZTYzOTE1OTBjYWYwMGEwZjJhNWVkNjEyZTY3XQotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBzcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jIGIvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYwotaW5kZXggMTRkNWZlN2YuLmE1NTI3NTExIDEwMDY0NAotLS0tIGEvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYwotKysrIGIvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYwotQEAgLTE3NTMsNiArMTc1Myw5IEBAIEZMQUNfX2Jvb2wgcmVhZF9tZXRhZGF0YV92b3JiaXNjb21tZW50XyhGTEFDX19TdHJlYW1EZWNvZGVyICpkZWNvZGVyLCBGTEFDX19TdHJlCi0gCQkJCQl9Ci0gCQkJCQltZW1zZXQgKG9iai0+Y29tbWVudHNbaV0uZW50cnksIDAsIG9iai0+Y29tbWVudHNbaV0ubGVuZ3RoKSA7Ci0gCQkJCQlpZiAoIUZMQUNfX2JpdHJlYWRlcl9yZWFkX2J5dGVfYmxvY2tfYWxpZ25lZF9ub19jcmMoZGVjb2Rlci0+cHJpdmF0ZV8tPmlucHV0LCBvYmotPmNvbW1lbnRzW2ldLmVudHJ5LCBvYmotPmNvbW1lbnRzW2ldLmxlbmd0aCkpIHsKLSsJCQkJCQkvKiBDdXJyZW50IGktdGggZW50cnkgaXMgYmFkLCBzbyB3ZSBkZWxldGUgaXQuICovCi0rCQkJCQkJZnJlZSAob2JqLT5jb21tZW50c1tpXS5lbnRyeSkgOwotKwkJCQkJCW9iai0+Y29tbWVudHNbaV0uZW50cnkgPSBOVUxMIDsKLSAJCQkJCQlvYmotPm51bV9jb21tZW50cyA9IGk7Ci0gCQkJCQkJZ290byBza2lwOwotIAkJCQkJfQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWMvQ1ZFLTIwMTctNjg4OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjL0NWRS0yMDE3LTY4ODgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxNzkxNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjL0NWRS0yMDE3LTY4ODgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA0M2VjYjY0MzEwNzdmZjU0ZTlkZjI3ZjcxNzM3ZTZlOTZkNmMwMzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjEgQXVnIDIwMTggMTQ6NDY6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRnJvbSA1ZjQ3YjYzZTljOTcxZTYzOTE1OTBjYWYwMGEwZjJhNWVkNjEyZTY3IE1vbiBTZXAgMTcKKyAwMDowMDowMCAyMDAxIEZyb206IEVyaWsgZGUgQ2FzdHJvIExvcG8gPGVyaWtkQG1lZ2EtbmVyZC5jb20+IERhdGU6IFNhdCwgOAorIEFwciAyMDE3IDE4OjM0OjQ5ICsxMDAwIFN1YmplY3Q6IFtQQVRDSF0gc3RyZWFtX2RlY29kZXIuYzogRml4IGEgbWVtb3J5IGxlYWsKKworTGVhayByZXBvcnRlZCBieSBTZWN1bmlhIFJlc2VhcmNoLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPWZsYWMuZ2l0O2E9Y29tbWl0OworICAgICAgICAgICAgICAgICBoPTRmNDdiNjNlOWM5NzFlNjM5MTU5MGNhZjAwYTBmMmE1ZWQ2MTJlNjddCisKK1VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDEuMy4yCitDVkU6IENWRS0yMDE3LTY4ODgKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMgYi9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCitpbmRleCBkMzY0YjBjLi5lYmY5M2RhIDEwMDY0NAorLS0tIGEvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYworKysrIGIvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYworQEAgLTE3NTksNiArMTc1OSw5IEBAIEZMQUNfX2Jvb2wgcmVhZF9tZXRhZGF0YV92b3JiaXNjb21tZW50XyhGTEFDX19TdHJlYW1EZWNvZGVyICpkZWNvZGVyLCBGTEFDX19TdHJlCisgCQkJCQl9CisgCQkJCQltZW1zZXQgKG9iai0+Y29tbWVudHNbaV0uZW50cnksIDAsIG9iai0+Y29tbWVudHNbaV0ubGVuZ3RoKSA7CisgCQkJCQlpZiAoIUZMQUNfX2JpdHJlYWRlcl9yZWFkX2J5dGVfYmxvY2tfYWxpZ25lZF9ub19jcmMoZGVjb2Rlci0+cHJpdmF0ZV8tPmlucHV0LCBvYmotPmNvbW1lbnRzW2ldLmVudHJ5LCBvYmotPmNvbW1lbnRzW2ldLmxlbmd0aCkpIHsKKysJCQkJCQkvKiBDdXJyZW50IGktdGggZW50cnkgaXMgYmFkLCBzbyB3ZSBkZWxldGUgaXQuICovXAorKwkJCQkJCWZyZWUgKG9iai0+Y29tbWVudHNbaV0uZW50cnkpIDsKKysJCQkJCQlvYmotPmNvbW1lbnRzW2ldLmVudHJ5ID0gTlVMTCA7CQkJCQkJCisgCQkJCQkJb2JqLT5udW1fY29tbWVudHMgPSBpOworIAkJCQkJCWdvdG8gc2tpcDsKKyAJCQkJCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYgppbmRleCAwMjhhNDI5Li45MmVmODk3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYgpAQCAtMTUsNyArMTUsOCBAQAogREVQRU5EUyA9ICJsaWJvZ2ciCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9mbGFjLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy02ODg4LnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNjg4OC5wYXRjaCAiCisKIAogU1JDX1VSSVttZDVzdW1dID0gIjQ1NGYxYmZhM2Y5M2NjNzA4MDk4ZDc4OTBkMDQ5OWJkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxY2ZjM2VkNjFkYzQwZjQ3ZjA1MGExMDliMDg2MTA2NjdkNzM0NzdhZjZlZjM2ZGNhZDMxYzMxYTRhOGQ1M2YiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGQyMTVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDBiZDgwMDRkOGRkZGM0ODZkMzk2MWE1MzE2ZDI0ZThmMjY0NWU0YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCA5IFNlcCAyMDE4IDE3OjM4OjEwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbm5lY3QgaGFzIGEgZGlmZmVyZW50IHNpZ25hdHVyZSBvbiBtdXNsCisKK09uIGxpbnV4IHdoZW4gbm90IHVzaW5nIGdsaWJjIGFuZCB1c2luZyBtdXNsIGZvciBDIGxpYnJhcnksIGNvbm5lY3QKK0FQSSBoYXMgYSBkaWZmZXJlbnQgc2lnbmF0dXJlLCB0aGlzIHBhdGNoIGZpeGVzIHRoaXMgc28gaXQgY2FuIGNvbXBpbGUKK29uIG11c2wsIHRoZSBmdW5jdGlvbmFsaXR5IHNob3VsZCByZW1haW4gc2FtZSBhcyBpdCBpcyBpbW1lZGlhdGVseQordHlwY2FzdGVkIHRvIHN0cnVjdCBzb2NrYWRkcl9pbiogdHlwZSBpbnNpZGUgdGhlIGZ1bmN0aW9uIGJlZm9yZSB1c2UKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBwbHVnaW5zL2ZhdWx0X2luamVjdGlvbi9zb2NrZXRfaW50ZXJwb3Nlci5jIHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGx1Z2lucy9mYXVsdF9pbmplY3Rpb24vc29ja2V0X2ludGVycG9zZXIuYyBiL3BsdWdpbnMvZmF1bHRfaW5qZWN0aW9uL3NvY2tldF9pbnRlcnBvc2VyLmMKK2luZGV4IDUzYzFlYmIuLmFkN2FkZjggMTAwNjQ0CistLS0gYS9wbHVnaW5zL2ZhdWx0X2luamVjdGlvbi9zb2NrZXRfaW50ZXJwb3Nlci5jCisrKysgYi9wbHVnaW5zL2ZhdWx0X2luamVjdGlvbi9zb2NrZXRfaW50ZXJwb3Nlci5jCitAQCAtMTAwLDEwICsxMDAsMTUgQEAgc29ja2V0X2ludGVycG9zZXJfc2V0X2NhbGxiYWNrIChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHJpbiwKKyB9CisgCisgaW50CistY29ubmVjdCAoaW50IHNvY2tldCwgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICphZGRyaW4sIHNvY2tsZW5fdCBhZGRyZXNzX2xlbikKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykKKytjb25uZWN0IChpbnQgc29ja2V0LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCBhZGRyZXNzX2xlbikKKysjZWxzZQorK2Nvbm5lY3QgKGludCBzb2NrZXQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwgc29ja2xlbl90IGFkZHJlc3NfbGVuKQorKyNlbmRpZgorIHsKKyAgIHNpemVfdCBpOworICAgaW50IG92ZXJyaWRlX2Vycm5vID0gMDsKKysgIHN0cnVjdCBzb2NrYWRkcl9pbiogYWRkcmluID0gKHN0cnVjdCBzb2NrYWRkcl9pbiopYWRkcjsKKyAgIHR5cGVkZWYgc3NpemVfdCAoKnJlYWxfY29ubmVjdF9mbikgKGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICosCisgICAgICAgc29ja2xlbl90KTsKKyAgIHN0YXRpYyByZWFsX2Nvbm5lY3RfZm4gcmVhbF9jb25uZWN0ID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaAppbmRleCAyY2FiODdmLi4xYjdmMTE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5MDkxNmY5NjI2MmZhN2IyN2EwYTk5Nzg4YzY5ZjlmZDZkZjExMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyYjA0MzZmOWEwNzc3M2ZhZThjNzRkZjkwMmQ3MDI0ZThiZmMzNTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDI0IE5vdiAyMDE1IDE2OjQ2OjI3ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGludHJvc3BlY3Rpb24ubTQ6IHByZWZpeCBwa2djb25maWcgcGF0aHMgd2l0aApAQCAtMTAsMTIgKzEwLDEzIEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBjb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCB8IDEyICsrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisgY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IGIvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQKLWluZGV4IDE2MmJlNTcuLjIxN2E2YWUgMTAwNjQ0CitpbmRleCAxNjJiZTU3Li45MzNmOTc5IDEwMDY0NAogLS0tIGEvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQKICsrKyBiL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00CiBAQCAtNTQsMTQgKzU0LDE0IEBAIG00X2RlZmluZShbX0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS19JTlRFUk5BTF0sCkBAIC0zNyw2ICszOCwzIEBACiAgICAgICAgIElOVFJPU1BFQ1RJT05fSU5JVD0iZXh0ZXJuIHZvaWQgZ3N0X2luaXQoZ2ludCosZ2NoYXIqKik7IGdzdF9pbml0KE5VTEwsTlVMTCk7IgogICAgICBmaQogICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvYWRkLWEtdGFyZ2V0LXRvLWNvbXBpbGUtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAyZDg2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gZDYxNDE0YmMxN2NmMmRmMDE5NTEwYzI5MDgwNDhjNGNhYmY1Y2YwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDA5OjI3OjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCB0YXJnZXRzIGZvciB0ZXN0IGluc3RhbGxhdGlvbgorCitUYXJnZXRzIHRvIG1ha2Ugc3VyZSB0ZXN0cyBjYW4gYmUgaW5zdGFsbGVkIGFuZCB0aGVuIHJ1biBvbgordGhlIHRhcmdldC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtzcGVjaWZpYyB0byBvZSBzZXR1cF0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKworLS0tCisgdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gfCAyNyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0KK2luZGV4IDEzYjkxNmQuLmE2Njc4NmQgMTAwNjQ0CistLS0gYS90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0KK0BAIC04LDExICs4LDcgQEAgUkVHSVNUUllfRU5WSVJPTk1FTlQgPSBcCisgCUdTVF9SRUdJU1RSWT0kKENIRUNLX1JFR0lTVFJZKQorIAorIEFNX1RFU1RTX0VOVklST05NRU5UICs9IFwKKy0gICAgICAgIEdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9IiQoU1RBVEVfSUdOT1JFX0VMRU1FTlRTKSIJXAorLSAgICAgICAgJChSRUdJU1RSWV9FTlZJUk9OTUVOVCkJCQkJCVwKKy0gICAgICAgIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9JCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyIFwKKy0gICAgICAgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPQkJCQkJXAorLSAgICAgICAgR1NUX1BMVUdJTl9QQVRIXzFfMD0kKHRvcF9idWlsZGRpcikvcGx1Z2lucworKyAgICAgICAgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iJChTVEFURV9JR05PUkVfRUxFTUVOVFMpIgorIAorIHBsdWdpbmRpciA9ICQobGliZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKKyAKK0BAIC0xNzgsNiArMTc0LDIzIEBAIG5vaW5zdF9QUk9HUkFNUyA9CisgCisgVEVTVFMgPSAkKGNoZWNrX1BST0dSQU1TKQorIAorK2luc3RhbGwtcHRlc3Q6ICQoVEVTVFMpCisrCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikKKysJQGZvciBkaXIgaW4gYGZpbmQgLW1heGRlcHRoIDEgLXR5cGUgZGA7IGRvIFwKKysJCWlmIFsgLXggJCRkaXIvLmxpYnMgXTsgdGhlbiBcCisrCQkJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpLyQkZGlyOyBcCisrCQkJJChJTlNUQUxMX1BST0dSQU0pICQkZGlyLy5saWJzLyogJChERVNURElSKS8kJGRpci87IFwKKysJCWZpIFwKKysJZG9uZQorKworK3J1bnRlc3RzOgorKwlAZm9yIGIgaW4gJChURVNUUyk7IGRvIFwKKysJCWlmIFsgLXggJCRiIF07IHRoZW4gXAorKwkJCSQoQU1fVEVTVFNfRU5WSVJPTk1FTlQpICQoU0hFTEwpIHRlc3QtZHJpdmVyIC0tdGVzdC1uYW1lICIkJGIiIFwKKysJCQktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzICQkYjsgXAorKwkJZmkgXAorKwlkb25lCisrCisgbm9pbnN0X0hFQURFUlMgPSBcCisgCWdzdC9jYXBzbGlzdC5oIFwKKyAJZ3N0L3N0cnVjdF9hcm0uaCBcCitAQCAtMjIxLDkgKzIzNCw5IEBAIGdzdF9nc3RwcmludGZfTERBREQgPSBcCisgCSQoTERBREQpCisgCisgZWxlbWVudHNfZmRzcmNfQ0ZMQUdTPSQoR1NUX09CSl9DRkxBR1MpICQoQU1fQ0ZMQUdTKSBcCistCS1EVEVTVEZJTEU9XCIkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hY1wiCisrCS1EVEVTVEZJTEU9XCJNYWtlZmlsZVwiCisgZWxlbWVudHNfZmlsZXNyY19DRkxBR1M9JChHU1RfT0JKX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKKy0JLURURVNURklMRT1cIiQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjXCIKKysJLURURVNURklMRT1cIk1ha2VmaWxlXCIKKyAKKyBsaWJzX2NvbnRyb2xsZXJfTERBREQgPSBcCisgCSQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9jb250cm9sbGVyL2xpYmdzdGNvbnRyb2xsZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3M2QwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworbWFrZSAtayBydW50ZXN0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMjU4NWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiYzA3NGQ0OTY3NzA4MWY5YzI3ZGUxMWEwOTE2NTc0NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOWRhOWRmZTZlNWQ2ZjViYTNiMzhjNTc1MmI0MmQzZjkyNzcxNTkwNDk0MmI0MDVjMjkyNGQzY2I3N2FmYmExIgotCi1ERVBFTkRTID0gImpzb24tZ2xpYiBnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKLSMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKLSMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1HVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NDM4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNC4yLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImYzMzQxMDJiMGU3MDYwMDg1MDVkMDBmN2Y1YjVlMDIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhOWU0MjNlNTQ3MGVmODVlZjhhMGFlYTE3MTRlN2FiZmM0OWRlYjJlZDI4MjA1NzM2NzQ4NGNkZWJhNmYxOWYiCisKK0RFUEVORFMgPSAianNvbi1nbGliIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgorCitpbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitHVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjI4MzA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkxpYmF2LWJhc2VkIEdTdHJlYW1lciAxLnggcGx1Z2luIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgemxpYiBiemlwMiB4eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCi0KLSMgQ0FVVElPTjogVXNpbmcgdGhlIHN5c3RlbSBsaWJhdiBpcyBub3QgcmVjb21tZW5kZWQuIFNpbmNlIHRoZSBsaWJhdiBBUEkgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLAotIyBjb21waWxhdGlvbiBlcnJvcnMgKGFuZCBvdGhlciwgbW9yZSBzdWJ0bGUgYnVncykgY2FuIGhhcHBlbi4gSXQgaXMgdXN1YWxseSBiZXR0ZXIgdG8gcmVseSBvbiB0aGUKLSMgbGliYXYgY29weSBpbmNsdWRlZCBpbiB0aGUgZ3N0LWxpYmF2IHBhY2thZ2UuCi1QQUNLQUdFQ09ORklHID8/PSAib3JjIHlhc20iCi0KLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCwiCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLXdpdGgtc3lzdGVtLWxpYmF2LCxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbb3JjXSA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMiCi1QQUNLQUdFQ09ORklHW3lhc21dID0gIi0tZW5hYmxlLXlhc20sLS1kaXNhYmxlLXlhc20seWFzbS1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLUdTVFJFQU1FUl8xXzBfREVCVUcgPz0gIi0tZGlzYWJsZS1kZWJ1ZyIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFID0gIi0td2l0aC1saWJhdi1leHRyYS1jb25maWd1cmUiCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHID0gIi0tdGFyZ2V0LW9zPWxpbnV4IFwKLSAgLS1jYz0nJHtDQ30nIC0tYXM9JyR7Q0N9JyAtLWxkPScke0NDfScgLS1ubT0nJHtOTX0nIC0tYXI9JyR7QVJ9JyBcCi0gIC0tcmFubGliPScke1JBTkxJQn0nIFwKLSAgJHtHU1RSRUFNRVJfMV8wX0RFQlVHfSBcCi0gIC0tY3Jvc3MtcHJlZml4PScke0hPU1RfUFJFRklYfSciCi0KLSMgRGlzYWJsZSBhc3NlbWJseSBvcHRpbWl6YXRpb25zIGZvciBYMzIsIGFzIHRoaXMgbGliYXYgbGFja3MgdGhlIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpbnV4LWdudXgzMiA9ICJ5YXNtIgotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkdfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTiA9IFwKLScke0xJQkFWX0VYVFJBX0NPTkZJR1VSRX09IiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkd9IicKLQotRVhUUkFfT0VDT05GID0gIiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTn0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkzLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotIyBmZm1wZWcvbGliYXYgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKLUlOU0FORV9TS0lQXyR7UE59ID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtZml4LWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjBjMDc5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtZml4LWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGMxNzAwZjg2N2Y4NzZlZTMzYzEzMGE4ZTI4YjY4OGUyYjFkODk2NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAxNzoxNDo1NSArMDgwMAorU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGhvc3QgY29udGFtaW5hdGlvbgorCitSZW1vdmUgcmVmZXJlbmNlIHRvIGhvc3QgJChsaWJkaXIpIGZyb20gLmxhIGZpbGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzLWNvbXBpbGUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBnc3QtbGlicy9leHQvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCitpbmRleCA2Y2RjMDQ4Li5hMTlkMjU1IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9leHQvTWFrZWZpbGUuYW0KK0BAIC00OSw3ICs0OSw3IEBAIGVjaG8gIiAgR0VOICAgICAgJDEubGEiICYmIFwKKyAgZWNobyAibGlicmFyeV9uYW1lcz0nJyIgJiYgXAorICBlY2hvICJvbGRfbGlicmFyeT0nJDEuYSciICYmIFwKKyAgZWNobyAiaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0nJyIgJiYgXAorLSBlY2hvICJkZXBlbmRlbmN5X2xpYnM9JyAtTCQobGliZGlyKSAkKGlmICQyLCQoZm9yZWFjaCBkZXAsJDIsJChhYnNfYnVpbGRkaXIpLyQoZGVwKS5sYSkpICQoY2FsbCBmaW5kX2xpYnJhcnlfbGEsJDMgJChMSUJNKSwkKExERkxBR1MpKSAnIiAmJiBcCisrIGVjaG8gImRlcGVuZGVuY3lfbGlicz0nIC1MICQoaWYgJDIsJChmb3JlYWNoIGRlcCwkMiwkKGFic19idWlsZGRpcikvJChkZXApLmxhKSkgJChjYWxsIGZpbmRfbGlicmFyeV9sYSwkMyAkKExJQk0pLCQoTERGTEFHUykpICciICYmIFwKKyAgZWNobyAid2Vha19saWJyYXJ5X25hbWVzPScnIiAmJiAgXAorICBlY2hvICJjdXJyZW50PSIgJiYgXAorICBlY2hvICJhZ2U9IiAmJiBcCitAQCAtNTgsNyArNTgsNyBAQCBlY2hvICIgIEdFTiAgICAgICQxLmxhIiAmJiBcCisgIGVjaG8gInNob3VsZG5vdGxpbms9bm8iICYmIFwKKyAgZWNobyAiZGxvcGVuPScnIiAmJiBcCisgIGVjaG8gImRscHJlb3Blbj0nJyIgJiYgXAorLSBlY2hvICJsaWJkaXI9JyQobGliZGlyKSciKSA+ICQxLmxhCisrIGVjaG8gImxpYmRpcj0nJyIpID4gJDEubGEKKyBlbmRlZgorIAorIGxpYmF2dXRpbC5sYToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmJmYzg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGI1MjI2YzA5NmEwYjcwNDk4NzQ4NThlOTRhNTlkNDNlMTBiYTNmZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyMSBTZXAgMjAxNyAxMDoyMjo1NiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBoZXZjcHJlZF9tc2EuYzogRml4IGJ1aWxkIGJ5IEluY2x1ZGluZyBsaWJhdmNvZGVjL2hldmNkZWMuaAotCi1zcmMvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jOjE5MTM6MzI6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnSEVWQ0NvbnRleHQnOyBkaWQgeW91IG1lYW4gJ0hFVkNQcmVkQ29udGV4dCc/Ci0gdm9pZCBmZl9pbnRyYV9wcmVkXzhfMTZ4MTZfbXNhKEhFVkNDb250ZXh0ICpzLCBpbnQgeDAsIGludCB5MCwgaW50IGNfaWR4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRVZDUHJlZENvbnRleHQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLWluZGV4IDZhM2IyODEuLjk2M2M2NGMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCi1AQCAtMTgsNyArMTgsNyBAQAotICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAgKi8KLSAKLS0jaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjLmgiCi0rI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Y2RlYy5oIgotICNpbmNsdWRlICJsaWJhdnV0aWwvbWlwcy9nZW5lcmljX21hY3Jvc19tc2EuaCIKLSAjaW5jbHVkZSAiaGV2Y3ByZWRfbWlwcy5oIgotIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNTQ3YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhhODUxYmYyZTQ3NWU5MGEzZmRhYzk1MDZlM2U0ZGJkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhNTZhYTVkMmQ4Y2Q5MTJmMmJjZTE3ZjE3NDcxM2QyYzQxN2NhMjk4ZjFmOWMyOGVlNjZkNGFhMWUxZDllNjIiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MThkYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTQuMi5iYgpAQCAtMCwwICsxLDcwIEBACitTVU1NQVJZID0gIkxpYmF2LWJhc2VkIEdTdHJlYW1lciAxLnggcGx1Z2luIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImRhM2Q0NjU1MjY4YmM2NzY2YTI2MTA2NWNhNzM3NTkwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMzUxYzM5YzVjZmMyYmJkMzFjYTQzNGVjNGEyOTBhNzMwYTI2ZWZiZGVhOTYyZmRkODMwNmRjZTVjNTc2ZGUiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgemxpYiBiemlwMiB4eiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCisKKyMgQ0FVVElPTjogVXNpbmcgdGhlIHN5c3RlbSBsaWJhdiBpcyBub3QgcmVjb21tZW5kZWQuIFNpbmNlIHRoZSBsaWJhdiBBUEkgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLAorIyBjb21waWxhdGlvbiBlcnJvcnMgKGFuZCBvdGhlciwgbW9yZSBzdWJ0bGUgYnVncykgY2FuIGhhcHBlbi4gSXQgaXMgdXN1YWxseSBiZXR0ZXIgdG8gcmVseSBvbiB0aGUKKyMgbGliYXYgY29weSBpbmNsdWRlZCBpbiB0aGUgZ3N0LWxpYmF2IHBhY2thZ2UuCitQQUNLQUdFQ09ORklHID8/PSAib3JjIHlhc20iCisKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCwiCitQQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLXdpdGgtc3lzdGVtLWxpYmF2LCxsaWJhdiIKK1BBQ0tBR0VDT05GSUdbb3JjXSA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMiCitQQUNLQUdFQ09ORklHW3lhc21dID0gIi0tZW5hYmxlLXlhc20sLS1kaXNhYmxlLXlhc20sbmFzbS1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQiCisKK0dTVFJFQU1FUl8xXzBfREVCVUcgPz0gIi0tZGlzYWJsZS1kZWJ1ZyIKKworTElCQVZfRVhUUkFfQ09ORklHVVJFID0gIi0td2l0aC1saWJhdi1leHRyYS1jb25maWd1cmUiCisKK0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHID0gIi0tdGFyZ2V0LW9zPWxpbnV4IFwKKyAgLS1jYz0nJHtDQ30nIC0tYXM9JyR7Q0N9JyAtLWxkPScke0NDfScgLS1ubT0nJHtOTX0nIC0tYXI9JyR7QVJ9JyBcCisgIC0tcmFubGliPScke1JBTkxJQn0nIFwKKyAgJHtHU1RSRUFNRVJfMV8wX0RFQlVHfSBcCisgIC0tY3Jvc3MtcHJlZml4PScke0hPU1RfUFJFRklYfSciCisKKyMgRGlzYWJsZSBhc3NlbWJseSBvcHRpbWl6YXRpb25zIGZvciBYMzIsIGFzIHRoaXMgbGliYXYgbGFja3MgdGhlIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpbnV4LWdudXgzMiA9ICJ5YXNtIgorTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkdfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKworTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTiA9IFwKKycke0xJQkFWX0VYVFJBX0NPTkZJR1VSRX09IiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkd9IicKKworRVhUUkFfT0VDT05GID0gIiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTn0iCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkzLworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworIyBmZm1wZWcvbGliYXYgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKK0lOU0FORV9TS0lQXyR7UE59ID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDkyMzUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuTUFYIElMIHBsdWdpbnMgZm9yIEdTdHJlYW1lciIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLWFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKLQotCi1HU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQgPz0gImJlbGxhZ2lvIgotR1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FID89ICIke2xpYmRpcn0vbGlib214aWwtYmVsbGFnaW8uc28uMCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtdmFsZ3JpbmQgLS13aXRoLW9teC10YXJnZXQ9JHtHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVR9IgotCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIG9teF90YXJnZXQgPSBkLmdldFZhcigiR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUIikKLSAgICBpZiBvbXhfdGFyZ2V0IGluIFsnZ2VuZXJpYycsICdiZWxsYWdpbyddOgotICAgICAgICAjIEJlbGxhZ2lvIGhlYWRlcnMgYXJlIGluY29tcGxldGUgKHRoZXkgYXJlIG1pc3NpbmcgdGhlIE9NWF9WRVJTSU9OX01BSk9SLCMKLSAgICAgICAgIyBPTVhfVkVSU0lPTl9NSU5PUiwgT01YX1ZFUlNJT05fUkVWSVNJT04sIGFuZCBPTVhfVkVSU0lPTl9TVEVQIG1hY3Jvcyk7Ci0gICAgICAgICMgYXBwZW5kaW5nIGEgZGlyZWN0b3J5IHBhdGggdG8gZ3N0LW9teCcgaW50ZXJuYWwgT3Blbk1BWCBJTCBoZWFkZXJzIGZpeGVzIHRoaXMKLSAgICAgICAgZC5hcHBlbmRWYXIoIkNGTEFHUyIsICIgLUkke1N9L29teC9vcGVubWF4IikKLSAgICBlbGlmIG9teF90YXJnZXQgPT0gInJwaSI6Ci0gICAgICAgICMgRGVkaWNhdGVkIFJhc3BiZXJyeSBQaSBPcGVuTUFYIElMIHN1cHBvcnQgbWFrZXMgdGhpcyBwYWNrYWdlIG1hY2hpbmUgc3BlY2lmaWMKLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VfQVJDSCIsIGQuZ2V0VmFyKCJNQUNISU5FX0FSQ0giKSkKLX0KLQotZGVsZXRlX3BrZ19tNF9maWxlKCkgewotICAgICMgRGVsZXRlIG00IGZpbGVzIHdoaWNoIHdlIHByb3ZpZGUgcGF0Y2hlZCB2ZXJzaW9ucyBvZiBidXQgd2lsbCBiZSBpZ25vcmVkCi0gICAgIyBpZiB0aGVzZSBleGlzdAotCXJtIC1mICIke1N9L2NvbW1vbi9tNC9wa2cubTQiCi0Jcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCi19Ci1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJkZWxldGVfcGtnX200X2ZpbGUiCi0KLXNldF9vbXhfY29yZV9uYW1lKCkgewotCXNlZCAtaSAtZSAiczteY29yZS1uYW1lPS4qO2NvcmUtbmFtZT0ke0dTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRX07IiAiJHtEfSR7c3lzY29uZmRpcn0veGRnL2dzdG9teC5jb25mIgotfQotZG9faW5zdGFsbFtwb3N0ZnVuY3NdICs9ICIgc2V0X29teF9jb3JlX25hbWUgIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgotCi1SREVQRU5EU18ke1BOfSA9ICJsaWJvbXhpbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmN2VhZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1pbmNsdWRlIGdzdHJlYW1lcjEuMC1vbXguaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImViOGQ1YWUzYjY5Y2ZlZWQ5ZGM3N2M1OTIxMDYyNDdlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMjVmYTI0MjQyZWM4NjhmZTBmZjFlNjZkODA2YTEwNzBiY2JjN2MxNGE5ODdhODljZGMzMzk1ZDBkNTZkNWYiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjdiYzhmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE0LjIuYmIKQEAgLTAsMCArMSw1NyBAQAorU1VNTUFSWSA9ICJPcGVuTUFYIElMIHBsdWdpbnMgZm9yIEdTdHJlYW1lciIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ0ZmM5N2UzNTE2YmVmZTA0YmUzZDE2NjVhNmY3YmJlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxNmRiYjEzNjkzNzk1MzgzY2FkNmVjNGRiZWJkOTRhODY5Y2QxZjlkNTlhMzkzNjg2Y2FkMGI3N2JmOWI1YTkiCisKK1MgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgorCitHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQgPz0gImJlbGxhZ2lvIgorR1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FID89ICIke2xpYmRpcn0vbGlib214aWwtYmVsbGFnaW8uc28uMCIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtdmFsZ3JpbmQgLS13aXRoLW9teC10YXJnZXQ9JHtHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVR9IgorCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIG9teF90YXJnZXQgPSBkLmdldFZhcigiR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUIikKKyAgICBpZiBvbXhfdGFyZ2V0IGluIFsnZ2VuZXJpYycsICdiZWxsYWdpbyddOgorICAgICAgICAjIEJlbGxhZ2lvIGhlYWRlcnMgYXJlIGluY29tcGxldGUgKHRoZXkgYXJlIG1pc3NpbmcgdGhlIE9NWF9WRVJTSU9OX01BSk9SLCMKKyAgICAgICAgIyBPTVhfVkVSU0lPTl9NSU5PUiwgT01YX1ZFUlNJT05fUkVWSVNJT04sIGFuZCBPTVhfVkVSU0lPTl9TVEVQIG1hY3Jvcyk7CisgICAgICAgICMgYXBwZW5kaW5nIGEgZGlyZWN0b3J5IHBhdGggdG8gZ3N0LW9teCcgaW50ZXJuYWwgT3Blbk1BWCBJTCBoZWFkZXJzIGZpeGVzIHRoaXMKKyAgICAgICAgZC5hcHBlbmRWYXIoIkNGTEFHUyIsICIgLUkke1N9L29teC9vcGVubWF4IikKKyAgICBlbGlmIG9teF90YXJnZXQgPT0gInJwaSI6CisgICAgICAgICMgRGVkaWNhdGVkIFJhc3BiZXJyeSBQaSBPcGVuTUFYIElMIHN1cHBvcnQgbWFrZXMgdGhpcyBwYWNrYWdlIG1hY2hpbmUgc3BlY2lmaWMKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VfQVJDSCIsIGQuZ2V0VmFyKCJNQUNISU5FX0FSQ0giKSkKK30KKworZGVsZXRlX3BrZ19tNF9maWxlKCkgeworICAgICMgRGVsZXRlIG00IGZpbGVzIHdoaWNoIHdlIHByb3ZpZGUgcGF0Y2hlZCB2ZXJzaW9ucyBvZiBidXQgd2lsbCBiZSBpZ25vcmVkCisgICAgIyBpZiB0aGVzZSBleGlzdAorCXJtIC1mICIke1N9L2NvbW1vbi9tNC9wa2cubTQiCisJcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCit9Citkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJkZWxldGVfcGtnX200X2ZpbGUiCisKK3NldF9vbXhfY29yZV9uYW1lKCkgeworCXNlZCAtaSAtZSAiczteY29yZS1uYW1lPS4qO2NvcmUtbmFtZT0ke0dTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRX07IiAiJHtEfSR7c3lzY29uZmRpcn0veGRnL2dzdG9teC5jb25mIgorfQorZG9faW5zdGFsbFtwb3N0ZnVuY3NdICs9ICIgc2V0X29teF9jb3JlX25hbWUgIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorCitSREVQRU5EU18ke1BOfSA9ICJsaWJvbXhpbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTJlYTllLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYnBuZyBqcGVnIgotCi1pbmhlcml0IGdldHRleHQgYmx1ZXRvb3RoCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaCBcCi0iCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsZXMyIGVnbCcsICcnLCBkKX0iCi0KLSMgZ3RrIGlzIG5vdCBpbiB0aGUgUEFDS0FHRUNPTkZJRyB2YXJpYWJsZSBieSBkZWZhdWx0IHVudGlsCi0jIHRoZSB0cmFuc2l0aW9uIHRvIGd0ayszIGlzIGZpbmlzaGVkCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiIHZ1bGthbicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZWdsJywgJycsIGQpfSBcCi0gICAgYnoyIGN1cmwgZGFzaCBkdGxzIGhscyByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSB1dmNoMjY0IHdlYnAgXAotIgotCi1QQUNLQUdFQ09ORklHW2Fzc3JlbmRlcl0gICAgICAgPSAiLS1lbmFibGUtYXNzcmVuZGVyLC0tZGlzYWJsZS1hc3NyZW5kZXIsbGliYXNzIgotUEFDS0FHRUNPTkZJR1tibHVlel0gICAgICAgICAgID0gIi0tZW5hYmxlLWJsdWV6LC0tZGlzYWJsZS1ibHVleiwke0JMVUVafSIKLVBBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1iejIsLS1kaXNhYmxlLWJ6MixiemlwMiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gICAgICAgICAgICA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW2Rhc2hdICAgICAgICAgICAgPSAiLS1lbmFibGUtZGFzaCwtLWRpc2FibGUtZGFzaCxsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tkYzEzOTRdICAgICAgICAgID0gIi0tZW5hYmxlLWRjMTM5NCwtLWRpc2FibGUtZGMxMzk0LGxpYmRjMTM5NCIKLVBBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgICAgICA9ICItLWVuYWJsZS1kaXJlY3RmYiwtLWRpc2FibGUtZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2R0bHNdICAgICAgICAgICAgPSAiLS1lbmFibGUtZHRscywtLWRpc2FibGUtZHRscyxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tlZ2xdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWMsLS1kaXNhYmxlLWZhYWMsZmFhYyIKLVBBQ0tBR0VDT05GSUdbZmFhZF0gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFkLC0tZGlzYWJsZS1mYWFkLGZhYWQyIgotUEFDS0FHRUNPTkZJR1tmbGl0ZV0gICAgICAgICAgID0gIi0tZW5hYmxlLWZsaXRlLC0tZGlzYWJsZS1mbGl0ZSxmbGl0ZS1hbHNhIgotUEFDS0FHRUNPTkZJR1tmbHVpZHN5bnRoXSAgICAgID0gIi0tZW5hYmxlLWZsdWlkc3ludGgsLS1kaXNhYmxlLWZsdWlkc3ludGgsZmx1aWRzeW50aCIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgICAgICA9ICItLWVuYWJsZS1nbGVzMiwtLWRpc2FibGUtZ2xlczIsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbZ3RrXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1ndGszLC0tZGlzYWJsZS1ndGszLGd0ayszIgotUEFDS0FHRUNPTkZJR1tobHNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWhscyAtLXdpdGgtaGxzLWNyeXB0bz1uZXR0bGUsLS1kaXNhYmxlLWhscyxuZXR0bGUiCi1QQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLS1lbmFibGUta21zLC0tZGlzYWJsZS1rbXMsbGliZHJtIgotUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi0tZW5hYmxlLWxpYm1tcywtLWRpc2FibGUtbGlibW1zLGxpYm1tcyIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gICAgICAgICA9ICItLWVuYWJsZS1saWJzc2gyLC0tZGlzYWJsZS1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW21vZHBsdWddICAgICAgICAgPSAiLS1lbmFibGUtbW9kcGx1ZywtLWRpc2FibGUtbW9kcGx1ZyxsaWJtb2RwbHVnIgotUEFDS0FHRUNPTkZJR1tuZW9uXSAgICAgICAgICAgID0gIi0tZW5hYmxlLW5lb24sLS1kaXNhYmxlLW5lb24sbmVvbiIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuYWwsLS1kaXNhYmxlLW9wZW5hbCxvcGVuYWwtc29mdCIKLVBBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuY3YsLS1kaXNhYmxlLW9wZW5jdixvcGVuY3YiCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmdsLC0tZGlzYWJsZS1vcGVuZ2wsdmlydHVhbC9saWJnbCBsaWJnbHUiCi1QQUNLQUdFQ09ORklHW29wZW5qcGVnXSAgICAgICAgPSAiLS1lbmFibGUtb3BlbmpwZWcsLS1kaXNhYmxlLW9wZW5qcGVnLG9wZW5qcGVnIgotIyB0aGUgb3B1cyBlbmNvZGVyL2RlY29kZXIgZWxlbWVudHMgYXJlIG5vdyBpbiB0aGUgLWJhc2UgcGFja2FnZSwKLSMgYnV0IHRoZSBvcHVzIHBhcnNlciByZW1haW5zIGluIC1iYWQKLVBBQ0tBR0VDT05GSUdbb3B1c3BhcnNlXSAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCi1QQUNLQUdFQ09ORklHW3Jlc2luZHZkXSAgICAgICAgPSAiLS1lbmFibGUtcmVzaW5kdmQsLS1kaXNhYmxlLXJlc2luZHZkLGxpYmR2ZHJlYWQgbGliZHZkbmF2IgotUEFDS0FHRUNPTkZJR1tyc3ZnXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJzdmcsLS1kaXNhYmxlLXJzdmcsbGlicnN2ZyIKLVBBQ0tBR0VDT05GSUdbcnRtcF0gICAgICAgICAgICA9ICItLWVuYWJsZS1ydG1wLC0tZGlzYWJsZS1ydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLXNiYywtLWRpc2FibGUtc2JjLHNiYyIKLVBBQ0tBR0VDT05GSUdbc2Nocm9lZGluZ2VyXSAgICA9ICItLWVuYWJsZS1zY2hybywtLWRpc2FibGUtc2Nocm8sc2Nocm9lZGluZ2VyIgotUEFDS0FHRUNPTkZJR1tzbW9vdGhzdHJlYW1pbmddID0gIi0tZW5hYmxlLXNtb290aHN0cmVhbWluZywtLWRpc2FibGUtc21vb3Roc3RyZWFtaW5nLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3NuZGZpbGVdICAgICAgICAgPSAiLS1lbmFibGUtc25kZmlsZSwtLWRpc2FibGUtc25kZmlsZSxsaWJzbmRmaWxlMSIKLVBBQ0tBR0VDT05GSUdbc3J0cF0gICAgICAgICAgICA9ICItLWVuYWJsZS1zcnRwLC0tZGlzYWJsZS1zcnRwLGxpYnNydHAiCi1QQUNLQUdFQ09ORklHW3V2Y2gyNjRdICAgICAgICAgPSAiLS1lbmFibGUtdXZjaDI2NCwtLWRpc2FibGUtdXZjaDI2NCxsaWJ1c2IxIGxpYmd1ZGV2IgotUEFDS0FHRUNPTkZJR1t2b2FhY2VuY10gICAgICAgID0gIi0tZW5hYmxlLXZvYWFjZW5jLC0tZGlzYWJsZS12b2FhY2VuYyx2by1hYWNlbmMiCi1QQUNLQUdFQ09ORklHW3ZvYW1yd2JlbmNdICAgICAgPSAiLS1lbmFibGUtdm9hbXJ3YmVuYywtLWRpc2FibGUtdm9hbXJ3YmVuYyx2by1hbXJ3YmVuYyIKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItLWVuYWJsZS12dWxrYW4sLS1kaXNhYmxlLXZ1bGthbix2dWxrYW4iCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbd2VicF0gICAgICAgICAgICA9ICItLWVuYWJsZS13ZWJwLC0tZGlzYWJsZS13ZWJwLGxpYndlYnAiCi0KLSMgdGhlc2UgcGx1Z2lucyBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbiBPRS1jb3JlIG9yIG1ldGEtb3BlbmVtYmVkZGVkOgotIyAgIG9wZW5uaTIgd2lua3MgZGlyZWN0M2QgZGlyZWN0c291bmQgd2luc2NyZWVuY2FwIGFjbSBhcHBsZV9tZWRpYSBpcWEKLSMgICBhbmRyb2lkX21lZGlhIGF2YyBiczJiIGNocm9tYXByaW50IGRhYWxhIGR0cyBmZGthYWMgZ21lIGdzbSBrYXRlIGxhZHNwYSBsaWJkZTI2NQotIyAgIGx2MiBtcGVnMmVuYyBtcGxleCBtc2RrIG11c2VwYWNrIG52ZW5jIG9mYSBvcGVuaDI2NCBvcGVuc2xlcyBzb3VuZHRvdWNoIHNwYW5kc3AKLSMgICBzcGMgdGVsZXRleHRkZWMgdGlueWFsc2EgdmRwYXUgd2FzYXBpIHgyNjUgemJhciB3ZWJydGNkc3AKLQotIyBxdDUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgYmVjYXVzZSBpdCBpcyBub3QgcHJlc2VudCBpbiBPRSBjb3JlLCBhbmQgcmVxdWlyZXMgbW9yZSB3b3JrIHRoYW4KLSMganVzdCBhZGRpbmcgYSBwYWNrYWdlY29uZmlnIChpdCByZXF1aXJlcyBhY2Nlc3MgdG8gbW9jLCB1aWMsIHJjYywgYW5kIHFtYWtlIHBhdGhzKS4KLSMgVGhpcyBpcyBiZXR0ZXIgZG9uZSBpbiBhIHNlcGFyYXRlIHF0NSBsYXllciAod2hpY2ggdGhlbiBzaG91bGQgYWRkIGEgInF0NSIgcGFja2FnZWNvbmZpZwotIyBpbiBhIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBiYmFwcGVuZCkuCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWVuYWJsZS1kZWNrbGluayBcCi0gICAgLS1lbmFibGUtZHZiIFwKLSAgICAtLWVuYWJsZS1mYmRldiBcCi0gICAgLS1lbmFibGUtbmV0c2ltIFwKLSAgICAtLWVuYWJsZS1zaG0gXAotICAgIC0tZW5hYmxlLXZjZCBcCi0gICAgLS1kaXNhYmxlLWFjbSBcCi0gICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hcHBsZV9tZWRpYSBcCi0gICAgLS1kaXNhYmxlLWF2YyBcCi0gICAgLS1kaXNhYmxlLWJzMmIgXAotICAgIC0tZGlzYWJsZS1jaHJvbWFwcmludCBcCi0gICAgLS1kaXNhYmxlLWNvY29hIFwKLSAgICAtLWRpc2FibGUtZGFhbGEgXAotICAgIC0tZGlzYWJsZS1kaXJlY3QzZCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKLSAgICAtLWRpc2FibGUtZHRzIFwKLSAgICAtLWRpc2FibGUtZmRrX2FhYyBcCi0gICAgLS1kaXNhYmxlLWdtZSBcCi0gICAgLS1kaXNhYmxlLWdzbSBcCi0gICAgLS1kaXNhYmxlLWlxYSBcCi0gICAgLS1kaXNhYmxlLWthdGUgXAotICAgIC0tZGlzYWJsZS1sYWRzcGEgXAotICAgIC0tZGlzYWJsZS1saWJkZTI2NSBcCi0gICAgLS1kaXNhYmxlLWx2MiBcCi0gICAgLS1kaXNhYmxlLW1wZWcyZW5jIFwKLSAgICAtLWRpc2FibGUtbXBsZXggXAotICAgIC0tZGlzYWJsZS1tc2RrIFwKLSAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAotICAgIC0tZGlzYWJsZS1udmVuYyBcCi0gICAgLS1kaXNhYmxlLW9mYSBcCi0gICAgLS1kaXNhYmxlLW9wZW5leHIgXAotICAgIC0tZGlzYWJsZS1vcGVuaDI2NCBcCi0gICAgLS1kaXNhYmxlLW9wZW5uaTIgXAotICAgIC0tZGlzYWJsZS1vcGVuc2xlcyBcCi0gICAgLS1kaXNhYmxlLXF0IFwKLSAgICAtLWRpc2FibGUtc291bmR0b3VjaCBcCi0gICAgLS1kaXNhYmxlLXNwYW5kc3AgXAotICAgIC0tZGlzYWJsZS1zcGMgXAotICAgIC0tZGlzYWJsZS10ZWxldGV4dGRlYyBcCi0gICAgLS1kaXNhYmxlLXRpbnlhbHNhIFwKLSAgICAtLWRpc2FibGUtdmRwYXUgXAotICAgIC0tZGlzYWJsZS13YXNhcGkgXAotICAgIC0tZGlzYWJsZS13ZWJydGNkc3AgXAotICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCi0gICAgLS1kaXNhYmxlLXdpbmtzIFwKLSAgICAtLWRpc2FibGUtd2luc2NyZWVuY2FwIFwKLSAgICAtLWRpc2FibGUteDI2NSBcCi0gICAgLS1kaXNhYmxlLXpiYXIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS1kaXNhYmxlLXlhZGlmIiwgIiIsIGQpfSBcCi0iCi0KLWV4cG9ydCBPUEVOQ1ZfUFJFRklYID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vaW5jbHVkZS9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIKLUZJTEVTXyR7UE59LWZyZWV2ZXJiICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0ke0xJQlZ9L3ByZXNldHMvR3N0RnJlZXZlcmIucHJzIgotRklMRVNfJHtQTn0tb3BlbmN2ICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhZC8ke0xJQlZ9L29wZW5jdioiCi1GSUxFU18ke1BOfS12b2FtcndiZW5jICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0ke0xJQlZ9L3ByZXNldHMvR3N0Vm9BbXJ3YkVuYy5wcnMiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy8ubGlicyIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCmluZGV4IDhkOTlkYzYuLjA1Yjk5MWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaApAQCAtMSw0OCArMSwxNyBAQAotRnJvbSA3NTkyZTc5M2IzOTA2MzU1ZDc2Y2E5YTU5ZjhmZWEyNzQ5ZWEyYTRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IE9jdCAyMDE1IDE0OjM2OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBkb24ndCBoYXJkY29kZSBsaWJ0b29sIG5hbWUgd2hlbiBydW5uaW5nCitGcm9tIDdkOGU4YjhiY2NlMzRkMDFmYzdhZDcyODViNGViMTdhZDg5NDkzOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAxMTowNjozOSArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZG9uJ3QgaGFyZGNvZGUgbGlidG9vbCBuYW1lIHdoZW4gcnVubmluZyAKICBpbnRyb3NwZWN0aW9uIHRvb2xzCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0lJSBvcmlnaW5hbCBwYXRjaDogMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCi0KIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgogLS0tCi0gZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gfCAyICstCi0gZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAyICstCi0gZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSAgfCAyICstCi0gZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSAgICAgfCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSB8IDIgKy0KKyBnc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotaW5kZXggZTUwZDA3Ny4uNjIzZjA5MiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM3LDcgKzM3LDcgQEAgR3N0QmFkQWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RiYWRhbGxvY2EKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGJhZGFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0tCQktLWxpYnRvb2w9IiQodG9wX2J1aWxkZGlyKS9saWJ0b29sIiBcCi0rCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWJhZGFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1vdXRwdXQgJEAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotaW5kZXggMmFlNDc3My4uZGZhN2E3ZCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1AQCAtMTc4LDcgKzE3OCw3IEBAIEdzdEdMLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ACi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0tCQktLWxpYnRvb2w9IiQodG9wX2J1aWxkZGlyKS9saWJ0b29sIiBcCi0rCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCiBpbmRleCAxZjhlYTMwLi40Yjk4ZWY2IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQpAQCAtNTcsMTAgKzI2LDEwIEBACiAgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KLWluZGV4IGFlZWEzMmUuLjkyOWQ5Y2MgMTAwNjQ0CitpbmRleCBmMjY0ZTMzLi45OTM0YTRkIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQotQEAgLTc5LDcgKzc5LDcgQEAgR3N0TXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdG1wZWd0cy1AR1NUX0FQSV8KK0BAIC04Miw3ICs4Miw3IEBAIEdzdE1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RtcGVndHMtQEdTVF9BUElfCiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCS0tbGlicmFyeT1saWJnc3RtcGVndHMtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC03MCw1ICszOSw1IEBACiAgCQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAgXAogLS0gCi0yLjQuMAorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjM1YTU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNTYyMmNhM2I2MTYwM2RjMzE2YTBmMWZiZWRlM2Y5YWEzNTNhNWU0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBNYXkgMjAxNyAxNjo0NzoxMiArMDMwMAotU3ViamVjdDogW1BBVENIXSBnc3RyZWFtZXItZ2wucGMuaW46IGRvbid0IGFwcGVuZCBHTF9DRkxBR1MgdG8gQ0ZMQUdTCi0KLURlcGVuZGVuY2llcycgaW5jbHVkZSBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIGFkZGVkIGluIHRoaXMgd2F5OwotaXQgY2F1c2VzIHByb2JsZW1zIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGluIHN5c3Jvb3QgZW52aXJvbm1lbnRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotaW5kZXggOGU3YTMwMy4uZDE2N2JlMSAxMDA2NDQKLS0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLSsrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLUBAIC0xMyw0ICsxMyw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAotIFJlcXVpcmVzOiBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKLSAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ACi0tQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUkke2xpYmRpcn0vZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUgQEdMX0NGTEFHU0AKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FhYTYyZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAxNTIzYWI0NjJjMWJmMTkwNTU5NjBjZWQyNTVmNDg3MmI2Y2Y5ZjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNSBKdWwgMjAxNyAxMTowMDo0MiArMDMwMAotU3ViamVjdDogW1BBVENIIDEvMl0gdmtkaXNwbGF5OiBVc2UgaWZkZWYgZm9yIHBsYXRmb3JtIHNwZWNpZmljIGRlZmluZXMKLQotVktfS0hSXypfU1VSRkFDRV9FWFRFTlNJT05fTkFNRSBhcmUgb25seSBhdmFpbGFibGUgd2hlbiBjb3JyZXNwb25kaW5nCi1XU0kgaXMgZW5hYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NTM5XQotLS0tCi0gZXh0L3Z1bGthbi92a2Rpc3BsYXkuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMgYi9leHQvdnVsa2FuL3ZrZGlzcGxheS5jCi1pbmRleCA1NTAxMzRjZDguLmFkZTVkNDU4MyAxMDA2NDQKLS0tLSBhL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKLSsrKyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKLUBAIC00NDgsMTEgKzQ0OCwxNSBAQCBnc3RfdnVsa2FuX2Rpc3BsYXlfdHlwZV90b19leHRlbnNpb25fc3RyaW5nIChHc3RWdWxrYW5EaXNwbGF5VHlwZSB0eXBlKQotICAgaWYgKHR5cGUgPT0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0rI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCi0gICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQikKLSAgICAgcmV0dXJuIFZLX0tIUl9YQ0JfU1VSRkFDRV9FWFRFTlNJT05fTkFNRTsKLSsjZW5kaWYKLSAKLSsjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19XQVlMQU5ECi0gICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1dBWUxBTkQpCi0gICAgIHJldHVybiBWS19LSFJfV0FZTEFORF9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOwotKyNlbmRpZgotIAotICAgcmV0dXJuIE5VTEw7Ci0gfQotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZjE0NWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gYzIzZTFkYzIyZGViNDk1NTYxY2ZmYjg3N2VkYjI3NDZiNzQwYTFmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTE6MDc6MDUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIHZ1bGthbjogVXNlIHRoZSBnZW5lcmF0ZWQgdmVyc2lvbiBvZiB2a2NvbmZpZy5oCi0KLUJ1aWxkIGZhaWxzIGluIGV4dC92dWxrYW4veGNiIGFuZCBleHQvdnVsa2FuL3dheWxhbmQgd2hlbjoKLSogYnVpbGRpbmcgZnJvbSB0YXJiYWxsCi0qIGJ1aWxkaW5nIG91dC1vZi10cmVlCi0qIE9ubHkgb25lIFdTSSBpbnRlZ3JhdGlvbiAoeGNiIG9yIHdheWxhbmQpIGlzIGVuYWJsZWQgYnkgY29uZmlndXJlLmFjCi1UaGlzIGlzIGJlY2F1c2Ugdmtjb25maWcuaCBmcm9tIHNvdXJjZSBkaXJlY3RvcnkgZ2V0cyB1c2VkIGluc3RlYWQKLW9mIHRoZSBnZW5lcmF0ZWQgb25lLgotCi1BZGQgdGhlIGNvcnJlY3QgYnVpbGQgZGlyZWN0b3J5IHRvICItSSIuIFVzZSBhbmdsZSBicmFja2V0Ci1pbmNsdWRlIGluIHZrYXBpLmggc28gdGhhdCBpdCBhY3R1YWxseSBsb29rcyBpbiB0aGUgaW5jbHVkZSBzZWFyY2gKLXBhdGggaW5zdGVhZCBvZiBkZWZhdWx0aW5nIHRvIHRoZSBzYW1lIChzb3VyY2UgdHJlZSkgZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ1MzldCi0tLS0KLSBleHQvdnVsa2FuL3ZrYXBpLmggICAgICAgICAgICAgfCAyICstCi0gZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtIHwgMSArCi0gZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0gICAgIHwgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmthcGkuaCBiL2V4dC92dWxrYW4vdmthcGkuaAotaW5kZXggZTljMjNhYTkyLi5hMzdjMjlkMGYgMTAwNjQ0Ci0tLS0gYS9leHQvdnVsa2FuL3ZrYXBpLmgKLSsrKyBiL2V4dC92dWxrYW4vdmthcGkuaAotQEAgLTIzLDcgKzIzLDcgQEAKLSAKLSAjZGVmaW5lIFZLX1BST1RPVFlQRVMKLSAKLS0jaW5jbHVkZSAidmtjb25maWcuaCIKLSsjaW5jbHVkZSA8dmtjb25maWcuaD4KLSAjaW5jbHVkZSAidmtfZndkLmgiCi0gI2luY2x1ZGUgInZrbWFjcm9zLmgiCi0gCi1kaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtIGIvZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtCi1pbmRleCBmOTJkODVlMmMuLjEwY2ZiNzBlNiAxMDA2NDQKLS0tLSBhL2V4dC92dWxrYW4vd2F5bGFuZC9NYWtlZmlsZS5hbQotKysrIGIvZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtCi1AQCAtMTQsNiArMTQsNyBAQCBub2luc3RfSEVBREVSUyA9IFwKLSAKLSBsaWJnc3R2dWxrYW5fd2F5bGFuZF9sYV9DRkxBR1MgPSBcCi0gCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0rCS1JJCh0b3BfYnVpbGRkaXIpL2V4dC92dWxrYW4gXAotIAktSSQodG9wX3NyY2RpcikvZXh0L3Z1bGthbiBcCi0gCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLSAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAotZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtIGIvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0KLWluZGV4IDdkZWJjZmY5ZS4uYjUxMDM1NTFiIDEwMDY0NAotLS0tIGEvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0KLSsrKyBiL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtCi1AQCAtMTQsNiArMTQsNyBAQCBub2luc3RfSEVBREVSUyA9IFwKLSAKLSBsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUyA9IFwKLSAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSsJLUkkKHRvcF9idWlsZGRpcikvZXh0L3Z1bGthbiBcCi0gCS1JJCh0b3Bfc3JjZGlyKS9leHQvdnVsa2FuIFwKLSAJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM4MmIxNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotQWRkIC1sdmNob3N0aWYgdG8gbGluayB3aGVuIHVzaW5nIC1sRUdMIG9uIHJwaQotCi1UaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgbGliRUdMIGZyb20gdXNlcmxhbmQgdXNlcyBzeWJvbHMKLWZyb20gdGhpcyBsaWJyYXJ5LgotCi1saWIvbGliRUdMLnNvLjEuMC4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxOiAwMDAwMDAwMCAgICAgMCBGVU5DICAgIEdMT0JBTCBERUZBVUxUICBVTkQgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLSAgMTU1MjogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0KLVRoZXNlIHN5bWJvbHMgYXJlIHByb3ZpZGVkIGJ5IGxpYnZjaG9zdGlmIGFzIHNlZW4gYmVsb3cKLQotbGliL2xpYnZjaG9zdGlmLnNvCi0gICAyNTI6IDAwMDBiMTYxICAgMTkyIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgICAgOSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotICAgODA5OiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLQotV2l0aCB0aGlzIGV4cGxpY2l0IGxpbmssIHBsdWdpbnMgZmFpbCBkdXJpbmcgcnVudGltZQotCi0oZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b214LnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKLShnc3QtcGx1Z2luLXNjYW5uZXI6NTcxKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IEZhaWxlZCB0byBsb2FkIHBsdWdpbiAnL3Vzci9saWIvZ3N0cmVhbWVyLTEuMC9saWJnc3RvcGVuZ2wuc28nOiBFcnJvciByZWxvY2F0aW5nIC91c3IvbGliL2xpYmdzdGdsLTEuMC5zby4wOiB2Y19kaXNwbWFueF9lbGVtZW50X2FkZDogc3ltYm9sIG5vdCBmb3VuZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMC40L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC40L2NvbmZpZ3VyZS5hYwotQEAgLTc4NSw3ICs3ODUsNyBAQCBjYXNlICRob3N0IGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMPXllcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0dMRVMyPXllcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTF9SUEk9eWVzCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNvcyAtbHZjaGlxX2FybSIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y2hvc3RpZiAtbHZjb3MgLWx2Y2hpcV9hcm0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9DRkxBR1M9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfREVGSU5FKFVTRV9FR0xfUlBJLCBbMV0sIFtVc2UgUlBpIHBsYXRmb3JtXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjN2ZmYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2NGJmMTZjZjE1ZWRhYWIxYzBlMDJjOGRlZTcxNzBkMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzc4NTdiZTE2Njg2ZDVjMWJhNmUzNGJkMzM4NjY0ZDNkNDU5OWQzMjcxNGE4ZWNhNWM4YTQxYTEwMWUyZDA4IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgotCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NTQ2YjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNC4yLmJiCkBAIC0wLDAgKzEsMTQ4IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1tYXliZS11bmluaXRpYWxpemVkLXdhcm5pbmdzLXdoZW4tY29tcGlsaW5nLXdpdGgtT3MucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbHMtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LWV0Yy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNzY4MjZjNTY0YmVkNTUxMTk4MmQ3ZmI2MTM3ZDk4NzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzRmYWI3ZGE3MDk5NDQ2NWE2NDQ2ODMzMGIyMTY4YTRhMGVkOTBhN2RlN2U0YzQ5OWI2ZDEyN2M2YzFiMWVhZiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzNhNTg1NWE4MTE5ZGViMDE3ZjVmMTNjZjMyNzA5NWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTIxNjgyZTRlOGZlYTUyNDEzZmQyNmM2MGFjYjkwN2U1ICIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBqcGVnIgorCitpbmhlcml0IGdldHRleHQgYmx1ZXRvb3RoCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsJywgJycsIGQpfSBcCisgICAgYnoyIGN1cmwgZGFzaCBkdGxzIGhscyByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSB0dG1sIHV2Y2gyNjQgd2VicCBcCisiCisKKyMgdGhlIGdsIHBhY2thZ2Vjb25maWcgZW5hYmxlcyBPcGVuR0wgZWxlbWVudHMgdGhhdCBoYXZlbid0IGJlZW4gcG9ydGVkCisjIHRvIC1iYXNlIHlldC4gVGhleSBkZXBlbmQgb24gdGhlIGdzdGdsIGxpYnJhcnkgaW4gLWJhc2UsIHNvIHdlIGRvCisjIG5vdCBhZGQgR0wgZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHRoZXNlIGFyZSB0YWtlbiBjYXJlIG9mIGluIC1iYXNlLgorCitQQUNLQUdFQ09ORklHW2Fzc3JlbmRlcl0gICAgICAgPSAiLS1lbmFibGUtYXNzcmVuZGVyLC0tZGlzYWJsZS1hc3NyZW5kZXIsbGliYXNzIgorUEFDS0FHRUNPTkZJR1tibHVlel0gICAgICAgICAgID0gIi0tZW5hYmxlLWJsdWV6LC0tZGlzYWJsZS1ibHVleiwke0JMVUVafSIKK1BBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1iejIsLS1kaXNhYmxlLWJ6MixiemlwMiIKK1BBQ0tBR0VDT05GSUdbY3VybF0gICAgICAgICAgICA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCitQQUNLQUdFQ09ORklHW2Rhc2hdICAgICAgICAgICAgPSAiLS1lbmFibGUtZGFzaCwtLWRpc2FibGUtZGFzaCxsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tkYzEzOTRdICAgICAgICAgID0gIi0tZW5hYmxlLWRjMTM5NCwtLWRpc2FibGUtZGMxMzk0LGxpYmRjMTM5NCIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgICAgICA9ICItLWVuYWJsZS1kaXJlY3RmYiwtLWRpc2FibGUtZGlyZWN0ZmIsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2R0bHNdICAgICAgICAgICAgPSAiLS1lbmFibGUtZHRscywtLWRpc2FibGUtZHRscyxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWMsLS1kaXNhYmxlLWZhYWMsZmFhYyIKK1BBQ0tBR0VDT05GSUdbZmFhZF0gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFkLC0tZGlzYWJsZS1mYWFkLGZhYWQyIgorUEFDS0FHRUNPTkZJR1tmbGl0ZV0gICAgICAgICAgID0gIi0tZW5hYmxlLWZsaXRlLC0tZGlzYWJsZS1mbGl0ZSxmbGl0ZS1hbHNhIgorUEFDS0FHRUNPTkZJR1tmbHVpZHN5bnRoXSAgICAgID0gIi0tZW5hYmxlLWZsdWlkc3ludGgsLS1kaXNhYmxlLWZsdWlkc3ludGgsZmx1aWRzeW50aCIKK1BBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1obHMgLS13aXRoLWhscy1jcnlwdG89bmV0dGxlLC0tZGlzYWJsZS1obHMsbmV0dGxlIgorUEFDS0FHRUNPTkZJR1tnbF0gICAgICAgICAgICAgID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCwiCitQQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLS1lbmFibGUta21zLC0tZGlzYWJsZS1rbXMsbGliZHJtIgorUEFDS0FHRUNPTkZJR1tsaWJkZTI2NV0gICAgICAgID0gIi0tZW5hYmxlLWxpYmRlMjY1LC0tZGlzYWJsZS1saWJkZTI2NSxsaWJkZTI2NSIKK1BBQ0tBR0VDT05GSUdbbGlibW1zXSAgICAgICAgICA9ICItLWVuYWJsZS1saWJtbXMsLS1kaXNhYmxlLWxpYm1tcyxsaWJtbXMiCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdICAgICAgICAgPSAiLS1lbmFibGUtbGlic3NoMiwtLWRpc2FibGUtbGlic3NoMixsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1tsY21zMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWxjbXMyLC0tZGlzYWJsZS1sY21zMixsY21zIgorUEFDS0FHRUNPTkZJR1ttb2RwbHVnXSAgICAgICAgID0gIi0tZW5hYmxlLW1vZHBsdWcsLS1kaXNhYmxlLW1vZHBsdWcsbGlibW9kcGx1ZyIKK1BBQ0tBR0VDT05GSUdbbmVvbl0gICAgICAgICAgICA9ICItLWVuYWJsZS1uZW9uLC0tZGlzYWJsZS1uZW9uLG5lb24iCitQQUNLQUdFQ09ORklHW29wZW5hbF0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmFsLC0tZGlzYWJsZS1vcGVuYWwsb3BlbmFsLXNvZnQiCitQQUNLQUdFQ09ORklHW29wZW5jdl0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmN2LC0tZGlzYWJsZS1vcGVuY3Ysb3BlbmN2IgorUEFDS0FHRUNPTkZJR1tvcGVuaDI2NF0gICAgICAgID0gIi0tZW5hYmxlLW9wZW5oMjY0LC0tZGlzYWJsZS1vcGVuaDI2NCxvcGVuaDI2NCIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddICAgICAgICA9ICItLWVuYWJsZS1vcGVuanBlZywtLWRpc2FibGUtb3BlbmpwZWcsb3BlbmpwZWciCitQQUNLQUdFQ09ORklHW29wZW5tcHRdICAgICAgICAgPSAiLS1lbmFibGUtb3Blbm1wdCwtLWRpc2FibGUtb3Blbm1wdCxsaWJvcGVubXB0IgorIyB0aGUgb3B1cyBlbmNvZGVyL2RlY29kZXIgZWxlbWVudHMgYXJlIG5vdyBpbiB0aGUgLWJhc2UgcGFja2FnZSwKKyMgYnV0IHRoZSBvcHVzIHBhcnNlciByZW1haW5zIGluIC1iYWQKK1BBQ0tBR0VDT05GSUdbb3B1c3BhcnNlXSAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCitQQUNLQUdFQ09ORklHW3Jlc2luZHZkXSAgICAgICAgPSAiLS1lbmFibGUtcmVzaW5kdmQsLS1kaXNhYmxlLXJlc2luZHZkLGxpYmR2ZHJlYWQgbGliZHZkbmF2IgorUEFDS0FHRUNPTkZJR1tyc3ZnXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJzdmcsLS1kaXNhYmxlLXJzdmcsbGlicnN2ZyIKK1BBQ0tBR0VDT05GSUdbcnRtcF0gICAgICAgICAgICA9ICItLWVuYWJsZS1ydG1wLC0tZGlzYWJsZS1ydG1wLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLXNiYywtLWRpc2FibGUtc2JjLHNiYyIKK1BBQ0tBR0VDT05GSUdbc21vb3Roc3RyZWFtaW5nXSA9ICItLWVuYWJsZS1zbW9vdGhzdHJlYW1pbmcsLS1kaXNhYmxlLXNtb290aHN0cmVhbWluZyxsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tzbmRmaWxlXSAgICAgICAgID0gIi0tZW5hYmxlLXNuZGZpbGUsLS1kaXNhYmxlLXNuZGZpbGUsbGlic25kZmlsZTEiCitQQUNLQUdFQ09ORklHW3NydHBdICAgICAgICAgICAgPSAiLS1lbmFibGUtc3J0cCwtLWRpc2FibGUtc3J0cCxsaWJzcnRwIgorUEFDS0FHRUNPTkZJR1t0aW55YWxzYV0gICAgICAgID0gIi0tZW5hYmxlLXRpbnlhbHNhLC0tZGlzYWJsZS10aW55YWxzYSx0aW55YWxzYSIKK1BBQ0tBR0VDT05GSUdbdHRtbF0gICAgICAgICAgICA9ICItLWVuYWJsZS10dG1sLC0tZGlzYWJsZS10dG1sLGxpYnhtbDIgcGFuZ28gY2Fpcm8iCitQQUNLQUdFQ09ORklHW3V2Y2gyNjRdICAgICAgICAgPSAiLS1lbmFibGUtdXZjaDI2NCwtLWRpc2FibGUtdXZjaDI2NCxsaWJ1c2IxIGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1t2b2FhY2VuY10gICAgICAgID0gIi0tZW5hYmxlLXZvYWFjZW5jLC0tZGlzYWJsZS12b2FhY2VuYyx2by1hYWNlbmMiCitQQUNLQUdFQ09ORklHW3ZvYW1yd2JlbmNdICAgICAgPSAiLS1lbmFibGUtdm9hbXJ3YmVuYywtLWRpc2FibGUtdm9hbXJ3YmVuYyx2by1hbXJ3YmVuYyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItLWVuYWJsZS12dWxrYW4sLS1kaXNhYmxlLXZ1bGthbix2dWxrYW4iCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbd2VicF0gICAgICAgICAgICA9ICItLWVuYWJsZS13ZWJwLC0tZGlzYWJsZS13ZWJwLGxpYndlYnAiCitQQUNLQUdFQ09ORklHW3dlYnJ0Y10gICAgICAgICAgPSAiLS1lbmFibGUtd2VicnRjLC0tZGlzYWJsZS13ZWJydGMsbGlibmljZSIKK1BBQ0tBR0VDT05GSUdbd2VicnRjZHNwXSAgICAgICA9ICItLWVuYWJsZS13ZWJydGNkc3AsLS1kaXNhYmxlLXdlYnJ0Y2RzcCx3ZWJydGMtYXVkaW8tcHJvY2Vzc2luZyIKKworIyB0aGVzZSBwbHVnaW5zIGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6CisjICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgYWNtIGFwcGxlX21lZGlhIGlxYQorIyAgIGFuZHJvaWRfbWVkaWEgYXZjIGJzMmIgY2hyb21hcHJpbnQgZGFhbGEgZHRzIGZka2FhYyBnbWUgZ3NtIGthdGUgbGFkc3BhCisjICAgbHYyIG1wZWcyZW5jIG1wbGV4IG1zZGsgbXVzZXBhY2sgbnZlbmMgb2ZhIG9wZW5zbGVzIHNvdW5kdG91Y2gKKyMgICBzcGFuZHNwIHNwYyB0ZWxldGV4dGRlYyB2ZHBhdSB3YXNhcGkgeDI2NSB6YmFyCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLWVuYWJsZS1kZWNrbGluayBcCisgICAgLS1lbmFibGUtZHZiIFwKKyAgICAtLWVuYWJsZS1mYmRldiBcCisgICAgLS1lbmFibGUtaXBjcGlwZWxpbmUgXAorICAgIC0tZW5hYmxlLW5ldHNpbSBcCisgICAgLS1lbmFibGUtc2htIFwKKyAgICAtLWVuYWJsZS12Y2QgXAorICAgIC0tZGlzYWJsZS1hY20gXAorICAgIC0tZGlzYWJsZS1hbmRyb2lkX21lZGlhIFwKKyAgICAtLWRpc2FibGUtYW9tIFwKKyAgICAtLWRpc2FibGUtYXBwbGVfbWVkaWEgXAorICAgIC0tZGlzYWJsZS1hdmMgXAorICAgIC0tZGlzYWJsZS1iczJiIFwKKyAgICAtLWRpc2FibGUtY2hyb21hcHJpbnQgXAorICAgIC0tZGlzYWJsZS1kYWFsYSBcCisgICAgLS1kaXNhYmxlLWRpcmVjdDNkIFwKKyAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAorICAgIC0tZGlzYWJsZS1kdHMgXAorICAgIC0tZGlzYWJsZS1mZGtfYWFjIFwKKyAgICAtLWRpc2FibGUtZ21lIFwKKyAgICAtLWRpc2FibGUtZ3NtIFwKKyAgICAtLWRpc2FibGUtaXFhIFwKKyAgICAtLWRpc2FibGUta2F0ZSBcCisgICAgLS1kaXNhYmxlLWxhZHNwYSBcCisgICAgLS1kaXNhYmxlLWx2MiBcCisgICAgLS1kaXNhYmxlLW1wZWcyZW5jIFwKKyAgICAtLWRpc2FibGUtbXBsZXggXAorICAgIC0tZGlzYWJsZS1tc2RrIFwKKyAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAorICAgIC0tZGlzYWJsZS1udmVuYyBcCisgICAgLS1kaXNhYmxlLW9mYSBcCisgICAgLS1kaXNhYmxlLW9wZW5leHIgXAorICAgIC0tZGlzYWJsZS1vcGVubmkyIFwKKyAgICAtLWRpc2FibGUtb3BlbnNsZXMgXAorICAgIC0tZGlzYWJsZS1zb3VuZHRvdWNoIFwKKyAgICAtLWRpc2FibGUtc3BhbmRzcCBcCisgICAgLS1kaXNhYmxlLXNwYyBcCisgICAgLS1kaXNhYmxlLXNydCBcCisgICAgLS1kaXNhYmxlLXRlbGV0ZXh0ZGVjIFwKKyAgICAtLWRpc2FibGUtdmRwYXUgXAorICAgIC0tZGlzYWJsZS13YXNhcGkgXAorICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCisgICAgLS1kaXNhYmxlLXdpbmtzIFwKKyAgICAtLWRpc2FibGUtd2luc2NyZWVuY2FwIFwKKyAgICAtLWRpc2FibGUteDI2NSBcCisgICAgLS1kaXNhYmxlLXpiYXIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS1kaXNhYmxlLXlhZGlmIiwgIiIsIGQpfSBcCisiCisKK2V4cG9ydCBPUEVOQ1ZfUFJFRklYID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RGcmVldmVyYi5wcnMiCitGSUxFU18ke1BOfS1vcGVuY3YgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFkLyR7TElCVn0vb3BlbmN2KiIKK0ZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MTMwYzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1TUkNfVVJJX2FwcGVuZCA9ICJcCi0gICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaCBcCi0iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLQotREVQRU5EUyArPSAiaXNvLWNvZGVzIHV0aWwtbGludXggemxpYiIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLVBBQ0tBR0VTX0RZTkFNSUMgPSsgIl5saWJnc3QuKiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSB4MTEnLCBkKX0gXAotICAgIGdpby11bml4LTIuMCBvZ2cgcGFuZ28gdGhlb3JhIHZvcmJpcyBcCi0iCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4diIKLVgxMUVOQUJMRU9QVFMgPSAiLS1lbmFibGUteCAtLWVuYWJsZS14dmlkZW8gLS1lbmFibGUteHNobSIKLVgxMURJU0FCTEVPUFRTID0gIi0tZGlzYWJsZS14IC0tZGlzYWJsZS14dmlkZW8gLS1kaXNhYmxlLXhzaG0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgICA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tjZHBhcmFub2lhXSAgID0gIi0tZW5hYmxlLWNkcGFyYW5vaWEsLS1kaXNhYmxlLWNkcGFyYW5vaWEsY2RwYXJhbm9pYSIKLVBBQ0tBR0VDT05GSUdbZ2lvLXVuaXgtMi4wXSA9ICItLWVuYWJsZS1naW9fdW5peF8yXzAsLS1kaXNhYmxlLWdpb191bml4XzJfMCxnbGliLTIuMCIKLVBBQ0tBR0VDT05GSUdbaXZvcmJpc10gICAgICA9ICItLWVuYWJsZS1pdm9yYmlzLC0tZGlzYWJsZS1pdm9yYmlzLHRyZW1vciIKLVBBQ0tBR0VDT05GSUdbb2dnXSAgICAgICAgICA9ICItLWVuYWJsZS1vZ2csLS1kaXNhYmxlLW9nZyxsaWJvZ2ciCi1QQUNLQUdFQ09ORklHW29wdXNdICAgICAgICAgPSAiLS1lbmFibGUtb3B1cywtLWRpc2FibGUtb3B1cyxsaWJvcHVzIgotUEFDS0FHRUNPTkZJR1twYW5nb10gICAgICAgID0gIi0tZW5hYmxlLXBhbmdvLC0tZGlzYWJsZS1wYW5nbyxwYW5nbyIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSAgICAgICA9ICItLWVuYWJsZS10aGVvcmEsLS1kaXNhYmxlLXRoZW9yYSxsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW3Zpc3VhbF0gICAgICAgPSAiLS1lbmFibGUtbGlidmlzdWFsLC0tZGlzYWJsZS1saWJ2aXN1YWwsbGlidmlzdWFsIgotUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgID0gIi0tZW5hYmxlLXZvcmJpcywtLWRpc2FibGUtdm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWVuYWJsZS16bGliIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX3g4NiA9ICIgYWNfY3ZfaGVhZGVyX2VtbWludHJpbl9oPW5vIGFjX2N2X2hlYWRlcl94bW1pbnRyaW5faD1ubyIKLQotRklMRVNfJHtNTFBSRUZJWH1saWJnc3R0YWctMS4wICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhc2UvMS4wL2xpY2Vuc2UtdHJhbnNsYXRpb25zLmRpY3QiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ3N0LWxpYnMvZ3N0L3RhZy8ubGliczoke0J9L2dzdC1saWJzL2dzdC92aWRlby8ubGliczoke0J9L2dzdC1saWJzL2dzdC9hdWRpby8ubGliczoke0J9L2dzdC1saWJzL2dzdC9ydHAvLmxpYnMiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCmluZGV4IDA5NGJkYWMuLmJjYWRhMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCkBAIC0xLDE2ICsxLDE4IEBACi1Gcm9tIGYxZDk2NTIzNTFlNzc1NGM2MzAwMzEwNGVjZWI1MjZhZjQyNGM3ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDcwMjJiODczNTNhMzdiNzhiYWU3Y2YwMTA2YTRlNDc5MTNiYjVjOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgTm92IDIwMTUgMTY6NTM6MDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIE1ha2VmaWxlLmFtOiBkb24ndCBoYXJkY29kZSBsaWJ0b29sIG5hbWUgd2hlbiBydW5uaW5nCitEYXRlOiBUaHUsIDUgQXByIDIwMTggMTA6MTU6MDggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGRvbid0IGhhcmRjb2RlIGxpYnRvb2wgbmFtZSB3aGVuIHJ1bm5pbmcKICBpbnRyb3NwZWN0aW9uIHRvb2xzCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CisKIC0tLQogIGdzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIHwgMiArLQogIGdzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQogIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSAgICAgIHwgMiArLQotIGdzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQorIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSAgICAgICAgIHwgMiArLQogIGdzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtICAgIHwgMiArLQogIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQogIGdzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQpAQCAtMjEsMTAgKzIzLDEwIEBACiAgMTEgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi1pbmRleCA5MzYxYmY5Li5iYzdmNTNhIDEwMDY0NAoraW5kZXggMTk1N2QyOC4uMWVjYzk1MCAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM4LDcgKzM4LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKK0BAIC00Miw3ICs0Miw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCS0tbGlicmFyeT1saWJnc3RhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMzQsMTAgKzM2LDEwIEBACiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1vdXRwdXQgJEAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCi1pbmRleCA2ZDZkZThkLi5kY2MyZmUwIDEwMDY0NAoraW5kZXggNTJmNmFkMy4uNWJmZDYwNiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC01Myw3ICs1Myw3IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCitAQCAtNTYsNyArNTYsNyBAQCBHc3RBcHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1saWJyYXJ5PWxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTQ3LDEwICs0OSwxMCBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1hcHAtQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotaW5kZXggMjc1ZDIyMi4uMjM3NDE5NiAxMDA2NDQKK2luZGV4IDI5MjIyNDUuLjdmYjY1ZjIgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotQEAgLTExNiw3ICsxMTYsNyBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQorQEAgLTE4NCw3ICsxODQsNyBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTU5LDI0ICs2MSwyNCBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1pbmRleCAwOWIzZDY4Li5mNTQ1MzU0IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbQotQEAgLTY1LDcgKzY1LDcgQEAgR3N0RmZ0LUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCitpbmRleCA0ZTc3ZThjLi4zMjc2ZDdmIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK0BAIC0xOTMsNyArMTkzLDcgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotLQkJLS1saWJ0b29sPSIkKHRvcF9idWlsZGRpcikvbGlidG9vbCIgXAorIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAorIAkJLS1pbmNsdWRlPUdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKKy0JCS0tbGlidG9vbD0iJHtMSUJUT09MfSIgXAogKwkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1mZnQtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1vdXRwdXQgJEAgXAorIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAorIAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIGRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi1pbmRleCA2NGQ1ZWIwLi45MWRjMjE0IDEwMDY0NAoraW5kZXggYWU1MTk5My4uMzVhNmU0NCAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotQEAgLTk5LDcgKzk5LDcgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKK0BAIC0xMDMsNyArMTAzLDcgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKICAJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC04NiwxMCArODgsMTAgQEAKICAJCS0tcGtnIGdzdHJlYW1lci10YWctQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIGRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1pbmRleCA4M2Q4M2NiLi4zYmQ4ZmMwIDEwMDY0NAoraW5kZXggZmI1M2YwNi4uZTY2ZWY0ZiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotQEAgLTQ3LDcgKzQ3LDcgQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorQEAgLTQ5LDcgKzQ5LDcgQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQogICMJCS0taW5jbHVkZT1Hc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgIwkJLS1pbmNsdWRlPUdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgIwkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC05OSwxMCArMTAxLDEwIEBACiAgIwkJLS1wa2cgZ3N0cmVhbWVyLXRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgIwkJLS1wa2cgZ3N0cmVhbWVyLWF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIGRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotaW5kZXggZmRkMDFjMS4uZjU0NDVjMSAxMDA2NDQKK2luZGV4IGE2Zjk3MWQuLjc3ZWJlZWIgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi1AQCAtNjUsNyArNjUsNyBAQCBHc3RSdHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJTworQEAgLTY5LDcgKzY5LDcgQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU8KICAJCS0tbGlicmFyeT1saWJnc3RydHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xMTIsMTAgKzExNCwxMCBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1ydHAtQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IGVkZTU3MDYuLjliMGIyNTggMTAwNjQ0CitpbmRleCBjZWIwN2Y0Li5kYjlkMGZkIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1AQCAtNzIsNyArNzIsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUworQEAgLTc2LDcgKzc2LDcgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKICAJCS0taW5jbHVkZT1HaW8tMi4wIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xMjUsMTAgKzEyNywxMCBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnIGdzdHJlYW1lci1zZHAtQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1pbmRleCBhOTBmMzBiLi4wZTE0OWI4IDEwMDY0NAoraW5kZXggZTE5N2U5Yi4uNmUwNWNjNyAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLUBAIC0zMiw3ICszMiw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCitAQCAtMzQsNyArMzQsNyBAQCBHc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0c2RwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCiAgCQktLWxpYnJhcnk9bGliZ3N0c2RwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMTM4LDEwICsxNDAsMTAgQEAKICAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItc2RwLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tb3V0cHV0ICRAIFwKIGRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotaW5kZXggYzUzNGE0ZC4uY2FmYWZkMyAxMDA2NDQKK2luZGV4IDAyNDdjMzMuLmM4NjUxNWIgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1AQCAtNDUsNyArNDUsNyBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTworQEAgLTY2LDcgKzY2LDcgQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU8KICAJCS0tbGlicmFyeT1saWJnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xNTEsMTAgKzE1MywxMCBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci10YWctQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotaW5kZXggNWQzMWZhMS4uYWM2NGViMyAxMDA2NDQKK2luZGV4IDlmYzFjY2YuLjBmODQ1NWYgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTExNiw3ICsxMTYsNyBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQorQEAgLTEyNCw3ICsxMjQsNyBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQogIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMTYzLDYgKzE2NSwzIEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MWRjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNjFhNjcyZTc5YzhjYjFhZWVlZGE0Yzk2ODk5N2M1NzdhYzczYThmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMiBNYXkgMjAxNyAxNjo0NzoxMiArMDMwMAorU3ViamVjdDogW1BBVENIXSBnc3RyZWFtZXItZ2wucGMuaW46IGRvbid0IGFwcGVuZCBHTF9DRkxBR1MgdG8gQ0ZMQUdTCisKK0RlcGVuZGVuY2llcycgaW5jbHVkZSBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIGFkZGVkIGluIHRoaXMgd2F5OworaXQgY2F1c2VzIHByb2JsZW1zIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGluIHN5c3Jvb3QgZW52aXJvbm1lbnRzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgoraW5kZXggZGM2NzJhOS4uOGMyOTBiYSAxMDA2NDQKKy0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KKysrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KK0BAIC0xMyw0ICsxMyw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAorIFJlcXVpcmVzOiBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACisgCisgTGliczogLUwke2xpYmRpcn0gLWxnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAorLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlIEBHTF9DRkxBR1NACisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUkke2xpYmRpcn0vZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaAppbmRleCA2NjE2ZTJjLi4yZTExOTBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaApAQCAtMSwxNiArMSwxOCBAQAotRnJvbSA5OTBiNjUzYzdiNmRlMTkzN2VjNzU5MDE5OTgyZDZjNWYxNTc3MGY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NjAxZmMwY2Q2NzUxYTFhZmZkYzg3MTcyMTdiOTU5MzFkYjMxZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IE9jdCAyMDE1IDE2OjM4OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBNYWtlZmlsZS5hbTogcHJlZml4IGNhbGxzIHRvIHBrZy1jb25maWcgd2l0aAorRGF0ZTogVGh1LCA1IEFwciAyMDE4IDEwOjI2OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBwcmVmaXggY2FsbHMgdG8gcGtnLWNvbmZpZyB3aXRoCiAgUEtHX0NPTkZJR19TWVNST09UX0RJUgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorCiAtLS0KICBnc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSB8ICA0ICsrLS0KICBnc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtICAgICAgICB8ICA0ICsrLS0KICBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0gICAgICAgIHwgIDQgKystLQorIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSAgICAgICAgIHwgIDggKysrKy0tLS0KICBnc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbSAgICB8IDEyICsrKysrKy0tLS0tLQogIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtICAgICAgIHwgIDggKysrKy0tLS0KICBnc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtICAgICAgICB8ICA4ICsrKystLS0tCkBAIC0xOCwxMyArMjAsMTMgQEAKICBnc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtICAgICAgICB8ICA0ICsrLS0KICBnc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtICAgICAgICB8ICA4ICsrKystLS0tCiAgZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtICAgICAgfCAgOCArKysrLS0tLQotIDExIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQorIDExIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQogCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLUBAIC0zNiw3ICszNiw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKEkKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCitpbmRleCAxZWNjOTUwLi5kNjQxN2FjIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCitAQCAtMzksNyArMzksNyBAQCBHc3RBbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFsbG9jYXRvcnMtQAogIAkJLS1jLWluY2x1ZGUgImdzdC9hbGxvY2F0b3JzL2FsbG9jYXRvcnMuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTMzLDcgKzM1LDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCi1AQCAtNjAsNyArNjAsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CitAQCAtNjMsNyArNjMsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTQyLDExICs0NCwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCi1AQCAtNDgsOCArNDgsOCBAQCBHc3RBcHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KK2luZGV4IDViZmQ2MDYuLjY0NDE2NzQgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCitAQCAtNTEsOCArNTEsOCBAQCBHc3RBcHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1jLWluY2x1ZGUgImdzdC9hcHAvYXBwLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC01NywxMSArNTksMTEgQEAKICAJCS0tbGlicmFyeT1saWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLUBAIC0xNjcsMTIgKzE2NywxMiBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCitpbmRleCA3ZmI2NWYyLi41Mzc5Zjc5IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KK0BAIC0xNzQsMTIgKzE3NCwxMiBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKICAJCS0tYy1pbmNsdWRlICJnc3QvYXVkaW8vYXVkaW8uaCIgXApAQCAtNzgsNyArODAsNyBAQAogIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMjAxLDggKzIwMSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KK0BAIC0yMDgsOCArMjA4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKQEAgLTg5LDMzICs5MSwzOCBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbQotQEAgLTYzLDcgKzYzLDcgQEAgR3N0RmZ0LUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQotIAkJLS1jLWluY2x1ZGUgImdzdC9mZnQvZmZ0LmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCitpbmRleCAzMjc2ZDdmLi4wY2RmZTI2IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK0BAIC0xODYsOSArMTg2LDkgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKKyAJCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKyAJCSQoR0xfQ0ZMQUdTKSBcCisgCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAtCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RmZnQtQEdTVF9BUElfVkVSU0lPTkAubGEgXAorKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisgCQktLWxpYnJhcnk9bGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC04Nyw3ICs4Nyw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAorIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAorQEAgLTIxOCw4ICsyMTgsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCisgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAtCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCiArCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotQEAgLTg1LDE0ICs4NSwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRSCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQoraW5kZXggMzVhNmU0NC4uNDlkNjg5NCAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorQEAgLTg4LDE0ICs4OCwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAogIAkJLS1jLWluY2x1ZGUgImdzdC9wYnV0aWxzL3BidXRpbHMuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTEzNCw3ICsxNDEsNyBAQAogIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAogIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLUBAIC0xMjUsOCArMTI1LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorQEAgLTEyOCw4ICsxMjgsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTE0NSwxMSArMTUyLDExIEBACiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAogIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAogIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDIsOCArNDIsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCitpbmRleCBlNjZlZjRmLi5jOGM1ODhhIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCitAQCAtNDMsOCArNDMsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCiAgIwkJLS1jLWluY2x1ZGUgImdzdC9yaWZmL3JpZmYuaCIgXAogICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi90YWcgXAogICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi9hdWRpbyBcCkBAIC0xNjAsNyArMTY3LDcgQEAKICAjCQktLWxpYnJhcnk9bGliZ3N0cmlmZi1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgIwkJLS1pbmNsdWRlPUdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAjCQktLWluY2x1ZGU9R3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC03NCw4ICs3NCw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUworQEAgLTc1LDggKzc1LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQogICMJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCiAgIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3RhZyBcCiAgIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKQEAgLTE3MSwxMSArMTc4LDExIEBACiAgIwkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgIwogICNDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02MSw4ICs2MSw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQoraW5kZXggNzdlYmVlYi4uOWFlZTc4OCAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KK0BAIC02NCw4ICs2NCw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3J0cC9ydHAuaCIgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTE4Niw3ICsxOTMsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC04OSw4ICs4OSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KK0BAIC05Miw4ICs5Miw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTk3LDExICsyMDQsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC02OCw3ICs2OCw3IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1AKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCitpbmRleCBkYjlkMGZkLi43OTAyN2NiIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCitAQCAtNzEsNyArNzEsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUwogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi9zZHAgXApAQCAtMjEwLDcgKzIxNyw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R2lvLTIuMCBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC05OCw3ICs5OCw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KK0BAIC0xMDEsNyArMTAxLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTksMTEgKzIyNiwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotQEAgLTMwLDcgKzMwLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCitpbmRleCA2ZTA1Y2M3Li5jN2NmNTE0IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorQEAgLTMxLDcgKzMxLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU8KICAJCS0td2Fybi1hbGwgXAogIAkJLS1jLWluY2x1ZGUgImdzdC9zZHAvc2RwLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0yMzIsNyArMjM5LDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC01NCw3ICs1NCw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KK0BAIC01NSw3ICs1NSw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMjQxLDExICsyNDgsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotQEAgLTU5LDggKzU5LDggQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCitpbmRleCBjODY1MTViLi4zNjNlNmQyIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorQEAgLTYxLDggKzYxLDggQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU8KICAJCS0tYy1pbmNsdWRlICJnc3QvdGFnL3RhZy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjU2LDcgKzI2Myw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTg3LDggKzg3LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorQEAgLTg5LDggKzg5LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0yNjcsMTEgKzI3NCwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTExNiw4ICsxMTYsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCitpbmRleCAwZjg0NTVmLi44Yzk5NTVjIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KK0BAIC0xMTksOCArMTE5LDggQEAgR3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dmlkZW8tQEdTVF9BUElfVkUKICAJCS0tYy1pbmNsdWRlICJnc3QvdmlkZW8vdmlkZW8uaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTI4Miw3ICsyODksNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTE0NCw4ICsxNDQsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CitAQCAtMTQ3LDggKzE0Nyw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaAppbmRleCA5YjY2ZjdmLi45OGZmZGIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaApAQCAtMSwyMCArMSwyMSBAQAotRnJvbSAzYzJjMmQ1ZGQwOGFhMzBlZDBlOGFjZDg1NjZlYzk5NDEyYmI4MjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOTc2NWVmYjE2OTZlM2UyZTc5ZjI5NTVmNzU5YmUxOTlmZTM0ODgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI2IE9jdCAyMDE1IDE3OjI5OjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSByaWZmOiBhZGQgbWlzc2luZyBpbmNsdWRlIGRpcmVjdG9yaWVzIHdoZW4gY2FsbGluZworU3ViamVjdDogW1BBVENIXSByaWZmOiBhZGQgbWlzc2luZyBpbmNsdWRlIGRpcmVjdG9yaWVzIHdoZW4gY2FsbGluZwogIGludHJvc3BlY3Rpb24gc2Nhbm5lcgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLWluZGV4IDBhMTE1Y2MuLjUwNTdhNTggMTAwNjQ0CitpbmRleCBjOGM1ODhhLi5jMDk2NDUzIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtMzksNiArMzksOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCitAQCAtNDEsNiArNDEsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCiAgIwkJLS1zdHJpcC1wcmVmaXg9R3N0IFwKICAjCQktLXdhcm4tYWxsIFwKICAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCkBAIC0yMyw2ICsyNCwzIEBACiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3RhZyBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKICAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoCmluZGV4IDlmYmViZDUuLjllOTU1MjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYmU2MTYzY2ZhM2EyNTU0OTNmOWQ3NWJhZDk1NDFjYmZlMTcyM2ZlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTE4Yzk2YjI0ZDEwZjYxYjc0NTViNGNlZjNiYWI0OTA4NDlkMGQ3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1pbmdrZSBXYW5nIDxtaW5na2Uud2FuZ0BmcmVlc2NhbGUuY29tPgogRGF0ZTogVGh1LCAxOSBNYXIgMjAxNSAxNDoxNzoxMCArMDgwMAotU3ViamVjdDogW1BBVENIIDMvNF0gc3NhcGFyc2U6IGVuaGFuY2UgU1NBIHRleHQgbGluZXMgcGFyc2luZy4KK1N1YmplY3Q6IFtQQVRDSF0gc3NhcGFyc2U6IGVuaGFuY2UgU1NBIHRleHQgbGluZXMgcGFyc2luZy4KIAogc29tZSBwYXJzZXIgd2lsbCBwYXNzIGluIHRoZSBvcmlnaW5hbCBzc2EgdGV4dCBsaW5lIHdoaWNoIHN0YXJ0cyB3aXRoICJEaWFsb2c6IgogYW5kIHRoZXJlJ3MgYXJlIG1heWJlIG11bHRpcGxlIERpYWxvZyBsaW5lcyBpbiBvbmUgaW5wdXQgYnVmZmVyLgpAQCAtMTAsMTMgKzEwLDE4IEBACiAKIFNpZ25lZC1vZmYtYnk6IE1pbmdrZSBXYW5nIDxtaW5na2Uud2FuZ0BmcmVlc2NhbGUuY29tPgogCistLS0KKyBnc3Qvc3VicGFyc2UvZ3N0c3NhcGFyc2UuYyB8IDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTM0IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgZ3N0L3N1YnBhcnNlL2dzdHNzYXBhcnNlLmMKKwogZGlmZiAtLWdpdCBhL2dzdC9zdWJwYXJzZS9nc3Rzc2FwYXJzZS5jIGIvZ3N0L3N1YnBhcnNlL2dzdHNzYXBhcnNlLmMKIG9sZCBtb2RlIDEwMDY0NAogbmV3IG1vZGUgMTAwNzU1Ci1pbmRleCAwNmVjZWY5Li4wYWI1ZGNlCitpbmRleCBjODQ5YzA4Li40Yjk2MzZjCiAtLS0gYS9nc3Qvc3VicGFyc2UvZ3N0c3NhcGFyc2UuYwogKysrIGIvZ3N0L3N1YnBhcnNlL2dzdHNzYXBhcnNlLmMKLUBAIC0yNjAsNiArMjYwLDcgQEAgZ3N0X3NzYV9wYXJzZV9yZW1vdmVfb3ZlcnJpZGVfY29kZXMgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0KQorQEAgLTI2Miw2ICsyNjIsNyBAQCBnc3Rfc3NhX3BhcnNlX3JlbW92ZV9vdmVycmlkZV9jb2RlcyAoR3N0U3NhUGFyc2UgKiBwYXJzZSwgZ2NoYXIgKiB0eHQpCiAgICogZ3N0X3NzYV9wYXJzZV9wdXNoX2xpbmU6CiAgICogQHBhcnNlOiBjYWxsZXIgZWxlbWVudAogICAqIEB0eHQ6IHRleHQgdG8gcHVzaApAQCAtMjQsNyArMjksNyBAQAogICAqIEBzdGFydDogdGltZXN0YW1wIGZvciB0aGUgYnVmZmVyCiAgICogQGR1cmF0aW9uOiBkdXJhdGlvbiBmb3IgdGhlIGJ1ZmZlcgogICAqCi1AQCAtMjY5LDI3ICsyNzAsMTMzIEBAIGdzdF9zc2FfcGFyc2VfcmVtb3ZlX292ZXJyaWRlX2NvZGVzIChHc3RTc2FQYXJzZSAqIHBhcnNlLCBnY2hhciAqIHR4dCkKK0BAIC0yNzEsMjcgKzI3MiwxMzMgQEAgZ3N0X3NzYV9wYXJzZV9yZW1vdmVfb3ZlcnJpZGVfY29kZXMgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0KQogICAqIFJldHVybnM6IHJlc3VsdCBvZiB0aGUgcHVzaCBvZiB0aGUgY3JlYXRlZCBidWZmZXIKICAgKi8KICBzdGF0aWMgR3N0Rmxvd1JldHVybgpAQCAtMTY5LDcgKzE3NCw3IEBACiAgICBHU1RfTE9HX09CSkVDVCAocGFyc2UsICJUZXh0IDogJXMiLCB0KTsKICAKICAgIGlmIChnc3Rfc3NhX3BhcnNlX3JlbW92ZV9vdmVycmlkZV9jb2RlcyAocGFyc2UsIHQpKSB7Ci1AQCAtMzA3LDEzICs0MTQsMjIgQEAgZ3N0X3NzYV9wYXJzZV9wdXNoX2xpbmUgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0LAorQEAgLTMwOSwxMyArNDE2LDIyIEBAIGdzdF9zc2FfcGFyc2VfcHVzaF9saW5lIChHc3RTc2FQYXJzZSAqIHBhcnNlLCBnY2hhciAqIHR4dCwKICAgIGdzdF9idWZmZXJfZmlsbCAoYnVmLCAwLCBlc2NhcGVkLCBsZW4gKyAxKTsKICAgIGdzdF9idWZmZXJfc2V0X3NpemUgKGJ1ZiwgbGVuKTsKICAgIGdfZnJlZSAoZXNjYXBlZCk7CkBAIC0xOTYsNyArMjAxLDcgQEAKICAKICAgIHJldCA9IGdzdF9wYWRfcHVzaCAocGFyc2UtPnNyY3BhZCwgYnVmKTsKICAKLUBAIC0zMzMsNiArNDQ5LDcgQEAgZ3N0X3NzYV9wYXJzZV9jaGFpbiAoR3N0UGFkICogc2lua3BhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpCitAQCAtMzM1LDYgKzQ1MSw3IEBAIGdzdF9zc2FfcGFyc2VfY2hhaW4gKEdzdFBhZCAqIHNpbmtwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQogICAgR3N0Q2xvY2tUaW1lIHRzOwogICAgZ2NoYXIgKnR4dDsKICAgIEdzdE1hcEluZm8gbWFwOwpAQCAtMjA0LDcgKzIwOSw3IEBACiAgCiAgICBpZiAoR19VTkxJS0VMWSAoIXBhcnNlLT5mcmFtZWQpKQogICAgICBnb3RvIG5vdF9mcmFtZWQ7Ci1AQCAtMzUwLDEzICs0NjcsMTQgQEAgZ3N0X3NzYV9wYXJzZV9jaGFpbiAoR3N0UGFkICogc2lua3BhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpCitAQCAtMzUyLDEzICs0NjksMTQgQEAgZ3N0X3NzYV9wYXJzZV9jaGFpbiAoR3N0UGFkICogc2lua3BhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpCiAgICAvKiBtYWtlIGRvdWJsZS1zdXJlIGl0J3MgMC10ZXJtaW5hdGVkIGFuZCBhbGwgKi8KICAgIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7CiAgICB0eHQgPSBnX3N0cm5kdXAgKChnY2hhciAqKSBtYXAuZGF0YSwgbWFwLnNpemUpOwpAQCAtMjIwLDYgKzIyNSwzIEBACiAgCiAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIEdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0cykpIHsKICAgICAgR3N0U2VnbWVudCBzZWdtZW50OwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKaW5kZXggNGFkZjYwNS4uYWFlYjYxMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKQEAgLTEsMjAgKzEsMjEgQEAKLUZyb20gNDMzMDkxNWQ4OGRjNGRkNDZlYjRjMjhkNzU2NDgyYjc2N2MyNzQ3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTNiNTg2ODQ5MWNmOTllZTc5NzE5MjM5NWRiZmViNjlkZjIzZWRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyNiBPY3QgMjAxNSAxNzozMDoxNCArMDIwMAotU3ViamVjdDogW1BBVENIIDQvNF0gcnRzcDogZHJvcCBpbmNvcnJlY3QgcmVmZXJlbmNlIHRvIGdzdHJlYW1lci1zZHAgaW4KK1N1YmplY3Q6IFtQQVRDSF0gcnRzcDogZHJvcCBpbmNvcnJlY3QgcmVmZXJlbmNlIHRvIGdzdHJlYW1lci1zZHAgaW4KICBNYWtlZmlsZS5hbQogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGdzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IDRmNmQ5ZjguLjBhZmEzNzAgMTAwNjQ0CitpbmRleCA3OTAyN2NiLi4yOTg3ZTIzIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1AQCAtNzUsNyArNzUsNiBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUworQEAgLTc5LDcgKzc5LDYgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAogIAkJLS1wa2cgZ2lvLTIuMCBcCiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMjIsNiArMjMsMyBAQAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1ydHNwLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCiAgCQktLW91dHB1dCAkQCBcCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MjRlMzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIGVkMDljOGZkMmM5YzJiNTM4NGI3MmNjNzBhZjM3MjhiZTY2OTRlNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaW5na2UgV2FuZyA8bWluZ2tlLndhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6IFRodSwgMTkgTWFyIDIwMTUgMTQ6MjA6MjYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIHN1YnBhcnNlOiBzZXQgbmVlZF9zZWdtZW50IGFmdGVyIHNpbmsgcGFkIHJlY2VpdmVkCi0gR1NUX0VWRU5UX1NFR01FTlQKLQotc3VicGFyc2Ugd29ya3MgaW4gcHVzaCBtb2RlLCBjaGFpbiBmdW5jaXRvbiB3aWxsIGJlIGNhbGxlZCBvbmNlCi11cCBzdHJlYW0gZWxlbWVudCBmaW5pc2hlZCB0aGUgc2Vla2luZyBhbmQgZmx1c2hpbmcuCi1pZiBzZXQgbmVlZF9zZWdtZW50IGZsYWcgaW4gc3JjIHBhZCBldmVudCBoYW5kbGVyLCB0aGUgc2VnbWVudAotZXZlbnQgd2lsbCBiZSBwdXNoZWQgZWFybGllciwgcmVzdWx0IGluIHRoZSBzdWJ0aXRsZSB0ZXh0IHdpbGwKLWJlIHNlbmQgb3V0IHRvIGRvd24gc3RyZWFtIGZyb20gdGhlIGJlZ2lubmluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc0OThdCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmdrZSBXYW5nIDxtaW5na2Uud2FuZ0BmcmVlc2NhbGUuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ3N0L3N1YnBhcnNlL2dzdHN1YnBhcnNlLmMgYi9nc3Qvc3VicGFyc2UvZ3N0c3VicGFyc2UuYwotb2xkIG1vZGUgMTAwNjQ0Ci1uZXcgbW9kZSAxMDA3NTUKLWluZGV4IGI1NjVlOTMuLjc3NDFjY2MKLS0tLSBhL2dzdC9zdWJwYXJzZS9nc3RzdWJwYXJzZS5jCi0rKysgYi9nc3Qvc3VicGFyc2UvZ3N0c3VicGFyc2UuYwotQEAgLTI2NiwyMiArMjY2LDIwIEBAIGdzdF9zdWJfcGFyc2Vfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKLSAgICAgICAgIGdvdG8gYmVhY2g7Ci0gICAgICAgfQotIAotKyAgICAgIC8qIEFwcGx5IHRoZSBzZWVrIHRvIG91ciBzZWdtZW50ICovCi0rICAgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJnNlbGYtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsCi0rICAgICAgICAgIHN0YXJ0X3R5cGUsIHN0YXJ0LCBzdG9wX3R5cGUsIHN0b3AsICZ1cGRhdGUpOwotKwotKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZWdtZW50IGFmdGVyIHNlZWs6ICUiIEdTVF9TRUdNRU5UX0ZPUk1BVCwKLSsgICAgICAgICAgJnNlbGYtPnNlZ21lbnQpOwotKwotICAgICAgIC8qIENvbnZlcnQgdGhhdCBzZWVrIHRvIGEgc2Vla2luZyBpbiBieXRlcyBhdCBwb3NpdGlvbiAwLAotICAgICAgICAgIEZJWE1FOiBjb3VsZCB1c2UgYW4gaW5kZXggKi8KLSAgICAgICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHNlbGYtPnNpbmtwYWQsCi0gICAgICAgICAgIGdzdF9ldmVudF9uZXdfc2VlayAocmF0ZSwgR1NUX0ZPUk1BVF9CWVRFUywgZmxhZ3MsCi0gICAgICAgICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMCwgR1NUX1NFRUtfVFlQRV9OT05FLCAwKSk7Ci0gCi0tICAgICAgaWYgKHJldCkgewotLSAgICAgICAgLyogQXBwbHkgdGhlIHNlZWsgdG8gb3VyIHNlZ21lbnQgKi8KLS0gICAgICAgIGdzdF9zZWdtZW50X2RvX3NlZWsgKCZzZWxmLT5zZWdtZW50LCByYXRlLCBmb3JtYXQsIGZsYWdzLAotLSAgICAgICAgICAgIHN0YXJ0X3R5cGUsIHN0YXJ0LCBzdG9wX3R5cGUsIHN0b3AsICZ1cGRhdGUpOwotLQotLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNlZ21lbnQgYWZ0ZXIgc2VlazogJSIgR1NUX1NFR01FTlRfRk9STUFULAotLSAgICAgICAgICAgICZzZWxmLT5zZWdtZW50KTsKLS0KLS0gICAgICAgIHNlbGYtPm5lZWRfc2VnbWVudCA9IFRSVUU7Ci0tICAgICAgfSBlbHNlIHsKLSsgICAgICBpZiAoIXJldCkgewotICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAic2VlayB0byAwIGJ5dGVzIGZhaWxlZCIpOwotICAgICAgIH0KLSAKLUBAIC0xNjQxLDggKzE2MzksMTAgQEAgZ3N0X3N1Yl9wYXJzZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKLSAgICAgICBnc3RfZXZlbnRfcGFyc2Vfc2VnbWVudCAoZXZlbnQsICZzKTsKLSAgICAgICBpZiAocy0+Zm9ybWF0ID09IEdTVF9GT1JNQVRfVElNRSkKLSAgICAgICAgIGdzdF9ldmVudF9jb3B5X3NlZ21lbnQgKGV2ZW50LCAmc2VsZi0+c2VnbWVudCk7Ci0tICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIm5ld3NlZ21lbnQgKCVzKSIsCi0tICAgICAgICAgIGdzdF9mb3JtYXRfZ2V0X25hbWUgKHNlbGYtPnNlZ21lbnQuZm9ybWF0KSk7Ci0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIm5ld3NlZ21lbnQgKCVzKSAlIiBHU1RfU0VHTUVOVF9GT1JNQVQsCi0rICAgICAgICAgIGdzdF9mb3JtYXRfZ2V0X25hbWUgKHNlbGYtPnNlZ21lbnQuZm9ybWF0KSwgJnNlbGYtPnNlZ21lbnQpOwotKwotKyAgICAgIHNlbGYtPm5lZWRfc2VnbWVudCA9IFRSVUU7Ci0gCi0gICAgICAgLyogaWYgbm90IHRpbWUgZm9ybWF0LCB3ZSdsbCBlaXRoZXIgc3RhcnQgd2l0aCBhIDAgdGltZXN0YW1wIGFueXdheSBvcgotICAgICAgICAqIGl0J3MgZm9sbG93aW5nIGEgc2VlayBpbiB3aGljaCBjYXNlIHdlJ2xsIGhhdmUgc2F2ZWQgdGhlIHJlcXVlc3RlZAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMTAtZ2wtQWRkLXN3aXRjaC1mb3ItZXhwbGljaXRlbHktZW5hYmxpbmctZGlzYWJsaW5nLUdCTS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAxMC1nbC1BZGQtc3dpdGNoLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctR0JNLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YmE1MDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMTAtZ2wtQWRkLXN3aXRjaC1mb3ItZXhwbGljaXRlbHktZW5hYmxpbmctZGlzYWJsaW5nLUdCTS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIGExYjU5Y2E2YjE3ODE0NDJmMzdmZmMxYjY5NzYzNWRiMTI2YjNhMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+CitEYXRlOiBUaHUsIDE5IEp1bCAyMDE4IDEwOjMwOjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGdsOiBBZGQgc3dpdGNoIGZvciBleHBsaWNpdGVseSBlbmFibGluZy9kaXNhYmxpbmcgR0JNIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY4MzNdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KKy0tLQorIG00L2dzdC1nbC5tNCB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbTQvZ3N0LWdsLm00IGIvbTQvZ3N0LWdsLm00CitpbmRleCAxZTk3MjQwOTQuLmFjYTUyOTVjYyAxMDA2NDQKKy0tLSBhL200L2dzdC1nbC5tNAorKysrIGIvbTQvZ3N0LWdsLm00CitAQCAtMTE3LDYgKzExNywxNSBAQCBBQ19BUkdfRU5BQkxFKFtkaXNwbWFueF0sCisgICAgICAgICopIEFDX01TR19FUlJPUihbYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtZGlzcG1hbnhdKSA7OworICAgICAgZXNhY10sW05FRURfRElTUE1BTlg9YXV0b10pCisgCisrQUNfQVJHX0VOQUJMRShbZ2JtXSwKKysgICAgIFsgIC0tZW5hYmxlLWdibSAgICAgICAgRW5hYmxlIE1lc2EzRCBHQk0gc3VwcG9ydCAocmVxdWlyZXMgRUdMKSBAPDpAZGVmYXVsdD1hdXRvQDo+QF0sCisrICAgICBbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorKyAgICAgICB5ZXMpICBORUVEX0dCTT15ZXMgOzsKKysgICAgICAgbm8pICAgTkVFRF9HQk09bm8gOzsKKysgICAgICAgYXV0bykgTkVFRF9HQk09YXV0byA7OworKyAgICAgICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWdibV0pIDs7CisrICAgICBlc2FjXSxbTkVFRF9HQk09YXV0b10pCisrCisgQUdfR1NUX1BLR19DSEVDS19NT0RVTEVTKFgxMV9YQ0IsIHgxMS14Y2IpCisgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorIHNhdmVfTElCUz0iJExJQlMiCitAQCAtMTcyLDE1ICsxODEsMzIgQEAgY2FzZSAkaG9zdCBpbgorICAgICAgICAgQUNfQ0hFQ0tfTElCKFtFR0xdLCBbZmJHZXREaXNwbGF5XSwgW0hBVkVfVklWX0ZCX0VHTD15ZXNdKQorICAgICBmaQorIAorLSAgICBpZiB0ZXN0ICJ4JEhBVkVfRUdMIiA9ICJ4eWVzIjsgdGhlbgorKyAgICBpZiB0ZXN0ICJ4JE5FRURfR0JNIiAhPSAieG5vIjsgdGhlbgorKyAgICAgIGlmIHRlc3QgIngkSEFWRV9FR0wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhEUk0sIGxpYmRybSA+PSAyLjQuNTUsIEhBVkVfRFJNPXllcywgSEFWRV9EUk09bm8pCisgICAgICAgICBBQ19TVUJTVChEUk1fQ0ZMQUdTKQorICAgICAgICAgQUNfU1VCU1QoRFJNX0xJQlMpCisrICAgICAgICBpZiB0ZXN0ICJ4JE5FRURfR0JNIiA9ICJ4eWVzIjsgdGhlbgorKyAgICAgICAgICBpZiB0ZXN0ICJ4JEhBVkVfRFJNIiA9ICJ4bm8iOyB0aGVuCisrICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtHQk0gc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IGxpYmRybSBpcyBub3QgYXZhaWxhYmxlXSkKKysgICAgICAgICAgZmkKKysgICAgICAgICAgaWYgdGVzdCAieCRIQVZFX0dVREVWIiA9ICJ4bm8iOyB0aGVuCisrICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtHQk0gc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IGd1ZGV2IGlzIG5vdCBhdmFpbGFibGVdKQorKyAgICAgICAgICBmaQorKyAgICAgICAgZmkKKyAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9EUk0iID0gInh5ZXMiIC1hICJ4JEhBVkVfR1VERVYiID0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKEdCTSwgZ2JtLCBIQVZFX0dCTV9FR0w9eWVzLCBIQVZFX0dCTV9FR0w9bm8pCisrICAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9HQk1fRUdMIiA9ICJ4bm8iIC1hICJ4JE5FRURfR0JNIiA9ICJ4eWVzIjsgdGhlbgorKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbR0JNIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBnYm0gbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlXSkKKysgICAgICAgICAgZmkKKyAgICAgICAgICAgQUNfU1VCU1QoR0JNX0NGTEFHUykKKyAgICAgICAgICAgQUNfU1VCU1QoR0JNX0xJQlMpCistICAgICAgIGZpCisrICAgICAgICBmaQorKyAgICAgIGVsaWYgdGVzdCAieCRORUVEX0dCTSIgPSAieHllcyI7IHRoZW4KKysgICAgICAgIEFDX01TR19FUlJPUihbR0JNIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBFR0wgaXMgbm90IGF2YWlsYWJsZV0pCisrICAgICAgZWxzZQorKyAgICAgICAgQUNfTVNHX05PVElDRShbR0JNIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBFR0wgaXMgbm90IGF2YWlsYWJsZTsgbm90IGVuYWJsaW5nIEdCTSBzdXBwb3J0XSkKKysgICAgICBmaQorICAgICBmaQorIAorICAgICBkbmwgRklYTUU6IE1hbGkgRUdMIGRlcGVuZHMgb24gR0xFU3YxIG9yIEdMRVN2MgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDExLWdsLUFkZC1zd2l0Y2hlcy1mb3ItZXhwbGljaXRlbHktZW5hYmxpbmctZGlzYWJsaW5nLVAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMTEtZ2wtQWRkLXN3aXRjaGVzLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWQxOTFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDExLWdsLUFkZC1zd2l0Y2hlcy1mb3ItZXhwbGljaXRlbHktZW5hYmxpbmctZGlzYWJsaW5nLVAucGF0Y2gKQEAgLTAsMCArMSwxMDkgQEAKK0Zyb20gMDkyYWFkZmMxZGY2OWM0NmQ5MjBiMGNkMzlmOThkMzYzZDY5ODhiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMTE6MTY6MDUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2w6IEFkZCBzd2l0Y2hlcyBmb3IgZXhwbGljaXRlbHkgZW5hYmxpbmcvZGlzYWJsaW5nIFBORyBhbmQKKyBKUEVHIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTY4MzNdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KKy0tLQorIG00L2dzdC1nbC5tNCB8IDY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nc3QtZ2wubTQgYi9tNC9nc3QtZ2wubTQKK2luZGV4IDIwYjIyMzNkZS4uZjg4MDk5ODFjIDEwMDY0NAorLS0tIGEvbTQvZ3N0LWdsLm00CisrKysgYi9tNC9nc3QtZ2wubTQKK0BAIC0xMjYsNiArMTI2LDI0IEBAIEFDX0FSR19FTkFCTEUoW2dibV0sCisgICAgICAgICopIEFDX01TR19FUlJPUihbYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtZ2JtXSkgOzsKKyAgICAgIGVzYWNdLFtORUVEX0dCTT1hdXRvXSkKKyAKKytBQ19BUkdfRU5BQkxFKFtwbmddLAorKyAgICAgWyAgLS1lbmFibGUtcG5nICAgICAgICBFbmFibGUgbGlicG5nIHN1cHBvcnQgQDw6QGRlZmF1bHQ9YXV0b0A6PkBdLAorKyAgICAgW2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKysgICAgICAgeWVzKSAgTkVFRF9QTkc9eWVzIDs7CisrICAgICAgIG5vKSAgIE5FRURfUE5HPW5vIDs7CisrICAgICAgIGF1dG8pIE5FRURfUE5HPWF1dG8gOzsKKysgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1wbmddKSA7OworKyAgICAgZXNhY10sW05FRURfUE5HPWF1dG9dKQorKworK0FDX0FSR19FTkFCTEUoW2pwZWddLAorKyAgICAgWyAgLS1lbmFibGUtanBlZyAgICAgICAgRW5hYmxlIGxpYmpwZWcgc3VwcG9ydCBAPDpAZGVmYXVsdD1hdXRvQDo+QF0sCisrICAgICBbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorKyAgICAgICB5ZXMpICBORUVEX0pQRUc9eWVzIDs7CisrICAgICAgIG5vKSAgIE5FRURfSlBFRz1ubyA7OworKyAgICAgICBhdXRvKSBORUVEX0pQRUc9YXV0byA7OworKyAgICAgICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWpwZWddKSA7OworKyAgICAgZXNhY10sW05FRURfSlBFRz1hdXRvXSkKKysKKyBBR19HU1RfUEtHX0NIRUNLX01PRFVMRVMoWDExX1hDQiwgeDExLXhjYikKKyBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgc2F2ZV9MSUJTPSIkTElCUyIKK0BAIC0xMDQzLDkgKzEwNjEsMTMgQEAgZG5sIE5lZWRlZCBieSBwbHVnaW5zIHRoYXQgdXNlIGdfbW9kdWxlXyooKSBBUEkKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhHTU9EVUxFX05PX0VYUE9SVCwgZ21vZHVsZS1uby1leHBvcnQtMi4wKQorIAorIGRubCBsaWJwbmcgaXMgb3B0aW9uYWwKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhMSUJQTkcsIGxpYnBuZyA+PSAxLjAsIEhBVkVfUE5HPXllcywgSEFWRV9QTkc9bm8pCistaWYgdGVzdCAieCRIQVZFX1BORyIgPSAieHllcyI7IHRoZW4KKy0gIEFDX0RFRklORShIQVZFX1BORywgWzFdICwgW1VzZSBsaWJwbmddKQorK2lmIHRlc3QgIngkTkVFRF9QTkciICE9ICJ4bm8iOyB0aGVuCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJQTkcsIGxpYnBuZyA+PSAxLjAsIEhBVkVfUE5HPXllcywgSEFWRV9QTkc9bm8pCisrICBpZiB0ZXN0ICJ4JEhBVkVfUE5HIiA9ICJ4eWVzIjsgdGhlbgorKyAgICBBQ19ERUZJTkUoSEFWRV9QTkcsIFsxXSAsIFtVc2UgbGlicG5nXSkKKysgIGVsaWYgdGVzdCAieCRORUVEX1BORyIgPSAieHllcyI7IHRoZW4KKysgICAgQUNfTVNHX0VSUk9SKFtsaWJwbmcgc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IGxpYnBuZyBpcyBub3QgYXZhaWxhYmxlXSkKKysgIGZpCisgZmkKKyBBQ19TVUJTVChIQVZFX1BORykKKyBBQ19TVUJTVChMSUJQTkdfTElCUykKK0BAIC0xMDUzLDI1ICsxMDc1LDI5IEBAIEFDX1NVQlNUKExJQlBOR19DRkxBR1MpCisgCisgZG5sIGxpYmpwZWcgaXMgb3B0aW9uYWwKKyBBQ19BUkdfV0lUSChqcGVnLW1teCwgWyAgLS13aXRoLWpwZWctbW14LCBwYXRoIHRvIE1NWCdpZmllZCBKUEVHIGxpYnJhcnldKQorLU9MRF9MSUJTPSIkTElCUyIKKy1pZiB0ZXN0IHgkd2l0aF9qcGVnX21teCAhPSB4OyB0aGVuCistICBMSUJTPSIkTElCUyAtTCR3aXRoX2pwZWdfbW14IgorLWZpCistQUNfQ0hFQ0tfTElCKGpwZWctbW14LCBqcGVnX3NldF9kZWZhdWx0cywgSEFWRV9KUEVHPSJ5ZXMiLCBIQVZFX0pQRUc9Im5vIikKKy1KUEVHX0xJQlM9IiRMSUJTIC1sanBlZy1tbXgiCistTElCUz0iJE9MRF9MSUJTIgorLWlmIHRlc3QgeCRIQVZFX0pQRUcgIT0geHllczsgdGhlbgorLSAgSlBFR19MSUJTPSItbGpwZWciCistICBBQ19DSEVDS19MSUIoanBlZywganBlZ19zZXRfZGVmYXVsdHMsIEhBVkVfSlBFRz0ieWVzIiwgSEFWRV9KUEVHPSJubyIpCistZmkKKytpZiB0ZXN0ICJ4JE5FRURfSlBFRyIgIT0gInhubyI7IHRoZW4KKysgIE9MRF9MSUJTPSIkTElCUyIKKysgIGlmIHRlc3QgeCR3aXRoX2pwZWdfbW14ICE9IHg7IHRoZW4KKysgICAgTElCUz0iJExJQlMgLUwkd2l0aF9qcGVnX21teCIKKysgIGZpCisrICBBQ19DSEVDS19MSUIoanBlZy1tbXgsIGpwZWdfc2V0X2RlZmF1bHRzLCBIQVZFX0pQRUc9InllcyIsIEhBVkVfSlBFRz0ibm8iKQorKyAgSlBFR19MSUJTPSIkTElCUyAtbGpwZWctbW14IgorKyAgTElCUz0iJE9MRF9MSUJTIgorKyAgaWYgdGVzdCB4JEhBVkVfSlBFRyAhPSB4eWVzOyB0aGVuCisrICAgIEpQRUdfTElCUz0iLWxqcGVnIgorKyAgICBBQ19DSEVDS19MSUIoanBlZywganBlZ19zZXRfZGVmYXVsdHMsIEhBVkVfSlBFRz0ieWVzIiwgSEFWRV9KUEVHPSJubyIpCisrICBmaQorIAorLWlmIHRlc3QgeCRIQVZFX0pQRUcgPSB4eWVzOyB0aGVuCistICBBQ19ERUZJTkUoSEFWRV9KUEVHLCBbMV0sIFtVc2UgbGlianBlZ10pCistZWxzZQorLSAgSlBFR19MSUJTPQorKyAgaWYgdGVzdCB4JEhBVkVfSlBFRyA9IHh5ZXM7IHRoZW4KKysgICAgQUNfREVGSU5FKEhBVkVfSlBFRywgWzFdLCBbVXNlIGxpYmpwZWddKQorKyAgZWxpZiB0ZXN0ICJ4JE5FRURfSlBFRyIgPSAieHllcyI7IHRoZW4KKysgICAgQUNfTVNHX0VSUk9SKFtsaWJqcGVnIHN1cHBvcnQgcmVxdWVzdGVkIGJ1dCBsaWJqcGVnIGlzIG5vdCBhdmFpbGFibGVdKQorKyAgZWxzZQorKyAgICBKUEVHX0xJQlM9CisrICBmaQorKyAgQUNfU1VCU1QoSlBFR19MSUJTKQorKyAgQUNfU1VCU1QoSEFWRV9KUEVHKQorIGZpCistQUNfU1VCU1QoSlBFR19MSUJTKQorLUFDX1NVQlNUKEhBVkVfSlBFRykKKyBdKQorIAorIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoCmluZGV4IGM4ZTYyODcuLmE0NzI3ZTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGFmMGRhYzI2ZjYyYWFjZWI0YmYyNjY3MjA5MTE5NTM3OTNlMGZjNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQxZGUyZWM2NGFiMDZiYjU4YzgyYzE2NTlhZGFhMzgxMWJjNWJjZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiB6aG91bWluZyA8YjQyNTg2QGZyZWVzY2FsZS5jb20+CiBEYXRlOiBXZWQsIDE0IE1heSAyMDE0IDEwOjE2OjIwICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIEVOR1IwMDMxMjUxNTogZ2V0IGNhcHMgZnJvbSBzcmMgcGFkIHdoZW4gcXVlcnkgY2FwcwpAQCAtOCwxOCArOCwxOSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IHpob3VtaW5nIDxiNDI1ODZAZnJlZXNjYWxlLmNvbT4KKwogLS0tCi0gZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jIHwgICAxMyArKysrKysrKysrKysrCisgZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jIHwgMTMgKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCiAgbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBnc3QtbGlicy9nc3QvdGFnL2dzdHRhZ2RlbXV4LmMKIAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC90YWcvZ3N0dGFnZGVtdXguYyBiL2dzdC1saWJzL2dzdC90YWcvZ3N0dGFnZGVtdXguYwogb2xkIG1vZGUgMTAwNjQ0CiBuZXcgbW9kZSAxMDA3NTUKLWluZGV4IDliNmM0NzguLmFlMjI5NGEKK2luZGV4IDhhMTI3YzguLjcxYzVkNzgKIC0tLSBhL2dzdC1saWJzL2dzdC90YWcvZ3N0dGFnZGVtdXguYwogKysrIGIvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jCi1AQCAtMTc2OSw2ICsxNzY5LDE5IEBAIGdzdF90YWdfZGVtdXhfcGFkX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0UXVlcnkgKiBxdWVyeSkKK0BAIC0xNzU5LDYgKzE3NTksMTkgQEAgZ3N0X3RhZ19kZW11eF9wYWRfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgfQpAQCAtMzksNiArNDAsMyBAQAogICAgICBkZWZhdWx0OgogICAgICAgIHJlcyA9IGdzdF9wYWRfcXVlcnlfZGVmYXVsdCAocGFkLCBwYXJlbnQsIHF1ZXJ5KTsKICAgICAgICBicmVhazsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTdmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDk4NjZmNTFlNWUwOTEzZjFlNDUzZWI1NzQ2MThiZjc0MzJmMzhjYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAxMDo0NjozMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBBZGQgLWx2Y2hvc3RpZiB0byBsaW5rIHdoZW4gdXNpbmcgLWxFR0wgb24gcnBpCisKK1RoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBsaWJFR0wgZnJvbSB1c2VybGFuZCB1c2VzIHN5Ym9scworZnJvbSB0aGlzIGxpYnJhcnkuCisKK2xpYi9saWJFR0wuc28uMS4wLjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjE6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAorICAxNTUyOiAwMDAwMDAwMCAgICAgMCBGVU5DICAgIEdMT0JBTCBERUZBVUxUICBVTkQgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKKworVGhlc2Ugc3ltYm9scyBhcmUgcHJvdmlkZWQgYnkgbGlidmNob3N0aWYgYXMgc2VlbiBiZWxvdworCitsaWIvbGlidmNob3N0aWYuc28KKyAgIDI1MjogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisgICA4MDk6IDAwMDBiMTYxICAgMTkyIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgICAgOSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAorCitXaXRoIHRoaXMgZXhwbGljaXQgbGluaywgcGx1Z2lucyBmYWlsIGR1cmluZyBydW50aW1lCisKKyhnc3QtcGx1Z2luLXNjYW5uZXI6NTcxKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IEZhaWxlZCB0byBsb2FkIHBsdWdpbiAnL3Vzci9saWIvZ3N0cmVhbWVyLTEuMC9saWJnc3RvbXguc28nOiBFcnJvciByZWxvY2F0aW5nIC91c3IvbGliL2xpYmdzdGdsLTEuMC5zby4wOiB2Y19kaXNwbWFueF9lbGVtZW50X2FkZDogc3ltYm9sIG5vdCBmb3VuZAorKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9wZW5nbC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBtNC9nc3QtZ2wubTQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nc3QtZ2wubTQgYi9tNC9nc3QtZ2wubTQKK2luZGV4IDFlOTcyNDAuLmFiNzc3NGMgMTAwNjQ0CistLS0gYS9tNC9nc3QtZ2wubTQKKysrKyBiL200L2dzdC1nbC5tNAorQEAgLTIzMSw3ICsyMzEsNyBAQCBjYXNlICRob3N0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMPXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0dMRVMyPXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTF9SUEk9eWVzCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNvcyAtbHZjaGlxX2FybSIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y2hvc3RpZiAtbHZjb3MgLWx2Y2hpcV9hcm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9DRkxBR1M9IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfREVGSU5FKFVTRV9FR0xfUlBJLCBbMV0sIFtVc2UgUlBpIHBsYXRmb3JtXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoCmluZGV4IDQxM2VmZjAuLjIzOTUwYjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMTBkMmE5NzdlZTFkNDY5ZjBiZjkwNTliYjJkMGI1NWZkMmVlY2JhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2ZmYTZlM2QwMGUxZDhhMDYwZjNmNGMyYmI5YTcyNjkxYWYwNWQ3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDIwIEphbiAyMDE2IDEzOjAwOjAwIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1ha2UgZ2lvX3VuaXhfMl8wIGRlcGVuZGVuY3kgY29uZmlndXJhYmxlCkBAIC0xNywxNiArMTcsMTcgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCA3ICsrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDljNTJhZWIuLjI2Y2FjZDYgMTAwNjQ0CitpbmRleCAxMjgwN2JjLi4zNWEwYmYzIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC03NTIsOSArNzUyLDE2IEBAIEFDX1NVQlNUKEZUMl9DRkxBR1MpCi0gZmkgZG5sIG9mIEVYVCBwbHVnaW5zCitAQCAtODA2LDkgKzgwNiwxNiBAQCBBTV9DT05ESVRJT05BTChIQVZFX1BORywgdGVzdCAieCRIQVZFX1BORyIgPSAieHllcyIpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9KUEVHLCB0ZXN0ICJ4JEhBVkVfSlBFRyIgPSAieHllcyIpCiAgCiAgZG5sICoqKiBnaW8tdW5peC0yLjAgZm9yIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy90Y3AuYyAqKioKICtBQ19BUkdfRU5BQkxFKFtnaW9fdW5peF8yXzBdLApAQCAtNDIsNiArNDMsMyBAQAogIEFNX0NPTkRJVElPTkFMKFVTRV9HSU9fVU5JWF8yXzAsIHRlc3QgIngkSEFWRV9HSU9fVU5JWF8yXzAiID0gInh5ZXMiKQogIAogIGRubCAqKiogZmluYWxpemUgQ0ZMQUdTLCBMREZMQUdTLCBMSUJTCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkODk1YmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggXAotICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYjM1YjA0MDcxZjY5YjhhYjY5YTdmM2E0OTdmZjAxMzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGMzMDZiMDNkZjAyMTJmMWI4OTAzNzg0ZTI5YmIzNDkzMzE5YmExOWViZWJmMTNiMGM1NmExNzg3MDI5MjI4MiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZWE3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTQuMi5iYgpAQCAtMCwwICsxLDc2IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdsLUFkZC1zd2l0Y2gtZm9yLWV4cGxpY2l0ZWx5LWVuYWJsaW5nLWRpc2FibGluZy1HQk0ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTEtZ2wtQWRkLXN3aXRjaGVzLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctUC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YmM3OTBkNjIzMzUwY2Q4ZWFjNjhkM2ExM2Q3OWY3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNGI3ZTgwYmE4NjlmNTk5MzA3NDQ5YjE3YzllMDBiNWQxZTk0ZDNiYTFkOGExYTM4NmI4NzcwYjJlZjAxYzdjIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKKworREVQRU5EUyArPSAiaXNvLWNvZGVzIHV0aWwtbGludXgiCisKK2luaGVyaXQgZ2V0dGV4dAorCitQQUNLQUdFU19EWU5BTUlDID0rICJebGliZ3N0LioiCisKKyMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsZXMyIGVnbCcsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgeDExJywgZCl9IFwKKyAgICBnaW8tdW5peC0yLjAganBlZyBvZ2cgcGFuZ28gcG5nIHRoZW9yYSB2b3JiaXMgemxpYiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZWdsJywgJycsIGQpfSBcCisiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4diIKK1gxMUVOQUJMRU9QVFMgPSAiLS1lbmFibGUteCAtLWVuYWJsZS14dmlkZW8gLS1lbmFibGUteHNobSIKK1gxMURJU0FCTEVPUFRTID0gIi0tZGlzYWJsZS14IC0tZGlzYWJsZS14dmlkZW8gLS1kaXNhYmxlLXhzaG0iCisKK1BBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgICA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tjZHBhcmFub2lhXSAgID0gIi0tZW5hYmxlLWNkcGFyYW5vaWEsLS1kaXNhYmxlLWNkcGFyYW5vaWEsY2RwYXJhbm9pYSIKK1BBQ0tBR0VDT05GSUdbZWdsXSAgICAgICAgICA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbZ2JtXSAgICAgICAgICA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSx2aXJ0dWFsL2xpYmdibSBsaWJndWRldiBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2dpby11bml4LTIuMF0gPSAiLS1lbmFibGUtZ2lvX3VuaXhfMl8wLC0tZGlzYWJsZS1naW9fdW5peF8yXzAsZ2xpYi0yLjAiCitQQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgICAgPSAiLS1lbmFibGUtZ2xlczIsLS1kaXNhYmxlLWdsZXMyLHZpcnR1YWwvbGliZ2xlczIiCitQQUNLQUdFQ09ORklHW2l2b3JiaXNdICAgICAgPSAiLS1lbmFibGUtaXZvcmJpcywtLWRpc2FibGUtaXZvcmJpcyx0cmVtb3IiCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgICAgPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgID0gIi0tZW5hYmxlLW9nZywtLWRpc2FibGUtb2dnLGxpYm9nZyIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICA9ICItLWVuYWJsZS1vcGVuZ2wsLS1kaXNhYmxlLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKK1BBQ0tBR0VDT05GSUdbb3B1c10gICAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCitQQUNLQUdFQ09ORklHW3BhbmdvXSAgICAgICAgPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgorUEFDS0FHRUNPTkZJR1twbmddICAgICAgICAgID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGhlb3JhXSAgICAgICA9ICItLWVuYWJsZS10aGVvcmEsLS1kaXNhYmxlLXRoZW9yYSxsaWJ0aGVvcmEiCitQQUNLQUdFQ09ORklHW3Zpc3VhbF0gICAgICAgPSAiLS1lbmFibGUtbGlidmlzdWFsLC0tZGlzYWJsZS1saWJ2aXN1YWwsbGlidmlzdWFsIgorUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgID0gIi0tZW5hYmxlLXZvcmJpcywtLWRpc2FibGUtdm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbemxpYl0gICAgICAgICA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0ke0xJQlZ9L2luY2x1ZGUvZ3N0L2dsL2dzdGdsY29uZmlnLmgiCitGSUxFU18ke01MUFJFRklYfWxpYmdzdHRhZy0xLjAgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFzZS8xLjAvbGljZW5zZS10cmFuc2xhdGlvbnMuZGljdCIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QtbGlicy9nc3QvdGFnLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3ZpZGVvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2F1ZGlvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3J0cC8ubGliczoke0J9L2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzLy5saWJzIgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRjM2Q2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmNhcCB6bGliIGJ6aXAyIgotCi1pbmhlcml0IGdldHRleHQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbyB4MTEnLCBkKX0gXAotICAgIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxpYnBuZyBzb3VwIHNwZWV4IHRhZ2xpYiB2NGwyIFwKLSIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnhmaXhlcyBsaWJ4ZGFtYWdlIgotCi1QQUNLQUdFQ09ORklHW2NhaXJvXSAgICAgID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyIKLVBBQ0tBR0VDT05GSUdbZHYxMzk0XSAgICAgPSAiLS1lbmFibGUtZHYxMzk0LC0tZGlzYWJsZS1kdjEzOTQsbGliaWVjNjE4ODMgbGliYXZjMTM5NCBsaWJyYXcxMzk0IgotUEFDS0FHRUNPTkZJR1tmbGFjXSAgICAgICA9ICItLWVuYWJsZS1mbGFjLC0tZGlzYWJsZS1mbGFjLGZsYWMiCi1QQUNLQUdFQ09ORklHW2dkay1waXhidWZdID0gIi0tZW5hYmxlLWdka19waXhidWYsLS1kaXNhYmxlLWdka19waXhidWYsZ2RrLXBpeGJ1ZiIKLVBBQ0tBR0VDT05GSUdbZ3VkZXZdICAgICAgPSAiLS13aXRoLWd1ZGV2LC0td2l0aG91dC1ndWRldixsaWJndWRldiIKLVBBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW2xpYnBuZ10gICAgID0gIi0tZW5hYmxlLWxpYnBuZywtLWRpc2FibGUtbGlicG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbbGlidjRsMl0gICAgPSAiLS13aXRoLWxpYnY0bDIsLS13aXRob3V0LWxpYnY0bDIsdjRsLXV0aWxzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZSwtLWRpc2FibGUtcHVsc2UscHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc291cF0gICAgICAgPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdICAgICAgPSAiLS1lbmFibGUtc3BlZXgsLS1kaXNhYmxlLXNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1t0YWdsaWJdICAgICA9ICItLWVuYWJsZS10YWdsaWIsLS1kaXNhYmxlLXRhZ2xpYix0YWdsaWIiCi1QQUNLQUdFQ09ORklHW3Y0bDJdICAgICAgID0gIi0tZW5hYmxlLWdzdF92NGwyIC0tZW5hYmxlLXY0bDItcHJvYmUsLS1kaXNhYmxlLWdzdF92NGwyIgotUEFDS0FHRUNPTkZJR1t2cHhdICAgICAgICA9ICItLWVuYWJsZS12cHgsLS1kaXNhYmxlLXZweCxsaWJ2cHgiCi1QQUNLQUdFQ09ORklHW3dhdnBhY2tdICAgID0gIi0tZW5hYmxlLXdhdnBhY2ssLS1kaXNhYmxlLXdhdnBhY2ssd2F2cGFjayIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUteCwtLWRpc2FibGUteCwke1gxMURFUEVORFN9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiBcCi0gICAgLS1lbmFibGUtYnoyIFwKLSAgICAtLWVuYWJsZS1vc3MgXAotICAgIC0tZW5hYmxlLXpsaWIgXAotICAgIC0tZGlzYWJsZS1hYWxpYiBcCi0gICAgLS1kaXNhYmxlLWFhbGlidGVzdCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKLSAgICAtLWRpc2FibGUtbGliY2FjYSBcCi0gICAgLS1kaXNhYmxlLWxpYmR2IFwKLSAgICAtLWRpc2FibGUtb3NzNCBcCi0gICAgLS1kaXNhYmxlLW9zeF9hdWRpbyBcCi0gICAgLS1kaXNhYmxlLW9zeF92aWRlbyBcCi0gICAgLS1kaXNhYmxlLXNob3V0MiBcCi0gICAgLS1kaXNhYmxlLXN1bmF1ZGlvIFwKLSAgICAtLWRpc2FibGUtd2F2ZWZvcm0gXAotIgotCi1GSUxFU18ke1BOfS1lcXVhbGl6ZXIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzLyoucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2MDk2NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYmRmNDc5MWEyYjc4OGVjNmExNDliODFmZjQwMzIwMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjQ5ZjQ5YmVjNjA4OTJkNDdlZTY3MzFiOTIyNjY5NzRjNzIzNTU0ZGExYzY2NDlmMjEyOTYwOTc3MTVlYjk1NyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCi0KLVJQUk9WSURFU18ke1BOfS1wdWxzZWF1ZGlvICs9ICIke1BOfS1wdWxzZSIKLVJQUk9WSURFU18ke1BOfS1zb3VwICs9ICIke1BOfS1zb3VwaHR0cHNyYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzNWNjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNC4yLmJiCkBAIC0wLDAgKzEsNzkgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCisKK1NSQ19VUkkgPSAiIFwKKyAgICAgICAgICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWwtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWI4M2IyODI4ZTMxY2U1YjRhNWMwM2M3MWU3MDdhZTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzA1NzVlMjgxMTg2MGJmZmY1OWI4NjViOGQxMjUxNTM4NTlhMDFmMDYxNWZhNDFlMjc5YjY0ZDg4ZDI1Y2FhZCIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCisKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2FwIgorUlBST1ZJREVTXyR7UE59LXB1bHNlYXVkaW8gKz0gIiR7UE59LXB1bHNlIgorUlBST1ZJREVTXyR7UE59LXNvdXAgKz0gIiR7UE59LXNvdXBodHRwc3JjIgorCitpbmhlcml0IGdldHRleHQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbyB4MTEnLCBkKX0gXAorICAgIGJ6MiBjYWlybyBmbGFjIGdkay1waXhidWYgZ3VkZXYganBlZyBsYW1lIGxpYnBuZyBtcGcxMjMgc291cCBzcGVleCB0YWdsaWIgdjRsMiB6bGliIFwKKyIKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnhmaXhlcyBsaWJ4ZGFtYWdlIgorCitQQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgID0gIi0tZW5hYmxlLWJ6MiwtLWRpc2FibGUtYnoyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjYWlyb10gICAgICA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8iCitQQUNLQUdFQ09ORklHW2R2MTM5NF0gICAgID0gIi0tZW5hYmxlLWR2MTM5NCwtLWRpc2FibGUtZHYxMzk0LGxpYmllYzYxODgzIGxpYmF2YzEzOTQgbGlicmF3MTM5NCIKK1BBQ0tBR0VDT05GSUdbZmxhY10gICAgICAgPSAiLS1lbmFibGUtZmxhYywtLWRpc2FibGUtZmxhYyxmbGFjIgorUEFDS0FHRUNPTkZJR1tnZGstcGl4YnVmXSA9ICItLWVuYWJsZS1nZGtfcGl4YnVmLC0tZGlzYWJsZS1nZGtfcGl4YnVmLGdkay1waXhidWYiCitQQUNLQUdFQ09ORklHW2d0a10gICAgICAgID0gIi0tZW5hYmxlLWd0azMsLS1kaXNhYmxlLWd0azMsZ3RrKzMiCitQQUNLQUdFQ09ORklHW2d1ZGV2XSAgICAgID0gIi0td2l0aC1ndWRldiwtLXdpdGhvdXQtZ3VkZXYsbGliZ3VkZXYiCitQQUNLQUdFQ09ORklHW2phY2tdICAgICAgID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1tsYW1lXSAgICAgICA9ICItLWVuYWJsZS1sYW1lLC0tZGlzYWJsZS1sYW1lLGxhbWUiCitQQUNLQUdFQ09ORklHW2xpYnBuZ10gICAgID0gIi0tZW5hYmxlLWxpYnBuZywtLWRpc2FibGUtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbbGlidjRsMl0gICAgPSAiLS13aXRoLWxpYnY0bDIsLS13aXRob3V0LWxpYnY0bDIsdjRsLXV0aWxzIgorUEFDS0FHRUNPTkZJR1ttcGcxMjNdICAgICA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlLC0tZGlzYWJsZS1wdWxzZSxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzb3VwXSAgICAgICA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40IgorUEFDS0FHRUNPTkZJR1tzcGVleF0gICAgICA9ICItLWVuYWJsZS1zcGVleCwtLWRpc2FibGUtc3BlZXgsc3BlZXgiCitQQUNLQUdFQ09ORklHW3RhZ2xpYl0gICAgID0gIi0tZW5hYmxlLXRhZ2xpYiwtLWRpc2FibGUtdGFnbGliLHRhZ2xpYiIKK1BBQ0tBR0VDT05GSUdbdjRsMl0gICAgICAgPSAiLS1lbmFibGUtZ3N0X3Y0bDIgLS1lbmFibGUtdjRsMi1wcm9iZSwtLWRpc2FibGUtZ3N0X3Y0bDIiCitQQUNLQUdFQ09ORklHW3ZweF0gICAgICAgID0gIi0tZW5hYmxlLXZweCwtLWRpc2FibGUtdnB4LGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbd2F2cGFja10gICAgPSAiLS1lbmFibGUtd2F2cGFjaywtLWRpc2FibGUtd2F2cGFjayx3YXZwYWNrIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICItLWVuYWJsZS14LC0tZGlzYWJsZS14LCR7WDExREVQRU5EU30iCitQQUNLQUdFQ09ORklHW3psaWJdICAgICAgID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKKworIyBxdDUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgYmVjYXVzZSBpdCBpcyBub3QgcHJlc2VudCBpbiBPRSBjb3JlLCBhbmQgcmVxdWlyZXMgbW9yZSB3b3JrIHRoYW4KKyMganVzdCBhZGRpbmcgYSBwYWNrYWdlY29uZmlnIChpdCByZXF1aXJlcyBhY2Nlc3MgdG8gbW9jLCB1aWMsIHJjYywgYW5kIHFtYWtlIHBhdGhzKS4KKyMgVGhpcyBpcyBiZXR0ZXIgZG9uZSBpbiBhIHNlcGFyYXRlIHF0NSBsYXllciAod2hpY2ggdGhlbiBzaG91bGQgYWRkIGEgInF0NSIgcGFja2FnZWNvbmZpZworIyBpbiBhIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgYmJhcHBlbmQpLgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgLS1lbmFibGUtb3NzIFwKKyAgICAtLWRpc2FibGUtYWFsaWIgXAorICAgIC0tZGlzYWJsZS1hYWxpYnRlc3QgXAorICAgIC0tZGlzYWJsZS1kaXJlY3Rzb3VuZCBcCisgICAgLS1kaXNhYmxlLWxpYmNhY2EgXAorICAgIC0tZGlzYWJsZS1saWJkdiBcCisgICAgLS1kaXNhYmxlLW9zczQgXAorICAgIC0tZGlzYWJsZS1vc3hfYXVkaW8gXAorICAgIC0tZGlzYWJsZS1vc3hfdmlkZW8gXAorICAgIC0tZGlzYWJsZS1xdCBcCisgICAgLS1kaXNhYmxlLXNob3V0MiBcCisgICAgLS1kaXNhYmxlLXR3b2xhbWUgXAorICAgIC0tZGlzYWJsZS13YXZlZm9ybSBcCisiCisKK0ZJTEVTXyR7UE59LWVxdWFsaXplciArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvKi5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGFhOTY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBMR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmlkM3RhZyIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgIGE1MmRlYyBsYW1lIG1wZzEyMyBtcGVnMmRlYyBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYTUyZGVjXSAgID0gIi0tZW5hYmxlLWE1MmRlYywtLWRpc2FibGUtYTUyZGVjLGxpYmE1MiIKLVBBQ0tBR0VDT05GSUdbYW1ybmJdICAgID0gIi0tZW5hYmxlLWFtcm5iLC0tZGlzYWJsZS1hbXJuYixvcGVuY29yZS1hbXIiCi1QQUNLQUdFQ09ORklHW2FtcndiXSAgICA9ICItLWVuYWJsZS1hbXJ3YiwtLWRpc2FibGUtYW1yd2Isb3BlbmNvcmUtYW1yIgotUEFDS0FHRUNPTkZJR1tjZGlvXSAgICAgPSAiLS1lbmFibGUtY2RpbywtLWRpc2FibGUtY2RpbyxsaWJjZGlvIgotUEFDS0FHRUNPTkZJR1tkdmRyZWFkXSAgPSAiLS1lbmFibGUtZHZkcmVhZCwtLWRpc2FibGUtZHZkcmVhZCxsaWJkdmRyZWFkIgotUEFDS0FHRUNPTkZJR1tsYW1lXSAgICAgPSAiLS1lbmFibGUtbGFtZSwtLWRpc2FibGUtbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1ttcGVnMmRlY10gPSAiLS1lbmFibGUtbXBlZzJkZWMsLS1kaXNhYmxlLW1wZWcyZGVjLG1wZWcyZGVjIgotUEFDS0FHRUNPTkZJR1ttcGcxMjNdICAgPSAiLS1lbmFibGUtbXBnMTIzLC0tZGlzYWJsZS1tcGcxMjMsbXBnMTIzIgotUEFDS0FHRUNPTkZJR1t4MjY0XSAgICAgPSAiLS1lbmFibGUteDI2NCwtLWRpc2FibGUteDI2NCx4MjY0IgotCi1FWFRSQV9PRUNPTkYgKz0gIiBcCi0gICAgLS1kaXNhYmxlLXNpZHBsYXkgXAotICAgIC0tZGlzYWJsZS10d29sYW1lIFwKLSIKLQotRklMRVNfJHtQTn0tYW1ybmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEFtcm5iRW5jLnBycyIKLUZJTEVTXyR7UE59LXgyNjQgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFgyNjRFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgzMzM1MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImUyYjgzNmZiMjc0N2Y2YWUzYTFhNmYzM2E5ZDhjOTUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjMTY1YjhkODg4ZWQzNTBhY2Q4ZTZhYzlmNmZlMDY1MDhlNmZjYzBhM2FmYzZjY2M5ZmJlYjMwZGY5YmU1MjIiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTk3MjY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE0LjIuYmIKQEAgLTAsMCArMSw0MCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIExHUEx2MisiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK1NSQ19VUkkgPSAiIFwKKyAgICAgICAgICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImVhMGE4MDBjNjQyMWMzYzNjZGJlZDNkMDQwYjhmZmQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1ZTA5N2Q5ZDkzOTIxZmRjZjdhYmIwZmY5MmQyM2IyMWRkOTA5OGU2MzJmMWJhNDMzNjAzYjNiZDFjZjNkNjkiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmlkM3RhZyIKKworaW5oZXJpdCBnZXR0ZXh0CisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgIGE1MmRlYyBtcGVnMmRlYyBcCisiCisKK1BBQ0tBR0VDT05GSUdbYTUyZGVjXSAgID0gIi0tZW5hYmxlLWE1MmRlYywtLWRpc2FibGUtYTUyZGVjLGxpYmE1MiIKK1BBQ0tBR0VDT05GSUdbYW1ybmJdICAgID0gIi0tZW5hYmxlLWFtcm5iLC0tZGlzYWJsZS1hbXJuYixvcGVuY29yZS1hbXIiCitQQUNLQUdFQ09ORklHW2FtcndiXSAgICA9ICItLWVuYWJsZS1hbXJ3YiwtLWRpc2FibGUtYW1yd2Isb3BlbmNvcmUtYW1yIgorUEFDS0FHRUNPTkZJR1tjZGlvXSAgICAgPSAiLS1lbmFibGUtY2RpbywtLWRpc2FibGUtY2RpbyxsaWJjZGlvIgorUEFDS0FHRUNPTkZJR1tkdmRyZWFkXSAgPSAiLS1lbmFibGUtZHZkcmVhZCwtLWRpc2FibGUtZHZkcmVhZCxsaWJkdmRyZWFkIgorUEFDS0FHRUNPTkZJR1ttcGVnMmRlY10gPSAiLS1lbmFibGUtbXBlZzJkZWMsLS1kaXNhYmxlLW1wZWcyZGVjLG1wZWcyZGVjIgorUEFDS0FHRUNPTkZJR1t4MjY0XSAgICAgPSAiLS1lbmFibGUteDI2NCwtLWRpc2FibGUteDI2NCx4MjY0IgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgLS1kaXNhYmxlLXNpZHBsYXkgXAorIgorCitGSUxFU18ke1BOfS1hbXJuYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0QW1ybmJFbmMucHJzIgorRklMRVNfJHtQTn0teDI2NCArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0WDI2NEVuYy5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjFmMGJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIEdTdHJlYW1lciAxLjAiCi1IT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1weXRob24vIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCi1SREVQRU5EU18ke1BOfSArPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgotCi1QTlJFQUwgPSAiZ3N0LXB5dGhvbiIKLQotUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgZ3N0cHl0aG9ucGx1Z2luIGhhcmRjb2RlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnB5dGhvbiBmcm9tIHRoZSBidWlsZAotICAgICMgd29ya3NwYWNlIGFuZCB0aGVuIGZhaWxzIGF0IHJ1bnRpbWUuIFdlIGNhbiBvdmVycmlkZSBpdCB1c2luZwotICAgICMgLS13aXRoLWxpYnB5dGhvbi1kaXI9JHtsaWJkaXJ9LCBidXQgaXQgc3RpbGwgZmFpbHMgYmVjYXVzZSBpdCBsb29rcyBmb3IgYQotICAgICMgc3ltbGlua2VkIGxpYnJhcnkgZW5kaW5nIGluIC5zbyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWxseSBsaWJyYXJ5IHdpdGgKLSAgICAjIExJQk5BTUUuc28uTUFKT1IuTUlOT1IuIEFsdGhvdWdoIHdlIGNvdWxkIHBhdGNoIHRoZSBjb2RlIHRvIHVzZSB0aGUgcGF0aAotICAgICMgd2Ugd2FudCwgaXQgd2lsbCBicmVhayBhZ2FpbiBpZiB0aGUgbGlicmFyeSB2ZXJzaW9uIGV2ZXIgY2hhbmdlcy4gV2UgbmVlZAotICAgICMgdG8gdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IG9mIGhhbmRsaW5nIHRoaXMgYW5kIHBvc3NpYmx5IGNvbnN1bHQKLSAgICAjIHVwc3RyZWFtLgotICAgICMKLSAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCi0gICAgIyBnc3QtcHl0aG9uMS4wLgotICAgIGZpbmQgIiR7RH0iIFwKLSAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCi0gICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAotICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAotICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAotICAgICAgICAtZGVsZXRlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWVjMzU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1weXRob24uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImYxZmQwNDZlYTc4MTczNmE3OTRmOWY1NTJkNzdjNTBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwY2U2YWY2NjE1YzlhNDQwYzE5MjhjMzEyNTlhNzgyMjY1MTZkMDZiZjFhNjVmODg4YzZkMTA5ODI2ZmEzZWEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzNGRlYWU0ZTM5NWNhMDdlNzI1YWIwMDc2YTVmNzQwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGMwMDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE0LjIuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIEdTdHJlYW1lciAxLjAiCitIT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1weXRob24vIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjViMGFmMWJkNDkwZDc5YTdkNDM1YjJiZTQ3NTY4ZjhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjNDBiZTVhYjRmMWE0MzNmZjNmMGFmMmIzZDJkNzlhMzYzMDA5MDIwYzQxZWMxMGY5NzQ3YmE2NDIwMGNiMjIiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKKworUE5SRUFMID0gImdzdC1weXRob24iCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGdzdHB5dGhvbnBsdWdpbiBoYXJkY29kZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBsaWJweXRob24gZnJvbSB0aGUgYnVpbGQKKyAgICAjIHdvcmtzcGFjZSBhbmQgdGhlbiBmYWlscyBhdCBydW50aW1lLiBXZSBjYW4gb3ZlcnJpZGUgaXQgdXNpbmcKKyAgICAjIC0td2l0aC1saWJweXRob24tZGlyPSR7bGliZGlyfSwgYnV0IGl0IHN0aWxsIGZhaWxzIGJlY2F1c2UgaXQgbG9va3MgZm9yIGEKKyAgICAjIHN5bWxpbmtlZCBsaWJyYXJ5IGVuZGluZyBpbiAuc28gaW5zdGVhZCBvZiB0aGUgYWN0dWFsbHkgbGlicmFyeSB3aXRoCisgICAgIyBMSUJOQU1FLnNvLk1BSk9SLk1JTk9SLiBBbHRob3VnaCB3ZSBjb3VsZCBwYXRjaCB0aGUgY29kZSB0byB1c2UgdGhlIHBhdGgKKyAgICAjIHdlIHdhbnQsIGl0IHdpbGwgYnJlYWsgYWdhaW4gaWYgdGhlIGxpYnJhcnkgdmVyc2lvbiBldmVyIGNoYW5nZXMuIFdlIG5lZWQKKyAgICAjIHRvIHRoaW5rIGFib3V0IHRoZSBiZXN0IHdheSBvZiBoYW5kbGluZyB0aGlzIGFuZCBwb3NzaWJseSBjb25zdWx0CisgICAgIyB1cHN0cmVhbS4KKyAgICAjCisgICAgIyBOb3RlIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGZpbmQgbGluZSBpcyB0YWtlbiBmcm9tIHRoZSBEZWJpYW4gcGFja2FnaW5nIGZvcgorICAgICMgZ3N0LXB5dGhvbjEuMC4KKyAgICBmaW5kICIke0R9IiBcCisgICAgICAgIC1uYW1lICcqLnB5YycgLW8gXAorICAgICAgICAtbmFtZSAnKi5weW8nIC1vIFwKKyAgICAgICAgLW5hbWUgJyoubGEnIC1vIFwKKyAgICAgICAgLW5hbWUgJ2xpYmdzdHB5dGhvbnBsdWdpbionIFwKKyAgICAgICAgLWRlbGV0ZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NzZmOTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IG9uIHRvcCBvZiBHU3RyZWFtZXIgZm9yIGJ1aWxkaW5nIGFuIFJUU1Agc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcnRzcC1zZXJ2ZXIvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLVBOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tdXNpbmctaW50cm9zcGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1leGFtcGxlcyAtLWRpc2FibGUtdGVzdHMiCi0KLSMgU3RhcnRpbmcgd2l0aCAxLjguMCBnc3QtcnRzcC1zZXJ2ZXIgaW5jbHVkZXMgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbnMgYXMgd2VsbAotTElCViA9ICIxLjAiCi1yZXF1aXJlIGdzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLSAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQotfQotCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2OGRjYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImFkNzBhOTczNWY1OGRhMjFkMGY1Y2VkZjQ4Y2NhZGQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2NjAxMTJlYmQ1OTgzOGYxMDU0Nzk2YjM4MTA5ZGNiZTMyZjBhMDQwZTNhMjUyYTY4YTgxMDU1YWVhYTU2YTkiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc2NmUyNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE0LjIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgb24gdG9wIG9mIEdTdHJlYW1lciBmb3IgYnVpbGRpbmcgYW4gUlRTUCBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1ydHNwLXNlcnZlci8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitQTlJFQUwgPSAiZ3N0LXJ0c3Atc2VydmVyIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXVzaW5nLWludHJvc3BlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzI2YjU5ZGQyZWE4YjFhNGEyNWU5ZjdlMGY1N2E1MGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjczODc3NTVjZjZhYzVmMzM0ZDQ2MTBmMWY1YWE3ZGE0ZmYzOTZhNDg3ZGQ1Yjc4OWJiNzA3ZjE2MDIyMmM5OCIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWV4YW1wbGVzIC0tZGlzYWJsZS10ZXN0cyIKKworIyBTdGFydGluZyB3aXRoIDEuOC4wIGdzdC1ydHNwLXNlcnZlciBpbmNsdWRlcyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2lucyBhcyB3ZWxsCitMSUJWID0gIjEuMCIKK3JlcXVpcmUgZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKKworZGVsZXRlX3BrZ19tNF9maWxlKCkgeworICAgICAgICAjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgorICAgICAgICBybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCit9CisKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmY2M2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJWQS1BUEkgc3VwcG9ydCB0byBHU3RyZWFtZXIiCi1ERVNDUklQVElPTiA9ICJnc3RyZWFtZXItdmFhcGkgY29uc2lzdHMgb2YgYSBjb2xsZWN0aW9uIG9mIFZBLUFQSSBcCi1iYXNlZCBwbHVnaW5zIGZvciBHU3RyZWFtZXIgYW5kIGhlbHBlciBsaWJyYXJpZXM6IGB2YWFwaWRlY29kZScsIFwKLWB2YWFwaWNvbnZlcnQnLCBhbmQgYHZhYXBpc2luaycuIgotCi1SRUFMUE4gPSAiZ3N0cmVhbWVyLXZhYXBpIgotRklMRVNQQVRIID0gIiR7QGJhc2Vfc2V0X2ZpbGVzcGF0aChbIiR7RklMRV9ESVJOQU1FfS8ke1JFQUxQTn0iLCAiJHtGSUxFX0RJUk5BTUV9LyR7UkVBTFBOfSJdLCBkKX0iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImxpYnZhIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtSRUFMUE59LyR7UkVBTFBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9LyR7UkVBTFBOfS0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi0jIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKLSMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAotIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCi0jIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKLSAgICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLHVkZXYgbGliZHJtIgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5hIgotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkvMDAwMS1nc3QtdmFhcGktTWFrZWZpbGUuYW0tQWRkLUVHTF9DRkxBR1MtdG8tbGliZ3N0dmFhcGktLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2I4OTg0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDU0MDNhODllNmE3YWM3MmEyM2UwMjIxMDc1YzBjMTliNWY4NWEwMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogV2VkLCAxMyBKdW4gMjAxOCAwOTowOToyNSAtMDMwMAorU3ViamVjdDogW1BBVENIXSBnc3QvdmFhcGkvTWFrZWZpbGUuYW06IEFkZCBFR0xfQ0ZMQUdTIHRvIGxpYmdzdHZhYXBpIENGTEFHUworT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworV2UgbmVlZCB0aGlzIHRvIHBhc3MgY29ycmVjdGx5IEVHTCBDRkxBR1Mgd2hlbiBidWlsZGluZyB3aXRoIEVHTCBzdXBwb3J0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGdzdC92YWFwaS9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dzdC92YWFwaS9NYWtlZmlsZS5hbSBiL2dzdC92YWFwaS9NYWtlZmlsZS5hbQoraW5kZXggYjI5OWFjOTguLmQ2Y2FiNzFmIDEwMDY0NAorLS0tIGEvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtCisrKysgYi9nc3QvdmFhcGkvTWFrZWZpbGUuYW0KK0BAIC0yNCw2ICsyNCwxMCBAQCBsaWJnc3R2YWFwaV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmFhcGkvbGliZ3N0dmFhcGktZ2x4LmxhCisgZW5kaWYKKyAKKyBpZiBVU0VfRUdMCisrbGliZ3N0dmFhcGlfQ0ZMQUdTICs9IFwKKysJJChFR0xfQ0ZMQUdTKQlcCisrCSQoTlVMTCkKKysKKyBsaWJnc3R2YWFwaV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmFhcGkvbGliZ3N0dmFhcGktZWdsLmxhCisgZW5kaWYKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLXZhYXBzaW5rLWRvd25ncmFkZS10by1tYXJnaW5hbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLXZhYXBzaW5rLWRvd25ncmFkZS10by1tYXJnaW5hbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODYxZjNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtdmFhcHNpbmstZG93bmdyYWRlLXRvLW1hcmdpbmFsLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gMGMyOGNmN2JmYTkwZjg5NDc4MzM3MjJjZGRmMjNkNTEzNDkwYzZjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDI4IE5vdiAyMDE4IDE1OjA4OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHZhYXBzaW5rOiBkb3duZ3JhZGUgdG8gbWFyZ2luYWwKKworVXNpbmcgdmFhcGlzaW5rIHdpdGggZGVmYXVsdCBwb2t5IGNvbmZpZ3VyYXRpb24gcmVzdWx0cyBpbiBhbgordW5yZXNwb25zaXZlIGRpc3BsYXkgYXMgb2YgdG9kYXkgYmVjYXVzZSBEUkkyIHJlbmRlcmluZyBpcyBjdXJyZW50bHkgYnJva2VuCitpbiBub24gY29tcG9zaXRlZCBlbnZpcm9ubWVudHMgWzFdIGFuZCBsaWJ2YSBkb2Vzbid0IHN1cHBvcnQgRFJJMyBbMl0uCisKK0Rvd25ncmFkZSB2YWFwaXNpbmsgdG8gbWFyZ2luYWwgZm9yIG5vdyBzbyBwbGF5YmluIChhbmQgaW4gdHVybiBnc3QtcGxheQorYW5kIGd0ay1wbGF5IGV4YW1wbGVzKSB1c2UgeHZpbWFnZXNpbmsgb3Igb3RoZXJzIG91dCBvZiBib3guCisKK1sxXSBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL2lzc3Vlcy8xMworWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9pc3N1ZXMvMTIyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgZ3N0L3ZhYXBpL2dzdHZhYXBpLmMgfCA2ICstLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC92YWFwaS9nc3R2YWFwaS5jIGIvZ3N0L3ZhYXBpL2dzdHZhYXBpLmMKK2luZGV4IDlhODI0NTQuLjRkOTRmMmIgMTAwNjQ0CistLS0gYS9nc3QvdmFhcGkvZ3N0dmFhcGkuYworKysrIGIvZ3N0L3ZhYXBpL2dzdHZhYXBpLmMKK0BAIC0yMTAsNyArMjEwLDYgQEAgcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKKyB7CisgICBHc3RWYWFwaURpc3BsYXkgKmRpc3BsYXk7CisgICBHQXJyYXkgKmRlY29kZXJzOworLSAgZ3VpbnQgcmFuazsKKyAKKyAgIHBsdWdpbl9hZGRfZGVwZW5kZW5jaWVzIChwbHVnaW4pOworIAorQEAgLTIzNSwxMCArMjM0LDcgQEAgcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKKyAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ2YWFwaWRlY29kZWJpbiIsCisgICAgICAgR1NUX1JBTktfUFJJTUFSWSArIDIsIEdTVF9UWVBFX1ZBQVBJX0RFQ09ERV9CSU4pOworIAorLSAgcmFuayA9IEdTVF9SQU5LX1BSSU1BUlk7CistICBpZiAoZ19nZXRlbnYgKCJXQVlMQU5EX0RJU1BMQVkiKSkKKy0gICAgcmFuayA9IEdTVF9SQU5LX01BUkdJTkFMOworLSAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInZhYXBpc2luayIsIHJhbmssIEdTVF9UWVBFX1ZBQVBJU0lOSyk7CisrICBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAidmFhcGlzaW5rIiwgR1NUX1JBTktfTUFSR0lOQUwsIEdTVF9UWVBFX1ZBQVBJU0lOSyk7CisgCisgI2lmIFVTRV9FTkNPREVSUworICAgZ3N0X3ZhYXBpZW5jb2RlX3JlZ2lzdGVyIChwbHVnaW4sIGRpc3BsYXkpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZjIzMDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCi1TUkNfVVJJW21kNXN1bV0gPSAiMjE0OTk4MmNkYjM0ODEzOWJjYTk0NmJiNjM3NjZmNGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWMyZDc3MjQyZTFmMzBjNGQxMzk0NjM2Y2FlOWY2ODc3MjI4YTAxNzk2MGZjYTk2ODgxZTAwODBkOGI2ZTljOSIKLQotREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlZDJmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE0LjIuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJWQS1BUEkgc3VwcG9ydCB0byBHU3RyZWFtZXIiCitERVNDUklQVElPTiA9ICJnc3RyZWFtZXItdmFhcGkgY29uc2lzdHMgb2YgYSBjb2xsZWN0aW9uIG9mIFZBLUFQSSBcCitiYXNlZCBwbHVnaW5zIGZvciBHU3RyZWFtZXIgYW5kIGhlbHBlciBsaWJyYXJpZXM6IGB2YWFwaWRlY29kZScsIFwKK2B2YWFwaWNvbnZlcnQnLCBhbmQgYHZhYXBpc2luaycuIgorCitSRUFMUE4gPSAiZ3N0cmVhbWVyLXZhYXBpIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UkVBTFBOfS8ke1JFQUxQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhYXBzaW5rLWRvd25ncmFkZS10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjEyZWU5YzE2ZGZhMGJiMTgwOGM3NjY4M2UxYzlhMzI4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMTA2NGUyN2Y1YWJkM2E0MmVmNjZiNDI1ZjFhMmI5ZGJhZTc3NDhjODFiZDlkMDkwY2U1MmExYWFmMzBkOGEiCisKK1MgPSAiJHtXT1JLRElSfS8ke1JFQUxQTn0tJHtQVn0iCitERVBFTkRTID0gImxpYnZhIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorCisjIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAorIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCisjIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgorUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKKyAgICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLHVkZXYgbGliZHJtIgorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4cmFuZHIgbGlieHJlbmRlciIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLnNvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5hIgorRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJkZjFmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgotREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKLUl0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIrIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIFRoaXMgd2F5IGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHdpbGwgY29tZSBmaXJzdAotIyAoaXQgaGFzIGEgY3VzdG9tIElOVFJPU1BFQ1RJT05fSU5JVCBtYWNybywgYW5kIHNvIG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mIG91ciBjb21tb24gaW50cm9zcGVjdGlvbi5tNCBmaWxlKQotYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi0KLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCwiCi1QQUNLQUdFQ09ORklHW2dzdC10cmFjZXItaG9va3NdID0gIi0tZW5hYmxlLWdzdC10cmFjZXItaG9va3MsLS1kaXNhYmxlLWdzdC10cmFjZXItaG9va3MsIgotUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0td2l0aC11bndpbmQsLS13aXRob3V0LXVud2luZCxsaWJ1bndpbmQiCi1QQUNLQUdFQ09ORklHW2R3XSA9ICItLXdpdGgtZHcsLS13aXRob3V0LWR3LGVsZnV0aWxzIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCi0gICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPW5vIgotCi0jIG11c2wgbGliYyBnZW5lcmF0ZXMgd2FybmluZ3MgaWYgPHN5cy9wb2xsLmg+IGlzIGluY2x1ZGVkIGRpcmVjdGx5Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX3N5c19wb2xsX2g9bm8iCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1iYXNoLWNvbXBsZXRpb24iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhICR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC9pbmNsdWRlIgotRklMRVNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICIke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy8gJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vaGVscGVycy9nc3QqIgotCi1SUkVDT01NRU5EU18ke1BOfV9xZW11eDg2ICs9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCi1SUkVDT01NRU5EU18ke1BOfV9xZW11eDg2LTY0ICs9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLSAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQotICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC8ubGliczoke0J9L2xpYnMvZ3N0L2Jhc2UvLmxpYnMiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFiMjM5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7UFZ9LnRhci54eiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiOWQyNjhmMmU4OTFjY2UxYWMwODMyZjFjYzQ2N2Q0ZWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWE4NzA0YWE0YzJlZWIwNGRhMTkyYzRhOTk0MmY5NGY4NjBhYzFhNTg1ZGU5MGQ5ZjkxNGJhYzI2YTk3MDY3NCIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKLQotQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E2ZTUzZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE0LjIuYmIKQEAgLTAsMCArMSw5MCBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKK0l0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIrIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBwdGVzdAorCisjIFRoaXMgd2F5IGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHdpbGwgY29tZSBmaXJzdAorIyAoaXQgaGFzIGEgY3VzdG9tIElOVFJPU1BFQ1RJT05fSU5JVCBtYWNybywgYW5kIHNvIG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mIG91ciBjb21tb24gaW50cm9zcGVjdGlvbi5tNCBmaWxlKQorYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCisKK1MgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBcCisgICAgZmlsZTovL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZjQxNzdjMTc1MmU0NGNiZDcyZjYzMTFlZTYxZTFiYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YmQ2MTI3Mjk5ZjNmMjkzNzkwNDZiYmQ1OGE1MjZlNjM1M2I1NjllMGU3MmY3YjRkZjJhZTcwZGY2ODgyZTA5IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKK1BBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCitQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCisiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyIKKworIyBtdXNsIGxpYmMgZ2VuZXJhdGVzIHdhcm5pbmdzIGlmIDxzeXMvcG9sbC5oPiBpcyBpbmNsdWRlZCBkaXJlY3RseQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9zeXNfcG9sbF9oPW5vIgorCitQQUNLQUdFUyArPSAiJHtQTn0tYmFzaC1jb21wbGV0aW9uIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKK0ZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCisKK2RlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKKyAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KKyAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQorICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKK30KKworZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC8ubGliczoke0J9L2xpYnMvZ3N0L2Jhc2UvLmxpYnMiCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgYnVpbGQtY2hlY2tzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMvY2hlY2sgREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBpbnN0YWxsLXB0ZXN0CisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vdGVzdHMvY2hlY2svTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAorICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCisgICAgICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAorICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KKworQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvZmlsZXMvQ1ZFLTIwMTgtMTM3ODUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9maWxlcy9DVkUtMjAxOC0xMzc4NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRiMWFmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9maWxlcy9DVkUtMjAxOC0xMzc4NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gOGEwNTc2NmNiNzRhZjA1YzA0YzUzZTZjOWQ2MGMxM2ZjNGQ1OWJmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENvc21pbiBUcnV0YSA8Y3RydXRhQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTcgSnVuIDIwMTggMjI6NTY6MjkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gW2xpYnBuZzE2XSBGaXggdGhlIGNhbGN1bGF0aW9uIG9mIHJvd19mYWN0b3IgaW4KLSBwbmdfY2hlY2tfY2h1bmtfbGVuZ3RoCi0KLShCdWcgcmVwb3J0IGJ5IFRodWFuIFBoYW0sIFNvdXJjZUZvcmdlIGlzc3VlICMyNzgpCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vZ2xlbm5ycC9saWJwbmcvY29tbWl0LzhhMDU3NjZjYjc0YWYwNWMwNGM1M2U2YzlkNjBjMTNmYzRkNTliZjJdCi1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gcG5ncnV0aWwuYyB8IDkgKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BuZ3J1dGlsLmMgYi9wbmdydXRpbC5jCi1pbmRleCA5NTU3MWI1MTcuLjViYTk5NWFiZiAxMDA2NDQKLS0tLSBhL3BuZ3J1dGlsLmMKLSsrKyBiL3BuZ3J1dGlsLmMKLUBAIC0zMTY3LDEwICszMTY3LDEzIEBAIHBuZ19jaGVja19jaHVua19sZW5ndGgocG5nX2NvbnN0X3N0cnVjdHJwIHBuZ19wdHIsIGNvbnN0IHBuZ191aW50XzMyIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgcG5nX2FsbG9jX3NpemVfdCBpZGF0X2xpbWl0ID0gUE5HX1VJTlRfMzFfTUFYOwotICAgICAgIHNpemVfdCByb3dfZmFjdG9yID0KLS0gICAgICAgICAocG5nX3B0ci0+d2lkdGggKiBwbmdfcHRyLT5jaGFubmVscyAqIChwbmdfcHRyLT5iaXRfZGVwdGggPiA4PyAyOiAxKQotLSAgICAgICAgICArIDEgKyAocG5nX3B0ci0+aW50ZXJsYWNlZD8gNjogMCkpOwotKyAgICAgICAgIChzaXplX3QpcG5nX3B0ci0+d2lkdGgKLSsgICAgICAgICAqIChzaXplX3QpcG5nX3B0ci0+Y2hhbm5lbHMKLSsgICAgICAgICAqIChwbmdfcHRyLT5iaXRfZGVwdGggPiA4PyAyOiAxKQotKyAgICAgICAgICsgMQotKyAgICAgICAgICsgKHBuZ19wdHItPmludGVybGFjZWQ/IDY6IDApOwotICAgICAgIGlmIChwbmdfcHRyLT5oZWlnaHQgPiBQTkdfVUlOVF8zMl9NQVgvcm93X2ZhY3RvcikKLS0gICAgICAgICBpZGF0X2xpbWl0PVBOR19VSU5UXzMxX01BWDsKLSsgICAgICAgICBpZGF0X2xpbWl0ID0gUE5HX1VJTlRfMzFfTUFYOwotICAgICAgIGVsc2UKLSAgICAgICAgICBpZGF0X2xpbWl0ID0gcG5nX3B0ci0+aGVpZ2h0ICogcm93X2ZhY3RvcjsKLSAgICAgICByb3dfZmFjdG9yID0gcm93X2ZhY3RvciA+IDMyNTY2PyAzMjU2NiA6IHJvd19mYWN0b3I7Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg3N2Q2Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMaWJwbmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZGI3MTdhMDVhMjBlMzZmMmZhNjczMjY1YmQzMTU2OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9M2FjOWZkMjUwYTg3ODZhZTU4MWUzNDI1NGJmNzk0MjkiCi1ERVBFTkRTID0gInpsaWIiCi0KLUxJQlYgPSAiMTYiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEzNzg1LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMDViNmNhNzE5MGE1ZTM4N2I3ODY1N2RiZTU1MzZiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZjFlOTYwZDkyY2UzYjNhYmQwM2QwNmRmZWM5NjM3ZGZiZDIyZmViZjEwN2E1MzZiNDRmN2E0N2M2MDY1OWY2IgotCi1NSVJST1JTICs9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8gJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vb2xkZXItcmVsZWFzZXMvJHtQVn0vIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2xpYnBuZy5vcmcvcHViL3BuZy9saWJwbmcuaHRtbCIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHN5bWJvbHMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9mZiIgLGQpfSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vcG5nLWZpeC1pdHh0ICR7YmluZGlyfS9wbmdmaXggJHtiaW5kaXJ9L3BuZ2NwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWUwYTkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxpYnBuZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQ3OTEzODFhNzZmMTA2YWM0Njk5ZjYyNjFjNjVlZTI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTQ0O21kNT0wOTBiYTU3Njk3ODJlOGExNjYzYTQ1ZmFiMWMyYjM2YyBcCisgICAgICAgICAgICAgICAgICAgICIKK0RFUEVORFMgPSAiemxpYiIKKworTElCViA9ICIxNiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNjc4YjdlNjk2YTYyYTE5M2VkMzUwM2IwNGJmNDQ5ZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM5MTJlYzhjOTU4NDkxN2VkOWIwOWM1MDIzNDY1ZDcxNzA5ZGNlMDg5YmU1MDNjNzg2N2ZlYzY4YTkzYmNkNyIKKworTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJwbmcub3JnL3B1Yi9wbmcvbGlicG5nLmh0bWwiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItY2xhbmcucGF0Y2gKaW5kZXggN2RhZDBjZC4uYjA2MDI5YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsYW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0NGI0NTExNzg0ZjliNTFjNTE0ZGZmNGNlYjNjYmVhZjljMzc0ZDA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNjE5Y2NmNmMxMWFiNTc0NDY2OTE0YzU3OTk0YTgyZmI5OTQwMWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjIgTWFyIDIwMTcgMTY6MDY6NTUgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBDaGVjayBmb3IgY2xhbmcKQEAgLTEzLDEyICsxMywxMiBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlZGRkMDJkLi4wMGVjYmE1IDEwMDY0NAoraW5kZXggMjhiMGExNC4uMmQ0ZTk4NCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTMsNiArOTMsMTYgQEAgQUNfQVJHX0VOQUJMRShleGFtcGxlcywKLSAgCQotIEFNX0NPTkRJVElPTkFMKEJVSUxEX0VYQU1QTEVTLCBbdGVzdCAieCRlbmFibGVfZXhhbXBsZXMiID0geHllc10pIAorQEAgLTk4LDYgKzk4LDE2IEBAIEFDX0FSR19FTkFCTEUoZXhhbXBsZXMsCisgCisgQU1fQ09ORElUSU9OQUwoQlVJTERfRVhBTVBMRVMsIFt0ZXN0ICJ4JGVuYWJsZV9leGFtcGxlcyIgPSB4eWVzXSkKICAKICtBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgQyBjb21waWxlciBpcyBjbGFuZ10pCiArJENDIC14IGMgL2Rldi9udWxsIC1kTSAtRSA+IGNvbmZ0ZXN0LnR4dCAyPiYxCkBAIC0zMyw5ICszMyw5IEBACiAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZG5sIFNldCBidWlsZCBmbGFncyBiYXNlZCBvbiBlbnZpcm9ubWVudAogIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQEAgLTEyNywxMCArMTM3LDE1IEBAIGVsc2UKK0BAIC0xMzIsMTAgKzE0MiwxNSBAQCBlbHNlCiAgCUFDX01TR19SRVNVTFQoWyRHQ0NfVkVSU0lPTl0pCi0gCWNhc2UgJGhvc3QgaW4gCisgCWNhc2UgJGhvc3QgaW4KICAJKjg2LSotbGludXgqKQogKwkJaWYgdGVzdCAiJENDX0NMQU5HIiA9ICIxIjsgdGhlbgogKwkJCWllZWVmcD0iIgpAQCAtNDMsOCArNDMsOCBAQAogKwkJCWllZWZwPSItbW5vLWllZWUtZnAiCiArCQlmaQogIAkJREVCVUc9Ii1nIC1XYWxsIC1XZXh0cmEgLURfUkVFTlRSQU5UIC1EX19OT19NQVRIX0lOTElORVMgLWZzaWduZWQtY2hhciIKLS0JCUNGTEFHUz0iLU8zIC1mZmFzdC1tYXRoIC1tbm8taWVlZS1mcCAtRF9SRUVOVFJBTlQgLWZzaWduZWQtY2hhciIKLSsJCUNGTEFHUz0iLU8zIC1mZmFzdC1tYXRoIC1EX1JFRU5UUkFOVCAtZnNpZ25lZC1jaGFyICR7aWVlZnB9IgorLQkJQ0ZMQUdTPSItTzMgLVdhbGwgLVdleHRyYSAtZmZhc3QtbWF0aCAtbW5vLWllZWUtZnAgLURfUkVFTlRSQU5UIC1mc2lnbmVkLWNoYXIiCisrCQlDRkxBR1M9Ii1PMyAtV2FsbCAtV2V4dHJhIC1mZmFzdC1tYXRoIC1EX1JFRU5UUkFOVCAtZnNpZ25lZC1jaGFyICR7aWVlZnB9IgogICMgICAgICAgICAgICAgIAlQUk9GSUxFPSItV2FsbCAtV2V4dHJhIC1wZyAtZyAtTzMgLWZmYXN0LW1hdGggLURfUkVFTlRSQU5UIC1mc2lnbmVkLWNoYXIgLWZuby1pbmxpbmUgLXN0YXRpYyIKIC0JCVBST0ZJTEU9Ii1XYWxsIC1XZXh0cmEgLXBnIC1nIC1PMyAtZmZhc3QtbWF0aCAtbW5vLWllZWUtZnAgLURfUkVFTlRSQU5UIC1mc2lnbmVkLWNoYXIgLWZuby1pbmxpbmUiCiArCQlQUk9GSUxFPSItV2FsbCAtV2V4dHJhIC1wZyAtZyAtTzMgLWZmYXN0LW1hdGggJHtpZWVmcH0gLURfUkVFTlRSQU5UIC1mc2lnbmVkLWNoYXIgLWZuby1pbmxpbmUiCkBAIC01Miw1ICs1Miw1IEBACiAgCQkjIGdsaWJjIDwgMi4xLjMgaGFzIGEgc2VyaW91cyBGUCBidWcgaW4gdGhlIG1hdGggaW5saW5lIGhlYWRlcgogIAkJIyB0aGF0IHdpbGwgY3JpcHBsZSBWb3JiaXMuICBMb29rIHRvIHNlZSBpZiB0aGUgbWFnaWMgRlAgc3RhY2sKIC0tIAotMS44LjMuMQorMi4xNy4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDE2MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDE2MC5wYXRjaAppbmRleCA3NTY0ZDkyLi5iNzYwM2MzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQxNjAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0MTYwLnBhdGNoCkBAIC0zLDE0ICszLDE1IEBACiBEYXRlOiBXZWQsIDkgTWF5IDIwMTggMTQ6NTY6NTkgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTctMTQxNjA6IGZpeCBib3VuZHMgY2hlY2sgb24gdmVyeSBsb3cgc2FtcGxlIHJhdGVzLgogCi1DVkU6IENWRS0yMDE3LTE0MTYwCi1DVkU6IENWRS0yMDE4LTEwMzkzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGZyb20gaHR0cHM6Ly9naXRsYWIueGlwaC5vcmcveGlwaC92b3JiaXMvY29tbWl0LzAxOGNhMjZkZWNlNjE4NDU3ZGQxMzU4NWNhZDUyOTQxMTkzYzRhMjUKLQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIERhZWRlIDxkYWVkZTAwM0B1bW4uZWR1PgotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgogLS0tCi0gbGliL3BzeS5jIHwgMyArKy0KK0NWRTogQ1ZFLTIwMTctMTQxNjAgQ1ZFLTIwMTgtMTAzOTMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0bGFiLmNvbS9YaXBoLk9yZy9Wb3JiaXMvQ29tbWl0cy8wMThjYTI2ZC4uLl0KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorLS0tCistLS0KKyBsaWIvcHN5LmMgfCAgICAzICsrLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpYi9wc3kuYyBiL2xpYi9wc3kuYwpAQCAtMjksNSArMzAsNSBAQAogICAgICB0TiA9IE5baGldICsgTlstbG9dOwogICAgICB0WCA9IFhbaGldIC0gWFstbG9dOwogLS0gCi0yLjcuNAorMS43LjkuNQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMzZiOTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSAzOTcwNGNlMTY4MzVlNWMwMTliYjAzZjZhOTRkYzFmMDY3NzQwNmM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0d1aWRvPTIwRz1DMz1CQ250aGVyPz0gPGFneEBzaWd4Y3B1Lm9yZz4KLURhdGU6IFdlZCwgMTUgTm92IDIwMTcgMTg6MjI6NTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTctMTQ2MzI6IHZvcmJpc19hbmFseXNpc19oZWFkZXJfb3V0OiBEb24ndCBjbGVhciBvcGIKLSBpZiBub3QgaW5pdGlhbGl6ZWQKLQotSWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgd2l0aGluIHRoZSBhbGxvd2VkIHJhbmdlCi13ZSBjYWxsIG9nZ2JhY2tfd3JpdGVjbGVhciBhbHRvdWdoIGl0J3Mgbm90IGluaXRpYWxpemVkIHlldC4KLQotVGhpcyBmaXhlcwotCi0gICAgPTIzMzcxPT0gSW52YWxpZCBmcmVlKCkgLyBkZWxldGUgLyBkZWxldGVbXSAvIHJlYWxsb2MoKQotICAgID09MjMzNzE9PSAgICBhdCAweDRDMkNFMUI6IGZyZWUgKHZnX3JlcGxhY2VfbWFsbG9jLmM6NTMwKQotICAgID09MjMzNzE9PSAgICBieSAweDgyOUNBMzE6IG9nZ3BhY2tfd3JpdGVjbGVhciAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJvZ2cuc28uMC44LjIpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4ODRCOTZFRTogdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCAoaW5mby5jOjY1MikKLSAgICA9PTIzMzcxPT0gICAgYnkgMHg5RkJDQkNDOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvc294L2xpYnNveF9mbXRfdm9yYmlzLnNvKQotICAgID09MjMzNzE9PSAgICBieSAweDRFNTI0RjE6ID8/PyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1MkNDQTogc294X29wZW5fd3JpdGUgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQotICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogb3Blbl9vdXRwdXRfZmlsZSAoc294LmM6MTU1NikKLSAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IHByb2Nlc3MgKHNveC5jOjE3NTMpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBtYWluIChzb3guYzozMDEyKQotICAgID09MjMzNzE9PSAgQWRkcmVzcyAweDY4NzY4YzggaXMgNDg4IGJ5dGVzIGluc2lkZSBhIGJsb2NrIG9mIHNpemUgODgwIGFsbG9jJ2QKLSAgICA9PTIzMzcxPT0gICAgYXQgMHg0QzJCQjFGOiBtYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6Mjk4KQotICAgID09MjMzNzE9PSAgICBieSAweDRDMkRFOUY6IHJlYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6Nzg1KQotICAgID09MjMzNzE9PSAgICBieSAweDRFNTQ1QzI6IGxzeF9yZWFsbG9jIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKLSAgICA9PTIzMzcxPT0gICAgYnkgMHg5RkJDOUEwOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvc294L2xpYnNveF9mbXRfdm9yYmlzLnNvKQotICAgID09MjMzNzE9PSAgICBieSAweDRFNTI0RjE6ID8/PyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1MkNDQTogc294X29wZW5fd3JpdGUgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQotICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogb3Blbl9vdXRwdXRfZmlsZSAoc294LmM6MTU1NikKLSAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IHByb2Nlc3MgKHNveC5jOjE3NTMpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBtYWluIChzb3guYzozMDEyKQotCi1hcyBzZWVuIHdoZW4gdXNpbmcgdGhlIHRlc3RjYXNlIGZyb20gQ1ZFLTIwMTctMTEzMzMgd2l0aAotMDA4ZDIzYjc4MmJlMDljOGQ3NWJhODE5MGIxNzk0YWJkNjZjNzEyMSBhcHBsaWVkLiBIb3dldmVyIHRoZSBlcnJvciB3YXMKLXRoZXJlIGJlZm9yZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNDYzMgotCi1SZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6Ci1odHRwczovL2dpdC54aXBoLm9yZy8/cD12b3JiaXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPWMxYzI4MzFmYzczMDZkNWZiZDdiYzgwMDMyNGVmZDEyYjI4ZDMyN2YKLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gbGliL2luZm8uYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGliL2luZm8uYyBiL2xpYi9pbmZvLmMKLWluZGV4IDgxYjc1NTcuLjRkODI1NjggMTAwNjQ0Ci0tLS0gYS9saWIvaW5mby5jCi0rKysgYi9saWIvaW5mby5jCi1AQCAtNTg0LDYgKzU4NCw3IEBAIGludCB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyb3V0KHZvcmJpc19kc3Bfc3RhdGUgKnYsCi0gICBwcml2YXRlX3N0YXRlICpiPXYtPmJhY2tlbmRfc3RhdGU7Ci0gCi0gICBpZighYnx8dmktPmNoYW5uZWxzPD0wfHx2aS0+Y2hhbm5lbHM+MjU2KXsKLSsgICAgYiA9IE5VTEw7Ci0gICAgIHJldD1PVl9FRkFVTFQ7Ci0gICAgIGdvdG8gZXJyX291dDsKLSAgIH0KLS0tIAotMi4xNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM5ZTY4OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDA3ZWRhNTVmMzM2ZTVjNDRkZmMwZTRhMWUyMTYyOGZhZWQ3MjU1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/R3VpZG89MjBHPUMzPUJDbnRoZXI/PSA8YWd4QHNpZ3hjcHUub3JnPgotRGF0ZTogVHVlLCAzMSBPY3QgMjAxNyAxODozMjo0NiArMDEwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNy0xNDYzMzogRG9uJ3QgYWxsb3cgZm9yIG1vcmUgdGhhbiAyNTYgY2hhbm5lbHMKLQotT3RoZXJ3aXNlCi0KLSBmb3IoaT0wO2k8dmktPmNoYW5uZWxzO2krKyl7Ci0gICAgICAvKiB0aGUgZW5jb2RlciBzZXR1cCBhc3N1bWVzIHRoYXQgYWxsIHRoZSBtb2RlcyB1c2VkIGJ5IGFueQotICAgICAgICAgc3BlY2lmaWMgYml0cmF0ZSB0d2Vha2luZyB1c2UgdGhlIHNhbWUgZmxvb3IgKi8KLSAgICAgIGludCBzdWJtYXA9aW5mby0+Y2htdXhsaXN0W2ldOwotCi1vdmVycmVhZHMgbGF0ZXIgaW4gbWFwcGluZzBfZm9yd2FyZCBzaW5jZSBjaG11eGxpc3QgaXMgYSBmaXhlZCBhcnJheSBvZgotMjU2IGVsZW1lbnRzIG1heC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNDYzMwotCi1SZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6Ci1odHRwczovL2dpdC54aXBoLm9yZy8/cD12b3JiaXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTY2N2NlYjRhYWI2MGMxZjc0MDYwMTQzYmIyNGU1ZjQyN2IzY2NlNWYKLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gbGliL2luZm8uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCi1pbmRleCBlNDQ3YTBjLi44MWI3NTU3IDEwMDY0NAotLS0tIGEvbGliL2luZm8uYwotKysrIGIvbGliL2luZm8uYwotQEAgLTU4Myw3ICs1ODMsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAotICAgb2dncGFja19idWZmZXIgb3BiOwotICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOwotIAotLSAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MCl7Ci0rICBpZighYnx8dmktPmNoYW5uZWxzPD0wfHx2aS0+Y2hhbm5lbHM+MjU2KXsKLSAgICAgcmV0PU9WX0VGQVVMVDsKLSAgICAgZ290byBlcnJfb3V0OwotICAgfQotLS0gCi0yLjE2LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTEwMzkyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTEwMzkyLnBhdGNoCmluZGV4IGYxZWY2ZmIuLmI3OTM2YjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxOC0xMDM5Mi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtMTAzOTIucGF0Y2gKQEAgLTQsMTQgKzQsMTkgQEAKIFN1YmplY3Q6IFtQQVRDSF0gU2FuaXR5IGNoZWNrIG51bWJlciBvZiBjaGFubmVscyBpbiBzZXR1cC4KIAogRml4ZXMgIzIzMzUuCi1DVkU6IENWRS0yMDE4LTEwMzkyCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi54aXBoLm9yZy94aXBoL3ZvcmJpcy9jb21taXQvMTEyZDNiZDBhYWFjYWQ1MTMwNWUxNDY0ZDRiMzgxZGFiYWQwZTg4Yl0KIAotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgogLS0tCi0gbGliL3ZvcmJpc2VuYy5jIHwgMSArCitDVkU6IENWRS0yMDE4LTEwMzkyCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdGxhYi5jb20vWGlwaC5PcmcvVm9yYmlzL0NvbW1pdHMvMTEyZDNiZC4uLl0KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorLS0tCisKKyBsaWIvdm9yYmlzZW5jLmMgfCAgICAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAorCiBkaWZmIC0tZ2l0IGEvbGliL3ZvcmJpc2VuYy5jIGIvbGliL3ZvcmJpc2VuYy5jCiBpbmRleCA0ZmM3YjYyLi42NGE1MWI1IDEwMDY0NAogLS0tIGEvbGliL3ZvcmJpc2VuYy5jCkBAIC0yNSw1ICszMCw1IEBACiAgCiAgICAvKiB0b28gbG93L2hpZ2ggYW4gQVRIIGZsb2F0ZXIgaXMgbm9uc2Vuc2ljYWwsIGJ1dCBkb2Vzbid0IGJyZWFrIGFueXRoaW5nICovCiAtLSAKLTIuMTMuMworMS43LjkuNQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtNTE0Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxOC01MTQ2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDQwNTJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxOC01MTQ2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLUZyb20gM2EwMTdmNTkxNDU3YmY2ZTgwMjMxYjU2M2JmODNlZTU4M2ZkYmNhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBEYWVkZSA8ZGFlZGUwMDNAdW1uLmVkdT4KLURhdGU6IFRodSwgMTUgTWFyIDIwMTggMTQ6MTU6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTgtNTE0NjogUHJldmVudCBvdXQtb2YtYm91bmRzIHdyaXRlIGluIGNvZGVib29rCi0gZGVjb2RpbmcuCi0KLUNvZGVib29rcyB0aGF0IGFyZSBub3QgYW4gZXhhY3QgZGl2aXNvciBvZiB0aGUgcGFydGl0aW9uIHNpemUgYXJlIG5vdwotdHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIHBhcnRpdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOC01MTQ2Ci0KLVJlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKLWh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9NjY3Y2ViNGFhYjYwYzFmNzQwNjAxNDNiYjI0ZTVmNDI3YjNjY2U1ZgotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBsaWIvY29kZWJvb2suYyB8IDQ4ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9jb2RlYm9vay5jIGIvbGliL2NvZGVib29rLmMKLWluZGV4IDhiNzY2ZTguLjcwMjJmZDIgMTAwNjQ0Ci0tLS0gYS9saWIvY29kZWJvb2suYwotKysrIGIvbGliL2NvZGVib29rLmMKLUBAIC0zODcsNyArMzg3LDcgQEAgbG9uZyB2b3JiaXNfYm9va19kZWNvZGV2c19hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKmEsb2dncGFja19idWZmZXIgKmIsaW50IG4pewotICAgICAgIHRbaV0gPSBib29rLT52YWx1ZWxpc3QrZW50cnlbaV0qYm9vay0+ZGltOwotICAgICB9Ci0gICAgIGZvcihpPTAsbz0wO2k8Ym9vay0+ZGltO2krKyxvKz1zdGVwKQotLSAgICAgIGZvciAoaj0wO2o8c3RlcDtqKyspCi0rICAgICAgZm9yIChqPTA7bytqPG4gJiYgajxzdGVwO2orKykKLSAgICAgICAgIGFbbytqXSs9dFtqXVtpXTsKLSAgIH0KLSAgIHJldHVybigwKTsKLUBAIC0zOTksNDEgKzM5OSwxMiBAQCBsb25nIHZvcmJpc19ib29rX2RlY29kZXZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICphLG9nZ3BhY2tfYnVmZmVyICpiLGludCBuKXsKLSAgICAgaW50IGksaixlbnRyeTsKLSAgICAgZmxvYXQgKnQ7Ci0gCi0tICAgIGlmKGJvb2stPmRpbT44KXsKLS0gICAgICBmb3IoaT0wO2k8bjspewotLSAgICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOwotLSAgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7Ci0tICAgICAgICB0ICAgICA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07Ci0tICAgICAgICBmb3IgKGo9MDtqPGJvb2stPmRpbTspCi0tICAgICAgICAgIGFbaSsrXSs9dFtqKytdOwotLSAgICAgIH0KLS0gICAgfWVsc2V7Ci0tICAgICAgZm9yKGk9MDtpPG47KXsKLS0gICAgICAgIGVudHJ5ID0gZGVjb2RlX3BhY2tlZF9lbnRyeV9udW1iZXIoYm9vayxiKTsKLS0gICAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOwotLSAgICAgICAgdCAgICAgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOwotLSAgICAgICAgaj0wOwotLSAgICAgICAgc3dpdGNoKChpbnQpYm9vay0+ZGltKXsKLS0gICAgICAgIGNhc2UgODoKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgICBjYXNlIDc6Ci0tICAgICAgICAgIGFbaSsrXSs9dFtqKytdOwotLSAgICAgICAgY2FzZSA2OgotLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKLS0gICAgICAgIGNhc2UgNToKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgICBjYXNlIDQ6Ci0tICAgICAgICAgIGFbaSsrXSs9dFtqKytdOwotLSAgICAgICAgY2FzZSAzOgotLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKLS0gICAgICAgIGNhc2UgMjoKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgICBjYXNlIDE6Ci0tICAgICAgICAgIGFbaSsrXSs9dFtqKytdOwotLSAgICAgICAgY2FzZSAwOgotLSAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0KLS0gICAgICB9Ci0rICAgIGZvcihpPTA7aTxuOyl7Ci0rICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOwotKyAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOwotKyAgICAgIHQgICAgID0gYm9vay0+dmFsdWVsaXN0K2VudHJ5KmJvb2stPmRpbTsKLSsgICAgICBmb3Ioaj0wO2k8biAmJiBqPGJvb2stPmRpbTspCi0rICAgICAgICBhW2krK10rPXRbaisrXTsKLSAgICAgfQotICAgfQotICAgcmV0dXJuKDApOwotQEAgLTQ3MSwxMiArNDQyLDEzIEBAIGxvbmcgdm9yYmlzX2Jvb2tfZGVjb2RldnZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICoqYSxsb25nIG9mZnNldCxpbnQgY2gsCi0gICBsb25nIGksaixlbnRyeTsKLSAgIGludCBjaHB0cj0wOwotICAgaWYoYm9vay0+dXNlZF9lbnRyaWVzPjApewotLSAgICBmb3IoaT1vZmZzZXQvY2g7aTwob2Zmc2V0K24pL2NoOyl7Ci0rICAgIGludCBtPShvZmZzZXQrbikvY2g7Ci0rICAgIGZvcihpPW9mZnNldC9jaDtpPG07KXsKLSAgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7Ci0gICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7Ci0gICAgICAgewotICAgICAgICAgY29uc3QgZmxvYXQgKnQgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOwotLSAgICAgICAgZm9yIChqPTA7ajxib29rLT5kaW07aisrKXsKLSsgICAgICAgIGZvciAoaj0wO2k8bSAmJiBqPGJvb2stPmRpbTtqKyspewotICAgICAgICAgICBhW2NocHRyKytdW2ldKz10W2pdOwotICAgICAgICAgICBpZihjaHB0cj09Y2gpewotICAgICAgICAgICAgIGNocHRyPTA7Ci0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNWI1MzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJPZ2cgVm9yYmlzIEF1ZGlvIENvZGVjIgotREVTQ1JJUFRJT04gPSAiT2dnIFZvcmJpcyBpcyBhIGhpZ2gtcXVhbGl0eSBsb3NzeSBhdWRpbyBjb2RlYyBcCi10aGF0IGlzIGZyZWUgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJlc3RyaWN0aW9ucy4gbGlidm9yYmlzIFwKLWlzIHRoZSBtYWluIHZvcmJpcyBjb2RlYyBsaWJyYXJ5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudm9yYmlzLmNvbS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vdHJhYy54aXBoLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2QyYzQ4N2QyZmM3ZGQzZTNjN2M0NjVhNWI3ZjYyMTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS92b3JiaXMvdm9yYmlzZW5jLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZDFjMWQxMzg4NjNkNjMxNTEzMTE5M2Q0MDQ2ZDgxY2IiCi1ERVBFTkRTID0gImxpYm9nZyIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueGlwaC5vcmcvcmVsZWFzZXMvdm9yYmlzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQ2MzMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQ2MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtNTE0Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDM5Mi5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI4Y2IyODA5N2MwN2E3MzVkNmFmNTZlNTk4ZTFjOTBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0Zjk0YTk1MjdmZjBhODg0NzdiZTBhNzFjMGJhYjA5YTRjM2ZlYmUwZWQ4NzhiMjQ4MjQ5MDZjZDRiMGUxZDEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZGE2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJPZ2cgVm9yYmlzIEF1ZGlvIENvZGVjIgorREVTQ1JJUFRJT04gPSAiT2dnIFZvcmJpcyBpcyBhIGhpZ2gtcXVhbGl0eSBsb3NzeSBhdWRpbyBjb2RlYyBcCit0aGF0IGlzIGZyZWUgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJlc3RyaWN0aW9ucy4gbGlidm9yYmlzIFwKK2lzIHRoZSBtYWluIHZvcmJpcyBjb2RlYyBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudm9yYmlzLmNvbS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vdHJhYy54aXBoLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzBjNzA2MzQ5MWQyZDlmNzZhMDk4ZDYyZWQ1MTM0ZjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS92b3JiaXMvdm9yYmlzZW5jLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZDFjMWQxMzg4NjNkNjMxNTEzMTE5M2Q0MDQ2ZDgxY2IiCitERVBFTkRTID0gImxpYm9nZyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3ZvcmJpcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMzkyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTYwLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYjdkMTY5MmYyNzVjNzNlNzgzM2VkMWNjMjY5N2NkNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWYwMGJiNWE3ODRlN2M5ZTY5ZjU2ODIzZGU0NjM3YzM1MDY0M2RlZWRhZjMzM2QwZmE4NmVjZGJhNmZjYjQxNSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKaW5kZXggODE4OWE1Ni4uZjUyNjY5MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYwpAQCAtMTYsOSArMTYsNiBAQAogIyBUaGUgc3JjL3B1bHNlY29yZS9maWx0ZXIvIGRpcmVjdG9yeSBjb250YWlucyBjb2RlIHVuZGVyIHRoZSAzLWNsYXVzZSBCU0QKICMgbGljZW5zZS4KICMKLSMgc3JjL3V0aWxzL3FwYWVxIGlzIGxpY2Vuc2VkIHVuZGVyIEFHUEwuIHFwYWVxIGlzIG5vdCBpbnN0YWxsZWQgYnkgdGhpcwotIyByZWNpcGUsIGhvd2V2ZXIsIHdoaWNoIGlzIHdoeSBBR1BMIGlzIG5vdCBtZW50aW9uZWQgaW4gTElDRU5TRS4KLSMKICMgUGVvcGxlIHdobyBkaXN0cmlidXRlIFB1bHNlQXVkaW8gYmluYXJpZXMgbmVlZCB0byBhbHNvIGNvbnNpZGVyIHRoYXQgdGhlcmUKICMgYXJlIHNvbWUgZGVwZW5kZW5jaWVzIHRvIEdQTCBsaWJyYXJpZXMuIExHUEwgY29kZSB0aGF0IGRlcGVuZHMgb24gR1BMCiAjIGxpYnJhcmllcyBwcm9iYWJseSBiZWNvbWVzIGVmZmVjdGl2ZWx5IEdQTC1saWNlbnNlZCAoYXQgY29tcGlsZS10aW1lPyBvciBhdApAQCAtNDcsMTYgKzQ0LDE0IEBACiAjIHNlY3Rpb24gMywgYW5kIHRoZXJlZm9yZSBsaWJkYnVzJ3MgR1BMIGxpY2Vuc2UgZG9lc24ndCBhZmZlY3QgUHVsc2VBdWRpby4KIExJQ0VOU0UgPSAiTEdQTHYyLjErICYgTUlUICYgQlNELTMtQ2xhdXNlIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hODQ4ZThkMDNmMDQ5NzY3NzhlYWIyMzQ4YjU5ZWQyYiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZTVjZDkzOGRlMWE3YTUzZWE1YWRhYzM4Y2MxMGMzOSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEw7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEw7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0FHUEw7bWQ1PTczZjFlYjIwNTE3YzU1YmY5NDkzYjdkZDZlNDgwNzg4IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tb2R1bGVzL2VjaG8tY2FuY2VsL2Fkcmlhbi1saWNlbnNlLnR4dDttZDU9YWJiYWIwMDZhNTYxZmJmZmNjZWRmMWMzNTMxZjM0YWIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9maWx0ZXIvTElDRU5TRS5XRUJLSVQ7bWQ1PTQ5ZGVmYmFmZmRkZjhjNTFmYWY2MDZmZjdmYzNiMWY3IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wdWxzZWNvcmUvcmVzYW1wbGVyLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9MDk3OTQwMTJhZTE2OTEyYzAyNzBmMzI4MGNjOGZmODQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21vZHVsZXMvcmVzZXJ2ZS5oO2JlZ2lubGluZT02O2VuZGxpbmU9Mjg7bWQ1PTBlMjMwOTQ3NjAzNjdkNTFiNjYwOTc1MGU5YjMxZmJiIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wdWxzZWNvcmUvcnRraXQuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTI5O21kNT0zZjAwZmY5NjY3MTZhZTA4MTdjMzE1NzZkMTQ3MzUyOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdXRpbHMvcXBhZXE7YmVnaW5saW5lPTI7ZW5kbGluZT0xNjttZDU9N2Y2MjUxNWE0NzYyZjBjM2ZjM2Q0MjAxODU4YmI5NjQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21vZHVsZXMvZWNoby1jYW5jZWwvYWRyaWFuLWFlYy5oO2JlZ2lubGluZT0zO2VuZGxpbmU9MTI7bWQ1PWQzZWQ0ZmFkMWMwNzNmOGIwNmYzNzQ5NWRjNWQxMDI2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wdWxzZWNvcmUvZmlsdGVyL2JpcXVhZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9NDttZDU9NmQ0NmQxMzY1MjA2NTI4YTIwMTM3MzU1OTI0MjMzYzEgXAogIgpAQCAtOTMsMTAgKzg4LDYgQEAKICMgZGRiZDcxMzI5MyB3aXRob3V0IGV4cGxhaW5pbmcgd2h5IGl0IHdhcyBub3QgbWFkZSBhIFBBQ0tBR0VDT05GSUcgaXRlbQogIyBpbnN0ZWFkLiBPaCB3ZWxsLCBsZXQncyBrZWVwIGl0IGRpc2FibGVkIHVudGlsIHNvbWVvbmUgZXhwcmVzc2VzIHNvbWUKICMgaW50ZXJlc3QgaW4gaGF2aW5nIGl0IGVuYWJsZWQuCi0jCi0jIE9uZSBuaWNlIHRoaW5nIGFib3V0IGRpc2FibGluZyB0aGlzIGlzIHRoYXQgaXQgYWxzbyBwcmV2ZW50cyBxcGFlcSBmcm9tCi0jIGJlaW5nIGluc3RhbGxlZCwgc28gd2UgYXZvaWQgYWRkaW5nIEFHUEwgdG8gdGhlIGxpc3Qgb2YgbGljZW5zZXMgKG5vdGhpbmcKLSMgZWxzZSBpbiBQdWxzZUF1ZGlvIGlzIGxpY2Vuc2VkIHVuZGVyIEFHUEwpLgogRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtZmZ0dyIKIAogIyBUaGUgImFkcmlhbiIgZWNobyBjYW5jZWxsZXIgaW1wbGVtZW50YXRpb24gaGFzIGEgbm9uLXN0YW5kYXJkIGxpY2Vuc2UKQEAgLTEwNiw2ICs5NywxMCBAQAogIyB2ZXJ5IGdvb2QgYW55d2F5LCBiZXR0ZXIgYWx0ZXJuYXRpdmVzIGV4aXN0IChzdWNoIGFzIHRoZSB3ZWJydGMgY2FuY2VsbGVyKS4KIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWFkcmlhbi1hZWMiCiAKKyMgRklYTUU6IFRoZSBnc2V0dGluZ3MgbW9kdWxlIGlzIHRlbXBvcmFyaWx5IGRpc2FibGVkLCBiZWNhdXNlIGFkZGluZyBzdXBwb3J0CisjIGZvciBpdCBpcyBhIGJpdCBjb21wbGljYXRlZC4KK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdzZXR0aW5ncyIKKwogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd6ZXJvY29uZicsICdhdmFoaScsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnM2cnLCAnb2Zvbm8nLCAnJywgZCl9IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM5MWYzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1Gcm9tIDBjYjY2YzBjNWFhZmQ0OGI2M2E3NTU4NjA3NDZlNzBhZmIzMzJjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci1EYXRlOiBXZWQsIDI0IEphbiAyMDE4IDAzOjUxOjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1lbWZkLXdyYXBwZXJzOiBvbmx5IGRlZmluZSBtZW1mZF9jcmVhdGUoKSBpZiBub3QgYWxyZWFkeQotIGRlZmluZWQKLQotZ2xpYmMgMi4yNyBpcyB0byBiZSByZWxlYXNlZCBzb29uLCBhbmQgaXQgd2lsbCBwcm92aWRlIG1lbWZkX2NyZWF0ZSgpLgotSWYgZ2xpYmMgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uLCB3ZSBtdXN0IG5vdCBkZWZpbmUgaXQgb3Vyc2VsdmVzLAotb3RoZXJ3aXNlIGJ1aWxkaW5nIGZhaWxzIGR1ZSB0byBjb25mbGljdCBiZXR3ZWVuIHRoZSB0d28gaW1wbGVtZW50YXRpb25zCi1vZiB0aGUgc2FtZSBmdW5jdGlvbi4KLQotQnVnTGluazogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzMzCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTEzNjkyN10KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgfCAzICsrKwotIHNyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaCB8IDcgKysrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3N2I1ZmY1Li4zYTcxZmQ4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDcsNiArNjA3LDkgQEAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX21lbWZkIiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JEhBVkVfTUVNRkQiID0gIngwIl0sCi0gICAgIFtBQ19NU0dfRVJST1IoWyoqKiBZb3VyIExpbnV4IGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG1lbWZkIHNoYXJlZCBtZW1vcnkuCi0gICAgICAgICAgICAgICAgICAgKioqIFVzZSBsaW51eCB2My4xNyBvciBoaWdoZXIgZm9yIHN1Y2ggYSBmZWF0dXJlLl0pXSkKLSAKLStBU19JRihbdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MSJdLAotKyAgICBBQ19DSEVDS19GVU5DUyhbbWVtZmRfY3JlYXRlXSkpCi0rCi0gQUNfU1VCU1QoSEFWRV9NRU1GRCkKLSBBTV9DT05ESVRJT05BTChbSEFWRV9NRU1GRF0sIFt0ZXN0ICJ4JEhBVkVfTUVNRkQiID0geDFdKQotIEFTX0lGKFt0ZXN0ICJ4JEhBVkVfTUVNRkQiID0gIngxIl0sIEFDX0RFRklORShbSEFWRV9NRU1GRF0sIDEsIFtIYXZlIG1lbWZkIHNoYXJlZCBtZW1vcnkuXSkpCi1kaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oIGIvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCi1pbmRleCAzYmVkOWIyLi5jN2FhZGZkIDEwMDY0NAotLS0tIGEvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCi0rKysgYi9zcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmgKLUBAIC0yMCwxMyArMjAsMTQgQEAKLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCBQdWxzZUF1ZGlvOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotLSNpZmRlZiBIQVZFX01FTUZECi0rI2lmIGRlZmluZWQoSEFWRV9NRU1GRCkgJiYgIWRlZmluZWQoSEFWRV9NRU1GRF9DUkVBVEUpCi0gCi0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gCi0gLyoKLS0gKiBObyBnbGliYyB3cmFwcGVycyBleGlzdCBmb3IgbWVtZmRfY3JlYXRlKDIpLCBzbyBwcm92aWRlIG91ciBvd24uCi0rICogQmVmb3JlIGdsaWJjIHZlcnNpb24gMi4yNyB0aGVyZSB3YXMgbm8gd3JhcHBlciBmb3IgbWVtZmRfY3JlYXRlKDIpLAotKyAqIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBvdXIgb3duLgotICAqCi0gICogQWxzbyBkZWZpbmUgbWVtZmQgZmNudGwgc2VhbGluZyBtYWNyb3MuIFdoaWxlIHRoZXkgYXJlIGFscmVhZHkKLSAgKiBkZWZpbmVkIGluIHRoZSBrZXJuZWwgaGVhZGVyIGZpbGUgPGxpbnV4L2ZjbnRsLmg+LCB0aGF0IGZpbGUgYXMKLUBAIC02Myw2ICs2NCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWZkX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKLSAjZGVmaW5lIEZfU0VBTF9XUklURSAgICAweDAwMDggIC8qIHByZXZlbnQgd3JpdGVzICovCi0gI2VuZGlmCi0gCi0tI2VuZGlmIC8qIEhBVkVfTUVNRkQgKi8KLSsjZW5kaWYgLyogSEFWRV9NRU1GRCAmJiAhSEFWRV9NRU1GRF9DUkVBVEUgKi8KLSAKLSAjZW5kaWYKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLXBhZHNwLU1ha2UtaXQtY29tcGlsZS1vbi1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTU1OTk1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGY2YWIzYzNhYTdhMTg0MWM4YWRkMDQ4MjgwMjkzNTZkMmE4Yzg4ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA2IEFwciAyMDE1IDIxOjU2OjMxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBhZHNwOiBNYWtlIGl0IGNvbXBpbGUgb24gbXVzbAotCi1icmVhayBhc3N1bXB0aW9ucyBvbiBnbGliYyBhbmQgdGhlcmUgaXMgbm8gc3RhdDY0IG9uIG5vbgotZ2xpYmMgQyBsaWJyYXJpZXMKLQotU2VlIHB1bHNlYXVkaW8gYnVnCi0KLWh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MzE5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy91dGlscy9wYWRzcC5jIHwgMTUgKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91dGlscy9wYWRzcC5jIGIvc3JjL3V0aWxzL3BhZHNwLmMKLWluZGV4IGU2MTM3M2MuLjY4NDcyMWEgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbHMvcGFkc3AuYwotKysrIGIvc3JjL3V0aWxzL3BhZHNwLmMKLUBAIC0yMzY4LDcgKzIzNjgsNyBAQCBmYWlsOgotICAgICByZXR1cm4gcmV0OwotIH0KLSAKLS0jaWZkZWYgc3VuCi0rI2lmbmRlZiBfX0dMSUJDX18KLSBpbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCwgLi4uKSB7Ci0gI2Vsc2UKLSBpbnQgaW9jdGwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHJlcXVlc3QsIC4uLikgewotQEAgLTI1MDgsMTAgKzI1MDgsMTMgQEAgaW50IHN0YXQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpidWYpIHsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotLQotICNpZmRlZiBIQVZFX09QRU42NAotLQotKyN1bmRlZiBzdGF0NjQKLSsjaWZkZWYgX19HTElCQ19fCi0gaW50IHN0YXQ2NChjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQ2NCAqYnVmKSB7Ci0rI2Vsc2UKLStpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqYnVmKSB7Ci0rI2VuZGlmCi0gICAgIHN0cnVjdCBzdGF0IG9sZGJ1ZjsKLSAgICAgaW50IHJldDsKLSAKLUBAIC0yNTQ0LDcgKzI1NDcsNyBAQCBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpIHsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotLQotKyN1bmRlZiBvcGVuNjQKLSBpbnQgb3BlbjY0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikgewotICAgICB2YV9saXN0IGFyZ3M7Ci0gICAgIG1vZGVfdCBtb2RlID0gMDsKLUBAIC0yNjcwLDggKzI2NzMsOCBAQCBGSUxFKiBmb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSkgewotIH0KLSAKLSAjaWZkZWYgSEFWRV9PUEVONjQKLS0KLS1GSUxFICpmb3BlbjY0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlKSB7Ci0rI3VuZGVmIGZvcGVuNjQKLStGSUxFICpmb3BlbjY0KGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgZmlsZW5hbWUsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgbW9kZSkgewotIAotICAgICBkZWJ1ZyhERUJVR19MRVZFTF9WRVJCT1NFLCBfX0ZJTEVfXyI6IGZvcGVuNjQoJXMpXG4iLCBmaWxlbmFtZT9maWxlbmFtZToiTlVMTCIpOwotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ1MzAyZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBwdWxzZWF1ZGlvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWRzcC1NYWtlLWl0LWNvbXBpbGUtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsaWVudC1jb25mLUFkZC1hbGxvdy1hdXRvc3Bhd24tZm9yLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzOTBkZTM4MjMxZDVjZGQ2YjQzYWRhODkzOWViNzRmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMjUyMWM1MjVhNzcxNjYxODllM2NiOTE2OWY3NWMyZWUyYjgyZmEzZmNmOTQ3NjAyNGZiYzJjM2E2YzljZDllIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgbWtkaXIgLXAgJHtTfS9saWJsdGRsCi0gICAgY3AgJHtTVEFHSU5HX0xJQkRJUn0vbGlibHRkbCogJHtTfS9saWJsdGRsCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmQ5MmJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIHB1bHNlYXVkaW8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsaWVudC1jb25mLUFkZC1hbGxvdy1hdXRvc3Bhd24tZm9yLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImM0MmYxZjE0NjVlOGRmOTg1OWQwMjNkYzE4NDczNGJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwOTY2OGZmYzI5NjA0Mzc3OWM5ODRmNTM0NjFjMmIzOTg3YTQ1YjdhMjVlYjJmMGExZDExZDlmMjNiYTQwNTUiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKKyAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZDRkNzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgotREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAotICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAotICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKLSAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCi0gICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAotICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAotICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjQ5Y2U5YzNlM2U5YWNhZTRkOTFiY2E0NGJiODVhNzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDY1MDNjNzgyZDlmMTUxYmFhMzI1NTkxYzM1NzljNjhlZDcwMGZmYzYyZDRmNWEzMmZlZWFkMGZmMDE3ZDhhYiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWV4cGVyaW1lbnRhbCBcCi0gICAgLS1kaXNhYmxlLXdpYyBcCi0gICAgLS1lbmFibGUtbGlid2VicG11eCBcCi0gICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKLSAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAotIgotIyBEbyBub3QgdHJ1c3QgY29uZmlndXJlIHRvIGRldGVybWluZSBpZiBuZW9uIGlzIGF2YWlsYWJsZS4KLSMKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCJuZW9uIiwiLS1lbmFibGUtbmVvbiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAotIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZQotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotCi0jIGxpYndlYnBkZWNvZGVyIGlzIGEgc3Vic2V0IG9mIGxpYndlYnAsIGRvbid0IGJ1aWxkIGl0IHVubGVzcyByZXF1ZXN0ZWQKLVBBQ0tBR0VDT05GSUdbZGVjb2Rlcl0gPSAiLS1lbmFibGUtbGlid2VicGRlY29kZXIsLS1kaXNhYmxlLWxpYndlYnBkZWNvZGVyIgotCi0jIEFwcGx5IGZvciBleGFtcGxlcyBwcm9ncmFtczogY3dlYnAgYW5kIGR3ZWJwCi1QQUNLQUdFQ09ORklHW2dpZl0gPSAiLS1lbmFibGUtZ2lmLC0tZGlzYWJsZS1naWYsZ2lmbGliIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS1lbmFibGUtdGlmZiwtLWRpc2FibGUtdGlmZix0aWZmIgotCi0jIEFwcGx5IG9ubHkgZm9yIGV4YW1wbGUgcHJvZ3JhbSB2d2VicAotUEFDS0FHRUNPTkZJR1tnbF0gPSAiLS1lbmFibGUtZ2wsLS1kaXNhYmxlLWdsLG1lc2EtZ2x1dCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWdpZjJ3ZWJwIgotCi1ERVNDUklQVElPTl8ke1BOfS1naWYyd2VicCA9ICJTaW1wbGUgdG9vbCB0byBjb252ZXJ0IGFuaW1hdGVkIEdJRnMgdG8gV2ViUCIKLUZJTEVTXyR7UE59LWdpZjJ3ZWJwID0gIiR7YmluZGlyfS9naWYyd2VicCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5Njc5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4wLmJiCkBAIC0wLDAgKzEsNTMgQEAKK1NVTU1BUlkgPSAiV2ViUCBpcyBhbiBpbWFnZSBmb3JtYXQgZGVzaWduZWQgZm9yIHRoZSBXZWIiCitERVNDUklQVElPTiA9ICJXZWJQIGlzIGEgbWV0aG9kIG9mIGxvc3N5IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiB0aGF0IGNhbiBiZSBcCisgICAgICAgICAgICAgICB1c2VkIG9uIGEgbGFyZ2UgdmFyaWV0eSBvZiBwaG90b2dyYXBoaWMsIHRyYW5zbHVjZW50IGFuZCBcCisgICAgICAgICAgICAgICBncmFwaGljYWwgaW1hZ2VzIGZvdW5kIG9uIHRoZSB3ZWIuIFRoZSBkZWdyZWUgb2YgbG9zc3kgXAorICAgICAgICAgICAgICAgY29tcHJlc3Npb24gaXMgYWRqdXN0YWJsZSBzbyBhIHVzZXIgY2FuIGNob29zZSB0aGUgdHJhZGUtb2ZmIFwKKyAgICAgICAgICAgICAgIGJldHdlZW4gZmlsZSBzaXplIGFuZCBpbWFnZSBxdWFsaXR5LiBXZWJQIHR5cGljYWxseSBhY2hpZXZlcyBcCisgICAgICAgICAgICAgICBhbiBhdmVyYWdlIG9mIDMwJSBtb3JlIGNvbXByZXNzaW9uIHRoYW4gSlBFRyBhbmQgSlBFRyAyMDAwLCBcCisgICAgICAgICAgICAgICB3aXRob3V0IGxvc3Mgb2YgaW1hZ2UgcXVhbGl0eS4iCitIT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZThkZWU5MzJjMjZmMmRhYjUwM2FiZjcwYzk2ZDhiYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQVRFTlRTO21kNT1jNjkyNmQwY2IwN2QyOTZmODg2YWI2ZTBjYzVhODViNyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NjdiOGYwODdjYjM5MmU2Y2M5NGQ1ZTExNmExMjBjMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NDI1OWM0Mzg4ZjE4NjM3YWYzYzVhNjM2MTUzNmQ3NTRhNTM5NDQ5MmY5MWJlMWFiYzJlOTgxZDQ5ODMyMjViIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC9pbmRleC5odG1sIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtd2ljIFwKKyAgICAtLWVuYWJsZS1saWJ3ZWJwbXV4IFwKKyAgICAtLWVuYWJsZS1saWJ3ZWJwZGVtdXggXAorICAgIC0tZW5hYmxlLXRocmVhZGluZyBcCisiCisjIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgorIworRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCisKKyMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAorUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCisKKyMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKK1BBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCisKKyMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCitQQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCisKK0RFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgorRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jCmluZGV4IDU2MDZkOGUuLmY4Nzk1MmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKQEAgLTMsNiArMyw4IEBACiBQRSA9ICIxIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvcnQtdGVzdHMvcnQtdGVzdHMuZ2l0IgorIyAxLjIgYW5kIDEuMyBzZWVtIHRvIGJlIGRldmVsb3BtZW50IHZlcnNpb25zCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+KD8hMVwuMikoPyExXC4zKShcZCsoXC5cZCspKykpIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvL3Nlc3Npb24gYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvL3Nlc3Npb24KaW5kZXggZjYzMTNiZC4uM2E3MDU3NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0by9zZXNzaW9uCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG8vc2Vzc2lvbgpAQCAtMjAsNyArMjAsMTAgQEAKICMgZG9lc24ndCBoYXZlIHRoZSBmZWF0dXJlICJmb28iLgogCiBTVEFSVF9BUFBMRVRTPXNob3dkZXNrdG9wLHdpbmRvd3NlbGVjdG9yCi1FTkRfQVBQTEVUUz1jbG9jayxiYXR0ZXJ5LCRLRVlCT0FSRF9BUFBMRVQsc3lzdHJheSxzdGFydHVwLW5vdGlmeSxub3RpZnkKK0VORF9BUFBMRVRTPSRLRVlCT0FSRF9BUFBMRVQsc3lzdHJheSxzdGFydHVwLW5vdGlmeSxub3RpZnkKK0VORF9BUFBMRVRTPWJhdHRlcnksJEVORF9BUFBMRVRTICMgZmVhdHVyZS1hY3BpCitFTkRfQVBQTEVUUz1iYXR0ZXJ5LCRFTkRfQVBQTEVUUyAjIGZlYXR1cmUtYXBtCitFTkRfQVBQTEVUUz1jbG9jaywkRU5EX0FQUExFVFMKIEVORF9BUFBMRVRTPW9wZW5tb2tvLXBhbmVsLWdzbSwkRU5EX0FQUExFVFMgIyBmZWF0dXJlLXBob25lCiAKIG1hdGNoYm94LXBhbmVsIC0tc3RhcnQtYXBwbGV0cyAkU1RBUlRfQVBQTEVUUyAtLWVuZC1hcHBsZXRzICRFTkRfQVBQTEVUUyAmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvXzAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG9fMC4xLmJiCmluZGV4IGQxNDZlODMuLjgyMzBlOTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG9fMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG9fMC4xLmJiCkBAIC0yNiw3ICsyNiw3IEBACiAKIGRvX2luc3RhbGwoKSB7CiAJIyBUaGlzIGlzIHRoZSBzZXQgb2YgbWFjaGluZSBmZWF0dXJlcyB0aGF0IHRoZSBzY3JpcHQgaGFzIG1hcmtlcnMgZm9yCi0JRkVBVFVSRVM9InBob25lIgorCUZFQVRVUkVTPSJhY3BpIGFwbSBwaG9uZSIKIAlTQ1JJUFQ9IiR7U30vc2VkZGVyIgogCXJtIC1mICRTQ1JJUFQKIAl0b3VjaCAkU0NSSVBUCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRlcm1pbmFsL21hdGNoYm94LXRlcm1pbmFsXzAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDg4MTkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWdodHdlaWdodCBHVEsrIHRlcm1pbmFsIGFwcGxpY2F0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYXRjaGJveC1wcm9qZWN0Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0yMDttZDU9OTZlMzkxNzZkOWUzNTU2MzlhMGI4YjFjN2E4NDA4MjAiCi0KLURFUEVORFMgPSAiZ3RrKzMgdnRlIgotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi0KLSNTUkNSRVYgdGFnZ2VkIDAuMQotU1JDUkVWID0gIjNhZDM1N2RiMjMwMjc2MGI4YTg4MTdiNWY0NDc4ZGQ4NzQ3OTQ0MmYiCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF8wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRlcm1pbmFsL21hdGNoYm94LXRlcm1pbmFsXzAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjVlZGEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF8wLjIuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBHVEsrIHRlcm1pbmFsIGFwcGxpY2F0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYXRjaGJveC1wcm9qZWN0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0yMDttZDU9OTZlMzkxNzZkOWUzNTU2MzlhMGI4YjFjN2E4NDA4MjAiCisKK0RFUEVORFMgPSAiZ3RrKzMgdnRlIgorU0VDVElPTiA9ICJ4MTEvdXRpbHMiCisKKyNTUkNSRVYgdGFnZ2VkIDAuMgorU1JDUkVWID0gIjE2MTI3NmQwZjVkMWJlODE4NzAxMGZkMGQ5NTgxYTZmZWNhNzBlYTUiCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCmluZGV4IDIyNDQyOGQuLjdlMTRlY2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKQEAgLTMyLDkgKzMyLDggQEAKICAgICBhZHdhaXRhLWljb24tdGhlbWUgXAogICAgIHNldHRpbmdzLWRhZW1vbiBcCiAgICAgc2h1dGRvd24tZGVza3RvcCBcCi0gICAgbGlic2RsIFwKICAgICAke05FVFdPUktfTUFOQUdFUn0gXAotICAgIHVkZXYtZXh0cmFjb25mIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ3VkZXYtZXh0cmFjb25mJywgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpby1zZXJ2ZXIgcHVsc2VhdWRpby1jbGllbnQtY29uZi1zYXRvIHB1bHNlYXVkaW8tbWlzYycsICcnLCBkKX0gXAogICAgICIKIApAQCAtNDMsMTMgKzQyLDE2IEBACiBXRUIgPz0gIiIKICNXRUIgPSAiZXBpcGhhbnkiCiAKK0dTVEVYQU1QTEVTID89ICJnc3QtZXhhbXBsZXMiCitHU1RFWEFNUExFU19yaXNjdjY0ID0gIiIKKwogU1VNTUFSWV8ke1BOfS1hcHBzID0gIlNhdG8gZGVza3RvcCAtIGFwcGxpY2F0aW9ucyIKIFJERVBFTkRTXyR7UE59LWFwcHMgPSAiXAogICAgIGwzYWZwYWQgXAotICAgIGdzdC1leGFtcGxlcyBcCiAgICAgbWF0Y2hib3gtdGVybWluYWwgXAogICAgIHNhdG8tc2NyZWVuc2hvdCBcCiAgICAgJHtGSUxFTUFOQUdFUn0gXAorICAgICR7R1NURVhBTVBMRVN9IFwKICAgICAke1dFQn0gXAogICAgICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyN2EwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiRmFzdCBsaWdodHdlaWdodCB0YWJiZWQgZmlsZW1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vcGNtYW5mbS5zb3VyY2Vmb3JnZS5uZXQvIgotCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3BjbWFuZm0uaDtlbmRsaW5lPTIyO21kNT00MTdiMzg1NTc3MWEzYTg3ZjhhZDc1M2Q5OTQ0OTFmMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3NlYWwtZ3RrLWNvbXBhdC5oO2VuZGxpbmU9MjE7bWQ1PTQ2OTIyYzg2OTFmNThkMTI0Zjk0MjBmZTE2MTQ5Y2UyIgotCi1TRUNUSU9OID0gIngxMSIKLURFUEVORFMgPSAiZ3RrKzMgc3RhcnR1cC1ub3RpZmljYXRpb24gbGliZm0gaW50bHRvb2wtbmF0aXZlIGdldHRleHQtbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9wY21hbmZtLSR7UFZ9LnRhci54eiBcCi0JICAgZmlsZTovL2dub21lLWZzLWRpcmVjdG9yeS5wbmcgXAotCSAgIGZpbGU6Ly9nbm9tZS1mcy1yZWd1bGFyLnBuZyBcCi0JICAgZmlsZTovL2dub21lLW1pbWUtdGV4dC1wbGFpbi5wbmcgXAotCSAgIGZpbGU6Ly9lbWJsZW0tc3ltYm9saWMtbGluay5wbmcgXAotCSAgIGZpbGU6Ly9uby1kZXNrdG9wLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjRkMWY4Y2UwOGQ4N2U0ZjI3ODA1YTI0NmZjNTFhYzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGM4NmNhYzAyOGI3MDVmZjMxNGM3NDY0ZDgxNGMyY2Y3ZmY2MDRjMTc0OTFjMjBhYTIwNGIxZWYxYTgwYWQ2NyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcGNtYW5mbS9maWxlcy9QQ01hbkZNJTIwJTJCJTIwTGliZm0lMjAlMjh0YXJiYWxsJTIwcmVsZWFzZSUyOS9QQ01hbkZNLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWd0az0zIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0KLQlpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5wbmcgJHtEfS8ke2RhdGFkaXJ9L3BpeG1hcHMKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9wY21hbmZtIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTZkYTAyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjAuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJGYXN0IGxpZ2h0d2VpZ2h0IHRhYmJlZCBmaWxlbWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9wY21hbmZtLnNvdXJjZWZvcmdlLm5ldC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGNtYW5mbS5oO2VuZGxpbmU9MjI7bWQ1PTQxN2IzODU1NzcxYTNhODdmOGFkNzUzZDk5NDQ5MWYwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9nc2VhbC1ndGstY29tcGF0Lmg7ZW5kbGluZT0yMTttZDU9NDY5MjJjODY5MWY1OGQxMjRmOTQyMGZlMTYxNDljZTIiCisKK1NFQ1RJT04gPSAieDExIgorREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJmbSBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL3BjbWFuZm0tJHtQVn0udGFyLnh6IFwKKwkgICBmaWxlOi8vZ25vbWUtZnMtZGlyZWN0b3J5LnBuZyBcCisJICAgZmlsZTovL2dub21lLWZzLXJlZ3VsYXIucG5nIFwKKwkgICBmaWxlOi8vZ25vbWUtbWltZS10ZXh0LXBsYWluLnBuZyBcCisJICAgZmlsZTovL2VtYmxlbS1zeW1ib2xpYy1saW5rLnBuZyBcCisJICAgZmlsZTovL25vLWRlc2t0b3AucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Mjc4MzhmN2Y2YjE3ZGM5N2UxNjkwYzA3ZGE4ZmRiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTY5M2U5YmYzZjMyOTRmMGVlNzI2NGMxYzFhNjAwYTg4ZWUyN2QxNTcyZTdkZDVjNGIwZTg0YWE3Nzc4ZmZiIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wY21hbmZtL2ZpbGVzL1BDTWFuRk0lMjAlMkIlMjBMaWJmbSUyMCUyOHRhcmJhbGwlMjByZWxlYXNlJTI5L1BDTWFuRk0vIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgVGhlIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfQorCWluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L3BpeG1hcHMvCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnBuZyAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BjbWFuZm0iCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKaW5kZXggYmZkODE3Ny4uN2QwOGI5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYgpAQCAtMSwyMiArMSwyMiBAQAogU1VNTUFSWSA9ICJTaW1vbiBUYXRoYW0ncyBQb3J0YWJsZSBQdXp6bGUgQ29sbGVjdGlvbiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+c2d0YXRoYW0vcHV6emxlcy8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWRhNjExMGQ0ZWQxMjI1YTI4N2VhYjJiZjBhYzAxOTNiIgogCiBERVBFTkRTID0gImxpYnh0IgogCiAjIFRoZSBsaWJ4dCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWRhNjExMGQ0ZWQxMjI1YTI4N2VhYjJiZjBhYzAxOTNiIgotCiBTUkNfVVJJID0gImdpdDovL2dpdC50YXJ0YXJ1cy5vcmcvc2ltb24vcHV6emxlcy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgICIKKwogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgotU1JDUkVWID0gIjJhZGYwMDUyZDY2ZWFlODhjN2E1ZTU1ZTY3ZmUxNmUxM2Y3MDE4YjUiCitTUkNSRVYgPSAiYzZlMDE2MWRkNDc1NDE1MzE2ZWQ2NmRjODI3OTRkNjhlNTJmMDAyNSIKIFBFID0gIjIiCiBQViA9ICIwLjArZ2l0JHtTUkNQVn0iCiAKQEAgLTI0LDI0ICsyNCwxMyBAQAogCiBpbmhlcml0IGF1dG90b29scyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgcGtnY29uZmlnCiAKLUNGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0KIFBBQ0tBR0VDT05GSUcgPz89ICJndGszIgogUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLXdpdGgtZ3RrPTIsLGd0ayssIgogUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsLGd0ayszLCIKIAotUEFDS0FHRVMgKz0gIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtwcmVmaXh9L2JpbiAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKK0NGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAKLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgdmFyID0gZC5leHBhbmQoIkZJTEVTXyR7UE59IikKLSAgICBkYXRhID0gZC5nZXRWYXIodmFyLCBGYWxzZSkKLSAgICBmb3IgbmFtZSBpbiAoImJyaWRnZXMiLCAiZmlmdGVlbiIsICJpbmVydGlhIiwgIm1hcCIsICJzYW1lZ2FtZSIsICJzbGFudCIpOgotICAgICAgICBkYXRhID0gZGF0YSArICIgJHtiaW5kaXJ9LyVzIiAlIG5hbWUKLSAgICAgICAgZGF0YSA9IGRhdGEgKyAiICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLyVzLmRlc2t0b3AiICUgbmFtZQotICAgIGQuc2V0VmFyKHZhciwgZGF0YSkKLX0KK0FTTkVFREVEID0gIiIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgIGNkICR7U30KQEAgLTc0LDMgKzYzLDE3IEBACiAgICAgICAgIGZpCiAgICAgZG9uZQogfQorCitQQUNLQUdFUyArPSAiJHtQTn0tZXh0cmEiCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LWV4dHJhID0gIiR7cHJlZml4fS9iaW4gJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMiCisKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgdmFyID0gZC5leHBhbmQoIkZJTEVTXyR7UE59IikKKyAgICBkYXRhID0gZC5nZXRWYXIodmFyLCBGYWxzZSkKKyAgICBmb3IgbmFtZSBpbiAoImJyaWRnZXMiLCAiZmlmdGVlbiIsICJpbmVydGlhIiwgIm1hcCIsICJzYW1lZ2FtZSIsICJzbGFudCIpOgorICAgICAgICBkYXRhID0gZGF0YSArICIgJHtiaW5kaXJ9LyVzIiAlIG5hbWUKKyAgICAgICAgZGF0YSA9IGRhdGEgKyAiICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLyVzLmRlc2t0b3AiICUgbmFtZQorICAgIGQuc2V0VmFyKHZhciwgZGF0YSkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1QYWludGluZ0RhdGEtaGFzLW5vLW1lbWJlci1uYW1lZC1saWdodFZlY3Rvci1vbi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtUGFpbnRpbmdEYXRhLWhhcy1uby1tZW1iZXItbmFtZWQtbGlnaHRWZWN0b3Itb24tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZjQ4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtUGFpbnRpbmdEYXRhLWhhcy1uby1tZW1iZXItbmFtZWQtbGlnaHRWZWN0b3Itb24tLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYTVkNGUwMzgyNjhhZTIzNDg2ZmVjYzE5NjZmZDJlMTZhN2Y0MGNlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjUgSnVsIDIwMTggMDA6MjM6NDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IFBhaW50aW5nRGF0YScgaGFzIG5vIG1lbWJlciBuYW1lZCAnbGlnaHRWZWN0b3InIG9uCisgQVJNX05FT04KKworKiBwbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdodGluZ05FT04uaDoKKyhXZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5TmVvbik6CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTkxCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5oIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdodGluZ05FT04uaAoraW5kZXggNDJhZjkyMi4uYjU0MmE0YyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5oCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdodGluZ05FT04uaAorQEAgLTE0NCw5ICsxNDQsOSBAQCBpbmxpbmUgdm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5TmVvbihjb25zdCBMaWdodGluZ0RhdGEmIGRhdGEsIGNvbnN0IExpZ2h0UworICAgICAgICAgICAgIG5lb25EYXRhLmZsYWdzIHw9IEZMQUdfQ09ORV9FWFBPTkVOVF9JU18xOworICAgICB9IGVsc2UgeworICAgICAgICAgQVNTRVJUKG1fbGlnaHRTb3VyY2UtPnR5cGUoKSA9PSBMU19ESVNUQU5UKTsKKy0gICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WCA9IHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci54KCk7CistICAgICAgICBmbG9hdEFyZ3VtZW50cy5saWdodFkgPSBwYWludGluZ0RhdGEubGlnaHRWZWN0b3IueSgpOworLSAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRaID0gcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLnooKTsKKysgICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WCA9IHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhLmxpZ2h0VmVjdG9yLngoKTsKKysgICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WSA9IHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhLmxpZ2h0VmVjdG9yLnkoKTsKKysgICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WiA9IHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhLmxpZ2h0VmVjdG9yLnooKTsKKyAgICAgICAgIGZsb2F0QXJndW1lbnRzLnBhZGRpbmcyID0gMTsKKyAgICAgfQorIAorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKaW5kZXggN2NjNDUxNC4uMDQxZWM0NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0xLDI0ICsxLDI1IEBACi1Gcm9tIDQxNWUzMWJkNTQ0NGZhMzYwYWY1OGIwNjlmMWI5ZGI2NjA3ZmNhN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRmOWQ3MzZlMDQ1OGVkMzNjZDE2MWNkMTY0YWQwYWNkYWM5MzlmNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgNiBPY3QgMjAxNyAxNzowMDowOCArMDMwMAogU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQotIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmggfCAxMCArKysrKy0tLS0tCisgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCB8IDE4ICsrKysrKysrKysrKysrKysrLQogIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCi1pbmRleCA5NTA4MGI5Li4yYmI2ODljIDEwMDY0NAoraW5kZXggYmYwYmRjNy4uODRiOGE4YSAxMDA2NDQKIC0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKICsrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKIEBAIC0xNDYsNyArMTQ2LDcgQEAgaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCiAgI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAgI2VuZGlmCiAgCi0tI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19CSU9OSUNfXykKICsjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICAKICAjaWYgQ1BVKFg4NikKQEAgLTI3LDcgKzI4LDcgQEAKICAjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKICAjZW5kaWYKICAKLS0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKy0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX0JJT05JQ19fKQogKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIAogIC8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgpAQCAtMzYsNyArMzcsNyBAQAogICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogICNlbmRpZgogIAotLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fQklPTklDX18pCiArI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAgCiAgLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCkBAIC00NSw3ICs0Niw3IEBACiAgI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAgI2VuZGlmCiAgCi0tI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19CSU9OSUNfXykKICsjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICAKICAvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KQEAgLTU0LDI0ICs1NSwyMSBAQAogICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogICNlbmRpZgogIAotLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fQklPTklDX18pCiArI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAgCiAgLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCiAgI2lmIENQVShYODYpCiBkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKLWluZGV4IDVhMjg2M2IuLmIzNmMzZmYgMTAwNjQ0CitpbmRleCA1NTFjMDQ3Li5lNTBiMDVhIDEwMDY0NAogLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAogKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAotQEAgLTY4MCw3ICs2ODAsNyBAQAorQEAgLTY4Myw3ICs2ODMsNyBAQAogICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcgMQogICNlbmRpZgogIAotLSNpZiBPUyhEQVJXSU4pIHx8ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpKQorLSNpZiBPUyhEQVJXSU4pIHx8ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19CSU9OSUNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCiArI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fbGludXhfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCiAgI2RlZmluZSBIQVZFX01BQ0hJTkVfQ09OVEVYVCAxCiAgI2VuZGlmCiAgCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTU3NDA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSBhZGYzZDRjOWQ0MTMzYmQ2OTk1NTkwZDkyMWMwY2NhZWM1MjU0ZGE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmhhcmdhdmEgU3JlZWthbnRhcHBhIEdheWF0aHJpCi0gPGJoYXJnYXZhLnNyZWVrYW50YXBwYS1nYXlhdGhyaUB4aWxpbnguY29tPgotRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxNjowOTozMSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggZ2xlczMgaGVhZGVyIHdoZW4gZ2xlczIgaXMgZW5hYmxlZAotCi1BIEdMRVMgMiBhcHBsaWNhdGlvbiBzaG91bGQgbm90IHVzZSBnbDMuaC4KLUZpeCB0aGUgZ2xlczMgaGVhZGVyIGZhaWx1cmUgd2hpbGUgY29tcGlsaW5nIHdlYmtpdGd0ay4KLQotRkFJTEVEOgotU291cmNlL1dlYkNvcmUvQ01ha2VGaWxlcy9XZWJDb3JlLmRpci9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwLm8KLSAgICAgICAgICAgXn5+fn5+fn5+fn5+fgotY29tcGlsYXRpb24gdGVybWluYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotSW1wb3J0ZWQgcGF0Y2ggZnJvbTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzAwOAotCi1TaWduZWQtb2ZmLWJ5OiBCaGFyZ2F2YSBTcmVla2FudGFwcGEgR2F5YXRocmkgPGJoYXJnYXZhLnNyZWVrYW50YXBwYS1nYXlhdGhyaUB4aWxpbnguY29tPgotU2lnbmVkLW9mZi1ieTogTWFuanVrdW1hciBNYXRoYSA8bWFuanVrdW1hci5oYXJ0aGlrb3RlLW1hdGhhQHhpbGlueC5jb20+Ci0tLS0KLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCi1pbmRleCA1OTlkY2MwLi40NmQyZmQ0IDEwMDY0NAotLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAotKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAotQEAgLTMxLDcgKzMxLDYgQEAKLSAjZWxpZiBVU0UoT1BFTkdMX0VTXzIpCi0gI2RlZmluZSBHTF9HTEVYVF9QUk9UT1RZUEVTIDEKLSAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0tI2luY2x1ZGUgPEdMRVMzL2dsMy5oPgotICNlbmRpZgotCi0gI2lmIFVTRShHTFgpCi0tLQotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoCmluZGV4IDg5Njg5MGIuLmFhOWEwNjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGI3ZjQwZWNlZWYwZjIzYmY4ODA5MDc4OWQ0YzU4NDVjMzVmMDQ4YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDBhZmMxOTRjNjQ0NmU2YzMyNDJmMWQ3MDZiNDU2NGUzYTljYjJjZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMjkgQXVnIDIwMTYgMTY6Mzg6MTEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIEZpeCByYWN5IHBhcmFsbGVsIGJ1aWxkIG9mIFdlYktpdDItNC4wLmdpcgorU3ViamVjdDogW1BBVENIXSBGaXggcmFjeSBwYXJhbGxlbCBidWlsZCBvZiBXZWJLaXQyLTQuMC5naXIKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KQEAgLTExLDM5ICsxMSwzNiBAQAogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQotaW5kZXggYTMzYzZhODYuLmQ4M2EyZTc3IDEwMDY0NAoraW5kZXggYTA3NGE4MC4uOGM2ZWJiNSAxMDA2NDQKIC0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKICsrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKLUBAIC0xMTIyLDggKzExMjIsOSBAQCBlbmRpZiAoKQotIHN0cmluZyhSRUdFWCBNQVRDSEFMTCAiLUxbXiBdKiIKLSAgICAgSU5UUk9TUEVDVElPTl9BRERJVElPTkFMX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSIpCitAQCAtNzI4LDggKzcyOCw5IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKKyAgICAgc3RyaW5nKFJFR0VYIE1BVENIQUxMICItTFteIF0qIgorICAgICAgICAgSU5UUk9TUEVDVElPTl9BRERJVElPTkFMX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSIpCiAgCi0tYWRkX2N1c3RvbV9jb21tYW5kKAotLSAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLSsjIFRoaXMgaXMgYSB0YXJnZXQgYW5kIG5vdCBhIGNvbW1hbmQgYmVjYXVzZSBpdCdzIHVzZWQgdG8gYnVpbGQgYW5vdGhlciAuZ2lyCi0rIyBhbmQgYSAudHlwZWxpYiwgd2hpY2ggd291bGQgdHJpZ2dlciB0d28gcmFjeSBwYXJhbGxlbCBidWlsZHMgd2hlbiB1c2luZyBjb21tYW5kCi0rYWRkX2N1c3RvbV90YXJnZXQoV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCi0gICAgIERFUEVORFMgV2ViS2l0MgotICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30gTERGTEFHUz0KLUBAIC0xMTY4LDcgKzExNjksNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyV2ViRXh0ZW5zaW9uLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLSAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLS0gICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotKyAgICBERVBFTkRTIFdlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LWdpcgotICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30KLSAgICAgICAgIExERkxBR1M9IiR7SU5UUk9TUEVDVElPTl9BRERJVElPTkFMX0xERkxBR1N9IgotICAgICAgICAgJHtMT0FERVJfTElCUkFSWV9QQVRIX1ZBUn09IiR7SU5UUk9TUEVDVElPTl9BRERJVElPTkFMX0xJQlJBUllfUEFUSH0iCi1AQCAtMTIyNSw3ICsxMjI2LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAorLSAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCistICAgICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKysgICAgIyBUaGlzIGlzIGEgdGFyZ2V0IGFuZCBub3QgYSBjb21tYW5kIGJlY2F1c2UgaXQncyB1c2VkIHRvIGJ1aWxkIGFub3RoZXIgLmdpcgorKyAgICAjIGFuZCBhIC50eXBlbGliLCB3aGljaCB3b3VsZCB0cmlnZ2VyIHR3byByYWN5IHBhcmFsbGVsIGJ1aWxkcyB3aGVuIHVzaW5nIGNvbW1hbmQKKysgICAgYWRkX2N1c3RvbV90YXJnZXQoV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCisgICAgICAgICBERVBFTkRTIFdlYktpdAorICAgICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKyAgICAgICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfSBMREZMQUdTPQorQEAgLTc3Myw3ICs3NzQsNyBAQCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCisgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDJXZWJFeHRlbnNpb24tJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorICAgICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKy0gICAgICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKysgICAgICAgIERFUEVORFMgV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCisgICAgICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30KKyAgICAgICAgICAgICBMREZMQUdTPSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MREZMQUdTfSIKKyAgICAgICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKK0BAIC04MjgsNyArODI5LDcgQEAgaWYgKEVOQUJMRV9JTlRST1NQRUNUSU9OKQogIAotIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0udHlwZWxpYgotLSAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0rICAgIERFUEVORFMgV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCi0gICAgIENPTU1BTkQgJHtJTlRST1NQRUNUSU9OX0NPTVBJTEVSfSAtLWluY2x1ZGVkaXI9JHtDTUFLRV9CSU5BUllfRElSfSAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpciAtbyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnR5cGVsaWIKLSApCisgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnR5cGVsaWIKKy0gICAgICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKysgICAgICAgIERFUEVORFMgV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCisgICAgICAgICBDT01NQU5EICR7SU5UUk9TUEVDVElPTl9DT01QSUxFUn0gLS1pbmNsdWRlZGlyPSR7Q01BS0VfQklOQVJZX0RJUn0gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIgLW8gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS50eXBlbGliCisgICAgICkKICAKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoCmluZGV4IDBmNmVlZWQuLmU4ZDFkOGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNDg2NDg1NzBlNDQ5Y2Y3Zjg0YTI2ZGMwM2MxZTNmNjIwZmE2OTc1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmVkNGNmNGFhYTZhYWQ0MTcyZWM5OTQyZTkwMzlmYjhlMWVmNjhhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyOSBGZWIgMjAxNiAxODoxMzozOSArMDIwMAogU3ViamVjdDogW1BBVENIXSBPcHRpb25zR1RLLmNtYWtlOiBkcm9wIHRoZSBoYXJkY29kZWQgaW50cm9zcGVjdGlvbi9ndGtkb2MKQEAgLTExLDE2ICsxMSwxNyBAQAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KICBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSB8IDYgLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCiAKLUluZGV4OiB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2Via2l0Z3RrLTIuMTIuMS5vcmlnL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCi0rKysgd2Via2l0Z3RrLTIuMTIuMS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQotQEAgLTQyNCwxMiArNDI0LDYgQEAgaWYgKFVTRV9MSUJIWVBIRU4pCi0gICAgIGVuZGlmICgpCitkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQoraW5kZXggNjYxYjQwZS4uNDA0NDQxYiAxMDA2NDQKKy0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorQEAgLTM1MiwxMiArMzUyLDYgQEAgaWYgKEVOQUJMRURfQ09NUElMRVJfU0FOSVRJWkVSUykKKyAgICAgc2V0KEVOQUJMRV9JTlRST1NQRUNUSU9OIE9GRikKICBlbmRpZiAoKQogIAogLSMgT3ZlcnJpZGUgdGhlIGNhY2hlZCB2YXJpYWJsZXMsIGd0ay1kb2MgYW5kIGdvYmplY3QtaW50cm9zcGVjdGlvbiBkbyBub3QgcmVhbGx5IHdvcmsgd2hlbiBjcm9zcy1idWlsZGluZy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCmluZGV4IDlmYzE0MjEuLmIzMTAyNjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZWY4MzJhMTE1YjQwODYxYzA4ZGYzMzMzMzliMTM2NmRhNDllNTM5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTFjNjU0MGY3OTg0YmQ0OGUxZTJkODBkOTY1ZmE4MmM3MGRlM2MyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDE3IEFwciAyMDE2IDEyOjM1OjQxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggOS85XSBXZWJLaXRNYWNyb3M6IEFwcGVuZCB0byAtSSBhbmQgbm90IHRvIC1pc3lzdGVtCitTdWJqZWN0OiBbUEFUQ0hdIFdlYktpdE1hY3JvczogQXBwZW5kIHRvIC1JIGFuZCBub3QgdG8gLWlzeXN0ZW0KIAogZ2NjLTYgaGFzIG5vdyBpbnRyb2R1Y2VkIHN0ZGxpYi5oIGluIGxpYnN0ZGMrKyBmb3IgYmV0dGVyCiBjb21wbGlhbmNlIGFuZCBpdHMgaW5jbHVkaW5nIHRoZSBDIGxpYnJhcnkgc3RkbGliLmggdXNpbmcKQEAgLTE3LDYgKzE3LDcgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQgfCAyICstCiAgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgICAgICAgICAgIHwgNiArKystLS0KQEAgLTI3LDMyICsyOCwzMiBAQAogIDYgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiYzM3ZGQzMS4uNGU0OTg3MWYgMTAwNjQ0CitpbmRleCBiM2M3ZTBiLi44ODQ0NmRlIDEwMDY0NAogLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0CiArKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKIEBAIC0zNSw3ICszNSw3IEBAIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQogIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtKU0NfU09VUkNFU30pCiAgV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1RFU1RBUElfU09VUkNFU30pCi0gaW5jbHVkZV9kaXJlY3RvcmllcyguLyAke0phdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorIGluY2x1ZGVfZGlyZWN0b3JpZXMoLi8gJHtKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTfSAke0phdmFTY3JpcHRDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAtaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtKYXZhU2NyaXB0Q29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCiAraW5jbHVkZV9kaXJlY3Rvcmllcygke0phdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKICBhZGRfZXhlY3V0YWJsZShqc2MgJHtKU0NfU09VUkNFU30pCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGpzYyAke0pTQ19MSUJSQVJJRVN9KQogIAogZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKLWluZGV4IDczNTA2Yzc0Li44ZWI4YjQxNSAxMDA2NDQKK2luZGV4IGY3ZDhkNzBhLi4zYzI3YjhiYyAxMDA2NDQKIC0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCiArKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQotQEAgLTI4MSw3ICsyODEsNyBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCi0gICAgICAgICAke0dUSzJfSU5DTFVERV9ESVJTfQotICAgICAgICAgJHtHREsyX0lOQ0xVREVfRElSU30KK0BAIC0xNTcsNyArMTU3LDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQorICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhXZWJDb3JlUGxhdGZvcm1HVEsyIFBSSVZBVEUKKyAgICAgICAgICR7V2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTfQogICAgICApCiAtICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSzIgU1lTVEVNIFBSSVZBVEUKICsgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViQ29yZVBsYXRmb3JtR1RLMiBQUklWQVRFCiAgICAgICAgICAke1dlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9Ci0gICAgICkKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSzIKLUBAIC0zMDUsNyArMzA1LDcgQEAgYWRkX2RlcGVuZGVuY2llcyhXZWJDb3JlUGxhdGZvcm1HVEsgV2ViQ29yZSkKKyAgICAgICAgICR7R1RLMl9JTkNMVURFX0RJUlN9CisgICAgICAgICAke0dESzJfSU5DTFVERV9ESVJTfQorQEAgLTE4Myw3ICsxODMsNyBAQCBhZGRfZGVwZW5kZW5jaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSyBXZWJDb3JlKQogIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSyBQUklWQVRFCiAgICAgICR7V2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTfQogICkKQEAgLTYxLDcgKzYyLDcgQEAKICAgICAgJHtXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfQogICAgICAke0dUS19JTkNMVURFX0RJUlN9CiAgICAgICR7R0RLX0lOQ0xVREVfRElSU30KLUBAIC0zMjEsNyArMzIxLDcgQEAgaW5jbHVkZV9kaXJlY3RvcmllcygKK0BAIC0xOTksNyArMTk5LDcgQEAgaW5jbHVkZV9kaXJlY3RvcmllcygKICAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dvYmplY3QvIgogICkKICAKQEAgLTcxLDMzICs3MiwzMyBAQAogICkKICAKIGRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQotaW5kZXggZDgzYTJlNzcuLjQwMTI0NmY0IDEwMDY0NAoraW5kZXggOGM2ZWJiNS4uNzcyYzI0MyAxMDA2NDQKIC0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKICsrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKLUBAIC0xMDUwLDcgKzEwNTAsNyBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCitAQCAtNjU1LDcgKzY1NSw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViS2l0UGx1Z2luUHJvY2VzczIgUFJJVkFURQotICAgICAgICAgJHtXZWJLaXQyQ29tbW9uSW5jbHVkZURpcmVjdG9yaWVzfQorICAgICAgICAgJHtXZWJLaXRDb21tb25JbmNsdWRlRGlyZWN0b3JpZXN9CiAgICAgICkKIC0gICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViS2l0UGx1Z2luUHJvY2VzczIgU1lTVEVNIFBSSVZBVEUKICsgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViS2l0UGx1Z2luUHJvY2VzczIgUFJJVkFURQotICAgICAgICAgICR7V2ViS2l0MkNvbW1vblN5c3RlbUluY2x1ZGVEaXJlY3Rvcmllc30KKyAgICAgICAgICAke1dlYktpdENvbW1vblN5c3RlbUluY2x1ZGVEaXJlY3Rvcmllc30KICAgICAgICAgICAke0dUSzJfSU5DTFVERV9ESVJTfQogICAgICAgICAgICR7R0RLMl9JTkNMVURFX0RJUlN9CiBkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKLWluZGV4IDdiYzg5NTQzLi5kOTgxOGZhNCAxMDA2NDQKK2luZGV4IGExZTdlOGYuLmNlMjQyNzQgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCiArKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCi1AQCAtNzgsNyArNzgsNyBAQCBtYWNybyhXRUJLSVRfRlJBTUVXT1JLX0RFQ0xBUkUgX3RhcmdldCkKLSBlbmRtYWNybygpCi0gCi0gbWFjcm8oV0VCS0lUX0ZSQU1FV09SSyBfdGFyZ2V0KQotLSAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAkeyR7X3RhcmdldH1fU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQotKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7JHtfdGFyZ2V0fV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCi0gICAgIHRhcmdldF9zb3VyY2VzKCR7X3RhcmdldH0gUFJJVkFURQotICAgICAgICAgJHske190YXJnZXR9X0hFQURFUlN9CitAQCAtMTM0LDcgKzEzNCw3IEBAIG1hY3JvKFdFQktJVF9GUkFNRVdPUksgX3RhcmdldCkKICAgICAgICAgICR7JHtfdGFyZ2V0fV9TT1VSQ0VTfQorICAgICApCisgICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7X3RhcmdldH0gUFVCTElDICIkPEJVSUxEX0lOVEVSRkFDRTokeyR7X3RhcmdldH1fSU5DTFVERV9ESVJFQ1RPUklFU30+IikKKy0gICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtfdGFyZ2V0fSBTWVNURU0gUFJJVkFURSAiJDxCVUlMRF9JTlRFUkZBQ0U6JHske190YXJnZXR9X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfT4iKQorKyAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke190YXJnZXR9IFBSSVZBVEUgIiQ8QlVJTERfSU5URVJGQUNFOiR7JHtfdGFyZ2V0fV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30+IikKKyAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtfdGFyZ2V0fSBQUklWQVRFICIkPEJVSUxEX0lOVEVSRkFDRTokeyR7X3RhcmdldH1fUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTfT4iKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtfdGFyZ2V0fSAkeyR7X3RhcmdldH1fTElCUkFSSUVTfSkKKyAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7X3RhcmdldH0gUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICJCVUlMRElOR18ke190YXJnZXR9IikKIGRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQ01ha2VMaXN0cy50eHQKLWluZGV4IGU4MzJhODZkLi5jZTkyYzg2NCAxMDA2NDQKK2luZGV4IGRjMmI2MWUuLjAxMjhkY2EgMTAwNjQ0CiAtLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQ01ha2VMaXN0cy50eHQKICsrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dAogQEAgLTU3LDcgKzU3LDcgQEAgZW5kaWYgKCkKQEAgLTExMCwxMSArMTExLDExIEBACiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKE1pbmlCcm93c2VyICR7TWluaUJyb3dzZXJfTElCUkFSSUVTfSkKICAKIGRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQotaW5kZXggMWJlM2RkNTIuLjdiZGRkZjM3IDEwMDY0NAoraW5kZXggNGFlZjY5NS4uYTE0YjE2MyAxMDA2NDQKIC0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKICsrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKIEBAIC0yMCw3ICsyMCw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCi0gICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrCisgICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsKICApCiAgCiAtaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0KQEAgLTEyMiw2ICsxMjMsMyBAQAogICAgICAke0dESzNfSU5DTFVERV9ESVJTfQogICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQogICAgICAke0dUSzNfSU5DTFVERV9ESVJTfQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2gKaW5kZXggZmI0YzRkYy4uOTIzZDAwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotRnJvbSA5OGIxMzU5YTBjZDg3YmJkYjIyY2VmOThiYTU5NDQ0MGY0YzU3ZDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmOTc2N2E0NzkxMTFmOWM2ZjI4MGM0MzE3NmMzM2RlNTBhZWU3ZjY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDI4IE9jdCAyMDE1IDE0OjE4OjU3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSBXaGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMsIGFkZCBDTUFLRV9DX0ZMQUdTIHRvCi0gdGhlIGNvbXBpbGVyIGZsYWdzLgorU3ViamVjdDogW1BBVENIXSBXaGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMsIGFkZCBDTUFLRV9DX0ZMQUdTIHRvIHRoZQorIGNvbXBpbGVyIGZsYWdzLgogCiBnLWlyLWNvbXBpbGVyIGlzIHVzaW5nIGEgQyBjb21waWxlciBpbnRlcm5hbGx5LCBzbyBpdCBuZWVkcyB0byBzZXQKIHRoZSBwcm9wZXIgZmxhZ3MgZm9yIGl0LgpAQCAtMTUsMjcgKzE1LDI0IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCi1pbmRleCA3ZjkyYWU3Mi4uYTMzYzZhODYgMTAwNjQ0CitpbmRleCBkYzZiMzA2Li5hMDc0YTgwIDEwMDY0NAogLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQogKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQotQEAgLTExMjYsNyArMTEyNiw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0gICAgIERFUEVORFMgV2ViS2l0MgotICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotLSAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgTERGTEFHUz0KLSsgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCAke0NNQUtFX0NfRkxBR1N9IExERkxBR1M9Ci0gICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKLSAgICAgICAgICR7SU5UUk9TUEVDVElPTl9TQ0FOTkVSfQotICAgICAgICAgLS1xdWlldAotQEAgLTExNjksNyArMTE2OSw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0MldlYkV4dGVuc2lvbi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0gICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0gICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLS0gICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zCi0rICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfQotICAgICAgICAgTERGTEFHUz0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTERGTEFHU30iCi0gICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKLSAgICAgICAgICR7SU5UUk9TUEVDVElPTl9TQ0FOTkVSfQotLS0gCi0yLjE0LjEKLQorQEAgLTczMiw3ICs3MzIsNyBAQCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCisgICAgICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKyAgICAgICAgIERFUEVORFMgV2ViS2l0CisgICAgICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorLSAgICAgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIExERkxBR1M9CisrICAgICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30gTERGTEFHUz0KKyAgICAgICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKKyAgICAgICAgICAgICAke0lOVFJPU1BFQ1RJT05fU0NBTk5FUn0KKyAgICAgICAgICAgICAtLXF1aWV0CitAQCAtNzc0LDcgKzc3NCw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKKyAgICAgICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDJXZWJFeHRlbnNpb24tJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorICAgICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKyAgICAgICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKKy0gICAgICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucworKyAgICAgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCAke0NNQUtFX0NfRkxBR1N9CisgICAgICAgICAgICAgTERGTEFHUz0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTERGTEFHU30iCisgICAgICAgICAgICAgJHtMT0FERVJfTElCUkFSWV9QQVRIX1ZBUn09IiR7SU5UUk9TUEVDVElPTl9BRERJVElPTkFMX0xJQlJBUllfUEFUSH0iCisgICAgICAgICAgICAgJHtJTlRST1NQRUNUSU9OX1NDQU5ORVJ9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS13ZWJraXRndGstZml4LUNWRS0yMDE3LTE3ODIxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtd2Via2l0Z3RrLWZpeC1DVkUtMjAxNy0xNzgyMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2Y3NTk5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtd2Via2l0Z3RrLWZpeC1DVkUtMjAxNy0xNzgyMS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitCYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTctMTc4MjEuIFJlZmVyIHRvCitodHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE3LTE3ODIxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjMyMTE5L3dlYmtpdF0KK0NWRTogQ1ZFLTIwMTctMTc4MjEKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK0Zyb20gMmExN2IxNTI5N2ViODg2YjBiZmI3ZDA5OGVmNjA3Y2ZhZDZjM2RhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJtY2F0YW56YXJvQGlnYWxpYS5jb20iCisgPG1jYXRhbnphcm9AaWdhbGlhLmNvbUAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+CitEYXRlOiBXZWQsIDIzIE1heSAyMDE4IDE3OjU0OjAxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFByb2hpYml0IHNocmlua2luZyB0aGUgRmFzdEJpdFZlY3RvcgorIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEwMjAKKworUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCisKK1Byb2hpYml0IHNocmlua2luZyB0aGUgRmFzdEJpdFZlY3Rvci4gSXQncyBub3QgcHJlcGFyZWQgZm9yIHRoaXMgYW5kIHRoZSBjdXJyZW50IHVzYWdlIGRvZXMKK25vdCByZXF1aXJlIGl0LgorCisqIHd0Zi9GYXN0Qml0VmVjdG9yLmNwcDoKKyhXVEY6OkZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3cpOgorCitnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAMjMyMTE5IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworLS0tCisgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAgfCAgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAoraW5kZXggZWVkMzE2OTc1ZjQuLjhiMDE5YWFhM2VkIDEwMDY0NAorLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKKysrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCitAQCAtNDIsNiArNDIsOCBAQCB2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnNldEVxdWFsc1Nsb3coY29uc3QgRmFzdEJpdFZlY3RvcldvcmRPd25lciYgb3RoZXIpCisgdm9pZCBGYXN0Qml0VmVjdG9yV29yZE93bmVyOjpyZXNpemVTbG93KHNpemVfdCBudW1CaXRzKQorIHsKKyAgICAgc2l6ZV90IG5ld0xlbmd0aCA9IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKTsKKysKKysgICAgUkVMRUFTRV9BU1NFUlQobmV3TGVuZ3RoID49IGFycmF5TGVuZ3RoKCkpOworICAgICAKKyAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCisgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDEyLXNvdXAtRm9yd2FyZC1kZWNsYXJlLVVSTC1jbGFzcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDEyLXNvdXAtRm9yd2FyZC1kZWNsYXJlLVVSTC1jbGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGZkNGRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMTItc291cC1Gb3J3YXJkLWRlY2xhcmUtVVJMLWNsYXNzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNTlmNjkwM2FkOTZmMzIxM2YyNDhiNjcyZDVmZDUyNmNjMGQ2NjZjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDIwIE1heSAyMDE4IDE0OjI4OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNvdXA6IEZvcndhcmQgZGVjbGFyZSBVUkwgY2xhc3MKKworVGhpcyBoZWxwcyBnZXR0aW5nIGF3YXkgd2l0aCBjb21waWxlciBlcnJvcnMgc2VlbiB3aXRoIGNsYW5nCisKKy9tbnQvYS9vZS93b3Jrc3BhY2Uvc291cmNlcy93ZWJraXRndGsvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oOjY4OjYyOgorZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdVUkwnCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gY2hlY2tUTFNFcnJvcnMoY29uc3QgVVJMJiwKK0dUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjMxODc2L3dlYmtpdF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCitpbmRleCAwM2JkNzJiYS4uN2NhODc5MmQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKKysrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeworIAorIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKKyBjbGFzcyBSZXNvdXJjZUVycm9yOworK2NsYXNzIFVSTDsKKyBzdHJ1Y3QgU291cE5ldHdvcmtQcm94eVNldHRpbmdzOworIAorIGNsYXNzIFNvdXBOZXR3b3JrU2Vzc2lvbiB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvZGV0ZWN0LWF0b21pY3MtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjE1N2UxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAwYjM4MTE3NzFhZTYzODU1MDNmMmQ5NDlmOTQzM2Q4ZjgxMGQyZmY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTcgTWF5IDIwMTcgMjI6MzQ6MjQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA4LzldIHdlYmtpdGd0azogRml4IGJ1aWxkIGZvciBhcm12NQotCi1UYWtlbiBmcm9tCi1odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTAwCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgfCAxMCArKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNmI1ZTQ1YjkuLjQ2ZWUzYzIyIDEwMDY0NAotLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjA1LDcgKzIwNSw2IEBAIHNldChXVEZfSEVBREVSUwotIAotIHNldChXVEZfU09VUkNFUwotICAgICBBc3NlcnRpb25zLmNwcAotLSAgICBBdG9taWNzLmNwcAotICAgICBBdXRvbWF0aWNUaHJlYWQuY3BwCi0gICAgIEJpdFZlY3Rvci5jcHAKLSAgICAgQ1BVVGltZS5jcHAKLUBAIC0zMzYsNiArMzM1LDE1IEBAIGlmIChOT1QgVVNFX1NZU1RFTV9NQUxMT0MpCi0gICAgIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMgYm1hbGxvYykKLSBlbmRpZiAoKQotIAotK2ZpbGUoV1JJVEUgJHtDTUFLRV9CSU5BUllfRElSfS90ZXN0X2F0b21pY3MuY3BwCi0rICAgICAiaW50IG1haW4odm9pZClcbiIKLSsgICAgICJ7IGxvbmcgbG9uZyB4ID0gMTsgcmV0dXJuIChpbnQpIF9fc3luY19hZGRfYW5kX2ZldGNoXzgoJngsIDEpOyB9XG4iKQotK3RyeV9jb21waWxlKEFUT01JQ1NfQlVJTERfU1VDQ0VFREVEICR7Q01BS0VfQklOQVJZX0RJUn0gJHtDTUFLRV9CSU5BUllfRElSfS90ZXN0X2F0b21pY3MuY3BwKQotK2lmIChOT1QgQVRPTUlDU19CVUlMRF9TVUNDRUVERUQpCi0rICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTIEF0b21pY3MuY3BwKQotK2VuZGlmICgpCi0rZmlsZShSRU1PVkUgJHtDTUFLRV9CSU5BUllfRElSfS90ZXN0X2F0b21pY3MuY3BwKQotKwotIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgIHVuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAotICkKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9kZXRlY3QtZ3N0cmVhbWVyLWdsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2RldGVjdC1nc3RyZWFtZXItZ2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdhZTQ4YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9kZXRlY3QtZ3N0cmVhbWVyLWdsLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK0Zyb206IEFsYmVydG8gR2FyY2lhIDxiZXJ0b0BpZ2FsaWEuY29tPgorU3ViamVjdDogRGlzYWJsZSBVU0VfR1NUUkVBTUVSX0dMIGlzIHRoZSBwYWNrYWdlIGlzIG5vdCBmb3VuZAorRm9yd2FyZGVkOiBubworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogd2Via2l0Z3RrL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJraXRndGsub3JpZy9Tb3VyY2UvY21ha2UvR1N0cmVhbWVyQ2hlY2tzLmNtYWtlCisrKysgd2Via2l0Z3RrL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKK0BAIC00Myw3ICs0Myw4IEBAIGlmIChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKKyAgICAgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJHU3RyZWFtZXIgMS4xMCBpcyBuZWVkZWQgZm9yIFVTRV9HU1RSRUFNRVJfR0wuIikKKyAgICAgICAgIGVsc2UgKCkKKyAgICAgICAgICAgICBpZiAoTk9UIFBDX0dTVFJFQU1FUl9HTF9GT1VORCkKKy0gICAgICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiR1N0cmVhbWVyR0wgaXMgbmVlZGVkIGZvciBVU0VfR1NUUkVBTUVSX0dMLiIpCisrICAgICAgICAgICAgICAgIHNldChVU0VfR1NUUkVBTUVSX0dMIE9GRikKKysgICAgICAgICAgICAgICAgbWVzc2FnZShTVEFUVVMgIkdTdHJlYW1lckdMIGlzIG5lZWRlZCBmb3IgVVNFX0dTVFJFQU1FUl9HTC4iKQorICAgICAgICAgICAgIGVuZGlmICgpCisgICAgICAgICBlbmRpZiAoKQorICAgICBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2ZpeC1jb25maWd1cmUtZmFpbHVyZS1hYXJjaDY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2ZpeC1jb25maWd1cmUtZmFpbHVyZS1hYXJjaDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTZhYjU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9maXgtY29uZmlndXJlLWZhaWx1cmUtYWFyY2g2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZpeCBjb25maWd1cmUgZmFpbHVyZSBmb3IgYWFyY2g2NAotCi18IC0tIFBlcmZvcm1pbmcgVGVzdCBDWFhfQ09NUElMRVJfU1VQUE9SVFNfLWZjb2xvci1kaWFnbm9zdGljcyAtIEZhaWxlZAotfCAtLSBQZXJmb3JtaW5nIFRlc3QgQ1hYX0NPTVBJTEVSX1NVUFBPUlRTXy1mZGlhZ25vc3RpY3MtY29sb3I9YWx3YXlzCi18IC0tIFBlcmZvcm1pbmcgVGVzdCBDWFhfQ09NUElMRVJfU1VQUE9SVFNfLWZkaWFnbm9zdGljcy1jb2xvcj1hbHdheXMgLSBTdWNjZXNzCi18IENNYWtlIEVycm9yIGF0IFNvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlOjQyIChXRUJLSVRfUFJFUEVORF9HTE9CQUxfQ09NUElMRVJfRkxBRyk6Ci18ICAgVW5rbm93biBDTWFrZSBjb21tYW5kICJXRUJLSVRfUFJFUEVORF9HTE9CQUxfQ09NUElMRVJfRkxBRyIuCi18IENhbGwgU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgotfCAgIFNvdXJjZS9jbWFrZS9XZWJLaXRDb21tb24uY21ha2U6NTggKGluY2x1ZGUpCi18ICAgQ01ha2VMaXN0cy50eHQ6MTY2IChpbmNsdWRlKQotfAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFuanVrdW1hciBNYXRoYSA8bWFuanVrdW1hci5oYXJ0aGlrb3RlLW1hdGhhQHhpbGlueC5jb20+Ci0KLUluZGV4OiB3ZWJraXRndGstMi4xNC42L1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2Via2l0Z3RrLTIuMTQuNi5vcmlnL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlICAgICAyMDE4LTAyLTE1IDE4OjU2OjI5LjMxNTIzODU2NCAtMDgwMAotKysrIHdlYmtpdGd0ay0yLjE0LjYvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UgIDIwMTgtMDItMTUgMTg6NTQ6NTcuNDY5NTE4MDY0IC0wODAwCi1AQCAtMzksNyArMzksNyBAQAotICAgICBpZiAoTk9UIFdURl9DUFVfQVJNNjQpCi0gICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJXVEZfQ1BVX0FSTTY0X0NPUlRFWEE1MyBzZXQgd2l0aG91dCBXVEZfQ1BVX0FSTTY0IikKLSAgICAgZW5kaWYgKCkKLS0gICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NPTVBJTEVSX0ZMQUcoLW1maXgtY29ydGV4LWE1My04MzU3NjkpCi0rICAgIFdFQktJVF9QUkVQRU5EX0dMT0JBTF9DT01QSUxFUl9GTEFHUygtbWZpeC1jb3J0ZXgtYTUzLTgzNTc2OSkKLSBlbmRpZiAoKQotCi0gRVhQT1NFX1ZBUklBQkxFX1RPX0JVSUxEKFdURl9DUFVfQVJNNjRfQ09SVEVYQTUzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL3gzMl9zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL3gzMl9zdXBwb3J0LnBhdGNoCmluZGV4IDVmMjM4MzcuLjg1ZDI4MWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay94MzJfc3VwcG9ydC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsveDMyX3N1cHBvcnQucGF0Y2gKQEAgLTEsMTMgKzEsMjIgQEAKLUZyb206IERhbmllbCBTY2hlcGxlciA8ZHNjaGVwbGVyQGdtYWlsLmNvbT4KLVN1YmplY3Q6IEZpeCBGVEJGUyBpbiB4MzIKLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzcwMDc5NQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotSW5kZXg6IHdlYmtpdGd0ay0yLjE2LjEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0Zyb20gODk3NTYzYTAzOTcyNjZkOGNlYjA1OGYxNzJlMTZiMDY0MTliMjU5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbmllbCBTY2hlcGxlciA8ZHNjaGVwbGVyQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjYgTWFyIDIwMTggMTc6NDg6MzQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IEZUQkZTIGluIHgzMgorCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2Via2l0Z3RrLTIuMTYuMS5vcmlnL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKLSsrKyB3ZWJraXRndGstMi4xNi4xL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKLUBAIC0xNzIsNyArMTcyLDExIEBACisKKy0tLQorIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAoraW5kZXggODUwZTI5OC4uNTUxYzA0NyAxMDA2NDQKKy0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKK0BAIC0xMzIsNyArMTMyLDExIEBACiAgLyogQ1BVKFg4Nl82NCkgLSBBTUQ2NCAvIEludGVsNjQgLyB4ODZfNjQgNjQtYml0ICovCiAgI2lmICAgZGVmaW5lZChfX3g4Nl82NF9fKSBcCiAgICAgIHx8IGRlZmluZWQoX01fWDY0KQpAQCAtMTcsNSArMjYsNSBAQAogICNkZWZpbmUgV1RGX0NQVV9YODZfNjQgMQogKyNlbmRpZgogICNkZWZpbmUgV1RGX0NQVV9YODZfU1NFMiAxCisgI2RlZmluZSBXVEZfQ1BVX0tOT1dOIDEKICAjZW5kaWYKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjlmYTdmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgd2ViIHJlbmRlcmluZyBlbmdpbmUgZm9yIHRoZSBHVEsrIHBsYXRmb3JtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNEICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1BUFBMRTttZDU9NDY0NmY5MDA4MmM0MGJjZjI5OGMyODVmOGJhYjBiMTIgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yO21kNT0zNjM1N2ZmZGUyYjY0YWUxNzdiMjQ5NDQ0NWI3OWQyMSBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTIuMTttZDU9YTc3OGEzM2VmMzM4YWJiYWY4YjhhN2MzNmI2ZWVjODAgXAotCQkgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR09iamVjdEludHJvc3BlY3Rpb24uY21ha2UtcHJlZml4LXZhcmlhYmxlcy1vYnRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGV0ZWN0LWF0b21pY3MtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1jb25maWd1cmUtZmFpbHVyZS1hYXJjaDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWdsZXMzLWhlYWRlci13aGVuLWdsZXMyLWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMWE1NDg1OTUxMzVlZTc1YWQzYmYyZTE4YWM4MzExMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzkxMmNjMmY0MGYxMmU0NTJiZTFjYTRiYWJkYmRhYWMwZWM0ZjgyOGQ0NDEyNTdhNmIwNmMyOTYzYmJhYzNjIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotIyBkZXBlbmRzIG9uIGxpYnh0Ci1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCi0gICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKLQkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAotCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCi0JICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCi0JICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgotUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCQktRFBPUlQ9R1RLIFwKLQkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAotCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbmAgXAotCQkiCi0KLSMgR0wvR0xFUyBoZWFkZXIgY2xhc2g6IGJvdGggZGVmaW5lIHRoZSBzYW1lIHRoaW5nLCBkaWZmZXJlbnRseSwgb24gMzIgYml0IHg4NgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIGJpbnV0aWxzIDIuMjUuMSBoYXMgYSBidWcgb24gYWFyY2g2NDoKLSMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzAKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURXVEZfQ1BVX0FSTTY0X0NPUlRFWEE1Mz1PTiIKLQotIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBNSVBTIGVpdGhlcgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgotIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcwotIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKLSMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgotIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgotCi0jIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAotIyBTZWdtZW50YXRpb24gZmF1bHQKLUdJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCi1HSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjIwLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMWZmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yMC41LmJiCkBAIC0wLDAgKzEsMTI0IEBACitTVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKKworTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCisJCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCisJCSAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veDMyX3N1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldGVjdC1nc3RyZWFtZXItZ2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1zb3VwLUZvcndhcmQtZGVjbGFyZS1VUkwtY2xhc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtUGFpbnRpbmdEYXRhLWhhcy1uby1tZW1iZXItbmFtZWQtbGlnaHRWZWN0b3Itb24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2Via2l0Z3RrLWZpeC1DVkUtMjAxNy0xNzgyMS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjcyYTA1ZjZhNGRjMWM3OGIwNzk1OTBhOGZkMjgwNDAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1YzBmOGQyNmU5NjA1YWZlMDk0OGQxNjFiYTVmZDgyZWZlZThlZGEyZGViZDQwOWZkNDBhNDQwYWMzYWY5OTAiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKKworREVQRU5EUyA9ICJ6bGliIGxpYnNvdXAtMi40IGN1cmwgbGlieG1sMiBjYWlybyBsaWJ4c2x0IGxpYnh0IGxpYmlkbiBsaWJnY3J5cHQgXAorICAgICAgICAgICBndGsrMyBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBmbGV4LW5hdGl2ZSBncGVyZi1uYXRpdmUgc3FsaXRlMyBcCisJICAgcGFuZ28gaWN1IGJpc29uLW5hdGl2ZSBnYXdrIGludGx0b29sLW5hdGl2ZSBsaWJ3ZWJwIFwKKwkgICBhdGsgdWRldiBoYXJmYnV6eiBqcGVnIGxpYnBuZyBwdWxzZWF1ZGlvIGxpYnJzdmcgbGlidGhlb3JhIGxpYnZvcmJpcyBsaWJ4Y29tcG9zaXRlIGxpYnh0c3QgXAorCSAgIHJ1YnktbmF0aXZlIGxpYm5vdGlmeSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgXAorCSAgIGdldHRleHQtbmF0aXZlIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ0YXNuMSBcCisgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJ3dheWxhbmQnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ3dlYmdsIG9wZW5nbCcsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgIGVuY2hhbnQgXAorICAgICAgICAgICAgICAgICAgIGxpYnNlY3JldCBcCisgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURFTkFCTEVfV0FZTEFORF9UQVJHRVQ9T04sLURFTkFCTEVfV0FZTEFORF9UQVJHRVQ9T0ZGLHdheWxhbmQiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURFTkFCTEVfWDExX1RBUkdFVD1PTiwtREVOQUJMRV9YMTFfVEFSR0VUPU9GRix2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUdbZ2VvY2x1ZV0gPSAiLURFTkFCTEVfR0VPTE9DQVRJT049T04sLURFTkFCTEVfR0VPTE9DQVRJT049T0ZGLGdlb2NsdWUiCitQQUNLQUdFQ09ORklHW2VuY2hhbnRdID0gIi1ERU5BQkxFX1NQRUxMQ0hFQ0s9T04sLURFTkFCTEVfU1BFTExDSEVDSz1PRkYsZW5jaGFudCIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLURFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMj1PTiwtREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9GRixndGsrIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gPSAiLURFTkFCTEVfR0xFUzI9T04sLURFTkFCTEVfR0xFUzI9T0ZGLHZpcnR1YWwvbGliZ2xlczIiCitQQUNLQUdFQ09ORklHW3dlYmdsXSA9ICItREVOQUJMRV9XRUJHTD1PTiwtREVOQUJMRV9XRUJHTD1PRkYsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItREVOQUJMRV9PUEVOR0w9T04sLURFTkFCTEVfT1BFTkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tsaWJzZWNyZXRdID0gIi1EVVNFX0xJQlNFQ1JFVD1PTiwtRFVTRV9MSUJTRUNSRVQ9T0ZGLGxpYnNlY3JldCIKK1BBQ0tBR0VDT05GSUdbbGliaHlwaGVuXSA9ICItRFVTRV9MSUJIWVBIRU49T04sLURVU0VfTElCSFlQSEVOPU9GRixsaWJoeXBoZW4iCisjIFNvdXJjZSBpcyBhdCBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3dvZmYyCitQQUNLQUdFQ09ORklHW3dvZmYyXSA9ICItRFVTRV9XT0ZGMj1PTiwtRFVTRV9XT0ZGMj1PRkYsd29mZjIiCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKwkJLURQT1JUPUdUSyBcCisJCS1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T04nLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PRkYnLCBkKX0gXAorCQkke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9HVEtET0M9T04nLCAnLURFTkFCTEVfR1RLRE9DPU9GRicsIGQpfSBcCisJCS1ERU5BQkxFX01JTklCUk9XU0VSPU9OIFwKKyAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPWB3aGljaCBweXRob25gIFwKKwkJIgorCisjIEdML0dMRVMgaGVhZGVyIGNsYXNoOiBib3RoIGRlZmluZSB0aGUgc2FtZSB0aGluZywgZGlmZmVyZW50bHksIG9uIDMyIGJpdCB4ODYKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4NiA9ICIgLURVU0VfR1NUUkVBTUVSX0dMPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYteDMyID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKKworIyBKYXZhc2NyaXB0IEpJVCBpcyBub3Qgc3VwcG9ydGVkIG9uIHBvd2VycGMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYzY0ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKKworIyBBUk0gSklUIGNvZGUgZG9lcyBub3QgYnVpbGQgb24gQVJNdjQvNS82IGFueW1vcmUKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY1ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY2ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FybXY0ID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKKworIyBiaW51dGlscyAyLjI1LjEgaGFzIGEgYnVnIG9uIGFhcmNoNjQ6CisjIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4NDMwCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hYXJjaDY0ID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hYXJjaDY0ID0gIiAtRFdURl9DUFVfQVJNNjRfQ09SVEVYQTUzPU9OIgorCisjIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCisjIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCisjIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKK1NFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAorIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCisjIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCisKKyMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCAxMSAoU2VnbWVudGF0aW9uIGZhdWx0KSAtIGNvcmUgZHVtcGVkCisjIFNlZ21lbnRhdGlvbiBmYXVsdAorR0lfREFUQV9FTkFCTEVEX2FybXY3YSA9ICJGYWxzZSIKK0dJX0RBVEFfRU5BQkxFRF9hcm12N3ZlID0gIkZhbHNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDgtYXByLWZpeC1wdGVzdC1oYW5nLWluLXRlc3RzdHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwOC1hcHItZml4LXB0ZXN0LWhhbmctaW4tdGVzdHN0ci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODA5ZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDgtYXByLWZpeC1wdGVzdC1oYW5nLWluLXRlc3RzdHIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAwMzZmOTA3NDgyNDc0MTdkYmZhNzE0YjFiOTEyY2E3ZGQ0MDUzZjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjMgSnVsIDIwMTggMTQ6MTI6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXByOiBmaXggcHRlc3QgaGFuZyBpbiB0ZXN0c3RyCisKK3B0ZXN0IGhhbmcgaW4gdGVzdHN0ciBzaW5jZSB0dXJucyBpbnRvIGEgbm9uLXRlcm1pbmF0aW5nIGxvb3AsCitmaXggYnkgYmVsb3cgYmFja3BvcnRlZCBwYXRjaC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9jb21taXQvCisgICAgICAgICAyZThmYmZmNGVjZjgyZDBkZWNmNmJhZjc3NGMyMDk5NDhmMmY0OTk4P2RpZmY9dW5pZmllZF0KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3QvdGVzdHN0ci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0c3RyLmMgYi90ZXN0L3Rlc3RzdHIuYworaW5kZXggZDlhNTA1NC4uOTUxYTgzMCAxMDA2NDQKKy0tLSBhL3Rlc3QvdGVzdHN0ci5jCisrKysgYi90ZXN0L3Rlc3RzdHIuYworQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgdm9pZCBvdmVyZmxvd19zdHJmc2l6ZShhYnRzX2Nhc2UgKnRjLCB2b2lkICpkYXRhKQorICAgICBmb3IgKDsgb2ZmIDwgOTk5OTk5OTk5OyBvZmYgKz0gOTk5KSB7CisgICAgICAgICBhcHJfc3RyZnNpemUob2ZmLCBidWYpOworICAgICB9CistICAgIGZvciAob2ZmID0gMTsgb2ZmIDwgTE9OR19NQVggJiYgb2ZmID4gMDsgb2ZmICo9IDIpIHsKKysgICAgZm9yIChvZmYgPSBMT05HX01BWDsgb2ZmID4gMTsgb2ZmIC89IDIpIHsKKyAgICAgICAgIGFwcl9zdHJmc2l6ZShvZmYsIGJ1Zik7CisgICAgICAgICBhcHJfc3RyZnNpemUob2ZmICsgMSwgYnVmKTsKKyAgICAgICAgIGFwcl9zdHJmc2l6ZShvZmYgLSAxLCBidWYpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIKaW5kZXggNzU2M2EzOC4uN2JmYjY5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMy5iYgpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1hcHItZml4LXB0ZXN0LWhhbmctaW4tdGVzdHN0ci5wYXRjaCBcCiAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxMmYyYTM0OTQ4M2FkNmYxMmRiNDliYTAxZmJmZGJmYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbF8wLjYwLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbF8wLjYwLjYuMS5iYgppbmRleCAxOWE3MTU1Li4xNjFiYjVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hc3BlbGwvYXNwZWxsXzAuNjAuNi4xLmJiCkBAIC0yNSw3ICsyNSwxMCBAQAogRklMRVNfbGlicHNwZWxsID0gIiR7bGliZGlyfS9saWJwc3BlbGwuc28uKiIKIEZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L3BzcGVsbC1jb25maWciCiAKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZAogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BzcGVsbC1jb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MTdiYjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJBVC1TUEkgMiBUb29sa2l0IEJyaWRnZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVlYzZjZWFkMzM1MGRjYTQ4YTIzNTI3MWMxMDViM2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRmMGMyN2I2MWRiZmZiYTdhNWI1YmEyZmY4OGM4Y2VlMTBmZjhkYWM3NzRmYTViNzljZTkwNjg1MzYyM2I3NSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi0jIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCi0KLUZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgotRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQ4ZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMzU1Yzc5MTZhNjk1MTM0OTBjYjgzYWQzNDAxNmIxNjkiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2MTg5MWYwYWJhZTE2ODlmNjYxN2E5NjMxMDVhM2YxZGNkYWI1OTcwYzRhMzZkZWQ5Yzc5YTdhNTQ0YjE2YTZlIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUgbGlieG1sMiIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworIyBUaGUgYXQtc3BpMi1jb3JlIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1nbm9tZSAke1BOfS1ndGsyIgorCitGSUxFU18ke1BOfS1nbm9tZSA9ICIke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTMuMC9ndGstbW9kdWxlcyIKK0ZJTEVTXyR7UE59LWd0azIgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJhdGstYnJpZGdlLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOGM5ZjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSBmYTM3Njc2MmI5MjQwNGI5ZTNjNDMwMDU0YjhjMzM0MWNhMGZkZDhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTY6MDA6MDIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEFkZCAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyCi0KLURlZmF1bHQgdG8gInBrZy1jb25maWcgLS12YXJpYWJsZT1zeXN0ZW1kdXNlcnVuaXRkaXIgc3lzdGVtZCIgYnV0Ci1hbGxvdyBvdmVycmlkaW5nIHRoZSB2YWx1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc5MTFdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0tLS0KLSBidXMvTWFrZWZpbGUuYW0gfCAyICstCi0gY29uZmlndXJlLmFjICAgIHwgOSArKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2J1cy9NYWtlZmlsZS5hbSBiL2J1cy9NYWtlZmlsZS5hbQotaW5kZXggNjg4ZjgyYS4uMTBjZGU2MiAxMDA2NDQKLS0tLSBhL2J1cy9NYWtlZmlsZS5hbQotKysrIGIvYnVzL01ha2VmaWxlLmFtCi1AQCAtMjksNyArMjksNyBAQCBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KLSBFWFRSQV9ESVNUICs9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlLmluCi0gQ0xFQU5GSUxFUyArPSBvcmcuYTExeS5CdXMuc2VydmljZQotIAotLXN5c3RlbWRfdXNlcmRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC91c2VyCi0rc3lzdGVtZF91c2VyZGlyID0gJChzeXN0ZW1kdXNlcnVuaXRkaXIpCi0gc3lzdGVtZF91c2VyX0RBVEEgPSBhdC1zcGktZGJ1cy1idXMuc2VydmljZQotIGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlOiBhdC1zcGktZGJ1cy1idXMuc2VydmljZS5pbiBNYWtlZmlsZQotIAkkKEFNX1ZfR0VOKSAkKFNFRCkgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDhjNGZjYTIuLjE0MTVjY2EgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE0Niw2ICsxNDYsMTUgQEAgZWxzZQotIGZpCi0gQUNfU1VCU1QoREJVU19TRVJWSUNFU19ESVIpCi0gCi0rQUNfQVJHX1dJVEgoW3N5c3RlbWR1c2VydW5pdGRpcl0sCi0rICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9RElSXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGlyZWN0b3J5IGZvciBzeXN0ZW1kIHNlcnZpY2UgZmlsZXNdKSwKLSsgICAgICAgICAgICBbXSwKLSsgICAgICAgICAgICBbd2l0aF9zeXN0ZW1kdXNlcnVuaXRkaXI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXN5c3RlbWR1c2VydW5pdGRpciBzeXN0ZW1kKV0pCi0rQUNfU1VCU1QoW3N5c3RlbWR1c2VydW5pdGRpcl0sIFskd2l0aF9zeXN0ZW1kdXNlcnVuaXRkaXJdKQotKwotK0FDX1BBVEhfUFJPRyhHTElCX01LRU5VTVMsIGdsaWItbWtlbnVtcykKLSsKLSBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzEuMzIuMF0pCi0gCi0gQUNfU1VCU1QoTElCVE9PTF9FWFBPUlRfT1BUSU9OUykKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjFlZTNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhMDQyZTRjODAxZmRiNzkzNzg4Yjc0OWVhYjIxNDg1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MGUwY2RmNWUzZDcxMzQwMDMxNWI2M2M3ZGVmZmE1NjEwMzJhNmMzNzI4OTIxMWQ4YWZjZmFhMjY3YzI2MTUiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYngxMSBsaWJ4aSBsaWJ4dHN0IgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKLSAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTc1ZjU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjguMC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjljNDJmNzk2MzZlZDFjMGU5MDhiNzQ4M2Q3ODliMzJlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQyYTI0ODdhYjExY2U0M2MyODhlNzNiMjY2OGVmOGIxYWI0MGEwZTJiNGY5NGU4MGZjYTA0YWQyN2I2ZjFjODciCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYngxMSBsaWJ4aSBsaWJ4dHN0IgorCitpbmhlcml0IG1lc29uIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRU1FU09OID0gIiAtRHN5c3RlbWRfdXNlcl9kaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgICAgLURkYnVzX2RhZW1vbj0ke2JpbmRpcn0iCisKK0dUS0RPQ19FTkFCTEVfRkxBRyA9ICItRGVuYWJsZV9kb2NzPXRydWUiCitHVEtET0NfRElTQUJMRV9GTEFHID0gIi1EZW5hYmxlX2RvY3M9ZmFsc2UiCisKK0dJX0VOQUJMRV9GTEFHID0gIi1EZW5hYmxlLWludHJvc3BlY3Rpb249eWVzIgorR0lfRElTQUJMRV9GTEFHID0gIi1EZW5hYmxlLWludHJvc3BlY3Rpb249bm8iCisKK0VYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJyR7R0lfRU5BQkxFX0ZMQUd9JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7R0lfRElTQUJMRV9GTEFHfScsIGQpfSAiCisKK0VYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnJHtHVEtET0NfRU5BQkxFX0ZMQUd9JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke0dUS0RPQ19ESVNBQkxFX0ZMQUd9JywgZCl9ICIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKKyAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1Td2l0Y2gtZnJvbS1maWxlbmFtZS10by1iYXNlbmFtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0ay8wMDAxLVN3aXRjaC1mcm9tLWZpbGVuYW1lLXRvLWJhc2VuYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0N2U4MWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1Td2l0Y2gtZnJvbS1maWxlbmFtZS10by1iYXNlbmFtZS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitGcm9tIDAzMzAyNTE3MTVmZWU5MDhmMmYxNjI1NjVkNGZhMWRmNTAzMGQwYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFRodSwgMTQgSnVuIDIwMTggMTc6MjE6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gU3dpdGNoIGZyb20gZmlsZW5hbWUgdG8gYmFzZW5hbWUKKworV2hlbiBhdGstZW51bS10eXBlcy5oIGlzIGluc3RhbGxlZCBpbiB0byBhIHN5c3RlbSwgdGhlIHVzZXIgbGlrZWx5IGhhcworbm8gYWNjZXNzIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgaGVhZGVycyB3ZXJlIGJ1aWx0LCBlc3BlY2lhbGx5IGlmCit0aGUgc29mdHdhcmUgd2FzIGJ1aWx0IGluIGEgc3lzcm9vdCBlbnZpcm9ubWVudC4gSWYgdGhlIGhlYWRlcnMgd2VyZQorYnVpbHQgZm9yIGEgbXVsaXRsaWIgZW52aXJvbm1lbnQsIHRoZSBidWlsZCBwYXRoaW5nIG1heSBiZSBkaWZmZXJlbnQuCitTdWJzZXF1ZW50bHksIGlmIHR3byBtdWxpdGxpYiB2YXJpYW50cyBvZiBhdGsgYXJlIGluc3RhbGxlZCB0b2dldGhlciB0aGUKK2hlYWRlcnMgY29uZmxpY3QgZm9yIG5vIG90aGVyIHJlYXNvbiB0aGVuIHRoZXkgd2VyZSBidWlsdCBpbiB0d28KK2RpZmZlcmVudCBsb2NhdGlvbnMuIFN3aXRjaGluZyBmcm9tIGZpbGVuYW1lIHRvIGJhc2VuYW1lLCBzdGlsbCBzaG91bGQKK3Byb3ZpZGUgc3VmZmljaWVudCBpbmZvcm1hdGlvbiBvbiB0aGUgcHJvdmlkZW5jZSBvZiB0aGUgZW51bXMsIHdoaWxlIG5vdAorY29uZmxpY3RpbmcgZm9yIHJlYWxseSBubyBnb29kIHJlYXNvbi4KKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBhdGsvYXRrLWVudW0tdHlwZXMuaC50ZW1wbGF0ZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2F0ay9hdGstZW51bS10eXBlcy5oLnRlbXBsYXRlIGIvYXRrL2F0ay1lbnVtLXR5cGVzLmgudGVtcGxhdGUKK2luZGV4IDdiNGNlYzQuLjgzMjFjMjQgMTAwNjQ0CistLS0gYS9hdGsvYXRrLWVudW0tdHlwZXMuaC50ZW1wbGF0ZQorKysrIGIvYXRrL2F0ay1lbnVtLXR5cGVzLmgudGVtcGxhdGUKK0BAIC0xNCw3ICsxNCw3IEBAIEdfQkVHSU5fREVDTFMKKyAKKyAvKioqIEJFR0lOIGZpbGUtcHJvZHVjdGlvbiAqKiovCisgCistLyogZW51bWVyYXRpb25zIGZyb20gIkBmaWxlbmFtZUAiICovCisrLyogZW51bWVyYXRpb25zIGZyb20gIkBiYXNlbmFtZUAiICovCisgLyoqKiBFTkQgZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKyAvKioqIEJFR0lOIHZhbHVlLWhlYWRlciAqKiovCistLSAKKzIuMTQuMS40NTkuZzIzOGU0ODcKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjA0YTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzODM4NzU3ZDI5NTkwY2MxZWY5OWM5N2Y3MjY4Mzc3MzIyZmMxN2U5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAxMjowNDowMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZW5hYmxlIGludHJvc3BlY3Rpb24gZm9yIGNyb3NzLWNvbXBpbGUKKworSXQgd29ya3MgZmluZSBpbiBPRS1jb3JlIGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgZGlzYWJsZWQuIExldCB0aGUgdXNlciBkZWNpZGUKK2lmIGl0IHNob3VsZCBiZSBkaXNhYmxlZCBvciBub3QuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgYXRrL21lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXRrL21lc29uLmJ1aWxkIGIvYXRrL21lc29uLmJ1aWxkCitpbmRleCA3YjVhNjgzLi44NTVlMjhmIDEwMDY0NAorLS0tIGEvYXRrL21lc29uLmJ1aWxkCisrKysgYi9hdGsvbWVzb24uYnVpbGQKK0BAIC0xMzksNyArMTM5LDcgQEAgbGliYXRrX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGxpYmF0aywKKyAKKyBkaXNhYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdkaXNhYmxlX2ludHJvc3BlY3Rpb24nKQorIAorLWlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIGFuZCBub3QgZGlzYWJsZV9pbnRyb3NwZWN0aW9uCisraWYgbm90IGRpc2FibGVfaW50cm9zcGVjdGlvbgorICAgZ25vbWUuZ2VuZXJhdGVfZ2lyKGxpYmF0aywKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzOiBhdGtfc291cmNlcyArIGF0a19oZWFkZXJzICsgWyBhdGtfZW51bV9oIF0gKyBbIGF0a192ZXJzaW9uX2ggXSwKKyAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6ICdBdGsnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NWI1OTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9saWJzIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2NkZGNjMzEzYjlhM2VmZDE5YjJkZGYwNzliYTY4ZjUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZjAwZmY2YjgzODUxZGRkYzhkYjM4YjRkOWZhZWZmYjk5NTcyYmExNTBiMDY2NGVlMDJlNDZmMDE1ZWE5N2NiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI4LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiMTNiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI4LjEuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2xpYnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgorCisjIE5lZWQgZ2V0dGV4dC1uYXRpdmUgYXMgTWVzb24gY2FuJ3QgdHVybiBvZmYgaTE4bgorREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMCIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK0dUS0RPQ19FTkFCTEVfRkxBRyA9ICItRGVuYWJsZV9kb2NzPXRydWUiCitHVEtET0NfRElTQUJMRV9GTEFHID0gIi1EZW5hYmxlX2RvY3M9ZmFsc2UiCisKK0dJX0VOQUJMRV9GTEFHID0gIi1EZGlzYWJsZV9pbnRyb3NwZWN0aW9uPWZhbHNlIgorR0lfRElTQUJMRV9GTEFHID0gIi1EZGlzYWJsZV9pbnRyb3NwZWN0aW9uPXRydWUiCisKK0VYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJyR7R0lfRU5BQkxFX0ZMQUd9JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7R0lfRElTQUJMRV9GTEFHfScsIGQpfSAiCisKK0VYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnJHtHVEtET0NfRU5BQkxFX0ZMQUd9JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke0dUS0RPQ19ESVNBQkxFX0ZMQUd9JywgZCl9ICIKKworU1JDX1VSSV9hcHBlbmQgPSAiIFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWZyb20tZmlsZW5hbWUtdG8tYmFzZW5hbWUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRmYjVlNzQ3NDIyMGFmYTNmNGNhN2U0NWFmOWYzYTExIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiY2QzYTFlYTZlY2MyNjhhMjQ5N2YwY2QwMThlOTcwODYwZGUyNGE2ZDQyMDg2OTE5ZDZiZjZjOGU4ZDUzZjRmYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKaW5kZXggOGYzZGM0NS4uOGI4OWRlOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKQEAgLTExLDcgKzExLDcgQEAKIERFUEVORFMgPSAiYXR0ciIKIAogU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2FjbC8ke0JQfS5zcmMudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYztzdWJkaXI9JHtTfSBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWM7c3ViZGlyPSR7QlB9IFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIGZpbGU6Ly9hY2wtZml4LXRoZS1vcmRlci1vZi1leHBlY3RlZC1vdXRwdXQtb2YtZ2V0ZmFjbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMKaW5kZXggMjRlZjVhZC4uOWZjMGYzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwpAQCAtMjMsNyArMjMsMTEgQEAKIAkgICAgcyxebGliZGlyPVwnJHtiYXNlX2xpYmRpcn1cJyQsbGliZGlyPVwnJHtsaWJkaXJ9XCcsCiB9CiAKLWluaGVyaXQgcHRlc3QKK2luaGVyaXQgcHRlc3QgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzZXRmYXR0ciIKK0FMVEVSTkFUSVZFX1RBUkdFVFtzZXRmYXR0cl0gPSAiJHtiaW5kaXJ9L3NldGZhdHRyIgogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogCXRhciAtYyAtLWV4Y2x1ZGU9ZXh0IHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MTliM2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvZ3JhbW1hYmxlIENvbXBsZXRpb24gZm9yIEJhc2ggNCIKLUhPTUVQQUdFID0gImh0dHA6Ly9iYXNoLWNvbXBsZXRpb24uYWxpb3RoLmRlYmlhbi5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2Jhc2gtY29tcGxldGlvbi8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjgxMTc0OTJiZGM5NDA4NDM4ZTYwNDE2ODNhNDIzY2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFiYTg5MmQzZjQyN2Q0YTY4NmRlMzI2NzNmMzU0MDFiYzk0N2E3ODAxZjY4NDEyNzEyMGNkYjEzNjQxNDQxZSIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJhc2gtY29tcGxldGlvbi0oP1A8cHZlcj4oPyEyMDA4KS4rKVwudGFyIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgY29tcGF0ZGlyCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KLQllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgotCi0JIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4Ci0JbG9jYWwgaQotCWZvciBpIGluIG1vdW50IHVtb3VudCByZmtpbGw7IGRvCi0JCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8kaQotCWRvbmUKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKLQotIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKLVBBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKLUZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTA2NDM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuOC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCitIT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwMWI2YWU2MmY3ZDVmYjViMWIyNWUzNDQyN2RiOTE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwMWY1NTcwZjU2OThhMGRkYThkYzljZmIyYTgzNzQ0ZGFhMWVjNTQ3NTgzNzNhNmUzNDliZDkwMzM3NWY1NGQiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIGNvbXBhdGRpcgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCisJZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KKworCSMgRGVsZXRlIGZpbGVzIGFscmVhZHkgcHJvdmlkZWQgYnkgdXRpbC1saW51eAorCWxvY2FsIGkKKwlmb3IgaSBpbiBtb3VudCB1bW91bnQ7IGRvCisJCXJtICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8kaQorCWRvbmUKK30KKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKKworIyBTb21lIHJlY2lwZXMgYXJlIHByb3ZpZGluZyAke1BOfS1iYXNoLWNvbXBsZXRpb24gcGFja2FnZXMKK1BBQ0tBR0VTID0rICIke1BOfS1leHRyYSIKK0ZJTEVTXyR7UE59LWV4dHJhID0gIiR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vaGVscGVycy8iCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2FkZC1vcHRpb24tZGV2LWRzcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvYWRkLW9wdGlvbi1kZXYtZHNwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzI5OGNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvYWRkLW9wdGlvbi1kZXYtZHNwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotQWRkIGNvbmZpZyBvcHRpb24gLS13aXRoLWRldi1kc3AuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBaaGFuZyBYaWFvIDx4aWFvLnpoYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTA2LDYgKzEwNiwxNiBAQCBBQ19BUkdfV0lUSChweXRob24sWyAgLS13aXRoLXB5dGhvbltbPUFSCi0gICBmaQotICAgXSkKLSAKLStBQ19BUkdfV0lUSChkZXYtZHNwLFsgIC0td2l0aC1kZXYtZHNwICAgICAgICAgIGVuYWJsZXMgZGV2L2RzcCBmb3IgZW50cm9weSBwcm9kdWNpbmcuIGF1dG8gZm9yIGF1dG8tZGV0ZWN0aW5nIGRldi9kZXAgb24gaG9zdC4gW1tkZWZhdWx0PW5vXV1dLFsKLSsgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoW0hBVkVfREVWX0RTUF0sIDEpCi0rICBlbHNlCi0rICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9IGF1dG87ICB0aGVuCi0rICAgICAgYWNfZGV0ZWN0X2Rldl9kc3A9eWVzCi0rICAgIGZpCi0rICBmaQotKyAgXSxbYWNfZGV0ZWN0X2Rldl9kc3A9bm9dKQotKwotICMgQ2hlY2sgZm9yIGV4cGVydCBtb2RlCi0gaWYgdGVzdCAiJGFjX2VuYWJsZV9leHBlcnRfbW9kZSIgPSB5ZXM7IHRoZW4KLSAgIEJFRV9FWFBFUlRfTU9ERQotQEAgLTQ2NCw3ICs0NzQsNyBAQCBsaW51eCopCi0gICAgICAgYWNfY3ZfaGF2ZV9kZXZfZHNwPW5vCi0gICAgIGZpCi0gICAgIF0pCi0tICBpZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9kZXZfZHNwIiA9IHllczsgdGhlbgotKyAgaWYgdGVzdCAiJGFjX2N2X2hhdmVfZGV2X2RzcCIgPSB5ZXMgJiYgdGVzdCAiJGFjX2RldGVjdF9kZXZfZHNwIiA9IHllczsgdGhlbgotICAgICBBQ19ERUZJTkUoW0hBVkVfREVWX0RTUF0sIDEpCi0gICBmaQotICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvYmVlY3J5cHQtZW5hYmxlLXB0ZXN0LXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2JlZWNyeXB0LWVuYWJsZS1wdGVzdC1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTU1MTNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvYmVlY3J5cHQtZW5hYmxlLXB0ZXN0LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1iZWVjcnlwdDogZW5hYmxlIHB0ZXN0IHN1cHBvcnQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotQWRkIGluc3RhbGwtcHRlc3QgcnVsZXMuCi0KLVNpZ25lZC1vZmYtYnk6IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgfCAzICsrKwotIHRlc3RzL01ha2VmaWxlLmFtIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYjdlNzg2OS4uNTA3NmY1OSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTczLDMgKzczLDYgQEAgRElTVENMRUFORklMRVMgPSBtcG9wdC5zIGJsb3dmaXNob3B0LnMgc2hhMW9wdC5zCi0gCi0gYmVuY2g6Ci0gCShjZCB0ZXN0cyAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBiZW5jaCkKLSsKLStpbnN0YWxsLXB0ZXN0OgotKwkoY2QgdGVzdHMgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgY2hlY2tfUFJPR1JBTVMpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMTYwNGU1ZS4uZDhkYjhkOCAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTEwMSwzICsxMDEsNiBAQCBiZW5jaDogYmVuY2htZSBiZW5jaHJzYSBiZW5jaGhmIGJlbmNoYmMKLSAJLi9iZW5jaGJjIEFFUyAxMjgKLSAJLi9iZW5jaGJjIEJsb3dmaXNoIDEyOAotIAkuL2JlbmNoYmMgQmxvd2Zpc2ggMTI4Ci0rCi0rY2hlY2tfUFJPR1JBTVM6Ci0rCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQoY2hlY2tfUFJPR1JBTVMpCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9kaXNhYmxlLWljdS1jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvZGlzYWJsZS1pY3UtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxYjFmYTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9kaXNhYmxlLWljdS1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVdlIGFyZSB1bmFibGUgdG8gcnVuIGNvZGUgYXQgY29uZmlndXJlIHRpbWUgaW4gYSBjcm9zcyBlbnZpcm9uZW1udCwgYnV0IGFzIHdlCi1jb250cm9sIHRoZSBidWlsZCB3ZSBjYW4gYmUgZmFpcmx5IGNlcnRhaW4gdGhpcyBkZXBlbmRlbmN5IGlzIG1ldC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotSkwgMDUvMDcvMTAKLUluZGV4OiBiZWVjcnlwdC00LjIuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiZWVjcnlwdC00LjIuMS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEwLTExLTI2IDE3OjEyOjI1LjAwMDAwMDAwMCArMDgwMAotKysrIGJlZWNyeXB0LTQuMi4xL2NvbmZpZ3VyZS5hYwkyMDEwLTExLTI2IDE3OjEyOjMwLjAwMDAwMDAwMCArMDgwMAotQEAgLTI5MiwzMiArMjkyLDYgQEAKLSAjIFByZWRlZmluZXMgYW5kIGNoZWNrcyBmb3IgQysrIEFQSSBzdXBwb3J0Ci0gQUhfVEVNUExBVEUoW0NQUEdMVUVdLFtEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIHRoZSBDKysgY29kZV0pCi0gCi0taWYgdGVzdCAiJGFjX3dpdGhfY3BsdXNwbHVzIiA9IHllczsgdGhlbgotLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgSUJNJ3MgSUNVIGxpYnJhcnkgdmVyc2lvbiA+PSAyLjhdKQotLSAgQUNfTEFOR19QVVNIKEMpCi0tICBBQ19SVU5fSUZFTFNFKFsKLS0gICAgQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPHVuaWNvZGUvdXZlcnNpb24uaD5dXSxbWwotLSAgICAgICNpZiBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA8IDIKLS0gICAgICBleGl0KDEpOwotLSAgICAgICNlbGlmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID09IDIKLS0gICAgICAjIGlmIFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNIDwgOAotLSAgICAgIGV4aXQoMSk7Ci0tICAgICAgIyBlbHNlCi0tICAgICAgZXhpdCgwKTsKLS0gICAgICAjIGVuZGlmCi0tICAgICAgI2Vsc2UKLS0gICAgICBleGl0KDApOwotLSAgICAgICNlbmRpZgotLSAgICBdXSldLFsKLS0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLS0gICAgXSxbCi0tICAgIEFDX01TR19SRVNVTFQoW25vXSkKLS0gICAgQUNfTVNHX1dBUk4oW2Rpc2FibGluZyBjcGx1c3BsdXNdKQotLSAgICBhY193aXRoX2NwbHVzcGx1cz1ubwotLSAgICBdKQotLSAgQUNfTEFOR19QT1AoQykKLS1maQotLQotIEFNX0NPTkRJVElPTkFMKFtXSVRIX0NQTFVTUExVU10sW3Rlc3QgIiRhY193aXRoX2NwbHVzcGx1cyIgPSB5ZXNdKQotIAotIGlmIHRlc3QgIiRhY193aXRoX2NwbHVzcGx1cyIgPSB5ZXMgOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2ZpeC1mb3ItZ2NjLTQuNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvZml4LWZvci1nY2MtNC43LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTQ0ZTM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvZml4LWZvci1nY2MtNC43LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi1nY2MtNC43IHNlZW1zIHRvIGJlIHN0cmljdGVyIGFib3V0IHNvbWUgdGhpbmdzLCBzbyBmb2xsb3cKLXRoZSBzdWdnZXN0aW9uIGZyb20gdGhlIGVycm9yL25vdGUgaW5mb3JtYXRpb24uCi0KLSAgICAuLi8uLi94ODZfNjQtbGludXgtbGlidG9vbCAtLXRhZz1DWFggICAtLW1vZGU9Y29tcGlsZSBnKysgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uLy4uIAotICAgIHg4Nl82NC1saW51eC1saWJ0b29sOiBjb21waWxlOiAgZysrIC1ESEFWRV9DT05GSUdfSCAtSS4gLUkuLi8uLiAtSS4uLy4uL2luY2x1ZGUgLWlzeXN0Ci0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLy4uL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvSGFzaHRhYmxlLmg6NDI6MCwKLSAgICAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9Qcm9wZXJ0aWVzLmg6MzYsCi0gICAgICAgICAgICAgICAgICAgICBmcm9tIFByb3BlcnRpZXMuY3h4OjI1OgotICAgIC4uLy4uL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaDogSW4gaW5zdGFudGlhdGlvbiBvZiAnYm9vbCBiZWVjcnlwdDo6dXRpCi0gICAgUHJvcGVydGllcy5jeHg6MjI4OjE6ICAgcmVxdWlyZWQgZnJvbSBoZXJlCi0gICAgLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oOjU5OjI3OiBlcnJvcjogJ2NvbnRhaW5zQWxsJyB3YXMgbm90IGRlY2wKLSAgICAuLi8uLi9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0Lmg6NTk6Mjc6IG5vdGU6IGRlY2xhcmF0aW9ucyBpbiBkZXBlbmRlbnQgYgotICAgIC4uLy4uL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaDo1OToyNzogbm90ZTogdXNlICd0aGlzLT5jb250YWluc0FsbCcgaW5zCi0gICAgLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oOiBJbiBpbnN0YW50aWF0aW9uIG9mICdib29sIGJlZWNyeXB0Ojp1dGkKLSAgICBQcm9wZXJ0aWVzLmN4eDoyMjg6MTogICByZXF1aXJlZCBmcm9tIGhlcmUKLSAgICAuLi8uLi9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0Lmg6NTk6Mjc6IGVycm9yOiAnY29udGFpbnNBbGwnIHdhcyBub3QgZGVjbAotICAgIC4uLy4uL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaDo1OToyNzogbm90ZTogZGVjbGFyYXRpb25zIGluIGRlcGVuZGVudCBiCi0gICAgLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oOjU5OjI3OiBub3RlOiB1c2UgJ3RoaXMtPmNvbnRhaW5zQWxsJyBpbnMKLSAgICAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotCi1JbmRleDogYmVlY3J5cHQtNC4yLjEvaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmVlY3J5cHQtNC4yLjEub3JpZy9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0LmgKLSsrKyBiZWVjcnlwdC00LjIuMS9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0LmgKLUBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBiZWVjcnlwdCB7Ci0gCQkJCQlpZiAoYy0+c2l6ZSgpICE9IHNpemUoKSkKLSAJCQkJCQlyZXR1cm4gZmFsc2U7Ci0gCi0tCQkJCQlyZXR1cm4gY29udGFpbnNBbGwoKmMpOwotKwkJCQkJcmV0dXJuIHRoaXMtPmNvbnRhaW5zQWxsKCpjKTsKLSAJCQkJfQotIAkJCQlyZXR1cm4gZmFsc2U7Ci0gCQkJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9maXgtc2VjdXJpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2ZpeC1zZWN1cml0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiMGMwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2ZpeC1zZWN1cml0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZpeCB2aXNpYmlsaXR5IG9mIHZhcmlvdXMgQysrIGZ1bmN0aW9ucywgaW5zcGlyZWQgYnkgYSBzaW1pbGFyIHBhdGNoIGluIHRoZSBGaW5rCi1wcm9qZWN0OiAKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9maW5rLWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0L21zZzc1NzQyLmh0bWwKLQotSkwgMDUvMDcvMTAgCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogYmVlY3J5cHQtNC4yLjEvaW5jbHVkZS9iZWVjcnlwdC9jKysvYmVleW9uZC9CZWVDZXJ0aWZpY2F0ZS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmVlY3J5cHQtNC4yLjEub3JpZy9pbmNsdWRlL2JlZWNyeXB0L2MrKy9iZWV5b25kL0JlZUNlcnRpZmljYXRlLmgJMjAxMC0xMS0yNiAxNzoyMjo1Ny4wMDAwMDAwMDAgKzA4MDAKLSsrKyBiZWVjcnlwdC00LjIuMS9pbmNsdWRlL2JlZWNyeXB0L2MrKy9iZWV5b25kL0JlZUNlcnRpZmljYXRlLmgJMjAxMC0xMS0yNiAxNzoyMzowMS4wMDAwMDAwMDAgKzA4MDAKLUBAIC0xNDcsMTMgKzE0NywxMyBAQAotIAkJCW11dGFibGUgYnl0ZWFycmF5KiBlbmM7Ci0gCi0gCQkJQmVlQ2VydGlmaWNhdGUoKTsKLS0JCQlCZWVDZXJ0aWZpY2F0ZShJbnB1dFN0cmVhbSYgaW4pIHRocm93IChJT0V4Y2VwdGlvbik7Ci0gCi0gCQkJdm9pZCBlbmNvZGVUQlMoRGF0YU91dHB1dFN0cmVhbSYgb3V0KSBjb25zdCB0aHJvdyAoSU9FeGNlcHRpb24pOwotIAotIAkJCWJ5dGVhcnJheSogZW5jb2RlVEJTKCkgY29uc3QgdGhyb3cgKENlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24pOwotIAotIAkJcHVibGljOgotKwkJCUJlZUNlcnRpZmljYXRlKElucHV0U3RyZWFtJiBpbikgdGhyb3cgKElPRXhjZXB0aW9uKTsKLSAJCQlCZWVDZXJ0aWZpY2F0ZShjb25zdCBCZWVDZXJ0aWZpY2F0ZSYpIHRocm93IChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbik7Ci0gCQkJdmlydHVhbCB+QmVlQ2VydGlmaWNhdGUoKTsKLSAKLUluZGV4OiBiZWVjcnlwdC00LjIuMS9pbmNsdWRlL2JlZWNyeXB0L2MrKy9zZWN1cml0eS9TZWN1cml0eS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmVlY3J5cHQtNC4yLjEub3JpZy9pbmNsdWRlL2JlZWNyeXB0L2MrKy9zZWN1cml0eS9TZWN1cml0eS5oCTIwMTAtMTEtMjYgMTc6MjA6NTUuMDAwMDAwMDAwICswODAwCi0rKysgYmVlY3J5cHQtNC4yLjEvaW5jbHVkZS9iZWVjcnlwdC9jKysvc2VjdXJpdHkvU2VjdXJpdHkuaAkyMDEwLTExLTI2IDE3OjIxOjM2LjAwMDAwMDAwMCArMDgwMAotQEAgLTYxLDcgKzYxLDYgQEAKLSAJCQlmcmllbmQgY2xhc3MgU2VjdXJlUmFuZG9tOwotIAkJCWZyaWVuZCBjbGFzcyBTaWduYXR1cmU7Ci0gCi0tCQlwcml2YXRlOgotIAkJCXN0cnVjdCBzcGkKLSAJCQl7Ci0gCQkJCU9iamVjdCogY3NwaTsKLUBAIC03Niw2ICs3NSw3IEBACi0gCQkJc3RhdGljIHNwaSogZ2V0U3BpKGNvbnN0IFN0cmluZyYgYWxnbywgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBQcm92aWRlciYpIHRocm93IChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24pOwotIAkJCXN0YXRpYyBzcGkqIGdldEZpcnN0U3BpKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gCi0rCQlwcml2YXRlOgotIAkJCXN0YXRpYyBjb25zdCBTdHJpbmcmIGdldEtleVN0b3JlRGVmYXVsdCgpOwotIAotIAkJCXN0YXRpYyBib29sIF9pbml0OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVlMjk0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyEvYmluL3NoCi0KLWNkIHRlc3RzCi1mb3IgaSBpbiBgbHNgOyBkbyAuLyRpOyBpZiBbICQ/IC1lcSAwIF07IHRoZW4gZWNobyAiUEFTUzogJGkiOyBcCi0gICAgZWxzZSBlY2hvICJGQUlMOiAkaSI7IGZpOyBkb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0XzQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdF80LjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU2MjZmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0XzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyBCZWVjcnlwdCBPRSBidWlsZCBmaWxlCi0jIENvcHlyaWdodCAoQykgMjAwNC0yMDA1LCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCi0KLVNVTU1BUlkgPSAiQSBnZW5lcmFsLXB1cnBvc2UgY3J5cHRvZ3JhcGh5IGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2JlZWNyeXB0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9iZWVjcnlwdC9iZWVjcnlwdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1pY3UtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXNlY3VyaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mb3ItZ2NjLTQuNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYmVlY3J5cHQtZW5hYmxlLXB0ZXN0LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLW9wdGlvbi1kZXYtZHNwLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NDQxYzAxNDE3MDgyM2YyZGZmOTdlMzNkZjU1YWYxZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyODZmMWY1NjA4MGQxYTZiMWQwMjQwMDNhNWZhMjE1OGY0ZmY4MmNhZTBjNjgyOWQzYzQ3NmE0YjU4OThjNTVkIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05ODk0MzcwYWZkNWRmZTdkMDJiOGQxNDMxOWU3MjlhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZGNmM2M4MjU2NTllODI1Mzk2NDVkYTQxYTc5MDg1ODkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9iZWVjcnlwdC9iZWVjcnlwdC5oO2VuZGxpbmU9MjA7bWQ1PTQ3YTkzZWVmNTM5YWFjMjM3ZWVmODYyOTdhNGQ3MWMxIgotCi1QUiA9ICJyMyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0Ci1hY3BhdGhzPSIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBiZWVjcnlwdC9nbnUuaAotfQotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXB5dGhvbiAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIC0tZGlzYWJsZS1vcGVubXAgLS13aXRoLWphdmE9bm8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2NwbHVzcGx1c10gPSAiLS13aXRoLWNwbHVzcGx1cywtLXdpdGhvdXQtY3BsdXNwbHVzLGljdSIKLQotRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfSAke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS8ke0JQTn0vKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59Lyouc28gJHtsaWJkaXJ9LyR7QlBOfS8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyouYSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotCWNwIC1yICR7Qn0vdGVzdHMvLmxpYnMvdGVzdCogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42Ni4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYzg2YTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGJvb3N0LSR7UFZ9LmluYwotCi1TVU1NQVJZID0gIlBvcnRhYmxlIEJvb3N0LkphbSBidWlsZCB0b29sIGZvciBib29zdCIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLWluaGVyaXQgbmF0aXZlCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9iamFtLW5hdGl2ZS1idWlsZC1iamFtLmRlYnVnLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2giCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgLi9ib290c3RyYXAuc2ggLS13aXRoLXRvb2xzZXQ9Z2NjCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICMgaW5zdGFsbCB1bnN0cmlwcGVkIHZlcnNpb24gZm9yIGJqYW0KLSAgICBpbnN0YWxsIC1jIC1tIDc1NSBiamFtLmRlYnVnICR7RH0ke2JpbmRpcn0vYmphbQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGY5NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY4LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJQb3J0YWJsZSBCb29zdC5KYW0gYnVpbGQgdG9vbCBmb3IgYm9vc3QiCitTRUNUSU9OID0gImRldmVsIgorCitpbmhlcml0IG5hdGl2ZQorCitTUkNfVVJJICs9ICJmaWxlOi8vYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaCBcCisiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgLi9ib290c3RyYXAuc2ggLS13aXRoLXRvb2xzZXQ9Z2NjCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICMgaW5zdGFsbCB1bnN0cmlwcGVkIHZlcnNpb24gZm9yIGJqYW0KKyAgICBpbnN0YWxsIC1jIC1tIDc1NSBiamFtLmRlYnVnICR7RH0ke2JpbmRpcn0vYmphbQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTJiODYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImIyZGZiZDZjNzE3YmU0YTdiYjJkODgwMThlYWNjZjc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MjE4MTgyNTNlNmEwOTg5NTgzMTkyZjk2NzgyYzRhOThlYjYyMDQ5NjUzMTZkZjlmNWFkNzU4MTkyMjVjYTkiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgotCi1TID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42OC4wLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42OC4wLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzY3YTgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY4LjAuaW5jCkBAIC0wLDAgKzEsMjEgQEAKKyMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQorIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAorIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCisjIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKKyMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKK0xJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitCT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgorQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgorQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjdmYmQxODkwZjU3MTA1MWYyYTIwOTY4MWQ1N2Q0ODZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmNjEzMGJjM2NmNjVmNTZhNjE4ODg4Y2U5ZDVlYTcwNGZhMTBiNDYyYmUxMjZhZDA1M2U4MGU1NTNkNmQ4YjciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgorCitTID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKaW5kZXggMGZmNWI3YS4uYzRmYWVhMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKQEAgLTksNiArOSw3IEBACiAJYXRvbWljIFwKIAljaHJvbm8gXAogCWNvbnRhaW5lciBcCisJY29udHJhY3QgXAogCWRhdGVfdGltZSBcCiAJZXhjZXB0aW9uIFwKIAlmaWxlc3lzdGVtIFwKQEAgLTEzNCw5ICsxMzUsOCBAQAogCQknLS1sYXlvdXQ9c3lzdGVtJyBcCiAJCSIKIAotIyB1c2UgUEFSQUxMRUxfTUFLRSB0byBzcGVlZCB1cCB0aGUgYnVpbGQsIGJ1dCBsaW1pdCBpdCBieSAtaiA2NCwgZ3JlYXRlciBwYXJhbGxlbGlzbSBjYXVzZXMgYmphbSB0byBzZWdmYXVsdCBvciB0byBpZ25vcmUgLWoKLSMgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0Lzc2MzQKLUJPT1NUX1BBUkFMTEVMX01BS0UgPSAiJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLWolZCcsIGxpbWl0PTY0KX0iCisjIHVzZSBQQVJBTExFTF9NQUtFIHRvIHNwZWVkIHVwIHRoZSBidWlsZAorQk9PU1RfUEFSQUxMRUxfTUFLRSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJyl9IgogQkpBTV9PUFRTICAgID0gJyR7Qk9PU1RfUEFSQUxMRUxfTUFLRX0gLWQrMiAtcSBcCiAJCSR7QkpBTV9UT09MU30gXAogCQktc0JPT1NUX0JVSUxEX1VTRVJfQ09ORklHPSR7V09SS0RJUn0vdXNlci1jb25maWcuamFtIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUy1zZXQtLmZpbGUtc2VjdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUy1zZXQtLmZpbGUtc2VjdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmFjNDllCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLW1ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TLXNldC0uZmlsZS1zZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gYzk5Zjc5ODQwN2U0NGM4NmU5ZjY0ZjViMWFkZjNiNGQwNTQ5ZWVmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE1IEp1biAyMDE4IDE2OjIxOjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TOiBzZXQgLmZpbGUgc2VjdGlvbgorCitTZXQgLmZpbGUgc2VjdGlvbiBleHBsaWNpdGx5IGZvciAuUyBmaWxlcyB0byBhdm9pZAordGhlIGxpbmtlciBpbnRyb2R1Y2VzIHRoZSBob3N0IHBhdGggaW4gc3ltYm9scyBmb3IKK29iamVjdCBmaWxlcyB3aG9zZSBzb3VyY2UgZmlsZSBpcyAuUworT3RoZXJ3aXNlLCB0aGVyZSBpcyBhIGhvc3QgcGF0aCBpbiB0aGUgc3ltYm9scyBhcyBiZWxvdzoKKyQgcmVhZGVsZiAtLXdpZGUgLS1zeW1ib2xzIC9teS1idWlsZC9ib29zdC8xLjY3LjAtcjAvYm9vc3RfMV82N18wL3g4Nl82NC1wb2t5LWxpbnV4L2Jvb3N0L2Jpbi52Mi9saWJzL2NvbnRleHQvYnVpbGQvYWNhMDkzNDlmZGI4NGQxMzEzMjE0MjVmNmMzYTM4ZWQvbGliYm9vc3RfY29udGV4dC5zby4xLjY3LjAKKworNDI6IDAwMDAwMDAwMDAwMDAwMDAgMCBGSUxFIExPQ0FMIERFRkFVTFQgQUJTIC9teS1idWlsZC9ib29zdC8xLjY3LjAtcjAvYm9vc3RfMV82N18wL3g4Nl82NC1wb2t5LWxpbnV4L2Jvb3N0L2Jpbi52Mi9saWJzL2NvbnRleHQvYnVpbGQvYWNhMDkzNDlmZGI4NGQxMzEzMjE0MjVmNmMzYTM4ZWQvYXNtL21ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5vCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGlicy9jb250ZXh0L3NyYy9hc20vbWFrZV9pMzg2X3N5c3ZfZWxmX2dhcy5TICAgfCAxICsKKyBsaWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUyB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX2kzODZfc3lzdl9lbGZfZ2FzLlMgYi9saWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX2kzODZfc3lzdl9lbGZfZ2FzLlMKK2luZGV4IGRlNzdlODguLmI3NmRlMjYgMTAwNjQ0CistLS0gYS9saWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX2kzODZfc3lzdl9lbGZfZ2FzLlMKKysrKyBiL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfaTM4Nl9zeXN2X2VsZl9nYXMuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorKy5maWxlICJtYWtlX2kzODZfc3lzdl9lbGZfZ2FzLlMiCisgLnRleHQKKyAuZ2xvYmwgbWFrZV9mY29udGV4dAorIC5hbGlnbiAyCitkaWZmIC0tZ2l0IGEvbGlicy9jb250ZXh0L3NyYy9hc20vbWFrZV94ODZfNjRfc3lzdl9lbGZfZ2FzLlMgYi9saWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUworaW5kZXggMjVhMGMwMC4uMGVmMzc1NiAxMDA2NDQKKy0tLSBhL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TCisrKysgYi9saWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorKy5maWxlICJtYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUyIKKyAudGV4dAorIC5nbG9ibCBtYWtlX2Zjb250ZXh0CisgLnR5cGUgbWFrZV9mY29udGV4dCxAZnVuY3Rpb24KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmYzY2JiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gZTRkM2E3NDcwYjMwNzY5MzY2MGQwNDEyNzMyZTcyNjZkMTczOGQ4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1EYXRlOiBUdWUsIDEzIERlYyAyMDE2IDEwOjI5OjE3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNi82XSBEb24ndCBzZXQgdXAgLW0zMi8tbTY0LCB3ZSBkbyB0aGF0IG91cnNlbHZlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0KLS0tLQotIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDM5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggZTRmYzZjMzIuLjM3OTE0ZmQwIDEwMDY0NAotLS0tIGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KLSsrKyBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1AQCAtMzM3LDQ1ICszMzcsNiBAQCBydWxlIHNldC1hZGRyZXNzLW1vZGVsLW9wdGlvbnMgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotICAgICB7Ci0gICAgICAgICBsb2NhbCBvcHRpb24gOwotICAgICAgICAgbG9jYWwgdGFyZ2V0LW9zID0gWyBmZWF0dXJlLmdldC12YWx1ZXMgdGFyZ2V0LW9zIDogJChwcm9wZXJ0aWVzKSBdIDsKLS0gICAgICAgIGlmICQodGFyZ2V0LW9zKSA9IGFpeAotLSAgICAgICAgewotLSAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tYWl4MzIgOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWFpeDY0IDsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBlbHNlIGlmICQodGFyZ2V0LW9zKSA9IGhwdXgKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWlscDMyIDsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgb3B0aW9uID0gLW1scDY0IDsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBlbHNlCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgbG9jYWwgYXJjaCA9IFsgZmVhdHVyZS5nZXQtdmFsdWVzIGFyY2hpdGVjdHVyZSA6ICQocHJvcGVydGllcykgXSA7Ci0tICAgICAgICAgICAgaWYgJChhcmNoKSA9IHBvd2VyIHx8ICQoYXJjaCkgPSBzcGFyYyB8fCAkKGFyY2gpID0geDg2Ci0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tMzIgOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgIGVsc2UgaWYgJChtb2RlbCkgPSA2NAotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAtbTY0IDsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAjIEZvciBkYXJ3aW4sIHRoZSBtb2RlbCBjYW4gYmUgMzJfNjQuIGRhcndpbi5qYW0gd2lsbCBoYW5kbGUgdGhhdAotLSAgICAgICAgICAgICMgb24gaXRzIG93bi4KLS0gICAgICAgIH0KLSAgICAgICAgIE9QVElPTlMgb24gJCh0YXJnZXRzKSArPSAkKG9wdGlvbikgOwotICAgICB9Ci0gfQotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNiODJhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi1yZXF1aXJlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKLSAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCi0gICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzk1OGE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY4LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKK3JlcXVpcmUgYm9vc3QuaW5jCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUy1zZXQtLmZpbGUtc2VjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1GaXgtYS1zdHJhbmdlLWFzc2VydC10eXBvLWhvdy13YXMtdGhpcy1yZWxlYXNlZC13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NTEzM2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDU2ODU1MjczNjQxOTg1OTdmMjVmYzFjNjIzNmNiNjRjYmMzZGU0NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNCBPY3QgMjAxNyAxODoxNjowOCArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggYSBzdHJhbmdlIGFzc2VydCB0eXBvOyBob3cgd2FzIHRoaXMgcmVsZWFzZWQgd2l0aG91dAotIG5vdGljaW5nPwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYwotaW5kZXggODAyZjI2Mi4uMTUyYTdlNiAxMDA2NDQKLS0tLSBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYwotKysrIGIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jCi1AQCAtMTA5Miw3ICsxMDkyLDcgQEAgc3RhdGljIHZvaWQgZGVidWdfc3RhcnRfY2hpbGQoIGludCBhcmdjLCBjb25zdCBjaGFyICogKiBhcmd2ICkKLSAgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaSA9IHsgTlVMTCwgTlVMTCwgMCwgMCB9OwotICAgICBTVEFSVFVQSU5GTyBzaSA9IHsgc2l6ZW9mKCBTVEFSVFVQSU5GTyApLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCB9OwotLSAgICBhc3NlcnQoIERFQlVHX1NUQVRFID09IERFQlVHX05PX0NISUxEICk7Ci0rICAgIGFzc2VydCggZGVidWdfc3RhdGUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKLSAgICAgaWYgKCAhIENyZWF0ZVBpcGUoICZwaXBlMVsgMCBdLCAmcGlwZTFbIDEgXSwgJnNhLCAwICkgKQotICAgICB7Ci0gICAgICAgICBwcmludGYoImludGVybmFsIGVycm9yXG4iKTsKLUBAIC0xMTc2LDcgKzExNzYsNyBAQCBzdGF0aWMgdm9pZCBkZWJ1Z19zdGFydF9jaGlsZCggaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiAqIGFyZ3YgKQotICAgICBpbnQgcmVhZF9mZDsKLSAgICAgaW50IHBpZDsKLSAgICAgaW50IGk7Ci0tICAgIGFzc2VydCggREVCVUdfU1RBVEUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKLSsgICAgYXNzZXJ0KCBkZWJ1Z19zdGF0ZSA9PSBERUJVR19OT19DSElMRCApOwotICAgICBwaXBlKHBpcGUxKTsKLSAgICAgcGlwZShwaXBlMik7Ci0gICAgIHBpZCA9IGZvcmsoKTsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUwMjk0OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNzA3MTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1vbiBDQSBjZXJ0aWZpY2F0ZXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgUEVNIGZpbGVzIG9mIENBIGNlcnRpZmljYXRlcyB0byBhbGxvdyBcCi1TU0wtYmFzZWQgYXBwbGljYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgYXV0aGVudGljaXR5IG9mIFNTTCBjb25uZWN0aW9ucy4gXAotVGhpcyBkZXJpdmVkIGZyb20gRGViaWFuJ3MgQ0EgQ2VydGlmaWNhdGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9jYS1jZXJ0aWZpY2F0ZXMiCi1TRUNUSU9OID0gIm1pc2MiCi1MSUNFTlNFID0gIkdQTC0yLjArICYgTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWU3MzU4Yjk1NDFjY2YzMDI5ZTk3MDVlZDhkZTU3OTY4IgotCi0jIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gcnVuIHRoZSBwb3N0aW5zdCBhdCBpbWFnZSBjcmVhdGlvbiB0aW1lCi1ERVBFTkRTID0gIiIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAib3BlbnNzbC1uYXRpdmUiCi0jIE5lZWQgY19yZWhhc2ggZnJvbSBvcGVuc3NsIGFuZCBydW4tcGFydHMgZnJvbSBkZWJpYW51dGlscwotUEFDS0FHRV9XUklURV9ERVBTICs9ICJvcGVuc3NsLW5hdGl2ZSBkZWJpYW51dGlscy1uYXRpdmUiCi0KLVNSQ1JFViA9ICIzNGI4ZTE5ZTU0MWI4YWY0MDc2NjE2YjJlMTcwYzdhNzBjZGFkZWQwIgotCi1TUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2NhLWNlcnRpZmljYXRlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNZU1JPT1RfRElSU19jbGFzcy1uYXRpdmUgKz0gIiR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgICdDRVJUU0RJUj0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcycgXAotICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgY2xlYW4KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMgXAotICAgICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzIFwKLSAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy91cGRhdGUuZAotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDA2NDQgc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzLjggJHtEfSR7bWFuZGlyfS9tYW44LwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgIHsKLSAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICMgd2lsbCBiZSBpZ25vcmVkIgotICAgICAgICBlY2hvICIjIExpbmVzIHN0YXJ0aW5nIHdpdGggISB3aWxsIHJlbW92ZSBjZXJ0aWZpY2F0ZSBvbiBuZXh0IHVwZGF0ZSIKLSAgICAgICAgZWNobyAiIyIKLSAgICAgICAgZmluZCAke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMgLXR5cGUgZiAtbmFtZSAnKi5jcnQnIHwgXAotICAgICAgICAgICAgc2VkICdzLF4ke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvLCwnCi0gICAgfSA+JHtEfSR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzLmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sJyBcCi0gICAgICAgICAgIC1lICdzLC91c3Ivc2hhcmUvLCR7ZGF0YWRpcn0vLCcgXAotICAgICAgICAgICAtZSAncywvdXNyL2xvY2FsLCR7cHJlZml4fS9sb2NhbCwnIFwKLSAgICAgICAgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcyBcCi0gICAgICAgICR7RH0ke21hbmRpcn0vbWFuOC91cGRhdGUtY2EtY2VydGlmaWNhdGVzLjgKLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59X2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgU1lTUk9PVD0iJEQiICREJHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZiIKLQotIyBSYXRoZXIgdGhhbiBtYWtlIGEgcG9zdGluc3Qgc2NyaXB0IHRoYXQgd29ya3MgZm9yIGJvdGggdGFyZ2V0IGFuZCBuYXRpdmVzZGssCi0jIHdlIGp1c3QgcnVuIHVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZSBmcm9tIGRvX2luc3RhbGwoKSBmb3IgbmF0aXZlc2RrLgotQ09ORkZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQiCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotICAgIFNZU1JPT1Q9IiR7RH0ke1NES1BBVEhOQVRJVkV9IiAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgU1lTUk9PVD0iJHtEfSR7YmFzZV9wcmVmaXh9IiAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxODA0MDkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxODA0MDkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NzA4MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE4MDQwOS5iYgpAQCAtMCwwICsxLDg3IEBACitTVU1NQVJZID0gIkNvbW1vbiBDQSBjZXJ0aWZpY2F0ZXMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaW5jbHVkZXMgUEVNIGZpbGVzIG9mIENBIGNlcnRpZmljYXRlcyB0byBhbGxvdyBcCitTU0wtYmFzZWQgYXBwbGljYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgYXV0aGVudGljaXR5IG9mIFNTTCBjb25uZWN0aW9ucy4gXAorVGhpcyBkZXJpdmVkIGZyb20gRGViaWFuJ3MgQ0EgQ2VydGlmaWNhdGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9jYS1jZXJ0aWZpY2F0ZXMiCitTRUNUSU9OID0gIm1pc2MiCitMSUNFTlNFID0gIkdQTC0yLjArICYgTVBMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWFlYjQyMDQyOWIxNjU5NTA3ZTBhNWExYjEyM2U4MzA4IgorCisjIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB3ZSBjYW4gcnVuIHRoZSBwb3N0aW5zdCBhdCBpbWFnZSBjcmVhdGlvbiB0aW1lCitERVBFTkRTID0gIiIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAib3BlbnNzbC1uYXRpdmUiCisjIE5lZWQgY19yZWhhc2ggZnJvbSBvcGVuc3NsIGFuZCBydW4tcGFydHMgZnJvbSBkZWJpYW51dGlscworUEFDS0FHRV9XUklURV9ERVBTICs9ICJvcGVuc3NsLW5hdGl2ZSBkZWJpYW51dGlscy1uYXRpdmUiCisKK1NSQ1JFViA9ICJkYmJkMTFlNTZhZjkzYmI3OWYyMWQwZWU2MDU5YTkwMWY4M2Y3MGE1IgorCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2NhLWNlcnRpZmljYXRlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhbGxhcmNoCisKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgJ0NFUlRTRElSPSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzJyBcCisgICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAorIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgb2VfcnVubWFrZSBjbGVhbgorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyBcCisgICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMgXAorICAgICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzL3VwZGF0ZS5kCisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMuOCAke0R9JHttYW5kaXJ9L21hbjgvCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgeworICAgICAgICBlY2hvICIjIExpbmVzIHN0YXJ0aW5nIHdpdGggIyB3aWxsIGJlIGlnbm9yZWQiCisgICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAhIHdpbGwgcmVtb3ZlIGNlcnRpZmljYXRlIG9uIG5leHQgdXBkYXRlIgorICAgICAgICBlY2hvICIjIgorICAgICAgICBmaW5kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyAtdHlwZSBmIC1uYW1lICcqLmNydCcgfCBcCisgICAgICAgICAgICBzZWQgJ3MsXiR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcy8sLCcKKyAgICB9ID4ke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgIHNlZCAtaSAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LywnIFwKKyAgICAgICAgICAgLWUgJ3MsL3Vzci9zaGFyZS8sJHtkYXRhZGlyfS8sJyBcCisgICAgICAgICAgIC1lICdzLC91c3IvbG9jYWwsJHtwcmVmaXh9L2xvY2FsLCcgXAorICAgICAgICAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzIFwKKyAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW44L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMuOAorfQorCitwa2dfcG9zdGluc3RfJHtQTn1fY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBTWVNST09UPSIkRCIgJEQke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK30KKworQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mIgorCisjIFJhdGhlciB0aGFuIG1ha2UgYSBwb3N0aW5zdCBzY3JpcHQgdGhhdCB3b3JrcyBmb3IgYm90aCB0YXJnZXQgYW5kIG5hdGl2ZXNkaywKKyMgd2UganVzdCBydW4gdXBkYXRlLWNhLWNlcnRpZmljYXRlIGZyb20gZG9faW5zdGFsbCgpIGZvciBuYXRpdmVzZGsuCitDT05GRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCIKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisgICAgU1lTUk9PVD0iJHtEfSR7U0RLUEFUSE5BVElWRX0iICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBTWVNST09UPSIke0R9JHtiYXNlX3ByZWZpeH0iICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK30KKworUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjEuMC5iYgppbmRleCAyMDc4Mzc5Li41NjMyN2E2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYxLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MS4wLmJiCkBAIC0xOSwxMiArMTksMTQgQEAKIENWRV9QUk9EVUNUID0gImN1cmwgbGliY3VybCIKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCiAKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBnbnV0bHMgbGliaWRuIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHZlcmJvc2UgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHZlcmJvc2UgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHZlcmJvc2UgemxpYiIKIAogIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQogUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbYnJvdGxpXSA9ICItLXdpdGgtYnJvdGxpLC0td2l0aG91dC1icm90bGksYnJvdGxpIgorUEFDS0FHRUNPTkZJR1tidWlsdGlubWFudWFsXSA9ICItLWVuYWJsZS1tYW51YWwsLS1kaXNhYmxlLW1hbnVhbCIKIFBBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCiBQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKIFBBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCkBAIC0zNSw2ICszNyw3IEBACiBQQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgogUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4yLC0td2l0aG91dC1saWJpZG4yLGxpYmlkbjIiCiBQQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCitQQUNLQUdFQ09ORklHW21iZWR0bHNdID0gIi0td2l0aC1tYmVkdGxzPSR7U1RBR0lOR19ESVJfVEFSR0VUfSwtLXdpdGhvdXQtbWJlZHRscyxtYmVkdGxzIgogUEFDS0FHRUNPTkZJR1tuZ2h0dHAyXSA9ICItLXdpdGgtbmdodHRwMiwtLXdpdGhvdXQtbmdodHRwMixuZ2h0dHAyIgogUEFDS0FHRUNPTkZJR1twb3AzXSA9ICItLWVuYWJsZS1wb3AzLC0tZGlzYWJsZS1wb3AzLCIKIFBBQ0tBR0VDT05GSUdbcHJveHldID0gIi0tZW5hYmxlLXByb3h5LC0tZGlzYWJsZS1wcm94eSwiCkBAIC00Niw5ICs0OSwxMiBAQAogUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKIFBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCiBQQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCitQQUNLQUdFQ09ORklHW3ZlcmJvc2VdID0gIi0tZW5hYmxlLXZlcmJvc2UsLS1kaXNhYmxlLXZlcmJvc2UiCiBQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtbGliY3VybC1vcHRpb24gXAorICAgIC0tZGlzYWJsZS1udGxtLXdiIFwKICAgICAtLWVuYWJsZS1jcnlwdG8tYXV0aCBcCiAgICAgLS13aXRoLWNhLWJ1bmRsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKICAgICAtLXdpdGhvdXQtbGlibWV0YWxpbmsgXApAQCAtNzEsNCArNzcsNyBAQAogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCiAKK2luaGVyaXQgbXVsdGlsaWJfc2NyaXB0CitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vY3VybC1jb25maWciCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE4ZWFkYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1PcmlnaW5hbCBwYXRjaCBzdWJtaXR0ZWQgYnkgamJvd2xlckBuc2x1Mi1saW51eC5vcmcgb24gMjAwNS0xMS0xNzoKLQotZGI6IGZpeCB0aHVtYiB1Y2xpYmMgb3BlcmF0aW9uIGluIDQuMy4yOQotICAtIHVjbGliYyB0aHVtYiBidWlsZHMgd2VyZSB1c2luZyBsaWJwdGhyZWFkIHRvIGltcGxlbWVudCBtdXRleGVzLCB0aGUKLSAgLSB1Y2xpYmMgdmVyc2lvbiBzZWVtcyB0byBiZSBhIHN0dWIgKGF0IGxlYXN0IG9uIHRodW1iKS4gIFRoaXMgY29tbWl0Ci0gIC0gZml4ZXMgdGhlIEFSTS9nY2MtYXNzZW1ibHkgbXV0ZXggaW1wbGVtZW50YXRpb24gc28gdGhhdCBpdCBoYXMgdGh1bWIKLSAgLSBzdXBwb3J0IGFuZCB0aGUgcmVzdWx0YW50IGRiNCB3b3JrcyAodGVzdGVkIG9uIExFIFRodW1iIHVjbGliYykKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotQXV0aG9yOiBqYm93bGVyQG5zbHUyLWxpbnV4Lm9yZwotCi1JbmRleDogZGItNi4wLjMwL3NyYy9kYmluYy9tdXRleF9pbnQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRiLTYuMC4zMC5vcmlnL3NyYy9kYmluYy9tdXRleF9pbnQuaAotKysrIGRiLTYuMC4zMC9zcmMvZGJpbmMvbXV0ZXhfaW50LmgKLUBAIC00NzQsNiArNDc0LDI1IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB0c2xfdDsKLSAKLSAjaWZkZWYgTE9BRF9BQ1RVQUxfTVVURVhfQ09ERQotIC8qIGdjYy9hcm06IDAgaXMgY2xlYXIsIDEgaXMgc2V0LiAqLwotKyNpZiBkZWZpbmVkIF9fdGh1bWJfXwotKyNkZWZpbmUJTVVURVhfU0VUKHRzbCkgKHsJCQkJCQlcCi0rCWludCBfX3IsIF9fcDsJCQkJCQkJXAotKwlfX2FzbV9fIHZvbGF0aWxlKAkJCQkJCVwKLSsJCSIuYWxpZ24gMlxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkJImJ4ICAgICBwY1xuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkibm9wXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJCSIuYXJtXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkJInN3cGIgICAlMCwgJTIsIFslM11cblx0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkiZW9yICAgICUwLCAlMCwgIzFcblx0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJCSJvcnIgICAgJTEsIHBjLCAjMVxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkJImJ4ICAgICAlMVxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkiLmZvcmNlX3RodW1iIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJICAgIDogIj0mciIgKF9fciksICI9ciIgKF9fcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJICAgIDogInIiICgxKSwgInIiICh0c2wpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJX19yICYgMTsJCQkJCQkJXAotK30pCi0rI2Vsc2UKLSAjZGVmaW5lCU1VVEVYX1NFVCh0c2wpICh7CQkJCQkJXAotIAlpbnQgX19yOwkJCQkJCQlcCi0gCV9fYXNtX18gdm9sYXRpbGUoCQkJCQkJXAotQEAgLTQ4NCw2ICs1MDMsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHNsX3Q7Ci0gCSAgICApOwkJCQkJCQkJXAotIAlfX3IgJiAxOwkJCQkJCQlcCi0gfSkKLSsjZW5kaWYKLSAKLSAjZGVmaW5lCU1VVEVYX1VOU0VUKHRzbCkJKCoodm9sYXRpbGUgdHNsX3QgKikodHNsKSA9IDApCi0gI2RlZmluZQlNVVRFWF9JTklUKHRzbCkgICAgICAgICAoTVVURVhfVU5TRVQodHNsKSwgMCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKaW5kZXggMDkzZWU0NC4uYjdlZDJjNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKQEAgLTIxLDggKzIxLDcgQEAKIFBFID0gIjEiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgotU1JDX1VSSSArPSAiZmlsZTovL2FybS10aHVtYi1tdXRleF9kYjUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCitTUkNfVVJJICs9ICJmaWxlOi8vZml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF0b21pYy1SZW5hbWUtbG9jYWwtX19hdG9taWNfY29tcGFyZV9leGNoYW5nZS10by1hdm8ucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1leHBsaWNpdC10YWctb3B0aW9ucy10by1saWJ0b29sLWludm9jYS5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vc2VxdWVuY2UtdHlwZS5wYXRjaCBcCkBAIC00Nyw3ICs0Niw2IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tY3h4IgogRklMRVNfJHtQTn0tY3h4ID0gIiR7bGliZGlyfS8qY3h4KnNvIgogCi0KICMgVGhlIGRldiBwYWNrYWdlIGhhcyB0aGUgLnNvIGxpbmsgKGFzIGluIGRiMykgYW5kIHRoZSAuYSdzIC0KICMgaXQgaXMgdGhlcmVmb3JlIGluY29tcGF0aWJsZSAoY2Fubm90IGJlIGluc3RhbGxlZCBhdCB0aGUKICMgc2FtZSB0aW1lKSBhcyB0aGUgZGIzIHBhY2thZ2UKQEAgLTU5LDE4ICs1Nyw4IEBACiAjIEFsbCB0aGUgLS1kaXNhYmxlLSogb3B0aW9ucyByZXBsYWNlIC0tZW5hYmxlLXNtYWxsYnVpbGQsIHdoaWNoIGJyZWFrcyBhIGJ1bmNoIG9mIHN0dWZmIChlZy4gcG9zdGZpeCkKIERCNV9DT05GSUcgPz0gIi0tZW5hYmxlLW9fZGlyZWN0IC0tZGlzYWJsZS1jcnlwdG9ncmFwaHkgLS1kaXNhYmxlLXF1ZXVlIC0tZGlzYWJsZS1yZXBsaWNhdGlvbiAtLWRpc2FibGUtdmVyaWZ5IC0tZGlzYWJsZS1jb21wYXQxODUgLS1kaXNhYmxlLXNxbCIKIAotRVhUUkFfT0VDT05GID0gIiR7REI1X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCIKK0VYVFJBX09FQ09ORiA9ICIke0RCNV9DT05GSUd9IC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1jeHggLS13aXRoLXN5c3Jvb3QgU1RSSVA9dHJ1ZSIKIAotIyBPdmVycmlkZSB0aGUgTVVURVggc2V0dGluZyBoZXJlLCB0aGUgUE9TSVggbGlicmFyeSBpcwotIyB0aGUgZGVmYXVsdCAtICJQT1NJWC9wdGhyZWFkcy9saWJyYXJ5Ii4KLSMgRG9uJ3QgaWdub3JlIHRoZSBuaWNlIFNXUCBpbnN0cnVjdGlvbiBvbiB0aGUgQVJNOgotIyBUaGVzZSBlbmFibGUgdGhlIEFSTSBhc3NlbWJsZXIgbXV0ZXggY29kZSwgdGhpcyB3b24ndAotIyB3b3JrIHdpdGggdGh1bWIgY29tcGlsYXRpb24uLi4KLUFSTV9NVVRFWCA9ICItLXdpdGgtbXV0ZXg9QVJNL2djYy1hc3NlbWJseSIKLU1VVEVYID0gIiIKLU1VVEVYX2FybSA9ICIke0FSTV9NVVRFWH0iCi1NVVRFWF9hcm1lYiA9ICIke0FSTV9NVVRFWH0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7TVVURVh9IFNUUklQPXRydWUiCiBFWFRSQV9PRU1BS0UgKz0gIkxJQlRPT0w9Jy4vJHtIT1NUX1NZU30tbGlidG9vbCciCiAKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyICAtSSAke1N9L2Rpc3QvYWNsb2NhbCAtSSR7U30vZGlzdC9hY2xvY2FsX2phdmEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAwZTZmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxODAxMjlUMTY0NzI3Wi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKLSMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCi0jIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTZkY2Q0OTZiNGY3OWIzYzQ1MmMzYTc0YzJkM2Y4OWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzA2MWFiOTlhZWE2MWY4OTIwNDNiNzYyNGIwMjFhYjViMTkzZTljNmJiZmQ0NzRkYTBmYmNkZDUwNmJlMWViMiIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6dGVtcGZpbGUuMSB3aGljaC4xOndoaWNoLjE6ZycgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgotICAgICAgICAjIERlYmlhbiBwbGFjZXMgc29tZSB1dGlscyBpbnRvICR7YmFzZV9iaW5kaXJ9IGFzIGRvZXMgYnVzeWJveAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICBmb3IgYXBwIGluIHJ1bi1wYXJ0cyB0ZW1wZmlsZTsgZG8KLSAgICAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vJGFwcCAke0R9JHtiYXNlX2JpbmRpcn0vJGFwcAotICAgICAgICBkb25lCi0gICAgZmkKLX0KLQotIyBOb3RlIHRoYXQgd2UgcGFja2FnZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyBuYW1lLgotIwotUEFDS0FHRVMgPSsgIiR7UE59LXJ1bi1wYXJ0cyIKLUZJTEVTXyR7UE59LXJ1bi1wYXJ0cyA9ICIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMuZGViaWFudXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ydW4tcGFydHMiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1BTFRFUk5BVElWRV9QUklPUklUWT0iMzAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJhZGQtc2hlbGwgaW5zdGFsbGtlcm5lbCByZW1vdmUtc2hlbGwgc2F2ZWxvZyB0ZW1wZmlsZSB3aGljaCIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tcnVuLXBhcnRzID0gIjYwIgotQUxURVJOQVRJVkVfJHtQTn0tcnVuLXBhcnRzID0gInJ1bi1wYXJ0cyIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIndoaWNoLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2guMV0gPSAiJHttYW5kaXJ9L21hbjEvd2hpY2guMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZC1zaGVsbF09IiR7c2JpbmRpcn0vYWRkLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3RhbGxrZXJuZWxdPSIke3NiaW5kaXJ9L2luc3RhbGxrZXJuZWwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVtb3ZlLXNoZWxsXT0iJHtzYmluZGlyfS9yZW1vdmUtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVuLXBhcnRzXT0iJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NhdmVsb2ddPSIke2JpbmRpcn0vc2F2ZWxvZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZW1wZmlsZV09IiR7YmFzZV9iaW5kaXJ9L3RlbXBmaWxlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoXT0iJHtiaW5kaXJ9L3doaWNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzN2U4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC42LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgorCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTgwNjI2VDIwNTIzOFovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCisjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQorIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKKworU1JDX1VSSVttZDVzdW1dID0gImYwZjFmYTM5MzgzODE1ZmI3OTUwZGNlZTUyYmU0MzYxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiMDkwNDcxNDRkYWRmNmEzNWQwZjI4OTc3ZmJlZjgzYjBkZDYwY2EzMmU2Yzg1MTJjY2UyNDQ0YTY0MjNmNzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCisgICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKKyAgICAgICAgZG9uZQorICAgIGZpCit9CisKKyMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KKyMKK1BBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCitGSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKK0FMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTcxMjcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkNvbnZlcnQgdGV4dCBmaWxlIGxpbmUgZW5kaW5ncyBiZXR3ZWVuIENSTEYgYW5kIExGIgorREVTQ1JJUFRJT04gPSAiVGhlIERvczJ1bml4IHBhY2thZ2UgaW5jbHVkZXMgdXRpbGl0aWVzIGRvczJ1bml4IGFuZCBcCit1bml4MmRvcyB0byBjb252ZXJ0IHBsYWluIHRleHQgZmlsZXMgaW4gRE9TIG9yIE1hYyBmb3JtYXQgdG8gVW5peCBcCitmb3JtYXQgYW5kIHZpY2UgdmVyc2EuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dhdGVybGFuLmhvbWUueHM0YWxsLm5sL2RvczJ1bml4Lmh0bWwiCitTRUNUSU9OID0gInN1cHBvcnQiCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTFiNzhmY2E3ODRkYjI0ZjRhNDBlMzBiMzAwNzg3ZjNmIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL2RvczJ1bml4L2RvczJ1bml4IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiZG9zMnVuaXgtKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCisKKyMgUmVsZWFzZSA3LjQuMAorU1JDUkVWID0gIjExODI1MzNiZGUzYzFmZTY1YmUyZWFkNDY1ZTg3NjcxZmFhMmMwMjciCisKK1MgPSAiJHtXT1JLRElSfS9naXQvZG9zMnVuaXgiCisKK2luaGVyaXQgZ2V0dGV4dCBwZXJsbmF0aXZlCisKKyMgVGhlIGRvczJ1bml4IE5MUyByZWxpZXMgb24gcG80YS1uYXRpdmUsIHdoaWxlIHBvNGEgcmVjaXBlIGlzCisjIHByb3ZpZGVkIGJ5IG1ldGEtcGVybCBsYXllciwgc28gbWFrZSBpdCBvcHRpb25hbCBoZXJlLCB5b3UKKyMgbmVlZCBoYXZlIG1ldGEtcGVybCBpbiBiYmxheWVycy5jb25mIGJlZm9yZSBlbmFibGluZyBubHMgaW4KKyMgUEFDS0FHRUNPTkZJRy4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW25sc10gPSAiRU5BQkxFX05MUz0xLEVOQUJMRV9OTFM9LHBvNGEtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBMREZMQUdTX1VTRVI9JyR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICJFTkFCTEVfTkxTPSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9JHtiYXNlX3ByZWZpeH0iIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGkvbWVzb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaS9tZXNvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjNjNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGkvbWVzb24ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBmNWZlYjZjNTk5YWRiNTJmMjQ2NTZmODU4OTg2ODAzOWIwZDE0MjcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGVpa28gQmVja2VyIDxoZWlyZWNrYUBleGhlcmJvLm9yZz4KK0RhdGU6IEZyaSwgNyBTZXAgMjAxOCAyMDo1NzoxMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBCdWlsZCBnZW5lcmF0b3IgZXhlY3V0YWJsZXMgbmF0aXZlbHkKKworVGhleSBhcmUgcnVuIGR1cmluZyB0aGUgYnVpbGQgYW5kIG5vdCBpbnN0YWxsZWQgaW4gdGhlIGVuZC4gV2l0aG91dAordGhpcyBvbmUgZ2V0cyB0aGUgZm9sbG93aW5nIGVycm9yIGZyb20gbWVzb246ICJFUlJPUjogQ2FuIG5vdCB1c2UKK3RhcmdldCBnZW4tdW5pY29kZS12ZXJzaW9uIGFzIGEgZ2VuZXJhdG9yIGJlY2F1c2UgaXQgaXMgY3Jvc3MtYnVpbHQKK2FuZCBubyBleGUgd3JhcHBlciBpcyBkZWZpbmVkLiBZb3UgbWlnaHQgd2FudCB0byBzZXQgaXQgdG8gbmF0aXZlCitpbnN0ZWFkLiIKKworQ2xvc2VzICM4Ny4KKworLS0tCisgZ2VuLnRhYi9tZXNvbi5idWlsZCB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dlbi50YWIvbWVzb24uYnVpbGQgYi9nZW4udGFiL21lc29uLmJ1aWxkCitpbmRleCA2MDA2ZDk4Li44YzIxZTk4IDEwMDY0NAorLS0tIGEvZ2VuLnRhYi9tZXNvbi5idWlsZAorKysrIGIvZ2VuLnRhYi9tZXNvbi5idWlsZAorQEAgLTMzLDcgKzMzLDggQEAgZ2VuX3VuaWNvZGVfdmVyc2lvbiA9IGV4ZWN1dGFibGUoJ2dlbi11bmljb2RlLXZlcnNpb24nLAorICAgJ2dlbi11bmljb2RlLXZlcnNpb24uYycsCisgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBpbmNzLAorICAgY19hcmdzOiBuYXRpdmVfYXJncywKKy0gIGluc3RhbGw6IGZhbHNlKQorKyAgaW5zdGFsbDogZmFsc2UsCisrICBuYXRpdmU6IHRydWUpCisgCisgZnJpYmlkaV91bmljb2RlX3ZlcnNpb25faCA9IGN1c3RvbV90YXJnZXQoJ2ZyaWJpZGktdW5pY29kZS12ZXJzaW9uLmgnLAorICAgaW5wdXQ6IGZpbGVzKCd1bmlkYXRhL1JlYWRNZS50eHQnLCAndW5pZGF0YS9CaWRpTWlycm9yaW5nLnR4dCcpLAorQEAgLTY3LDcgKzY4LDggQEAgZm9yZWFjaCB0YWIgOiB0YWJzCisgICAgIGdlbl9wcm9nX3NyYywgJ3BhY2t0YWIuYycsCisgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY3MsCisgICAgIGNfYXJnczogbmF0aXZlX2FyZ3MsCistICAgIGluc3RhbGw6IGZhbHNlKQorKyAgICBpbnN0YWxsOiBmYWxzZSwKKysgICAgbmF0aXZlOiB0cnVlKQorIAorICAgdGFiX2luY19maWxlID0gY3VzdG9tX3RhcmdldChnZW5fcHJvZ19uYW1lLAorICAgICBpbnB1dDogZ2VuX3Byb2dfaW5wdXRzLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2IyZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjUuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJGcmVlIEltcGxlbWVudGF0aW9uIG9mIHRoZSBVbmljb2RlIEJpZGlyZWN0aW9uYWwgQWxnb3JpdGhtIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9tZXNvbi5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZjk3ZjY1MDM4NTQ1MzQwMzE2ZWMwZjRiZDUzZGYwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YTY0ZjJhNjg3ZjVjNGYyMDNhNDZmYTY1OWY0M2RkNDNkMWY4Yjg0NWRmOGQ3MjMxMDdlOGE3ZTYxNThlNGNlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCisKK2luaGVyaXQgbWVzb24gbGliX3BhY2thZ2UgcGtnY29uZmlnCisKK0NWRV9QUk9EVUNUID0gImdudV9mcmliaWRpIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKaW5kZXggYjk0NjFiZS4uMWU2N2RiZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9maWxlcy9wdGVzdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNGU0YjcwYTRhM2RjZjFmZGJlZTllNjhiZWQzYjYyZjQyYjE5N2EzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDE0NDg3MDhlMTYzYzhlYzFmOTgwNDY0ZTdkZDY3NDFkYjQyN2M4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEpvc2VwIFB1aWdkZW1vbnQgPGpvc2VwLnB1aWdkZW1vbnRAZW5lYS5jb20+CiBEYXRlOiBTdW4sIDQgTWF5IDIwMTQgMTY6MDI6MDcgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gQWRkIGluc3RhbGwtcHRlc3QgcnVsZXMuCkBAIC05LDE0ICs5LDE0IEBACiAKIC0tLQogIE1ha2VmaWxlLmFtICAgICAgIHwgIDUgKysrKysKLSB0ZXN0cy9NYWtlZmlsZS5hbSB8IDEyICsrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIHRlc3RzL01ha2VmaWxlLmFtIHwgMTEgKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDRjZGM3MzQuLjI0Yjk5ZjAgMTAwNjQ0CitpbmRleCBlY2MwM2RmLi45ZmJiZGE1IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDUsMyArNDUsOCBAQCBDaGFuZ2VMb2c6CitAQCAtNTUsMyArNTUsOCBAQCBDaGFuZ2VMb2c6CiAgICAgICAgICAgICAgICAgIGF3ayAtZiAkKHRvcF9zcmNkaXIpL2dpdDJjaGcuYXdrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgIC12IGFwcGVuZD0kKHRvcF9zcmNkaXIpLyQocHJldl9jaGFuZ2VfbG9nKSA+IENoYW5nZUxvZzsgXAogICAgICAgICAgZmkKQEAgLTI2LDE0ICsyNiwxMyBAQAogKwkJJChNQUtFKSAtQyAkJHN1YmRpciBERVNURElSPSQoREVTVERJUikvJCRzdWJkaXIgJEA7IFwKICsJZG9uZQogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDNkYmI1ODAuLjIyZmZjNDQgMTAwNjQ0CitpbmRleCBkYmUxN2RkLi4wNmY1MzdmIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTMwLDQgKzEzMCwxNCBAQCBkdGZldGNoX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCi0gZHRkZWxfTERBREQgPSAuLi9zcmMvbGliZ2RibS5sYSAuLi9jb21wYXQvbGliZ2RibV9jb21wYXQubGEKLSBkX2NyZWF0X2NlX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCitAQCAtMTY5LDMgKzE2OSwxNCBAQCBFWFRSQV9ESVNUICs9IFwKKyAgIGdkYm10b29sL2Jhc2UuZXhwXAorICAgY29uZmlnL2RlZmF1bHQuZXhwCiAgCi0tCiArYnVpbGR0ZXN0czogJChjaGVja19QUk9HUkFNUykgJChURVNUU1VJVEUpCiArCiAraW5zdGFsbC1wdGVzdDogJChjaGVja19QUk9HUkFNUykgJChURVNUU1VJVEUpCkBAIC00NSw2ICs0NCwzIEBACiArCQkJJChJTlNUQUxMX1BST0dSQU0pICQkZmlsZSAkKERFU1RESVIpIDsgXAogKwkJZmkgXAogKwlkb25lCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZTU2OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXkvdmFsdWUgZGF0YWJhc2UgbGlicmFyeSB3aXRoIGV4dGVuc2libGUgaGFzaGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGJtLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDFkYTFiOWZlNDJlNjQyY2JiMmMyNGQ1ZTBjNGQyNCIKLQotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RibS9nZGJtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMyZGRjYjM4OTdlZmEwZjU3NDg0YWYyYmQ0ZjRmODQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkY2VmZjAwZmZlMDE0NDk1YmVkM2FlZDcxYzc5MTBhYTg4YmYyOTM3OWY3OTVhYmMwZjQ2ZDRlZTVmOGJjNWYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAotCi0jIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgotCi0jIFN0b3AgcHJlc2VuY2Ugb2YgZGJtL25iZG0gb24gdGhlIGhvc3QgY29udGFtaW5hdGluZyBidWlsZHMKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9saWJfbmRibV9tYWluPW5vIGFjX2N2X2xpYl9kYm1fbWFpbj1ubyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyBDcmVhdGUgYSBzeW1saW5rIHRvIG5kYm0uaCBhbmQgZ2RibS5oIGluIGluY2x1ZGUvZ2RibSB0byBsZXQgb3RoZXIgcGFja2FnZXMgdG8gZmluZAotICAgICMgdGhlc2UgaGVhZGVycwotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZ2RibQotICAgIGxuIC1zZiAuLi9uZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vbmRibS5oCi0gICAgbG4gLXNmIC4uL2dkYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9nZGJtLmgKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImRpZmZ1dGlscyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DIHRlc3RzIGJ1aWxkdGVzdHMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWNvbXBhdCBcCi0gICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1jb21wYXQgPSAiJHtsaWJkaXJ9L2xpYmdkYm1fY29tcGF0JHtTT0xJQlN9IFwKLSAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZDQzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCisKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMzE2ZjhlNGEzZTdlNGYyMzk1NWJlNjVkNTRmZWM0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODgyMmNiNDc2OWUyZDc1OWM4MjhjMDZmMTk2NjE0OTM2Yzg4YzE0MWMzMTMyYjE4MjUyZmUyNWMyYjYzNWNlIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKKworIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCitFWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKKworIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKKyAgICAjIHRoZXNlIGhlYWRlcnMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KKyAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAorICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMgJHtQTn0tYmluIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKKyAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC5pbmMKaW5kZXggYWJhYzhjZi4uOTQ4Yjg5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAuaW5jCkBAIC0zLDcgKzMsNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL2dtcGxpYi5vcmcvIgogU0VDVElPTiA9ICJkZXZlbCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBtdWx0aWxpYl9oZWFkZXIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT15ZXMsLS13aXRoLXJlYWRsaW5lPW5vLHJlYWRsaW5lIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCmluZGV4IGIwMDg3MTAuLmM3NDVkYmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIKQEAgLTI1LDYgKzI1LDEwIEBACiBQQUNLQUdFUyA9KyAibGliZ21weHgiCiBGSUxFU19saWJnbXB4eCA9ICIke2xpYmRpcn0vbGliZ21weHgke1NPTElCU30iCiAKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBnbXAuaAorfQorCiBkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewogICAgICAgICBzZWQgLWkgXAogICAgICAgICAtZSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaAppbmRleCAzZTNhNjRkLi41ZjFkZDMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMGI5NzE0OGMzYWFkMDk5M2E5YWViMDg4NTk2ZmE2M2EyZmVjNTMyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2ViN2VmYjljZTg5YzY2ZTE0YzE5NDc3M2M0ZGNmNjQ3OGE2Y2E0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyMiBKYW4gMjAxOCAxODowMDoyMSArMDIwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHVzZSBhIGN1c3RvbSB2YWx1ZSBmb3IgdGhlIGxvY2F0aW9uIG9mCkBAIC04LDE1ICs4LDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpYywgYW5kIG9ubHkgZm9yIC1uYXRpdmVdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAzODJlZjFkLi4wNTcwZDdjIDEwMDY0NAoraW5kZXggNTlhMmU2MC4uMTJkMzkwYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTgxOCw3ICsxODE4LDcgQEAgQUNfREVGSU5FX1VOUVVPVEVEKEdQR0NPTkZfRElTUF9OQU1FLCAiR1BHQ29uZiIsCitAQCAtMTg0MSw3ICsxODQxLDcgQEAgQUNfREVGSU5FX1VOUVVPVEVEKEdQR0NPTkZfRElTUF9OQU1FLCAiR1BHQ29uZiIsCiAgCiAgQUNfREVGSU5FX1VOUVVPVEVEKEdQR1RBUl9OQU1FLCAiZ3BndGFyIiwgW1RoZSBuYW1lIG9mIHRoZSBncGd0YXIgdG9vbF0pCiAgCkBAIC0yNSw2ICsyNiwzIEBACiAgICAgICAgICAgICAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgYWdlbnQgc29ja2V0XSkKICBBQ19ERUZJTkVfVU5RVU9URUQoR1BHX0FHRU5UX0VYVFJBX1NPQ0tfTkFNRSwgIlMuZ3BnLWFnZW50LmV4dHJhIiwKICAgICAgICAgICAgICAgICAgICAgW1RoZSBuYW1lIG9mIHRoZSBhZ2VudCBzb2NrZXQgZm9yIHJlbW90ZSBhY2Nlc3NdKQotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9DVkUtMjAxOC0xMjAyMC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvQ1ZFLTIwMTgtMTIwMjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0Njk4ZGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9DVkUtMjAxOC0xMjAyMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMTNmMTM1YzdhMjUyY2M0NmNmZjk2ZTc1OTY4ZDkyYjZkYzhkY2UxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlcm5lciBLb2NoIDx3a0BnbnVwZy5vcmc+Ci1EYXRlOiBGcmksIDggSnVuIDIwMTggMTA6NDU6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3BnOiBTYW5pdGl6ZSBkaWFnbm9zdGljIHdpdGggdGhlIG9yaWdpbmFsIGZpbGUgbmFtZS4KLQotKiBnMTAvbWFpbnByb2MuYyAocHJvY19wbGFpbnRleHQpOiBTYW5pdGl6ZSB2ZXJib3NlIG91dHB1dC4KLS0tCi0KLVRoaXMgZml4ZXMgYSBmb3Jnb3R0ZW4gc2FuaXRhdGlvbiBvZiB1c2VyIHN1cHBsaWVkIGRhdGEgaW4gYSB2ZXJib3NlCi1tb2RlIGRpYWdub3N0aWMuICBUaGUgbWVudGlvbiBDVkUgaXMgYWJvdXQgdXNpbmcgdGhpcyB0byBpbmplY3QKLXN0YXR1cy1mZCBsaW5lcyBpbnRvIHRoZSBzdGRlcnIgb3V0cHV0LiAgT3RoZXIgaGFybSBnb29kIGFzIHdlbGwgYmUKLWRvbmUuICBOb3RlIHRoYXQgR1BHTUUgYmFzZWQgYXBwbGljYXRpb25zIGFyZSBub3QgYWZmZWN0ZWQgYmVjYXVzZQotR1BHTUUgZG9lcyBub3QgZm9sZCBzdGF0dXMgb3V0cHV0IGludG8gc3RkZXJyLgotCi1DVkUtaWQ6IENWRS0yMDE4LTEyMDIwCi1HbnVQRy1idWctaWQ6IDQwMTIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ251cGcub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWdudXBnLmdpdDthPWNvbW1pdDtoPTEzZjEzNWM3YTI1MmNjNDZjZmY5NmU3NTk2OGQ5MmI2ZGM4ZGNlMWJdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGcxMC9tYWlucHJvYy5jIHwgOSArKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nMTAvbWFpbnByb2MuYyBiL2cxMC9tYWlucHJvYy5jCi1pbmRleCBkMmNlZWMyZmQuLmE5ZGEwOGY3NCAxMDA2NDQKLS0tLSBhL2cxMC9tYWlucHJvYy5jCi0rKysgYi9nMTAvbWFpbnByb2MuYwotQEAgLTg1MSw3ICs4NTEsMTQgQEAgcHJvY19wbGFpbnRleHQoIENUWCBjLCBQQUNLRVQgKnBrdCApCi0gICBpZiAocHQtPm5hbWVsZW4gPT0gOCAmJiAhbWVtY21wKCBwdC0+bmFtZSwgIl9DT05TT0xFIiwgOCkpCi0gICAgIGxvZ19pbmZvIChfKCJOb3RlOiBzZW5kZXIgcmVxdWVzdGVkIFwiZm9yLXlvdXItZXllcy1vbmx5XCJcbiIpKTsKLSAgIGVsc2UgaWYgKG9wdC52ZXJib3NlKQotLSAgICBsb2dfaW5mbyAoXygib3JpZ2luYWwgZmlsZSBuYW1lPSclLipzJ1xuIiksIHB0LT5uYW1lbGVuLCBwdC0+bmFtZSk7Ci0rICAgIHsKLSsgICAgICAvKiBXZSBkb24ndCB1c2UgcHJpbnRfdXRmOF9idWZmZXIgYmVjYXVzZSB0aGF0IHdvdWxkIHJlcXVpcmUgYQotKyAgICAgICAqIHN0cmluZyBjaGFuZ2Ugd2hpY2ggd2UgZG9uJ3Qgd2FudCBpbiAyLjIuICBJdCBpcyBhbHNvIG5vdAotKyAgICAgICAqIGNsZWFyIHdoZXRoZXIgdGhlIGZpbGVuYW1lIGlzIGFsd2F5cyB1dGYtOCBlbmNvZGVkLiAgKi8KLSsgICAgICBjaGFyICp0bXAgPSBtYWtlX3ByaW50YWJsZV9zdHJpbmcgKHB0LT5uYW1lLCBwdC0+bmFtZWxlbiwgMCk7Ci0rICAgICAgbG9nX2luZm8gKF8oIm9yaWdpbmFsIGZpbGUgbmFtZT0nJS4qcydcbiIpLCAoaW50KXN0cmxlbiAodG1wKSwgdG1wKTsKLSsgICAgICB4ZnJlZSAodG1wKTsKLSsgICAgfQotIAotICAgZnJlZV9tZF9maWx0ZXJfY29udGV4dCAoJmMtPm1meCk7Ci0gICBpZiAoZ2NyeV9tZF9vcGVuICgmYy0+bWZ4Lm1kLCAwLCAwKSkKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvQ1ZFLTIwMTgtOTIzNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvQ1ZFLTIwMTgtOTIzNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRiYTFkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL0NWRS0yMDE4LTkyMzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGNlMDU1MjY5YzgwZjZlN2MxMzkzYzBkZWVjN2JjNWYwZDM3ODk1ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotRGF0ZTogU3VuLCAyMyBTZXAgMjAxOCAwNDowNTo0NyArMDAwMAotU3ViamVjdDogW1BBVENIXSBnMTA6IEZpeCBmaWx0ZXJpbmcgYnkgUEstPlJFUV9VU0FHRQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2Rldi5nbnVwZy5vcmcvckdhMTdkMmQxZjY5MGViZTVkMDA1YjQ1ODlhNWZlMzc4YjY0ODdjNjU3XQotQ1ZFOiBDVkUtMjAxOC05MjM0Ci1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gZzEwL2dldGtleS5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2cxMC9nZXRrZXkuYyBiL2cxMC9nZXRrZXkuYwotaW5kZXggZTMxZTAyMy4uY2EyNTAwYyAxMDA2NDQKLS0tLSBhL2cxMC9nZXRrZXkuYwotKysrIGIvZzEwL2dldGtleS5jCi1AQCAtMTgxMCw2ICsxODEwLDggQEAgZ2V0X3B1YmtleV9ieWZwcmludCAoY3RybF90IGN0cmwsIFBLVF9wdWJsaWNfa2V5ICpwaywga2Jub2RlX3QgKnJfa2V5YmxvY2ssCi0gICAgICAgY3R4Lml0ZW1zWzBdLm1vZGUgPSBmcHJpbnRfbGVuID09IDE2ID8gS0VZREJfU0VBUkNIX01PREVfRlBSMTYKLSAJOiBLRVlEQl9TRUFSQ0hfTU9ERV9GUFIyMDsKLSAgICAgICBtZW1jcHkgKGN0eC5pdGVtc1swXS51LmZwciwgZnByaW50LCBmcHJpbnRfbGVuKTsKLSsgICAgICBpZiAocGspCi0rICAgICAgICBjdHgucmVxX3VzYWdlID0gcGstPnJlcV91c2FnZTsKLSAgICAgICByYyA9IGxvb2t1cCAoY3RybCwgJmN0eCwgMCwgJmtiLCAmZm91bmRfa2V5KTsKLSAgICAgICBpZiAoIXJjICYmIHBrKQotIAlwa19mcm9tX2Jsb2NrIChwaywga2IsIGZvdW5kX2tleSk7Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzNjg4YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCi0KLURFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTIwMjAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtOTIzNC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MDllNWFmNWJiYTg0ZDI1MWM1MjAyMjJlNzIwOTcyZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDFhM2U2NDc4MGZkZmE2ZDc2NzBkZTA4ODBhYTVjOWQ1ODliM2RiN2E3MDk4OTc5ZDc2MDZjZWM1NDZmMmVjIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAotCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAotCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKLSAgICAgICAgICAgICAgICIKLVJSRUNPTU1FTkRTXyR7UE59ID0gInBpbmVudHJ5IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVybmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKLQlybSAtZiAke1N9L200L2tzYmEubTQKLQlybSAtZiAke1N9L200L2xpYmdjcnlwdC5tNAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlsbiAtc2YgZ3BnMiAke0R9JHtiaW5kaXJ9L2dwZwotCWxuIC1zZiBncGd2MiAke0R9JHtiaW5kaXJ9L2dwZ3YKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnMiBHTlVQR19CSU5ESVI9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Ci19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLCAtLWRpc2FibGUtZ251dGxzLCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2QyM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuOS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIkdOVSBQcml2YWN5IEd1YXJkIC0gZW5jcnlwdGlvbiBhbmQgc2lnbmluZyB0b29scyAoMi54KSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODlhZjhhZmNhNmQ2MDc1YmE2YzllMGFhODA3NzYyNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKKworREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgorCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MmM4OTVhODFmNTE0YTY1ZTA4OTIzNzM2YzM4NjU0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2Mjc4ZWFhYmZmYTFlYmM5ZmEyY2ViM2RjNTNlZWE5YTE1MDVhYjAyYTY2OGE4NmRkNmZlYzA2OTUxYWYyMTY0IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAorCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAorCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKKyAgICAgICAgICAgICAgICIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInBpbmVudHJ5IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVybmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CisJcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKKwlybSAtZiAke1N9L200L2tzYmEubTQKKwlybSAtZiAke1N9L200L2xpYmdjcnlwdC5tNAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlsbiAtc2YgZ3BnMiAke0R9JHtiaW5kaXJ9L2dwZworCWxuIC1zZiBncGd2MiAke0R9JHtiaW5kaXJ9L2dwZ3YKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnMiBHTlVQR19CSU5ESVI9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Cit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLCAtLWRpc2FibGUtZ251dGxzLCBnbnV0bHMiCitQQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThlYzhkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL3N1cHBvcnQvP2dyb3VwPWdudXRscyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0teHggPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfS1vcGVuc3NsID0gIkdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzEzOTFjOGUwYzFjZmU2ODA3N2U3ZmNlM2I1ODYyODMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLURFUEVORFMgPSAibmV0dGxlIGdtcCB2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5nbnVwZy5vcmcvZnRwL2djcnlwdC9nbnV0bHMvdiR7U0hSVF9WRVJ9L2dudXRscy0ke1BWfS50YXIueHoiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmlkbiIKLQotIyBZb3UgbXVzdCBhbHNvIGhhdmUgQ09ORklHX1NFQ0NPTVAgZW5hYmxlZCBpbiB0aGUga2VybmVsIGZvcgotIyBzZWNjb21wIHRvIHdvcmsuCi0jCi1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gImFjX2N2X2xpYnNlY2NvbXA9eWVzLGFjX2N2X2xpYnNlY2NvbXA9bm8sbGlic2VjY29tcCIKLQotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1pZG4sLS13aXRob3V0LWlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xpYnRhc24xXSA9ICItLXdpdGgtaW5jbHVkZWQtbGlidGFzbjE9bm8sLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xLGxpYnRhc24xIgotUEFDS0FHRUNPTkZJR1twMTEta2l0XSA9ICItLXdpdGgtcDExLWtpdCwtLXdpdGhvdXQtcDExLWtpdCxwMTEta2l0IgotUEFDS0FHRUNPTkZJR1t0cG1dID0gIi0td2l0aC10cG0sLS13aXRob3V0LXRwbSx0cm91c2VycyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtZG9jIFwKLSAgICAtLWRpc2FibGUtbGliZGFuZSBcCi0gICAgLS1kaXNhYmxlLWd1aWxlIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZW5hYmxlLWxvY2FsLWxpYm9wdHMgXAotICAgIC0tZW5hYmxlLW9wZW5zc2wtY29tcGF0aWJpbGl0eSBcCi0gICAgLS13aXRoLWxpYnB0aHJlYWQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0td2l0aG91dC1saWJ1bmlzdHJpbmctcHJlZml4IFwKLSIKLQotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWZvciBkaXIgaW4gLiBsaWI7IGRvCi0JCXJtIC1mICR7ZGlyfS9hY2xvY2FsLm00ICR7ZGlyfS9tNC9saWJ0b29sLm00ICR7ZGlyfS9tNC9sdCoubTQKLQlkb25lCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1vcGVuc3NsICR7UE59LXh4IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9nbnV0bHMtY2xpLWRlYnVnIgotRklMRVNfJHtQTn0tb3BlbnNzbCA9ICIke2xpYmRpcn0vbGliZ251dGxzLW9wZW5zc2wuc28uKiIKLUZJTEVTXyR7UE59LXh4ID0gIiR7bGliZGlyfS9saWJnbnV0bHN4eC5zby4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZTdiYzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gZWFhYjU1YmI2ZDQ4NjQzMTYzZWViYmM5Y2E1NzVhOWNhMmE4ZTAzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMSBGZWIgMjAxNyAxNzoxMDowNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGZpeCBzZWQgY29tbWFuZAotCi1UaGUgInNlZCAncy8uYmFrLy9nJyIgbWF0Y2hzICJiaXRiYWtlIiwgd2hpY2ggd291bGQgY2F1c2Ugc3RyYW5nZSBlcnJvcnMKLXdoZW4gdGhlIFMgY29udGFpbnMgImJpdGJha2UiLCBmaXggdG8gInNlZCAncy9cLmJhayQvLydgIgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251dGxzLTMuNS4xNi5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCi1AQCAtOTU1LDcgKzk1NSw3IEBAIFlFQVI9YGRhdGUgKyVZYAotIEFDX1NVQlNUKFtZRUFSXSwgJFlFQVIpCi0gCi0gZm9yIGkgaW4gJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuYy5iYWsgJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuaC5iYWs7IGRvCi0tCW5hbT0kKGJhc2VuYW1lICRpfHNlZCAncy8uYmFrLy9nJykKLSsJbmFtPSQoYmFzZW5hbWUgJGl8c2VkICdzL1wuYmFrJC8vJykKLSAJaWYgdGVzdCAiJGNyZWF0ZV9saWJvcHRzX2xpbmtzIiA9ICJ5ZXMiO3RoZW4KLSAJCXJtIC1mICJzcmMvJG5hbS5zdGFtcCIKLSAJCXJtIC1mICJzcmMvJG5hbSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYyNGEyMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgZ251dGxzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0YjY1YWUzZmZlZjU5ZjNlZWVkNTFhNjE2NmZmMTJiMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGIxMGQyYzk5OTRiYzAzMjgyNDMxNDcxNGQwZTg0YzBmMTliZGIzZDcxNWQ4ZWQ1NWJlYjczNjRhOGViYWVkIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQxYmJlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMy5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIkdOVSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgTGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbnV0bHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9ydC8/Z3JvdXA9Z251dGxzIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS14eCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59LW9wZW5zc2wgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MTM5MWM4ZTBjMWNmZTY4MDc3ZTdmY2UzYjU4NjI4MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworREVQRU5EUyA9ICJuZXR0bGUgZ21wIHZpcnR1YWwvbGliaWNvbnYgbGlidW5pc3RyaW5nIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmdudXBnLm9yZy9mdHAvZ2NyeXB0L2dudXRscy92JHtTSFJUX1ZFUn0vZ251dGxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2IxYjA1YzI1NDZiODA4MzIxMDFhNDIzYTgwZmFmOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDY0MmI2NmE0ZWNmNDg1MWFiMmQ4MDljZDE0NzVjMjk3YjYyMDFkOGU4YmQxNGI0ZDFjMDhiNTNmZmNhOTkzIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4iCisKKyMgWW91IG11c3QgYWxzbyBoYXZlIENPTkZJR19TRUNDT01QIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBmb3IKKyMgc2VjY29tcCB0byB3b3JrLgorUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICJhY19jdl9saWJzZWNjb21wPXllcyxhY19jdl9saWJzZWNjb21wPW5vLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWlkbiwtLXdpdGhvdXQtaWRuLGxpYmlkbjIiCitQQUNLQUdFQ09ORklHW2xpYnRhc24xXSA9ICItLXdpdGgtaW5jbHVkZWQtbGlidGFzbjE9bm8sLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xLGxpYnRhc24xIgorUEFDS0FHRUNPTkZJR1twMTEta2l0XSA9ICItLXdpdGgtcDExLWtpdCwtLXdpdGhvdXQtcDExLWtpdCxwMTEta2l0IgorUEFDS0FHRUNPTkZJR1t0cG1dID0gIi0td2l0aC10cG0sLS13aXRob3V0LXRwbSx0cm91c2VycyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtZG9jIFwKKyAgICAtLWRpc2FibGUtbGliZGFuZSBcCisgICAgLS1kaXNhYmxlLWd1aWxlIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZW5hYmxlLWxvY2FsLWxpYm9wdHMgXAorICAgIC0tZW5hYmxlLW9wZW5zc2wtY29tcGF0aWJpbGl0eSBcCisgICAgLS13aXRoLWxpYnB0aHJlYWQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAorICAgIC0td2l0aG91dC1saWJ1bmlzdHJpbmctcHJlZml4IFwKKyIKKworTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWZvciBkaXIgaW4gLiBsaWI7IGRvCisJCXJtIC1mICR7ZGlyfS9hY2xvY2FsLm00ICR7ZGlyfS9tNC9saWJ0b29sLm00ICR7ZGlyfS9tNC9sdCoubTQKKwlkb25lCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1vcGVuc3NsICR7UE59LXh4IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9nbnV0bHMtY2xpLWRlYnVnIgorRklMRVNfJHtQTn0tb3BlbnNzbCA9ICIke2xpYmRpcn0vbGliZ251dGxzLW9wZW5zc2wuc28uKiIKK0ZJTEVTXyR7UE59LXh4ID0gIiR7bGliZGlyfS9saWJnbnV0bHN4eC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaAppbmRleCBmMTk5N2UxLi5hZTlhNDZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDI2NWZhZjhmZTBhY2FjYTIwNDNhMjQ4YTRkZjAyYjA4NjhmZmE2ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM0NTJiYTU4ZGQyZjk5ZDZlNjI0NDIxNjk3NDE3Y2MwMThmOWE2N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDA6MDggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIHBrZ2NvbmZpZworRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNDozNTo0MSArMDgwMAorU3ViamVjdDogW1BBVENIIDEvN10gcGtnY29uZmlnCiAKIFVwZGF0ZSBncGdtZSB0byB1c2UgcGtnY29uZmlnIGluc3RlYWQgb2YgLWNvbmZpZyBmaWxlcyBzaW5jZSBpdHMKIHNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgd2hlbiBjcm9zcyBjb21waWxpbmcuCkBAIC0xMSw3ICsxMSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgogCi1SZWJhc2UgdG8gMS45LjAKK1JlYmFzZSB0byAxLjExLjEKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCkBAIC0yNSwxMCArMjUsMTAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDZlYTRiY2QuLjJhMGQ1MjggMTAwNjQ0CitpbmRleCAyYTM1NDA0Li43NDg1Y2RmIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04ODcsNiArODg3LDcgQEAgQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlIHNyYy9NYWtlZmlsZQorQEAgLTg4Niw2ICs4ODYsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCiAgICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYwogICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKICBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKQEAgLTM3LDcgKzM3LDcgQEAKICBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvc3JjL0dwZ21lcHBDb25maWctdzMyLmNtYWtlLmluKQogIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9zcmMvR3BnbWVwcENvbmZpZy5jbWFrZS5pbikKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGNlNmYxZDQuLjVmMzhmZWUgMTAwNjQ0CitpbmRleCAwYTE5NmUwLi5jZWNhZjhmIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCiArKysgYi9zcmMvTWFrZWZpbGUuYW0KIEBAIC0xOSwxMiArMTksMTQgQEAKQEAgLTU0LDcgKzU0LDcgQEAKICtwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCiArcGtnY29uZmlnX0RBVEEgPSBncGdtZS5wYyBncGdtZS1wdGhyZWFkLnBjCiAgCi0gYmluX1BST0dSQU1TID0gZ3BnbWUtdG9vbAorIGJpbl9QUk9HUkFNUyA9IGdwZ21lLXRvb2wgZ3BnbWUtanNvbgogIAogZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluIGIvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CkBAIC0yOTksNSArMjk5LDUgQEAKICtSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgogXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKaW5kZXggZDIwMjcxZS4uNGY1Y2VkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDMwZjdhNjk0Y2M0NTY4ZWNiMjRmNzdjODNhNjEyM2VkM2Y0MDc1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ1ZDgyODM1NmVmYzE0MGExNDkyYmVmYjFlNmRjNTlhOWY0ZTE2YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDEwOjQ0OjE5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZAorU3ViamVjdDogW1BBVENIIDIvN10gZ3BnbWUvbGFuZy9weXRob246IGdwZy1lcnJvci1jb25maWcgc2hvdWxkIG5vdCBiZSB1c2VkCiAKIGdwZy1lcnJvci1jb25maWcgd2FzIG1vZGlmaWVkIGJ5IE9FIHRvIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuCiBTbyB3ZSB3YW50IHRvIGZpbmQgYW4gYWx0ZXJuYXRpdmUgd2F5IHRvIHJldHJpZXZlIHdoYXRldmVyIGl0CkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vc2V0dXAucHkuaW4gYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgotaW5kZXggZjlkZGEyMC4uOWY1ZDYxZiAxMDA3NTUKK2luZGV4IDI1OTUwNzMuLjYwYjUyNTcgMTAwNzU1CiAtLS0gYS9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgogKysrIGIvbGFuZy9weXRob24vc2V0dXAucHkuaW4KIEBAIC0yNiw3ICsyNiw2IEBAIGltcG9ydCBzaHV0aWwKQEAgLTMwLDcgKzMwLDcgQEAKICBncGdtZV9jb25maWdfZmxhZ3MgPSBbIi0tdGhyZWFkPXB0aHJlYWQiXQogIGdwZ21lX2NvbmZpZyA9IFsiZ3BnbWUtY29uZmlnIl0gKyBncGdtZV9jb25maWdfZmxhZ3MKICBncGdtZV9oID0gIiIKLUBAIC0xNzQsMTQgKzE3Myw3IEBAIGNsYXNzIEJ1aWxkRXh0Rmlyc3RIYWNrKGJ1aWxkKToKK0BAIC0xNTcsMTQgKzE1Niw3IEBAIGNsYXNzIEJ1aWxkRXh0Rmlyc3RIYWNrKGJ1aWxkKToKICAKICAgICAgZGVmIF9nZW5lcmF0ZV9lcnJvcnNfaShzZWxmKToKICAKQEAgLTQ3LDUgKzQ3LDUgQEAKICAgICAgICAgIGZpbHRlcl9yZSA9IHJlLmNvbXBpbGUocidHUEdfRVJSX1teIF0qID0nKQogICAgICAgICAgcmV3cml0ZV9yZSA9IHJlLmNvbXBpbGUocicgKiguKikgPSAuKicpCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaAppbmRleCA3YzljY2NjLi4zMzBiZWM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5M2FhZTM0ZWU3MGI4ZDUwYjMxYTE5YTY1ZDZhYzgyOTBjYjE0OGFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MGJhZjllYmYzMGJlZDBlMmVlM2M3YzVhNzRkNWI2ZDUwMDM1ODYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAxNToyODo0OSArMDgwMAotU3ViamVjdDogW1BBVENIIDIvNF0gQ29ycmVjdGx5IGluc3RhbGwgcHl0aG9uIG1vZHVsZXMKK1N1YmplY3Q6IFtQQVRDSCAzLzddIENvcnJlY3RseSBpbnN0YWxsIHB5dGhvbiBtb2R1bGVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgpAQCAtMjksNSArMjksNSBAQAogIAlkb25lCiAgCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKaW5kZXggZDJiMDM5ZC4uMWE2MGY3OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDMyZWNjM2YwNTgzMDcwNjBlNDBhZjg2MTI3Y2QyMjYyNDhhNzNjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZkN2RjY2VlZWU0MzllYjQ3OWVkYmI0MThiYWI2MzUzNDM0MTRlZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNjo0NSAtMDQwMAotU3ViamVjdDogW1BBVENIIDMvNF0gcHl0aG9uIGltcG9ydAorU3ViamVjdDogW1BBVENIIDQvN10gcHl0aG9uIGltcG9ydAogCiBEb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKIHN5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KQEAgLTMwLDUgKzMwLDUgQEAKICAJZWxzZQogIAkJQUNfTVNHX1JFU1VMVChbbm9dKQogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCmluZGV4IDk2M2FlODcuLjJkYTc5MDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA2ZGNlZGM0ZGQwNTVhZjkwMjcxOWIxYTFjYjEwZGFhOTM1YTI3ZjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNThkOTA2MzJhOTkwN2JlM2U4MDAxODAwYTE0M2FjMTkwNzUyNDFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE2OjQwOjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBncGdtZS1jb25maWc6IHNraXAgYWxsIC9saWIqIG9yIC91c3IvbGliKiBkaXJlY3RvcmllcyBpbgorU3ViamVjdDogW1BBVENIIDUvN10gZ3BnbWUtY29uZmlnOiBza2lwIGFsbCAvbGliKiBvciAvdXNyL2xpYiogZGlyZWN0b3JpZXMgaW4KICBvdXRwdXQKIAogVGhlIGxvZ2ljIHdhcyBub3Qgd29ya2luZyBpbiBtdWx0aWxpYiBzZXR1cHMgd2hpY2ggdXNlIG90aGVyCkBAIC0yNyw1ICsyNyw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgLUwqfC1sKikKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoCmluZGV4IDhjYzg5ODMuLjI2ZmY0NzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDYtZml4LWJ1aWxkLXBhdGgtaXNzdWUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDE4MGE1NjY5ZTRhMTNhNTUwYjFiMGRjZWYxNjg5YjZjMDQ3MGZlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRmODM3NTBjZTQwMmI2NWQxNmNjMDlmOGEwMjc0YTdlYzc2ZmM2MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDExOjAxOjA5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCBwYXRoIGlzc3VlCitTdWJqZWN0OiBbUEFUQ0ggNi83XSBmaXggYnVpbGQgcGF0aCBpc3N1ZQogCiBHZXQgdGhlICItLXJvb3QiIGRpcmVjdG9yeSBzdXBwbGllZCB0byB0aGUgImluc3RhbGwiIGNvbW1hbmQsCiBhbmQgdXNlIGl0IGFzIGEgcHJlZml4IHRvIHN0cmlwIG9mZiB0aGUgcHVycG9ydGVkIGZpbGVuYW1lCkBAIC0zMyw1ICszMyw1IEBACiAgCWRvbmUKICAKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoCmluZGV4IGNlMzc0NWMuLjYzZWVhY2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNy1xdC1weXRob24tQWRkLXZhcmlhYmxlcy10by10ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGY0N2U4YzZmOWU0NjE4MDM0NjhhNjQ1ODFkMzY0MGQ4NzMzNTJlYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQzMDg3MzQ4MzQ4YjRhN2ZjZmIwNWJmMmE3NWI0YTYzNDUzZTFjNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDEgRmViIDIwMTggMTA6MTQ6MzAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcXQvcHl0aG9uOiBBZGQgdmFyaWFibGVzIHRvIHRlc3RzCitTdWJqZWN0OiBbUEFUQ0ggNy83XSBxdC9weXRob246IEFkZCB2YXJpYWJsZXMgdG8gdGVzdHMKIAogKiBjb25maWd1cmUuYWMsIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtOgogICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcHl0aG9uJywgc2V0IHRvIGBsYW5nL3B5dGhvbicgaWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCkBAIC0xOSwxMCArMTksMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjA4YzM3Ni4uZmFkNzQ2NyAxMDA2NDQKK2luZGV4IDc0ODVjZGYuLjRhYTIxNmQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUzNiw2ICs1MzYsMTcgQEAgQUNfQVJHX0VOQUJMRShnMTMtdGVzdCwKK0BAIC01MzUsNiArNTM1LDE3IEBAIEFDX0FSR19FTkFCTEUoZzEzLXRlc3QsCiAgICAgICAgICAgcnVuX2cxM190ZXN0PSRlbmFibGV2YWwpCiAgQU1fQ09ORElUSU9OQUwoUlVOX0cxM19URVNUUywgdGVzdCAiJHJ1bl9nMTNfdGVzdCIgPSAieWVzIikKICAKQEAgLTQxLDcgKzQxLDcgQEAKICAjIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgogIEFDX0NIRUNLX0hFQURFUlNfT05DRShbbG9jYWxlLmggc3lzL3NlbGVjdC5oIHN5cy91aW8uaCBhcmdwLmgKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCA4ZDc0Y2JkLi40M2I1ZDFlIDEwMDY0NAoraW5kZXggNWE0NjhmMS4uNDNiOTc4OCAxMDA2NDQKIC0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCiArKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQogQEAgLTI0LDcgKzI0LDEwIEBAIEVYVFJBX0RJU1QgPSBcCkBAIC03NCw1ICs3NCw1IEBACiAgCiAgRVhUUkFfRElTVCA9IFJFQURNRQogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuMTAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDE1ZjNhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWdoLWxldmVsIEdudVBHIGVuY3J5cHRpb24vc2lnbmluZyBBUEkiCi1ERVNDUklQVElPTiA9ICJHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gbWFrZSBhY2Nlc3MgdG8gR251UEcgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMuIEl0IHByb3ZpZGVzIGEgSGlnaC1MZXZlbCBDcnlwdG8gQVBJIGZvciBlbmNyeXB0aW9uLCBkZWNyeXB0aW9uLCBzaWduaW5nLCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFuZCBrZXkgbWFuYWdlbWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL2dwZ21lLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZ21lLmguaW47ZW5kbGluZT0yMzttZDU9OWQxNTdkMDhhNjkwNTkzNDRlNmY4MmFiZDJkMjU3ODEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2VuZ2luZS5oO2VuZGxpbmU9MjI7bWQ1PTRiNmQ4YmEzMTNkOWI1NjRjYzRkNGNmYjE2NDBhZjlkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dwZ21lLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1weXRob24taW1wb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc4YjE1MzNjNTkzNDc4OTgyZWUyZmM1NDgyNjBjNTYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhOGZlZDExOTdjM2I5OWMzNWY0MDMwNjZiYjM0NGEyNjIyNGQyOTJhZmMwNDhjZmRmYzRjY2Q1NjkwYTA2OTMiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKLVJERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgotCi1SREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKLVJERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCi0KLSMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCi0KLSMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgotIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKLSMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCi0KLSMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKLSMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgotREVGQVVMVF9MQU5HVUFHRVMgPSAiIgotREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKLUxBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKLQotUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgotUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwZ2NvbmYtdGVzdCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGctdGVzdCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGdzbS10ZXN0IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWcxMy10ZXN0IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxhbmctcXQtdGVzdCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sYW5nLXB5dGhvbi10ZXN0IFwKLScKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnICR7UFlUSE9OX0lOSEVSSVR9Ci0KLWV4cG9ydCBQS0dfQ09ORklHPSdwa2ctY29uZmlnJwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jcHAiCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24yLWdwZyAnLCAnJywgZCl9IgotUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1ncGcgJywgJycsIGQpfSIKLQotRklMRVNfJHtQTn0tY3BwID0gIiR7bGliZGlyfS9saWJncGdtZXBwLnNvLioiCi1GSUxFU19weXRob24yLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfcHl0aG9uMy1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jb21tb24tbGlzcC9zb3VyY2UvZ3BnbWUvKiBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS8qIFwKLSIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19lcnJvcl90X2RlZmluZWQgIgotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLQlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAotCXJtIC1mICR7U30vbTQvcHl0aG9uLm00Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuMTEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZmFlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuMTEuMS5iYgpAQCAtMCwwICsxLDg2IEBACitTVU1NQVJZID0gIkhpZ2gtbGV2ZWwgR251UEcgZW5jcnlwdGlvbi9zaWduaW5nIEFQSSIKK0RFU0NSSVBUSU9OID0gIkdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBtYWtlIGFjY2VzcyB0byBHbnVQRyBlYXNpZXIgZm9yIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBIaWdoLUxldmVsIENyeXB0byBBUEkgZm9yIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGtleSBtYW5hZ2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvZ3BnbWUuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT00ZDYzMTllNTg3ZmQ5NDRhZGZlNjFhNDFhOGYxNWIzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtZml4LWJ1aWxkLXBhdGgtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1xdC1weXRob24tQWRkLXZhcmlhYmxlcy10by10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTI5YzQ2ZmI4NWE3ZmZhNDFlNDMzNDVlNDhhZWU4ODQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmQxYjExMTc3NGQyZTNkZDI2ZGNkN2MyNTE4MTljZTRlZjc3NGVjNWU1NjYyNTFlYjkzMDhmYTc1NDJmYmQ2ZiIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IgbGliYXNzdWFuIgorUkRFUEVORFNfJHtQTn0tY3BwICs9ICJsaWJzdGRjKysiCisKK1JERVBFTkRTX3B5dGhvbjItZ3BnICs9ICJweXRob24tdW5peGFkbWluIgorUkRFUEVORFNfcHl0aG9uMy1ncGcgKz0gInB5dGhvbjMtdW5peGFkbWluIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZ21lLWNvbmZpZyIKKworIyBOb3RlIHNlbGVjdCBweXRob24yIG9yIHB5dGhvbjMsIGJ1dCB5b3UgY2FuJ3Qgc2VsZWN0IGJvdGggYXQgdGhlIHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMiCitQQUNLQUdFQ09ORklHW3B5dGhvbjJdID0gIiwscHl0aG9uIHN3aWctbmF0aXZlLCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLCxweXRob24zIHN3aWctbmF0aXZlLCIKKworIyBEZWZhdWx0IGluIGNvbmZpZ3VyZS5hYzogImNsIGNwcCBweXRob24gcXQiCisjIFN1cHBvcnRlZDogImNsIGNwcCBweXRob24gcHl0aG9uMiBweXRob24zIHF0IgorIyBweXRob24gc2F5cyAnc2VhcmNoIGFuZCBmaW5kIHB5dGhvbjIgb3IgcHl0aG9uMycKKworIyBCdWlsZGluZyB0aGUgQysrIGJpbmRpbmdzIGZvciBuYXRpdmUgcmVxdWlyZXMgYSBDKysgY29tcGlsZXIgd2l0aCBDKysxMQorIyBzdXBwb3J0LiBTaW5jZSB0aGVzZSBiaW5kaW5ncyBhcmUgY3VycmVudGx5IG5vdCBuZWVkZWQsIHdlIGNhbiBkaXNhYmxlIHRoZW0uCitERUZBVUxUX0xBTkdVQUdFUyA9ICIiCitERUZBVUxUX0xBTkdVQUdFU19jbGFzcy10YXJnZXQgPSAiY3BwIgorTEFOR1VBR0VTID89ICIke0RFRkFVTFRfTEFOR1VBR0VTfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICcgcHl0aG9uMicsICcnLCBkKX0iCitMQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnIHB5dGhvbjMnLCAnJywgZCl9IgorCitQWVRIT05fSU5IRVJJVCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0iCitQWVRIT05fSU5IRVJJVCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlJywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GICs9ICctLWVuYWJsZS1sYW5ndWFnZXM9IiR7TEFOR1VBR0VTfSIgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3BnY29uZi10ZXN0IFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwZy10ZXN0IFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwZ3NtLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZzEzLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGFuZy1xdC10ZXN0IFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxhbmctcHl0aG9uLXRlc3QgXAorJworCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZGlzdHV0aWxzLWNvbW1vbi1iYXNlICR7UFlUSE9OX0lOSEVSSVR9CisKK2V4cG9ydCBQS0dfQ09ORklHPSdwa2ctY29uZmlnJworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jcHAiCitQQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24yLWdwZyAnLCAnJywgZCl9IgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1ncGcgJywgJycsIGQpfSIKKworRklMRVNfJHtQTn0tY3BwID0gIiR7bGliZGlyfS9saWJncGdtZXBwLnNvLioiCitGSUxFU19weXRob24yLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfcHl0aG9uMy1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jb21tb24tbGlzcC9zb3VyY2UvZ3BnbWUvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS8qIFwKKyIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19lcnJvcl90X2RlZmluZWQgIgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQvcHl0aG9uLm00Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwppbmRleCA5ODMxMThjLi5lMjAwODVmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKQEAgLTE5LDcgKzE5LDkgQEAKIAogSUNVX01BSk9SX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2ljdS1jb25maWciCiAKICMgSUNVIG5lZWRzIHRoZSBuYXRpdmUgYnVpbGQgZGlyZWN0b3J5IGFzIGFuIGFyZ3VtZW50IHRvIGl0cyAtLXdpdGgtY3Jvc3MtYnVpbGQgb3B0aW9uIHdoZW4KICMgY3Jvc3MtY29tcGlsaW5nLiBUYWtlbiB0aGUgc2l0dWF0aW9uIHRoYXQgZGlmZmVyZW50IGJ1aWxkcyBtYXkgc2hhcmUgYSBjb21tb24gc3N0YXRlLWNhY2hlCkBAIC0zMSw2ICszMyw4IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdiZScsICcgLS13aXRoLWRhdGEtcGFja2FnaW5nPWFyY2hpdmUnLCAnJywgZCl9IgogVEFSR0VUX0NYWEZMQUdTX2FwcGVuZCA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdiZScsICcgLURJQ1VfREFUQV9ESVI9XFwiIiR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9XFwiIicsICcnLCBkKX0iCiAKK0FTTkVFREVEID0gIiIKKwogIyBzdHJ0b2RfbCgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgbXVzbDsgYWxzbyB4bG9jYWxlLmggaXMgbWlzc2luZwogIyBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSBpdHMgdXNlIHZpYSBjb25maWd1cmUgc3dpdGNoZXMgb3IgZW52IHZhcnMKICMgc28gbW9ua2V5IHBhdGNoaW5nIGlzIG5lZWRlZC4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBjNDllMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1pMThuLURyb3AtaW5jbHVkZS14bG9jYWxlLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGQ2YjU3YzFiNGViOWEyNGQ5ZDk1MzQyYTk2MWM5Mzk0NjUzOWM5M2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyNCBKdW4gMjAxNyAyMjo1Mjo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvNF0gaTE4bjogRHJvcCBpbmNsdWRlIDx4bG9jYWxlLmg+Ci0KLWdsaWJjIDIuMjYgZHJvcHMgdGhpcyBoZWFkZXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBzb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgfCA2ICstLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcCBiL3NvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcAotaW5kZXggOGU4NmZhNy4uMGJkYmIyYyAxMDA2NDQKLS0tLSBhL2kxOG4vZGlnaXRsc3QuY3BwCi0rKysgYi9pMThuL2RpZ2l0bHN0LmNwcAotQEAgLTYyLDExICs2Miw3IEBACi0gI2VuZGlmCi0gCi0gI2lmIFVfVVNFX1NUUlRPRF9MCi0tIyBpZiBVX0hBVkVfWExPQ0FMRV9ICi0tIyAgIGluY2x1ZGUgPHhsb2NhbGUuaD4KLS0jIGVsc2UKLS0jICAgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tIyBlbmRpZgotKyMgaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2VuZGlmCi0gCi0gLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMi1BZGQtQVJDLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMi1BZGQtQVJDLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlM2Q4MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAyLUFkZC1BUkMtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGZjZmQ1NzEwNWI0YmRiMzBkOTA2ZGYxNTJlZjAxNzQ4ZmE5NWRhZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorRGF0ZTogVGh1LCAxMyBTZXAgMjAxOCAxNzoxMzoyMCArMDMwMAorU3ViamVjdDogW1BBVENIXSBpY3U6IEFkZCBBUkMgc3VwcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcHVsbC8xNDkgXQorLS0tCisgaTE4bi9kb3VibGUtY29udmVyc2lvbi11dGlscy5oICAgICAgICAgICAgICAgICB8IDIgKy0KKyAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2kxOG4vZG91YmxlLWNvbnZlcnNpb24tdXRpbHMuaCBiL2kxOG4vZG91YmxlLWNvbnZlcnNpb24tdXRpbHMuaAoraW5kZXggNTdmYzQ5YjIzMWEzLi4wYmQzZTgzNDA2NzMgMTAwNjQ0CistLS0gYS9pMThuL2RvdWJsZS1jb252ZXJzaW9uLXV0aWxzLmgKKysrKyBiL2kxOG4vZG91YmxlLWNvbnZlcnNpb24tdXRpbHMuaAorQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHZvaWQgYWJvcnRfbm9yZXR1cm4oKSB7IGFib3J0KCk7IH0KKyAgICAgZGVmaW5lZChfX1NINF9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgXAorICAgICBkZWZpbmVkKF9NSVBTX0FSQ0hfTUlQUzMyUjIpIHx8IFwKKyAgICAgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCistICAgIGRlZmluZWQoX19yaXNjdikKKysgICAgZGVmaW5lZChfX3Jpc2N2KSB8fCBkZWZpbmVkKF9fYXJjX18pCisgI2RlZmluZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TIDEKKyAjZWxpZiBkZWZpbmVkKF9fbWM2ODAwMF9fKQorICN1bmRlZiBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg1YTkyYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXJlcXVpcmUgaWN1LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT02NzVmMmQwNjk0MzRkOGExZTRlNmIwZGNmNDM3OTIyNiIKLQotZGVmIGljdV9kb3dubG9hZF92ZXJzaW9uKGQpOgotICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCi0gICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCi0KLUlDVV9QViA9ICIke0BpY3VfZG93bmxvYWRfdmVyc2lvbihkKX0iCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotQkFTRV9TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvJHtQVn0vaWN1NGMtJHtJQ1VfUFZ9LXNyYy50Z3oiCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWluc3RhbGwtbWFueC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1MREZMQUdTSUNVRFQtZm9yLUxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDM4NjFiMTI3NzQ0YjNjMGI5ZDdmMzg2ZjRiOWZhNDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjA3M2VhOGYzNWI5MjZkNzBiYjMzZTY1Nzc1MDhhYTY0MmE4YjMxNmE4MDNmMTFiZTIwYWYzODQ4MTFkYjQxOCIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82Mi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYyLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzNzUwYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82Mi4xLmJiCkBAIC0wLDAgKzEsMjkgQEAKK3JlcXVpcmUgaWN1LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT02Mzc1MmM1N2JkMGIzNjVjOWFmOWY0MjdlZjc5YzgxOSIKKworZGVmIGljdV9kb3dubG9hZF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0lDVV9QViA9ICIke0BpY3VfZG93bmxvYWRfdmVyc2lvbihkKX0iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkFTRV9TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvJHtQVn0vaWN1NGMtJHtJQ1VfUFZ9LXNyYy50Z3oiCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWluc3RhbGwtbWFueC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1BUkMtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1MREZMQUdTSUNVRFQtZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDkwYWQ5ZDkyMDE1OGUwMzE0ZTEwYmE3NGFlOWExNTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RkOTg2OGQ2NjYzNTBkZGE2NmE2ZTMwNWVlY2RlOWQ0NzlmYjcwYjMwZDViNTVkNzhhMWRlZmZiOTdkNWFhMyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZTU2Y2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIklTTyBsYW5ndWFnZSwgdGVycml0b3J5LCBjdXJyZW5jeSwgc2NyaXB0IGNvZGVzIGFuZCB0aGVpciB0cmFuc2xhdGlvbnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9pc28tY29kZXMtdGVhbS9pc28tY29kZXMuZ2l0O3Byb3RvY29sPWh0dHAiCi1TUkNSRVYgPSAiMGE5MzJkM2UxZTZkOTA1OGE2ZWY4NzRjOGZmMWRjNGExOTNiYzAzMCIKLQotIyBpbmhlcml0IGdldHRleHQgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgYWRkcyBnZXR0ZXh0LW5hdGl2ZSB0byBCQVNFREVQRU5EUyB3aGljaAotIyBhcmUgaW5oaWJpdGVkIGJ5IGFsbGFyY2gKLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veG1sLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc180LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3NjFkZWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfNC4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy9pc28tY29kZXMtdGVhbS9pc28tY29kZXMiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy9pc28tY29kZXMtdGVhbS9pc28tY29kZXMvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9pc28tY29kZXMtdGVhbS9pc28tY29kZXMuZ2l0O3Byb3RvY29sPWh0dHAiCitTUkNSRVYgPSAiMTY0ODAyZDVmZDhjN2E4MTY3ODE2ZmQ4NmE2MmIyODY2ODA2MTlmMCIKKworIyBpbmhlcml0IGdldHRleHQgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgYWRkcyBnZXR0ZXh0LW5hdGl2ZSB0byBCQVNFREVQRU5EUyB3aGljaAorIyBhcmUgaW5oaWJpdGVkIGJ5IGFsbGFyY2gKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veG1sLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YjQxNjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYXRvbWljIGludGVnZXIgb3BlcmF0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLyIKLVNFQ1RJT04gPSAib3B0aW9uYWwiCi1QUk9WSURFUyArPSAibGliYXRvbWljcy1vcHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0xJQ0VOU0lORy50eHQ7bWQ1PWUwMGRkNWM4YWMwM2ExNGM1YWU1MjI1YTQ1MjVmYTJkIFwKLQkJICAgIgotUFYgLj0gIitnaXQke1NSQ1BWfSIKLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS03XzYiCi0KLVNSQ1JFViA9ICI1YWU0YjRhZWVhMmJhZjEzNzUyZDA3ZTMwMzhjNDdmNzBmMDZkY2FjIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHM7YnJhbmNoPSR7U1JDQlJBTkNIfSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJkMjZhMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi42LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgorU0VDVElPTiA9ICJvcHRpb25hbCIKK1BST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAorICAgICAgICAgICAgICAgICAgICAiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorU1JDQlJBTkNIID89ICJyZWxlYXNlLTdfNiIKKworU1JDUkVWID0gIjc2ZmZiM2I4Nzk0NmU0YzM3MmQxMTJkOGQwMDc4NjYzMmRlYWI5MzQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wczticmFuY2g9JHtTUkNCUkFOQ0h9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NjE3YjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBACi1Gcm9tIDg4YWRiZTFhODU1YjdhYTk1YmQ5MjVjODBlZDgzYzg2ZjNmYzQyZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA2IE5vdiAyMDE2IDA5OjM5OjMxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBSZXBsYWNlIF9fQkVHSU5fREVDTFMgYW5kIF9fRU5EX0RFQ0xTCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gaW5jbHVkZS9ic2QvZXJyLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9saWJ1dGlsLmggICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL21kNS5oICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2Qvbmxpc3QuaCAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9yZWFkcGFzc3BocmFzZS5oIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3N0ZGlvLmggICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2Qvc3RkbGliLmggICAgICAgICB8IDEyICsrKysrKysrKy0tLQotIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMiArKysrKysrKystLS0KLSBpbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3VuaXN0ZC5oICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2QvdmlzLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC93Y2hhci5oICAgICAgICAgIHwgMTAgKysrKysrKystLQotIHNyYy9oYXNoL3NoYTUxMi5oICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gMTMgZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvZXJyLmggYi9pbmNsdWRlL2JzZC9lcnIuaAotaW5kZXggMTJmZDA1MS4uNDNkZmMzMiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL2Vyci5oCi0rKysgYi9pbmNsdWRlL2JzZC9lcnIuaAotQEAgLTQyLDcgKzQyLDEwIEBACi0gCi0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gdm9pZCB3YXJuYyhpbnQgY29kZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0gCV9fcHJpbnRmbGlrZSgyLCAzKTsKLSB2b2lkIHZ3YXJuYyhpbnQgY29kZSwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFwKQotQEAgLTUxLDYgKzU0LDkgQEAgdm9pZCBlcnJjKGludCBzdGF0dXMsIGludCBjb2RlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSAJX19wcmludGZsaWtlKDMsIDQpOwotIHZvaWQgdmVycmMoaW50IHN0YXR1cywgaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcCkKLSAJX19wcmludGZsaWtlKDMsIDApOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvbGlidXRpbC5oIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCi1pbmRleCA0NWIzYjE1Li45YzkzNmU1IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2QvbGlidXRpbC5oCi0rKysgYi9pbmNsdWRlL2JzZC9saWJ1dGlsLmgKLUBAIC01Myw3ICs1MywxMCBAQCBzdHJ1Y3QgcGlkZmggewotIAlpbm9fdAlwZl9pbm87Ci0gfTsKLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGludCBodW1hbml6ZV9udW1iZXIoY2hhciAqYnVmLCBzaXplX3QgbGVuLCBpbnQ2NF90IGJ5dGVzLAotICAgICBjb25zdCBjaGFyICpzdWZmaXgsIGludCBzY2FsZSwgaW50IGZsYWdzKTsKLSBpbnQgZXhwYW5kX251bWJlcihjb25zdCBjaGFyICpfYnVmLCB1aW50NjRfdCAqX251bSk7Ci1AQCAtNjYsNyArNjksMTAgQEAgaW50IHBpZGZpbGVfY2xvc2Uoc3RydWN0IHBpZGZoICpwZmgpOwotIGludCBwaWRmaWxlX3JlbW92ZShzdHJ1Y3QgcGlkZmggKnBmaCk7Ci0gCi0gY2hhciAgICpmcGFyc2VsbihGSUxFICosIHNpemVfdCAqLCBzaXplX3QgKiwgY29uc3QgY2hhclszXSwgaW50KTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotIC8qIGh1bWFuaXplX251bWJlcigzKSAqLwotICNkZWZpbmUgSE5fREVDSU1BTCAgICAgICAgICAgICAgMHgwMQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL21kNS5oIGIvaW5jbHVkZS9ic2QvbWQ1LmgKLWluZGV4IDVmM2FlNDYuLjVkODBlNWMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9tZDUuaAotKysrIGIvaW5jbHVkZS9ic2QvbWQ1LmgKLUBAIC0zMCw3ICszMCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBNRDVDb250ZXh0IHsKLSAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gdm9pZAkgTUQ1SW5pdChNRDVfQ1RYICopOwotIHZvaWQJIE1ENVVwZGF0ZShNRDVfQ1RYICosIGNvbnN0IHVpbnQ4X3QgKiwgc2l6ZV90KQotIAkJX19hdHRyaWJ1dGVfXygoX19ib3VuZGVkX18oX19zdHJpbmdfXywyLDMpKSk7Ci1AQCAtNDksNiArNTIsOSBAQCBjaGFyCSpNRDVGaWxlQ2h1bmsoY29uc3QgY2hhciAqLCBjaGFyICosIG9mZl90LCBvZmZfdCkKLSBjaGFyCSpNRDVEYXRhKGNvbnN0IHVpbnQ4X3QgKiwgc2l6ZV90LCBjaGFyICopCi0gCQlfX2F0dHJpYnV0ZV9fKChfX2JvdW5kZWRfXyhfX3N0cmluZ19fLDEsMikpKQotIAkJX19hdHRyaWJ1dGVfXygoX19ib3VuZGVkX18oX19taW5ieXRlc19fLDMsTUQ1X0RJR0VTVF9TVFJJTkdfTEVOR1RIKSkpOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gI2VuZGlmIC8qIExJQkJTRF9NRDVfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1pbmRleCBjYjI5N2U4Li5lNjNiYmJkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2Qvbmxpc3QuaAotKysrIGIvaW5jbHVkZS9ic2Qvbmxpc3QuaAotQEAgLTg4LDggKzg4LDE0IEBAIHN0cnVjdCBubGlzdCB7Ci0gCi0gI2RlZmluZSBOX0ZPUk1BVAkiJTA4eCIJLyogbmFtZWxpc3QgdmFsdWUgZm9ybWF0OyBYWFggKi8KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGV4dGVybiBpbnQgbmxpc3QoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBubGlzdCAqbGlzdCk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9yZWFkcGFzc3BocmFzZS5oIGIvaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaAotaW5kZXggMTQ3NDRiOC4uZmE3MzM2MSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKLSsrKyBiL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKLUBAIC0zNCw4ICszNCwxNCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSBjaGFyICogcmVhZHBhc3NwaHJhc2UoY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCwgaW50KTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZiAvKiAhTElCQlNEX1JFQURQQVNTUEhSQVNFX0ggKi8KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdGRpby5oIGIvaW5jbHVkZS9ic2Qvc3RkaW8uaAotaW5kZXggNGI2OTk4My4uMTg2NDViNyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3N0ZGlvLmgKLSsrKyBiL2luY2x1ZGUvYnNkL3N0ZGlvLmgKLUBAIC00NSw3ICs0NSwxMCBAQAotICNlbmRpZgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGNvbnN0IGNoYXIgKmZtdGNoZWNrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSAKLSAvKiBYWFg6IFRoZSBmdW5jdGlvbiByZXF1aXJlcyBjb29wZXJhdGlvbiBmcm9tIHRoZSBzeXN0ZW0gbGliYyB0byBzdG9yZSB0aGUKLUBAIC03Myw3ICs3NiwxMCBAQCBGSUxFICpmdW5vcGVuKGNvbnN0IHZvaWQgKmNvb2tpZSwKLSAjZGVmaW5lIGZ3b3Blbihjb29raWUsIGZuKSBmdW5vcGVuKGNvb2tpZSwgTlVMTCwgZm4sIE5VTEwsIE5VTEwpCi0gCi0gaW50IGZwdXJnZShGSUxFICpmcCk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdGRsaWIuaCBiL2luY2x1ZGUvYnNkL3N0ZGxpYi5oCi1pbmRleCBlYmM5NjM4Li5jNGI1NGI2IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2Qvc3RkbGliLmgKLSsrKyBiL2luY2x1ZGUvYnNkL3N0ZGxpYi5oCi1AQCAtNDYsNyArNDYsMTAgQEAKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSB1aW50MzJfdCBhcmM0cmFuZG9tKHZvaWQpOwotIHZvaWQgYXJjNHJhbmRvbV9zdGlyKHZvaWQpOwotIHZvaWQgYXJjNHJhbmRvbV9hZGRyYW5kb20odW5zaWduZWQgY2hhciAqZGF0LCBpbnQgZGF0bGVuKTsKLUBAIC02Nyw3ICs3MCw3IEBAIGludCBzcmFkaXhzb3J0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKipiYXNlLCBpbnQgbm1lbWIsCi0gICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGFibGUsIHVuc2lnbmVkIGVuZGJ5dGUpOwotIAotIHZvaWQgKnJlYWxsb2NmKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwotLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDI2KQotKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKLSB2b2lkICpyZWFsbG9jYXJyYXkodm9pZCAqcHRyLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKLSAjZW5kaWYKLSAKLUBAIC03NSw2ICs3OCw5IEBAIGxvbmcgbG9uZyBzdHJ0b251bShjb25zdCBjaGFyICpucHRyLCBsb25nIGxvbmcgbWludmFsLCBsb25nIGxvbmcgbWF4dmFsLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZXJyc3RyKTsKLSAKLSBjaGFyICpnZXRic2l6ZShpbnQgKmhlYWRlcmxlbnAsIGxvbmcgKmJsb2Nrc2l6ZXApOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RyaW5nLmggYi9pbmNsdWRlL2JzZC9zdHJpbmcuaAotaW5kZXggNjc5OGJmNi4uZmExMTkzZiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3N0cmluZy5oCi0rKysgYi9pbmNsdWRlL2JzZC9zdHJpbmcuaAotQEAgLTM2LDE1ICszNiwyMSBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSBzaXplX3Qgc3RybGNweShjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeik7Ci0gc2l6ZV90IHN0cmxjYXQoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXopOwotIGNoYXIgKnN0cm5zdHIoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpmaW5kLCBzaXplX3Qgc3RyX2xlbik7Ci0gdm9pZCBzdHJtb2RlKG1vZGVfdCBtb2RlLCBjaGFyICpzdHIpOwotIAotLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDI1KQotKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKLSB2b2lkIGV4cGxpY2l0X2J6ZXJvKHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7Ci0gI2VuZGlmCi0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKLWluZGV4IGZmMzBjYWMuLjQ2MDBmNmIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKLSsrKyBiL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaAotQEAgLTQzLDEyICs0MywxOCBAQCB0eXBlZGVmIHN0cnVjdCBfc3RyaW5nbGlzdCB7Ci0gCXNpemVfdAkgIHNsX2N1cjsKLSB9IFN0cmluZ0xpc3Q7Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSBTdHJpbmdMaXN0CSpzbF9pbml0KHZvaWQpOwotIGludAkJIHNsX2FkZChTdHJpbmdMaXN0ICosIGNoYXIgKik7Ci0gdm9pZAkJIHNsX2ZyZWUoU3RyaW5nTGlzdCAqLCBpbnQpOwotIGNoYXIJCSpzbF9maW5kKFN0cmluZ0xpc3QgKiwgY29uc3QgY2hhciAqKTsKLSBpbnQJCSBzbF9kZWxldGUoU3RyaW5nTGlzdCAqLCBjb25zdCBjaGFyICosIGludCk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYgLyogTElCQlNEX1NUUklOR0xJU1RfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3VuaXN0ZC5oIGIvaW5jbHVkZS9ic2QvdW5pc3RkLmgKLWluZGV4IDFmOWM1ZjguLjViMmY0YzcgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC91bmlzdGQuaAotKysrIGIvaW5jbHVkZS9ic2QvdW5pc3RkLmgKLUBAIC00NSw3ICs0NSwxMCBAQAotICNkZWZpbmUgU19JU1RYVCBTX0lTVlRYCi0gI2VuZGlmCi0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSBleHRlcm4gaW50IG9wdHJlc2V0OwotIAotICNpZmRlZiBMSUJCU0RfT1ZFUkxBWQotQEAgLTY4LDYgKzcxLDkgQEAgdm9pZCBzZXRwcm9jdGl0bGUoY29uc3QgY2hhciAqZm10LCAuLi4pCi0gCV9fcHJpbnRmbGlrZSgxLCAyKTsKLSAKLSBpbnQgZ2V0cGVlcmVpZChpbnQgcywgdWlkX3QgKmV1aWQsIGdpZF90ICplZ2lkKTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3Zpcy5oIGIvaW5jbHVkZS9ic2QvdmlzLmgKLWluZGV4IDk3MGRmZGQuLjYyMWQzYzYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC92aXMuaAotKysrIGIvaW5jbHVkZS9ic2QvdmlzLmgKLUBAIC03NCw3ICs3NCwxMCBAQAotIAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGNoYXIJKnZpcyhjaGFyICosIGludCwgaW50LCBpbnQpOwotIGludAlzdHJ2aXMoY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Ci0gaW50CXN0cnZpc3goY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgaW50KTsKLUBAIC04Myw2ICs4Niw5IEBAIGludAlzdHJ1bnZpcyhjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gaW50CXN0cnVudmlzeChjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSBzc2l6ZV90IHN0cm51bnZpcyhjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKLSBpbnQJdW52aXMoY2hhciAqLCBpbnQsIGludCAqLCBpbnQpOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gI2VuZGlmIC8qICFMSUJCU0RfVklTX0ggKi8KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC93Y2hhci5oIGIvaW5jbHVkZS9ic2Qvd2NoYXIuaAotaW5kZXggMzNhNTAwZS4uYWE3MDc0MiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3djaGFyLmgKLSsrKyBiL2luY2x1ZGUvYnNkL3djaGFyLmgKLUBAIC00MywxMiArNDMsMTggQEAKLSAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gd2NoYXJfdCAqZmdldHdsbihGSUxFICpzdHJlYW0sIHNpemVfdCAqbGVuKTsKLSAKLSBzaXplX3Qgd2NzbGNhdCh3Y2hhcl90ICpkc3QsIGNvbnN0IHdjaGFyX3QgKnNyYywgc2l6ZV90IHNpemUpOwotIHNpemVfdCB3Y3NsY3B5KHdjaGFyX3QgKmRzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBzaXplX3Qgc2l6ZSk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvaGFzaC9zaGE1MTIuaCBiL3NyYy9oYXNoL3NoYTUxMi5oCi1pbmRleCA0ZjM2OGExLi4yN2RkYzI0IDEwMDY0NAotLS0tIGEvc3JjL2hhc2gvc2hhNTEyLmgKLSsrKyBiL3NyYy9oYXNoL3NoYTUxMi5oCi1AQCAtMzksNyArMzksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgU0hBNTEyQ29udGV4dCB7Ci0gCXVuc2lnbmVkIGNoYXIgYnVmWzEyOF07Ci0gfSBTSEE1MTJfQ1RYOwotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gdm9pZAlTSEE1MTJfSW5pdChTSEE1MTJfQ1RYICopOwotIHZvaWQJU0hBNTEyX1VwZGF0ZShTSEE1MTJfQ1RYICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKLUBAIC00OCw2ICs1MSw5IEBAIGNoYXIgICAqU0hBNTEyX0VuZChTSEE1MTJfQ1RYICosIGNoYXIgKik7Ci0gY2hhciAgICpTSEE1MTJfRmlsZShjb25zdCBjaGFyICosIGNoYXIgKik7Ci0gY2hhciAgICpTSEE1MTJfRmlsZUNodW5rKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBvZmZfdCwgb2ZmX3QpOwotIGNoYXIgICAqU0hBNTEyX0RhdGEoY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBpbnQsIGNoYXIgKik7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYgLyogIV9TSEE1MTJfSF8gKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtZmxvcGVuLUFkZC1taXNzaW5nLWZjbnRsLmgtaW5jbHVkZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLWZsb3Blbi1BZGQtbWlzc2luZy1mY250bC5oLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFiYjg3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLWZsb3Blbi1BZGQtbWlzc2luZy1mY250bC5oLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAxM2MzMjkxNmI0YmFhYjU4ZDkzOTQwZDU3ZmVhOWZmMDc3N2YxOTMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmFydWNoIFNpYWNoIDxiYXJ1Y2hAdGtvcy5jby5pbD4KK0RhdGU6IFR1ZSwgNSBKdW4gMjAxOCAxOToyMTo0NiArMDMwMAorU3ViamVjdDogW1BBVENIXSBmbG9wZW46IEFkZCBtaXNzaW5nIDxmY250bC5oPiBpbmNsdWRlCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0NvbW1pdCA5OTM4MjhkODRlZSAoQWRkIGZsb3BlbmF0KCkgZnVuY3Rpb24gZnJvbSBGcmVlQlNEKSBkcm9wcGVkIHRoZQorZmNudGwuaCBoZWFkZXIuIFRoaXMgYnJlYWtzIHRoZSBidWlsZCB3aXRoIG11c2wgbGliYzoKKworZmxvcGVuLmM6IEluIGZ1bmN0aW9uIOKAmHZmbG9wZW5hdOKAmToKK2Zsb3Blbi5jOjYwOjE0OiBlcnJvcjog4oCYT19DUkVBVOKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKKyAgaWYgKGZsYWdzICYgT19DUkVBVCkgeworICAgICAgICAgICAgICBefn5+fn5+CisKK1Jlc3RvcmUgdGhlIGZjbnRsLmggaGVhZGVyIGluY2x1ZGUgdG8gZml4IHRoZSBidWlsZC4KKworRml4ZXM6IGNvbW1pdCA5OTM4MjhkODRlZWQwNDY4YzZjMTViMjgxOGU1MzRlNmIxMzRiOGU0CitTdWJtaXR0ZWQtYWxzby1ieTogcGFyYXp5ZCA8cGFyYXp5ZEBkeW5lLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEJhcnVjaCBTaWFjaCA8YmFydWNoQHRrb3MuY28uaWw+CitTaWduZWQtb2ZmLWJ5OiBHdWlsbGVtIEpvdmVyIDxndWlsbGVtQGhhZHJvbnMub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2xpYmJzZC9saWJic2QvY29tbWl0LzEzYzMyOTE2YjRiYWFiNThkOTM5NDBkNTdmZWE5ZmYwNzc3ZjE5MzFdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9mbG9wZW4uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Zsb3Blbi5jIGIvc3JjL2Zsb3Blbi5jCitpbmRleCBiOTk3MmM5Li5mZjIwZDA3IDEwMDY0NAorLS0tIGEvc3JjL2Zsb3Blbi5jCisrKysgYi9zcmMvZmxvcGVuLmMKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtc3JjLWxpYmJzZC1vdmVybGF5LnBjLmluLVNldC1DZmxhZ3MtdG8tdXNlLUktaW5zdGVhZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLXNyYy1saWJic2Qtb3ZlcmxheS5wYy5pbi1TZXQtQ2ZsYWdzLXRvLXVzZS1JLWluc3RlYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlM2E1YjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtc3JjLWxpYmJzZC1vdmVybGF5LnBjLmluLVNldC1DZmxhZ3MtdG8tdXNlLUktaW5zdGVhZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYjY5NzJmMWMyOWViZjA3M2NiZTE5YTRhNjY5ZWUwOTMyNTk3OTJhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBNb24sIDMwIEphbiAyMDE3IDEyOjAwOjMzIC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9saWJic2Qtb3ZlcmxheS5wYy5pbjogU2V0IENmbGFncyB0byB1c2UgLUkgaW5zdGVhZCBvZgotIC1pc3lzdGVtCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1wa2ctY29uZmlnIGN1cnJlbnRseSBvbmx5IGhhbmRsZXMgLUkgYW5kIC1MIGNvcnJlY3RseSwgYnV0IG1pc3NlcwotLWlzeXN0ZW0sIHNvIHdlIG5lZWQgdG8gZG8gdGhpcyB3b3JrYXJvdW5kIHRvIGZpeCB0aGlzIGlzc3VlLgotCi1UaGVyZSdzIGEgb3BlbiBidWcgaW46Ci1odHRwczovL2J1Z3ppbGxhLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk1MTYKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSBzcmMvbGliYnNkLW92ZXJsYXkucGMuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliYnNkLW92ZXJsYXkucGMuaW4gYi9zcmMvbGliYnNkLW92ZXJsYXkucGMuaW4KLWluZGV4IGFjOGJmODkuLjY1ZGMzYWUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliYnNkLW92ZXJsYXkucGMuaW4KLSsrKyBiL3NyYy9saWJic2Qtb3ZlcmxheS5wYy5pbgotQEAgLTgsNCArOCw0IEBAIERlc2NyaXB0aW9uOiBVdGlsaXR5IGZ1bmN0aW9ucyBmcm9tIEJTRCBzeXN0ZW1zIChvdmVybGF5KQotIFZlcnNpb246IEBWRVJTSU9OQAotIFVSTDogaHR0cHM6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnLwotIExpYnM6IC1MJHtsaWJkaXJ9IC1sYnNkCi0tQ2ZsYWdzOiAtaXN5c3RlbSAke2luY2x1ZGVkaXJ9L2JzZCAtRExJQkJTRF9PVkVSTEFZCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vYnNkIC1ETElCQlNEX09WRVJMQVkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZGExNWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDI4ZmM2NmU4Yjg0ODcwOWEyZTY5ZGJhN2YwNzY5NDI0OGUwMTU0ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA2IE5vdiAyMDE2IDA5OjQwOjQzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBSZW1vdmUgZnVub3BlbigpCi0KLU11c2wgZG9lc250IGhhdmUgcHJlcmVxdWlzaXRlcyBmb3IgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KLQotIG1hbi9NYWtlZmlsZS5hbSAgfCAxIC0KLSBzcmMvTWFrZWZpbGUuYW0gIHwgMSAtCi0gdGVzdC9NYWtlZmlsZS5hbSB8IDEgLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQotaW5kZXggMjgxOTJjMC4uYTIyNzg3ZCAxMDA2NDQKLS0tLSBhL21hbi9NYWtlZmlsZS5hbQotKysrIGIvbWFuL01ha2VmaWxlLmFtCi1AQCAtMTY4LDcgKzE2OCw2IEBAIGRpc3RfbWFuX01BTlMgPSBcCi0gCWZtdGNoZWNrLjNic2QgXAotIAlmcGFyc2Vsbi4zYnNkIFwKLSAJZnB1cmdlLjNic2QgXAotLQlmdW5vcGVuLjNic2QgXAotIAlnZXRic2l6ZS4zYnNkIFwKLSAJZ2V0bW9kZS4zYnNkIFwKLSAJZ2V0cGVlcmVpZC4zYnNkIFwKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGFkODNkYmYuLjEzMjI1YTMgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTc2LDcgKzc2LDYgQEAgbGliYnNkX2xhX1NPVVJDRVMgPSBcCi0gCWZtdGNoZWNrLmMgXAotIAlmcGFyc2Vsbi5jIFwKLSAJZnB1cmdlLmMgXAotLQlmdW5vcGVuLmMgXAotIAlnZXRic2l6ZS5jIFwKLSAJZ2V0cGVlcmVpZC5jIFwKLSAJaGFzaC9tZDUuYyBcCi1kaWZmIC0tZ2l0IGEvdGVzdC9NYWtlZmlsZS5hbSBiL3Rlc3QvTWFrZWZpbGUuYW0KLWluZGV4IGQ4NjUzOWEuLmIzMmVkMmUgMTAwNjQ0Ci0tLS0gYS90ZXN0L01ha2VmaWxlLmFtCi0rKysgYi90ZXN0L01ha2VmaWxlLmFtCi1AQCAtMzYsNyArMzYsNiBAQCBjaGVja19QUk9HUkFNUyA9IFwKLSAJZW5kaWFuIFwKLSAJaHVtYW5pemUgXAotIAlmZ2V0bG4gXAotLQlmdW5vcGVuIFwKLSAJZnBhcnNlbG4gXAotIAlmcHVyZ2UgXAotIAltZDUgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTJhODVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCi0KLVNVTU1BUlkgPSAiTGlicmFyeSBvZiB1dGlsaXR5IGZ1bmN0aW9ucyBmcm9tIEJTRCBzeXN0ZW1zIgotREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHVzZWZ1bCBmdW5jdGlvbnMgY29tbW9ubHkgZm91bmQgb24gQlNEIHN5c3RlbXMsIFwKLSAgICAgICAgICAgICAgIGFuZCBsYWNraW5nIG9uIG90aGVycyBsaWtlIEdOVSBzeXN0ZW1zLCB0aHVzIG1ha2luZyBpdCBlYXNpZXIgdG8gcG9ydCBcCi0gICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKLSAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKLSMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgotIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0Ci0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLU5ldEJTRAotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtYXV0aG9yCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS12ZXJiYXRpbQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUGV0ZXItV2VtbQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUmVnZW50cwotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtQ2hyaXN0b3BoZXItRy1EZW1ldHJpb3UKLSMgTGljZW5zZTogQlNELTQtY2xhdXNlLU5pZWxzLVByb3ZvcwotIyBMaWNlbnNlOiBCU0QtNS1jbGF1c2UtUGV0ZXItV2VtbQotIyBMaWNlbnNlOiBCZWVyd2FyZQotIyBMaWNlbnNlOiBFeHBhdAotIyBMaWNlbnNlOiBJU0MKLSMgTGljZW5zZTogSVNDLU9yaWdpbmFsCi0jIExpY2Vuc2U6IHB1YmxpYy1kb21haW4KLSMgTGljZW5zZTogcHVibGljLWRvbWFpbi1Db2xpbi1QbHVtYgotTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UgJiBJU0MgJiBQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4ZmM0ZTY2YmU0NTI2NzE1ZGFiMDljNWZiYTVlOWU4IgotU0VDVElPTiA9ICJsaWJzIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtc3JjLWxpYmJzZC1vdmVybGF5LnBjLmluLVNldC1DZmxhZ3MtdG8tdXNlLUktaW5zdGVhZC5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgID0gIiBcCi0gICAgZmlsZTovLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDllNjk4MGZiZmU0NGY5NGZkOTJiODlhMzNjY2U2N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjU0OGYxMGU1YWY1YTA4YjFlMjI4ODljZTg0MzE1YjFlYmU0MTUwNWIwMTVjOTU5NmJhZDAzZmQxM2ExMmIzMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjc1Y2RmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOS4xLmJiCkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAiTGlicmFyeSBvZiB1dGlsaXR5IGZ1bmN0aW9ucyBmcm9tIEJTRCBzeXN0ZW1zIgorREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHVzZWZ1bCBmdW5jdGlvbnMgY29tbW9ubHkgZm91bmQgb24gQlNEIHN5c3RlbXMsIFwKKyAgICAgICAgICAgICAgIGFuZCBsYWNraW5nIG9uIG90aGVycyBsaWtlIEdOVSBzeXN0ZW1zLCB0aHVzIG1ha2luZyBpdCBlYXNpZXIgdG8gcG9ydCBcCisgICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKKyAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgorCitIT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKKyMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgorIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0IC11CisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtYXV0aG9yCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1Kb2huLUJpcnJlbGwKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlLVJlZ2VudHMKKyMgTGljZW5zZTogQlNELTQtY2xhdXNlLUNocmlzdG9waGVyLUctRGVtZXRyaW91CisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1OaWVscy1Qcm92b3MKKyMgTGljZW5zZTogQlNELTUtY2xhdXNlLVBldGVyLVdlbW0KKyMgTGljZW5zZTogQmVlcndhcmUKKyMgTGljZW5zZTogRXhwYXQKKyMgTGljZW5zZTogSVNDCisjIExpY2Vuc2U6IElTQy1PcmlnaW5hbAorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCisjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKK0xJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iNTUyNjAyZmRhNjllMzRjNzUzZDI2ZGUzODNmMzNjNSIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWZsb3Blbi1BZGQtbWlzc2luZy1mY250bC5oLWluY2x1ZGUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTc0YjgwYzQxNDNhZmEwMzJjOTAyMjZhNDUxOGZmZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTZkODM1NzQyMzI3ZDY5ZmFjY2QxNjk1NWE2MGI2ZGNmMzA2ODRhOGRhNTE4YzRlY2EwYWM3MTNiOWUwYTdhNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy9weXRob24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvcHl0aG9uLnBhdGNoCmluZGV4IDU5NTkxZWIuLmQ2MGEwYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy9weXRob24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nL3B5dGhvbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjAxYmIyNjk0ZjY2Y2Q5ODFlNmQ2MTUyMzQzM2RjM2ViNWVkMzJmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjRhMzU0YWU4ZDRmN2MyZWMzZWM0MjFjN2Q4YTc5MGNjNTdlNzdhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IExpIHhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KIERhdGU6IFNhdCwgMTggSnVsIDIwMTUgMjM6MDM6MzAgKzA5MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjIC0gQXZvaWQgYW4gaW5jb3JyZWN0IGNoZWNrIGZvciBweXRob24uCkBAIC04LDMwICs4LDMyIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IExpIFhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQotIGJpbmRpbmdzL3B5dGhvbi9NYWtlZmlsZS5hbSB8ICAzICsrLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8IDE1ICsrLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKyBiaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0gfCAgNCArKystCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMTcgKystLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0gYi9iaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IDgyYjliYjguLmY5ZmU3YTggMTAwNjQ0CitpbmRleCA5OTliMTg0Li5jOGU0OWRiIDEwMDY0NAogLS0tIGEvYmluZGluZ3MvcHl0aG9uL01ha2VmaWxlLmFtCiArKysgYi9iaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0KLUBAIC0yMyw3ICsyMyw4IEBAIFNVQkRJUlMgPSB0ZXN0CitAQCAtMjMsNyArMjMsOSBAQAorIFNVQkRJUlMgPSB0ZXN0CiAgQ09ORklHX0NMRUFOX0ZJTEVTID0gKi5sb1QgKi5yZWogKi5vcmlnCiAgQU1fQ0ZMQUdTID0gLWZQSUMgLURQSUMKLSBQWUxJQlZFUiA/PSBweXRob24kKFBZVEhPTl9WRVJTSU9OKQogLUFNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3BfYnVpbGRkaXIpIC1JQFBZSU5DTFVERURJUkAKKytQWUxJQlZFUiA/PSBweXRob24kKFBZVEhPTl9WRVJTSU9OKQogK1BZSU5DID89IC91c3IvaW5jbHVkZS8kKFBZTElCVkVSKQogK0FNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3BfYnVpbGRkaXIpIC1JJChQWUlOQykKLSBMSUJTID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJjYXAtbmcubGEKICBTV0lHX0ZMQUdTID0gLXB5dGhvbgogIFNXSUdfSU5DTFVERVMgPSAke0FNX0NQUEZMQUdTfQorIHB5ZXhlY19QWVRIT04gPSBjYXBuZy5weQogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWQ3NzdkNS4uOWQ5MGY2NCAxMDA2NDQKK2luZGV4IDdmNjYxNzkuLjA3OWQwMjYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEyMywxOSArMTIzLDggQEAgaWYgdGVzdCB4JHVzZV9weXRob24gPSB4bm8gOyB0aGVuCitAQCAtMTIzLDIxICsxMjMsOCBAQCBpZiB0ZXN0IHgkdXNlX3B5dGhvbiA9IHhubyA7IHRoZW4KICBlbHNlCiAgQUNfTVNHX1JFU1VMVCh0ZXN0aW5nKQogIEFNX1BBVEhfUFlUSE9OCkBAIC0zOSwxMSArNDEsMTMgQEAKIC1pZiB0ZXN0IC1mICR7UFlJTkNMVURFRElSfS9QeXRob24uaCA7IHRoZW4KIC0JcHl0aG9uX2ZvdW5kPSJ5ZXMiCiAtCUFDX1NVQlNUKFBZSU5DTFVERURJUikKKy0JcHliaW5kX2Rpcj0icHl0aG9uIgorLQlBQ19TVUJTVChweWJpbmRfZGlyKQogLQlBQ19NU0dfTk9USUNFKFB5dGhvbiBiaW5kaW5ncyB3aWxsIGJlIGJ1aWx0KQogLWVsc2UKIC0JcHl0aG9uX2ZvdW5kPSJubyIKIC0JaWYgdGVzdCB4JHVzZV9weXRob24gPSB4eWVzIDsgdGhlbgotLQkJQUNfTVNHX0VSUk9SKFtQeXRob24gZXhwbGljaXRseSByZXF1aXJlZCBhbmQgcHl0aG9uIGhlYWRlcnMgZm91bmRdKQorLQkJQUNfTVNHX0VSUk9SKFtQeXRob24gZXhwbGljaXRseSByZXF1ZXN0ZWQgYW5kIHB5dGhvbiBoZWFkZXJzIHdlcmUgbm90IGZvdW5kXSkKIC0JZWxzZQogLQkJQUNfTVNHX1dBUk4oIlB5dGhvbiBoZWFkZXJzIG5vdCBmb3VuZCAtIHB5dGhvbiBiaW5kaW5ncyB3aWxsIG5vdCBiZSBtYWRlIikKIC0JZmkKQEAgLTU0LDUgKzU4LDUgQEAKICBBTV9DT05ESVRJT05BTChIQVZFX1BZVEhPTiwgdGVzdCAke3B5dGhvbl9mb3VuZH0gPSAieWVzIikKICAKIC0tIAotMS44LjQuMgorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTgzMTk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIHBvc2l4IGNhcGFiaWxpdGllcyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhlIGxpYmNhcC1uZyBsaWJyYXJ5IGlzIGludGVuZGVkIHRvIG1ha2UgcHJvZ3JhbW1pbmcgXAotd2l0aCBQT1NJWCBjYXBhYmlsaXRpZXMgbXVjaCBlYXNpZXIgdGhhbiB0aGUgdHJhZGl0aW9uYWwgbGliY2FwIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVjb2RlLmNvbS9wcm9qZWN0cy9saWJjYXAtbmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZTNlZGEwMWQ5ODE1ZjhkMjRhYWUyZGJkODliNjhiMDYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL3NncnViYi9saWJjYXAtbmcvbGliY2FwLW5nLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24ucGF0Y2giCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKLQotU1JDX1VSSVttZDVzdW1dID0gIjBkZWNlOTY2NDRiZDc5ODAyMGUxNzBmYmY3NjYzODAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyMWFmOTk3NDQ1Y2Q0MTA3YTU1ZDM4NmY5NTVjNWVhNmY2ZTk2ZWFkNjkzZTkxNTEyNzdjMGFiNWY5N2QwNWYiCi0KLURFUEVORFMgKz0gInN3aWctbmF0aXZlIHB5dGhvbjMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXB5dGhvbiAtLXdpdGgtcHl0aG9uMyIKLUVYVFJBX09FTUFLRSArPSAiUFlMSUJWRVI9J3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFBZSU5DPScke1NUQUdJTkdfSU5DRElSfS8ke1BZTElCVkVSfSciCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBNb3ZpbmcgbGliY2FwLW5nIHRvIGJhc2VfbGliZGlyCi0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCW1rZGlyIC1wICR7RH0vJHtiYXNlX2xpYmRpcn0vCi0JCW12IC1mICR7RH0ke2xpYmRpcn0vbGliY2FwLW5nLnNvLiogJHtEfSR7YmFzZV9saWJkaXJ9LwotCQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtiYXNlX2xpYmRpcn0iLCAiJHtsaWJkaXJ9Iil9Ci0JCWxuIC1zZiAke3JlbHBhdGh9L2xpYmNhcC1uZy5zby4wLjAuMCAke0R9JHtsaWJkaXJ9L2xpYmNhcC1uZy5zbwotCWZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmNjI1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuOS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkFuIGFsdGVybmF0ZSBwb3NpeCBjYXBhYmlsaXRpZXMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBsaWJjYXAtbmcgbGlicmFyeSBpcyBpbnRlbmRlZCB0byBtYWtlIHByb2dyYW1taW5nIFwKK3dpdGggUE9TSVggY2FwYWJpbGl0aWVzIG11Y2ggZWFzaWVyIHRoYW4gdGhlIHRyYWRpdGlvbmFsIGxpYmNhcCBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlY29kZS5jb20vcHJvamVjdHMvbGliY2FwLW5nIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWUzZWRhMDFkOTgxNWY4ZDI0YWFlMmRiZDg5YjY4YjA2IgorCitTUkNfVVJJID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9zZ3J1YmIvbGliY2FwLW5nL2xpYmNhcC1uZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uLnBhdGNoIgorCitpbmhlcml0IGxpYl9wYWNrYWdlIGF1dG90b29scyBweXRob24zbmF0aXZlCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzk4ZDY5NTUwOGZhYjljZTMzNjY4YzUzYTg5YjBlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTE1MzJiY2YzNzMxYWFkZTQwOTM2ZjZkNmE1ODZlZDVhNjZjYTRjNzQ1NWUxMzM4ZDFmNmMzZTA5MjIxMzI4IgorCitERVBFTkRTICs9ICJzd2lnLW5hdGl2ZSBweXRob24zIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1weXRob24gLS13aXRoLXB5dGhvbjMiCitFWFRSQV9PRU1BS0UgKz0gIlBZTElCVkVSPSdweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBQWUlOQz0nJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWUxJQlZFUn0nIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgorCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92aW5nIGxpYmNhcC1uZyB0byBiYXNlX2xpYmRpcgorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQlta2RpciAtcCAke0R9LyR7YmFzZV9saWJkaXJ9LworCQltdiAtZiAke0R9JHtsaWJkaXJ9L2xpYmNhcC1uZy5zby4qICR7RH0ke2Jhc2VfbGliZGlyfS8KKwkJcmVscGF0aD0ke0Bvcy5wYXRoLnJlbHBhdGgoIiR7YmFzZV9saWJkaXJ9IiwgIiR7bGliZGlyfSIpfQorCQlsbiAtc2YgJHtyZWxwYXRofS9saWJjYXAtbmcuc28uMC4wLjAgJHtEfSR7bGliZGlyfS9saWJjYXAtbmcuc28KKwlmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgppbmRleCBkNjE5YTJlLi42ZGY2NzQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgpAQCAtMzIsNyArMzIsNyBAQAogCiBFWFRSQV9PRU1BS0UgPSAiIFwKICAgSU5ERU5UPSAgXAotICBsaWI9JHtAb3MucGF0aC5iYXNlbmFtZSgnJHtsaWJkaXJ9Jyl9IFwKKyAgbGliPScke2Jhc2VsaWJ9JyBcCiAgIFJBSVNFX1NFVEZDQVA9bm8gXAogICBEWU5BTUlDPXllcyBcCiAgIEJVSUxEX0dQRVJGPXllcyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrL25vdC1lY2hvLWNvbXBpbGVyLWluZm8tdG8tY2hlY2tfc3RkaW50LmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrL25vdC1lY2hvLWNvbXBpbGVyLWluZm8tdG8tY2hlY2tfc3RkaW50LmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M3NTcyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2svbm90LWVjaG8tY29tcGlsZXItaW5mby10by1jaGVja19zdGRpbnQuaC5wYXRjaApAQCAtMCwwICsxLDE5IEBACitEbyBub3QgZWNobyBjb21waWxlciBpbmZvIGluIGEgY29tbWVudCBsaW5lIHRvIGNoZWNrX3N0ZGludC5oIHdoaWNoIGNhdXNlcworbXVsdGlsaWIgaW5zdGFsbCBmaWxlIGNvbmZsaWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9tNC9heF9jcmVhdGVfc3RkaW50X2gubTQgYi9tNC9heF9jcmVhdGVfc3RkaW50X2gubTQKK2luZGV4IDMzYTIxZjguLmVhY2MzN2EgMTAwNjQ0CistLS0gYS9tNC9heF9jcmVhdGVfc3RkaW50X2gubTQKKysrKyBiL200L2F4X2NyZWF0ZV9zdGRpbnRfaC5tNAorQEAgLTI3Miw3ICsyNzIsNiBAQCBlY2hvICIjaWZuZGVmIiAkX2FjX3N0ZGludF9oID4kYWNfc3RkaW50CisgZWNobyAiI2RlZmluZSIgJF9hY19zdGRpbnRfaCAiMSIgPj4kYWNfc3RkaW50CisgZWNobyAiI2lmbmRlZiIgX0dFTkVSQVRFRF9TVERJTlRfSCA+PiRhY19zdGRpbnQKKyBlY2hvICIjZGVmaW5lIiBfR0VORVJBVEVEX1NURElOVF9IICciJyRQQUNLQUdFICRWRVJTSU9OJyInID4+JGFjX3N0ZGludAorLWVjaG8gIi8qIGdlbmVyYXRlZCAkYWNfY3Zfc3RkaW50X21lc3NhZ2UgKi8iID4+JGFjX3N0ZGludAorIGlmIHRlc3QgIl8kYWNfY3ZfaGVhZGVyX3N0ZGludF90IiAhPSAiXyIgOyB0aGVuCisgZWNobyAiI2RlZmluZSBfU1RESU5UX0hBVkVfU1RESU5UX0giICIxIiA+PiRhY19zdGRpbnQKKyBlY2hvICIjaW5jbHVkZSA8c3RkaW50Lmg+IiA+PiRhY19zdGRpbnQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIKaW5kZXggZTY0NmQ0My4uM2JiNDhhNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIKQEAgLTUsNyArNSw4IEBACiBMSUNFTlNFICA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS9jaGVjay9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9jaGVjay0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vY2hlY2svcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vY2hlY2stJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vdC1lY2hvLWNvbXBpbGVyLWluZm8tdG8tY2hlY2tfc3RkaW50LmgucGF0Y2giCiBTUkNfVVJJW21kNXN1bV0gPSAiMzFiMTdjNjA3NTgyMGE0MzQxMTk1OTI5NDExODZmNzAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY0MjAxMDk4YmVlMDBlOTBmNWM0YmRmYTk0YTVkM2VhZDhkNjQxZjkwMjViNTYwYTI3NzU1YTgzYjgyNDIzNCIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jby9DVkUtMjAxNy03OTYxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jby9DVkUtMjAxNy03OTYxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWMxMWVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY28vQ1ZFLTIwMTctNzk2MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNWZhMzE2NTYxM2I3N2I1MTZlMmIwZGMxMjhmNzNiNjczYmQzZWM4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IElnbmFjaW8gQ2FzYWwgUXVpbnRlaXJvIDxxaWduYWNpb0BhbWF6b24uY29tPgotRGF0ZTogU3VuLCAxNiBBcHIgMjAxNyAxMzo1NjowOSArMDIwMAotU3ViamVjdDogW1BBVENIXSB0a256cjogc3VwcG9ydCBvbmx5IG1heCBsb25nIHJnYiB2YWx1ZXMKLQotVGhpcyBmaXhlcyBhIHBvc3NpYmxlIG91dCBvZiBib3VuZCB3aGVuIHJlYWRpbmcgcmdicyB3aGljaAotYXJlIGxvbmdlciB0aGFuIHRoZSBzdXBwb3J0IE1BWExPTkcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJjcm9jby9wYXRjaC8/aWQ9OWFkNzI4NzVlOWYwOGU0YzUxOWVmNjNkNDRjZGJkOTRhYTk1MDRmN10KLUNWRTogQ1ZFLTIwMTctNzk2MQotU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KLS0tLQotIHNyYy9jci10a256ci5jIHwgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY3ItdGtuenIuYyBiL3NyYy9jci10a256ci5jCi1pbmRleCBlM2FmMGVlLi43Njg4NmVjIDEwMDY0NAotLS0tIGEvc3JjL2NyLXRrbnpyLmMKLSsrKyBiL3NyYy9jci10a256ci5jCi1AQCAtMTI4MCw2ICsxMjgwLDExIEBAIGNyX3RrbnpyX3BhcnNlX3JnYiAoQ1JUa256ciAqIGFfdGhpcywgQ1JSZ2IgKiogYV9yZ2IpCi0gICAgICAgICBzdGF0dXMgPSBjcl90a256cl9wYXJzZV9udW0gKGFfdGhpcywgJm51bSk7Ci0gICAgICAgICBFTlNVUkVfUEFSU0lOR19DT05EICgoc3RhdHVzID09IENSX09LKSAmJiAobnVtICE9IE5VTEwpKTsKLSAKLSsgICAgICAgIGlmIChudW0tPnZhbCA+IEdfTUFYTE9ORykgewotKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBDUl9QQVJTSU5HX0VSUk9SOwotKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotKyAgICAgICAgfQotKwotICAgICAgICAgcmVkID0gbnVtLT52YWw7Ci0gICAgICAgICBjcl9udW1fZGVzdHJveSAobnVtKTsKLSAgICAgICAgIG51bSA9IE5VTEw7Ci1AQCAtMTI5OSw2ICsxMzA0LDExIEBAIGNyX3RrbnpyX3BhcnNlX3JnYiAoQ1JUa256ciAqIGFfdGhpcywgQ1JSZ2IgKiogYV9yZ2IpCi0gICAgICAgICAgICAgICAgIHN0YXR1cyA9IGNyX3RrbnpyX3BhcnNlX251bSAoYV90aGlzLCAmbnVtKTsKLSAgICAgICAgICAgICAgICAgRU5TVVJFX1BBUlNJTkdfQ09ORCAoKHN0YXR1cyA9PSBDUl9PSykgJiYgKG51bSAhPSBOVUxMKSk7Ci0gCi0rICAgICAgICAgICAgICAgIGlmIChudW0tPnZhbCA+IEdfTUFYTE9ORykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IENSX1BBUlNJTkdfRVJST1I7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSsgICAgICAgICAgICAgICAgfQotKwotICAgICAgICAgICAgICAgICBQRUVLX0JZVEUgKGFfdGhpcywgMSwgJm5leHRfYnl0ZXNbMF0pOwotICAgICAgICAgICAgICAgICBpZiAobmV4dF9ieXRlc1swXSA9PSAnJScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBTS0lQX0NIQVJTIChhX3RoaXMsIDEpOwotLS0gCi0yLjE5LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgppbmRleCBjNzUwN2UwLi41Yjk2MmVlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgpAQCAtMTYsOCArMTYsNyBAQAogCiBpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGJpbmNvbmZpZy1kaXNhYmxlZAogCi1TUkNfVVJJICs9ICJmaWxlOi8vQ1ZFLTIwMTctNzk2MC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzk2MS5wYXRjaCAiCitTUkNfVVJJICs9ICJmaWxlOi8vQ1ZFLTIwMTctNzk2MC5wYXRjaCIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmMwOTg0ZmNlMDc4YmEyY2UyOWY5NTAwYzZiOWRkY2UiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGM0YjU1NDZjOWZiNDI4MGE1MDE3ZTI3MDdmYmQ0ODM5MDM0ZWQxYWJhNWI3ZDQzNzIyMTJmMzRmODRmODYwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMzgwMTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlULVgiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImMyNWE4YzM5MzllNGFkNTlhNWU5ZTVlMWUzNTQ4MzJkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwODNkODFlNDY2MDlkYThiYTgwY2I4MjZjMDJkOTA4MDc2NGE2ZGVjMzNjODI2N2NjYjdlMTU4ODMzZDRjNmQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5YzYwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjkuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTFjYTExZTk2MWMxZWZlZDcyMGZhYzQxMzA4ODE5MDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTE2NjM3NTE0NDNiZWQ5ZDNlNzZhNGZlMmNhZjZmYTg2NmE3OTcwNWQ5MWNhY2FkODE1YzA0ZTcwNjE5OGE3NSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgppbmRleCA4M2NlNDY0Li4wZjkxZTA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKQEAgLTI4LDEyICsyOCwxNiBAQAogIyBOZWVkZWQgZm9yIERlYmlhbiBwYWNrYWdpbmcKIExFQURfU09OQU1FID0gImxpYmV2ZW50LTIuMS5zbyIKIAotaW5oZXJpdCBwdGVzdAoraW5oZXJpdCBwdGVzdCBtdWx0aWxpYl9oZWFkZXIKIAogREVQRU5EUyA9ICJ6bGliIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgZXZlbnQyL2V2ZW50LWNvbmZpZy5oCit9CisKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CiAJZm9yIGZpbGUgaW4gJHtCfS90ZXN0Ly5saWJzL3JlZ3Jlc3MgJHtCfS90ZXN0Ly5saWJzL3Rlc3QqCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjIuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBmZDgzZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBmaWxlIG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vcGNtYW5mbS5zb3VyY2Vmb3JnZS5uZXQvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvZm0tZXh0cmEuaDtiZWdpbmxpbmU9ODtlbmRsaW5lPTIxO21kNT1lZjFmODRkYTY0YjNjMDFjY2E0NDcyMTJmN2VmNjAwNyIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9saWJmbS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTFiYTlhZTVlOTIwZjM4YjY0N2RkNTExZWRkNmM4MDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzcwNmJiMTAyMGNmNWYyZDZmNWE5MjI2ZjY5MmNlMTk4NTk0NzEzNGRjZjJiZGU2NDI3OGJkMDQyMDc3OWI1YSIKLQotUyA9ICIke1dPUktESVJ9L2xpYmZtLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWV4dHJhLW9ubHkgLS13aXRoLWd0az1ubyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ2V0dGV4dAotCi1kb19jb25maWd1cmVbZGlyc10gPSsgIiR7U30vbTQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMy4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMy4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM0ZDAxMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4zLjAuMi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGZpbGUgbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wY21hbmZtLnNvdXJjZWZvcmdlLm5ldC8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9mbS1leHRyYS5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjE7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL2xpYmZtLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMmEwMjQ3MTRkNTFlMGQzN2FmYzdiZDU5NmE0NGYzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOGQwNmY3OTk2Y2UxY2Y4OTQ3ZGY2ZTEwNmJjMDMzOGM2YWUwYzQxMzhjMzE2ZjI1MDFmNmY2ZjQzNWM3YzcyIgorCitTID0gIiR7V09SS0RJUn0vbGliZm0tJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZXh0cmEtb25seSAtLXdpdGgtZ3RrPW5vIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0CisKK2RvX2NvbmZpZ3VyZVtkaXJzXSA9KyAiJHtTfS9tNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1Eby1ub3QtYWRkLWxpYnJhcnktcGF0aC10by1hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRG8tbm90LWFkZC1saWJyYXJ5LXBhdGgtdG8tYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Yzg5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRG8tbm90LWFkZC1saWJyYXJ5LXBhdGgtdG8tYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Zyb20gMDcyNjAyOTVlMDMxZTg0NWUzOGJhODc0ZmE2YWI1MDA3OTBjNGFhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyIE1heSAyMDE4IDE2OjQ4OjQ3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBhZGQgbGlicmFyeSBwYXRoIHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL21vZHVsZXMvTWFrZWZpbGUuYW0gfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvTWFrZWZpbGUuYW0gYi9zcmMvbW9kdWxlcy9NYWtlZmlsZS5hbQoraW5kZXggZTYxZjRlMC4uMDFjMTViZCAxMDA2NDQKKy0tLSBhL3NyYy9tb2R1bGVzL01ha2VmaWxlLmFtCisrKysgYi9zcmMvbW9kdWxlcy9NYWtlZmlsZS5hbQorQEAgLTExLDcgKzExLDYgQEAgQU1fQ1BQRkxBR1MgPSBcCisgIyB0ZWxsIGxpYnRvb2wgd2UgY29tcGlsZSBtb2R1bGUgbm90IGxpYnJhcnkKKyBBTV9MREZMQUdTID0gXAorIAktbm8tdW5kZWZpbmVkIC1tb2R1bGUgLWF2b2lkLXZlcnNpb24gLXNoYXJlZCAtZXhwb3J0LWR5bmFtaWMgXAorLQktTCQobGliZGlyKSBcCisgCSQoR0lPX0xJQlMpCisgCisgIyB0aGUgbW9kdWxlIHNob3VsZCBiZSBsaW5rZWQgb25seSB3aXRoIGxpYmZtLCBub3QgbGliZm0tZ3RrIG9yIHdoYXRldmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTUzMjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS8wMDAxLUVuY2xvc2UtdGV4dC1pbi1wcm9ncmFtbGlzdGluZy1pbnRvLUNEQVRBLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSBlZDRjYThjMGIxN2ZmNWQzYzc2OGI5MjQwOWMxNzg3ZTNmM2YxODQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcml5IEdyeXRzZW5rbyA8YW5kcmVqQHJlcC5raWV2LnVhPgotRGF0ZTogU3VuLCAyNiBOb3YgMjAxNyAyMjozMDoxNSArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRW5jbG9zZSB0ZXh0IGluIDxwcm9ncmFtbGlzdGluZz4gaW50byA8IVtDREFUQVsKLQotTmV3IGd0ay1kb2MgZmFpbHMgb24gdGFnLWxpa2UgZGF0YSBpbiBpdC4KLVNlZSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1ODUKLVRoYXQgaXMgZGVmaW5pdGVseSBidWcgb2YgZ3RrLWRvYyBidXQgbGV0IHdvcmthcm91bmQgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmx4ZGUub3JnL2dpdHdlYi8/cD1seGRlL2xpYmZtLmdpdDthPWNvbW1pdDtoPWIwNzJlZTA0MDA0MzJkNzJmZGY4NmJhOWZlZDc0YTdlMGVjMTFlYzFdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iYXNlL2ZtLW1vZHVsZS5jIHwgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2ZtLW1vZHVsZS5jIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKLWluZGV4IGQzNjRiMmQuLjJlOGM5NzggMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzZS9mbS1tb2R1bGUuYwotKysrIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKLUBAIC00NCw3ICs0NCw3IEBACi0gICogb2YgdGhhdCB0eXBlIHNob3VsZCBpbmNsdWRlOgotICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LWgiPgotICAqIDx0aXRsZT5TYW1wbGUgb2YgZm0tZHVtbXkuaDwvdGl0bGU+Ci0tICogPHByb2dyYW1saXN0aW5nPgotKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKLSAgKiAjaW5jbHVkZSA8bGliZm0vZm0uaD4KLSAgKgotICAqICNkZWZpbmUgRk1fTU9EVUxFX2R1bW15X1ZFUlNJT04gMQotQEAgLTU0LDcgKzU0LDcgQEAKLSAgKiB9IEZtRHVtbXlJbml0OwotICAqCi0gICogZXh0ZXJuIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15OwotLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0rICogXV0+PC9wcm9ncmFtbGlzdGluZz4KLSAgKiA8L2V4YW1wbGU+Ci0gICogVGhlIEZNX01PRFVMRV9kdW1teV9WRVJTSU9OIGlzIGEgbnVtYmVyIHdoaWNoIHNob3VsZCBiZSBpbmNyZWFzZWQgZWFjaAotICAqIHRpbWUgc29tZXRoaW5nIGluIEZtRHVtbXlJbml0IHN0cnVjdHVyZSBpcyBjaGFuZ2VkLiBUaGUgRm1EdW1teUluaXQKLUBAIC02NSw3ICs2NSw3IEBACi0gICogbW9kdWxlIGhhbmRsaW5nIGluIHlvdXIgY29kZToKLSAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS13aWRnZXQtYyI+Ci0gICogPHRpdGxlPlNhbXBsZSBvZiBmbS1kdW1teS13aWRnZXQuYzwvdGl0bGU+Ci0tICogPHByb2dyYW1saXN0aW5nPgotKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKLSAgKiAjaW5jbHVkZSAiZm0tZHVtbXkuaCIKLSAgKgotICAqIEZNX01PRFVMRV9ERUZJTkVfVFlQRShkdW1teSwgRm1EdW1teUluaXQsIDEpCi1AQCAtODcsNyArODcsNyBAQAotICAqICAgICAgICAgcmVzdWx0ID0gbW9kdWxlLT5nZXRfbmV3KCJ0ZXN0IHNhbXBsZSIpOwotICAqICAgICByZXR1cm4gcmVzdWx0OwotICAqIH0KLS0gKiA8L3Byb2dyYW1saXN0aW5nPgotKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICogPC9leGFtcGxlPgotICAqCi0gICogVGhpcmQgdGhpbmcgYXBwbGljYXRpb24gc2hvdWxkIGRvIGlzIHRvIHJlZ2lzdGVyIG1vZHVsZSB0eXBlIG9uIHRoZQotQEAgLTEwOCw3ICsxMDgsNyBAQAotICAqIGludGVyZmFjZSAoc2VlIHRoZSBmbS1kdW1teS5oIGhlYWRlciBleGFtcGxlIGFib3ZlKToKLSAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS10ZXN0LWMiPgotICAqIDx0aXRsZT5TYW1wbGUgb2YgbW9kdWxlIGR1bW15L3Rlc3Q8L3RpdGxlPgotLSAqIDxwcm9ncmFtbGlzdGluZz4KLSsgKiA8cHJvZ3JhbWxpc3Rpbmc+PCFbQ0RBVEFbCi0gICogI2luY2x1ZGUgImZtLWR1bW15LmgiCi0gICoKLSAgKiBGTV9ERUZJTkVfTU9EVUxFKGR1bW15LCB0ZXN0KQotQEAgLTEyMSw3ICsxMjEsNyBAQAotICAqIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15ID0gewotICAqICAgICBmbV9kdW1teV90ZXN0X2dldF9uZXc7Ci0gICogfTsKLS0gKiA8L3Byb2dyYW1saXN0aW5nPgotKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICogPC9leGFtcGxlPgotICAqIFRoZSBmbV9tb2R1bGVfaW5pdF9kdW1teSBzaG91bGQgYmUgZXhhY3RseSB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhhdCBpcwotICAqIGRlZmluZWQgaW4gdGhlIGhlYWRlciBmaWxlIGFib3ZlLgotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NjQwODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgZmlsZSBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3BjbWFuZm0uc291cmNlZm9yZ2UubmV0LyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDY0MWU5NGVjOTZmOThmYWJjNTZmZjljYzQ4YmUxNGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZtLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMTttZDU9ZWYxZjg0ZGE2NGIzYzAxY2NhNDQ3MjEyZjdlZjYwMDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Jhc2UvZm0tY29uZmlnLmg7YmVnaW5saW5lPTEwO2VuZGxpbmU9MjM7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mbS1ndGsuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTE5O21kNT02NDZiYWE0OTU1YzA0ZmU3NjhmMmNhMjdiOTJhYzhkZCIKLQotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgcGFuZ28gZ3RrKzMgbWVudS1jYWNoZSBpbnRsdG9vbC1uYXRpdmUgbGliZXhpZiBsaWJmbS1leHRyYSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9saWJmbS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMWJhOWFlNWU5MjBmMzhiNjQ3ZGQ1MTFlZGQ2YzgwNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzA2YmIxMDIwY2Y1ZjJkNmY1YTkyMjZmNjkyY2UxOTg1OTQ3MTM0ZGNmMmJkZTY0Mjc4YmQwNDIwNzc5YjVhIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCi0KLWRvX2NvbmZpZ3VyZVtkaXJzXSA9KyAiJHtTfS9tNCIKLQotUEFDS0FHRVMgPSsgImxpYmZtLWd0ayIKLVBBQ0tBR0VTICs9ICIke1BOfS1taW1lIgotRklMRVNfbGliZm0tZ3RrID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYmZtLWd0aypzby4qIFwKLSAgICAke2xpYmRpcn0vbGliZm0vbW9kdWxlcy9ndGsqIFwKLSAgICAke2JpbmRpcn0vbGliZm0tcHJlZi1hcHBzIFwKLSAgICAke2JpbmRpcn0vbHhzaG9ydGN1dCBcCi0gICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbGliZm0tcHJlZi1hcHBzLmRlc2t0b3AgXAotICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2x4c2hvcnRjdXQuZGVza3RvcCBcCi0gICAgJHtkYXRhZGlyfS9saWJmbS9pbWFnZXMvZm9sZGVyLnBuZyBcCi0gICAgJHtkYXRhZGlyfS9saWJmbS9pbWFnZXMvdW5rbm93bi5wbmcgXAotICAgICR7ZGF0YWRpcn0vbGliZm0vdWkvKi51aSBcCi0iCi1GSUxFU18ke1BOfS1taW1lID0gIiR7ZGF0YWRpcn0vbWltZS8iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIHJlbW92ZSBmaWxlcyB3aGljaCBhcmUgcGFydCBvZiBsaWJmbS1leHRyYQotICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtLTEuMC9mbS14bWwtZmlsZS5oCi0gICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLXZlcnNpb24uaAotICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtLTEuMC9mbS1leHRyYS5oCi0gICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0KLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJmbS1leHRyYS5wYwotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vbGliZm0tZXh0cmEuc28qCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5hCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5sYQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjMuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjMuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZDZhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4wLjIuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBmaWxlIG1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vcGNtYW5mbS5zb3VyY2Vmb3JnZS5uZXQvIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NjQxZTk0ZWM5NmY5OGZhYmM1NmZmOWNjNDhiZTE0YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZm0uaDtiZWdpbmxpbmU9ODtlbmRsaW5lPTIxO21kNT1lZjFmODRkYTY0YjNjMDFjY2E0NDcyMTJmN2VmNjAwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYmFzZS9mbS1jb25maWcuaDtiZWdpbmxpbmU9MTA7ZW5kbGluZT0yMzttZDU9ZWYxZjg0ZGE2NGIzYzAxY2NhNDQ3MjEyZjdlZjYwMDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZtLWd0ay5oO2JlZ2lubGluZT02O2VuZGxpbmU9MTk7bWQ1PTY0NmJhYTQ5NTVjMDRmZTc2OGYyY2EyN2I5MmFjOGRkIgorCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBwYW5nbyBndGsrMyBtZW51LWNhY2hlIGludGx0b29sLW5hdGl2ZSBsaWJleGlmIGxpYmZtLWV4dHJhIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL2xpYmZtLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1jaGVjay10aGUtc3RhbXAtZmlsZS10aGF0LWluZGljYXRlcy1pZi13ZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLWxpYnJhcnktcGF0aC10by1hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMmEwMjQ3MTRkNTFlMGQzN2FmYzdiZDU5NmE0NGYzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOGQwNmY3OTk2Y2UxY2Y4OTQ3ZGY2ZTEwNmJjMDMzOGM2YWUwYzQxMzhjMzE2ZjI1MDFmNmY2ZjQzNWM3YzcyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCisKK2RvX2NvbmZpZ3VyZVtkaXJzXSA9KyAiJHtTfS9tNCIKKworUEFDS0FHRVMgPSsgImxpYmZtLWd0ayIKK1BBQ0tBR0VTICs9ICIke1BOfS1taW1lIgorRklMRVNfbGliZm0tZ3RrID0gIiBcCisgICAgJHtsaWJkaXJ9L2xpYmZtLWd0aypzby4qIFwKKyAgICAke2xpYmRpcn0vbGliZm0vbW9kdWxlcy9ndGsqIFwKKyAgICAke2JpbmRpcn0vbGliZm0tcHJlZi1hcHBzIFwKKyAgICAke2JpbmRpcn0vbHhzaG9ydGN1dCBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbGliZm0tcHJlZi1hcHBzLmRlc2t0b3AgXAorICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2x4c2hvcnRjdXQuZGVza3RvcCBcCisgICAgJHtkYXRhZGlyfS9saWJmbS9pbWFnZXMvZm9sZGVyLnBuZyBcCisgICAgJHtkYXRhZGlyfS9saWJmbS9pbWFnZXMvdW5rbm93bi5wbmcgXAorICAgICR7ZGF0YWRpcn0vbGliZm0vdWkvKi51aSBcCisiCitGSUxFU18ke1BOfS1taW1lID0gIiR7ZGF0YWRpcn0vbWltZS8iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIHJlbW92ZSBmaWxlcyB3aGljaCBhcmUgcGFydCBvZiBsaWJmbS1leHRyYQorICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtLTEuMC9mbS14bWwtZmlsZS5oCisgICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLXZlcnNpb24uaAorICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmZtLTEuMC9mbS1leHRyYS5oCisgICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0KKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJmbS1leHRyYS5wYworICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vbGliZm0tZXh0cmEuc28qCisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5hCisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5sYQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTgtMDQ5NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL0NWRS0yMDE4LTA0OTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNmJkM2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTgtMDQ5NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLUZyb20gOTAxMGQxNTc2ZTI3OGE0Mjc0YWQzZjRhYTE1Nzc2YzI4ZjZiYTk2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogV2VkLCAxMyBKdW4gMjAxOCAxNToyODo1OCArMDkwMAotU3ViamVjdDogW1BBVENIXSBlY2M6IEFkZCBibGluZGluZyBmb3IgRUNEU0EuCi0KLSogY2lwaGVyL2VjYy1lY2RzYS5jIChfZ2NyeV9lY2NfZWNkc2Ffc2lnbik6IEJsaW5kIHNlY3JldCBEIHdpdGgKLXJhbmRvbWl6ZWQgbm9uY2UgQi4KLQotLS0KLQotUmVwb3J0ZWQtYnk6IEtlZWdhbiBSeWFuIDxLZWVnYW4uUnlhbkBuY2Nncm91cC50cnVzdD4KLUNWRS1pZDogQ1ZFLTIwMTgtMDQ5NQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LmdudXBnLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1saWJnY3J5cHQuZ2l0O2E9Y29tbWl0O2g9OTAxMGQxNTc2ZTI3OGE0Mjc0YWQzZjRhYTE1Nzc2YzI4ZjZiYTk2NV0KLQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBjaXBoZXIvZWNjLWVjZHNhLmMgfCAyMCArKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2VjYy1lY2RzYS5jIGIvY2lwaGVyL2VjYy1lY2RzYS5jCi1pbmRleCAxNDg0ODMwYi4uMTQwZThjMDkgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvZWNjLWVjZHNhLmMKLSsrKyBiL2NpcGhlci9lY2MtZWNkc2EuYwotQEAgLTUwLDYgKzUwLDggQEAgX2djcnlfZWNjX2VjZHNhX3NpZ24gKGdjcnlfbXBpX3QgaW5wdXQsIEVDQ19zZWNyZXRfa2V5ICpza2V5LAotICAgY29uc3Qgdm9pZCAqYWJ1ZjsKLSAgIHVuc2lnbmVkIGludCBhYml0cywgcWJpdHM7Ci0gICBtcGlfZWNfdCBjdHg7Ci0rICBnY3J5X21waV90IGI7ICAgICAgICAgICAgICAgIC8qIFJhbmRvbSBudW1iZXIgbmVlZGVkIGZvciBibGluZGluZy4gICovCi0rICBnY3J5X21waV90IGJpOyAgICAgICAgICAgICAgIC8qIG11bHRpcGxpY2F0aXZlIGludmVyc2Ugb2YgQi4gICAgICAgICovCi0gCi0gICBpZiAoREJHX0NJUEhFUikKLSAgICAgbG9nX21waWR1bXAgKCJlY2RzYSBzaWduIGhhc2ggICIsIGlucHV0ICk7Ci1AQCAtNjEsNiArNjMsMTUgQEAgX2djcnlfZWNjX2VjZHNhX3NpZ24gKGdjcnlfbXBpX3QgaW5wdXQsIEVDQ19zZWNyZXRfa2V5ICpza2V5LAotICAgaWYgKHJjKQotICAgICByZXR1cm4gcmM7Ci0gCi0rICBiICA9IG1waV9zbmV3IChxYml0cyk7Ci0rICBiaSA9IG1waV9zbmV3IChxYml0cyk7Ci0rICBkbwotKyAgICB7Ci0rICAgICAgX2djcnlfbXBpX3JhbmRvbWl6ZSAoYiwgcWJpdHMsIEdDUllfV0VBS19SQU5ET00pOwotKyAgICAgIG1waV9tb2QgKGIsIGIsIHNrZXktPkUubik7Ci0rICAgIH0KLSsgIHdoaWxlICghbXBpX2ludm0gKGJpLCBiLCBza2V5LT5FLm4pKTsKLSsKLSAgIGsgPSBOVUxMOwotICAgZHIgPSBtcGlfYWxsb2MgKDApOwotICAgc3VtID0gbXBpX2FsbG9jICgwKTsKLUBAIC0xMTUsOCArMTI2LDExIEBAIF9nY3J5X2VjY19lY2RzYV9zaWduIChnY3J5X21waV90IGlucHV0LCBFQ0Nfc2VjcmV0X2tleSAqc2tleSwKLSAgICAgICAgIH0KLSAgICAgICB3aGlsZSAoIW1waV9jbXBfdWkgKHIsIDApKTsKLSAKLS0gICAgICBtcGlfbXVsbSAoZHIsIHNrZXktPmQsIHIsIHNrZXktPkUubik7IC8qIGRyID0gZCpyIG1vZCBuICAqLwotLSAgICAgIG1waV9hZGRtIChzdW0sIGhhc2gsIGRyLCBza2V5LT5FLm4pOyAgLyogc3VtID0gaGFzaCArIChkKnIpIG1vZCBuICAqLwotKyAgICAgIG1waV9tdWxtIChkciwgYiwgc2tleS0+ZCwgc2tleS0+RS5uKTsKLSsgICAgICBtcGlfbXVsbSAoZHIsIGRyLCByLCBza2V5LT5FLm4pOyAgICAgIC8qIGRyID0gZCpyIG1vZCBuIChibGluZGVkIHdpdGggYikgKi8KLSsgICAgICBtcGlfbXVsbSAoc3VtLCBiLCBoYXNoLCBza2V5LT5FLm4pOwotKyAgICAgIG1waV9hZGRtIChzdW0sIHN1bSwgZHIsIHNrZXktPkUubik7ICAgLyogc3VtID0gaGFzaCArIChkKnIpIG1vZCBuICAoYmxpbmRlZCB3aXRoIGIpICovCi0rICAgICAgbXBpX211bG0gKHN1bSwgYmksIHN1bSwgc2tleS0+RS5uKTsgICAvKiB1bmRvIGJsaW5kaW5nIGJ5IGJeLTEgKi8KLSAgICAgICBtcGlfaW52bSAoa18xLCBrLCBza2V5LT5FLm4pOyAgICAgICAgIC8qIGtfMSA9IGteKC0xKSBtb2QgbiAgKi8KLSAgICAgICBtcGlfbXVsbSAocywga18xLCBzdW0sIHNrZXktPkUubik7ICAgIC8qIHMgPSBrXigtMSkqKGhhc2grKGQqcikpIG1vZCBuICovCi0gICAgIH0KLUBAIC0xMjksNiArMTQzLDggQEAgX2djcnlfZWNjX2VjZHNhX3NpZ24gKGdjcnlfbXBpX3QgaW5wdXQsIEVDQ19zZWNyZXRfa2V5ICpza2V5LAotICAgICB9Ci0gCi0gIGxlYXZlOgotKyAgbXBpX2ZyZWUgKGIpOwotKyAgbXBpX2ZyZWUgKGJpKTsKLSAgIF9nY3J5X21waV9lY19mcmVlIChjdHgpOwotICAgcG9pbnRfZnJlZSAoJkkpOwotICAgbXBpX2ZyZWUgKHgpOwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDAzNmM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoaWMgbGlicmFyeSBiYXNlZCBvbiB0aGUgY29kZSBmcm9tIEdudVBHIgotSE9NRVBBR0UgPSAiaHR0cDovL2RpcmVjdG9yeS5mc2Yub3JnL3Byb2plY3QvbGliZ2NyeXB0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgotU0VDVElPTiA9ICJsaWJzIgotCi0jIGhlbHBlciBwcm9ncmFtIGdjcnlwdHJuZCBhbmQgZ2V0cmFuZG9tIGFyZSB1bmRlciBHUEwsIHJlc3QgTEdQTAotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tZGV2ID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfZHVtcHNleHAtZGV2ID0gIkdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJnY3J5cHQvbGliZ2NyeXB0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTA0OTUucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImNmYjBiNWM3OWVhYjA3Njg2YjY4OTgxNjBhNDA3MTM5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MDY0Y2FlNzU1ODE0NGIxM2VmMGViODcwOTM0MTIzODBlZmExNmM0ZWUzMGFkMTJlY2I1NDg4NmE1MjRjMDciCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKLVBBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLX0KLQotIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLX0KLQotUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKLUZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VmYTgzNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMy5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKK0hPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKK1NFQ1RJT04gPSAibGlicyIKKworIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFUzttZDU9ODQwZTNiY2I3NTRlNTA0NmZmZWRhNzYxOTAzNGNiZDgiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjMxMzljMjQwMmU4NDQ5ODVhNjdmYjI4OGE5MzA1MzRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2ZWM5MGJlMDM2NzQ3NjAyZjJiNDhmOTgzMTIzNjFhOTE4MGM5N2M2OGE2OTBhNWYzNzZmYTBmNjdkMGFmN2MiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKK1BBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKK30KKworIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KK30KKworUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKK0ZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1zeXNjZmctU3VwcG9ydC1BUkMtQ1BVcy1hbmQtc2ltcGxpZnktYWxpYXNpbmctdGFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1zeXNjZmctU3VwcG9ydC1BUkMtQ1BVcy1hbmQtc2ltcGxpZnktYWxpYXNpbmctdGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiMGNlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAxLXN5c2NmZy1TdXBwb3J0LUFSQy1DUFVzLWFuZC1zaW1wbGlmeS1hbGlhc2luZy10YWJsZS5wYXRjaApAQCAtMCwwICsxLDI5OCBAQAorRnJvbSBkNGZkNjk3NTY3MTQ3NzcyMTkzNjA2MDc3MWFhNGQ3ZDA3ZmIwOTEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2VybmVyIEtvY2ggPHdrQGdudXBnLm9yZz4KK0RhdGU6IFR1ZSwgMTggU2VwIDIwMTggMTQ6NTQ6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCBsaWJncGctZXJyb3JdIHN5c2NmZzogU3VwcG9ydCBBUkMgQ1BVcyBhbmQgc2ltcGxpZnkgYWxpYXNpbmcKKyB0YWJsZS4KKworKiBzcmMvbWtoZWFkZXIuYyAoeG1hbGxvYyk6IE5ldy4KKyh4c3RyZHVwKTogSW1wbGVtZW50IHVzaW5nIHhtYWxsb2MuCisoY2Fub25faG9zdF90cmlwbGV0KTogQWRkIHN1cHBvcnIgZm9yIGFyYyBDUFUuICBBZGp1c3QgYWxpYXMgdGFibGUgdG8KK2Fsc28gYWxpYXMgKi1wYy0qLiAgUmVuYW1lIGlibSB0byB1bmtub3duLiBBZGQgaW50ZXJuYWwgYXJnLiAgQWRkCit1bmtub3duIHZlbmRvciBoYWNrLgorKG1haW4pOiBOZXcgbW9kZSB0byBqdXN0IHByaW50IHRoZSBjYW5vbmljYWxpemVkIGZvcm0uCisqIHNyYy9NYWtlZmlsZS5hbSAobG9ja19vYmpfcHViKTogcy8tKHBjfGlibSktLy11bmtub3duLy4gIEFsc28gcmVuYW1lCitmaWxlcyBhY2NvcmRpbmdseS4KKy0tCisKK2NvbmZpZy5zdWIgZG9lcyBubyByZWFsIGFsaWFzaW5nIGFuZCB0aHVzIHdlIHdvdWxkIG5lZWQgdG8gYWRkIHNldmVyYWwKK3ZlbmRvcnMgdG8gdGhlIGFsaXNpbmcgdGFibGVzIGRlc3BpdGUgdGhhdCB0aGlzIGhhcyBubyB0ZWNobmljYWwKK21lYW5kaW5nLiAgSW5zdGVhZCB3ZSBub3cgcmVwbGFjZSB0aGUgdmVuZG9yIHdpdGggInVua25vd24iIGZvciB0aGUKKzQtcGFydC0idHJpcGxldHMiLiAgVGhpcyBjaGFuZ2Ugd2lsbCBtYWtlIG1haW50ZW5hY2UgZWFzaWVyLgorCitTaWduZWQtb2ZmLWJ5OiBXZXJuZXIgS29jaCA8d2tAZ251cGcub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cDovL2dpdC5nbnVwZy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9bGliZ3BnLWVycm9yLmdpdDthPWNvbW1pdDtoPTQ4YzhmOGRkZmM4MCBdCistLS0KKyBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKy0tCisgc3JjL21raGVhZGVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOTIgKysrKysrKysrKysrKysrKy0tLQorIC4uLi1nbnUuaCA9PiBsb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWdudS5ofSB8ICAwCisgLi4uIGxvY2stb2JqLXB1Yi5pNjg2LXVua25vd24ta2ZyZWVic2QtZ251Lmh9IHwgIDAKKyAuLi4gPT4gbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1saW51eC1nbnUuaH0gfCAgMAorIC4uLj0+IGxvY2stb2JqLXB1Yi5zMzkweC11bmtub3duLWxpbnV4LWdudS5ofSB8ICAwCisgLi4ub2NrLW9iai1wdWIueDg2XzY0LXVua25vd24ta2ZyZWVic2QtZ251Lmh9IHwgIDAKKyAuLi4+IGxvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnUuaH0gfCAgMAorIC4uLm9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LWdudXgzMi5ofSB8ICAwCisgLi4uIGxvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1tdXNsLmh9IHwgIDAKKyAxMCBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKyByZW5hbWUgc3JjL3N5c2NmZy97bG9jay1vYmotcHViLmk2ODYtcGMtZ251LmggPT4gbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1nbnUuaH0gKDEwMCUpCisgcmVuYW1lIHNyYy9zeXNjZmcve2xvY2stb2JqLXB1Yi5pNjg2LXBjLWtmcmVlYnNkLWdudS5oID0+IGxvY2stb2JqLXB1Yi5pNjg2LXVua25vd24ta2ZyZWVic2QtZ251Lmh9ICgxMDAlKQorIHJlbmFtZSBzcmMvc3lzY2ZnL3tsb2NrLW9iai1wdWIuaTY4Ni1wYy1saW51eC1nbnUuaCA9PiBsb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWxpbnV4LWdudS5ofSAoMTAwJSkKKyByZW5hbWUgc3JjL3N5c2NmZy97bG9jay1vYmotcHViLnMzOTB4LWlibS1saW51eC1nbnUuaCA9PiBsb2NrLW9iai1wdWIuczM5MHgtdW5rbm93bi1saW51eC1nbnUuaH0gKDEwMCUpCisgcmVuYW1lIHNyYy9zeXNjZmcve2xvY2stb2JqLXB1Yi54ODZfNjQtcGMta2ZyZWVic2QtZ251LmggPT4gbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWtmcmVlYnNkLWdudS5ofSAoMTAwJSkKKyByZW5hbWUgc3JjL3N5c2NmZy97bG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1nbnUuaCA9PiBsb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251Lmh9ICgxMDAlKQorIHJlbmFtZSBzcmMvc3lzY2ZnL3tsb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudXgzMi5oID0+IGxvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnV4MzIuaH0gKDEwMCUpCisgcmVuYW1lIHNyYy9zeXNjZmcve2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtbXVzbC5oID0+IGxvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1tdXNsLmh9ICgxMDAlKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCA0Mjk5OGU0NmEzYmMuLjhlYzU4MmVmOTlmYiAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNTIsOSArNTIsOSBAQCBsb2NrX29ial9wdWIgPSBcCisgCXN5c2NmZy9sb2NrLW9iai1wdWIuYXJtLWFwcGxlLWRhcndpbi5oICAgICAgICAgICAgICBcCisgICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLmhwcGEtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICAgXAorIAlzeXNjZmcvbG9jay1vYmotcHViLmkzODYtYXBwbGUtZGFyd2luLmggICAgICAgICAgICAgXAorLSAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXBjLWdudS5oICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni1wYy1rZnJlZWJzZC1nbnUuaCAgICAgICAgICBcCistICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMtbGludXgtZ251LmggICAgICAgICAgICAgXAorKyAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tZ251LmggICAgICAgICAgICAgIFwKKysgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWtmcmVlYnNkLWdudS5oICAgICBcCisrICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICAgXAorICAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5tNjhrLXVua25vd24tbGludXgtZ251LmggICAgICAgIFwKKyAgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIubWlwcy11bmtub3duLWxpbnV4LWdudS5oICAgICAgICBcCisgICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLm1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQuaCBcCitAQCAtNjYsMTYgKzY2LDE2IEBAIGxvY2tfb2JqX3B1YiA9IFwKKyAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oIFwKKyAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5wb3dlcnBjLXVua25vd24tbGludXgtZ251c3BlLmggIFwKKyAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5yaXNjdjY0LXVua25vd24tbGludXgtZ251LmggICAgIFwKKy0gICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuczM5MHgtaWJtLWxpbnV4LWdudS5oICAgICAgICAgICBcCisrICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLnMzOTB4LXVua25vd24tbGludXgtZ251LmggICAgICAgXAorICAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5zaDMtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICAgIFwKKyAgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuc2g0LXVua25vd24tbGludXgtZ251LmggICAgICAgICBcCisgICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLnNwYXJjLXVua25vd24tbGludXgtZ251LmggICAgICAgXAorICAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5zcGFyYzY0LXVua25vd24tbGludXgtZ251LmggICAgIFwKKyAJc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtYXBwbGUtZGFyd2luLmggICAgICAgICAgIFwKKy0gICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWtmcmVlYnNkLWdudS5oICAgICAgICBcCistICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1nbnUuaCAgICAgICAgICAgXAorLSAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtZ251eDMyLmggICAgICAgIFwKKy0gICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LW11c2wuaCAgICAgICAgICBcCisrICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWtmcmVlYnNkLWdudS5oICAgXAorKyAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnUuaCAgICAgIFwKKysgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251eDMyLmggICBcCisrICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LW11c2wuaCAgICAgXAorIAlzeXNjZmcvbG9jay1vYmotcHViLnRpbGVneC11bmtub3duLWxpbnV4LWdudS5oICAgICAgXAorIAlzeXNjZmcvbG9jay1vYmotcHViLmlhNjQtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICAgXAorIAlzeXNjZmcvbG9jay1vYmotcHViLm1pbmd3MzIuaAorZGlmZiAtLWdpdCBhL3NyYy9ta2hlYWRlci5jIGIvc3JjL21raGVhZGVyLmMKK2luZGV4IDJmYzVmYWRhNjZhNC4uN2EzOGExYmVjMWE0IDEwMDY0NAorLS0tIGEvc3JjL21raGVhZGVyLmMKKysrKyBiL3NyYy9ta2hlYWRlci5jCitAQCAtNTEsMTcgKzUxLDI3IEBAIHhmcmVlICh2b2lkICphKQorIAorIAorIHN0YXRpYyBjaGFyICoKKy14c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpCisreG1hbGxvYyAoc2l6ZV90IG4pCisgeworICAgY2hhciAqcDsKKy0gIHNpemVfdCBsZW4gPSBzdHJsZW4gKHN0cmluZykgKyAxOworIAorLSAgcCA9IG1hbGxvYyAobGVuKTsKKysgIHAgPSBtYWxsb2MgKG4pOworICAgaWYgKCFwKQorICAgICB7CisgICAgICAgZnB1dHMgKFBHTSAiOiBvdXQgb2YgY29yZVxuIiwgc3RkZXJyKTsKKyAgICAgICBleGl0ICgxKTsKKyAgICAgfQorKyAgcmV0dXJuIHA7CisrfQorKworKworK3N0YXRpYyBjaGFyICoKKyt4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpCisreworKyAgY2hhciAqcDsKKysgIHNpemVfdCBsZW4gPSBzdHJsZW4gKHN0cmluZykgKyAxOworKworKyAgcCA9IHhtYWxsb2MgKGxlbik7CisgICBtZW1jcHkgKHAsIHN0cmluZywgbGVuKTsKKyAgIHJldHVybiBwOworIH0KK0BAIC02OSwyMyArNzksMzEgQEAgeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKQorIAorIC8qIFJldHVybiBhIG1hbGxvY2VkIHN0cmluZyB3aXRoIFRSSVBMRVQuICBJZiBUUklQTEVUIGhhcyBhbiBhbGlhcworICAgIHJldHVybiB0aGF0IGluc3RlYWQuICBJbiBnZW5lcmFsIGJ1aWxkLWF1eC9jb25maWcuc3ViIHNob3VsZCBkbyB0aGUKKy0gICBhbGlhc2luZyBidXQgc29tZSByZXR1cm5lZCB0cmlwbGV0cyBhcmUgYW55d2F5IGlkZW50aWNhbCBhbmQgdGh1cyB3ZQorLSAgIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIG1hcCBpdCB0byB0aGUgY2Fub25pY2FsIGZvcm0uICAqLworKyAgIGFsaWFzaW5nIGJ1dCBzb21lIHJldHVybmVkIHRyaXBsZXRzIGFyZSBhbnl3YXkgaWRlbnRpY2FsIGFuZCB0aHVzCisrICAgd2UgdXNlIHRoaXMgZnVuY3Rpb24gdG8gbWFwIGl0IHRvIHRoZSBjYW5vbmljYWwgZm9ybS4KKysgICBOT19WRU5ET1JfSEFDSyBpcyBmb3IgaW50ZXJuYWwgdXNlOyBjYWxsZXIgbXVzdCBjYWxsIHdpdGggMC4gKi8KKyBzdGF0aWMgY2hhciAqCistY2Fub25faG9zdF90cmlwbGV0IChjb25zdCBjaGFyICp0cmlwbGV0KQorK2Nhbm9uX2hvc3RfdHJpcGxldCAoY29uc3QgY2hhciAqdHJpcGxldCwgaW50IG5vX3ZlbmRvcl9oYWNrKQorIHsKKyAgIHN0cnVjdCB7CisgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgIGNvbnN0IGNoYXIgKmFsaWFzOworICAgfSB0YmxbXSA9IHsKKy0gICAgeyJpNDg2LXBjLWxpbnV4LWdudSIsICJpNjg2LXBjLWxpbnV4LWdudSIgfSwKKysgICAgeyJpNDg2LXBjLWxpbnV4LWdudSIsICJpNjg2LXVua25vd24tbGludXgtZ251IiB9LAorICAgICB7Imk1ODYtcGMtbGludXgtZ251IiB9LAorLSAgICB7Imk0ODYtcGMtZ251IiwgImk2ODYtcGMtZ251In0sCisrICAgIHsiaTY4Ni1wYy1saW51eC1nbnUiIH0sCisrICAgIHsiYXJjLW9lLWxpbnV4LXVjbGliYyIgfSwgLyogT3RoZXIgQ1BVIGJ1dCBzYW1lIHN0cnVjdC4gICovCisrCisrICAgIHsiaTQ4Ni1wYy1nbnUiLCAiaTY4Ni11bmtub3duLWdudSJ9LAorICAgICB7Imk1ODYtcGMtZ251In0sCistICAgIHsiaTQ4Ni1wYy1rZnJlZWJzZC1nbnUiLCAiaTY4Ni1wYy1rZnJlZWJzZC1nbnUifSwKKysgICAgeyJpNjg2LXBjLWdudSJ9LAorKworKyAgICB7Imk0ODYtcGMta2ZyZWVic2QtZ251IiwgImk2ODYtdW5rbm93bi1rZnJlZWJzZC1nbnUifSwKKyAgICAgeyJpNTg2LXBjLWtmcmVlYnNkLWdudSJ9LAorKyAgICB7Imk2ODYtcGMta2ZyZWVic2QtZ251In0sCisgCistICAgIHsieDg2XzY0LXBjLWxpbnV4LWdudWhhcmRlbmVkMSIsICJ4ODZfNjQtcGMtbGludXgtZ251IiB9LAorKyAgICB7Ing4Nl82NC1wYy1saW51eC1nbnVoYXJkZW5lZDEiLCAieDg2XzY0LXVua25vd24tbGludXgtZ251IiB9LAorKyAgICB7Ing4Nl82NC1wYy1saW51eC1nbnUiIH0sCisgCisgICAgIHsicG93ZXJwYy11bmtub3duLWxpbnV4LWdudXNwZSIsICJwb3dlcnBjLXVua25vd24tbGludXgtZ251IiB9LAorIAorQEAgLTk4LDYgKzExNiw3IEBAIGNhbm9uX2hvc3RfdHJpcGxldCAoY29uc3QgY2hhciAqdHJpcGxldCkKKyAgIH07CisgICBpbnQgaTsKKyAgIGNvbnN0IGNoYXIgKmxhc3RhbGlhcyA9IE5VTEw7CisrICBjb25zdCBjaGFyICpzOworIAorICAgZm9yIChpPTA7IHRibFtpXS5uYW1lOyBpKyspCisgICAgIHsKK0BAIC0xMTAsNiArMTI5LDM2IEBAIGNhbm9uX2hvc3RfdHJpcGxldCAoY29uc3QgY2hhciAqdHJpcGxldCkKKyAgICAgICAgICAgcmV0dXJuIHhzdHJkdXAgKGxhc3RhbGlhcyk7CisgICAgICAgICB9CisgICAgIH0KKysgIGZvciAoaT0wLCBzPXRyaXBsZXQ7ICpzOyBzKyspCisrICAgIGlmICgqcyA9PSAnLScpCisrICAgICAgaSsrOworKyAgaWYgKGkgPiAyICYmICFub192ZW5kb3JfaGFjaykKKysgICAgeworKyAgICAgIC8qIFdlIGhhdmUgYSA0IHBhcnQgInRyaXBsZXQiOiBDUFUtVkVORE9SLUtFUk5FTC1TWVNURU0gd2hlcmUKKysgICAgICAgKiB0aGUgbGFzdCB0d28gcGFydHMgcmVwbGFjZSB0aGUgT1MgcGFydCBvZiBhIHJlYWwgdHJpcGxldC4KKysgICAgICAgKiBUaGUgVkVORE9SIHBhcnQgaXMgdGhlbiBpbiBnZW5lcmFsIHVzZWxlc3MgYmVjYXVzZQorKyAgICAgICAqIEtFUk5FTC1TWVNURU0gaXMgc3BlY2lmaWMgZW5vdWdoLiAgV2Ugbm93IGRvIGEgc2Vjb25kIHBhc3MgYnkKKysgICAgICAgKiByZXBsYWNpbmcgVkVORE9SIHdpdGggInVua25vd24iLiAgKi8KKysgICAgICBjaGFyICpwOworKyAgICAgIGNoYXIgKmJ1ZiA9IHhtYWxsb2MgKHN0cmxlbiAodHJpcGxldCkgKyA3ICsgMSk7CisrCisrICAgICAgZm9yIChwPWJ1ZixzPXRyaXBsZXQsaT0wOyAqczsgcysrKQorKyAgICAgICAgeworKyAgICAgICAgICAqcCsrID0gKnM7CisrICAgICAgICAgIGlmICgqcyA9PSAnLScgJiYgKytpID09IDEpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgbWVtY3B5IChwLCAidW5rbm93bi0iLDgpOworKyAgICAgICAgICAgICAgcCArPSA4OworKyAgICAgICAgICAgICAgZm9yIChzKys7ICpzICE9ICctJzsgcysrKQorKyAgICAgICAgICAgICAgICA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICpwID0gMDsKKysgICAgICBwID0gY2Fub25faG9zdF90cmlwbGV0IChidWYsIDEpOworKyAgICAgIHhmcmVlIChidWYpOworKyAgICAgIHJldHVybiBwOworKyAgICB9CisrCisgICByZXR1cm4geHN0cmR1cCAodHJpcGxldCk7CisgfQorIAorQEAgLTU1OCw3ICs2MDcsNyBAQCB3cml0ZV9zcGVjaWFsIChjb25zdCBjaGFyICpmbmFtZSwgaW50IGxuciwgY29uc3QgY2hhciAqdGFnKQorIGludAorIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyB7CistICBGSUxFICpmcDsKKysgIEZJTEUgKmZwID0gTlVMTDsKKyAgIGNoYXIgbGluZVtMSU5FU0laRV07CisgICBpbnQgbG5yID0gMDsKKyAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqczsKK0BAIC01NzEsMTEgKzYyMCwyMiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgYXJnYy0tOyBhcmd2Kys7CisgICAgIH0KKyAKKy0gIGlmIChhcmdjICE9IDYpCisrICBpZiAoYXJnYyA9PSAxKQorKyAgICB7CisrICAgICAgLyogUHJpbnQganVzdCB0aGUgY2Fub25pY2FsaXplZCBob3N0IHRyaXBsZXQuICAqLworKyAgICAgIGhvc3RfdHJpcGxldCA9IGNhbm9uX2hvc3RfdHJpcGxldCAoYXJndlswXSwgMCk7CisrICAgICAgcHJpbnRmICgiJXNcbiIsIGhvc3RfdHJpcGxldCk7CisrICAgICAgZ290byBsZWF2ZTsKKysgICAgfQorKyAgZWxzZSBpZiAoYXJnYyA9PSA2KQorKyAgICA7IC8qIFN0YW5kYXJkIG9wZXJhdGlvbi4gICovCisrICBlbHNlCisgICAgIHsKKyAgICAgICBmcHV0cyAoInVzYWdlOiAiIFBHTQorICAgICAgICAgICAgICAiIGhvc3Rfb3MgaG9zdF90cmlwbGV0IHRlbXBsYXRlLmggY29uZmlnLmgiCistICAgICAgICAgICAgICIgdmVyc2lvbiB2ZXJzaW9uX251bWJlclxuIiwKKysgICAgICAgICAgICAgIiB2ZXJzaW9uIHZlcnNpb25fbnVtYmVyXG4iCisrICAgICAgICAgICAgICIgICAgICAgIiBQR00KKysgICAgICAgICAgICAgIiBob3N0X3RyaXBsZXRcbiIsCisgICAgICAgICAgICAgIHN0ZGVycik7CisgICAgICAgcmV0dXJuIDE7CisgICAgIH0KK0BAIC01ODYsNyArNjQ2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgaGRyX3ZlcnNpb24gPSBhcmd2WzRdOworICAgaGRyX3ZlcnNpb25fbnVtYmVyID0gYXJndls1XTsKKyAKKy0gIGhvc3RfdHJpcGxldCA9IGNhbm9uX2hvc3RfdHJpcGxldCAoaG9zdF90cmlwbGV0X3Jhdyk7CisrICBob3N0X3RyaXBsZXQgPSBjYW5vbl9ob3N0X3RyaXBsZXQgKGhvc3RfdHJpcGxldF9yYXcsIDApOworIAorICAgc3JjZGlyID0gbWFsbG9jIChzdHJsZW4gKGZuYW1lKSArIDIgKyAxKTsKKyAgIGlmICghc3JjZGlyKQorQEAgLTY3NywxMyArNzM3LDE1IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAiRW5kOlxuIgorICAgICAgICAgICIqL1xuIiwgc3Rkb3V0KTsKKyAKKysgbGVhdmU6CisgICBpZiAoZmVycm9yIChzdGRvdXQpKQorICAgICB7CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCBQR00gIjogZXJyb3Igd3JpdGluZyB0byBzdGRvdXQ6ICVzXG4iLCBzdHJlcnJvciAoZXJybm8pKTsKKyAgICAgICByZXR1cm4gMTsKKyAgICAgfQorIAorLSAgZmNsb3NlIChmcCk7CisrICBpZiAoZnApCisrICAgIGZjbG9zZSAoZnApOworIAorICAgeGZyZWUgKGhvc3RfdHJpcGxldCk7CisgICByZXR1cm4gMDsKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXBjLWdudS5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWdudS5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMtZ251LmgKK3JlbmFtZSB0byBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tZ251LmgKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXBjLWtmcmVlYnNkLWdudS5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWtmcmVlYnNkLWdudS5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMta2ZyZWVic2QtZ251LmgKK3JlbmFtZSB0byBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24ta2ZyZWVic2QtZ251LmgKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXBjLWxpbnV4LWdudS5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWxpbnV4LWdudS5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMtbGludXgtZ251LmgKK3JlbmFtZSB0byBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tbGludXgtZ251LmgKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5zMzkweC1pYm0tbGludXgtZ251LmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5zMzkweC11bmtub3duLWxpbnV4LWdudS5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLnMzOTB4LWlibS1saW51eC1nbnUuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLnMzOTB4LXVua25vd24tbGludXgtZ251LmgKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMta2ZyZWVic2QtZ251LmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1rZnJlZWJzZC1nbnUuaAorc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMta2ZyZWVic2QtZ251LmgKK3JlbmFtZSB0byBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1rZnJlZWJzZC1nbnUuaAorZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1nbnUuaCBiL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LWdudS5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1nbnUuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LWdudS5oCitkaWZmIC0tZ2l0IGEvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudXgzMi5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251eDMyLmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudXgzMi5oCityZW5hbWUgdG8gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251eDMyLmgKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtbXVzbC5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtbXVzbC5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1tdXNsLmgKK3JlbmFtZSB0byBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1tdXNsLmgKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAyLXN5c2NmZy1BZGQtc3VwcG9ydC1mb3ItYXJjLXVua25vd24tbGludXgtZ251LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDItc3lzY2ZnLUFkZC1zdXBwb3J0LWZvci1hcmMtdW5rbm93bi1saW51eC1nbnUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk3NjUyZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAyLXN5c2NmZy1BZGQtc3VwcG9ydC1mb3ItYXJjLXVua25vd24tbGludXgtZ251LnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYWU2YTNmMjAzNDVkYWM0YjlkYWFiOGMzOWFjMmQzZmIzZjJjMjFlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdlcm5lciBLb2NoIDx3a0BnbnVwZy5vcmc+CitEYXRlOiBGcmksIDIxIFNlcCAyMDE4IDE0OjM3OjIxICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggTGliZ3BnLWVycm9yXSBzeXNjZmc6IEFkZCBzdXBwb3J0IGZvciBhcmMtdW5rbm93bi1saW51eC1nbnUKKworKiBzcmMvbWtoZWFkZXIuYyAoY2Fub25faG9zdF90cmlwbGV0KTogQWRkIHRvIHRhYmxlLgorLS0KKworTm90ZSB0aGF0IHVua25vd24gaW4gdGhlIGFib3ZlIHRyaXBsZXQgaXMgYWN0dWFsbHkgYSB3aWxkY2FyZCBmb3IgNAorcGFydCB0cmlwbGV0cy4KKworU2lnbmVkLW9mZi1ieTogV2VybmVyIEtvY2ggPHdrQGdudXBnLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5nbnVwZy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9bGliZ3BnLWVycm9yLmdpdDthPWNvbW1pdDtoPWY0ZjBkYTc0ZjUyNmQ3ZTM1Y2VkYmMyZTkzNDU0ZGY2NDQwZGJmYTVdCistLS0KKyBzcmMvbWtoZWFkZXIuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21raGVhZGVyLmMgYi9zcmMvbWtoZWFkZXIuYworaW5kZXggN2EzOGExYmVjMWE0Li5hNDg2NmU5NmVmNDMgMTAwNjQ0CistLS0gYS9zcmMvbWtoZWFkZXIuYworKysrIGIvc3JjL21raGVhZGVyLmMKK0BAIC05Miw3ICs5Miw4IEBAIGNhbm9uX2hvc3RfdHJpcGxldCAoY29uc3QgY2hhciAqdHJpcGxldCwgaW50IG5vX3ZlbmRvcl9oYWNrKQorICAgICB7Imk0ODYtcGMtbGludXgtZ251IiwgImk2ODYtdW5rbm93bi1saW51eC1nbnUiIH0sCisgICAgIHsiaTU4Ni1wYy1saW51eC1nbnUiIH0sCisgICAgIHsiaTY4Ni1wYy1saW51eC1nbnUiIH0sCistICAgIHsiYXJjLW9lLWxpbnV4LXVjbGliYyIgfSwgLyogT3RoZXIgQ1BVIGJ1dCBzYW1lIHN0cnVjdC4gICovCisrICAgIHsiYXJjLW9lLWxpbnV4LWdudSIgICAgfSwgLyogT3RoZXIgQ1BVIGJ1dCBzYW1lIHN0cnVjdC4gICovCisrICAgIHsiYXJjLW9lLWxpbnV4LXVjbGliYyIgfSwgLyogYW5kIHVjbGliYyBpcyBhbHNvIHRoZSBzYW1lLiAgKi8KKyAKKyAgICAgeyJpNDg2LXBjLWdudSIsICJpNjg2LXVua25vd24tZ251In0sCisgICAgIHsiaTU4Ni1wYy1nbnUifSwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci9wa2djb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvcGtnY29uZmlnLnBhdGNoCmluZGV4IDlmZmVlZGIuLjMwNjY2MTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci9wa2djb25maWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL3BrZ2NvbmZpZy5wYXRjaApAQCAtMSwxNSArMSwyNiBAQAotCi0jCi0jIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5tbi1sb2dpc3Rpay5kZS91bnN1cHBvcnRlZC9weGEyNTAvcGF0Y2hlcgotIworRnJvbSBlYzMwOWUyMGI1YTI3ZDQyYTVmYjkxNWMzMjhkNjFlOTI0YWI1ZjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBNYXIgMjAxOCAxNToxMjoxNyArMDgwMAorU3ViamVjdDogW1BBVENIXSBzdXBwb3J0IHBrZ2NvbmZpZwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGxpYmdwZy1lcnJvci0xLjE3L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmdwZy1lcnJvci0xLjE3Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliZ3BnLWVycm9yLTEuMTcvY29uZmlndXJlLmFjCi1AQCAtNTI5LDYgKzUyOSw3IEBAIEFDX0NPTkZJR19GSUxFUyhbc3JjL01ha2VmaWxlIHRlc3RzL01ha2UKK1JlYmFzZSB0byAxLjI4CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAgMSArCisgc3JjL01ha2VmaWxlLmFtICAgICB8ICA0ICsrLQorIHNyYy9ncGctZXJyb3IubTQgICAgfCA3MSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9ncGctZXJyb3IucGMuaW4gfCAxMSArKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnLWVycm9yLnBjLmluCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGFjYTkzMDAuLmY3Nzk0ZTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTYyMSw2ICs2MjEsNyBAQCBBQ19DT05GSUdfRklMRVMoW3NyYy9NYWtlZmlsZSB0ZXN0cy9NYWtlZmlsZV0pCiAgQUNfQ09ORklHX0ZJTEVTKFtsYW5nL01ha2VmaWxlIGxhbmcvY2wvTWFrZWZpbGUgbGFuZy9jbC9ncGctZXJyb3IuYXNkXSkKICBBQ19DT05GSUdfRklMRVMoW3NyYy92ZXJzaW9uaW5mby5yYyBzcmMvZ3BnLWVycm9yLnczMi1tYW5pZmVzdF0pCiAgQUNfQ09ORklHX0ZJTEVTKFtzcmMvZ3BnLWVycm9yLWNvbmZpZ10sIFtjaG1vZCAreCBzcmMvZ3BnLWVycm9yLWNvbmZpZ10pCkBAIC0xNywzMyArMjgsMzMgQEAKICAKICBBQ19PVVRQVVQKICAKLUluZGV4OiBsaWJncGctZXJyb3ItMS4xNy9zcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJncGctZXJyb3ItMS4xNy5vcmlnL3NyYy9NYWtlZmlsZS5hbQotKysrIGxpYmdwZy1lcnJvci0xLjE3L3NyYy9NYWtlZmlsZS5hbQotQEAgLTc1LDYgKzc1LDggQEAgbm9kaXN0X2luY2x1ZGVfSEVBREVSUyA9IGdwZy1lcnJvci5oCi0gYmluX1NDUklQVFMgPSBncGctZXJyb3ItY29uZmlnCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCAyNjhjMmFiLi45NWY4NDU5IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC04Nyw2ICs4Nyw4IEBAIGJpbl9TQ1JJUFRTID0gZ3BnLWVycm9yLWNvbmZpZworIG5vZGlzdF9iaW5fU0NSSVBUUyA9IGdwZ3J0LWNvbmZpZwogIG00ZGF0YWRpciA9ICQoZGF0YWRpcikvYWNsb2NhbAotIG00ZGF0YV9EQVRBID0gZ3BnLWVycm9yLm00CisgbTRkYXRhX0RBVEEgPSBncGctZXJyb3IubTQgZ3BncnQubTQKICtwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCiArcGtnY29uZmlnX0RBVEEgPSBncGctZXJyb3IucGMKICAKICBFWFRSQV9ESVNUID0gbWtzdHJ0YWJsZS5hd2sgZXJyLXNvdXJjZXMuaC5pbiBlcnItY29kZXMuaC5pbiBcCiAgCW1rZXJybm9zLmF3ayBlcnJub3MuaW4gUkVBRE1FIFwKLUBAIC04Miw3ICs4NCw3IEBAIEVYVFJBX0RJU1QgPSBta3N0cnRhYmxlLmF3ayBlcnItc291cmNlcy4KK0BAIC05NCw3ICs5Niw3IEBAIEVYVFJBX0RJU1QgPSBta3N0cnRhYmxlLmF3ayBlcnItc291cmNlcy5oLmluIGVyci1jb2Rlcy5oLmluIFwKICAJbWtoZWFkZXIuYyBncGctZXJyb3IuaC5pbiBta3czMmVycm1hcC5jIHczMi1hZGQuaCB3MzJjZS1hZGQuaCBcCi0gCWVyci1zb3VyY2VzLmggZXJyLWNvZGVzLmggZ3BnLWVycm9yLWNvbmZpZy5pbiBncGctZXJyb3IubTQgXAorIAllcnItc291cmNlcy5oIGVyci1jb2Rlcy5oIGdwZy1lcnJvci1jb25maWcuaW4gZ3BnLWVycm9yLm00IGdwZ3J0Lm00IFwKICAJZ3BnLWVycm9yLnZlcnMgZ3BnLWVycm9yLmRlZi5pbiBcCiAtICAgICAgICB2ZXJzaW9uaW5mby5yYy5pbiBncGctZXJyb3IudzMyLW1hbmlmZXN0LmluIFwKICsgICAgICAgIHZlcnNpb25pbmZvLnJjLmluIGdwZy1lcnJvci53MzItbWFuaWZlc3QuaW4gZ3BnLWVycm9yLnBjIFwKICAJJChsb2NrX29ial9wdWIpCiAgCiAgQlVJTFRfU09VUkNFUyA9IGVyci1zb3VyY2VzLmggZXJyLWNvZGVzLmggY29kZS10by1lcnJuby5oIGNvZGUtZnJvbS1lcnJuby5oIFwKLUluZGV4OiBsaWJncGctZXJyb3ItMS4xNy9zcmMvZ3BnLWVycm9yLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZ3BnLWVycm9yLTEuMTcub3JpZy9zcmMvZ3BnLWVycm9yLm00Ci0rKysgbGliZ3BnLWVycm9yLTEuMTcvc3JjL2dwZy1lcnJvci5tNAotQEAgLTI2LDczICsyNiwxMyBAQCBkbmwgaXMgYWRkZWQgdG8gdGhlIGdwZ19jb25maWdfc2NyaXB0X3dhCitkaWZmIC0tZ2l0IGEvc3JjL2dwZy1lcnJvci5tNCBiL3NyYy9ncGctZXJyb3IubTQKK2luZGV4IDYwYzg4ZDguLjJlZjdlM2UgMTAwNjQ0CistLS0gYS9zcmMvZ3BnLWVycm9yLm00CisrKysgYi9zcmMvZ3BnLWVycm9yLm00CitAQCAtMjYsNzMgKzI2LDEzIEBAIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KICBkbmwKICBBQ19ERUZVTihbQU1fUEFUSF9HUEdfRVJST1JdLAogIFsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQpAQCAtMTMyLDEwICsxNDMsMTEgQEAKICAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKICAgIGZpCiAgICBBQ19TVUJTVChHUEdfRVJST1JfQ0ZMQUdTKQotSW5kZXg6IGxpYmdwZy1lcnJvci0xLjE3L3NyYy9ncGctZXJyb3IucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS9zcmMvZ3BnLWVycm9yLnBjLmluIGIvc3JjL2dwZy1lcnJvci5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmJjMGIxNzQKIC0tLSAvZGV2L251bGwKLSsrKyBsaWJncGctZXJyb3ItMS4xNy9zcmMvZ3BnLWVycm9yLnBjLmluCisrKysgYi9zcmMvZ3BnLWVycm9yLnBjLmluCiBAQCAtMCwwICsxLDExIEBACiArcHJlZml4PUBwcmVmaXhACiArZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QApAQCAtMTQ4LDMgKzE2MCw2IEBACiArVmVyc2lvbjogQFZFUlNJT05ACiArTGliczogLUwke2xpYmRpcn0gLWxncGctZXJyb3IKICtDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NGYwNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1TVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtlbmRsaW5lPTIzO21kNT1iZWFlMWU0NGQ4ZDVjMjY1ZDE5NDc2MDI3NjAzM2E3YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2VuZGxpbmU9MjA7bWQ1PTg3MmIyMzg5ZmU5YmFlN2ZmYjgwZDJiOTEyMjVhZmJjIgotCi0KLVNFQ1RJT04gPSAibGlicyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLQkgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUyMTdlZjNlNzZhNzI3NWEyYTNiNTY5YTEyZGRjOTg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmOTNhYWM2ZmVjYjdkYTJiOTI4NzFiYjllZTMzMDMyYmU2YTg3YjE3NGY1NGFiZjhkZGYwOTExYTIyZDI5ZDIiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnLWVycm9yLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBnZXR0ZXh0IG11bHRpbGliX2hlYWRlcgotQ1BQRkxBR1MgKz0gIi1QIgotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCVRBUkdFVF9GSUxFPWxpbnV4LWdudQotCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KLQkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKLQkJVEFSR0VUX0ZJTEU9Ci0JZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KLQkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9Ci0JZmkKLQotCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KLQkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OwotCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OwotCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni1wYy1saW51eC1nbnUgOzsKLQkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKLQkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OwotCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXBjLWxpbnV4LWdudSA7OwotCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsgCi0JZXNhYwotCi0JaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCi0JCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQotCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgotCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9saWJncGctZXJyb3IvZXJyb3JyZWYudHh0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NTIwMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zMi5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT01MjRkNGU4MTBjNGRjZGMzOGU0ZmEyOGU3MGExM2JmOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWYwMWNkZmNmNzQ3YWY1MzgwNTkwY2ZkOWJiZmVhYWY3IgorCisKK1NFQ1RJT04gPSAibGlicyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2ZnLVN1cHBvcnQtQVJDLUNQVXMtYW5kLXNpbXBsaWZ5LWFsaWFzaW5nLXRhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItc3lzY2ZnLUFkZC1zdXBwb3J0LWZvci1hcmMtdW5rbm93bi1saW51eC1nbnUucGF0Y2ggXAorCSAgIgorU1JDX1VSSVttZDVzdW1dID0gImVmM2Q5MjhhNWE0NTNmYTcwMWVjYzNiYjIyYmUxYzY0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzNDVjNWU3M2NjMjMzMmY4ZDUwZGI4NGEyMjgwYWJmYjFkOGY2ZDRmMTg1OGI5ZGFhMzA0MDRkYjQ0NTQwY2EiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnLWVycm9yLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBnZXR0ZXh0IG11bHRpbGliX2hlYWRlciBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2dwZ3J0LWNvbmZpZyIKKworQ1BQRkxBR1MgKz0gIi1QIgorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCVRBUkdFVF9GSUxFPWxpbnV4LWdudQorCWlmIFsgJHtUQVJHRVRfT1N9ID0gIm1pbmd3MzIiIF07IHRoZW4KKwkJIyBUaGVyZSBhcmUgbm8gYXJjaCBzcGVjaWZpYyBzeXNjZmcgZmlsZXMgZm9yIG1pbmd3MzIKKwkJVEFSR0VUX0ZJTEU9CisJZWxpZiBbICR7VEFSR0VUX0FSQ0h9ID0gImFyYyIgXTsgdGhlbgorCQkjIEFSQyBzeXNjZmcgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGFsaWFzZWQgdG8gaTY4Ni1wYy1saW51eC1nbnUKKwkJVEFSR0VUX0ZJTEU9CisJZWxpZiBbICR7VEFSR0VUX09TfSAhPSAibGludXgiIF07IHRoZW4KKwkJVEFSR0VUX0ZJTEU9JHtUQVJHRVRfT1N9CisJZmkKKworCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KKwkgIGFhcmNoNjRfYmUpIFRVUExFPWFhcmNoNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIGFybSkJICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgYXJtZWIpICAgICAgVFVQTEU9YXJtLXVua25vd24tbGludXgtZ251ZWFiaSA7OworCSAgaTU4NnxpNjg2KSAgVFVQTEU9aTY4Ni11bmtub3duLWxpbnV4LWdudTs7CisJICBtaXBzNjQqKSAgICBUVVBMRT1taXBzNjRlbC11bmtub3duLWxpbnV4LWdudWFiaTY0IDs7CisJICBtaXBzKmVsKSAgICBUVVBMRT1taXBzZWwtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIG1pcHMqKSAgICAgIFRVUExFPW1pcHMtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHg4Nl82NCkgICAgIFRVUExFPXg4Nl82NC11bmtub3duLWxpbnV4LWdudSA7OworCSAgcHBjNjQpICAgICAgVFVQTEU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDs7CisJICBwcGM2NGxlKSAgICBUVVBMRT1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSA7OworCSAgKikgICAgICAgICAgVFVQTEU9JHtUQVJHRVRfQVJDSH0tdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisKKwlpZiBbIC1uICIkVEFSR0VUX0ZJTEUiIF07IHRoZW4KKwkJY3AgJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVFVQTEUuaCBcCisJCQkke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUQVJHRVRfRklMRS5oCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyB3ZSBkb24ndCBoYXZlIGNvbW1vbiBsaXNwIGluIE9FCisJcm0gLXJmICIke0R9JHtkYXRhZGlyfS9jb21tb24tbGlzcC8iCisJb2VfbXVsdGlsaWJfaGVhZGVyIGdwZy1lcnJvci5oIGdwZ3J0LmgKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwZy1lcnJvci9lcnJvcnJlZi50eHQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKaW5kZXggZGNjMjFjYy4uZGFhNDdhYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKQEAgLTE3LDMgKzE3LDEwIEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmljYWwvbGliaWNhbC9yZWxlYXNlcyIKIAogaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKKyAgICBzZWQgLWkgXAorICAgICAgIC1lICdzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnJyBcCisgICAgICAgJHtEfSR7bGliZGlyfS9jbWFrZS9MaWJJY2FsL0xpYkljYWxUYXJnZXRzLW5vY29uZmlnLmNtYWtlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YzJkNjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0xMmQ1NWUxNWEwYzZkYTVjNjQ1YmE0MDM4MmJkMzI5MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDNhZGY0YjEzMGVlZDg1NGE1MzAzOTBmMDAwMjBhNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTBiZDQxYzYwNWQzMGUzNzQ1NzcxZWI4MTkyOGQ3NzlmMTU4MDgxYTUxYjJmMzE0YmJjYzFmNzNkZTU3NzNkYiIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUyIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotICAgIC0tZW5hYmxlLXBjcmUyLTE2IFwKLSAgICAtLWVuYWJsZS1wY3JlMi0zMiBcCi0iCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmUyLTE2IGxpYnBjcmUyLTMyIHBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgotCi1TVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlMi0xNiA9ICIke2xpYmRpcn0vbGlicGNyZTItMTYuc28uKiIKLUZJTEVTX2xpYnBjcmUyLTMyID0gIiR7bGliZGlyfS9saWJwY3JlMi0zMi5zby4qIgotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEwYzMxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMS5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWY1ZTRiZGU5ZmQwNDkzZDA5NjdiNGRiYTk4OTk1OTBmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMGI5MWM4OTFhM2M0OTA1MGY3ZmQxNWRlMzNkMGJhNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDdkNTM4NzA0YWE2NWU0NzdiNmEzOTJiMzJmZjlmYzVlZGY3NWFiOWE0MGRkZmM4NzYxODZjNGZmNGQ2OGFjIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTg3YzA4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgUENSRSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCByZWd1bGFyIFwKLWV4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyB1c2luZyB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFudGljcyBhcyBQZXJsIDUuIFBDUkUgXAotaGFzIGl0cyBvd24gbmF0aXZlIEFQSSwgYXMgd2VsbCBhcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgXAotdG8gdGhlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbiBBUEkuIgotU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT02MGRhMzJkODRkMDY3ZjUzZTIyMDcxYzRlY2I0Mzg0ZCIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXBjcmUtbmFtZS1jb2xsaXNpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxNjBkMjI3MjNiMTY3MDQ0NzM0MWIwOGM1ODk4MWMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2MmM3ZWFjNWFlN2MwZTcyODZkYjYxZmY4MjkxMmUxYzBiN2EwYzEzNzA2NjE2ZTk0YTdkZDcyOTMyMWI1MzAiCi0KLUNWRV9QUk9EVUNUID0gInBjcmUiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlLSR7UFZ9IgotCi1QUk9WSURFUyArPSAicGNyZSIKLURFUEVORFMgKz0gImJ6aXAyIHpsaWIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJwY3JlOCB1bmljb2RlLXByb3BlcnRpZXMiCi0KLVBBQ0tBR0VDT05GSUdbcGNyZThdID0gIi0tZW5hYmxlLXBjcmU4LC0tZGlzYWJsZS1wY3JlOCIKLVBBQ0tBR0VDT05GSUdbcGNyZTE2XSA9ICItLWVuYWJsZS1wY3JlMTYsLS1kaXNhYmxlLXBjcmUxNiIKLVBBQ0tBR0VDT05GSUdbcGNyZTMyXSA9ICItLWVuYWJsZS1wY3JlMzIsLS1kaXNhYmxlLXBjcmUzMiIKLVBBQ0tBR0VDT05GSUdbcGNyZXRlc3QtcmVhZGxpbmVdID0gIi0tZW5hYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLC0tZGlzYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSxyZWFkbGluZSwiCi1QQUNLQUdFQ09ORklHW3VuaWNvZGUtcHJvcGVydGllc10gPSAiLS1lbmFibGUtdW5pY29kZS1wcm9wZXJ0aWVzLC0tZGlzYWJsZS11bmljb2RlLXByb3BlcnRpZXMiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZS1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS1lbmFibGUtdXRmIFwKLSAgICAtLXdpdGgtbGluay1zaXplPTIgXAotICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCi0iCi0KLSMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCi0jIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCi1CVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9IgotQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCi1DWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCi0KLWV4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCi0KLVBBQ0tBR0VTID0rICJsaWJwY3JlY3BwIGxpYnBjcmVwb3NpeCBwY3JlZ3JlcCBwY3JlZ3JlcC1kb2MgcGNyZXRlc3QgcGNyZXRlc3QtZG9jIgotCi1TVU1NQVJZX2xpYnBjcmVjcHAgPSAiJHtTVU1NQVJZfSAtIEMrKyB3cmFwcGVyIGZ1bmN0aW9ucyIKLVNVTU1BUllfbGlicGNyZXBvc2l4ID0gIiR7U1VNTUFSWX0gLSBDIHdyYXBwZXIgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBQT1NJWCByZWdleCBBUEkiCi1TVU1NQVJZX3BjcmVncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKLVNVTU1BUllfcGNyZWdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCi1TVU1NQVJZX3BjcmV0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZXRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCi0KLUZJTEVTX2xpYnBjcmVjcHAgPSAiJHtsaWJkaXJ9L2xpYnBjcmVjcHAuc28uKiIKLUZJTEVTX2xpYnBjcmVwb3NpeCA9ICIke2xpYmRpcn0vbGlicGNyZXBvc2l4LnNvLioiCi1GSUxFU19wY3JlZ3JlcCA9ICIke2JpbmRpcn0vcGNyZWdyZXAiCi1GSUxFU19wY3JlZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZWdyZXAuMSIKLUZJTEVTX3BjcmV0ZXN0ID0gIiR7YmluZGlyfS9wY3JldGVzdCIKLUZJTEVTX3BjcmV0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JldGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JdD0ke0R9JHtQVEVTVF9QQVRIfQotCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQKLQljcCAtciAke1N9L3Rlc3RkYXRhICR0Ci0JZm9yIGkgaW4gcGNyZV9zdHJpbmdwaWVjZV91bml0dGVzdCBwY3JlZ3JlcCBwY3JldGVzdDsgXAotCSAgZG8gY3AgJHtCfS8ubGlicy8kaSAkdDsgXAotCWRvbmUKLQlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCi0JICBkbyBjcCAke1N9LyRpICR0OyBcCi0JZG9uZQotCSMgU2tpcCB0aGUgZnJfRlIgbG9jYWxlIHRlc3QuIElmIHRoZSBsb2NhbGUgZnJfRlIgaXMgZm91bmQsIGl0IGlzIHRlc3RlZC4KLQkjIElmIG5vdCBmb3VuZCwgdGhlIHRlc3QgaXMgc2tpcHBlZC4gVGhlIHRlc3QgcHJvZ3JhbSBhc3N1bWVzIGZyX0ZSIGlzIG5vbi1VVEYtOAotCSMgbG9jYWxlIHNvIHRoZSB0ZXN0IGZhaWxzIGlmIGZyX0ZSIGlzIFVURi04IGxvY2FsZS4KLQlzZWQgLWkgLWUgJ3M6ZG8zPXllczpkbzM9bm86ZycgJHtEfSR7UFRFU1RfUEFUSH0vUnVuVGVzdCAKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNDg4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQyLmJiCkBAIC0wLDAgKzEsODcgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWZjNTAyNjQwM2I0NGM4NjhjMjVmYzk1NDZmN2ZlYjA1IgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDg1YjZhYTI1M2UwZjkxY2FlNzBiM2NkYmU4YzFhYzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNkMDRiN2M4ODc4MDhiZTAzMDI1NGU4ZDc3ZGUxMWQzZmU5ZDQ1MDVjMzlkNGIxNWQyNjY0ZmZlOGJmOTMwMSIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZSIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyIKKworUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgorUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgorUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgorUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKK1BBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLWVuYWJsZS11dGYgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyIKKworIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0iCitDRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKK0NYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKKworZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKKworUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCisKK1NVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgorU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKK1NVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKK1NVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgorRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKK0ZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKK0ZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgorRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgorRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAorCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKKwlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCisJICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCisJZG9uZQorCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKKwkgIGRvIGNwICR7U30vJGkgJHQ7IFwKKwlkb25lCisJIyBTa2lwIHRoZSBmcl9GUiBsb2NhbGUgdGVzdC4gSWYgdGhlIGxvY2FsZSBmcl9GUiBpcyBmb3VuZCwgaXQgaXMgdGVzdGVkLgorCSMgSWYgbm90IGZvdW5kLCB0aGUgdGVzdCBpcyBza2lwcGVkLiBUaGUgdGVzdCBwcm9ncmFtIGFzc3VtZXMgZnJfRlIgaXMgbm9uLVVURi04CisJIyBsb2NhbGUgc28gdGhlIHRlc3QgZmFpbHMgaWYgZnJfRlIgaXMgVVRGLTggbG9jYWxlLgorCXNlZCAtaSAtZSAnczpkbzM9eWVzOmRvMz1ubzpnJyAke0R9JHtQVEVTVF9QQVRIfS9SdW5UZXN0IAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNS5iYgppbmRleCA5OTFjOWQ4Li5kZDdhZDkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNS5iYgpAQCAtMjIsMTEgKzIyLDEyIEBACiBQQUNLQUdFQ09ORklHW2dub21lM10gPSAiLURXSVRIX0dOT01FMz15ZXMsLURXSVRIX0dOT01FMz1ubyIKIAogRVhUUkFfT0VDTUFLRSArPSAiIFwKLSAgICAtRFdJVEhfS0RFND1ubyBcCisgICAgLURXSVRIX0tERT1ubyBcCiAgICAgLURXSVRIX01PWkpTPW5vIFwKICAgICAtRFdJVEhfTk09bm8gXAogICAgIC1EV0lUSF9QRVJMPW5vIFwKLSAgICAtRFdJVEhfUFlUSE9OPW5vIFwKKyAgICAtRFdJVEhfUFlUSE9OMj1ubyBcCisgICAgLURXSVRIX1BZVEhPTjM9bm8gXAogICAgIC1EV0lUSF9XRUJLSVQ9bm8gXAogICAgIC1ETElCX0lOU1RBTExfRElSPSR7bGliZGlyfSBcCiAgICAgLURMSUJFWEVDX0lOU1RBTExfRElSPSR7bGliZXhlY2Rpcn0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjYwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZTdmZjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRjZjg5MzdkMTYxZDNkZDcxYTY1ZjE2ODRlMzE3ODI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMGRjNzYyZjIzYWJlNGUwZDI5Yjc3MzcwZTUzOWZkMzVmMzFkOGU4ZTAzMThkNmRkY2NmZjM5NWJlNjhhMjIiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgotCi0jIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgotIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKLSMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCi0jIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLURFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCi0KLSMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Mi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWEzY2M1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjIuMy5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKKworU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZGZiZjMwYWY1ZmI2MTkwYmZhZmM1YWE2YWJjYzlkY2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDMxMmFkZTU0NzQ5NWMyMDkzZmY4YmRhNjFmOWI5NzI3YTk4Y2ZkYWUzMzlmMzI2MzI3N2RkMzljMDQ1MTE3MiIKKworUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCisjIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgorUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCisKKyMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCisjIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAorIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKKyMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKKworIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KK1JSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZmFjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjEwLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKKworREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCisgY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAorIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAorIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAorIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCisgcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCisgQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAorIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCisgVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCisgc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT0yODdmYTYwNzVmNzhhM2M4NWMxYTUyYjBhOTI1NDdjZCBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjBkMzI3NGU5ODM4Mzk2YjEyMjAwZjhiNTRkZGFmNDNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE4MmU1YjMzMzMzOWE4OGVhNDYwOGU0NjM1NDc5YTFjZmIyZTAxYWFmYjkyNWUxMjkwYjY1NzEwZDQzZjYxMGIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI3Y2JhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBDIGFuZCBVbmljb2RlIHN0cmluZ3MiCi0KLURFU0NSSVBUSU9OID0gIlRleHQgZmlsZXMgYXJlIG5vd2FkYXlzIHVzdWFsbHkgZW5jb2RlZCBpbiBVbmljb2RlLCBhbmQgbWF5XAotIGNvbnNpc3Qgb2YgdmVyeSBkaWZmZXJlbnQgc2NyaXB0cyBmcm9tIExhdGluIGxldHRlcnMgdG8gQ2hpbmVzZSBIYW56aVwKLSB3aXRoIG1hbnkga2luZHMgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIGFjY2VudHMsIHJpZ2h0LXRvLWxlZnQgd3JpdGluZ1wKLSBtYXJrcywgaHlwaGVucywgUm9tYW4gbnVtYmVycywgYW5kIG11Y2ggbW9yZS4gQnV0IHRoZSBQT1NJWCBwbGF0Zm9ybVwKLSBBUElzIGZvciB0ZXh0IGRvIG5vdCBjb250YWluIGFkZXF1YXRlIGZ1bmN0aW9ucyBmb3IgZGVhbGluZyB3aXRoXAotIHBhcnRpY3VsYXIgcHJvcGVydGllcyBvZiBtYW55IFVuaWNvZGUgY2hhcmFjdGVycy4gSW4gZmFjdCwgdGhlIFBPU0lYXAotIEFQSXMgZm9yIHRleHQgaGF2ZSBzZXZlcmFsIGFzc3VtcHRpb25zIGF0IHRoZWlyIGJhc2Ugd2hpY2ggZG9uJ3QgaG9sZFwKLSBmb3IgVW5pY29kZSB0ZXh0LiAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nXAotIFVuaWNvZGUgc3RyaW5ncyBhbmQgZm9yIG1hbmlwdWxhdGluZyBDIHN0cmluZ3MgYWNjb3JkaW5nIHRvIHRoZSBVbmljb2RlXAotIHN0YW5kYXJkLiAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24uIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidW5pc3RyaW5nLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkxHUEx2MysgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTQ1O2VuZGxpbmU9NjU7bWQ1PTA4Mjg3ZDE2YmE4ZDgzOWZhZWQ4ZDJkYzE0ZDdkNmE1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9saWJ1bmlzdHJpbmcudGV4aTttZDU9ZWZiODBhMzc5OWE2MGY5NWZlYWY4MDY2MWQ0ZjIwNGMgXAotICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmctJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ljb252LW00LXJlbW92ZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZjY4OWUzN2U0YzNiZDY3ZGU1Nzg2YWE1MWQ5OGIxMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNWU5MGMwOGY5ZTU0MjdjYTNhMmMwYzUzZjE5YWEzOGIyNWM1MDA5MTM1MTBhZDI1YWZlZjg2NDQ4YmVhODRhIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLmluYwppbmRleCBiOWM1MzJkLi4zNjg1MWQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMKQEAgLTE0LDggKzE0LDYgQEAKIEVYVFJBX09FQ09ORl9hcm0gPSAiLS1lbmFibGUtZGVidWctZnJhbWUiCiBFWFRSQV9PRUNPTkZfYWFyY2g2NCA9ICItLWVuYWJsZS1kZWJ1Zy1mcmFtZSIKIAotU0VDVVJJVFlfTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHNzcF9ub25zaGFyZWQgLWxzc3AiCi0KIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlvZV9tdWx0aWxpYl9oZWFkZXIgbGlidW53aW5kLmgKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuMS5iYgppbmRleCAzN2E3NjI0Li5lN2ZiMmIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiCkBAIC0yMSwzICsyMSw1IEBACiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKIAogTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCitTRUNVUklUWV9MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sc3NwX25vbnNoYXJlZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9maWxlcy9BZGQtc3VwcG9ydC1mb3ItdGhlLVJJU0MtVi1hcmNoaXRlY3R1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvZmlsZXMvQWRkLXN1cHBvcnQtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMjY3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvZmlsZXMvQWRkLXN1cHBvcnQtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoCkBAIC0wLDAgKzEsMTU3IEBACitGcm9tIGZkZmFkODEwMDZjMmM5NjQ3ODFiNjE2ZjBhNzU1Nzg1MDdiZTgwOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEplYW5zb24gPG1qZWFuc29uQGVmZmljaW9zLmNvbT4KK0RhdGU6IFdlZCwgMjEgTWFyIDIwMTggMTc6Mzg6NDEgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlCisKK1Rlc3RlZCBpbiBRRU1VIDIuMTIuMC1yYzAsIHJlcXVpcmVzIC0tZGlzYWJsZS1jb21waWxlci10bHMgdG8gZ28KK3Rocm91Z2ggdGhlIGJlbmNobWFya3MgcmVsaWFibHkuCisKK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSmVhbnNvbiA8bWplYW5zb25AZWZmaWNpb3MuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0aGlldSBEZXNub3llcnMgPG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAgMSArCisgaW5jbHVkZS9NYWtlZmlsZS5hbSAgICAgICAgICB8ICAyICsrCisgaW5jbHVkZS91cmN1L2FyY2gvcmlzY3YuaCAgICB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS91cmN1L3VhdG9taWMvcmlzY3YuaCB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3VyY3UvYXJjaC9yaXNjdi5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdXJjdS91YXRvbWljL3Jpc2N2LmgKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZDBiNGE5YWMuLjkxNDUwODFhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNTEsNiArMTUxLDcgQEAgQVNfQ0FTRShbJGhvc3RfY3B1XSwKKyAJW3RpbGUqXSwgW0FSQ0hUWVBFPSJ0aWxlIl0sCisgCVtocHBhKl0sIFtBUkNIVFlQRT0iaHBwYSJdLAorIAlbbTY4a10sIFtBUkNIVFlQRT0ibTY4ayJdLAorKwlbcmlzY3YqXSwgW0FSQ0hUWVBFPSJyaXNjdiJdLAorIAlbQVJDSFRZUEU9InVua25vd24iXQorICkKKyAKK2RpZmYgLS1naXQgYS9pbmNsdWRlL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9NYWtlZmlsZS5hbQoraW5kZXggZGNkZjMwNGIuLjM2NjY3YjQzIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9NYWtlZmlsZS5hbQorKysrIGIvaW5jbHVkZS9NYWtlZmlsZS5hbQorQEAgLTI3LDYgKzI3LDcgQEAgRVhUUkFfRElTVCA9IHVyY3UvYXJjaC9hYXJjaDY0LmggXAorIAl1cmN1L2FyY2gvbWlwcy5oIFwKKyAJdXJjdS9hcmNoL25pb3MyLmggXAorIAl1cmN1L2FyY2gvcHBjLmggXAorKwl1cmN1L2FyY2gvcmlzY3YuaCBcCisgCXVyY3UvYXJjaC9zMzkwLmggXAorIAl1cmN1L2FyY2gvc3BhcmM2NC5oIFwKKyAJdXJjdS9hcmNoL3RpbGUuaCBcCitAQCAtNDMsNiArNDQsNyBAQCBFWFRSQV9ESVNUID0gdXJjdS9hcmNoL2FhcmNoNjQuaCBcCisgCXVyY3UvdWF0b21pYy9taXBzLmggXAorIAl1cmN1L3VhdG9taWMvbmlvczIuaCBcCisgCXVyY3UvdWF0b21pYy9wcGMuaCBcCisrCXVyY3UvdWF0b21pYy9yaXNjdi5oIFwKKyAJdXJjdS91YXRvbWljL3MzOTAuaCBcCisgCXVyY3UvdWF0b21pYy9zcGFyYzY0LmggXAorIAl1cmN1L3VhdG9taWMvdGlsZS5oIFwKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3VyY3UvYXJjaC9yaXNjdi5oIGIvaW5jbHVkZS91cmN1L2FyY2gvcmlzY3YuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi4xZmQ3ZDYyYgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS91cmN1L2FyY2gvcmlzY3YuaAorQEAgLTAsMCArMSw0OSBAQAorKyNpZm5kZWYgX1VSQ1VfQVJDSF9SSVNDVl9ICisrI2RlZmluZSBfVVJDVV9BUkNIX1JJU0NWX0gKKysKKysvKgorKyAqIGFyY2gvcmlzY3YuaDogZGVmaW5pdGlvbnMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlCisrICoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMTggTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSA8dXJjdS9jb21waWxlci5oPgorKyNpbmNsdWRlIDx1cmN1L2NvbmZpZy5oPgorKyNpbmNsdWRlIDx1cmN1L3N5c2NhbGwtY29tcGF0Lmg+CisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorKworKy8qCisrICogT24gTGludXgsIGRlZmluZSB0aGUgbWVtYmFycmllciBzeXN0ZW0gY2FsbCBudW1iZXIgaWYgbm90IHlldCBhdmFpbGFibGUgaW4KKysgKiB0aGUgc3lzdGVtIGhlYWRlcnMuCisrICovCisrI2lmIChkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKSkKKysjZGVmaW5lIF9fTlJfbWVtYmFycmllcgkJMjgzCisrI2VuZGlmCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNlbmRpZgorKworKyNpbmNsdWRlIDx1cmN1L2FyY2gvZ2VuZXJpYy5oPgorKworKyNlbmRpZiAvKiBfVVJDVV9BUkNIX1JJU0NWX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3VyY3UvdWF0b21pYy9yaXNjdi5oIGIvaW5jbHVkZS91cmN1L3VhdG9taWMvcmlzY3YuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5hNjcwMGUxNworLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS91cmN1L3VhdG9taWMvcmlzY3YuaAorQEAgLTAsMCArMSw0NCBAQAorKy8qCisrICogQXRvbWljIGV4Y2hhbmdlIG9wZXJhdGlvbnMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBMZXQgR0NDIGRvIGl0LgorKyAqCisrICogQ29weXJpZ2h0IChjKSAyMDE4IE1pY2hhZWwgSmVhbnNvbiA8bWplYW5zb25AZWZmaWNpb3MuY29tPgorKyAqCisrICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bworKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisrICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisrICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKysgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKyAqCisrICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKysgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisrICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisrICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisrICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisrICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworKyAqIElOIFRIRSBTT0ZUV0FSRS4KKysgKi8KKysKKysjaWZuZGVmIF9VUkNVX0FSQ0hfVUFUT01JQ19SSVNDVl9ICisrI2RlZmluZSBfVVJDVV9BUkNIX1VBVE9NSUNfUklTQ1ZfSAorKworKyNpbmNsdWRlIDx1cmN1L2NvbXBpbGVyLmg+CisrI2luY2x1ZGUgPHVyY3Uvc3lzdGVtLmg+CisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisrCisrI2RlZmluZSBVQVRPTUlDX0hBU19BVE9NSUNfQllURQorKyNkZWZpbmUgVUFUT01JQ19IQVNfQVRPTUlDX1NIT1JUCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNlbmRpZgorKworKyNpbmNsdWRlIDx1cmN1L3VhdG9taWMvZ2VuZXJpYy5oPgorKworKyNlbmRpZiAvKiBfVVJDVV9BUkNIX1VBVE9NSUNfUklTQ1ZfSCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiCmluZGV4IDQ1OWMwNGEuLjVlYjkxZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIKQEAgLTgsMTIgKzgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgogCiBTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vQWRkLXN1cHBvcnQtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMjgxYTJmOTJmZGMzOWM0MGFkNmI3NmY2NjMxZmRiZDciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWMwOTIyMGJlNDQzNWRjMjdmY2QyMmQyOTE3MDdiOTRiOTdmMTU5ZTBjNDQyZmJjZDYwYzE2OGY4Zjc5ZWIwNiIKIAogUyA9ICIke1dPUktESVJ9L3VzZXJzcGFjZS1yY3UtJHtQVn0iCi1pbmhlcml0IGF1dG90b29scworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCiAKIENQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lYWE0N2EyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9ydW4tcHRlc3QKQEAgLTAsMCArMSwyOSBAQAorIyEvYmluL3NoCisKK2VjaG8KK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbGlidXNiMSB0ZXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitlY2hvCisKKy4vc3RyZXNzIHwgeyBcCit3aGlsZSByZWFkIC1yIHN0cgorZG8KKwllY2hvICIkc3RyIgorCWlmIFsgIiR7c3RyIypTdGFydGluZyB0ZXN0IHJ1bjp9IiAhPSAiJHN0ciIgXQorCXRoZW4KKwkJbmFtZT0iJHtzdHIjU3RhcnRpbmcgdGVzdCBydW46IH0iCisJCW5hbWU9IiR7bmFtZSUuLi59IgorCWVsc2UKKwkJY2FzZSAiJHN0ciIgaW4KKwkJCSJTdWNjZXNzICgwKSIpCisJCQkJZWNobyAiUEFTUzogJG5hbWUiCisJCQk7OworCQkJIkZhaWx1cmUgKDEpIiB8ICJFcnJvciAoMikiKQorCQkJCWVjaG8gIkZBSUw6ICRuYW1lIgorCQkJOzsKKwkJCSJTa2lwICgzKSIpCisJCQkJZWNobyAiU0tJUDogJG5hbWUiCisJCQk7OworCQllc2FjCisJZmkKK2RvbmUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZWZkMTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kbGwucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFkYTllYTNjMjdiMzg1OGZhODVjNWY0NDY2MDAzZTQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkY2U5Y2NlOWE4MTE5NGI3MDY1ZWU5MTJiY2Q1NWVlZmZlYmFiNjk0ZWE0MDNmZmI5MWI2N2RiNjZiMTgyNGIiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJ1c2ItJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIERvbid0IGNvbmZpZ3VyZSB1ZGV2IGJ5IGRlZmF1bHQgc2luY2UgaXQgd2lsbCBjYXVzZSBhIGNpcmN1bGFyCi0jIGRlcGVuZGVjeSB3aXRoIHVkZXYgcGFja2FnZSwgd2hpY2ggZGVwZW5kcyBvbiBsaWJ1c2IKLUVYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLWRpc2FibGUtdWRldiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQotCWZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvLioiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vKi5zbyAke2Jhc2VfbGliZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzZlMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgbGlicmFyeSB0byBhY2Nlc3MgVVNCICh2ZXJzaW9uIDEuMCkiCitIT01FUEFHRSA9ICJodHRwOi8vbGlidXNiLnNmLm5ldCIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5saWJ1c2Iub3JnL3JlcG9ydCIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJ1c2IvbGlidXNiLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbm8tZGxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDY2MjY3ODg5ZGFlYWQ0NzY3NGRmOTMzY2VhOWNhY2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzVhZWI5ZDU5YTRmZGI4MDBkMzI5YTU0NWMyZTY3OTlmNzMyMzYyMTkzYjQ2NWVhMTk4ZjJhYTI3NTUxODE1NyIKKworUyA9ICIke1dPUktESVJ9L2xpYnVzYi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKKyMgRG9uJ3QgY29uZmlndXJlIHVkZXYgYnkgZGVmYXVsdCBzaW5jZSBpdCB3aWxsIGNhdXNlIGEgY2lyY3VsYXIKKyMgZGVwZW5kZWN5IHdpdGggdWRldiBwYWNrYWdlLCB3aGljaCBkZXBlbmRzIG9uIGxpYnVzYgorRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tZGlzYWJsZS11ZGV2IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBzdHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitkb19pbnN0YWxsX3B0ZXN0KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9L3Rlc3RzLy5saWJzL3N0cmVzcyAke0R9JHtQVEVTVF9QQVRIfSAgICAgICAgIAorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vKi5zby4qIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28gJHtiYXNlX2xpYmRpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L2ZpeC1ydnRzLWhhbmRsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvZml4LXJ2dHMtaGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEzYWU1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L2ZpeC1ydnRzLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsODAgQEAKK2xpYnhzbHQtMS4xLjMyOiBGaXggaGFuZGxpbmcgb2YgUlZUcyByZXR1cm5lZCBmcm9tIG5lc3RlZCBFWFNMVCBmdW5jdGlvbnMKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkyNTgwCisKK1NldCB0aGUgY29udGV4dCB2YXJpYWJsZSB0byBOVUxMIHdoZW4gZXZhbHVhdGluZyBFWFNMVCBmdW5jdGlvbnMuCitGaXhlcyBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIG9yIG1lbW9yeSBsZWFrcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhzbHQvY29tbWl0LzhiZDMyZjc3NTNhYzI1M2E1NDI3OWEwYjZhODhkMTVhNTcwNzZiYjBdCitidWc6IDc5MjU4MAorU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJleHNsdC9mdW5jdGlvbnMuYyBiL2xpYmV4c2x0L2Z1bmN0aW9ucy5jCitpbmRleCBkYzc5NGUzLi44NTExY2IwIDEwMDY0NAorLS0tIGEvbGliZXhzbHQvZnVuY3Rpb25zLmMKKysrKyBiL2xpYmV4c2x0L2Z1bmN0aW9ucy5jCitAQCAtMjgwLDYgKzI4MCw3IEBAIGV4c2x0RnVuY0Z1bmN0aW9uRnVuY3Rpb24gKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCBpbnQgbmFyZ3MpIHsKKyAgICAgZXhzbHRGdW5jRnVuY3Rpb25EYXRhICpmdW5jOworICAgICB4bWxOb2RlUHRyIHBhcmFtTm9kZSwgb2xkSW5zZXJ0LCBmYWtlOworICAgICBpbnQgb2xkQmFzZTsKKysgICAgdm9pZCAqb2xkQ3R4dFZhcjsKKyAgICAgeHNsdFN0YWNrRWxlbVB0ciBwYXJhbXMgPSBOVUxMLCBwYXJhbTsKKyAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgdGN0eHQgPSB4c2x0WFBhdGhHZXRUcmFuc2Zvcm1Db250ZXh0KGN0eHQpOworICAgICBpbnQgaSwgbm90U2V0OworQEAgLTQxOCwxMSArNDE5LDE0IEBAIGV4c2x0RnVuY0Z1bmN0aW9uRnVuY3Rpb24gKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCBpbnQgbmFyZ3MpIHsKKyAgICAgZmFrZSA9IHhtbE5ld0RvY05vZGUodGN0eHQtPm91dHB1dCwgTlVMTCwKKyAJCQkgKGNvbnN0IHhtbENoYXIgKikiZmFrZSIsIE5VTEwpOworICAgICBvbGRJbnNlcnQgPSB0Y3R4dC0+aW5zZXJ0OworKyAgICBvbGRDdHh0VmFyID0gdGN0eHQtPmNvbnRleHRWYXJpYWJsZTsKKyAgICAgdGN0eHQtPmluc2VydCA9IGZha2U7CisrICAgIHRjdHh0LT5jb250ZXh0VmFyaWFibGUgPSBOVUxMOworICAgICB4c2x0QXBwbHlPbmVUZW1wbGF0ZSAodGN0eHQsIHRjdHh0LT5ub2RlLAorIAkJCSAgZnVuYy0+Y29udGVudCwgTlVMTCwgTlVMTCk7CisgICAgIHhzbHRMb2NhbFZhcmlhYmxlUG9wKHRjdHh0LCB0Y3R4dC0+dmFyc0Jhc2UsIC0yKTsKKyAgICAgdGN0eHQtPmluc2VydCA9IG9sZEluc2VydDsKKysgICAgdGN0eHQtPmNvbnRleHRWYXJpYWJsZSA9IG9sZEN0eHRWYXI7CisgICAgIHRjdHh0LT52YXJzQmFzZSA9IG9sZEJhc2U7CS8qIHJlc3RvcmUgb3JpZ2luYWwgc2NvcGUgKi8KKyAgICAgaWYgKHBhcmFtcyAhPSBOVUxMKQorIAl4c2x0RnJlZVN0YWNrRWxlbUxpc3QocGFyYW1zKTsKK2RpZmYgLS1naXQgYS90ZXN0cy9kb2NzL2J1Zy0yMDkueG1sIGIvdGVzdHMvZG9jcy9idWctMjA5LnhtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjY5ZDYyZjIKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RzL2RvY3MvYnVnLTIwOS54bWwKK0BAIC0wLDAgKzEgQEAKKys8ZG9jLz4KK2RpZmYgLS1naXQgYS90ZXN0cy9nZW5lcmFsL2J1Zy0yMDkub3V0IGIvdGVzdHMvZ2VuZXJhbC9idWctMjA5Lm91dAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU4Mjk3OTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RzL2dlbmVyYWwvYnVnLTIwOS5vdXQKK0BAIC0wLDAgKzEsMiBAQAorKzw/eG1sIHZlcnNpb249IjEuMCI/PgorKzxyZXN1bHQvPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbmVyYWwvYnVnLTIwOS54c2wgYi90ZXN0cy9nZW5lcmFsL2J1Zy0yMDkueHNsCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmU2OWFjNgorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZ2VuZXJhbC9idWctMjA5LnhzbAorQEAgLTAsMCArMSwyMSBAQAorKzx4c2w6c3R5bGVzaGVldAorKyAgICB2ZXJzaW9uPSIxLjAiCisrICAgIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorKyAgICB4bWxuczpmdW5jPSJodHRwOi8vZXhzbHQub3JnL2Z1bmN0aW9ucyIKKysgICAgZXh0ZW5zaW9uLWVsZW1lbnQtcHJlZml4ZXM9ImZ1bmMiPgorKworKyAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KKysgICAgICAgIDx4c2w6dmFyaWFibGUgbmFtZT0idiIgc2VsZWN0PSJmdW5jOmEoKSIgLz4KKysgICAgICAgIDx4c2w6Y29weS1vZiBzZWxlY3Q9IiR2Ii8+CisrICAgIDwveHNsOnRlbXBsYXRlPgorKworKyAgICA8ZnVuYzpmdW5jdGlvbiBuYW1lPSJmdW5jOmEiPgorKyAgICAgICAgPGZ1bmM6cmVzdWx0IHNlbGVjdD0iZnVuYzpiKCkiIC8+CisrICAgIDwvZnVuYzpmdW5jdGlvbj4KKysKKysgICAgPGZ1bmM6ZnVuY3Rpb24gbmFtZT0iZnVuYzpiIj4KKysgICAgICAgIDxmdW5jOnJlc3VsdD4KKysgICAgICAgICAgICA8cmVzdWx0Lz4KKysgICAgICAgIDwvZnVuYzpyZXN1bHQ+CisrICAgIDwvZnVuYzpmdW5jdGlvbj4KKys8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiCmluZGV4IDZhMDNmNzcuLmYwZmE1ZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIKQEAgLTgsNyArOCwxMCBAQAogU0VDVElPTiA9ICJsaWJzIgogREVQRU5EUyA9ICJsaWJ4bWwyIgogCi1TUkNfVVJJID0gImh0dHA6Ly94bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhzbHQtJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwOi8veG1sc29mdC5vcmcvc291cmNlcy9saWJ4c2x0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnZ0cy1oYW5kbGluZy5wYXRjaCBcCisgICAgICAgICAgICIKKwogU1JDX1VSSVttZDVzdW1dID0gIjFmYzcyZjk4ZTk4YmY0NDQzZjE2NTExNjVmM2FhMTQ2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNmVjZDBhYmFmNGE3Nzg5MDQxNjIyYzM5NTBjMGU3ZjJjNGM4ODM1NDcxNTE1ZmQ3N2VlYzY4NGEzNTU0NjAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMS43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNjdmMDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYllBTUwgaXMgYSBZQU1MIDEuMSBwYXJzZXIgYW5kIGVtaXR0ZXIgd3JpdHRlbiBpbiBDLiIKLURFU0NSSVBUSU9OID0gIkxpYllBTUwgaXMgYSBDIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIGVtaXR0aW5nIGRhdGEgaW4gWUFNTCAxLjEsIFwKLWEgaHVtYW4tcmVhZGFibGUgZGF0YSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5eWFtbC5vcmcvd2lraS9MaWJZQU1MIgotU0VDVElPTiA9ICJsaWJzL2RldmVsIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTYwMTVmMDg4NzU5YjEwZTBiYzJiZjY0ODk4ZDRhZTE3IgotCi1TUkNfVVJJID0gImh0dHA6Ly9weXlhbWwub3JnL2Rvd25sb2FkL2xpYnlhbWwveWFtbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFhYmY0NWJkM2E5NjM3NGZhNTVjYTYzYjMyZjlmMmY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwODhlNDU3MjY0YTk4YmE0NTFhOTBiODY2MWZjYjRmOWQ2ZjQ3OGY3MjY1ZDQ4MzIyYTE5NmNlYzI0ODA3MjkiCi0KLVMgPSAiJHtXT1JLRElSfS95YW1sLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3Nzg5MTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjIuMS5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkxpYllBTUwgaXMgYSBZQU1MIDEuMSBwYXJzZXIgYW5kIGVtaXR0ZXIgd3JpdHRlbiBpbiBDLiIKK0RFU0NSSVBUSU9OID0gIkxpYllBTUwgaXMgYSBDIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIGVtaXR0aW5nIGRhdGEgaW4gWUFNTCAxLjEsIFwKK2EgaHVtYW4tcmVhZGFibGUgZGF0YSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5eWFtbC5vcmcvd2lraS9MaWJZQU1MIgorU0VDVElPTiA9ICJsaWJzL2RldmVsIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU1OTE3MDFkMzI1OTBmOWZhOTRmM2JmZWU4MjBiNjM0IgorCitTUkNfVVJJID0gImh0dHA6Ly9weXlhbWwub3JnL2Rvd25sb2FkL2xpYnlhbWwveWFtbC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiNzI3MjRiOTczNjkyM2M1MTdlNWE4ZmM2NzU3ZWYwM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzgyODExNDU2NDFhMDgwZmIzMmQ2ZTdhODdiOWMwNjY0ZDYxMWRjYjRkNTQyZTkwYmFmNzMxZjUxY2JiNTljZCIKKworUyA9ICIke1dPUktESVJ9L3lhbWwtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA0OTRlOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy8wMDAxLXRlc3RzLU1ha2VmaWxlLWRvbi10LXVzZS1MSUJESVItYXMtdmFyaWFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1Gcm9tIGQ0NzY4ZDllMjliODA1MDk2YTg2YWExM2MwZDMwZWU4MjE1YWY0ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAxMjowNzowOSArMDMwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0cy9NYWtlZmlsZTogZG9uJ3QgdXNlIExJQkRJUiBhcyB2YXJpYWJsZQotCi1MSUJESVIgbWF5IGJlIG92ZXJyaWRlbiB3aXRoIGEgZW52aXJvbm1lbnQgdmFyaWFibGU6IEluIHRoaXMgY2FzZSBtYWtlCi1jbGVhbiBicmVha3MuIFVzZSBhbm90aGVyIHZhcmlhYmxlIG5hbWUuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSB0ZXN0cy9NYWtlZmlsZSB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUgYi90ZXN0cy9NYWtlZmlsZQotaW5kZXggOTdmYTc4Mi4uNTFkZDAzOCAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0cy9NYWtlZmlsZQotQEAgLTMyLDcgKzMyLDcgQEAgREVTVERJUiA/PQotIFBSRUZJWCAgPz0gL3Vzci9sb2NhbAotIEJJTkRJUiAgOj0gJChQUkVGSVgpL2JpbgotIE1BTkRJUiAgOj0gJChQUkVGSVgpL3NoYXJlL21hbi9tYW4xCi0tTElCRElSICA6PSAuLi9saWIKLStMWjRESVIgIDo9IC4uL2xpYgotIFBSR0RJUiAgOj0gLi4vcHJvZ3JhbXMKLSBWT0lEICAgIDo9IC9kZXYvbnVsbAotIFRFU1RESVIgOj0gdmVyc2lvbnNUZXN0Ci1AQCAtNDMsNyArNDMsNyBAQCBDRkxBR1MgICs9IC1nIC1XYWxsIC1XZXh0cmEgLVd1bmRlZiAtV2Nhc3QtcXVhbCAtV2Nhc3QtYWxpZ24gLVdzaGFkb3cgLVdzd2l0Y2gtZQotICAgICAgICAgICAgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdzdHJpY3QtcHJvdG90eXBlcyBcCi0gICAgICAgICAgICAtV3BvaW50ZXItYXJpdGggLVdzdHJpY3QtYWxpYXNpbmc9MQotIENGTEFHUyAgKz0gJChNT1JFRkxBR1MpCi0tQ1BQRkxBR1M6PSAtSSQoTElCRElSKSAtSSQoUFJHRElSKSAtRFhYSF9OQU1FU1BBQ0U9TFo0XwotK0NQUEZMQUdTOj0gLUkkKExaNERJUikgLUkkKFBSR0RJUikgLURYWEhfTkFNRVNQQUNFPUxaNF8KLSBGTEFHUyAgICA9ICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKExERkxBR1MpCi0gCi0gCi1AQCAtNzksMzEgKzc5LDMxIEBAIGx6NGMzMjogICAjIGNyZWF0ZSBhIDMyLWJpdHMgdmVyc2lvbiBmb3IgMzIvNjQgaW50ZXJvcCB0ZXN0cwotIAkkKE1BS0UpIC1DICQoUFJHRElSKSBjbGVhbiAkQCBDRkxBR1M9Ii1tMzIgJChDRkxBR1MpIgotIAljcCAkKExaNCkgJChMWjQpYzMyCi0gCi0tZnVsbGJlbmNoICA6ICQoTElCRElSKS9sejQubyAkKExJQkRJUikvbHo0aGMubyAkKExJQkRJUikvbHo0ZnJhbWUubyAkKExJQkRJUikveHhoYXNoLm8gZnVsbGJlbmNoLmMKLStmdWxsYmVuY2ggIDogJChMWjRESVIpL2x6NC5vICQoTFo0RElSKS9sejRoYy5vICQoTFo0RElSKS9sejRmcmFtZS5vICQoTFo0RElSKS94eGhhc2gubyBmdWxsYmVuY2guYwotIAkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKQotIAotLWZ1bGxiZW5jaC1saWI6IGZ1bGxiZW5jaC5jICQoTElCRElSKS94eGhhc2guYwotLQkkKE1BS0UpIC1DICQoTElCRElSKSBsaWJsejQuYQotLQkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKSAkKExJQkRJUikvbGlibHo0LmEKLStmdWxsYmVuY2gtbGliOiBmdWxsYmVuY2guYyAkKExaNERJUikveHhoYXNoLmMKLSsJJChNQUtFKSAtQyAkKExaNERJUikgbGlibHo0LmEKLSsJJChDQykgJChGTEFHUykgJF4gLW8gJEAkKEVYVCkgJChMWjRESVIpL2xpYmx6NC5hCi0gCi0tZnVsbGJlbmNoLWRsbDogZnVsbGJlbmNoLmMgJChMSUJESVIpL3h4aGFzaC5jCi0tCSQoTUFLRSkgLUMgJChMSUJESVIpIGxpYmx6NAotLQkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKSAtRExaNF9ETExfSU1QT1JUPTEgJChMSUJESVIpL2RsbC9saWJsejQuZGxsCi0rZnVsbGJlbmNoLWRsbDogZnVsbGJlbmNoLmMgJChMWjRESVIpL3h4aGFzaC5jCi0rCSQoTUFLRSkgLUMgJChMWjRESVIpIGxpYmx6NAotKwkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKSAtRExaNF9ETExfSU1QT1JUPTEgJChMWjRESVIpL2RsbC9saWJsejQuZGxsCi0gCi0tZnV6emVyICA6ICQoTElCRElSKS9sejQubyAkKExJQkRJUikvbHo0aGMubyAkKExJQkRJUikveHhoYXNoLm8gZnV6emVyLmMKLStmdXp6ZXIgIDogJChMWjRESVIpL2x6NC5vICQoTFo0RElSKS9sejRoYy5vICQoTFo0RElSKS94eGhhc2gubyBmdXp6ZXIuYwotIAkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKQotIAotLWZyYW1ldGVzdDogJChMSUJESVIpL2x6NGZyYW1lLm8gJChMSUJESVIpL2x6NC5vICQoTElCRElSKS9sejRoYy5vICQoTElCRElSKS94eGhhc2gubyBmcmFtZXRlc3QuYwotK2ZyYW1ldGVzdDogJChMWjRESVIpL2x6NGZyYW1lLm8gJChMWjRESVIpL2x6NC5vICQoTFo0RElSKS9sejRoYy5vICQoTFo0RElSKS94eGhhc2gubyBmcmFtZXRlc3QuYwotIAkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKQotIAotLWZhc3R0ZXN0OiAkKExJQkRJUikvbHo0Lm8gZmFzdHRlc3QuYwotK2Zhc3R0ZXN0OiAkKExaNERJUikvbHo0Lm8gZmFzdHRlc3QuYwotIAkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKQotIAotIGRhdGFnZW4gOiAkKFBSR0RJUikvZGF0YWdlbi5jIGRhdGFnZW5jbGkuYwotIAkkKENDKSAkKEZMQUdTKSAtSSQoUFJHRElSKSAkXiAtbyAkQCQoRVhUKQotIAotIGNsZWFuOgotLQlAJChNQUtFKSAtQyAkKExJQkRJUikgJEAgPiAkKFZPSUQpCi0rCUAkKE1BS0UpIC1DICQoTFo0RElSKSAkQCA+ICQoVk9JRCkKLSAJQCQoTUFLRSkgLUMgJChQUkdESVIpICRAID4gJChWT0lEKQotIAlAJChSTSkgY29yZSAqLm8gKi50ZXN0IHRtcCogXAotICAgICAgICAgZnVsbGJlbmNoLWRsbCQoRVhUKSBmdWxsYmVuY2gtbGliJChFWFQpIFwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuNy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuNy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmExYWI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NF8xLjcuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0cmVtZWx5IEZhc3QgQ29tcHJlc3Npb24gYWxnb3JpdGhtIgotREVTQ1JJUFRJT04gPSAiTFo0IGlzIGEgdmVyeSBmYXN0IGxvc3NsZXNzIGNvbXByZXNzaW9uIGFsZ29yaXRobSwgcHJvdmlkaW5nIGNvbXByZXNzaW9uIHNwZWVkIGF0IDQwMCBNQi9zIHBlciBjb3JlLCBzY2FsYWJsZSB3aXRoIG11bHRpLWNvcmVzIENQVS4gSXQgYWxzbyBmZWF0dXJlcyBhbiBleHRyZW1lbHkgZmFzdCBkZWNvZGVyLCB3aXRoIHNwZWVkIGluIG11bHRpcGxlIEdCL3MgcGVyIGNvcmUsIHR5cGljYWxseSByZWFjaGluZyBSQU0gc3BlZWQgbGltaXRzIG9uIG11bHRpLWNvcmUgc3lzdGVtcy4iCi0KLUxJQ0VOU0UgPSAiQlNEIHwgQlNELTItQ2xhdXNlIHwgR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpYi9MSUNFTlNFO21kNT1lYmMyZWE0ODE0YTY0ZGU3NzA4ZjE1NzE5MDRiMzJjY1wKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Byb2dyYW1zL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTdmMjg1N2Q1OGJlZmY2ZDA0MTM3YmY5YjA5ZTVmZmI2IgotCi1QRSA9ICIxIgotCi1TUkNSRVYgPSAiN2JiNjRmZjJiNjlhOWY4MzY3ZGU5YWI0ODNjZGFkZjQyYjRjMWI2NSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x6NC9sejQuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VNQUtFID0gIlBSRUZJWD0ke3ByZWZpeH0gQ0M9JyR7Q0N9JyBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBJTkNMVURFRElSPSR7aW5jbHVkZWRpcn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NF8xLjguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NF8xLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWQxN2UxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuOC4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiRXh0cmVtZWx5IEZhc3QgQ29tcHJlc3Npb24gYWxnb3JpdGhtIgorREVTQ1JJUFRJT04gPSAiTFo0IGlzIGEgdmVyeSBmYXN0IGxvc3NsZXNzIGNvbXByZXNzaW9uIGFsZ29yaXRobSwgcHJvdmlkaW5nIGNvbXByZXNzaW9uIHNwZWVkIGF0IDQwMCBNQi9zIHBlciBjb3JlLCBzY2FsYWJsZSB3aXRoIG11bHRpLWNvcmVzIENQVS4gSXQgYWxzbyBmZWF0dXJlcyBhbiBleHRyZW1lbHkgZmFzdCBkZWNvZGVyLCB3aXRoIHNwZWVkIGluIG11bHRpcGxlIEdCL3MgcGVyIGNvcmUsIHR5cGljYWxseSByZWFjaGluZyBSQU0gc3BlZWQgbGltaXRzIG9uIG11bHRpLWNvcmUgc3lzdGVtcy4iCisKK0xJQ0VOU0UgPSAiQlNEIHwgQlNELTItQ2xhdXNlIHwgR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpYi9MSUNFTlNFO21kNT1lYmMyZWE0ODE0YTY0ZGU3NzA4ZjE1NzE5MDRiMzJjYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wcm9ncmFtcy9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT1kNTdjMGQyMWNiOTE3ZmI0ZTBhZjI0NTRhYTQ4Yjk1NiBcCisgICAgICAgICAgICAgICAgICAgICIKKworUEUgPSAiMSIKKworU1JDUkVWID0gImIzNjkyZGI0NmQyYjIzYTdjMGFmMmQ1ZTY5OTg4Yzk0ZjEyNmUxMGEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sejQvbHo0LmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSBDQz0nJHtDQ30nIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfSIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIvMDAwMS1GaXgtb2Jzb2xldGUtQVJDLWFzbS1jb25zdHJhaW50cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyLzAwMDEtRml4LW9ic29sZXRlLUFSQy1hc20tY29uc3RyYWludHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkMWIwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyLzAwMDEtRml4LW9ic29sZXRlLUFSQy1hc20tY29uc3RyYWludHMucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorbXBmci1sb25nbG9uZy5oOiBGaXggb2Jzb2xldGUgQVJDIGFzbSBjb25zdHJhaW50cworCitUaGlzIHBhdGNoIHJlcGxhY2VzIG9ic29sZXRlIEFSQyAiSiIgYXNtIGNvbnN0cmFpbnQgd2l0aAordXAtdG8tZGF0ZSAiQ2FsIiBjb25zdHJhaW50LgorCisiSiIgY29uc3RyYWludCBvbmx5IGV4aXN0ZWQgaW4gcHJlLXVwc3RyZWFtIEdDQyBwb3J0IGZvciBBUkMuCitJbiBjdXJyZW50IHVwc3RyZWFtIHBvcnQgIkNhbCIgY29uc3RyYWludCBpcyB1c2VkIHdoaWNoIGxlYWRzCit0byBjb21waWxlLXRpbWUgZXJyb3IuCisKK1Byb3Bvc2VkIGZpeCBpcyBrbm93biB0byB3b3JrIGluIEJ1aWxkcm9vdCwgQ3Jvc3N0b29sLU5HIGV0Yy4KKworWzFdIGh0dHBzOi8vZ2NjLmdudS5vcmcvZ2l0Lz9wPWdjYy5naXQ7YT1jb21taXQ7aD0wOWNiNmExN2U3MWJkNDBkMmZiZmFmODJhMTUwMmZjMjEwZTMzYzg3CisKK1NpZ25lZC1vZmYtYnk6IENsYXVkaXUgWmlzc3VsZXNjdSA8Y2xhemlzc0BzeW5vcHN5cy5jb20+CitTaWduZWQtb2ZmLWJ5OiBWbGFkIFpha2hhcm92IDx2emFraGFyQHN5bm9wc3lzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2ZvcmdlLmlucmlhLmZyL3NjbS92aWV3dmMucGhwL21wZnI/dmlldz1yZXZpc2lvbiZyZXZpc2lvbj0xMzI1MV0KKy0tLQorSW5kZXg6IHNyYy9tcGZyLWxvbmdsb25nLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL3NyYy9tcGZyLWxvbmdsb25nLmgJKHJldmlzaW9uIDEwOTYzKQorKysrIGIvc3JjL21wZnItbG9uZ2xvbmcuaAkod29ya2luZyBjb3B5KQorQEAgLTQxNiwxNyArNDE2LDE3IEBACisgCSAgIDogIj1yIiAoc2gpLAkJCQkJCQlcCisgCSAgICAgIj0mciIgKHNsKQkJCQkJCQlcCisgCSAgIDogInIiICAoKFVTSXR5cGUpIChhaCkpLAkJCQkJXAorLQkgICAgICJySUoiICgoVVNJdHlwZSkgKGJoKSksCQkJCQlcCisrCSAgICAgInJJQ2FsIiAoKFVTSXR5cGUpIChiaCkpLAkJCQkJXAorIAkgICAgICIlciIgKChVU0l0eXBlKSAoYWwpKSwJCQkJCVwKKy0JICAgICAicklKIiAoKFVTSXR5cGUpIChibCkpKQorKwkgICAgICJySUNhbCIgKChVU0l0eXBlKSAoYmwpKSkKKyAjZGVmaW5lIHN1Yl9kZG1tc3Moc2gsIHNsLCBhaCwgYWwsIGJoLCBibCkgXAorICAgX19hc21fXyAoInN1Yi5mXHQlMSwgJTQsICU1XG5cdHNiY1x0JTAsICUyLCAlMyIJCQlcCisgCSAgIDogIj1yIiAoc2gpLAkJCQkJCQlcCisgCSAgICAgIj0mciIgKHNsKQkJCQkJCQlcCisgCSAgIDogInIiICgoVVNJdHlwZSkgKGFoKSksCQkJCQlcCistCSAgICAgInJJSiIgKChVU0l0eXBlKSAoYmgpKSwJCQkJCVwKKysJICAgICAicklDYWwiICgoVVNJdHlwZSkgKGJoKSksCQkJCQlcCisgCSAgICAgInIiICgoVVNJdHlwZSkgKGFsKSksCQkJCQlcCistCSAgICAgInJJSiIgKChVU0l0eXBlKSAoYmwpKSkKKysJICAgICAicklDYWwiICgoVVNJdHlwZSkgKGJsKSkpCisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQgKF9fYXJtX18pICYmIChkZWZpbmVkIChfX3RodW1iMl9fKSB8fCAhZGVmaW5lZCAoX190aHVtYl9fKSkgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIvbG9uZy1sb25nLXRodW1iLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIvbG9uZy1sb25nLXRodW1iLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTcxMDBlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyL2xvbmctbG9uZy10aHVtYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gODQwMjFiMWUyMzY1MDgxNjliZTY1ZTgwMmE5YzBhMjVmYzlhODgyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBoaWwgQmx1bmRlbGwgPHBoaWxiQGdudS5vcmc+Ci1EYXRlOiBNb24sIDI3IE9jdCAyMDA4IDIyOjI2OjM1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1wZnI6IGNydXNhZGUgYWdhaW5zdCBpbmxpbmUgYXNzZW1ibGVyCi0KLVdpdGhvdXQgdGhpcywgYnVpbGQgZmFpbHMgZm9yIHRodW1iOgotfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci18IHtzdGFuZGFyZCBpbnB1dH06MTk5OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgdW11bGwgc2wscjAscjIscjEnCi18IHtzdGFuZGFyZCBpbnB1dH06MjE0OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgdW11bGwgc2wscjIscjEsZnAnCi18IHtzdGFuZGFyZCBpbnB1dH06MjE5OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYGFkZHMgZnAscjAsc2wnCi18IHtzdGFuZGFyZCBpbnB1dH06MjIwOiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBhZGMgcjIscjIsIzAnCi18IHtzdGFuZGFyZCBpbnB1dH06MjM1OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgdW11bGwgcjAsc2wscjEscjMnCi18IHtzdGFuZGFyZCBpbnB1dH06MjQ0OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgdW11bGwgZnAsaXAscjEscjMnCi18IHtzdGFuZGFyZCBpbnB1dH06MjUzOiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYGFkZHMgcjMsc2wsZnAnCi18IHtzdGFuZGFyZCBpbnB1dH06MjU0OiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBhZGMgaXAsaXAsIzAnCi18IHtzdGFuZGFyZCBpbnB1dH06MjU5OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYGFkZHMgc2wscjEscjAnCi18IHtzdGFuZGFyZCBpbnB1dH06NjQyOiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgdW11bGwgcjAscjIscjMscjEnCi18IC4uL2FybS1vZS1saW51eC1nbnVlYWJpLWxpYnRvb2wgLS10YWc9Q0MgICAtLW1vZGU9Y29tcGlsZSBhcm0tb2UtbGludXgtZ251ZWFiaS1nY2MgIC1tYXJjaD1hcm12NXRlICAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrICAtbXR1bmU9eHNjYWxlIC0tc3lzcm9vdD0vT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9zcGl0eiAtREhBVkVfSU5UVFlQRVNfSD0xIC1ESEFWRV9TVERJTlRfSD0xIC1EVElNRV9XSVRIX1NZU19USU1FPTEgLURIQVZFX0xPQ0FMRV9IPTEgLURIQVZFX1dDSEFSX0g9MSAtREhBVkVfU1REQVJHPTEgLURIQVZFX1NZU19USU1FX0g9MSAtREhBVkVfQUxMT0NBX0g9MSAtREhBVkVfU1RESU5UX0g9MSAtREhBVkVfVkFfQ09QWT0xIC1ESEFWRV9TRVRMT0NBTEU9MSAtREhBVkVfR0VUVElNRU9GREFZPTEgLURIQVZFX0xPTkdfTE9ORz0xIC1ESEFWRV9JTlRNQVhfVD0xIC1ETVBGUl9IQVZFX0lOVE1BWF9NQVg9MSAtRE1QRlJfSEFWRV9GRVNFVFJPVU5EPTEgLURIQVZFX1JPVU5EPTEgLURIQVZFX1RSVU5DPTEgLURIQVZFX0ZMT09SPTEgLURIQVZFX0NFSUw9MSAtREhBVkVfTkVBUkJZSU5UPTEgLURMVF9PQkpESVI9XCIubGlicy9cIiAtREhBVkVfQVRUUklCVVRFX01PREU9MSAtREhBVkVfX19HTVBOX1JPT1RSRU09MSAtREhBVkVfX19HTVBOX1NCUEkxX0RJVkFQUFJfUT0xIC1JLiAgICAgLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtZmZsb2F0LXN0b3JlIC1jIC1vIHBvdy5sbyBwb3cuYwotfCB7c3RhbmRhcmQgaW5wdXR9OjExNTQ6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCByMCxyMSxzbCxpcCcKLXwge3N0YW5kYXJkIGlucHV0fToxMTY2OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgdW11bGwgcjMscjIsaXAscjAnCi18IHtzdGFuZGFyZCBpbnB1dH06MTE3MTogRXJyb3I6IGluc3RydWN0aW9uIG5vdCBzdXBwb3J0ZWQgaW4gVGh1bWIxNiBtb2RlIC0tIGBhZGRzIHIwLHIxLHIzJwotfCB7c3RhbmRhcmQgaW5wdXR9OjExNzI6IEVycm9yOiB1bnNoaWZ0ZWQgcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGFkYyByMixyMiwjMCcKLXwgbWFrZVsyXTogKioqIFttdWwubG9dIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIG1wZnIub2xkL3NyYy9tcGZyLWxvbmdsb25nLmgJMjAwOC0wMS0wMSAwMzoyOTowOS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBtcGZyL3NyYy9tcGZyLWxvbmdsb25nLmgJMjAwOC0xMC0yNyAyMTo0Njo0NC4wMDAwMDAwMDAgKzAwMDAKLUBAIC00MDYsNyArNDA2LDcgQEAKLSAJICAgICAicklKIiAoKFVTSXR5cGUpIChibCkpKQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIChfX2FybV9fKSAmJiBXX1RZUEVfU0laRSA9PSAzMgotKyNpZiBkZWZpbmVkIChfX2FybV9fKSAmJiBXX1RZUEVfU0laRSA9PSAzMiAmJiAhZGVmaW5lZChfX3RodW1iX18pCi0gI2RlZmluZSBhZGRfc3NhYWFhKHNoLCBzbCwgYWgsIGFsLCBiaCwgYmwpIFwKLSAgIF9fYXNtX18gKCJhZGRzXHQlMSwgJTQsICU1XG5cdGFkY1x0JTAsICUyLCAlMyIJCQlcCi0gCSAgIDogIj1yIiAoc2gpLCAiPSZyIiAoc2wpCQkJCQlcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzhjMGJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgotTElDRU5TRSA9ICJMR1BMdjMrIgotU0VDVElPTiA9ICJkZXZlbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgotREVQRU5EUyA9ICJnbXAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy9tcGZyLSR7UFZ9L21wZnItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2xvbmctbG9uZy10aHVtYi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNGFjMjQ2Y2Y5Nzk1YTQ0OTFlNzc2NjAwMmNkNTI4ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMTVmZGU4MmIzOTc5ZmJlNWY4MzUwMTk4NmQzMjgzMzFiYThkZGYwMDhjMWZmM2RhM2MyMzhmNDljYTA2MmJjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy9tcGZyLWN1cnJlbnQvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWU3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGNvbXB1dGF0aW9ucyB3aXRoIGV4YWN0IHJvdW5kaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy8iCitMSUNFTlNFID0gIkxHUEx2MysiCitTRUNUSU9OID0gImRldmVsIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCitERVBFTkRTID0gImdtcCBhdXRvY29uZi1hcmNoaXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vYnNvbGV0ZS1BUkMtYXNtLWNvbnN0cmFpbnRzLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImI4ZGQxOWJkOWJiMWVjODgzMWE2YTU4MmE3MzA4MDczIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3ODc0YTYwODI2MzAzZWUyZmI2YWZmYzZkYzBkZGQzZTc0OWU5YmZjYjRjODY1NWUzOTUzZDA0NThhNmUxNmUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItY3VycmVudC8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdkYjZhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIk5ldyBHTlUgUG9ydGFibGUgVGhyZWFkcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvc29mdHdhcmUvcHRoLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmNhY2VkMGIyNWRmZWZkNGM2MDFkOTJiZDE1MTE2ZGVcCi0gICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjliYTJkYzQzMDJkMmYzMmM2NjczN2M0M2VkMTkxYjFiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NGE2OTBjMWY1MzdiOTJlZDgyOWQ4NjdiZWU1MzdlNDZiZTkzZmJkNjBiMTZjMDQ2MzBmYmJmY2Q5ZGIzYzIiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMTBlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjYuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJOZXcgR05VIFBvcnRhYmxlIFRocmVhZHMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3NvZnR3YXJlL3B0aC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJjYWNlZDBiMjVkZmVmZDRjNjAxZDkyYmQxNTExNmRlXAorICAgICIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbnB0aC9ucHRoLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNzVkMWExNWFkOTY5ZjMyZDI1ZjFhNzYzMDkyOTg1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzkzYWJkOWFkY2YwNzYyZDM0Nzk4ZGMzNGZkY2Y0ZDBkMjJhODQxMDcyMWU3NmYxZTNhZmNkMWRhYTRlMmQxIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L25wdGgtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgbXVsdGlsaWJfaGVhZGVyIAorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBucHRoLmgKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAzLUFkZC10eXBlLWRlZmluaXRpb25zLWZvci10aGUtUklTQy1WLWFyY2hpdGVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDMtQWRkLXR5cGUtZGVmaW5pdGlvbnMtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTE0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAzLUFkZC10eXBlLWRlZmluaXRpb25zLWZvci10aGUtUklTQy1WLWFyY2hpdGVjdHVyZS5wYXRjaApAQCAtMCwwICsxLDE1MCBAQAorIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKKyMgVXNlciBLYXJzdGVuIE1lcmtlciA8bWVya2VyQGRlYmlhbi5vcmc+CisjIERhdGUgMTUyMzk3NDMzMyAtNzIwMAorIyBOb2RlIElEIGY0Nzg3MWUyYWViMTZiMzlkNGY1MTY2OTBlMjVjODFiMDRkNmQwNWEKKyMgUGFyZW50ICA3NzZkYjk2ZjgzNGNiODZlODg2MzA1MjIwMWQ1NWY2MGEyZGE5MWNiCitCdWcgMTMwODU4NCwgQWRkIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLCByPWthaWUKKworU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorWyBDaGFuZ2VzIGJ5IEFGOgorIC0gUmViYXNlIG9uIG90aGVyIFlvY3RvIHBhdGNoZXMKK10KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL2hnLm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvcmV2L2Y0Nzg3MWUyYWViMSBdCisKK2RpZmYgLS1naXQgYS9wci9pbmNsdWRlL21kL19saW51eC5jZmcgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKKy0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCitAQCAtMTAxNSwxNiArMTAxNSwxMDggQEAKKyAjZGVmaW5lIFBSX0FMSUdOX09GX0ZMT0FUICAgNAorICNkZWZpbmUgUFJfQUxJR05fT0ZfRE9VQkxFICA0CisgI2RlZmluZSBQUl9BTElHTl9PRl9QT0lOVEVSIDQKKyAjZGVmaW5lIFBSX0FMSUdOX09GX1dPUkQgICAgNAorIAorICNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgIDIKKyAjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRF9MT0cyICAzCisgCisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiAoX19yaXNjdl94bGVuID09IDMyKQorKworKyN1bmRlZiAgSVNfQklHX0VORElBTgorKyNkZWZpbmUgSVNfTElUVExFX0VORElBTiAxCisrI3VuZGVmICBJU182NAorKworKyNkZWZpbmUgUFJfQllURVNfUEVSX0JZVEUgICAxCisrI2RlZmluZSBQUl9CWVRFU19QRVJfU0hPUlQgIDIKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQgICAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0lOVDY0ICA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfTE9ORyAgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9GTE9BVCAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0RPVUJMRSA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRCAgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRCAgOAorKworKyNkZWZpbmUgUFJfQklUU19QRVJfQllURSAgICA4CisrI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVCAgIDE2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQgICAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NCAgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HICAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVCAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEUgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEICAgIDMyCisrCisrI2RlZmluZSBQUl9CSVRTX1BFUl9CWVRFX0xPRzIgICAzCisrI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVF9MT0cyICA0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlRfTE9HMiAgICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NF9MT0cyICA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HX0xPRzIgICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVF9MT0cyICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEVfTE9HMiA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEX0xPRzIgICA1CisrCisrI2RlZmluZSBQUl9BTElHTl9PRl9TSE9SVCAgIDIKKysjZGVmaW5lIFBSX0FMSUdOX09GX0lOVCAgICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfTE9ORyAgICA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9JTlQ2NCAgIDgKKysjZGVmaW5lIFBSX0FMSUdOX09GX0ZMT0FUICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfRE9VQkxFICA4CisrI2RlZmluZSBQUl9BTElHTl9PRl9QT0lOVEVSIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX1dPUkQgICAgNAorKworKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgMgorKyNkZWZpbmUgUFJfQllURVNfUEVSX0RXT1JEX0xPRzIgMworKworKyNlbGlmIGRlZmluZWQoX19yaXNjdikgJiYgKF9fcmlzY3ZfeGxlbiA9PSA2NCkKKysKKysjdW5kZWYgIElTX0JJR19FTkRJQU4KKysjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMQorKyNkZWZpbmUgSVNfNjQKKysKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9CWVRFICAgMQorKyNkZWZpbmUgUFJfQllURVNfUEVSX1NIT1JUICAyCisrI2RlZmluZSBQUl9CWVRFU19QRVJfSU5UICAgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQ2NCAgOAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0xPTkcgICA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfRkxPQVQgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9ET1VCTEUgOAorKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkQgICA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfRFdPUkQgIDgKKysKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0JZVEUgICAgOAorKyNkZWZpbmUgUFJfQklUU19QRVJfU0hPUlQgICAxNgorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UICAgICAzMgorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UNjQgICA2NAorKyNkZWZpbmUgUFJfQklUU19QRVJfTE9ORyAgICA2NAorKyNkZWZpbmUgUFJfQklUU19QRVJfRkxPQVQgICAzMgorKyNkZWZpbmUgUFJfQklUU19QRVJfRE9VQkxFICA2NAorKyNkZWZpbmUgUFJfQklUU19QRVJfV09SRCAgICA2NAorKworKyNkZWZpbmUgUFJfQklUU19QRVJfQllURV9MT0cyICAgMworKyNkZWZpbmUgUFJfQklUU19QRVJfU0hPUlRfTE9HMiAgNAorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UX0xPRzIgICAgNQorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UNjRfTE9HMiAgNgorKyNkZWZpbmUgUFJfQklUU19QRVJfTE9OR19MT0cyICAgNgorKyNkZWZpbmUgUFJfQklUU19QRVJfRkxPQVRfTE9HMiAgNQorKyNkZWZpbmUgUFJfQklUU19QRVJfRE9VQkxFX0xPRzIgNgorKyNkZWZpbmUgUFJfQklUU19QRVJfV09SRF9MT0cyICAgNgorKworKyNkZWZpbmUgUFJfQUxJR05fT0ZfU0hPUlQgICAyCisrI2RlZmluZSBQUl9BTElHTl9PRl9JTlQgICAgIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX0xPTkcgICAgOAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfSU5UNjQgICA4CisrI2RlZmluZSBQUl9BTElHTl9PRl9GTE9BVCAgIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX0RPVUJMRSAgOAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfUE9JTlRFUiA4CisrI2RlZmluZSBQUl9BTElHTl9PRl9XT1JEICAgIDgKKysKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9XT1JEX0xPRzIgIDMKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRF9MT0cyIDMKKysKKyAjZWxzZQorIAorICNlcnJvciAiVW5rbm93biBDUFUgYXJjaGl0ZWN0dXJlIgorIAorICNlbmRpZgorIAorICNpZm5kZWYgSEFWRV9MT05HX0xPTkcKKyAjZGVmaW5lCUhBVkVfTE9OR19MT05HCitkaWZmIC0tZ2l0IGEvcHIvaW5jbHVkZS9tZC9fbGludXguaCBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKKy0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKKysrKyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKK0BAIC01NCwxNiArNTQsMjAgQEAKKyAjZWxpZiBkZWZpbmVkKF9fYXZyMzJfXykKKyAjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgImF2cjMyIgorICNlbGlmIGRlZmluZWQoX19tMzJyX18pCisgI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJtMzJyIgorICNlbGlmIGRlZmluZWQoX19uaW9zMl9fKQorICNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAibmlvczIiCisgI2VsaWYgZGVmaW5lZChfX29yMWtfXykKKyAjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgIm9yMWsiCisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiAoX19yaXNjdl94bGVuID09IDMyKQorKyNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAicmlzY3YzMiIKKysjZWxpZiBkZWZpbmVkKF9fcmlzY3YpICYmIChfX3Jpc2N2X3hsZW4gPT0gNjQpCisrI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJyaXNjdjY0IgorICNlbHNlCisgI2Vycm9yICJVbmtub3duIENQVSBhcmNoaXRlY3R1cmUiCisgI2VuZGlmCisgI2RlZmluZSBQUl9ETExfU1VGRklYCQkiLnNvIgorIAorICNkZWZpbmUgX1BSX1ZNQkFTRSAgICAgICAgICAgICAgMHgzMDAwMDAwMAorICNkZWZpbmUgX1BSX1NUQUNLX1ZNQkFTRQkweDUwMDAwMDAwCisgI2RlZmluZSBfTURfREVGQVVMVF9TVEFDS19TSVpFCTY1NTM2TAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDA0LUFkZC1BUkMtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDQtQWRkLUFSQy1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNjg2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDA0LUFkZC1BUkMtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDg4IEBACitGcm9tIDZjYjViMGJlODgzNzIyMmExZTAxNzQ1ZjJjZjU3Y2QwZTU5MzE4NmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnRvaW5lIFRlbmFydCA8YW50b2luZS50ZW5hcnRAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDoyODoyMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgQVJDIHN1cHBvcnQKKworW0FsZXhleTogUmViYXNlZCBvbiB0b3Agb2Ygb3RoZXIgcGF0Y2hlcyBsaWtlIFJpc2NWLCBOSU9TMiBldGNdLgorCitTaWduZWQtb2ZmLWJ5OiBBbnRvaW5lIFRlbmFydCA8YW50b2luZS50ZW5hcnRAYm9vdGxpbi5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTIzNzggXQorLS0tCisgcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHByL2luY2x1ZGUvbWQvX2xpbnV4LmggICB8ICAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9wci9pbmNsdWRlL21kL19saW51eC5jZmcgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKK2luZGV4IGZlYzg1MjUzNzhkYy4uNWY0ZmEwZWFjNzgzIDEwMDY0NAorLS0tIGEvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCisrKysgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKK0BAIC0xMTU3LDYgKzExNTcsNTEgQEAKKyAjZGVmaW5lIFBSX0JZVEVTX1BFUl9XT1JEX0xPRzIgIDMKKyAjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRF9MT0cyIDMKKyAKKysjZWxpZiBkZWZpbmVkKF9fYXJjX18pCisrCisrI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOIDEKKysjdW5kZWYgIElTX0JJR19FTkRJQU4KKysKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9CWVRFICAgMQorKyNkZWZpbmUgUFJfQllURVNfUEVSX1NIT1JUICAyCisrI2RlZmluZSBQUl9CWVRFU19QRVJfSU5UICAgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQ2NCAgOAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0xPTkcgICA0CisrI2RlZmluZSBQUl9CWVRFU19QRVJfRkxPQVQgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9ET1VCTEUgOAorKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkQgICA0CisrI2RlZmluZSBQUl9CWVRFU19QRVJfRFdPUkQgIDgKKysKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0JZVEUgICAgOAorKyNkZWZpbmUgUFJfQklUU19QRVJfU0hPUlQgICAxNgorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UICAgICAzMgorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UNjQgICA2NAorKyNkZWZpbmUgUFJfQklUU19QRVJfTE9ORyAgICAzMgorKyNkZWZpbmUgUFJfQklUU19QRVJfRkxPQVQgICAzMgorKyNkZWZpbmUgUFJfQklUU19QRVJfRE9VQkxFICA2NAorKyNkZWZpbmUgUFJfQklUU19QRVJfV09SRCAgICAzMgorKworKyNkZWZpbmUgUFJfQklUU19QRVJfQllURV9MT0cyICAgMworKyNkZWZpbmUgUFJfQklUU19QRVJfU0hPUlRfTE9HMiAgNAorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UX0xPRzIgICAgNQorKyNkZWZpbmUgUFJfQklUU19QRVJfSU5UNjRfTE9HMiAgNgorKyNkZWZpbmUgUFJfQklUU19QRVJfTE9OR19MT0cyICAgNQorKyNkZWZpbmUgUFJfQklUU19QRVJfRkxPQVRfTE9HMiAgNQorKyNkZWZpbmUgUFJfQklUU19QRVJfRE9VQkxFX0xPRzIgNgorKyNkZWZpbmUgUFJfQklUU19QRVJfV09SRF9MT0cyICAgNQorKworKyNkZWZpbmUgUFJfQUxJR05fT0ZfU0hPUlQgICAyCisrI2RlZmluZSBQUl9BTElHTl9PRl9JTlQgICAgIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX0xPTkcgICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfSU5UNjQgICA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9GTE9BVCAgIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX0RPVUJMRSAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfUE9JTlRFUiA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9XT1JEICAgIDQKKysKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9XT1JEX0xPRzIgICAyCisrI2RlZmluZSBQUl9CWVRFU19QRVJfRFdPUkRfTE9HMiAgMworKworICNlbHNlCisgCisgI2Vycm9yICJVbmtub3duIENQVSBhcmNoaXRlY3R1cmUiCitkaWZmIC0tZ2l0IGEvcHIvaW5jbHVkZS9tZC9fbGludXguaCBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKK2luZGV4IDhlMDRmYWQ0NzlhMS4uNjI4YjEyMTdlOWM4IDEwMDY0NAorLS0tIGEvcHIvaW5jbHVkZS9tZC9fbGludXguaAorKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguaAorQEAgLTYzLDYgKzYzLDggQEAKKyAjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgInJpc2N2MzIiCisgI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiAoX19yaXNjdl94bGVuID09IDY0KQorICNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAicmlzY3Y2NCIKKysjZWxpZiBkZWZpbmVkKF9fYXJjX18pCisrI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJhcmMiCisgI2Vsc2UKKyAjZXJyb3IgIlVua25vd24gQ1BVIGFyY2hpdGVjdHVyZSIKKyAjZW5kaWYKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiCmluZGV4IGRlMmM4NzEuLjAyMTJiZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xOS5iYgpAQCAtMTEsNiArMTEsOCBAQAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC10eXBlLWRlZmluaXRpb25zLWZvci10aGUtUklTQy1WLWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkZC1BUkMtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKICIKIApAQCAtMTQ4LDcgKzE1MCw5IEBACiAgICAgeG5vdGlmeSBcCiAgICAgemVyb2xlbiIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vbnNwci1jb25maWciCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgogUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLUJ1Zy0xNDM3NzM0LVVzZS1zbnByaW50Zi1pbi1zaWduLmMtci10dGF1YmVydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLUJ1Zy0xNDM3NzM0LVVzZS1zbnByaW50Zi1pbi1zaWduLmMtci10dGF1YmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMxMGYzMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotRnJvbSA2ZjdkN2JlOTk5N2JhNjcyN2E1YWQ3YzM4MDBkZjkwNTExNjBkYzEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFRob21zb24gPG1hcnRpbi50aG9tc29uQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTMgRmViIDIwMTggMTI6MzA6NTggKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDE0Mzc3MzQgLSBVc2Ugc25wcmludGYgaW4gc2lnbi5jLCByPXR0YXViZXJ0Ci0KLS0tSEctLQotZXh0cmEgOiByZWJhc2Vfc291cmNlIDogOTc5MjFlY2U3MWZmODZiMThkMzJiODkxNTkxNjA4MjkwZWVkNGQ4MwotLS0tCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL25zcy1kZXYvbnNzL2NvbW1pdC8wYTkwNzhiM2NkZTk3YWRkN2M4MjVjOWQxMzQ2N2E4NDAxYWQwYzg4I2RpZmYtYjQyNTEyMTUxZGMxMzc1MzcwOTFmODIzZjc3MDE4MDQucGF0Y2hdCi0KLSBuc3MvY21kL3NpZ250b29sL3NpZ24uYyB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uc3MvY21kL3NpZ250b29sL3NpZ24uYyBiL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jCi1pbmRleCA2ZTc3NjA2OWEuLjZmOGU0Mzk0NiAxMDA2NDQKLS0tLSBhL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jCi0rKysgYi9uc3MvY21kL3NpZ250b29sL3NpZ24uYwotQEAgLTQzLDYgKzQzLDcgQEAgU2lnbkFyY2hpdmUoY2hhciAqdHJlZSwgY2hhciAqa2V5TmFtZSwgY2hhciAqemlwX2ZpbGUsIGludCBqYXZhc2NyaXB0LAotICAgICBpbnQgc3RhdHVzOwotICAgICBjaGFyIHRlbXBmbltGTlNJWkVdLCBmdWxsZm5bRk5TSVpFXTsKLSAgICAgaW50IGtleVR5cGUgPSByc2FLZXk7Ci0rICAgIGludCBjb3VudDsKLSAKLSAgICAgbWV0YWZpbGUgPSBtZXRhX2ZpbGU7Ci0gICAgIG9wdGltaXplID0gX29wdGltaXplOwotQEAgLTgxLDkgKzgyLDE4IEBAIFNpZ25BcmNoaXZlKGNoYXIgKnRyZWUsIGNoYXIgKmtleU5hbWUsIGNoYXIgKnppcF9maWxlLCBpbnQgamF2YXNjcmlwdCwKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIC8qIHJzYS9kc2EgdG8gemlwICovCi0tICAgICAgICBzcHJpbnRmKHRlbXBmbiwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAicnNhIikpOwotLSAgICAgICAgc3ByaW50ZihmdWxsZm4sICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7Ci0rICAgICAgICBjb3VudCA9IHNucHJpbnRmKHRlbXBmbiwgc2l6ZW9mKHRlbXBmbiksICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiIDogInJzYSIpKTsKLSsgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YodGVtcGZuKSkgewotKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOwotKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKLSsgICAgICAgICAgICBleGl0KEVSUlgpOwotKyAgICAgICAgfQotKyAgICAgICAgY291bnQgPSBzbnByaW50ZihmdWxsZm4sIHNpemVvZihmdWxsZm4pLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOwotKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZihmdWxsZm4pKSB7Ci0rICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7Ci0rICAgICAgICAgICAgZXJyb3JDb3VudCsrOwotKyAgICAgICAgICAgIGV4aXQoRVJSWCk7Ci0rICAgICAgICB9Ci0gICAgICAgICBKemlwQWRkKGZ1bGxmbiwgdGVtcGZuLCB6aXBmaWxlLCBjb21wcmVzc2lvbl9sZXZlbCk7Ci0gCi0gICAgICAgICAvKiBMb29wIHRocm91Z2ggYWxsIGZpbGVzICYgc3ViZGlyZWN0b3JpZXMsIGFkZCB0byBhcmNoaXZlICovCi1AQCAtOTMsMjAgKzEwMyw0NCBAQCBTaWduQXJjaGl2ZShjaGFyICp0cmVlLCBjaGFyICprZXlOYW1lLCBjaGFyICp6aXBfZmlsZSwgaW50IGphdmFzY3JpcHQsCi0gICAgIH0KLSAgICAgLyogbWYgdG8gemlwICovCi0gICAgIHN0cmNweSh0ZW1wZm4sICJNRVRBLUlORi9tYW5pZmVzdC5tZiIpOwotLSAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKLSsgICAgY291bnQgPSBzbnByaW50ZihmdWxsZm4sIHNpemVvZihmdWxsZm4pLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOwotKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKLSsgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBtYW5pZmVzdFxuIik7Ci0rICAgICAgICBlcnJvckNvdW50Kys7Ci0rICAgICAgICBleGl0KEVSUlgpOwotKyAgICB9Ci0gICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKLSAKLSAgICAgLyogc2YgdG8gemlwICovCi0tICAgIHNwcmludGYodGVtcGZuLCAiTUVUQS1JTkYvJXMuc2YiLCBiYXNlKTsKLS0gICAgc3ByaW50ZihmdWxsZm4sICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7Ci0rICAgIGNvdW50ID0gc25wcmludGYodGVtcGZuLCBzaXplb2YodGVtcGZuKSwgIk1FVEEtSU5GLyVzLnNmIiwgYmFzZSk7Ci0rICAgIGlmIChjb3VudCA+PSBzaXplb2YodGVtcGZuKSkgewotKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIHNmIG1ldGFkYXRhXG4iKTsKLSsgICAgICAgIGVycm9yQ291bnQrKzsKLSsgICAgICAgIGV4aXQoRVJSWCk7Ci0rICAgIH0KLSsgICAgY291bnQgPSBzbnByaW50ZihmdWxsZm4sIHNpemVvZihmdWxsZm4pLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOwotKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKLSsgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBzZiBtZXRhZGF0YVxuIik7Ci0rICAgICAgICBlcnJvckNvdW50Kys7Ci0rICAgICAgICBleGl0KEVSUlgpOwotKyAgICB9Ci0gICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKLSAKLSAgICAgLyogQWRkIHRoZSByc2EvZHNhIGZpbGUgdG8gdGhlIHppcCBhcmNoaXZlIG5vcm1hbGx5ICovCi0gICAgIGlmICgheHBpX2FyYykgewotICAgICAgICAgLyogcnNhL2RzYSB0byB6aXAgKi8KLS0gICAgICAgIHNwcmludGYodGVtcGZuLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyc2EiKSk7Ci0tICAgICAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKLSsgICAgICAgIGNvdW50ID0gc25wcmludGYodGVtcGZuLCBzaXplb2YodGVtcGZuKSwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIgOiAicnNhIikpOwotKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7Ci0rICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7Ci0rICAgICAgICAgICAgZXJyb3JDb3VudCsrOwotKyAgICAgICAgICAgIGV4aXQoRVJSWCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7Ci0rICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKLSsgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKLSsgICAgICAgICAgICBlcnJvckNvdW50Kys7Ci0rICAgICAgICAgICAgZXhpdChFUlJYKTsKLSsgICAgICAgIH0KLSAgICAgICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKLSAgICAgfQotIAotQEAgLTQwOCw2ICs0NDIsNyBAQCBzdGF0aWMgaW50Ci0gbWFuaWZlc3RvX3hwaV9mbihjaGFyICpyZWxwYXRoLCBjaGFyICpiYXNlZGlyLCBjaGFyICpyZWxkaXIsIGNoYXIgKmZpbGVuYW1lLCB2b2lkICphcmcpCi0gewotICAgICBjaGFyIGZ1bGxuYW1lW0ZOU0laRV07Ci0rICAgIGludCBjb3VudDsKLSAKLSAgICAgaWYgKHZlcmJvc2l0eSA+PSAwKSB7Ci0gICAgICAgICBQUl9mcHJpbnRmKG91dHB1dEZELCAiLS0+ICVzXG4iLCByZWxwYXRoKTsKLUBAIC00MjEsNyArNDU2LDEwIEBAIG1hbmlmZXN0b194cGlfZm4oY2hhciAqcmVscGF0aCwgY2hhciAqYmFzZWRpciwgY2hhciAqcmVsZGlyLCBjaGFyICpmaWxlbmFtZSwgdm9pCi0gICAgICAgICBpZiAoIVBMX0hhc2hUYWJsZUxvb2t1cChleHRlbnNpb25zLCBleHQpKQotICAgICAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0tICAgIHNwcmludGYoZnVsbG5hbWUsICIlcy8lcyIsIGJhc2VkaXIsIHJlbHBhdGgpOwotKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxuYW1lLCBzaXplb2YoZnVsbG5hbWUpLCAiJXMvJXMiLCBiYXNlZGlyLCByZWxwYXRoKTsKLSsgICAgaWYgKGNvdW50ID49IHNpemVvZihmdWxsbmFtZSkpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0gICAgIEp6aXBBZGQoZnVsbG5hbWUsIHJlbHBhdGgsIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKLSAKLSAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYjg2OTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL0ZpeC1jb21waWxhdGlvbi1mb3ItWDMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBjOGVhZGZjZGZiYzFkNWE0Nzk5ZTlhMjY0YjBmODU5Y2I1OTU0YzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLURhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMTE6NDA6NDcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA3LzddIEZpeCBjb21waWxhdGlvbiBmb3IgWDMyCi0KLVgzMiB1c2VzIDMyLWJpdCBwb2ludGVycywgbm90IDY0LWJpdC4KLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBuc3MvbGliL2ZyZWVibC9wb2x5MTMwNS1kb25uYS14NjQtc3NlMi1pbmNyZW1lbnRhbC1zb3VyY2UuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL25zcy9saWIvZnJlZWJsL3BvbHkxMzA1LWRvbm5hLXg2NC1zc2UyLWluY3JlbWVudGFsLXNvdXJjZS5jIGIvbnNzL2xpYi9mcmVlYmwvcG9seTEzMDUtZG9ubmEteDY0LXNzZTItaW5jcmVtZW50YWwtc291cmNlLmMKLWluZGV4IDJhMzMwMWUuLmQ0YWRlNDEgMTAwNjQ0Ci0tLS0gYS9uc3MvbGliL2ZyZWVibC9wb2x5MTMwNS1kb25uYS14NjQtc3NlMi1pbmNyZW1lbnRhbC1zb3VyY2UuYwotKysrIGIvbnNzL2xpYi9mcmVlYmwvcG9seTEzMDUtZG9ubmEteDY0LXNzZTItaW5jcmVtZW50YWwtc291cmNlLmMKLUBAIC04Nyw3ICs4NywxMSBAQCBzdGF0aWMgcG9seTEzMDVfc3RhdGVfaW50ZXJuYWwgSU5MSU5FCi0gICAgICoKLSAgICAgcG9seTEzMDVfYWxpZ25lZF9zdGF0ZShwb2x5MTMwNV9zdGF0ZSAqc3RhdGUpCi0gewotKyNpZmRlZiBfX0lMUDMyX18KLSsgICAgcmV0dXJuIChwb2x5MTMwNV9zdGF0ZV9pbnRlcm5hbCAqKSgoKHVpbnQzMl90KXN0YXRlICsgNjMpICYgfjYzKTsKLSsjZWxzZQotICAgICByZXR1cm4gKHBvbHkxMzA1X3N0YXRlX2ludGVybmFsICopKCgodWludDY0X3Qpc3RhdGUgKyA2MykgJiB+NjMpOwotKyNlbmRpZgotIH0KLSAKLSAvKiBjb3B5IDAtNjMgYnl0ZXMgKi8KLS0tIAotMi44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNGJjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmstY2VydDkuZGIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWtleTQuZGIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDdmMDhkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWtleTQuZGIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2gKaW5kZXggODZiMWI2MC4uZGU4MTJkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoCkBAIC0xOCwxMSArMTgsMTEgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IG5zcy0zLjI0L25zcy9jb3JlY29uZi9XZXJyb3IubWsKK0luZGV4OiBuc3MtMy4zNy4xL25zcy9jb3JlY29uZi9XZXJyb3IubWsKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3MtMy4yNC5vcmlnL25zcy9jb3JlY29uZi9XZXJyb3IubWsKLSsrKyBuc3MtMy4yNC9uc3MvY29yZWNvbmYvV2Vycm9yLm1rCi1AQCAtNTQsNyArNTQsNyBAQCBpZm5kZWYgV0FSTklOR19DRkxBR1MKKy0tLSBuc3MtMy4zNy4xLm9yaWcvbnNzL2NvcmVjb25mL1dlcnJvci5taworKysrIG5zcy0zLjM3LjEvbnNzL2NvcmVjb25mL1dlcnJvci5taworQEAgLTU2LDcgKzU2LDcgQEAgaWZuZGVmIFdBUk5JTkdfQ0ZMQUdTCiAgICAgIGlmZGVmIENDX0lTX0NMQU5HCiAgICAgICAgIyAtUXVudXNlZC1hcmd1bWVudHMgOiBjbGFuZyBvYmplY3RzIHRvIGFyZ3VtZW50cyB0aGF0IGl0IGRvZXNuJ3QgdW5kZXJzdGFuZAogICAgICAgICMgICAgYW5kIGZpeGluZyB0aGlzIHdvdWxkIHJlcXVpcmUgcmVhcmNoaXRlY3R1cmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyNzZmODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIERhaWtpIFVlbm8gPGR1ZW5vQHJlZGhhdC5jb20+Ci0jIERhdGUgMTUxNjcxMDU3NCAtMzYwMAotIyAgICAgIFR1ZSBKYW4gMjMgMTM6Mjk6MzQgMjAxOCArMDEwMAotIyBOb2RlIElEIDI3ZjI3Y2UyMWMyYzZmZjVhNDdmYTllMTdjNDM4YjAwMDM2NmM5YzkKLSMgUGFyZW50ICBiZTFkY2E1YWM4MDU0MWQzYjgxYThkYTlkNDI4NTRkOGIxY2NlZWZiCi1CdWlsZCBIYWNsX1BvbHkxMzA1XzY0Lm8gb24gYWFyY2g2NCBldmVuIHdpdGggbWFrZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2J1ZzE0MzI0NTUuYm1vYXR0YWNobWVudHMub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTg5NDQ2OTEKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi1JbmRleDogbnNzLTMuMzUvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3MtMy4zNS5vcmlnL25zcy9saWIvZnJlZWJsL01ha2VmaWxlCi0rKysgbnNzLTMuMzUvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKLUBAIC01MzMsNyArNTMzLDEyIEBAIGlmbmRlZiBOU1NfRElTQUJMRV9DSEFDSEFQT0xZCi0gICAgICAgICAgICAgRVhUUkFfU1JDUyArPSBjaGFjaGEyMF92ZWMuYwotICAgICAgICAgZW5kaWYKLSAgICAgZWxzZQotLSAgICAgICAgRVhUUkFfU1JDUyArPSBwb2x5MTMwNS5jCi0rICAgICAgICBpZmVxICgkKENQVV9BUkNIKSxhYXJjaDY0KQotKyAgICAgICAgICAgIEVYVFJBX1NSQ1MgKz0gSGFjbF9Qb2x5MTMwNV82NC5jCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgRVhUUkFfU1JDUyArPSBwb2x5MTMwNS5jCi0rICAgICAgICBlbmRpZgotKwotICAgICAgICAgRVhUUkFfU1JDUyArPSBjaGFjaGEyMC5jCi0gICAgICAgICBWRVJJRklFRF9TUkNTICs9IEhhY2xfQ2hhY2hhMjAuYwotICAgICBlbmRpZiAjIHg4Nl82NApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaAppbmRleCA5OTQyYmYxLi4zYTgxN2ZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaApAQCAtNiwxMSArNiwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogbnNzLTMuMjQvbnNzL2xpYi9mcmVlYmwvcHFnLmMKK0luZGV4OiBuc3MtMy4zNy4xL25zcy9saWIvZnJlZWJsL3BxZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNzLTMuMjQub3JpZy9uc3MvbGliL2ZyZWVibC9wcWcuYwotKysrIG5zcy0zLjI0L25zcy9saWIvZnJlZWJsL3BxZy5jCi1AQCAtMzIyLDggKzMyMiw4IEBAIGdlbmVyYXRlX2hfY2FuZGlkYXRlKFNFQ0l0ZW0gKmhpdCwgbXBfaW4KKy0tLSBuc3MtMy4zNy4xLm9yaWcvbnNzL2xpYi9mcmVlYmwvcHFnLmMKKysrKyBuc3MtMy4zNy4xL25zcy9saWIvZnJlZWJsL3BxZy5jCitAQCAtMzI2LDggKzMyNiw4IEBAIGdlbmVyYXRlX2hfY2FuZGlkYXRlKFNFQ0l0ZW0gKmhpdCwgbXBfaW4KICAKICBzdGF0aWMgU0VDU3RhdHVzCiAgYWRkVG9TZWVkKGNvbnN0IFNFQ0l0ZW0gKnNlZWQsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc3lzdGVtLXBrY3MxMS50eHQgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc3lzdGVtLXBrY3MxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEyNjRlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dApAQCAtMCwwICsxLDUgQEAKK2xpYnJhcnk9CituYW1lPU5TUyBJbnRlcm5hbCBQS0NTICMxMSBNb2R1bGUKK3BhcmFtZXRlcnM9Y29uZmlnZGlyPSdzcWw6L2V0Yy9wa2kvbnNzZGInIGNlcnRQcmVmaXg9Jycga2V5UHJlZml4PScnIHNlY21vZD0nc2VjbW9kLmRiJyBmbGFncz0gdXBkYXRlZGlyPScnIHVwZGF0ZUNlcnRQcmVmaXg9JycgdXBkYXRlS2V5UHJlZml4PScnIHVwZGF0ZWlkPScnIHVwZGF0ZVRva2VuRGVzY3JpcHRpb249JycgCitOU1M9RmxhZ3M9aW50ZXJuYWwsY3JpdGljYWwgdHJ1c3RPcmRlcj03NSBjaXBoZXJPcmRlcj0xMDAgc2xvdFBhcmFtcz0oMT17c2xvdEZsYWdzPVtFQ0MsUlNBLERTQSxESCxSQzIsUkM0LERFUyxSQU5ET00sU0hBMSxNRDUsTUQyLFNTTCxUTFMsQUVTLENhbWVsbGlhLFNFRUQsU0hBMjU2LFNIQTUxMl0gYXNrcHc9YW55IHRpbWVvdXQ9MzB9KQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGYxOTE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWJ1aWxkLWhhY2wtcG9seTEzMDUtYWFyY2g2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUJ1Zy0xNDM3NzM0LVVzZS1zbnByaW50Zi1pbi1zaWduLmMtci10dGF1YmVydC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk0NjdlYzllNjVjNWFlYjMyNTRhNTAyNTA0OTBmNWY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0MTI3ZGUwOWJlZGUzOWY1ZmQwZjc4OWQzM2MzNTA0YzVkMjYxZTY5ZWEwMzAyMmQ0NmIzMTliM2UzMmY2ZmEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKLQotaW5oZXJpdCBzaXRlaW5mbwotCi1ERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCi0KLVREID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCi1URFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKLSAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQotICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgotfQotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0gICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0KLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KLSAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQotICAgICMKLSAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCi0gICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgotICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCi0gICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgotICAgICMKLSAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKLSAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFJQQVRIPSIke1JQQVRIfSIKLX0KLWRvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICBtYWtlIC1DIC4vbnNzIFwKLSAgICAgICAgQ0NDPSIke0NYWH0iIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAotICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCi0gICAgICAgIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCi0gICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbwotICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCi0gICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KLSAgICBkb25lCi0KLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMwotICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQotICAgIGRvbmUKLX0KLWRvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCi0gICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCi0gICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbwotICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICBkb25lCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLSAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgQ3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUKLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCi0gICAgdG91Y2ggLi9lbXB0eV9wYXNzd29yZAotICAgIGNlcnR1dGlsIC1OIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8gLWYgLi9lbXB0eV9wYXNzd29yZAotICAgIGNobW9kIDY0NCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvKi5kYgotICAgIHJtIC4vZW1wdHlfcGFzc3dvcmQKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgotICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KLSAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAotICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCi0gICAgICAgICAgICBGTj0kRE4vJEJOLnNvCi0gICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCi0gICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBlbHNlCi0gICAgICAgIHNpZ25saWJzLnNoCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgotRklMRVNfJHtQTn0tc21pbWUgPSAiXAotICAgICR7YmluZGlyfS9zbWltZSBcCi0iCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtzeXNjb25mZGlyfSBcCi0gICAgJHtiaW5kaXJ9IFwKLSAgICAke2xpYmRpcn0vbGliKi5jaGsgXAotICAgICR7bGliZGlyfS9saWIqLnNvIFwKLSAgICAiCi1GSUxFU18ke1BOfS1kZXYgPSAiXAotICAgICR7bGliZGlyfS9uc3MgXAotICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCi0gICAgJHtpbmNsdWRlZGlyfS8qIFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGM5NWM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzkuYmIKQEAgLTAsMCArMSwyNjQgQEAKK1NVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgorREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAorZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCitzZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAorQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKK1RMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAordjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKKyAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmxhbmstY2VydDkuZGIgXAorICAgICAgICAgICBmaWxlOi8vYmxhbmsta2V5NC5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXN0ZW0tcGtjczExLnR4dCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjEwNzIwZmM3MGZkNDgzZGUxYjA4NTQwMmZiMTBlZDU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiZTY0ZGQ3NmYyMTI0MTVjYzhiYzM0MzQzYWMxZTczODkwNDhkYjRkYjlhMDIzYTg0ODczYzQxMWRjNTg2NGIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKKworaW5oZXJpdCBzaXRlaW5mbworCitERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCisKK1REID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCitURFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKKyAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KKyAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQorICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgorfQorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKKyAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKKyAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisgICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKKworICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9CisgICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKKyAgICBleHBvcnQgTlNfVVNFX0dDQz0xCisgICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCisgICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0X2JlIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9ImFhcmNoNjQiCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9Citkb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjRfYmUiIF07IHRoZW4KKyAgICAgICAgQ1BVX0FSQ0g9YWFyY2g2NAorICAgICAgICBPU19URVNUPSJhYXJjaDY0IgorICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9Citkb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAorICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgorICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KKyAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCisgICAgZG9uZQorICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisgICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIEl0IHVzZWQgdG8gY2FsbCBjZXJ0dXRpbCB0byBjcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZSB3aXRoIGVtcHR5IHBhc3N3b3JkIGF0CisgICAgIyBidWlsZCB0aW1lLCBidXQgdGhlIGNoZWNrc3VtIG9mIGtleTQuZGIgY2hhbmdlcyBldmVyeSB0aW1lIHdoZW4gY2VydHV0aWwgaXMgY2FsbGVkLgorICAgICMgSXQgY2F1c2VzIG5vbi1kZXRlcm1pbmlzbSBpc3N1ZSwgc28gcHJvdmlkZSBkYXRhYmFzZXMgd2l0aCBhIGJsYW5rIGNlcnRpZmljYXRlCisgICAgIyB3aGljaCBhcmUgb3JpZ2luYWxseSBmcm9tIG91dHB1dCBvZiBuc3MgaW4gcWVtdXg4Ni02NCBidWlsZC4gWW91IGNhbiBnZXQgdGhlc2UKKyAgICAjIGRhdGFiYXNlcyBieToKKyAgICAjIGNlcnR1dGlsIC1OIC1kIHNxbDovZGF0YWJhc2UvcGF0aC8gLS1lbXB0eS1wYXNzd29yZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsYW5rLWNlcnQ5LmRiICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9jZXJ0OS5kYgorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsYW5rLWtleTQuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2tleTQuZGIKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXN0ZW0tcGtjczExLnR4dCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvcGtjczExLnR4dAorfQorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm5zcy1uYXRpdmUiCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCisgICAgICAgIGZvciBJIGluICREJHtsaWJkaXJ9L2xpYiouY2hrOyBkbworICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCisgICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKKyAgICAgICAgICAgIEZOPSRETi8kQk4uc28KKyAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KKyAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgorICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgIGVsc2UKKyAgICAgICAgc2lnbmxpYnMuc2gKKyAgICBmaQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tc21pbWUiCitGSUxFU18ke1BOfS1zbWltZSA9ICJcCisgICAgJHtiaW5kaXJ9L3NtaW1lIFwKKyIKK0ZJTEVTXyR7UE59ID0gIlwKKyAgICAke3N5c2NvbmZkaXJ9IFwKKyAgICAke2JpbmRpcn0gXAorICAgICR7bGliZGlyfS9saWIqLmNoayBcCisgICAgJHtsaWJkaXJ9L2xpYiouc28gXAorICAgICIKK0ZJTEVTXyR7UE59LWRldiA9ICJcCisgICAgJHtsaWJkaXJ9L25zcyBcCisgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKKyAgICAke2luY2x1ZGVkaXJ9LyogXAorICAgICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdC8wMDAxLUxJTkdVQVMtZHJvcC10aGUtbGFuZ3VhZ2VzLWZvci13aGljaC11cHN0cmVhbS1kb2VzLW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdC8wMDAxLUxJTkdVQVMtZHJvcC10aGUtbGFuZ3VhZ2VzLWZvci13aGljaC11cHN0cmVhbS1kb2VzLW4ucGF0Y2gKaW5kZXggMmZkYTlkZi4uZTkwMmIwYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXQvMDAwMS1MSU5HVUFTLWRyb3AtdGhlLWxhbmd1YWdlcy1mb3Itd2hpY2gtdXBzdHJlYW0tZG9lcy1uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0LzAwMDEtTElOR1VBUy1kcm9wLXRoZS1sYW5ndWFnZXMtZm9yLXdoaWNoLXVwc3RyZWFtLWRvZXMtbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYzNhYTRhYWU1ZTlmNGFkYWZkOWUxMGQ5NDY2ZjFiYzQ4MWUwYWFlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzZiYjRiOTlhZjM5ZGFhMzIyMWMzYmRjMDY4Njk4N2FlMGYzMTY5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogV2VkLCAzMSBKYW4gMjAxOCAxNjo0Nzo0NCArMDIwMAogU3ViamVjdDogW1BBVENIXSBMSU5HVUFTOiBkcm9wIHRoZSBsYW5ndWFnZXMgZm9yIHdoaWNoIHVwc3RyZWFtIGRvZXMgbm90CkBAIC05LDI0ICs5LDIxIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbWlzc2luZyB1cHN0cmVhbSBkaXN0cmlidXRpb24gZmlsZXNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgcG8vTElOR1VBUyB8IDIgLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3BvL0xJTkdVQVMgYi9wby9MSU5HVUFTCi1pbmRleCAxZmM0ZDUzLi5lOWNjNWE3IDEwMDY0NAoraW5kZXggNzY3YTgwNmMyZTIwLi42YWI0ODAwMWM0MDkgMTAwNjQ0CiAtLS0gYS9wby9MSU5HVUFTCiArKysgYi9wby9MSU5HVUFTCi1AQCAtMTEsOSArMTEsNyBAQCBjeQorQEAgLTEyLDggKzEyLDYgQEAgY3kKICBkYQogIGRlCiAgZWwKIC1lbkBib2xkcXVvdAotIGVuX0dCCiAtZW5AcXVvdAorIGVuX0dCCiAgZW8KICBlcwotIGVzX0NMCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Nzk4ZjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBhIHdheSB0byBsb2FkIGFuZCBlbnVtZXJhdGUgUEtDUyMxMSBtb2R1bGVzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMjkzMzg4N2Y2MDk4MDdmYmI1N2FhNDIzN2QxNGE1MCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ3RrLWRvYwotCi1ERVBFTkRTID0gImxpYnRhc24xIGxpYmZmaSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3AxMS1nbHVlL3AxMS1raXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1MSU5HVUFTLWRyb3AtdGhlLWxhbmd1YWdlcy1mb3Itd2hpY2gtdXBzdHJlYW0tZG9lcy1uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDUkVWID0gImJmYjNiZDQ3YWE0ODk4M2Y1MzQ5NDc5YmNhNTk4NDAzMDk3ZmY4MWMiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotIyBleGNsdWRlIG9kZCBtaW5vciB2ZXJzaW9ucywgd2hpY2ggYXJlIGRldmVsb3BtZW50IHJlbGVhc2VzCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLihcZCpbMDI0NjhdKSsoXC5cZCspKykiCi0KLUFVVE9UT09MU19BVVhESVIgPSAiJHtTfS9idWlsZC9saXR0ZXIiCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXRydXN0LXBhdGhzIgotCi0jIFRoaXMgcmVjaXBlIGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgZ3RrLWRvYyBtNCBtYWNyb3MsIGFuZCBzbyB0aGUgLi9jb25maWd1cmUgZmxhZ3MKLSMgdGhhdCBjb250cm9sIGd0ay1kb2MgYnVpbGQgYXJlIG5vbi1zdGFuZGFyZAotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWRvYyAtLWVuYWJsZS1kb2MtaHRtbCAtLWRpc2FibGUtZG9jLXBkZicsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9jJywgZCl9ICIKLQotIyBXaGVuIGJ1aWxkaW5nIG5hdGl2ZSByZWNpcGVzLCBkaXNhYmxlIGd0a2RvYywgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSwKLSMgcHVsbHMgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGFuZCBtYWtlcyBidWlsZCB0aW1lcyBsb25nZXIKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jICIKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZG9jICIKLQotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgLS1lbmFibGUtZ3RrLWRvYy1odG1sIC0tZGlzYWJsZS1ndGstZG9jLXBkZiAtLWVuYWJsZS1ndGstZG9jIC0tZGlzYWJsZS1ndGstZG9jIgotCi0jIHAxMS1raXQgcmVsaWVzIG9uIHRoZXNlIHR3byBiZWluZyBjb3BpZWQgZnJvbSBzb3VyY2UgdHJlZQotIyBpbnN0ZWFkIG9mIGJlaW5nIHJlZ2VuZXJhdGVkIGJ5IGd0a2RvYy1zY2FuLCBidXQgZG9lc24ndCBzZXR1cAotIyBkZXBlbmRlbmNpZXMgY29ycmVjdGx5IHdoZW4gdGhlcmUgaXMgYSBwYXJhbGxlbCBidWlsZC4gTGV0J3MgcHJlLWNvcHkKLSMgdGhlbSBpbnN0ZWFkLgotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICAgICAgY3AgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtb3ZlcnJpZGVzLnR4dCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1zZWN0aW9ucy50eHQgJHtCfS9kb2MvbWFudWFsLwotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCi0gICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExLyoubGEiCi0KLSMgUE4gY29udGFpbnMgcDExLWtpdC1wcm94eS5zbywgYSBzeW1saW5rIHRvIGEgbG9hZGFibGUgbW9kdWxlCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDI1YzM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4xNC5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd2F5IHRvIGxvYWQgYW5kIGVudW1lcmF0ZSBQS0NTIzExIG1vZHVsZXMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jCisKK0RFUEVORFMgPSAibGlidGFzbjEgbGliZmZpIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcDExLWdsdWUvcDExLWtpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUxJTkdVQVMtZHJvcC10aGUtbGFuZ3VhZ2VzLWZvci13aGljaC11cHN0cmVhbS1kb2VzLW4ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiMzc3MDc5M2YwMjZlNDZhMDAwZDJkODgxNmQ1NjEyMjU5ODI4OWQ1YyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0FVVE9UT09MU19BVVhESVIgPSAiJHtTfS9idWlsZC9saXR0ZXIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3RydXN0LXBhdGhzXSA9ICItLXdpdGgtdHJ1c3QtcGF0aHM9L2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtdHJ1c3QtcGF0aHMsLGNhLWNlcnRpZmljYXRlcyIKKworIyBUaGlzIHJlY2lwZSBkb2VzIG5vdCB1c2UgdGhlIHN0YW5kYXJkIGd0ay1kb2MgbTQgbWFjcm9zLCBhbmQgc28gdGhlIC4vY29uZmlndXJlIGZsYWdzCisjIHRoYXQgY29udHJvbCBndGstZG9jIGJ1aWxkIGFyZSBub24tc3RhbmRhcmQKK0VYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLXRhcmdldCA9ICIke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICctLWVuYWJsZS1kb2MgLS1lbmFibGUtZG9jLWh0bWwgLS1kaXNhYmxlLWRvYy1wZGYnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRvYycsIGQpfSAiCisKKyMgV2hlbiBidWlsZGluZyBuYXRpdmUgcmVjaXBlcywgZGlzYWJsZSBndGtkb2MsIGFzIGl0IGlzIG5vdCBuZWNlc3NhcnksCisjIHB1bGxzIGluIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgbWFrZXMgYnVpbGQgdGltZXMgbG9uZ2VyCitFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvYyAiCitFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLS1kaXNhYmxlLWRvYyAiCisKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIC0tZW5hYmxlLWd0ay1kb2MtaHRtbCAtLWRpc2FibGUtZ3RrLWRvYy1wZGYgLS1lbmFibGUtZ3RrLWRvYyAtLWRpc2FibGUtZ3RrLWRvYyIKKworIyBwMTEta2l0IHJlbGllcyBvbiB0aGVzZSB0d28gYmVpbmcgY29waWVkIGZyb20gc291cmNlIHRyZWUKKyMgaW5zdGVhZCBvZiBiZWluZyByZWdlbmVyYXRlZCBieSBndGtkb2Mtc2NhbiwgYnV0IGRvZXNuJ3Qgc2V0dXAKKyMgZGVwZW5kZW5jaWVzIGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEgcGFyYWxsZWwgYnVpbGQuIExldCdzIHByZS1jb3B5CisjIHRoZW0gaW5zdGVhZC4KK2RvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisgICAgICAgIGNwICR7U30vZG9jL21hbnVhbC9wMTEta2l0LW92ZXJyaWRlcy50eHQgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtc2VjdGlvbnMudHh0ICR7Qn0vZG9jL21hbnVhbC8KK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3AxMS1raXQtcHJveHkuc28gXAorICAgICR7bGliZGlyfS9wa2NzMTEvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS8qLmxhIgorCisjIFBOIGNvbnRhaW5zIHAxMS1raXQtcHJveHkuc28sIGEgc3ltbGluayB0byBhIGxvYWRhYmxlIG1vZHVsZQorSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIKaW5kZXggMWVhYTI2MS4uNDExNmVmYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMS4wLmJiCkBAIC04LDggKzgsNiBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmQ3OTRlMmEwYTI4OWI5ZGZjYzlmNTEzZDE5OTZlIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQogREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBsaWJhc3N1YW4gbGliZ3BnLWVycm9yIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKQEAgLTIxLDkgKzE5LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzODI5MzE1Y2IwYTFlOWNlZGMwNWZmZTZkZWY3YTJjNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODA3NjY4NmZhNzI0YTI5MGVhNDljZGYwZDFjMGMxNTAwOTA3ZDFiNzU5YTNiY2JmYmVjMDI5M2U4ZjU2NTcwIgogCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1ICBcCi0iCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIm5jdXJzZXMgbGliY2FwIgogCkBAIC0zNSw0ICszMSw5IEBACiAjVG8gdXNlIGxpYnNlY3JldCwgYWRkIG1ldGEtZ25vbWUKIFBBQ0tBR0VDT05GSUdbc2VjcmV0XSA9ICItLWVuYWJsZS1saWJzZWNyZXQsIC0tZGlzYWJsZS1saWJzZWNyZXQsIGxpYnNlY3JldCIKIAorRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1IFwKKyIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YjcxYzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIEMgcHJvZ3JhbSB0byBydW4gYWxsIGluc3RhbGxlZCBwdGVzdHMiCi1ERVNDUklQVElPTiA9ICJUaGUgcHRlc3QtcnVubmVyMiBwYWNrYWdlIGluc3RhbGxzIGEgcHRlc3QtcnVubmVyIFwKLXByb2dyYW0gd2hpY2ggbG9vcHMgdGhyb3VnaCBhbGwgaW5zdGFsbGVkIHB0ZXN0IHRlc3Qgc3VpdGVzIGFuZCBcCi1ydW5zIHRoZW0gaW4gc2VxdWVuY2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcHRlc3QtcnVubmVyMi9hYm91dC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDUkVWID0gIjE2NDEzZDcxY2MwNmIwMmE2ZDg1OWMzNWEwMTdjYzQ5Yjg4MjgzZjciCi1QViA9ICIyLjEuMStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wdGVzdC1ydW5uZXIyIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lciIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vcHRlc3QtcnVubmVyICR7RH0ke2JpbmRpcn0vcHRlc3QtcnVubmVyCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJkMjNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMi5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIkEgQyBwcm9ncmFtIHRvIHJ1biBhbGwgaW5zdGFsbGVkIHB0ZXN0cyIKK0RFU0NSSVBUSU9OID0gIlRoZSBwdGVzdC1ydW5uZXIyIHBhY2thZ2UgaW5zdGFsbHMgYSBwdGVzdC1ydW5uZXIgXAorcHJvZ3JhbSB3aGljaCBsb29wcyB0aHJvdWdoIGFsbCBpbnN0YWxsZWQgcHRlc3QgdGVzdCBzdWl0ZXMgYW5kIFwKK3J1bnMgdGhlbSBpbiBzZXF1ZW5jZS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wdGVzdC1ydW5uZXIyL2Fib3V0LyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNSRVYgPSAiNDk5NTZmNjViYjUzZWEyYTJjMWIzOTRlNWU1OWZmZGZjZGNjNDkwZiIKK1BWID0gIjIuMitnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wdGVzdC1ydW5uZXIyIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lciIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vcHRlc3QtcnVubmVyICR7RH0ke2JpbmRpcn0vcHRlc3QtcnVubmVyCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyYy9ta2Rpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL21rZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTlmMDFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL21rZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9za3ZhZHJpay9yZTJjL3B1bGwvMTkxKQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBiY2NjMTBjNjA1MjNmODhjOGY4MTQxMzE1MWNkY2Q2MTJlYjE2MTk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMzEgSnVsIDIwMTcgMTU6NDM6NDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3J5IGJlZm9yZSB3cml0aW5nIGludG8gaXQKLQotSW4gc29tZSBzaXR1YXRpb25zIHNyYy9wYXJzZS8gbWF5IG5vdCBleGlzdCBiZWZvcmUgYSBmaWxlIGlzIGNvcGllZCBpbnRvIHRoZQotZGlyZWN0b3J5LiBFbnN1cmUgdGhhdCB0aGlzIGRvZXNuJ3QgaGFwcGVuIGJ5IGNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgZmlyc3QuCi0tLS0KLSByZTJjL01ha2VmaWxlLmFtIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9yZTJjL01ha2VmaWxlLmFtIGIvcmUyYy9NYWtlZmlsZS5hbQotaW5kZXggM2IzYjJjNWUuLjA3MDdmYzVhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMTg3LDYgKzE4Nyw3IEBAIENMRUFORklMRVMgPSBcCi0gCSQoRE9DKQotIAotICQoQVVUT0dFTl9QQVJTRVIpOiAkKENVU1RPTV9QQVJTRVIpCi0rCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQotIAkkKEFNX1ZfR0VOKSBpZiB0ZXN0ICQoQklTT04pID0gIm5vIjsgXAotIAl0aGVuIFwKLSAJCWNwICQodG9wX3NyY2RpcikvJChCT09UU1RSQVBfUEFSU0VSKSAkQCAmJiBcCi1AQCAtMjExLDYgKzIxMiw3IEBAICQoQk9PVFNUUkFQX1BBUlNFUik6ICQoQ1VTVE9NX1BBUlNFUikKLSAJCSQodG9wX3NyY2RpcikvJChDVVNUT01fUEFSU0VSKTsKLSAKLSAucmUuY2M6Ci0rCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQotIAkkKEFNX1ZfR0VOKSBpZiB0ZXN0IC14ICQoUkUyQyk7IFwKLSAJdGhlbiBcCi0gCQkkKHRvcF9idWlsZGRpcikvJChSRTJDKSAkKFJFMkNGTEFHUykgLW8gJEAgJDwgJiYgXAotLS0gCi0yLjExLjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18wLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGRkN2I3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgZm9yIHdyaXRpbmcgdmVyeSBmYXN0IGFuZCB2ZXJ5IGZsZXhpYmxlIHNjYW5uZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3JlMmMuc291cmNlZm9yZ2UubmV0LyIKLUFVVEhPUiA9ICJNYXJjdXMgQsO2cmdlciA8aGVsbHlAdXNlcnMuc291cmNlZm9yZ2UubmV0PiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xNDY7bWQ1PTg4MTA1NmM5YWRkMTdmODAxOWNjZDhjMzgyYmE5NjNhIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ta2Rpci5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzYmY1MDhmYWJkNTJlZDczMzQ2NDdkMGNjYjk1NmU4ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OGMxMjU2NDI5NzY0MWNjZWI1ZmYwNWFlYWQ1N2YyODExOGRiNjI3N2YzMWUyMjYyNDM3ZmViYTg5MDY5ZTg0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzEuMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMS4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVkOGQyNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzEuMC4xLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiVG9vbCBmb3Igd3JpdGluZyB2ZXJ5IGZhc3QgYW5kIHZlcnkgZmxleGlibGUgc2Nhbm5lcnMiCitIT01FUEFHRSA9ICJodHRwOi8vcmUyYy5zb3VyY2Vmb3JnZS5uZXQvIgorQVVUSE9SID0gIk1hcmN1cyBCw7ZyZ2VyIDxoZWxseUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE0NjttZDU9ODgxMDU2YzlhZGQxN2Y4MDE5Y2NkOGMzODJiYTk2M2EiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImUyYzZjZjUyZmM2YTIxNTk1ZjIxYmM4MmRiNTMyNGY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwNTA1OGQxOGEwMGUwMWJmYzMyYWViZjgzYWYzNWVkNWIxMzE4MGI0ZTlmMjc5YzkwODQzYWZhYjJjNjZjN2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKaW5kZXggYjk0YWQ1MC4uY2I4MTAyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCkBAIC0xLDUgKzEsOCBAQAogW1VuaXRdCiBEZXNjcmlwdGlvbj1IYXJkd2FyZSBSTkcgRW50cm9weSBHYXRoZXJlciBEYWVtb24KK0RlZmF1bHREZXBlbmRlbmNpZXM9bm8KK0FmdGVyPXN5c3RlbWQtdWRldi1zZXR0bGUuc2VydmljZQorQmVmb3JlPXN5c2luaXQudGFyZ2V0CiAKIFtTZXJ2aWNlXQogRXhlY1N0YXJ0PUBTQklORElSQC9ybmdkIC1mIC1yIC9kZXYvdXJhbmRvbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgppbmRleCBiM2M5ZmQ5Li42NzY1NjY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgpAQCAtMTYsMTMgKzE2LDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NzI2Y2RjNmZhZTFmNTEyMjQ2M2YyNGFlOTgwZGQ2OCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGExMDJiNjYwM2JiY2NlMmRhMzQxNDcwY2FkNDJlZWFhOTU2NGExNmI0NDkwZTc4NjcwMjZjYTExYTMwNzhlIgogCi0jIEFzIHRoZSByZWNpcGUgZG9lc24ndCBpbmhlcml0IHN5c3RlbWQuYmJjbGFzcywgd2UgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZQotIyBtYW51YWxseSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBwb3N0aW5zdC9wcmVpbnN0IGdlbmVyYXRlZC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCiBpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFBBQ0tBR0VDT05GSUcgPSAibGliZ2NyeXB0IgpAQCAtNTAsNiArNDMsNiBAQAogfQogCiBJTklUU0NSSVBUX05BTUUgPSAicm5nLXRvb2xzIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMiAzIDQgNSAuIHN0b3AgMzAgMCA2IDEgLiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAzIDIgMyA0IDUgLiBzdG9wIDMwIDAgNiAxIC4iCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJybmdkLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi8wMDAzLWdlbl9kZWYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi8wMDAzLWdlbl9kZWYucGF0Y2gKaW5kZXggZTM3ZTkwMy4uMGVhMmNjYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmYvMDAwMy1nZW5fZGVmLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmLzAwMDMtZ2VuX2RlZi5wYXRjaApAQCAtMyw2ICszLDExIEBACiBEYXRlOiBNb24sIDMgU2VwIDIwMTggMTE6MTI6MjcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gZ2VuX2RlZgogCitUaGlzIGlzIHBhcnRpYWwgcG9ydCBiZWNhdXNlIGhhbGYgb2YgdGhpcyBwYXRjaCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gb3VyCitwYXRjaGVzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvc2VyZi9jb21taXQvOGYwN2M5NjI2MTA2ODczYTU5NGZkMDdlN2MyNTdlOTA4MGQ4NjYwYl0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KICBTQ29uc3RydWN0IHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYzIxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjEwLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKKwkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDE4YzJjZWQ5ZGM0ZGQ1Y2E4YjA2YTc1NWU2ZDY0ZTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzYyNWE4M2I0ODM4YmVmYzhjYWZjZDU0ZTM2MTk5NDY1MTVkOWU0NGQ2M2Q2MWM0YWRmN2Y1NTEzZGRmYmViZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliMjczZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgc2hhcmVkLW1pbWUtaW5mby5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL3BhcmFsbGVsbWFrZS5wYXRjaCBcCi0JICAgIGZpbGU6Ly9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ1MTAzODg5YjkxMjQyODUwYWE0N2YwOTMyNWU3OThiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjMDEzM2VjNGUyMjhlNDFiZGY1MmY3MjZkMjcxYTJkODIxNDk5YzJhYjk3YWZkM2FhM2Q2Y2Y0M2VmY2RjODMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAxOC04NzQwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvQ1ZFLTIwMTgtODc0MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5NWUzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAxOC04NzQwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSAxOWFlZDRkMmJlNDZjNDUxNmNhZjJiZWUzMWY3OTA0NGJiZDFkNTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KLURhdGU6IEZyaSwgMjEgU2VwIDIwMTggMTY6MjI6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRGV0ZWN0IGRhdGFiYXNlcyB3aG9zZSBzY2hlbWEgaXMgY29ycnVwdGVkIHVzaW5nIGEgQ1JFQVRFIFRBQkxFIEFTIHN0YXRlbWVudCBhbmQgaXNzdWUgYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy9jZ2kvc3JjL3ZkaWZmP2Zyb209MTc3NGYxYzNiYWYwYmMzZCZ0bz1kNzVlNjc2NTRhYTk2MjBiJmRpZmY9MSZ3XQotU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KLS0tLQotIHNxbGl0ZTMuYyB8IDggKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3FsaXRlMy5jIGIvc3FsaXRlMy5jCi1pbmRleCA3M2M2OWVmLi42ODYzYmM2IDEwMDY0NAotLS0tIGEvc3FsaXRlMy5jCi0rKysgYi9zcWxpdGUzLmMKLUBAIC0xMDM0NzQsOCArMTAzNDc0LDYgQEAgU1FMSVRFX1BSSVZBVEUgdm9pZCBzcWxpdGUzRW5kVGFibGUoCi0gICBwID0gcFBhcnNlLT5wTmV3VGFibGU7Ci0gICBpZiggcD09MCApIHJldHVybjsKLSAKLS0gIGFzc2VydCggIWRiLT5pbml0LmJ1c3kgfHwgIXBTZWxlY3QgKTsKLS0KLSAgIC8qIElmIHRoZSBkYi0+aW5pdC5idXN5IGlzIDEgaXQgbWVhbnMgd2UgYXJlIHJlYWRpbmcgdGhlIFNRTCBvZmYgdGhlCi0gICAqKiAic3FsaXRlX21hc3RlciIgb3IgInNxbGl0ZV90ZW1wX21hc3RlciIgdGFibGUgb24gdGhlIGRpc2suCi0gICAqKiBTbyBkbyBub3Qgd3JpdGUgdG8gdGhlIGRpc2sgYWdhaW4uICBFeHRyYWN0IHRoZSByb290IHBhZ2UgbnVtYmVyCi1AQCAtMTAzNDg2LDYgKzEwMzQ4NCwxMCBAQCBTUUxJVEVfUFJJVkFURSB2b2lkIHNxbGl0ZTNFbmRUYWJsZSgKLSAgICoqIHRhYmxlIGl0c2VsZi4gIFNvIG1hcmsgaXQgcmVhZC1vbmx5LgotICAgKi8KLSAgIGlmKCBkYi0+aW5pdC5idXN5ICl7Ci0rICAgIGlmKCBwU2VsZWN0ICl7Ci0rICAgICBzcWxpdGUzRXJyb3JNc2cocFBhcnNlLCAiIik7Ci0rICAgICByZXR1cm47Ci0rICAgIH0KLSAgICAgcC0+dG51bSA9IGRiLT5pbml0Lm5ld1RudW07Ci0gICAgIGlmKCBwLT50bnVtPT0xICkgcC0+dGFiRmxhZ3MgfD0gVEZfUmVhZG9ubHk7Ci0gICB9Ci1AQCAtMTE3ODEzLDcgKzExNzgxNSw3IEBAIHN0YXRpYyB2b2lkIGNvcnJ1cHRTY2hlbWEoCi0gICAgIGNoYXIgKno7Ci0gICAgIGlmKCB6T2JqPT0wICkgek9iaiA9ICI/IjsKLSAgICAgeiA9IHNxbGl0ZTNNUHJpbnRmKGRiLCAibWFsZm9ybWVkIGRhdGFiYXNlIHNjaGVtYSAoJXMpIiwgek9iaik7Ci0tICAgIGlmKCB6RXh0cmEgKSB6ID0gc3FsaXRlM01QcmludGYoZGIsICIleiAtICVzIiwgeiwgekV4dHJhKTsKLSsgICAgaWYoIHpFeHRyYSAmJiB6RXh0cmFbMF0gKSB6ID0gc3FsaXRlM01QcmludGYoZGIsICIleiAtICVzIiwgeiwgekV4dHJhKTsKLSAgICAgc3FsaXRlM0RiRnJlZShkYiwgKnBEYXRhLT5wekVyck1zZyk7Ci0gICAgICpwRGF0YS0+cHpFcnJNc2cgPSB6OwotICAgfQotLS0gCi0yLjE5LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzLmluYwppbmRleCAzMDg0N2I5Li4xODM0ODY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzLmluYwpAQCAtMzYsMTQgKzM2LDEwIEBACiBDRkxBR1NfYXBwZW5kID0gIiAtZlBJQyIKIAogIyBwcmVhZCgpIGlzIGluIFBPU0lYLjEtMjAwMSBzbyBhbnkgcmVhc29uYWJsZSBzeXN0ZW0gbXVzdCBzdXJlbHkgc3VwcG9ydCBpdAotQlVJTERfQ0ZMQUdTICs9ICItRFVTRV9QUkVBRCIKLUJVSUxEU0RLX0NGTEFHUyArPSAiLURVU0VfUFJFQUQiCi1UQVJHRVRfQ0ZMQUdTICs9ICItRFVTRV9QUkVBRCIKK0NGTEFHUyArPSAiLURVU0VfUFJFQUQiCiAKICMgUHJvdmlkZSBjb2x1bW4gbWV0YS1kYXRhIEFQSQotQlVJTERfQ0ZMQUdTICs9ICItRFNRTElURV9FTkFCTEVfQ09MVU1OX01FVEFEQVRBIgotQlVJTERTREtfQ0ZMQUdTICs9ICItRFNRTElURV9FTkFCTEVfQ09MVU1OX01FVEFEQVRBIgotVEFSR0VUX0NGTEFHUyArPSAiLURTUUxJVEVfRU5BQkxFX0NPTFVNTl9NRVRBREFUQSIKK0NGTEFHUyArPSAiLURTUUxJVEVfRU5BQkxFX0NPTFVNTl9NRVRBREFUQSIKIAogUEFDS0FHRVMgPSAibGliJHtCUE59IGxpYiR7QlBOfS1kZXYgbGliJHtCUE59LWRvYyAke1BOfS1kYmcgbGliJHtCUE59LXN0YXRpY2RldiAke1BOfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkwZjg5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgc3FsaXRlMy5pbmMKLQotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKLQotU1JDX1VSSSA9ICJcCi0gIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE4L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKLSAgZmlsZTovL0NWRS0yMDE4LTg3NDAucGF0Y2ggXAotICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTZiNTY0OGQ1NDJlOGFmYTZhYjdmZmI4ZGI4ZGRjM2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjgyNGFiMTIzOGI3MDZiYzY2MTI3MzIwYWZiZGZmYjA5NjM2MTEzMGUyMzI5MWYyNjkyOGEwMjdiODg1YzYxMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc1NTc2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMy4xLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE4L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk5YTUxYjQwYTY2ODcyODcyYTkxYzkyZjZkMDEzNGZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyODQyYjI4M2U1ZTc0NGVmZjVkYTI5ZWQzYzY5MzkxZGU3MzY4ZmNjYzRkMGVlNmJmNjI0OTBjZTU1NWVmMjUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI5ZWUzMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjE5MTJjZmQxZDljZGQzMGNlYmViOTA4NTA3YWNhZGM1IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNzlkZDMxNmJmYWZmNDhmMmZiNzRkMDY2YmFhZTBkODMwZTFmNDQ0MzY3OTZmZTQxMGE1NzI5N2U1YzVmMDljZiIKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLSMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KLSMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KLQotIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFNUQUdJTkdfREFUQURJUgotIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgotfQotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCi0KLSMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCi0jIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi1QQUNLQUdFUyA9KyAibGlidnRlIgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjUyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41Mi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMjRjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41Mi4yLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGEnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoJywgZCkgfSBcCisgICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkZTgxODEzNTBkY2NiMDEwZTkxNWUzNjZiZGQwNmQxOCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjBmMjY1N2NlZjUyYWNjYmZlNTZmZWVkZTU1MzE1NTU1MmQ3YzE5ODRiMTI5MTgzOGFmM2NiOGNmYzE5YjI2YWYiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworIyBsaWJ0b29sIGFkZHMgIi1ub3N0ZGxpYiIgd2hlbiBnKysgaXMgdXNlZC4gVGhpcyBicmVha3MgUElFIGJ1aWxkcy4KKyMgVXNlIGxpYnRvb2wtY3Jvc3MgKHdoaWNoIGhhcyBhIGhhY2sgdG8gcHJldmVudCB0aGF0KSBpbnN0ZWFkLgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiCisKK1BBQ0tBR0VTID0rICJsaWJ2dGUiCitGSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvYXJjLWNvbW1vbiBiL3Bva3kvbWV0YS9zaXRlL2FyYy1jb21tb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjNzIxYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9zaXRlL2FyYy1jb21tb24KQEAgLTAsMCArMSwxMSBAQAorIyBnZW5lcmFsCithY19jdl9hbGlnbm9mX2d1aW50MzI9NAorYWNfY3ZfYWxpZ25vZl9ndWludDY0PTQKK2FjX2N2X2FsaWdub2ZfdW5zaWduZWRfbG9uZz00CisKKyMgZ2xpYi0yLjAKK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPSR7bGZfY3Zfc2FuZV9yZWFsbG9jPXllc30KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9hdXRvYnVpbGRlci13b3JrZXItcHJlcmVxLXRlc3RzIGIvcG9reS9zY3JpcHRzL2F1dG9idWlsZGVyLXdvcmtlci1wcmVyZXEtdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmI0NmM2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9hdXRvYnVpbGRlci13b3JrZXItcHJlcmVxLXRlc3RzCkBAIC0wLDAgKzEsNjUgQEAKKyMhL2Jpbi9iYXNoCisjCisjIFNjcmlwdCB3aGljaCBjYW4gYmUgcnVuIG9uIG5ldyBhdXRvYnVpbGRlciB3b3JrZXJzIHRvIGNoZWNrIGFsbCBuZWVkZWQgY29uZmlndXJhdGlvbiBpcyBwcmVzZW50LgorIyBEZXNpZ25lZCB0byBiZSBydW4gaW4gYSByZXBvIHdoZXJlIGJpdGJha2Uvb2UtY29yZSBhcmUgYWxyZWFkeSBwcmVzZW50LgorIworCisjCisjIFRvZG8KKyMgQWRkIHRlc3R0b29scy9zdWJ1bml0IGltcG9ydCB0ZXN0CisjIEFkZCBweXRob24zLWdpdCB0ZXN0CisjIEFkZCBwaWd6IHRlc3QKKyMgdm5jIHRlc3RzL2NoZWNrdm5jPworIyB0ZXN0IHNlbmRtYWlsIHdvcmtzIChmb3IgUUEgZW1haWwgbm90aWZpY2F0aW9uKQorIyB0ZXN0IGVycm9yIHJlcG9ydCBzdWJtaXNzaW9uIHdvcmtzCisjIHRlc3QgYnVpbGRpc3RvcnkgZ2l0IHJlcG8gd29ya3M/CisjCisKKy4gLi9vZS1pbml0LWJ1aWxkLWVudiA+IC9kZXYvbnVsbAoraWYgWyAiJD8iICE9ICIwIiBdOyB0aGVuCisgICAgZXhpdCAxCitmaQorZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgPiAvZGV2L251bGwKK2lmIFsgIiQ/IiAhPSAiMCIgXTsgdGhlbgorICAgIGVjaG8gIlBsZWFzZSBzZXQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUiCisgICAgZXhpdCAxCitmaQorZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsID4gL2Rldi9udWxsCitpZiBbICIkPyIgIT0gIjAiIF07IHRoZW4KKyAgICBlY2hvICJQbGVhc2Ugc2V0IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCIKKyAgICBleGl0IDEKK2ZpCitiaXRiYWtlIC1wCitpZiBbICIkPyIgIT0gIjAiIF07IHRoZW4KKyAgICBlY2hvICJCaXRiYWtlIHBhcnNpbmcgZmFpbGVkIgorICAgIGV4aXQgMQorZmkKKworV0FUQ0hFUz0kKFBBVEg9Ii9zYmluOi91c3Ivc2JpbjokUEFUSCIgc3lzY3RsIGZzLmlub3RpZnkubWF4X3VzZXJfd2F0Y2hlcyAtbikKK2lmICgoICRXQVRDSEVTIDwgNjUwMDAgKSk7IHRoZW4KKyAgICBlY2hvICdOZWVkIHRvIGluY3JlYXNlIHdhdGNoZXMgKGVjaG8gZnMuaW5vdGlmeS5tYXhfdXNlcl93YXRjaGVzPTY1NTM2IHwgc3VkbyB0ZWUgLWEgL2V0Yy9zeXNjdGwuY29uZicKKyAgICBleGl0IDEKK2ZpCitta2RpciAtcCB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0CitwdXNoZCB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0CitpZiBbICEgLWUgY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQuZXh0NCBdOyB0aGVuCisgICAgd2dldCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8veW9jdG8tMi41LjEvbWFjaGluZXMvcWVtdS9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LmV4dDQKK2ZpCitpZiBbICEgLWUgY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQucWVtdWJvb3QuY29uZiBdOyB0aGVuCisgICAgd2dldCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8veW9jdG8tMi41LjEvbWFjaGluZXMvcWVtdS9xZW11eDg2LTY0L2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LnFlbXVib290LmNvbmYKK2ZpCitpZiBbICEgLWUgYnpJbWFnZS1xZW11eDg2LTY0LmJpbiBdOyB0aGVuCisgICAgd2dldCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8veW9jdG8tMi41LjEvbWFjaGluZXMvcWVtdS9xZW11eDg2LTY0L2J6SW1hZ2UtcWVtdXg4Ni02NC5iaW4KK2ZpCitwb3BkCitiaXRiYWtlIHFlbXUtaGVscGVyLW5hdGl2ZQorcnVucWVtdSBxZW11eDg2LTY0CitpZiBbICIkPyIgIT0gIjAiIF07IHRoZW4KKyAgICBlY2hvICJVbmFibGUgdG8gdXNlIHJ1bnFlbXUiCisgICAgZXhpdCAxCitmaQorcnVucWVtdSBxZW11eDg2LTY0IGt2bQoraWYgWyAiJD8iICE9ICIwIiBdOyB0aGVuCisgICAgZWNobyAiVW5hYmxlIHRvIHVzZSBydW5xZW11IHdpdGgga3ZtIgorICAgIGV4aXQgMQorZmkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb21iby1sYXllciBiL3Bva3kvc2NyaXB0cy9jb21iby1sYXllcgppbmRleCBkMDRkODhiLi5kYzQwZTcyIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIKKysrIGIvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyCkBAIC0yNDYsNyArMjQ2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgdHJhZGl0aW9uYWwgYmVoYXZpb3IgZnJvbSAiZ2l0IGFyY2hpdmUiIChwcmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICMgaGVyZSkgaXQgdG8gY2hvb3NlIHRoZSBmaXJzdCBvbmUuIFRoaXMgbWlnaHQgbm90IGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVuZGVkLCBzbyBhdCBsZWFzdCB3YXJuIGFib3V0IGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzOiBpbml0aWFsIHJldmlzaW9uICclcycgbm90IHVuaXF1ZSwgcGlja2luZyByZXN1bHQgb2YgcmV2LXBhcnNlID0gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCIlczogaW5pdGlhbCByZXZpc2lvbiAnJXMnIG5vdCB1bmlxdWUsIHBpY2tpbmcgcmVzdWx0IG9mIHJldi1wYXJzZSA9ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgaW5pdGlhbHJldiwgcmVmc1swXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFscmV2ID0gcmV2CiAgICAgICAgICAgICAgICAgZXhjZXB0OgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvbWtlZmlkaXNrLnNoIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvbWtlZmlkaXNrLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzOWU0YmNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvc2NyaXB0cy9jb250cmliL21rZWZpZGlzay5zaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3MiArMCwwIEBACi0jIS9iaW4vc2gKLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7ICB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7ICB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlCi0jIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgIGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKLSMKLQotTEFORz1DCi0KLWVjaG8KLWVjaG8gIldBUk5JTkc6IFRoaXMgc2NyaXB0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uLiIKLWVjaG8gIlBsZWFzZSBjb25zaWRlciB1c2luZyB3aWMgRUZJIGltYWdlcyBpbnN0ZWFkLiIKLWVjaG8KLQotIyBTZXQgdG8gMSB0byBlbmFibGUgYWRkaXRpb25hbCBvdXRwdXQKLURFQlVHPTAKLU9VVD0iL2Rldi9udWxsIgotCi0jCi0jIERlZmF1bHRzCi0jCi0jIDIwIE1iIGZvciB0aGUgYm9vdCBwYXJ0aXRpb24KLUJPT1RfU0laRT0yMAotIyA1JSBmb3Igc3dhcAotU1dBUF9SQVRJTz01Ci0KLSMgQ2xlYW51cCBhZnRlciBkaWUoKQotY2xlYW51cCgpIHsKLQlkZWJ1ZyAiU3luY2luZyBhbmQgdW5tb3VudGluZyBkZXZpY2VzIgotCSMgVW5tb3VudCBhbnl0aGluZyB3ZSBtb3VudGVkCi0JdW5tb3VudCAkUk9PVEZTX01OVCB8fCBlcnJvciAiRmFpbGVkIHRvIHVubW91bnQgJFJPT1RGU19NTlQiCi0JdW5tb3VudCAkQk9PVEZTX01OVCB8fCBlcnJvciAiRmFpbGVkIHRvIHVubW91bnQgJEJPT1RGU19NTlQiCi0JdW5tb3VudCAkSERESU1HX1JPT1RGU19NTlQgfHwgZXJyb3IgIkZhaWxlZCB0byB1bm1vdW50ICRIRERJTUdfUk9PVEZTX01OVCIKLQl1bm1vdW50ICRIRERJTUdfTU5UIHx8IGVycm9yICJGYWlsZWQgdG8gdW5tb3VudCAkSERESU1HX01OVCIKLQotCSMgUmVtb3ZlIHRoZSBUTVBESVIKLQlkZWJ1ZyAiUmVtb3ZpbmcgdGVtcG9yYXJ5IGZpbGVzIgotCWlmIFsgLWQgIiRUTVBESVIiIF07IHRoZW4KLQkJcm0gLXJmICRUTVBESVIgfHwgZXJyb3IgIkZhaWxlZCB0byByZW1vdmUgJFRNUERJUiIKLQlmaQotfQotCi10cmFwICdkaWUgIlNpZ25hbCBSZWNlaXZlZCwgQWJvcnRpbmcuLi4iJyBIVVAgSU5UIFRFUk0KLQotIyBMb2dnaW5nIHJvdXRpbmVzCi1XQVJOSU5HUz0wCi1FUlJPUlM9MAotQ0xFQVI9IiQodHB1dCBzZ3IwKSIKLUlORk89IiQodHB1dCBib2xkKSIKLVJFRD0iJCh0cHV0IHNldGFmIDEpJCh0cHV0IGJvbGQpIgotR1JFRU49IiQodHB1dCBzZXRhZiAyKSQodHB1dCBib2xkKSIKLVlFTExPVz0iJCh0cHV0IHNldGFmIDMpJCh0cHV0IGJvbGQpIgotaW5mbygpIHsKLQllY2hvICIke0lORk99JDEke0NMRUFSfSIKLX0KLWVycm9yKCkgewotCUVSUk9SUz0kKChFUlJPUlMrMSkpCi0JZWNobyAiJHtSRUR9JDEke0NMRUFSfSIKLX0KLXdhcm4oKSB7Ci0JV0FSTklOR1M9JCgoV0FSTklOR1MrMSkpCi0JZWNobyAiJHtZRUxMT1d9JDEke0NMRUFSfSIKLX0KLXN1Y2Nlc3MoKSB7Ci0JZWNobyAiJHtHUkVFTn0kMSR7Q0xFQVJ9IgotfQotZGllKCkgewotCWVycm9yICIkMSIKLQljbGVhbnVwCi0JZXhpdCAxCi19Ci1kZWJ1ZygpIHsKLQlpZiBbICRERUJVRyAtZXEgMSBdOyB0aGVuCi0JCWVjaG8gIiQxIgotCWZpCi19Ci0KLXVzYWdlKCkgewotCWVjaG8gIlVzYWdlOiAkKGJhc2VuYW1lICQwKSBbLXZdIERFVklDRSBIRERJTUcgVEFSR0VUX0RFVklDRSIKLQllY2hvICIgICAgICAgLXY6IFZlcmJvc2UgZGVidWciCi0JZWNobyAiICAgICAgIERFVklDRTogVGhlIGRldmljZSB0byB3cml0ZSB0aGUgaW1hZ2UgdG8sIGUuZy4gL2Rldi9zZGgiCi0JZWNobyAiICAgICAgIEhERElNRzogVGhlIGhkZGltZyBmaWxlIHRvIGdlbmVyYXRlIHRoZSBlZmkgZGlzayBmcm9tIgotCWVjaG8gIiAgICAgICBUQVJHRVRfREVWSUNFOiBUaGUgZGV2aWNlIHRoZSB0YXJnZXQgd2lsbCBib290IGZyb20sIGUuZy4gIC9kZXYvbW1jYmxrMCIKLX0KLQotaW1hZ2VfZGV0YWlscygpIHsKLQlJTUc9JDEKLQlpbmZvICJJbWFnZSBkZXRhaWxzIgotCWVjaG8gIiAgICBpbWFnZTogJChzdGF0IC0tcHJpbnRmICclTlxuJyAkSU1HKSIKLQllY2hvICIgICAgIHNpemU6ICQoc3RhdCAtTCAtLXByaW50ZiAnJXMgYnl0ZXNcbicgJElNRykiCi0JZWNobyAiIG1vZGlmaWVkOiAkKHN0YXQgLUwgLS1wcmludGYgJyV5XG4nICRJTUcpIgotCWVjaG8gIiAgICAgdHlwZTogJChmaWxlIC1MIC1iICRJTUcpIgotCWVjaG8gIiIKLX0KLQotZGV2aWNlX2RldGFpbHMoKSB7Ci0JREVWPSQxCi0JQkxPQ0tfU0laRT01MTIKLQotCWluZm8gIkRldmljZSBkZXRhaWxzIgotCWVjaG8gIiAgZGV2aWNlOiAkREVWSUNFIgotCWlmIFsgLWYgIi9zeXMvY2xhc3MvYmxvY2svJERFVi9kZXZpY2UvdmVuZG9yIiBdOyB0aGVuCi0JCWVjaG8gIiAgdmVuZG9yOiAkKGNhdCAvc3lzL2NsYXNzL2Jsb2NrLyRERVYvZGV2aWNlL3ZlbmRvcikiCi0JZWxzZQotCQllY2hvICIgIHZlbmRvcjogVU5LT1dOIgotCWZpCi0JaWYgWyAtZiAiL3N5cy9jbGFzcy9ibG9jay8kREVWL2RldmljZS9tb2RlbCIgXTsgdGhlbgotCQllY2hvICIgICBtb2RlbDogJChjYXQgL3N5cy9jbGFzcy9ibG9jay8kREVWL2RldmljZS9tb2RlbCkiCi0JZWxzZQotCQllY2hvICIgICBtb2RlbDogVU5LTk9XTiIKLQlmaQotCWlmIFsgLWYgIi9zeXMvY2xhc3MvYmxvY2svJERFVi9zaXplIiBdOyB0aGVuCi0JCWVjaG8gIiAgICBzaXplOiAkKCgkKGNhdCAvc3lzL2NsYXNzL2Jsb2NrLyRERVYvc2l6ZSkgKiAkQkxPQ0tfU0laRSkpIGJ5dGVzIgotCWVsc2UKLQkJZWNobyAiICAgIHNpemU6IFVOS05PV04iCi0JZmkKLQllY2hvICIiCi19Ci0KLXVubW91bnRfZGV2aWNlKCkgewotCWdyZXAgLXEgJERFVklDRSAvcHJvYy9tb3VudHMKLQlpZiBbICQ/IC1lcSAwIF07IHRoZW4KLQkJd2FybiAiJERFVklDRSBsaXN0ZWQgaW4gL3Byb2MvbW91bnRzLCBhdHRlbXB0aW5nIHRvIHVubW91bnQiCi0JCXVtb3VudCAkREVWSUNFKiAyPi9kZXYvbnVsbAotCQlyZXR1cm4gJD8KLQlmaQotCXJldHVybiAwCi19Ci0KLXVubW91bnQoKSB7Ci0JaWYgWyAiJDEiID0gIiIgXSA7IHRoZW4KLQkJcmV0dXJuIDAKLQlmaQotCWdyZXAgLXEgJDEgL3Byb2MvbW91bnRzCi0JaWYgWyAkPyAtZXEgMCBdOyB0aGVuCi0JCWRlYnVnICJVbm1vdW50aW5nICQxIgotCQl1bW91bnQgJDEKLQkJcmV0dXJuICQ/Ci0JZmkKLQlyZXR1cm4gMAotfQotCi0jCi0jIFBhcnNlIGFuZCB2YWxpZGF0ZSBhcmd1bWVudHMKLSMKLWlmIFsgJCMgLWx0IDMgXSB8fCBbICQjIC1ndCA0IF07IHRoZW4KLSAgICBpZiBbICQjIC1lcSAxIF07IHRoZW4KLSAgICAgICAgQVZBSUxBQkxFX0RJU0s9YGxzYmxrIHwgZ3JlcCAiZGlzayIgfCBjdXQgLWYgMSAtZCAiICJgCi0gICAgICAgIFg9MAotICAgICAgICBmb3IgZGlzayBpbiBgZWNobyAkQVZBSUxBQkxFX0RJU0tgOyBkbwotICAgICAgICAgICAgbW91bnRlZD1gbHNibGsgL2Rldi8kZGlzayB8IGF3ayB7J3ByaW50ICQ3J30gfCBzZWQgInMvTU9VTlRQT0lOVC8vImAKLSAgICAgICAgICAgIGlmIFsgLXogIiRtb3VudGVkIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgVU5NT1VOVEVEX0FWQUlMQUJMRVM9IiRVTk1PVU5URURfQVZBSUxBQkxFUyAvZGV2LyRkaXNrIgotICAgICAgICAgICAgICAgIGluZm8gIiRYIC0gL2Rldi8kZGlzayIKLSAgICAgICAgICAgICAgICBYPWBleHByICRYICsgMWAKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgaWYgWyAkWCAtZXEgMCBdOyB0aGVuCi0gICAgICAgICAgICBkaWUgIk5vIHVubW91bnRlZCBkZXZpY2UgZm91bmQuIgotICAgICAgICBmaQotICAgICAgICByZWFkIC1wICJDaG9vc2UgdW5tb3VudGVkIGRldmljZSBudW1iZXI6ICIgRElTS19OVU1CRVIKLSAgICAgICAgWD0wCi0gICAgICAgIGZvciBsaW5lIGluIGBlY2hvICRVTk1PVU5URURfQVZBSUxBQkxFU2A7IGRvCi0gICAgICAgICAgICBpZiBbICRESVNLX05VTUJFUiAtZXEgJFggXTsgdGhlbgotICAgICAgICAgICAgICAgIERJU0tfVE9fQkVfRkxBU0hFRD0kbGluZQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgWD1gZXhwciAkWCArIDFgCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIGlmIFsgLXogIiRESVNLX1RPX0JFX0ZMQVNIRUQiIF07IHRoZW4KLSAgICAgICAgICAgIGRpZSAiT3B0aW9uIFwiJERJU0tfTlVNQkVSXCIgaXMgaW52YWxpZC4gQ2hvb3NlIGEgdmFsaWQgb3B0aW9uIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpZiBbIC16IGBlY2hvICRESVNLX1RPX0JFX0ZMQVNIRUQgfCBncmVwICJtbWMiYCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgVEFSR0VUX1RPX0JFX0JPT1Q9Ii9kZXYvc2RhIgotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFRBUkdFVF9UT19CRV9CT09UPSIvZGV2L21tY2JsazAiCi0gICAgICAgICAgICBmaQotICAgICAgICBmaQotICAgICAgICBlY2hvICIiCi0gICAgICAgIGVjaG8gIkNob29zZSBhIG5hbWUgb2YgdGhlIGRldmljZSB0aGF0IHdpbGwgYmUgYm9vdCBmcm9tIgotICAgICAgICBlY2hvIC1uICJSZWNvbW1lbmRlZCBuYW1lIGlzOiAiCi0gICAgICAgIGluZm8gIiRUQVJHRVRfVE9fQkVfQk9PVCIKLSAgICAgICAgcmVhZCAtcCAiSXMgdGFyZ2V0IGRldmljZSBva2F5PyBbeS9OXTogIiBSRVNQT05TRQotICAgICAgICBpZiBbICIkUkVTUE9OU0UiICE9ICJ5IiBdOyB0aGVuCi0gICAgICAgICAgICByZWFkIC1wICJDaG9vc2UgdGFyZ2V0IGRldmljZSBuYW1lOiAiIFRBUkdFVF9UT19CRV9CT09UCi0gICAgICAgIGZpCi0gICAgICAgIGVjaG8gIiIKLSAgICAgICAgaWYgWyAteiAiJFRBUkdFVF9UT19CRV9CT09UIiBdOyB0aGVuCi0gICAgICAgICAgICBkaWUgIkVycm9yOiBjaG9vc2UgYSB2YWxpZCB0YXJnZXQgbmFtZSIKLSAgICAgICAgZmkKLSAgICBlbHNlCi0gICAgICAgIHVzYWdlCi0JICAgIGV4aXQgMQotICAgIGZpCi1maQotCi1pZiBbICIkMSIgPSAiLXYiIF07IHRoZW4KLQlERUJVRz0xCi0JT1VUPSIxIgotCXNoaWZ0Ci1maQotCi1pZiBbIC16ICIkQVZBSUxBQkxFX0RJU0siIF07IHRoZW4KLSAgICBERVZJQ0U9JDEKLSAgICBIRERJTUc9JDIKLSAgICBUQVJHRVRfREVWSUNFPSQzCi1lbHNlCi0gICAgREVWSUNFPSRESVNLX1RPX0JFX0ZMQVNIRUQKLSAgICBIRERJTUc9JDEKLSAgICBUQVJHRVRfREVWSUNFPSRUQVJHRVRfVE9fQkVfQk9PVAotZmkKLQotTElOSz0kKHJlYWRsaW5rICRERVZJQ0UpCi1pZiBbICQ/IC1lcSAwIF07IHRoZW4KLQlERVZJQ0U9IiRMSU5LIgotZmkKLQotaWYgWyAhIC13ICIkREVWSUNFIiBdOyB0aGVuCi0JdXNhZ2UKLQlpZiBbICEgLWUgIiR7REVWSUNFfSIgXSA7IHRoZW4KLQkJZGllICJEZXZpY2UgJERFVklDRSBjYW5ub3QgYmUgZm91bmQiCi0JZWxzZQotCQlkaWUgIkRldmljZSAkREVWSUNFIGlzIG5vdCB3cml0YWJsZSAobmVlZCB0byBydW4gdW5kZXIgc3Vkbz8pIgotCWZpCi1maQotCi1pZiBbICEgLWUgIiRIRERJTUciIF07IHRoZW4KLQl1c2FnZQotCWRpZSAiSERESU1HICRIRERJTUcgZG9lcyBub3QgZXhpc3QiCi1maQotCi0jCi0jIEVuc3VyZSB0aGUgaGRkaW1nIGlzIG5vdCBtb3VudGVkCi0jCi11bm1vdW50ICIkSERESU1HIiB8fCBkaWUgIkZhaWxlZCB0byB1bm1vdW50ICRIRERJTUciCi0KLSMKLSMgQ2hlY2sgaWYgYW55ICRERVZJQ0UgcGFydGl0aW9ucyBhcmUgbW91bnRlZAotIwotdW5tb3VudF9kZXZpY2UgfHwgZGllICJGYWlsZWQgdG8gdW5tb3VudCAkREVWSUNFIgotCi0jCi0jIENvbmZpcm0gZGV2aWNlIHdpdGggdXNlcgotIwotaW1hZ2VfZGV0YWlscyAkSERESU1HCi1kZXZpY2VfZGV0YWlscyAkKGJhc2VuYW1lICRERVZJQ0UpCi1lY2hvIC1uICIke0lORk99UHJlcGFyZSBFRkkgaW1hZ2Ugb24gJERFVklDRSBbeS9OXT8ke0NMRUFSfSAiCi1yZWFkIFJFU1BPTlNFCi1pZiBbICIkUkVTUE9OU0UiICE9ICJ5IiBdOyB0aGVuCi0JZWNobyAiSW1hZ2UgY3JlYXRpb24gYWJvcnRlZCIKLQlleGl0IDAKLWZpCi0KLQotIwotIyBQcmVwYXJlIHRoZSB0ZW1wb3Jhcnkgd29ya2luZyBzcGFjZQotIwotVE1QRElSPSQobWt0ZW1wIC1kIG1rZWZpZGlzay1YWFgpIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgbW91bnRpbmcgZGlyZWN0b3J5LiIKLUhERElNR19NTlQ9JFRNUERJUi9oZGRpbWcKLUhERElNR19ST09URlNfTU5UPSRUTVBESVIvaGRkaW1nX3Jvb3RmcwotUk9PVEZTX01OVD0kVE1QRElSL3Jvb3RmcwotQk9PVEZTX01OVD0kVE1QRElSL2Jvb3RmcwotbWtkaXIgJEhERElNR19NTlQgfHwgZGllICJGYWlsZWQgdG8gY3JlYXRlICRIRERJTUdfTU5UIgotbWtkaXIgJEhERElNR19ST09URlNfTU5UIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSAkSERESU1HX1JPT1RGU19NTlQiCi1ta2RpciAkUk9PVEZTX01OVCB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgJFJPT1RGU19NTlQiCi1ta2RpciAkQk9PVEZTX01OVCB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgJEJPT1RGU19NTlQiCi0KLQotIwotIyBQYXJ0aXRpb24gJERFVklDRQotIwotREVWSUNFX1NJWkU9JChwYXJ0ZWQgLXMgJERFVklDRSB1bml0IG1iIHByaW50IHwgZ3JlcCBeRGlzayB8IGN1dCAtZCIgIiAtZiAzIHwgc2VkIC1lICJzL01CLy8iKQotIyBJZiB0aGUgZGV2aWNlIHNpemUgaXMgbm90IHJlcG9ydGVkIHRoZXJlIG1heSBub3QgYmUgYSB2YWxpZCBsYWJlbAotaWYgWyAiJERFVklDRV9TSVpFIiA9ICIiIF0gOyB0aGVuCi0JcGFydGVkIC1zICRERVZJQ0UgbWtsYWJlbCBtc2RvcyB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgTVNET1MgcGFydGl0aW9uIHRhYmxlIgotCURFVklDRV9TSVpFPSQocGFydGVkIC1zICRERVZJQ0UgdW5pdCBtYiBwcmludCB8IGdyZXAgXkRpc2sgfCBjdXQgLWQiICIgLWYgMyB8IHNlZCAtZSAicy9NQi8vIikKLWZpCi1TV0FQX1NJWkU9JCgoREVWSUNFX1NJWkUqU1dBUF9SQVRJTy8xMDApKQotUk9PVEZTX1NJWkU9JCgoREVWSUNFX1NJWkUtQk9PVF9TSVpFLVNXQVBfU0laRSkpCi1ST09URlNfU1RBUlQ9JCgoQk9PVF9TSVpFKSkKLVJPT1RGU19FTkQ9JCgoUk9PVEZTX1NUQVJUK1JPT1RGU19TSVpFKSkKLVNXQVBfU1RBUlQ9JCgoUk9PVEZTX0VORCkpCi0KLSMgTU1DIGRldmljZXMgdXNlIGEgcGFydGl0aW9uIHByZWZpeCBjaGFyYWN0ZXIgJ3AnCi1QQVJUX1BSRUZJWD0iIgotaWYgWyAhICIke0RFVklDRSMvZGV2L21tY2Jsa30iID0gIiR7REVWSUNFfSIgXSB8fCBbICEgIiR7REVWSUNFIy9kZXYvbG9vcH0iID0gIiR7REVWSUNFfSIgXTsgdGhlbgotCVBBUlRfUFJFRklYPSJwIgotZmkKLUJPT1RGUz0kREVWSUNFJHtQQVJUX1BSRUZJWH0xCi1ST09URlM9JERFVklDRSR7UEFSVF9QUkVGSVh9MgotU1dBUD0kREVWSUNFJHtQQVJUX1BSRUZJWH0zCi0KLVRBUkdFVF9QQVJUX1BSRUZJWD0iIgotaWYgWyAhICIke1RBUkdFVF9ERVZJQ0UjL2Rldi9tbWNibGt9IiA9ICIke1RBUkdFVF9ERVZJQ0V9IiBdOyB0aGVuCi0JVEFSR0VUX1BBUlRfUFJFRklYPSJwIgotZmkKLVRBUkdFVF9ST09URlM9JFRBUkdFVF9ERVZJQ0Uke1RBUkdFVF9QQVJUX1BSRUZJWH0yCi1UQVJHRVRfU1dBUD0kVEFSR0VUX0RFVklDRSR7VEFSR0VUX1BBUlRfUFJFRklYfTMKLQotZWNobyAiIgotaW5mbyAiQm9vdCBwYXJ0aXRpb24gc2l6ZTogICAkQk9PVF9TSVpFIE1CICgkQk9PVEZTKSIKLWluZm8gIlJPT1RGUyBwYXJ0aXRpb24gc2l6ZTogJFJPT1RGU19TSVpFIE1CICgkUk9PVEZTKSIKLWluZm8gIlN3YXAgcGFydGl0aW9uIHNpemU6ICAgJFNXQVBfU0laRSBNQiAoJFNXQVApIgotZWNobyAiIgotCi0jIFVzZSBNU0RPUyBieSBkZWZhdWx0IGFzIEdQVCBjYW5ub3QgYmUgcmVsaWFibHkgZGlzdHJpYnV0ZWQgaW4gZGlzayBpbWFnZSBmb3JtCi0jIGFzIGl0IHJlcXVpcmVzIHRoZSBiYWNrdXAgdGFibGUgdG8gYmUgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIGRldmljZSwgd2hpY2gKLSMgb2YgY291cnNlIHZhcmllcyBmcm9tIGRldmljZSB0byBkZXZpY2UuCi0KLWluZm8gIlBhcnRpdGlvbmluZyBpbnN0YWxsYXRpb24gbWVkaWEgKCRERVZJQ0UpIgotCi1kZWJ1ZyAiRGVsZXRpbmcgcGFydGl0aW9uIHRhYmxlIG9uICRERVZJQ0UiCi1kZCBpZj0vZGV2L3plcm8gb2Y9JERFVklDRSBicz01MTIgY291bnQ9MiA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIHplcm8gYmVnaW5uaW5nIG9mICRERVZJQ0UiCi0KLWRlYnVnICJDcmVhdGluZyBuZXcgcGFydGl0aW9uIHRhYmxlIChNU0RPUykgb24gJERFVklDRSIKLXBhcnRlZCAtcyAkREVWSUNFIG1rbGFiZWwgbXNkb3MgPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgTVNET1MgcGFydGl0aW9uIHRhYmxlIgotCi1kZWJ1ZyAiQ3JlYXRpbmcgYm9vdCBwYXJ0aXRpb24gb24gJEJPT1RGUyIKLXBhcnRlZCAtcyAkREVWSUNFIG1rcGFydCBwcmltYXJ5IDAlICRCT09UX1NJWkUgPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgQk9PVCBwYXJ0aXRpb24iCi0KLWRlYnVnICJFbmFibGluZyBib290IGZsYWcgb24gJEJPT1RGUyIKLXBhcnRlZCAtcyAkREVWSUNFIHNldCAxIGJvb3Qgb24gPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBlbmFibGUgYm9vdCBmbGFnIgotCi1kZWJ1ZyAiQ3JlYXRpbmcgUk9PVEZTIHBhcnRpdGlvbiBvbiAkUk9PVEZTIgotcGFydGVkIC1zICRERVZJQ0UgbWtwYXJ0IHByaW1hcnkgJFJPT1RGU19TVEFSVCAkUk9PVEZTX0VORCA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSBST09URlMgcGFydGl0aW9uIgotCi1kZWJ1ZyAiQ3JlYXRpbmcgc3dhcCBwYXJ0aXRpb24gb24gJFNXQVAiCi1wYXJ0ZWQgLXMgJERFVklDRSBta3BhcnQgcHJpbWFyeSAkU1dBUF9TVEFSVCAxMDAlID4kT1VUIDI+JjEgfHwgZGllICJGYWlsZWQgdG8gY3JlYXRlIFNXQVAgcGFydGl0aW9uIgotCi1pZiBbICRERUJVRyAtZXEgMSBdOyB0aGVuCi0JcGFydGVkIC1zICRERVZJQ0UgcHJpbnQKLWZpCi0KLQotIwotIyBDaGVjayBpZiBhbnkgJERFVklDRSBwYXJ0aXRpb25zIGFyZSBtb3VudGVkIGFmdGVyIHBhcnRpdGlvbmluZwotIwotdW5tb3VudF9kZXZpY2UgfHwgZGllICJGYWlsZWQgdG8gdW5tb3VudCAkREVWSUNFIHBhcnRpdGlvbnMiCi0KLQotIwotIyBGb3JtYXQgJERFVklDRSBwYXJ0aXRpb25zCi0jCi1pbmZvICJGb3JtYXR0aW5nIHBhcnRpdGlvbnMiCi1kZWJ1ZyAiRm9ybWF0dGluZyAkQk9PVEZTIGFzIHZmYXQiCi1pZiBbICEgIiR7REVWSUNFIy9kZXYvbG9vcH0iID0gIiR7REVWSUNFfSIgXTsgdGhlbgotCW1rZnMudmZhdCAtSSAkQk9PVEZTIC1uICJFRkkiID4kT1VUIDI+JjEgfHwgZGllICJGYWlsZWQgdG8gZm9ybWF0ICRCT09URlMiCi1lbHNlCi0JbWtmcy52ZmF0ICRCT09URlMgLW4gIkVGSSIgPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBmb3JtYXQgJEJPT1RGUyIKLWZpCi0KLWRlYnVnICJGb3JtYXR0aW5nICRST09URlMgYXMgZXh0MyIKLW1rZnMuZXh0MyAtRiAkUk9PVEZTIC1MICJST09UIiA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIGZvcm1hdCAkUk9PVEZTIgotCi1kZWJ1ZyAiRm9ybWF0dGluZyBzd2FwIHBhcnRpdGlvbiAoJFNXQVApIgotbWtzd2FwICRTV0FQID4kT1VUIDI+JjEgfHwgZGllICJGYWlsZWQgdG8gcHJlcGFyZSBzd2FwIgotCi0KLSMKLSMgSW5zdGFsbGluZyB0byAkREVWSUNFCi0jCi1kZWJ1ZyAiTW91bnRpbmcgaW1hZ2VzIGFuZCBkZXZpY2UgaW4gcHJlcGFyYXRpb24gZm9yIGluc3RhbGxhdGlvbiIKLW1vdW50IC1vIHJvLGxvb3AgJEhERElNRyAkSERESU1HX01OVCA+JE9VVCAyPiYxIHx8IGVycm9yICJGYWlsZWQgdG8gbW91bnQgJEhERElNRyIKLW1vdW50IC1vIHJvLGxvb3AgJEhERElNR19NTlQvcm9vdGZzLmltZyAkSERESU1HX1JPT1RGU19NTlQgPiRPVVQgMj4mMSB8fCBlcnJvciAiRmFpbGVkIHRvIG1vdW50IHJvb3Rmcy5pbWciCi1tb3VudCAkUk9PVEZTICRST09URlNfTU5UID4kT1VUIDI+JjEgfHwgZXJyb3IgIkZhaWxlZCB0byBtb3VudCAkUk9PVEZTIG9uICRST09URlNfTU5UIgotbW91bnQgJEJPT1RGUyAkQk9PVEZTX01OVCA+JE9VVCAyPiYxIHx8IGVycm9yICJGYWlsZWQgdG8gbW91bnQgJEJPT1RGUyBvbiAkQk9PVEZTX01OVCIKLQotaW5mbyAiUHJlcGFyaW5nIGJvb3QgcGFydGl0aW9uIgotRUZJRElSPSIkQk9PVEZTX01OVC9FRkkvQk9PVCIKLSMgR2V0IGtlcm5lbCBpbWFnZSBuYW1lCi1pZiBbIC1lICIkSERESU1HX01OVC92bWxpbnV6IiBdOyB0aGVuCi0Ja2VybmVsX2ltYWdlPSJ2bWxpbnV6IgotZWxpZiBbICIkSERESU1HX01OVC9iekltYWdlIiBdOyB0aGVuCi0Ja2VybmVsX2ltYWdlPSJiekltYWdlIgotZWxzZQotCWRpZSAiTm8ga2VybmVsIGltYWdlIGZvdW5kIgotZmkKLWNwICRIRERJTUdfTU5ULyR7a2VybmVsX2ltYWdlfSAkQk9PVEZTX01OVCA+JE9VVCAyPiYxIHx8IGVycm9yICJGYWlsZWQgdG8gY29weSAke2tlcm5lbF9pbWFnZX0iCi0jIENvcHkgdGhlIGVmaSBsb2FkZXIgYW5kIGNvbmZpZ3MgKGJvb3RpKi5lZmkgYW5kIGdydWIuY2ZnIGlmIGl0IGV4aXN0cykKLWNwIC1yICRIRERJTUdfTU5UL0VGSSAkQk9PVEZTX01OVCA+JE9VVCAyPiYxIHx8IGVycm9yICJGYWlsZWQgdG8gY29weSBFRkkgZGlyIgotIyBTaWxlbnRseSBpZ25vcmUgYSBtaXNzaW5nIHN5c3RlbWQtYm9vdCBsb2FkZXIgZGlyICh3ZSBtaWdodCBqdXN0IGJlIGEgR1JVQiBpbWFnZSkKLWNwIC1yICRIRERJTUdfTU5UL2xvYWRlciAkQk9PVEZTX01OVCA+JE9VVCAyPiYxCi0KLSMgVXBkYXRlIHRoZSBib290IGxvYWRlcnMgY29uZmlndXJhdGlvbnMgZm9yIGFuIGluc3RhbGxlZCBpbWFnZQotIyBSZW1vdmUgYW55IGV4aXN0aW5nIHJvb3Q9IGtlcm5lbCBwYXJhbWV0ZXJzIGFuZDoKLSMgbyBBZGQgYSByb290PSBwYXJhbWV0ZXIgd2l0aCB0aGUgdGFyZ2V0IHJvb3RmcwotIyBvIFNwZWNpZnkgcm8gc28gZnNjayBjYW4gYmUgcnVuIGR1cmluZyBib290Ci0jIG8gU3BlY2lmeSByb290d2FpdCBpbiBjYXNlIHRoZSB0YXJnZXQgbWVkaWEgaXMgYW4gYXN5bmNyb25vdXMgYmxvY2sgZGV2aWNlCi0jICAgc3VjaCBhcyBNTUMgb3IgVVNCIGRpc2tzCi0jIG8gU3BlY2lmeSAicXVpZXQiIHRvIG1pbmltaXplIGJvb3QgdGltZSB3aGVuIHVzaW5nIHNsb3cgc2VyaWFsIGNvbnNvbGVzCi0KLSMgTG9vayBmb3IgYSBHUlVCIGluc3RhbGxhdGlvbgotR1JVQl9DRkc9IiRFRklESVIvZ3J1Yi5jZmciCi1pZiBbIC1lICIkR1JVQl9DRkciIF07IHRoZW4KLQlpbmZvICJDb25maWd1cmluZyBHUlVCIgotCSMgRGVsZXRlIHRoZSBpbnN0YWxsIGVudHJ5Ci0Jc2VkIC1pICIvbWVudWVudHJ5ICdpbnN0YWxsJy8sL159L2QiICRHUlVCX0NGRwotCSMgRGVsZXRlIHRoZSBpbml0cmQgbGluZXMKLQlzZWQgLWkgIi9pbml0cmQgL2QiICRHUlVCX0NGRwotCSMgRGVsZXRlIGFueSBMQUJFTD0gc3RyaW5ncwotCXNlZCAtaSAicy8gTEFCRUw9W14gXSovIC8iICRHUlVCX0NGRwotCi0Jc2VkIC1pICJzQCByb290PVteIF0qQCBAIiAkR1JVQl9DRkcKLQlzZWQgLWkgInNAJHtrZXJuZWxfaW1hZ2V9IEAke2tlcm5lbF9pbWFnZX0gcm9vdD0kVEFSR0VUX1JPT1RGUyBybyByb290d2FpdCBjb25zb2xlPXR0eVMwIGNvbnNvbGU9dHR5MCBAIiAkR1JVQl9DRkcKLWZpCi0KLSMgTG9vayBmb3IgYSBzeXN0ZW1kLWJvb3QgaW5zdGFsbGF0aW9uCi1TWVNURU1EX0JPT1RfRU5UUklFUz0iJEJPT1RGU19NTlQvbG9hZGVyL2VudHJpZXMiCi1TWVNURU1EX0JPT1RfQ0ZHPSIkU1lTVEVNRF9CT09UX0VOVFJJRVMvYm9vdC5jb25mIgotaWYgWyAtZCAiJFNZU1RFTURfQk9PVF9FTlRSSUVTIiBdOyB0aGVuCi0JaW5mbyAiQ29uZmlndXJpbmcgU3lzdGVtRC1ib290IgotCSMgcmVtb3ZlIHRoZSBpbnN0YWxsIHRhcmdldCBpZiBpdCBleGlzdHMKLQlybSAkU1lTVEVNRF9CT09UX0VOVFJJRVMvaW5zdGFsbC5jb25mID4kT1VUIDI+JjEKLQotCWlmIFsgISAtZSAiJFNZU1RFTURfQk9PVF9DRkciIF07IHRoZW4KLQkJZWNobyAiRVJST1I6ICRTWVNURU1EX0JPT1RfQ0ZHIG5vdCBmb3VuZCIKLQlmaQotCi0Jc2VkIC1pICIvaW5pdHJkIC9kIiAkU1lTVEVNRF9CT09UX0NGRwotCXNlZCAtaSAic0Agcm9vdD1bXiBdKkAgQCIgJFNZU1RFTURfQk9PVF9DRkcKLQlzZWQgLWkgInNAb3B0aW9ucyAqTEFCRUw9Ym9vdCBAb3B0aW9ucyBMQUJFTD1Cb290IHJvb3Q9JFRBUkdFVF9ST09URlMgcm8gcm9vdHdhaXQgY29uc29sZT10dHlTMCBjb25zb2xlPXR0eTAgQCIgJFNZU1RFTURfQk9PVF9DRkcKLWZpCi0KLSMgRW5zdXJlIHdlIGhhdmUgYXQgbGVhc3Qgb25lIEVGSSBib290bG9hZGVyIGNvbmZpZ3VyZWQKLWlmIFsgISAtZSAkR1JVQl9DRkcgXSAmJiBbICEgLWUgJFNZU1RFTURfQk9PVF9DRkcgXTsgdGhlbgotCWRpZSAiTm8gRUZJIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbiBmb3VuZCIKLWZpCi0KLQotaW5mbyAiQ29weWluZyBST09URlMgZmlsZXMgKHRoaXMgbWF5IHRha2UgYSB3aGlsZSkiCi1jcCAtYSAkSERESU1HX1JPT1RGU19NTlQvKiAkUk9PVEZTX01OVCA+JE9VVCAyPiYxIHx8IGRpZSAiUm9vdCBGUyBjb3B5IGZhaWxlZCIKLQotZWNobyAiJFRBUkdFVF9TV0FQICAgICBzd2FwICAgICAgICAgICAgIHN3YXAgICAgICAgZGVmYXVsdHMgICAgICAgICAgICAgIDAgMCIgPj4gJFJPT1RGU19NTlQvZXRjL2ZzdGFiCi0KLSMgV2UgZG9udCB3YW50IHVkZXYgdG8gbW91bnQgb3VyIHJvb3QgZGV2aWNlIHdoaWxlIHdlJ3JlIGJvb3RpbmcuLi4KLWlmIFsgLWQgJFJPT1RGU19NTlQvZXRjL3VkZXYvIF0gOyB0aGVuCi0JZWNobyAiJFRBUkdFVF9ERVZJQ0UiID4+ICRST09URlNfTU5UL2V0Yy91ZGV2L21vdW50LmJsYWNrbGlzdAotZmkKLQotIyBBZGQgc3RhcnR1cC5uc2ggc2NyaXB0IGZvciBhdXRvbWF0ZWQgYm9vdAotcHJpbnRmICJmczA6XCVzXEJPT1RcJXNcbiIgIkVGSSIgImJvb3R4NjQuZWZpIiA+ICRCT09URlNfTU5UL3N0YXJ0dXAubnNoCi0KLQotIyBDYWxsIGNsZWFudXAgdG8gdW5tb3VudCBkZXZpY2VzIGFuZCBpbWFnZXMgYW5kIHJlbW92ZSB0aGUgVE1QRElSCi1jbGVhbnVwCi0KLWVjaG8gIiIKLWlmIFsgJFdBUk5JTkdTIC1uZSAwIF0gJiYgWyAkRVJST1JTIC1lcSAwIF07IHRoZW4KLQllY2hvICIke1lFTExPV31JbnN0YWxsYXRpb24gY29tcGxldGVkIHdpdGggd2FybmluZ3Mke0NMRUFSfSIKLQllY2hvICIke1lFTExPV31XYXJuaW5nczogJFdBUk5JTkdTJHtDTEVBUn0iCi1lbGlmIFsgJEVSUk9SUyAtbmUgMCBdOyB0aGVuCi0JZWNobyAiJHtSRUR9SW5zdGFsbGF0aW9uIGVuY291bnRlcmVkIGVycm9ycyR7Q0xFQVJ9IgotCWVjaG8gIiR7UkVEfUVycm9yczogJEVSUk9SUyR7Q0xFQVJ9IgotCWVjaG8gIiR7WUVMTE9XfVdhcm5pbmdzOiAkV0FSTklOR1Mke0NMRUFSfSIKLWVsc2UKLQlzdWNjZXNzICJJbnN0YWxsYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseSIKLWZpCi1lY2hvICIiCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29udHJpYi9wYXRjaHJldmlldy5weSBiL3Bva3kvc2NyaXB0cy9jb250cmliL3BhdGNocmV2aWV3LnB5CmluZGV4IDRlM2U3M2MuLmE0ZDViYTYgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9jb250cmliL3BhdGNocmV2aWV3LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9jb250cmliL3BhdGNocmV2aWV3LnB5CkBAIC0xMzIsOCArMTMyLDggQEAKICAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCJNaXNzaW5nIFNpZ25lZC1vZmYtYnkgdGFnICglcykiICUgcGF0Y2gpCi0gICAgICAgICMgVE9ETzogZGlzYWJsZSB0aGlzIGZvciBub3cgYXMgdG9vIG11Y2ggZmFpbHMKLSAgICAgICAgaWYgRmFsc2UgYW5kIHIubWFsZm9ybWVkX3NvYjoKKworICAgICAgICBpZiByLm1hbGZvcm1lZF9zb2I6CiAgICAgICAgICAgICBuZWVkX2JsYW1lID0gVHJ1ZQogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgiTWFsZm9ybWVkIFNpZ25lZC1vZmYtYnkgJyVzJyAoJXMpIiAlIChyLm1hbGZvcm1lZF9zb2IsIHBhdGNoKSkKQEAgLTIwMyw3ICsyMDMsNyBAQAogCiAgICAgaWYgYXJncy5kaXJlY3Rvcnk6CiAgICAgICAgIG9zLmNoZGlyKGFyZ3MuZGlyZWN0b3J5KQotICAgIHBhdGNoZXMgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImdpdCIsICJscy1maWxlcyIsICIqLnBhdGNoIiwgIiouZGlmZiIpKS5kZWNvZGUoInV0Zi04Iikuc3BsaXQoKQorICAgIHBhdGNoZXMgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImdpdCIsICJscy1maWxlcyIsICJyZWNpcGVzLSovKiovKi5wYXRjaCIsICJyZWNpcGVzLSovKiovKi5kaWZmIikpLmRlY29kZSgidXRmLTgiKS5zcGxpdCgpCiAgICAgcmVzdWx0cyA9IHBhdGNocmV2aWV3KHBhdGNoZXMpCiAgICAgYW5hbHlzZShyZXN1bHRzLCB3YW50X2JsYW1lPWFyZ3MuYmxhbWUsIHZlcmJvc2U9YXJncy52ZXJib3NlKQogICAgIGlmIGFyZ3MuaGlzdG9ncmFtOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvdmVyaWZ5LWhvbWVwYWdlLnB5IGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvdmVyaWZ5LWhvbWVwYWdlLnB5CmluZGV4IDc2ZjE3NDkuLmNjNmU3OTcgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9jb250cmliL3ZlcmlmeS1ob21lcGFnZS5weQorKysgYi9wb2t5L3NjcmlwdHMvY29udHJpYi92ZXJpZnktaG9tZXBhZ2UucHkKQEAgLTI3LDcgKzI3LDcgQEAKIGRlZiB3Z2V0SG9tZXBhZ2UocG4sIGhvbWVwYWdlKToKICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNhbGwoJ3dnZXQgJyArICctcSAtVCA1IC10IDEgLS1zcGlkZXIgJyArIGhvbWVwYWdlLCBzaGVsbCA9IFRydWUpCiAgICAgaWYgcmVzdWx0OgotICAgICAgICBsb2dnZXIud2FybigiJXM6IGZhaWxlZCB0byB2ZXJpZnkgSE9NRVBBR0U6ICVzICIgJSAocG4sIGhvbWVwYWdlKSkKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoIiVzOiBmYWlsZWQgdG8gdmVyaWZ5IEhPTUVQQUdFOiAlcyAiICUgKHBuLCBob21lcGFnZSkpCiAgICAgICAgIHJldHVybiAxCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9kZXZ0b29sIGIvcG9reS9zY3JpcHRzL2RldnRvb2wKaW5kZXggZDY4MWExOS4uMGU1NzhjMCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2RldnRvb2wKKysrIGIvcG9reS9zY3JpcHRzL2RldnRvb2wKQEAgLTUxLDcgKzUxLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLmNvbmZpZ19vYmogPSBjb25maWdwYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcigpCisgICAgICAgIHNlbGYuY29uZmlnX29iaiA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQogCiAgICAgZGVmIGdldChzZWxmLCBzZWN0aW9uLCBvcHRpb24sIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvYnVpbGRfcGVyZi9odG1sL3JlcG9ydC5odG1sIGIvcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwKaW5kZXggMjkxYWQ5ZC4uZDFiYTZmMiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwKQEAgLTEzNiwxMCArMTM2LDEzIEBACiAgICAgICAgICAgICB7JSBlbHNlICV9CiAgICAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSAiY29sb3I6IG9yYW5nZSIgJX0KICAgICAgICAgICAgIHslZW5kaWYgJX0KKyAgICAgICAgICAgIHslIGlmIG1lYXN1cmVtZW50LnJlbGRpZmZ8YWJzID4gMiAlfQorICAgICAgICAgICAgICB7JSBzZXQgcmVzdWx0X3N0eWxlID0gcmVzdWx0X3N0eWxlICsgIjsgZm9udC13ZWlnaHQ6IGJvbGQiICV9CisgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgPHRkPnt7IG1lYXN1cmVtZW50LmRlc2NyaXB0aW9uIH19PC90ZD4KICAgICAgICAgICAgIDx0ZCBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiPnt7IG1lYXN1cmVtZW50LnZhbHVlLm1lYW4gfX08L3RkPgogICAgICAgICAgICAgPHRkIHN0eWxlPSJ7eyByZXN1bHRfc3R5bGUgfX0iPnt7IG1lYXN1cmVtZW50LmFic2RpZmZfc3RyIH19PC90ZD4KLSAgICAgICAgICAgIDx0ZCBzdHlsZT0ie3sgcmVzdWx0X3N0eWxlIH19Ij57eyBtZWFzdXJlbWVudC5yZWxkaWZmIH19PC90ZD4KKyAgICAgICAgICAgIDx0ZCBzdHlsZT0ie3sgcmVzdWx0X3N0eWxlIH19Ij57eyBtZWFzdXJlbWVudC5yZWxkaWZmX3N0ciB9fTwvdGQ+CiAgICAgICAgICAgPC90cj4KICAgICAgICAgeyUgZW5kZm9yICV9CiAgICAgICB7JSBlbHNlICV9CkBAIC0xNjcsNyArMTcwLDcgQEAKICAgICAgICAgICAgIHslIGVsc2UgJX0KICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlIj4KICAgICAgICAgICAgIHslIGVuZGlmICV9Ci0gICAgICAgICAgICB7eyBtZWFzdXJlbWVudC5hYnNkaWZmX3N0ciB9fSAoe3ttZWFzdXJlbWVudC5yZWxkaWZmfX0pCisgICAgICAgICAgICB7eyBtZWFzdXJlbWVudC5hYnNkaWZmX3N0ciB9fSAoe3ttZWFzdXJlbWVudC5yZWxkaWZmX3N0cn19KQogICAgICAgICAgICAgPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICB7IyBUYWJsZSBmb3IgdHJlbmRjaGFydCBhbmQgdGhlIHN0YXRpc3RpY3MgI30KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9idWlsZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9idWlsZC5weQppbmRleCAyNTIzNzllLi5iYTk1OTNmIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvYnVpbGQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2J1aWxkLnB5CkBAIC01NCw3ICs1NCwxMSBAQAogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnYnVpbGQnIHN1YmNvbW1hbmQiIiIKICAgICB3b3Jrc3BhY2VwbiA9IGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUod29ya3NwYWNlLCBhcmdzLnJlY2lwZW5hbWUsIGJiY2xhc3NleHRlbmQ9VHJ1ZSkKIAotICAgIGJ1aWxkX3Rhc2tzID0gX2dldF9idWlsZF90YXNrcyhjb25maWcpCisgICAgaWYgYXJncy5jbGVhbjoKKyAgICAgICAgIyB1c2UgY2xlYW4gaW5zdGVhZCBvZiBjbGVhbnNzdGF0ZSB0byBhdm9pZCBtZXNzaW5nIHRoaW5ncyB1cCBpbiBlU0RLCisgICAgICAgIGJ1aWxkX3Rhc2tzID0gWydkb19jbGVhbiddCisgICAgZWxzZToKKyAgICAgICAgYnVpbGRfdGFza3MgPSBfZ2V0X2J1aWxkX3Rhc2tzKGNvbmZpZykKIAogICAgIGJiYXBwZW5kID0gd29ya3NwYWNlW3dvcmtzcGFjZXBuXVsnYmJhcHBlbmQnXQogICAgIGlmIGFyZ3MuZGlzYWJsZV9wYXJhbGxlbF9tYWtlOgpAQCAtODMsNCArODcsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nd29ya2luZycsIG9yZGVyPTUwKQogICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJ3JlY2lwZW5hbWUnLCBoZWxwPSdSZWNpcGUgdG8gYnVpbGQnKQogICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJy1zJywgJy0tZGlzYWJsZS1wYXJhbGxlbC1tYWtlJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRGlzYWJsZSBtYWtlIHBhcmFsbGVsaXNtJykKKyAgICBwYXJzZXJfYnVpbGQuYWRkX2FyZ3VtZW50KCctYycsICctLWNsZWFuJywgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nY2xlYW4gdXAgcmVjaXBlIGJ1aWxkaW5nIHJlc3VsdHMnKQogICAgIHBhcnNlcl9idWlsZC5zZXRfZGVmYXVsdHMoZnVuYz1idWlsZCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9leHBvcnQucHkgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZXhwb3J0LnB5CmluZGV4IDEzZWUyNTguLjM1MzQ5ZTIgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9leHBvcnQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2V4cG9ydC5weQpAQCAtODQsNyArODQsNyBAQAogCiAgICAgIyBpZiBhbGwgd29ya3NwYWNlIGlzIGV4Y2x1ZGVkLCBxdWl0CiAgICAgaWYgbm90IGxlbihzZXQod29ya3NwYWNlLmtleXMoKSkuZGlmZmVyZW5jZShzZXQoYXJncy5leGNsdWRlKSkpOgotICAgICAgICBsb2dnZXIud2FybignQWxsIHJlY2lwZXMgaW4gd29ya3NwYWNlIGV4Y2x1ZGVkLCBub3RoaW5nIHRvIGV4cG9ydCcpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCdBbGwgcmVjaXBlcyBpbiB3b3Jrc3BhY2UgZXhjbHVkZWQsIG5vdGhpbmcgdG8gZXhwb3J0JykKICAgICAgICAgcmV0dXJuIDAKIAogICAgIGV4cG9ydGVkID0gW10KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9pbXBvcnQucHkgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvaW1wb3J0LnB5CmluZGV4IGMxM2ExODAuLjQyNjRiN2QgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9pbXBvcnQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2ltcG9ydC5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBub25faW1wb3J0YWJsZXMuYXBwZW5kKGZuKQotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdObyByZWNpcGUgdG8gYXBwZW5kICVzLmJiYXBwcGVuZCwgc2tpcHBpbmcnICUgZm4pCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ05vIHJlY2lwZSB0byBhcHBlbmQgJXMuYmJhcHBwZW5kLCBza2lwcGluZycgJSBmbikKIAogICAgICAgICAjIEV4dHJhY3QKICAgICAgICAgaW1wb3J0ZWQgPSBbXQpAQCAtMTA0LDkgKzEwNCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyLmV4dHJhY3QobWVtYmVyLCBwYXRoPWNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgcGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4ocGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcocGUpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybignRmlsZSBhbHJlYWR5IHByZXNlbnQuIFVzZSAtLW92ZXJ3cml0ZS8tbyB0byBvdmVyd3JpdGUgaXQ6ICVzJyAlIG1lbWJlci5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0ZpbGUgYWxyZWFkeSBwcmVzZW50LiBVc2UgLS1vdmVyd3JpdGUvLW8gdG8gb3ZlcndyaXRlIGl0OiAlcycgJSBtZW1iZXIubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgdGFyLmV4dHJhY3QobWVtYmVyLCBwYXRoPWNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKQEAgLTEyOSw3ICsxMjksNyBAQAogICAgIGlmIGltcG9ydGVkOgogICAgICAgICBsb2dnZXIuaW5mbygnSW1wb3J0ZWQgcmVjaXBlcyBpbnRvIHdvcmtzcGFjZSAlczogJXMnICUgKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJywgJy5qb2luKGltcG9ydGVkKSkpCiAgICAgZWxzZToKLSAgICAgICAgbG9nZ2VyLndhcm4oJ05vIHJlY2lwZXMgaW1wb3J0ZWQgaW50byB0aGUgd29ya3NwYWNlJykKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ05vIHJlY2lwZXMgaW1wb3J0ZWQgaW50byB0aGUgd29ya3NwYWNlJykKIAogICAgIHJldHVybiAwCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCBhMWU4ZTFkLi5kMTRiN2E2IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgICAgICBhcmdzLnNyY3RyZWUgPSBhcmdzLnJlY2lwZW5hbWUKICAgICAgICAgICAgIGFyZ3MucmVjaXBlbmFtZSA9IE5vbmUKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGFyZ3MucmVjaXBlbmFtZSk6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignQW1iaWd1b3VzIGFyZ3VtZW50ICIlcyIgLSBhc3N1bWluZyB5b3UgbWVhbiBpdCB0byBiZSB0aGUgcmVjaXBlIG5hbWUnICUgYXJncy5yZWNpcGVuYW1lKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0FtYmlndW91cyBhcmd1bWVudCAiJXMiIC0gYXNzdW1pbmcgeW91IG1lYW4gaXQgdG8gYmUgdGhlIHJlY2lwZSBuYW1lJyAlIGFyZ3MucmVjaXBlbmFtZSkKIAogICAgIGlmIG5vdCBhcmdzLmZldGNodXJpOgogICAgICAgICBpZiBhcmdzLnNyY3JldjoKQEAgLTgyLDcgKzgyLDcgQEAKICAgICAgICAgaWYgYXJncy5mZXRjaHVyaToKICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVVJJIHNwZWNpZmllZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IGFzIHdlbGwgYXMgLWYvLS1mZXRjaCcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignLWYvLS1mZXRjaCBvcHRpb24gaXMgZGVwcmVjYXRlZCAtIHlvdSBjYW4gbm93IHNpbXBseSBzcGVjaWZ5IHRoZSBVUkwgdG8gZmV0Y2ggYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGluc3RlYWQnKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJy1mLy0tZmV0Y2ggb3B0aW9uIGlzIGRlcHJlY2F0ZWQgLSB5b3UgY2FuIG5vdyBzaW1wbHkgc3BlY2lmeSB0aGUgVVJMIHRvIGZldGNoIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpbnN0ZWFkJykKICAgICAgICAgICAgIGFyZ3MuZmV0Y2h1cmkgPSBhcmdzLmZldGNoCiAKICAgICBpZiBhcmdzLnJlY2lwZW5hbWU6CkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignQ29tbWFuZCBcJyVzXCcgZGlkIG5vdCBjcmVhdGUgYW55IHJlY2lwZSBmaWxlOlxuJXMnICUgKGUuY29tbWFuZCwgZS5zdGRvdXQpKQogICAgICAgICBhdHRpY19yZWNpcGUgPSBvcy5wYXRoLmpvaW4oY29uZmlnLndvcmtzcGFjZV9wYXRoLCAnYXR0aWMnLCByZWNpcGVuYW1lLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhhdHRpY19yZWNpcGUpOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0EgbW9kaWZpZWQgcmVjaXBlIGZyb20gYSBwcmV2aW91cyBpbnZvY2F0aW9uIGV4aXN0cyBpbiAlcyAtIHlvdSBtYXkgd2lzaCB0byBtb3ZlIHRoaXMgb3ZlciB0aGUgdG9wIG9mIHRoZSBuZXcgcmVjaXBlIGlmIHlvdSBoYWQgY2hhbmdlcyBpbiBpdCB0aGF0IHlvdSB3YW50IHRvIGNvbnRpbnVlIHdpdGgnICUgYXR0aWNfcmVjaXBlKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0EgbW9kaWZpZWQgcmVjaXBlIGZyb20gYSBwcmV2aW91cyBpbnZvY2F0aW9uIGV4aXN0cyBpbiAlcyAtIHlvdSBtYXkgd2lzaCB0byBtb3ZlIHRoaXMgb3ZlciB0aGUgdG9wIG9mIHRoZSBuZXcgcmVjaXBlIGlmIHlvdSBoYWQgY2hhbmdlcyBpbiBpdCB0aGF0IHlvdSB3YW50IHRvIGNvbnRpbnVlIHdpdGgnICUgYXR0aWNfcmVjaXBlKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGlmIHRtcHNyY2RpciBhbmQgb3MucGF0aC5leGlzdHModG1wc3JjZGlyKToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wc3JjZGlyKQpAQCAtMjk1LDcgKzI5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllcmNvbmZfZmlsZSwgJ2EnKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnJXMgPSAiJXMiXG4nICUgKHByZWZlcnJlZF9wcm92aWRlciwgcmVjaXBlX25hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdTZXQgXCclc1wnIGluIG9yZGVyIHRvIHVzZSB0aGUgcmVjaXBlJyAlIHByZWZlcnJlZF9wcm92aWRlcikKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1NldCBcJyVzXCcgaW4gb3JkZXIgdG8gdXNlIHRoZSByZWNpcGUnICUgcHJlZmVycmVkX3Byb3ZpZGVyKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgX2FkZF9tZDUoY29uZmlnLCByZWNpcGVuYW1lLCBhcHBlbmRmaWxlKQpAQCAtNzA0LDcgKzcwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHNwbGl0bGluZVsyXSAhPSBtZDU6CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocHJlc2VydmVwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVmaWxlID0gb3MucGF0aC5iYXNlbmFtZShyZW1vdmVmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0ZpbGUgJXMgbW9kaWZpZWQgc2luY2UgaXQgd2FzIHdyaXR0ZW4sIHByZXNlcnZpbmcgaW4gJXMnICUgKHByZXNlcnZlZmlsZSwgcHJlc2VydmVwYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdGaWxlICVzIG1vZGlmaWVkIHNpbmNlIGl0IHdhcyB3cml0dGVuLCBwcmVzZXJ2aW5nIGluICVzJyAlIChwcmVzZXJ2ZWZpbGUsIHByZXNlcnZlcGF0aCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwubW92ZShyZW1vdmVmaWxlLCBvcy5wYXRoLmpvaW4ocHJlc2VydmVwYXRoLCBwcmVzZXJ2ZWZpbGUpKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHJlbW92ZWZpbGUpCkBAIC03OTUsNyArNzk1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBicmFuY2huYW1lLnN0YXJ0c3dpdGgob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6CiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaGVzLmFwcGVuZChicmFuY2huYW1lKQogICAgICAgICAgICAgaWYgYnJhbmNoZXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1NSQ19VUkkgaXMgY29uZGl0aW9uYWxseSBvdmVycmlkZGVuIGluIHRoaXMgcmVjaXBlLCB0aHVzIHNldmVyYWwgJXMqIGJyYW5jaGVzIGhhdmUgYmVlbiBjcmVhdGVkLCBvbmUgZm9yIGVhY2ggb3ZlcnJpZGUgdGhhdCBtYWtlcyBjaGFuZ2VzIHRvIFNSQ19VUkkuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IG1ha2UgY2hhbmdlcyB0byB0aGUgJXMgYnJhbmNoIGZpcnN0LCB0aGVuIGNoZWNrb3V0IGFuZCByZWJhc2UgZWFjaCAlcyogYnJhbmNoIGFuZCB1cGRhdGUgYW55IHVuaXF1ZSBwYXRjaGVzIHRoZXJlIChkdXBsaWNhdGVzIG9uIHRob3NlIGJyYW5jaGVzIHdpbGwgYmUgaWdub3JlZCBieSBkZXZ0b29sIGZpbmlzaC91cGRhdGUtcmVjaXBlKScgJSAob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCwgYXJncy5icmFuY2gsIG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgpKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdTUkNfVVJJIGlzIGNvbmRpdGlvbmFsbHkgb3ZlcnJpZGRlbiBpbiB0aGlzIHJlY2lwZSwgdGh1cyBzZXZlcmFsICVzKiBicmFuY2hlcyBoYXZlIGJlZW4gY3JlYXRlZCwgb25lIGZvciBlYWNoIG92ZXJyaWRlIHRoYXQgbWFrZXMgY2hhbmdlcyB0byBTUkNfVVJJLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBtYWtlIGNoYW5nZXMgdG8gdGhlICVzIGJyYW5jaCBmaXJzdCwgdGhlbiBjaGVja291dCBhbmQgcmViYXNlIGVhY2ggJXMqIGJyYW5jaCBhbmQgdXBkYXRlIGFueSB1bmlxdWUgcGF0Y2hlcyB0aGVyZSAoZHVwbGljYXRlcyBvbiB0aG9zZSBicmFuY2hlcyB3aWxsIGJlIGlnbm9yZWQgYnkgZGV2dG9vbCBmaW5pc2gvdXBkYXRlLXJlY2lwZSknICUgKG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgsIGFyZ3MuYnJhbmNoLCBvdmVycmlkZV9icmFuY2hfcHJlZml4KSkKICAgICAgICAgICAgIGJyYW5jaGVzLmluc2VydCgwLCBhcmdzLmJyYW5jaCkKICAgICAgICAgICAgIHNlZW5fcGF0Y2hlcyA9IFtdCiAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgpAQCAtMTcyMCw3ICsxNzIwLDcgQEAKICAgICAgICAgaWYgdXBkYXRlZDoKICAgICAgICAgICAgIHJmID0gcmQuZ2V0VmFyKCdGSUxFJykKICAgICAgICAgICAgIGlmIHJmLnN0YXJ0c3dpdGgoY29uZmlnLndvcmtzcGFjZV9wYXRoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybignUmVjaXBlIGZpbGUgJXMgaGFzIGJlZW4gdXBkYXRlZCBidXQgaXMgaW5zaWRlIHRoZSB3b3Jrc3BhY2UgLSB5b3Ugd2lsbCBuZWVkIHRvIG1vdmUgaXQgKGFuZCBhbnkgYXNzb2NpYXRlZCBmaWxlcyBuZXh0IHRvIGl0KSBvdXQgdG8gdGhlIGRlc2lyZWQgbGF5ZXIgYmVmb3JlIHVzaW5nICJkZXZ0b29sIHJlc2V0IiBpbiBvcmRlciB0byBrZWVwIGFueSBjaGFuZ2VzJyAlIHJmKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdSZWNpcGUgZmlsZSAlcyBoYXMgYmVlbiB1cGRhdGVkIGJ1dCBpcyBpbnNpZGUgdGhlIHdvcmtzcGFjZSAtIHlvdSB3aWxsIG5lZWQgdG8gbW92ZSBpdCAoYW5kIGFueSBhc3NvY2lhdGVkIGZpbGVzIG5leHQgdG8gaXQpIG91dCB0byB0aGUgZGVzaXJlZCBsYXllciBiZWZvcmUgdXNpbmcgImRldnRvb2wgcmVzZXQiIGluIG9yZGVyIHRvIGtlZXAgYW55IGNoYW5nZXMnICUgcmYpCiAgICAgZmluYWxseToKICAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCiAKQEAgLTE4MDMsNyArMTgwMyw3IEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcmlnZGlyKToKICAgICAgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhvcmlnZGlyKToKICAgICAgICAgICAgICAgICAgICAgZm9yIGZuIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1ByZXNlcnZpbmcgJXMgaW4gJXMnICUgKGZuLCBwcmVzZXJ2ZXBhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1ByZXNlcnZpbmcgJXMgaW4gJXMnICUgKGZuLCBwcmVzZXJ2ZXBhdGgpKQogICAgICAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4ob3JpZ2RpciwgZm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocHJlc2VydmVwYXRoLCBmbikpCiAgICAgICAgICAgICAgICAgICAgIGZvciBkbiBpbiBkaXJzOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQppbmRleCBjM2ZkODY2Li4yMDIwMDc3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQpAQCAtMjY0LDcgKzI2NCw3IEBACiAgICAgaWYgbm9fcGF0Y2g6CiAgICAgICAgIHBhdGNoZXMgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3BhdGNoZXMoY3JkKQogICAgICAgICBpZiBwYXRjaGVzOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0J5IHVzZXIgY2hvaWNlLCB0aGUgZm9sbG93aW5nIHBhdGNoZXMgd2lsbCBOT1QgYmUgYXBwbGllZCB0byB0aGUgbmV3IHNvdXJjZSB0cmVlOlxuICAlcycgJSAnXG4gICcuam9pbihbb3MucGF0aC5iYXNlbmFtZShwYXRjaCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdKSkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdCeSB1c2VyIGNob2ljZSwgdGhlIGZvbGxvd2luZyBwYXRjaGVzIHdpbGwgTk9UIGJlIGFwcGxpZWQgdG8gdGhlIG5ldyBzb3VyY2UgdHJlZTpcbiAgJXMnICUgJ1xuICAnLmpvaW4oW29zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGZvciBwYXRjaCBpbiBwYXRjaGVzXSkpCiAgICAgZWxzZToKICAgICAgICAgX19ydW4oJ2dpdCBjaGVja291dCBkZXZ0b29sLXBhdGNoZWQgLWIgJXMnICUgYnJhbmNoKQogICAgICAgICBza2lwdGFnID0gRmFsc2UKQEAgLTI3Myw5ICsyNzMsOSBAQAogICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgogICAgICAgICAgICAgc2tpcHRhZyA9IFRydWUKICAgICAgICAgICAgIGlmICdjb25mbGljdCcgaW4gZS5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0NvbW1hbmQgXCclc1wnIGZhaWxlZDpcbiVzXG5cbllvdSB3aWxsIG5lZWQgdG8gcmVzb2x2ZSBjb25mbGljdHMgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHVwZ3JhZGUuJyAlIChlLmNvbW1hbmQsIGUuc3Rkb3V0LnJzdHJpcCgpKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnQ29tbWFuZCBcJyVzXCcgZmFpbGVkOlxuJXNcblxuWW91IHdpbGwgbmVlZCB0byByZXNvbHZlIGNvbmZsaWN0cyBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgdXBncmFkZS4nICUgKGUuY29tbWFuZCwgZS5zdGRvdXQucnN0cmlwKCkpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybignQ29tbWFuZCBcJyVzXCcgZmFpbGVkOlxuJXMnICUgKGUuY29tbWFuZCwgZS5zdGRvdXQpKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdDb21tYW5kIFwnJXNcJyBmYWlsZWQ6XG4lcycgJSAoZS5jb21tYW5kLCBlLnN0ZG91dCkpCiAgICAgICAgIGlmIG5vdCBza2lwdGFnOgogICAgICAgICAgICAgaWYgdXJpLnN0YXJ0c3dpdGgoJ2dpdDovLycpOgogICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICduZXcnCkBAIC00MjAsNyArNDIwLDEwIEBACiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NvdXJjZSBzdWJkaXJlY3RvcnkgaGFzIGNoYW5nZWQsIHVwZGF0aW5nIFMgdmFsdWUnKQogCiAgICAgaWYgbGljZW5zZV9kaWZmOgotICAgICAgICBuZXdsaWNjaGtzdW0gPSAiICIuam9pbihbImZpbGU6Ly97fTttZDU9e30iLmZvcm1hdChsWyJwYXRoIl0sIGxbImFjdHVhbF9tZDUiXSkgKyAoIjtiZWdpbmxpbmU9e30iLmZvcm1hdChsWyJiZWdpbmxpbmUiXSkgaWYgbFsiYmVnaW5saW5lIl0gZWxzZSAiIikgKyAoIjtlbmRsaW5lPXt9Ii5mb3JtYXQobFsiZW5kbGluZSJdKSBpZiBsWyJlbmRsaW5lIl0gZWxzZSAiIikgZm9yIGwgaW4gbmV3X2xpY2Vuc2VzXSkKKyAgICAgICAgbmV3bGljY2hrc3VtID0gIiAiLmpvaW4oWyJmaWxlOi8ve30iLmZvcm1hdChsWydwYXRoJ10pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiO2JlZ2lubGluZT17fSIuZm9ybWF0KGxbJ2JlZ2lubGluZSddKSBpZiBsWydiZWdpbmxpbmUnXSBlbHNlICIiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIjtlbmRsaW5lPXt9Ii5mb3JtYXQobFsnZW5kbGluZSddKSBpZiBsWydlbmRsaW5lJ10gZWxzZSAiIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCI7bWQ1PXt9Ii5mb3JtYXQobFsnYWN0dWFsX21kNSddKSkgZm9yIGwgaW4gbmV3X2xpY2Vuc2VzXSkKICAgICAgICAgbmV3dmFsdWVzWyJMSUNfRklMRVNfQ0hLU1VNIl0gPSBuZXdsaWNjaGtzdW0KICAgICAgICAgX2FkZF9saWNlbnNlX2RpZmZfdG9fcmVjaXBlKGZ1bGxwYXRoLCBsaWNlbnNlX2RpZmYpCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9hcHBlbmQucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvYXBwZW5kLnB5CmluZGV4IDY5YzhiYjcuLjNmMmMxMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9hcHBlbmQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2FwcGVuZC5weQpAQCAtMjM4LDcgKzIzOCw3IEBACiAgICAgaWYgc3Rkb3V0OgogICAgICAgICBsb2dnZXIuZGVidWcoJ2ZpbGUgY29tbWFuZCBvdXRwdXQ6ICVzJyAlIHN0ZG91dC5yc3RyaXAoKSkKICAgICAgICAgaWYgKCdleGVjdXRhYmxlJyBpbiBzdGRvdXQgYW5kIG5vdCAnc2hlbGwgc2NyaXB0JyBpbiBzdGRvdXQpIG9yICdzaGFyZWQgb2JqZWN0JyBpbiBzdGRvdXQ6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignVGhpcyBmaWxlIGxvb2tzIGxpa2UgaXQgaXMgYSBiaW5hcnkgb3Igb3RoZXJ3aXNlIHRoZSBvdXRwdXQgb2YgY29tcGlsYXRpb24uIElmIGl0IGlzLCB5b3Ugc2hvdWxkIGNvbnNpZGVyIGJ1aWxkaW5nIGl0IHByb3Blcmx5IGluc3RlYWQgb2Ygc3Vic3RpdHV0aW5nIGEgYmluYXJ5IGZpbGUgZGlyZWN0bHkuJykKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdUaGlzIGZpbGUgbG9va3MgbGlrZSBpdCBpcyBhIGJpbmFyeSBvciBvdGhlcndpc2UgdGhlIG91dHB1dCBvZiBjb21waWxhdGlvbi4gSWYgaXQgaXMsIHlvdSBzaG91bGQgY29uc2lkZXIgYnVpbGRpbmcgaXQgcHJvcGVybHkgaW5zdGVhZCBvZiBzdWJzdGl0dXRpbmcgYSBiaW5hcnkgZmlsZSBkaXJlY3RseS4nKQogCiAgICAgaWYgYXJncy5yZWNpcGU6CiAgICAgICAgIHJlY2lwZXMgPSB7YXJncy50YXJnZXRwYXRoOiBbYXJncy5yZWNpcGVdLH0KQEAgLTI3NSw3ICsyNzUsNyBAQAogICAgIGlmIHNlbGVjdHBuOgogICAgICAgICBsb2dnZXIuZGVidWcoJ1NlbGVjdGluZyByZWNpcGUgJXMgZm9yIGZpbGUgJXMnICUgKHNlbGVjdHBuLCBhcmdzLnRhcmdldHBhdGgpKQogICAgICAgICBpZiBwb3N0aW5zdF9wbnM6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignJXMgYmUgbW9kaWZpZWQgYnkgcG9zdGluc3RhbGwgc2NyaXB0cyBmb3IgdGhlIGZvbGxvd2luZyByZWNpcGVzOlxuICAlc1xuVGhpcyBtYXkgb3IgbWF5IG5vdCBiZSBhbiBpc3N1ZSBkZXBlbmRpbmcgb24gd2hhdCBtb2RpZmljYXRpb25zIHRoZXNlIHBvc3RpbnN0YWxsIHNjcmlwdHMgbWFrZS4nICUgKGFyZ3MudGFyZ2V0cGF0aCwgJ1xuICAnLmpvaW4ocG9zdGluc3RfcG5zKSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnJXMgYmUgbW9kaWZpZWQgYnkgcG9zdGluc3RhbGwgc2NyaXB0cyBmb3IgdGhlIGZvbGxvd2luZyByZWNpcGVzOlxuICAlc1xuVGhpcyBtYXkgb3IgbWF5IG5vdCBiZSBhbiBpc3N1ZSBkZXBlbmRpbmcgb24gd2hhdCBtb2RpZmljYXRpb25zIHRoZXNlIHBvc3RpbnN0YWxsIHNjcmlwdHMgbWFrZS4nICUgKGFyZ3MudGFyZ2V0cGF0aCwgJ1xuICAnLmpvaW4ocG9zdGluc3RfcG5zKSkpCiAgICAgICAgIHJkID0gX3BhcnNlX3JlY2lwZShzZWxlY3RwbiwgdGluZm9pbCkKICAgICAgICAgaWYgbm90IHJkOgogICAgICAgICAgICAgIyBFcnJvciBtZXNzYWdlIGFscmVhZHkgc2hvd24KQEAgLTI4NiwxMiArMjg2LDEyIEBACiAgICAgICAgICAgICBzb3VyY2V0eXBlLCBzb3VyY2VwYXRoID0gc291cmNlZmlsZS5zcGxpdCgnOi8vJywgMSkKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnT3JpZ2luYWwgc291cmNlIGZpbGUgaXMgJXMgKCVzKScgJSAoc291cmNlcGF0aCwgc291cmNldHlwZSkpCiAgICAgICAgICAgICBpZiBzb3VyY2V0eXBlID09ICdwYXRjaCc6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0ZpbGUgJXMgaXMgYWRkZWQgYnkgdGhlIHBhdGNoICVzIC0geW91IG1heSBuZWVkIHRvIHJlbW92ZSBvciByZXBsYWNlIHRoaXMgcGF0Y2ggaW4gb3JkZXIgdG8gcmVwbGFjZSB0aGUgZmlsZS4nICUgKGFyZ3MudGFyZ2V0cGF0aCwgc291cmNlcGF0aCkpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0ZpbGUgJXMgaXMgYWRkZWQgYnkgdGhlIHBhdGNoICVzIC0geW91IG1heSBuZWVkIHRvIHJlbW92ZSBvciByZXBsYWNlIHRoaXMgcGF0Y2ggaW4gb3JkZXIgdG8gcmVwbGFjZSB0aGUgZmlsZS4nICUgKGFyZ3MudGFyZ2V0cGF0aCwgc291cmNlcGF0aCkpCiAgICAgICAgICAgICAgICAgc291cmNlcGF0aCA9IE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnVW5hYmxlIHRvIGRldGVybWluZSBzb3VyY2UgZmlsZSwgcHJvY2VlZGluZyBhbnl3YXknKQogICAgICAgICBpZiBtb2RwYXRjaGVzOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0ZpbGUgJXMgaXMgbW9kaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBwYXRjaGVzOlxuICAlcycgJSAoYXJncy50YXJnZXRwYXRoLCAnXG4gICcuam9pbihtb2RwYXRjaGVzKSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnRmlsZSAlcyBpcyBtb2RpZmllZCBieSB0aGUgZm9sbG93aW5nIHBhdGNoZXM6XG4gICVzJyAlIChhcmdzLnRhcmdldHBhdGgsICdcbiAgJy5qb2luKG1vZHBhdGNoZXMpKSkKIAogICAgICAgICBpZiBpbnN0ZWxlbWVudHMgYW5kIHNvdXJjZXBhdGg6CiAgICAgICAgICAgICBpbnN0YWxsID0gTm9uZQpAQCAtMzQzLDcgKzM0Myw3IEBACiAgICAgICAgICAgICBpZiByZC5nZXRWYXIoJ1MnKSA9PSByZC5nZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicpOgogICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih3b3JrZGlyLCAnZ2l0JykKICAgICAgICAgICAgICAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgcmQpOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybignUyA9PSBTVEFHSU5HX0tFUk5FTF9ESVIgYW5kIG5vbi1rZXJuZWwteW9jdG8sIHVuYWJsZSB0byBkZXRlcm1pbmUgcGF0aCB0byBzcmNkaXIsIGRlZmF1bHRpbmcgdG8gJHtXT1JLRElSfS9naXQnKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnUyA9PSBTVEFHSU5HX0tFUk5FTF9ESVIgYW5kIG5vbi1rZXJuZWwteW9jdG8sIHVuYWJsZSB0byBkZXRlcm1pbmUgcGF0aCB0byBzcmNkaXIsIGRlZmF1bHRpbmcgdG8gJHtXT1JLRElSfS9naXQnKQogICAgICAgICAgICAgc3JjX2Rlc3RkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWxwYXRoKHNyY2Rpciwgd29ya2RpciksIHNyY19kZXN0ZGlyKQogICAgICAgICBzcmNfZGVzdGRpciA9IG9zLnBhdGgubm9ybXBhdGgoc3JjX2Rlc3RkaXIpCiAKQEAgLTM1Nyw5ICszNTcsOSBAQAogICAgICAgICBpZiBzaW1wbGVfc3RyIGluIHNpbXBsaWZpZWQ6CiAgICAgICAgICAgICBleGlzdGluZyA9IHNpbXBsaWZpZWRbc2ltcGxlX3N0cl0KICAgICAgICAgICAgIGlmIHNvdXJjZV91cmkgIT0gZXhpc3Rpbmc6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ3swIXJ9IGlzIGFscmVhZHkgaW4gU1JDX1VSSSwgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVyczogezEhcn0sIG5vdCBhZGRpbmcnLmZvcm1hdChzb3VyY2VfdXJpLCBleGlzdGluZykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ3swIXJ9IGlzIGFscmVhZHkgaW4gU1JDX1VSSSwgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVyczogezEhcn0sIG5vdCBhZGRpbmcnLmZvcm1hdChzb3VyY2VfdXJpLCBleGlzdGluZykpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCd7MCFyfSBpcyBhbHJlYWR5IGluIFNSQ19VUkksIG5vdCBhZGRpbmcnLmZvcm1hdChzb3VyY2VfdXJpKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnezAhcn0gaXMgYWxyZWFkeSBpbiBTUkNfVVJJLCBub3QgYWRkaW5nJy5mb3JtYXQoc291cmNlX3VyaSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHRyYWxpbmVzLmFwcGVuZCgnU1JDX1VSSSArPSB7MH0nLmZvcm1hdChzb3VyY2VfdXJpKSkKICAgICAgICAgY29weWZpbGVzW25ld2ZpbGVdID0gc3JjZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKaW5kZXggYTM3MTAyOC4uMTgxMGM3MCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGlvZToKICAgICAgICAgICAgICAgICBpZiBpb2UuZXJybm8gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ3VuYWJsZSB0byBmaW5kIGEgcGtnZGF0YSBmaWxlIGZvciBwYWNrYWdlICVzJyAlIHBrZykKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ3VuYWJsZSB0byBmaW5kIGEgcGtnZGF0YSBmaWxlIGZvciBwYWNrYWdlICVzJyAlIHBrZykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogCkBAIC00MzcsNyArNDM3LDcgQEAKICAgICBpZiBzY3JpcHR1dGlscy5pc19zcmNfdXJsKHNvdXJjZSk6CiAgICAgICAgICMgV2FybiBhYm91dCBnaXRodWIgYXJjaGl2ZSBVUkxzCiAgICAgICAgIGlmIHJlLm1hdGNoKCdodHRwcz86Ly9naXRodWIuY29tL1teL10rL1teL10rL2FyY2hpdmUvLisoXC50YXJcLi4qfFwuemlwKSQnLCBzb3VyY2UpOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ2dpdGh1YiBhcmNoaXZlIGZpbGVzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUgYW5kIG1heSBiZSByZS1nZW5lcmF0ZWQgb3ZlciB0aW1lLiBJZiB0aGUgbGF0dGVyIG9jY3VycywgdGhlIGNoZWNrc3VtcyB3aWxsIGxpa2VseSBjaGFuZ2UgYW5kIHRoZSByZWNpcGUgd2lsbCBmYWlsIGF0IGRvX2ZldGNoLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBwb2ludCB0byBhbiBhY3R1YWwgY29tbWl0IG9yIHRhZyBpbiB0aGUgcmVwb3NpdG9yeSBpbnN0ZWFkICh1c2luZyB0aGUgcmVwb3NpdG9yeSBVUkwgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgLVMvLS1zcmNyZXYgb3B0aW9uKS4nKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ2dpdGh1YiBhcmNoaXZlIGZpbGVzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUgYW5kIG1heSBiZSByZS1nZW5lcmF0ZWQgb3ZlciB0aW1lLiBJZiB0aGUgbGF0dGVyIG9jY3VycywgdGhlIGNoZWNrc3VtcyB3aWxsIGxpa2VseSBjaGFuZ2UgYW5kIHRoZSByZWNpcGUgd2lsbCBmYWlsIGF0IGRvX2ZldGNoLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBwb2ludCB0byBhbiBhY3R1YWwgY29tbWl0IG9yIHRhZyBpbiB0aGUgcmVwb3NpdG9yeSBpbnN0ZWFkICh1c2luZyB0aGUgcmVwb3NpdG9yeSBVUkwgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgLVMvLS1zcmNyZXYgb3B0aW9uKS4nKQogICAgICAgICAjIEZldGNoIGEgVVJMCiAgICAgICAgIGZldGNodXJpID0gcmVmb3JtYXRfZ2l0X3VyaSh1cmxkZWZyYWcoc291cmNlKVswXSkKICAgICAgICAgaWYgYXJncy5iaW5hcnk6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKaW5kZXggNDU2OWI1My4uMzk4MjUzNyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9rbW9kLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfa21vZC5weQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgICAgICAgICAgd2Fybm1zZyA9ICdVbmFibGUgdG8gZmluZCBtZWFucyBvZiBwYXNzaW5nIGtlcm5lbCBwYXRoIGludG8gaW5zdGFsbCBtYWtlZmlsZSAtIGlmIGtlcm5lbCBwYXRoIGlzIGhhcmRjb2RlZCB5b3Ugd2lsbCBuZWVkIHRvIHBhdGNoIHRoZSBtYWtlZmlsZScKICAgICAgICAgICAgIGlmIHdhcm5tc2c6CiAgICAgICAgICAgICAgICAgd2Fybm1zZyArPSAnLiBOb3RlIHRoYXQgdGhlIHZhcmlhYmxlIEtFUk5FTF9TUkMgd2lsbCBiZSBwYXNzZWQgaW4gYXMgdGhlIGtlcm5lbCBzb3VyY2UgcGF0aC4nCi0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4od2Fybm1zZykKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyh3YXJubXNnKQogICAgICAgICAgICAgICAgIGxpbmVzX2FmdGVyLmFwcGVuZCgnIyAlcycgJSB3YXJubXNnKQogCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQppbmRleCBiYjQyYTVjLi4wMzY2Nzg4IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICAgICAgcnVuZW52ID0gZGljdChvcy5lbnZpcm9uLCBQQVRIPWQuZ2V0VmFyKCdQQVRIJykpCiAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignbnBtIHNocmlua3dyYXAnLCBjd2Q9c3JjdHJlZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQogICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ25wbSBzaHJpbmt3cmFwIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ25wbSBzaHJpbmt3cmFwIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihsb2NhbGZpbGVzZGlyLCAnbnBtLXNocmlua3dyYXAuanNvbicpCkBAIC0xMDcsMTIgKzEwNywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXNyY3RyZWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKICAgICAgICAgcmVsb2NrYmluID0gb3MucGF0aC5qb2luKE5wbVJlY2lwZUhhbmRsZXIubG9ja2Rvd25wYXRoLCAnbm9kZV9tb2R1bGVzJywgJ2xvY2tkb3duJywgJ3JlbG9jay5qcycpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZWxvY2tiaW4pOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0NvdWxkIG5vdCBmaW5kIHJlbG9jay5qcyB3aXRoaW4gbG9ja2Rvd24gZGlyZWN0b3J5OyBza2lwcGluZyBsb2NrZG93bicpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnQ291bGQgbm90IGZpbmQgcmVsb2NrLmpzIHdpdGhpbiBsb2NrZG93biBkaXJlY3Rvcnk7IHNraXBwaW5nIGxvY2tkb3duJykKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignbm9kZSAlcycgJSByZWxvY2tiaW4sIGN3ZD1zcmN0cmVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCiAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignbG9ja2Rvd24tcmVsb2NrIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ2xvY2tkb3duLXJlbG9jayBmYWlsZWQ6XG4lcycgJSBlLnN0ZG91dCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4obG9jYWxmaWxlc2RpciwgJ2xvY2tkb3duLmpzb24nKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2VkaXQucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvZWRpdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDc4OWE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2VkaXQucHkKQEAgLTAsMCArMSw1NCBAQAorIyBSZWNpcGUgY3JlYXRpb24gdG9vbCAtIGVkaXQgcGx1Z2luCisjCisjIFRoaXMgc3ViLWNvbW1hbmQgZWRpdHMgdGhlIHJlY2lwZSBhbmQgYXBwZW5kcyBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQKKyMKKyMgRXhhbXBsZTogcmVjaXBldG9vbCBlZGl0IGJ1c3lib3gKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IE1lbnRvciBHcmFwaGljcyBDb3Jwb3JhdGlvbgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBzY3JpcHR1dGlscworCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdyZWNpcGV0b29sJykKK3RpbmZvaWwgPSBOb25lCisKKworZGVmIHRpbmZvaWxfaW5pdChpbnN0YW5jZSk6CisgICAgZ2xvYmFsIHRpbmZvaWwKKyAgICB0aW5mb2lsID0gaW5zdGFuY2UKKworCitkZWYgZWRpdChhcmdzKToKKyAgICBpbXBvcnQgb2UucmVjaXBldXRpbHMKKworICAgIHJlY2lwZV9wYXRoID0gdGluZm9pbC5nZXRfcmVjaXBlX2ZpbGUoYXJncy50YXJnZXQpCisgICAgYXBwZW5kcyA9IHRpbmZvaWwuZ2V0X2ZpbGVfYXBwZW5kcyhyZWNpcGVfcGF0aCkKKworICAgIHJldHVybiBzY3JpcHR1dGlscy5ydW5fZWRpdG9yKFtyZWNpcGVfcGF0aF0gKyBhcHBlbmRzLCBsb2dnZXIpCisKKworZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHN1YnBhcnNlcnMpOgorICAgIHBhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignZWRpdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0VkaXQgdGhlIHJlY2lwZSBhbmQgYXBwZW5kcyBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQuIFRoaXMgb2JleXMgJFZJU1VBTCBpZiBzZXQsIG90aGVyd2lzZSAkRURJVE9SLCBvdGhlcndpc2UgdmkuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCd0YXJnZXQnLCBoZWxwPSdUYXJnZXQgcmVjaXBlL3Byb3ZpZGUgdG8gZWRpdCcpCisgICAgcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jPWVkaXQsIHBhcnNlcmVjaXBlcz1UcnVlKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL25ld2FwcGVuZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9uZXdhcHBlbmQucHkKaW5kZXggZGVjY2U4My4uNzY3MDdiNCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL25ld2FwcGVuZC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvbmV3YXBwZW5kLnB5CkBAIC01OCwxMSArNTgsMTEgQEAKICAgICAgICAgcmV0dXJuIDEKIAogICAgIGlmIG5vdCBwYXRoX29rOgotICAgICAgICBsb2dnZXIud2FybignVW5hYmxlIHRvIGRldGVybWluZSBjb3JyZWN0IHN1YmRpcmVjdG9yeSBwYXRoIGZvciBiYmFwcGVuZCBmaWxlIC0gY2hlY2sgdGhhdCB3aGF0ICVzIGFkZHMgdG8gQkJGSUxFUyBhbHNvIG1hdGNoZXMgLmJiYXBwZW5kIGZpbGVzLiBVc2luZyAlcyBmb3Igbm93LCBidXQgdW50aWwgeW91IGZpeCB0aGlzIHRoZSBiYmFwcGVuZCB3aWxsIG5vdCBiZSBhcHBsaWVkLicsIG9zLnBhdGguam9pbihhcmdzLmRlc3RsYXllciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCBvcy5wYXRoLmRpcm5hbWUoYXBwZW5kX3BhdGgpKQorICAgICAgICBsb2dnZXIud2FybmluZygnVW5hYmxlIHRvIGRldGVybWluZSBjb3JyZWN0IHN1YmRpcmVjdG9yeSBwYXRoIGZvciBiYmFwcGVuZCBmaWxlIC0gY2hlY2sgdGhhdCB3aGF0ICVzIGFkZHMgdG8gQkJGSUxFUyBhbHNvIG1hdGNoZXMgLmJiYXBwZW5kIGZpbGVzLiBVc2luZyAlcyBmb3Igbm93LCBidXQgdW50aWwgeW91IGZpeCB0aGlzIHRoZSBiYmFwcGVuZCB3aWxsIG5vdCBiZSBhcHBsaWVkLicsIG9zLnBhdGguam9pbihhcmdzLmRlc3RsYXllciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCBvcy5wYXRoLmRpcm5hbWUoYXBwZW5kX3BhdGgpKQogCiAgICAgbGF5ZXJkaXJzID0gW29zLnBhdGguYWJzcGF0aChsYXllcmRpcikgZm9yIGxheWVyZGlyIGluIHJkLmdldFZhcignQkJMQVlFUlMnKS5zcGxpdCgpXQogICAgIGlmIG5vdCBvcy5wYXRoLmFic3BhdGgoYXJncy5kZXN0bGF5ZXIpIGluIGxheWVyZGlyczoKLSAgICAgICAgbG9nZ2VyLndhcm4oJ1NwZWNpZmllZCBsYXllciBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQgaW4gYmJsYXllcnMuY29uZiwgeW91IHdpbGwgbmVlZCB0byBhZGQgaXQgYmVmb3JlIHRoaXMgYmJhcHBlbmQgd2lsbCBiZSBhY3RpdmUnKQorICAgICAgICBsb2dnZXIud2FybmluZygnU3BlY2lmaWVkIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCBpdCBiZWZvcmUgdGhpcyBiYmFwcGVuZCB3aWxsIGJlIGFjdGl2ZScpCiAKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYXBwZW5kX3BhdGgpOgogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGFwcGVuZF9wYXRoKSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CmluZGV4IDg1YjFjOTQuLjMxZTQ4ZWEgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQpAQCAtMTUsMTYgKzE1LDE3IEBACiAjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBnbG9iCiBpbXBvcnQgYXJncGFyc2UKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzaHV0aWwKK2ltcG9ydCBnbG9iCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2hsZXgKK2ltcG9ydCBzaHV0aWwKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKIAogZGVmIGxvZ2dlcl9jcmVhdGUobmFtZSwgc3RyZWFtPU5vbmUpOgogICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKG5hbWUpCkBAIC0yMTQsMTUgKzIxNSwxNCBAQAogCiBkZWYgcnVuX2VkaXRvcihmbiwgbG9nZ2VyPU5vbmUpOgogICAgIGlmIGlzaW5zdGFuY2UoZm4sIHN0cik6Ci0gICAgICAgIHBhcmFtcyA9ICciJXMiJyAlIGZuCisgICAgICAgIGZpbGVzID0gW2ZuXQogICAgIGVsc2U6Ci0gICAgICAgIHBhcmFtcyA9ICcnCi0gICAgICAgIGZvciBmbml0ZW0gaW4gZm46Ci0gICAgICAgICAgICBwYXJhbXMgKz0gJyAiJXMiJyAlIGZuaXRlbQorICAgICAgICBmaWxlcyA9IGZuCiAKICAgICBlZGl0b3IgPSBvcy5nZXRlbnYoJ1ZJU1VBTCcsIG9zLmdldGVudignRURJVE9SJywgJ3ZpJykpCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKCclcyAlcycgJSAoZWRpdG9yLCBwYXJhbXMpLCBzaGVsbD1UcnVlKQorICAgICAgICAjcHJpbnQoc2hsZXguc3BsaXQoZWRpdG9yKSArIGZpbGVzKQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKHNobGV4LnNwbGl0KGVkaXRvcikgKyBmaWxlcykKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhjOgogICAgICAgICBsb2dnZXIuZXJyb3IoIkV4ZWN1dGlvbiBvZiAnJXMnIGZhaWxlZDogJXMiICUgKGVkaXRvciwgZXhjKSkKICAgICAgICAgcmV0dXJuIDEKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvbWtoeWJyaWRpc28ud2tzIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2h5YnJpZGlzby53a3MKaW5kZXggOWQzNGU5Yi4uNDhjNWFjNCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2h5YnJpZGlzby53a3MKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2h5YnJpZGlzby53a3MKQEAgLTIsNiArMiw2IEBACiAjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYW4gRUZJIGFuZCBsZWdhY3kgYm9vdGFibGUgaHlicmlkIElTTyBpbWFnZQogIyB3aGljaCBjYW4gYmUgdXNlZCBvbiBvcHRpY2FsIG1lZGlhIGFzIHdlbGwgYXMgVVNCIG1lZGlhLgogCi1wYXJ0IC9ib290IC0tc291cmNlIGlzb2ltYWdlLWlzb2h5YnJpZCAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPWdydWItZWZpLGltYWdlX25hbWU9SFlCUklEX0lTT19JTUciIC0tb25kaXNrIGNkIC0tbGFiZWwgSFlCUklESVNPIC0tZnN0eXBlPWV4dDQKK3BhcnQgL2Jvb3QgLS1zb3VyY2UgaXNvaW1hZ2UtaXNvaHlicmlkIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9Z3J1Yi1lZmksaW1hZ2VfbmFtZT1IWUJSSURfSVNPX0lNRyIgLS1vbmRpc2sgY2QgLS1sYWJlbCBIWUJSSURJU08KIAogYm9vdGxvYWRlciAgLS10aW1lb3V0PTE1ICAtLWFwcGVuZD0iIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5CmluZGV4IGYwYzVmZjAuLjQ2NjJjNjYgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkKQEAgLTE5MSw3ICsxOTEsNyBAQAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcHRpb25zLm91dGRpcik6CiAgICAgICAgIG9zLm1ha2VkaXJzKG9wdGlvbnMub3V0ZGlyKQogCi0gICAgcG5hbWUgPSAnZGlyZWN0JworICAgIHBuYW1lID0gb3B0aW9ucy5pbWFnZXIKICAgICBwbHVnaW5fY2xhc3MgPSBQbHVnaW5NZ3IuZ2V0X3BsdWdpbnMoJ2ltYWdlcicpLmdldChwbmFtZSkKICAgICBpZiBub3QgcGx1Z2luX2NsYXNzOgogICAgICAgICByYWlzZSBXaWNFcnJvcignVW5rbm93biBwbHVnaW46ICVzJyAlIHBuYW1lKQpAQCAtMjY2LDEwICsyNjYsMTUgQEAKICAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCIlcyAtc20gJXMgdW5pdCBCIHByaW50IiAlIChzZWxmLnBhcnRlZCwgc2VsZi5pbWFnZXBhdGgpKQogICAgICAgICAgICAgcGFydHR5cGUgPSBuYW1lZHR1cGxlKCJQYXJ0IiwgInBudW0gc3RhcnQgZW5kIHNpemUgZnN0eXBlIikKICAgICAgICAgICAgIHNwbGl0dGVkID0gb3V0LnNwbGl0bGluZXMoKQotICAgICAgICAgICAgbHNlY3Rvcl9zaXplLCBwc2VjdG9yX3NpemUsIHNlbGYuX3B0YWJsZV9mb3JtYXQgPSBzcGxpdHRlZFsxXS5zcGxpdCgiOiIpWzM6Nl0KKyAgICAgICAgICAgICMgc2tpcCBvdmVyIHBvc3NpYmxlIGVycm9ycyBpbiBleGVjX2NtZCBvdXRwdXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZHggPXNwbGl0dGVkLmluZGV4KCJCWVQ7IikKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJFcnJvciBnZXR0aW5nIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmcm9tICVzIiAlIChzZWxmLnBhcnRlZCkpCisgICAgICAgICAgICBsc2VjdG9yX3NpemUsIHBzZWN0b3Jfc2l6ZSwgc2VsZi5fcHRhYmxlX2Zvcm1hdCA9IHNwbGl0dGVkW2lkeCArIDFdLnNwbGl0KCI6IilbMzo2XQogICAgICAgICAgICAgc2VsZi5fbHNlY3Rvcl9zaXplID0gaW50KGxzZWN0b3Jfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuX3BzZWN0b3Jfc2l6ZSA9IGludChwc2VjdG9yX3NpemUpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzcGxpdHRlZFsyOl06CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzcGxpdHRlZFtpZHggKyAyOl06CiAgICAgICAgICAgICAgICAgcG51bSwgc3RhcnQsIGVuZCwgc2l6ZSwgZnN0eXBlID0gbGluZS5zcGxpdCgnOicpWzo1XQogICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IHBhcnR0eXBlKGludChwbnVtKSwgaW50KHN0YXJ0WzotMV0pLCBpbnQoZW5kWzotMV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzaXplWzotMV0pLCBmc3R5cGUpCkBAIC0zNDAsOSArMzQ1LDIxIEBACiAgICAgICAgICIiIlJlbW92ZSBmaWxlcy9kaXJzIGZyb20gdGhlIHBhcnRpdGlvbi4iIiIKICAgICAgICAgcGFydGltZyA9IHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pCiAgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6Ci0gICAgICAgICAgICBleGVjX2NtZCgie30ge30gLXdSICdybSB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCisgICAgICAgICAgICBjbWQgPSAie30ge30gLXdSICdybSB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpLCBhc19zaGVsbD1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCkKKyAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKGNtZCAsIGFzX3NoZWxsPVRydWUpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgicm06Iik6CisgICAgICAgICAgICAgICAgICAgIGlmICJmaWxlIGlzIGEgZGlyZWN0b3J5IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUcnkgcm1kaXIgdG8gc2VlIGlmIHRoaXMgaXMgYW4gZW1wdHkgZGlyZWN0b3J5LiBUaGlzIHdvbid0IGRlbGV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBhbnkgbm9uIGVtcHR5IGRpcmVjdG9yeSBzbyBsZXQgdXNlciBrbm93IGFib3V0IGFueSBlcnJvciB0aGF0IHRoaXMgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChleGVjX2NtZCgie30ge30gLXdSICdybWRpciB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCksIGFzX3NoZWxsPVRydWUpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNvdWxkIG5vdCBjb21wbGV0ZSBvcGVyYXRpb246IHdpYyAlcyIgJSBzdHIobGluZSkpCiAgICAgICAgIGVsc2U6ICMgZmF0CiAgICAgICAgICAgICBjbWQgPSAie30gLWkge30gOjp7fSIuZm9ybWF0KHNlbGYubWRlbCwgcGFydGltZywgcGF0aCkKICAgICAgICAgICAgIHRyeToKQEAgLTQ5NCw3ICs1MTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBzcGFyc2VfY29weShwYXJ0Zm5hbWUsIHRhcmdldCwgc2Vlaz1wYXJ0WydzdGFydCddICogc2VsZi5fbHNlY3Rvcl9zaXplKQogICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsocGFydGZuYW1lKQogICAgICAgICAgICAgICAgIGVsaWYgcGFydFsndHlwZSddICE9ICdmJzoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oInNraXBwaW5nIHBhcnRpdGlvbiB7fTogdW5zdXBwb3J0ZWQgZnN0eXBlIHt9Ii5mb3JtYXQocG51bSwgZnN0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoInNraXBwaW5nIHBhcnRpdGlvbiB7fTogdW5zdXBwb3J0ZWQgZnN0eXBlIHt9Ii5mb3JtYXQocG51bSwgZnN0eXBlKSkKIAogZGVmIHdpY19scyhhcmdzLCBuYXRpdmVfc3lzcm9vdCk6CiAgICAgIiIiTGlzdCBjb250ZW50cyBvZiBwYXJ0aXRpb25lZCBpbWFnZSBvciB2ZmF0IHBhcnRpdGlvbi4iIiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9maWxlbWFwLnB5CmluZGV4IGE3MmZhMDkuLmFiYmY5NTggMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weQpAQCAtMjIsNiArMjIsNyBAQAogIyAgICogVG9vIG1hbnkgaW5zdGFuY2UgYXR0cmlidXRlcyAoUjA5MDIpCiAjIHB5bGludDogZGlzYWJsZT1SMDkwMgogCitpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGFycmF5CkBAIC0xODksOSArMTkwLDkgQEAKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICMgVGhlICdsc2Vlaycgc3lzdGVtIGNhbGwgcmV0dXJucyB0aGUgRU5YSU8gaWYgdGhlcmUgaXMgbm8gZGF0YSBvcgogICAgICAgICAjIGhvbGUgc3RhcnRpbmcgZnJvbSB0aGUgc3BlY2lmaWVkIG9mZnNldC4KLSAgICAgICAgaWYgZXJyLmVycm5vID09IG9zLmVycm5vLkVOWElPOgorICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRU5YSU86CiAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgZWxpZiBlcnIuZXJybm8gPT0gb3MuZXJybm8uRUlOVkFMOgorICAgICAgICBlbGlmIGVyci5lcnJubyA9PSBlcnJuby5FSU5WQUw6CiAgICAgICAgICAgICByYWlzZSBFcnJvck5vdFN1cHAoInRoZSBrZXJuZWwgb3IgZmlsZS1zeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiU0VFS19IT0xFXCIgYW5kIFwiU0VFS19EQVRBXCIiKQogICAgICAgICBlbHNlOgpAQCAtMzk0LDEyICszOTUsMTIgQEAKICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgIyBOb3RlLCB0aGUgRklFTUFQIGlvY3RsIGlzIHN1cHBvcnRlZCBieSB0aGUgTGludXgga2VybmVsIHN0YXJ0aW5nCiAgICAgICAgICAgICAjIGZyb20gdmVyc2lvbiAyLjYuMjggKHllYXIgMjAwOCkuCi0gICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gb3MuZXJybm8uRU9QTk9UU1VQUDoKKyAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FT1BOT1RTVVBQOgogICAgICAgICAgICAgICAgIGVycnN0ciA9ICJGaWxlbWFwRmllbWFwOiB0aGUgRklFTUFQIGlvY3RsIGlzIG5vdCBzdXBwb3J0ZWQgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5IHRoZSBmaWxlLXN5c3RlbSIKICAgICAgICAgICAgICAgICBzZWxmLl9sb2cuZGVidWcoZXJyc3RyKQogICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yTm90U3VwcChlcnJzdHIpCi0gICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gb3MuZXJybm8uRU5PVFRZOgorICAgICAgICAgICAgaWYgZXJyLmVycm5vID09IGVycm5vLkVOT1RUWToKICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiRmlsZW1hcEZpZW1hcDogdGhlIEZJRU1BUCBpb2N0bCBpcyBub3Qgc3VwcG9ydGVkICIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICJieSB0aGUga2VybmVsIgogICAgICAgICAgICAgICAgIHNlbGYuX2xvZy5kZWJ1ZyhlcnJzdHIpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQppbmRleCA4NDJiODY4Li42NGYwODA1IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKQEAgLTg2NiwxMSArODY2LDExIEBACiAgICAgICAgUGFydGl0aW9ucyB3aXRoIGEgPG1vdW50cG9pbnQ+IHNwZWNpZmllZCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbW91bnRlZC4KICAgICAgICBUaGlzIGlzIGFjaGlldmVkIGJ5IHdpYyBhZGRpbmcgZW50cmllcyB0byB0aGUgZnN0YWIgZHVyaW5nIGltYWdlCiAgICAgICAgZ2VuZXJhdGlvbi4gSW4gb3JkZXIgZm9yIGEgdmFsaWQgZnN0YWIgdG8gYmUgZ2VuZXJhdGVkIG9uZSBvZiB0aGUKLSAgICAgICAtLW9uZHJpdmUsIC0tb25kaXNrIG9yIC0tdXNlLXV1aWQgcGFydGl0aW9uIG9wdGlvbnMgbXVzdCBiZSB1c2VkIGZvcgotICAgICAgIGVhY2ggcGFydGl0aW9uIHRoYXQgc3BlY2lmaWVzIGEgbW91bnRwb2ludC4gIE5vdGUgdGhhdCB3aXRoIC0tdXNlLXV1aWQKLSAgICAgICBhbmQgbm9uLXJvb3QgPG1vdW50cG9pbnQ+LCBpbmNsdWRpbmcgc3dhcCwgdGhlIG1vdW50IHByb2dyYW0gbXVzdAotICAgICAgIHVuZGVyc3RhbmQgdGhlIFBBUlRVVUlEIHN5bnRheC4gIFRoaXMgY3VycmVudGx5IGV4Y2x1ZGVzIHRoZSBidXN5Ym94Ci0gICAgICAgdmVyc2lvbnMgb2YgdGhlc2UgYXBwbGljYXRpb25zLgorICAgICAgIC0tb25kcml2ZSwgLS1vbmRpc2ssIC0tdXNlLXV1aWQgb3IgLS11c2UtbGFiZWwgcGFydGl0aW9uIG9wdGlvbnMgbXVzdAorICAgICAgIGJlIHVzZWQgZm9yIGVhY2ggcGFydGl0aW9uIHRoYXQgc3BlY2lmaWVzIGEgbW91bnRwb2ludC4gIE5vdGUgdGhhdCB3aXRoCisgICAgICAgLS11c2Ute3V1aWQsbGFiZWx9IGFuZCBub24tcm9vdCA8bW91bnRwb2ludD4sIGluY2x1ZGluZyBzd2FwLCB0aGUgbW91bnQKKyAgICAgICBwcm9ncmFtIG11c3QgdW5kZXJzdGFuZCB0aGUgUEFSVFVVSUQgb3IgTEFCRUwgc3ludGF4LiAgVGhpcyBjdXJyZW50bHkKKyAgICAgICBleGNsdWRlcyB0aGUgYnVzeWJveCB2ZXJzaW9ucyBvZiB0aGVzZSBhcHBsaWNhdGlvbnMuCiAKIAogICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIHN1cHBvcnRlZCAncGFydCcgb3B0aW9uczoKQEAgLTk0NSw2ICs5NDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsIGlzIGFscmVhZHkgaW4gdXNlIGJ5IGFub3RoZXIgZmlsZXN5c3RlbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGEgbmV3IGxhYmVsIGlzIGNyZWF0ZWQgZm9yIHRoZSBwYXJ0aXRpb24uCiAKKyAgICAgICAgIC0tdXNlLWxhYmVsOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IG1ha2VzIHdpYyB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgaW4gL2V0Yy9mc3RhYiB0byBzcGVjaWZ5IGEgcGFydGl0aW9uLiBJZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAtLXVzZS1sYWJlbCBhbmQgLS11c2UtdXVpZCBhcmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICAgICAgICAgICAgICAgIHdlIHByZWZlciB0aGUgdXVpZCBiZWNhdXNlIGl0IGlzIGxlc3MgbGlrZWx5IHRvIGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjb25mbGljdGlvbi4gV2UgZG9uJ3Qgc3VwcG9ydCB1c2luZyB0aGlzIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSByb290IHBhcnRpdGlvbiBzaW5jZSBpdCByZXF1aXJlcyBhbiBpbml0cmFtZnMgdG8KKyAgICAgICAgICAgICAgICAgICAgICBwYXJzZSB0aGlzIHZhbHVlIGFuZCB3ZSBkbyBub3QgY3VycmVudGx5IHN1cHBvcnQgdGhhdC4KKwogICAgICAgICAgLS1hY3RpdmU6IE1hcmtzIHRoZSBwYXJ0aXRpb24gYXMgYWN0aXZlLgogCiAgICAgICAgICAtLWFsaWduIChpbiBLQnl0ZXMpOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMgYW5kIHNheXMKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKaW5kZXggZTU5MGIyZi4uN2U1YTljNSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKQEAgLTE0MSw2ICsxNDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3F1YXNoZnMnLCAndmZhdCcsICdtc2RvcycsICdzd2FwJykpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW1rZnMtZXh0cmFvcHRzJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tbGFiZWwnKQorICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS11c2UtbGFiZWwnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1uby10YWJsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW9uZGlzaycsICctLW9uZHJpdmUnLCBkZXN0PSdkaXNrJywgZGVmYXVsdD0nc2RhJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoIi0tb3ZlcmhlYWQtZmFjdG9yIiwgdHlwZT1vdmVyaGVhZHR5cGUpCkBAIC0xOTYsOSArMTk3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBLaWNrU3RhcnRFcnJvcignJXM6JWQ6ICVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25mcGF0aCwgbGluZW5vLCBlcnIpKQogICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3BhcnQnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgU3F1YXNoRlMgZG9lcyBub3Qgc3VwcG9ydCBVVUlECi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJzZWQuZnN0eXBlID09ICdzcXVhc2hmcycgYW5kIHBhcnNlZC51c2VfdXVpZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAiJXM6JWQ6IFNxdWFzaEZTIGRvZXMgbm90IHN1cHBvcnQgVVVJRCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIyBTcXVhc2hGUyBkb2VzIG5vdCBzdXBwb3J0IGZpbGVzeXN0ZW0gVVVJRAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyc2VkLmZzdHlwZSA9PSAnc3F1YXNoZnMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnNlZC5mc3V1aWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9ICIlczolZDogU3F1YXNoRlMgZG9lcyBub3Qgc3VwcG9ydCBVVUlEIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb25mcGF0aCwgbGluZW5vKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBLaWNrU3RhcnRFcnJvcihlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyc2VkLmxhYmVsOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAiJXM6JWQ6IFNxdWFzaEZTIGRvZXMgbm90IHN1cHBvcnQgTEFCRUwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbmZwYXRoLCBsaW5lbm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEtpY2tTdGFydEVycm9yKGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnNlZC51c2VfbGFiZWwgYW5kIG5vdCBwYXJzZWQubGFiZWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gIiVzOiVkOiBNdXN0IHNldCB0aGUgbGFiZWwgd2l0aCAtLWxhYmVsIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29uZnBhdGgsIGxpbmVubykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBLaWNrU3RhcnRFcnJvcihlcnIpCiAgICAgICAgICAgICAgICAgICAgICAgICAjIHVzaW5nIEFyZ3VtZW50UGFyc2VyIG9uZSBjYW5ub3QgZWFzaWx5IHRlbGwgaWYgb3B0aW9uCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKaW5kZXggM2ZlNWM0ZS4uM2RhN2UyMyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQpAQCAtNDcsNiArNDcsNyBAQAogICAgICAgICBzZWxmLmZzb3B0cyA9IGFyZ3MuZnNvcHRzCiAgICAgICAgIHNlbGYuZnN0eXBlID0gYXJncy5mc3R5cGUKICAgICAgICAgc2VsZi5sYWJlbCA9IGFyZ3MubGFiZWwKKyAgICAgICAgc2VsZi51c2VfbGFiZWwgPSBhcmdzLnVzZV9sYWJlbAogICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzID0gYXJncy5ta2ZzX2V4dHJhb3B0cwogICAgICAgICBzZWxmLm1vdW50cG9pbnQgPSBhcmdzLm1vdW50cG9pbnQKICAgICAgICAgc2VsZi5ub190YWJsZSA9IGFyZ3Mubm9fdGFibGUKQEAgLTY2LDcgKzY3LDYgQEAKIAogICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwogICAgICAgICBzZWxmLnNvdXJjZV9maWxlID0gIiIKLSAgICAgICAgc2VsZi5zb3VyY2VwYXJhbXNfZGljdCA9IHt9CiAKICAgICBkZWYgZ2V0X2V4dHJhX2Jsb2NrX2NvdW50KHNlbGYsIGN1cnJlbnRfYmxvY2tzKToKICAgICAgICAgIiIiCkBAIC0yMTEsNyArMjExLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHBfcHJlZml4ID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19QUkVGSVgiLCAiJXMvdXNyIiAlIG5hdGl2ZV9zeXNyb290KQogICAgICAgICBwX2xvY2Fsc3RhdGVkaXIgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX0xPQ0FMU1RBVEVESVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMvLi4vcHNldWRvIiAlICBnZXRfYml0YmFrZV92YXIoIklNQUdFX1JPT1RGUyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMvLi4vcHNldWRvIiAlICByb290ZnNfZGlyKQogICAgICAgICBwX3Bhc3N3ZCA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fUEFTU1dEIiwgcm9vdGZzX2RpcikKICAgICAgICAgcF9ub3N5bWxpbmtleHAgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX05PU1lNTElOS0VYUCIsICIxIikKICAgICAgICAgcHNldWRvID0gImV4cG9ydCBQU0VVRE9fUFJFRklYPSVzOyIgJSBwX3ByZWZpeApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CmluZGV4IDFmYTZiOTEuLmJiMTRhMzMgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKQEAgLTEyMiw2ICsxMjIsMTAgQEAKICAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2ZzdGFiKGZzdGFiX2xpbmVzLCBzZWxmLnBhcnRzKToKICAgICAgICAgICAgICMgY29weSByb290ZnMgZGlyIHRvIHdvcmtkaXIgdG8gdXBkYXRlIGZzdGFiCiAgICAgICAgICAgICAjIGFzIHJvb3RmcyBjYW4gYmUgdXNlZCBieSBvdGhlciB0YXNrcyBhbmQgY2FuJ3QgYmUgbW9kaWZpZWQKKyAgICAgICAgICAgIG5ld19wc2V1ZG8gPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihzZWxmLndvcmtkaXIsICJwc2V1ZG8iKSkKKyAgICAgICAgICAgIGZyb21fZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguam9pbihpbWFnZV9yb290ZnMsICIuLiIpLCAicHNldWRvIikKKyAgICAgICAgICAgIGZyb21fZGlyID0gb3MucGF0aC5yZWFscGF0aChmcm9tX2RpcikKKyAgICAgICAgICAgIGNvcHloYXJkbGlua3RyZWUoZnJvbV9kaXIsIG5ld19wc2V1ZG8pCiAgICAgICAgICAgICBuZXdfcm9vdGZzID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oc2VsZi53b3JrZGlyLCAicm9vdGZzX2NvcHkiKSkKICAgICAgICAgICAgIGNvcHloYXJkbGlua3RyZWUoaW1hZ2Vfcm9vdGZzLCBuZXdfcm9vdGZzKQogICAgICAgICAgICAgZnN0YWJfcGF0aCA9IG9zLnBhdGguam9pbihuZXdfcm9vdGZzLCAnZXRjL2ZzdGFiJykKQEAgLTE1MSw2ICsxNTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiVVVJRD0lcyIgJSBwYXJ0LmZzdXVpZAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGRldmljZV9uYW1lID0gIlBBUlRVVUlEPSVzIiAlIHBhcnQudXVpZAorICAgICAgICAgICAgZWxpZiBwYXJ0LnVzZV9sYWJlbDoKKyAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJMQUJFTD0lcyIgJSBwYXJ0LmxhYmVsCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgbW1jIGRldmljZSBwYXJ0aXRpb25zIGFyZSBuYW1lZCBtbWNibGswcDEsIG1tY2JsazBwMi4uCiAgICAgICAgICAgICAgICAgcHJlZml4ID0gJ3AnIGlmICBwYXJ0LmRpc2suc3RhcnRzd2l0aCgnbW1jYmxrJykgZWxzZSAnJwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wYXJ0aXRpb24ucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQppbmRleCBiMjM5ZmMwLi5kZGM4ODBiIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQpAQCAtMzAsNiArMzAsNyBAQAogZnJvbSBnbG9iIGltcG9ydCBnbG9iCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgorZnJvbSB3aWMuZW5naW5lIGltcG9ydCBnZXRfY3VzdG9tX2NvbmZpZwogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCiBmcm9tIHdpYy5taXNjIGltcG9ydCBleGVjX2NtZCwgZ2V0X2JpdGJha2VfdmFyCiAKQEAgLTQ0LDE1ICs0NSwxMSBAQAogICAgIG5hbWUgPSAnYm9vdGltZy1wYXJ0aXRpb24nCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjciwgY3Jfd29ya2RpciwKKyAgICBkZWYgZG9fY29uZmlndXJlX3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyLCBjcl93b3JrZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsIGtlcm5lbF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rmc19kaXIsIG5hdGl2ZV9zeXNyb290KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QpOgogICAgICAgICAiIiIKLSAgICAgICAgQ2FsbGVkIHRvIGRvIHRoZSBhY3R1YWwgY29udGVudCBwb3B1bGF0aW9uIGZvciBhIHBhcnRpdGlvbiBpLmUuIGl0Ci0gICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCi0gICAgICAgIEluIHRoaXMgY2FzZSwgZG9lcyB0aGUgZm9sbG93aW5nOgotICAgICAgICAtIHNldHMgdXAgYSB2ZmF0IHBhcnRpdGlvbgotICAgICAgICAtIGNvcGllcyBhbGwgZmlsZXMgbGlzdGVkIGluIElNQUdFX0JPT1RfRklMRVMgdmFyaWFibGUKKyAgICAgICAgQ2FsbGVkIGJlZm9yZSBkb19wcmVwYXJlX3BhcnRpdGlvbigpLCBjcmVhdGUgdS1ib290IHNwZWNpZmljIGJvb3QgY29uZmlnCiAgICAgICAgICIiIgogICAgICAgICBoZGRkaXIgPSAiJXMvYm9vdC4lZCIgJSAoY3Jfd29ya2RpciwgcGFydC5saW5lbm8pCiAgICAgICAgIGluc3RhbGxfY21kID0gImluc3RhbGwgLWQgJXMiICUgaGRkZGlyCkBAIC02Myw4ICs2MCw2IEBACiAgICAgICAgICAgICBpZiBub3Qga2VybmVsX2RpcjoKICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBERVBMT1lfRElSX0lNQUdFLCBleGl0aW5nIikKIAotICAgICAgICBsb2dnZXIuZGVidWcoJ0tlcm5lbCBkaXI6ICVzJywgYm9vdGltZ19kaXIpCi0KICAgICAgICAgYm9vdF9maWxlcyA9IE5vbmUKICAgICAgICAgZm9yIChmbXQsIGlkKSBpbiAoKCJfdXVpZC0lcyIsIHBhcnQudXVpZCksICgiX2xhYmVsLSVzIiwgcGFydC5sYWJlbCksIChOb25lLCBOb25lKSk6CiAgICAgICAgICAgICBpZiBmbXQ6CkBAIC05NCw5ICs4OSw5IEBACiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0Rlc3RpbmF0aW9uIGVudHJ5OiAlcicsIGRzdF9lbnRyeSkKICAgICAgICAgICAgIGRlcGxveV9maWxlcy5hcHBlbmQoZHN0X2VudHJ5KQogCisgICAgICAgIGNscy5pbnN0YWxsX3Rhc2sgPSBbXTsKICAgICAgICAgZm9yIGRlcGxveV9lbnRyeSBpbiBkZXBsb3lfZmlsZXM6CiAgICAgICAgICAgICBzcmMsIGRzdCA9IGRlcGxveV9lbnRyeQotICAgICAgICAgICAgaW5zdGFsbF90YXNrID0gW10KICAgICAgICAgICAgIGlmICcqJyBpbiBzcmM6CiAgICAgICAgICAgICAgICAgIyBieSBkZWZhdWx0IGluc3RhbGwgZmlsZXMgdW5kZXIgdGhlaXIgYmFzZW5hbWUKICAgICAgICAgICAgICAgICBlbnRyeV9uYW1lX2ZuID0gb3MucGF0aC5iYXNlbmFtZQpAQCAtMTExLDIxICsxMDYsMTAxIEBACiAKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0dsb2JiZWQgc291cmNlczogJXMnLCAnLCAnLmpvaW4oc3JjcykpCiAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIHNyY3M6CisgICAgICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGgucmVscGF0aChlbnRyeSwga2VybmVsX2RpcikKICAgICAgICAgICAgICAgICAgICAgZW50cnlfZHN0X25hbWUgPSBlbnRyeV9uYW1lX2ZuKGVudHJ5KQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX3Rhc2suYXBwZW5kKChlbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGhkZGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5X2RzdF9uYW1lKSkpCisgICAgICAgICAgICAgICAgICAgIGNscy5pbnN0YWxsX3Rhc2suYXBwZW5kKChzcmMsIGVudHJ5X2RzdF9uYW1lKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaW5zdGFsbF90YXNrID0gWyhvcy5wYXRoLmpvaW4oa2VybmVsX2Rpciwgc3JjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihoZGRkaXIsIGRzdCkpXQorICAgICAgICAgICAgICAgIGNscy5pbnN0YWxsX3Rhc2suYXBwZW5kKChzcmMsIGRzdCkpCiAKLSAgICAgICAgICAgIGZvciB0YXNrIGluIGluc3RhbGxfdGFzazoKLSAgICAgICAgICAgICAgICBzcmNfcGF0aCwgZHN0X3BhdGggPSB0YXNrCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdJbnN0YWxsICVzIGFzICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShzcmNfcGF0aCksIGRzdF9wYXRoKQotICAgICAgICAgICAgICAgIGluc3RhbGxfY21kID0gImluc3RhbGwgLW0gMDY0NCAtRCAlcyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3JjX3BhdGgsIGRzdF9wYXRoKQotICAgICAgICAgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQorICAgICAgICBpZiBzb3VyY2VfcGFyYW1zLmdldCgnbG9hZGVyJykgIT0gInUtYm9vdCI6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBjb25maWdmaWxlID0gY3Iua3MuYm9vdGxvYWRlci5jb25maWdmaWxlCisgICAgICAgIGN1c3RvbV9jZmcgPSBOb25lCisgICAgICAgIGlmIGNvbmZpZ2ZpbGU6CisgICAgICAgICAgICBjdXN0b21fY2ZnID0gZ2V0X2N1c3RvbV9jb25maWcoY29uZmlnZmlsZSkKKyAgICAgICAgICAgIGlmIGN1c3RvbV9jZmc6CisgICAgICAgICAgICAgICAgIyBVc2UgYSBjdXN0b20gY29uZmlndXJhdGlvbiBmb3IgZXh0bGludXguY29uZgorICAgICAgICAgICAgICAgIGV4dGxpbnV4X2NvbmYgPSBjdXN0b21fY2ZnCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJVc2luZyBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGZvciBleHRsaW51eC5jZmciLCBjb25maWdmaWxlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiY29uZmlnZmlsZSBpcyBzcGVjaWZpZWQgYnV0IGZhaWxlZCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldCBpdCBmcm9tICVzLiIgJSBjb25maWdmaWxlKQorCisgICAgICAgIGlmIG5vdCBjdXN0b21fY2ZnOgorICAgICAgICAgICAgIyBUaGUga2VybmVsIHR5cGVzIHN1cHBvcnRlZCBieSB0aGUgc3lzYm9vdCBvZiB1LWJvb3QKKyAgICAgICAgICAgIGtlcm5lbF90eXBlcyA9IFsiekltYWdlIiwgIkltYWdlIiwgImZpdEltYWdlIiwgInVJbWFnZSIsICJ2bWxpbnV4Il0KKyAgICAgICAgICAgIGhhc19kdGIgPSBGYWxzZQorICAgICAgICAgICAgZmR0X2RpciA9ICcvJworICAgICAgICAgICAga2VybmVsX25hbWUgPSBOb25lCisKKyAgICAgICAgICAgICMgRmluZCB0aGUga2VybmVsIGltYWdlIG5hbWUsIGZyb20gdGhlIGhpZ2hlc3QgcHJlY2VkZW5jZSB0byBsb3dlc3QKKyAgICAgICAgICAgIGZvciBpbWFnZSBpbiBrZXJuZWxfdHlwZXM6CisgICAgICAgICAgICAgICAgZm9yIHRhc2sgaW4gY2xzLmluc3RhbGxfdGFzazoKKyAgICAgICAgICAgICAgICAgICAgc3JjLCBkc3QgPSB0YXNrCisgICAgICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGltYWdlLCBzcmMpOgorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsX25hbWUgPSBvcy5wYXRoLmpvaW4oJy8nLCBkc3QpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIGtlcm5lbF9uYW1lOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBmb3IgdGFzayBpbiBjbHMuaW5zdGFsbF90YXNrOgorICAgICAgICAgICAgICAgIHNyYywgZHN0ID0gdGFzaworICAgICAgICAgICAgICAgICMgV2Ugc3VwcG9zZSB0aGF0IGFsbCB0aGUgZHRiIGFyZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2gocidcLmR0YicsIHNyYykgYW5kIGZkdF9kaXIgPT0gJy8nOgorICAgICAgICAgICAgICAgICAgICBoYXNfZHRiID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBmZHRfZGlyID0gb3MucGF0aC5qb2luKGZkdF9kaXIsIG9zLnBhdGguZGlybmFtZShkc3QpKQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiBub3Qga2VybmVsX25hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoJ05vIGtlcm5lbCBmaWxlIGZvdW5kZWQnKQorCisgICAgICAgICAgICAjIENvbXBvc2UgdGhlIGV4dGxpbnV4LmNvbmYKKyAgICAgICAgICAgIGV4dGxpbnV4X2NvbmYgPSAiZGVmYXVsdCBZb2N0b1xuIgorICAgICAgICAgICAgZXh0bGludXhfY29uZiArPSAibGFiZWwgWW9jdG9cbiIKKyAgICAgICAgICAgIGV4dGxpbnV4X2NvbmYgKz0gIiAgIGtlcm5lbCAlc1xuIiAlIGtlcm5lbF9uYW1lCisgICAgICAgICAgICBpZiBoYXNfZHRiOgorICAgICAgICAgICAgICAgIGV4dGxpbnV4X2NvbmYgKz0gIiAgIGZkdGRpciAlc1xuIiAlIGZkdF9kaXIKKyAgICAgICAgICAgIGJvb3Rsb2FkZXIgPSBjci5rcy5ib290bG9hZGVyCisgICAgICAgICAgICBleHRsaW51eF9jb25mICs9ICJhcHBlbmQgcm9vdD0lcyByb290d2FpdCAlc1xuIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNyLnJvb3RkZXYsIGJvb3Rsb2FkZXIuYXBwZW5kIGlmIGJvb3Rsb2FkZXIuYXBwZW5kIGVsc2UgJycpCisKKyAgICAgICAgaW5zdGFsbF9jbWQgPSAiaW5zdGFsbCAtZCAlcy9leHRsaW51eC8iICUgaGRkZGlyCisgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQorICAgICAgICBjZmcgPSBvcGVuKCIlcy9leHRsaW51eC9leHRsaW51eC5jb25mIiAlIGhkZGRpciwgInciKQorICAgICAgICBjZmcud3JpdGUoZXh0bGludXhfY29uZikKKyAgICAgICAgY2ZnLmNsb3NlKCkKKworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRvX3ByZXBhcmVfcGFydGl0aW9uKGNscywgcGFydCwgc291cmNlX3BhcmFtcywgY3IsIGNyX3dvcmtkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGVkIHRvIGRvIHRoZSBhY3R1YWwgY29udGVudCBwb3B1bGF0aW9uIGZvciBhIHBhcnRpdGlvbiBpLmUuIGl0CisgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCisgICAgICAgIEluIHRoaXMgY2FzZSwgZG9lcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIHNldHMgdXAgYSB2ZmF0IHBhcnRpdGlvbgorICAgICAgICAtIGNvcGllcyBhbGwgZmlsZXMgbGlzdGVkIGluIElNQUdFX0JPT1RfRklMRVMgdmFyaWFibGUKKyAgICAgICAgIiIiCisgICAgICAgIGhkZGRpciA9ICIlcy9ib290LiVkIiAlIChjcl93b3JrZGlyLCBwYXJ0LmxpbmVubykKKworICAgICAgICBpZiBub3Qga2VybmVsX2RpcjoKKyAgICAgICAgICAgIGtlcm5lbF9kaXIgPSBnZXRfYml0YmFrZV92YXIoIkRFUExPWV9ESVJfSU1BR0UiKQorICAgICAgICAgICAgaWYgbm90IGtlcm5lbF9kaXI6CisgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNvdWxkbid0IGZpbmQgREVQTE9ZX0RJUl9JTUFHRSwgZXhpdGluZyIpCisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCdLZXJuZWwgZGlyOiAlcycsIGJvb3RpbWdfZGlyKQorCisKKyAgICAgICAgZm9yIHRhc2sgaW4gY2xzLmluc3RhbGxfdGFzazoKKyAgICAgICAgICAgIHNyY19wYXRoLCBkc3RfcGF0aCA9IHRhc2sKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnSW5zdGFsbCAlcyBhcyAlcycsIHNyY19wYXRoLCBkc3RfcGF0aCkKKyAgICAgICAgICAgIGluc3RhbGxfY21kID0gImluc3RhbGwgLW0gMDY0NCAtRCAlcyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcy5wYXRoLmpvaW4oa2VybmVsX2Rpciwgc3JjX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oaGRkZGlyLCBkc3RfcGF0aCkpCisgICAgICAgICAgICBleGVjX2NtZChpbnN0YWxsX2NtZCkKIAogICAgICAgICBsb2dnZXIuZGVidWcoJ1ByZXBhcmUgYm9vdCBwYXJ0aXRpb24gdXNpbmcgcm9vdGZzIGluICVzJywgaGRkZGlyKQogICAgICAgICBwYXJ0LnByZXBhcmVfcm9vdGZzKGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLCBoZGRkaXIsCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CmluZGV4IGQ1OTkxMTIuLjkzNDdhYTcgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CkBAIC0yNiw2ICsyNiw3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCByZQogCiBmcm9tIHdpYyBpbXBvcnQgV2ljRXJyb3IKIGZyb20gd2ljLmVuZ2luZSBpbXBvcnQgZ2V0X2N1c3RvbV9jb25maWcKQEAgLTQ3LDEwICs0OCwxNyBAQAogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgaWYgZGlybmFtZSBleGlzdHMgaW4gZGVmYXVsdCBib290aW1nX2RpciBvciBpbiBTVEFHSU5HX0RJUi4KICAgICAgICAgIiIiCi0gICAgICAgIGZvciByZXN1bHQgaW4gKGJvb3RpbWdfZGlyLCBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIpKToKKyAgICAgICAgc3RhZ2luZ19kYXRhZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJTVEFHSU5HX0RBVEFESVIiKQorICAgICAgICBmb3IgcmVzdWx0IGluIChib290aW1nX2Rpciwgc3RhZ2luZ19kYXRhZGlyKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy8lcyIgJSAocmVzdWx0LCBkaXJuYW1lKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisgICAgICAgICMgU1RBR0lOR19EQVRBRElSIGlzIGV4cGFuZGVkIHdpdGggTUxQUkVGSVggaWYgbXVsdGlsaWIgaXMgZW5hYmxlZAorICAgICAgICAjIGJ1dCBkZXBlbmRlbmN5IHN5c2xpbnV4IGlzIHN0aWxsIHBvcHVsYXRlZCB0byBvcmlnaW5hbCBTVEFHSU5HX0RBVEFESVIKKyAgICAgICAgbm9uYXJjaF9kYXRhZGlyID0gcmUuc3ViKCcvW14vXSpyZWNpcGUtc3lzcm9vdCcsICcvcmVjaXBlLXN5c3Jvb3QnLCBzdGFnaW5nX2RhdGFkaXIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihub25hcmNoX2RhdGFkaXIsIGRpcm5hbWUpKToKKyAgICAgICAgICAgIHJldHVybiBub25hcmNoX2RhdGFkaXIKKwogICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBjb3JyZWN0IGJvb3RpbWdfZGlyLCBleGl0aW5nIikKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvaXNvaW1hZ2UtaXNvaHlicmlkLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvaXNvaW1hZ2UtaXNvaHlicmlkLnB5CmluZGV4IGIxMTljOWMuLjE3MDA3N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9pc29pbWFnZS1pc29oeWJyaWQucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogICAgIEV4YW1wbGUga2lja3N0YXJ0IGZpbGU6CiAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBpc29pbWFnZS1pc29oeWJyaWQgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj1ncnViLWVmaSwgXFwKLSAgICBpbWFnZV9uYW1lPSBJc29JbWFnZSIgLS1vbmRpc2sgY2QgLS1sYWJlbCBMSVZFQ0QgLS1mc3R5cGU9ZXh0MgorICAgIGltYWdlX25hbWU9IElzb0ltYWdlIiAtLW9uZGlzayBjZCAtLWxhYmVsIExJVkVDRAogICAgIGJvb3Rsb2FkZXIgIC0tdGltZW91dD0xMCAgLS1hcHBlbmQ9IiAiCiAKICAgICBJbiAtLXNvdXJjZXBhcmFtcyAibG9hZGVyIiBzcGVjaWZpZXMgdGhlIGJvb3Rsb2FkZXIgdXNlZCBmb3IgYm9vdGluZyBpbiBFRkkKQEAgLTE5MSwxMCArMTkxLDkgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkNvdWxkbid0IGZpbmQgb3IgYnVpbGQgaW5pdHJkLCBleGl0aW5nLiIpCiAKLSAgICAgICAgICAgIGV4ZWNfY21kKCJjZCAlcyAmJiBmaW5kIC4gfCBjcGlvIC1vIC1IIG5ld2MgLVIgKzA6KzAgPi4vaW5pdHJkLmNwaW8gIiBcCi0gICAgICAgICAgICAgICAgICAgICUgaW5pdHJkX2RpciwgYXNfc2hlbGw9VHJ1ZSkKLSAgICAgICAgICAgIGV4ZWNfY21kKCJnemlwIC1mIC05IC1jICVzL2luaXRyZC5jcGlvID4gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgJSAoY3Jfd29ya2RpciwgaW5pdHJkKSwgYXNfc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGV4ZWNfY21kKCJjZCAlcyAmJiBmaW5kIC4gfCBjcGlvIC1vIC1IIG5ld2MgLVIgcm9vdDpyb290ID4lcy9pbml0cmQuY3BpbyAiIFwKKyAgICAgICAgICAgICAgICAgICAgICUgKGluaXRyZF9kaXIsIGNyX3dvcmtkaXIpLCBhc19zaGVsbD1UcnVlKQorICAgICAgICAgICAgZXhlY19jbWQoImd6aXAgLWYgLTkgJXMvaW5pdHJkLmNwaW8iICUgY3Jfd29ya2RpciwgYXNfc2hlbGw9VHJ1ZSkKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoaW5pdHJkX2RpcikKIAogICAgICAgICByZXR1cm4gaW5pdHJkCkBAIC0yNTMsMzMgKzI1Miw4IEBACiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBJTUFHRV9ST09URlMsIGV4aXRpbmcuIikKIAogICAgICAgICBwYXJ0LnJvb3Rmc19kaXIgPSByb290ZnNfZGlyCi0KLSAgICAgICAgIyBQcmVwYXJlIHJvb3Rmcy5pbWcKICAgICAgICAgZGVwbG95X2RpciA9IGdldF9iaXRiYWtlX3ZhcigiREVQTE9ZX0RJUl9JTUFHRSIpCiAgICAgICAgIGltZ19pc29fZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJJU09ESVIiKQotICAgICAgICByb290ZnNfaW1nID0gIiVzL3Jvb3Rmcy5pbWciICUgaW1nX2lzb19kaXIKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHJvb3Rmc19pbWcpOgotICAgICAgICAgICAgIyBjaGVjayBpZiByb290ZnMuaW1nIGlzIGluIGRlcGxveWRpcgotICAgICAgICAgICAgZGVwbG95X2RpciA9IGdldF9iaXRiYWtlX3ZhcigiREVQTE9ZX0RJUl9JTUFHRSIpCi0gICAgICAgICAgICBpbWFnZV9uYW1lID0gZ2V0X2JpdGJha2VfdmFyKCJJTUFHRV9MSU5LX05BTUUiKQotICAgICAgICAgICAgcm9vdGZzX2ltZyA9ICIlcy8lcy4lcyIgXAotICAgICAgICAgICAgICAgICUgKGRlcGxveV9kaXIsIGltYWdlX25hbWUsIHBhcnQuZnN0eXBlKQotCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShyb290ZnNfaW1nKToKLSAgICAgICAgICAgICMgY3JlYXRlIGltYWdlIGZpbGUgd2l0aCB0eXBlIHNwZWNpZmllZCBieSAtLWZzdHlwZQotICAgICAgICAgICAgIyB3aGljaCBjb250YWlucyByb290ZnMKLSAgICAgICAgICAgIGR1X2NtZCA9ICJkdSAtYmtzICVzIiAlIHJvb3Rmc19kaXIKLSAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKGR1X2NtZCkKLSAgICAgICAgICAgIHBhcnQuc2l6ZSA9IGludChvdXQuc3BsaXQoKVswXSkKLSAgICAgICAgICAgIHBhcnQuZXh0cmFfc3BhY2UgPSAwCi0gICAgICAgICAgICBwYXJ0Lm92ZXJoZWFkX2ZhY3RvciA9IDEuMgotICAgICAgICAgICAgcGFydC5wcmVwYXJlX3Jvb3Rmcyhjcl93b3JrZGlyLCBvZV9idWlsZGRpciwgcm9vdGZzX2RpciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCkKLSAgICAgICAgICAgIHJvb3Rmc19pbWcgPSBwYXJ0LnNvdXJjZV9maWxlCi0KLSAgICAgICAgaW5zdGFsbF9jbWQgPSAiaW5zdGFsbCAtbSAwNjQ0ICVzICVzL3Jvb3Rmcy5pbWciIFwKLSAgICAgICAgICAgICUgKHJvb3Rmc19pbWcsIGlzb2RpcikKLSAgICAgICAgZXhlY19jbWQoaW5zdGFsbF9jbWQpCiAKICAgICAgICAgIyBSZW1vdmUgdGhlIHRlbXBvcmFyeSBmaWxlIGNyZWF0ZWQgYnkgcGFydC5wcmVwYXJlX3Jvb3RmcygpCiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhcnQuc291cmNlX2ZpbGUpOgpAQCAtMzQyLDcgKzMxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGdydWJfc3JjID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsIGdydWJfc3JjX2ltYWdlKQogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3J1Yl9zcmMpOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkdydWIgbG9hZGVyICVzIGlzIG5vdCBmb3VuZCBpbiAlcy4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBidWlsZCBncnViLWVmaSBmaXJzdCIgJSAoZ3J1Yl9pbWFnZSwgZGVwbG95X2RpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGJ1aWxkIGdydWItZWZpIGZpcnN0IiAlIChncnViX3NyY19pbWFnZSwgZGVwbG95X2RpcikpCiAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KGdydWJfc3JjLCBncnViX3RhcmdldCkKIAogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4odGFyZ2V0X2RpciwgImJvb3QuY2ZnIikpOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0IGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CmluZGV4IGRjOTk5YzQuLjBiZDA1ZjQgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKQEAgLTQxNiw5ICs0MTYsMTEgQEAKICAgICAgICAgICAgICAgICBzYW1wbGVzWy0xXVsnY29tbWl0X251bSddID0gY29tbWl0X251bQogCiAgICAgICAgICAgICBhYnNkaWZmID0gc2FtcGxlc1stMV1bJ3ZhbF9jbHMnXShzYW1wbGVzWy0xXVsnbWVhbiddIC0gc2FtcGxlc1tpZF9jb21wXVsnbWVhbiddKQorICAgICAgICAgICAgcmVsZGlmZiA9IGFic2RpZmYgKiAxMDAgLyBzYW1wbGVzW2lkX2NvbXBdWydtZWFuJ10KICAgICAgICAgICAgIG5ld19tZWFzWydhYnNkaWZmJ10gPSBhYnNkaWZmCiAgICAgICAgICAgICBuZXdfbWVhc1snYWJzZGlmZl9zdHInXSA9IHN0cihhYnNkaWZmKSBpZiBhYnNkaWZmIDwgMCBlbHNlICcrJyArIHN0cihhYnNkaWZmKQotICAgICAgICAgICAgbmV3X21lYXNbJ3JlbGRpZmYnXSA9ICJ7OisuMWZ9ICUiLmZvcm1hdChhYnNkaWZmICogMTAwIC8gc2FtcGxlc1tpZF9jb21wXVsnbWVhbiddKQorICAgICAgICAgICAgbmV3X21lYXNbJ3JlbGRpZmYnXSA9IHJlbGRpZmYKKyAgICAgICAgICAgIG5ld19tZWFzWydyZWxkaWZmX3N0ciddID0gIns6Ky4xZn0gJSIuZm9ybWF0KHJlbGRpZmYpCiAgICAgICAgICAgICBuZXdfbWVhc1snc2FtcGxlcyddID0gc2FtcGxlcwogICAgICAgICAgICAgbmV3X21lYXNbJ3ZhbHVlJ10gPSBzYW1wbGVzWy0xXQogICAgICAgICAgICAgbmV3X21lYXNbJ3ZhbHVlX3R5cGUnXSA9IHNhbXBsZXNbLTFdWyd2YWxfY2xzJ10KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbCBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbAppbmRleCA2NzczODcyLi41MmNlMzI5IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKKysrIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsCkBAIC00MCwxNiArNDAsNyBAQAogICAgIHJldHVybiAxCiBmaQogCi0jIE1ha2Ugc3VyZSB3ZSdyZSBub3QgdXNpbmcgcHl0aG9uIHYzLnggYXMgJ3B5dGhvbicsIHdlIGRvbid0IHN1cHBvcnQgaXQuCi1weV92Ml9jaGVjaz0kKC91c3IvYmluL2VudiBweXRob24gLS12ZXJzaW9uIDI+JjEgfCBncmVwICJQeXRob24gMyIpCi1pZiBbIC1uICIkcHlfdjJfY2hlY2siIF07IHRoZW4KLSAgICBlY2hvID4mMiAiT3BlbkVtYmVkZGVkIHJlcXVpcmVzICdweXRob24nIHRvIGJlIHB5dGhvbiB2MiAoPj0gMi43LjMpLCBub3QgcHl0aG9uIHYzLiIKLSAgICBlY2hvID4mMiAiUGxlYXNlIHNldCB1cCBweXRob24gdjIgYXMgeW91ciBkZWZhdWx0ICdweXRob24nIGludGVycHJldGVyLiIKLSAgICByZXR1cm4gMQotZmkKLXVuc2V0IHB5X3YyX2NoZWNrCi0KLXB5X3YyN19jaGVjaz0kKHB5dGhvbiAtYyAnaW1wb3J0IHN5czsgcHJpbnQgc3lzLnZlcnNpb25faW5mbyA+PSAoMiw3LDMpJykKK3B5X3YyN19jaGVjaz0kKHB5dGhvbjIgLWMgJ2ltcG9ydCBzeXM7IHByaW50IHN5cy52ZXJzaW9uX2luZm8gPj0gKDIsNywzKScpCiBpZiBbICIkcHlfdjI3X2NoZWNrIiAhPSAiVHJ1ZSIgXTsgdGhlbgogICAgIGVjaG8gPiYyICJPcGVuRW1iZWRkZWQgcmVxdWlyZXMgJ3B5dGhvbicgdG8gYmUgcHl0aG9uIHYyICg+PSAyLjcuMyksIG5vdCBweXRob24gdjMuIgogICAgIGVjaG8gPiYyICJQbGVhc2UgdXBncmFkZSB5b3VyIHB5dGhvbiB2Mi4iCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QgYi9wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QKaW5kZXggNWNlYzIzYi4uNmM3ZTlkMyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWRlcGVuZHMtZG90CisrKyBiL3Bva3kvc2NyaXB0cy9vZS1kZXBlbmRzLWRvdApAQCAtNDcsNiArNDcsNTEgQEAKICAgICAgICAgaWYgbGVuKHN5cy5hcmd2KSAhPSAzIGFuZCBsZW4oc3lzLmFyZ3YpIDwgNToKICAgICAgICAgICAgIHByaW50KCdFUlJPUjogTm90IGVub3VnaCBhcmdzLCBzZWUgLS1oZWxwIGZvciB1c2FnZScpCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGluc2VydF9kZXBfY2hhaW4oY2hhaW4sIHJkZXBzLCBhbGxkZXBzKToKKyAgICAgICAgIiIiCisgICAgICAgIGluc2VydCBlbGVtZW50cyB0byBjaGFpbiBmcm9tIHJkZXBzLCBhY2NvcmRpbmcgdG8gYWxsZGVwcworICAgICAgICAiIiIKKyAgICAgICAgIyBjaGFpbiBzaG91bGQgYXQgbGVhc3QgY29udGFpbiBvbmUgZWxlbWVudAorICAgICAgICBpZiBsZW4oY2hhaW4pID09IDA6CisgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGluc2VydGVkX2VsZW1lbnRzID0gW10KKyAgICAgICAgZm9yIHJkZXAgaW4gcmRlcHM6CisgICAgICAgICAgICBpZiByZGVwIGluIGNoYWluOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjaGFpbiktMSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGNoYWluW2ldIGluIGFsbGRlcHNbcmRlcF0gYW5kIHJkZXAgaW4gYWxsZGVwc1tjaGFpbltpKzFdXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYWluLmluc2VydChpKzEsIHJkZXApCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRlZF9lbGVtZW50cy5hcHBlbmQocmRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgY2hhaW5bLTFdIGluIGFsbGRlcHNbcmRlcF0gYW5kIHJkZXAgbm90IGluIGNoYWluOgorICAgICAgICAgICAgICAgICAgICBjaGFpbi5hcHBlbmQocmRlcCkKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWRfZWxlbWVudHMuYXBwZW5kKHJkZXApCisgICAgICAgIHJldHVybiBpbnNlcnRlZF9lbGVtZW50cworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwcmludF9kZXBfY2hhaW5zKGtleSwgcmRlcHMsIGFsbGRlcHMpOgorICAgICAgICBybGlzdCA9IHJkZXBzLmNvcHkoKQorICAgICAgICBjaGFpbiA9IFtdCisgICAgICAgIHJlbW92ZWRfcmRlcHMgPSBbXSAjIGhvbGQgcmRlcHMgcmVtb3ZlZCBmcm9tIHJsaXN0CisKKyAgICAgICAgY2hhaW4uYXBwZW5kKGtleSkKKyAgICAgICAgd2hpbGUgKGxlbihybGlzdCkgIT0gMCk6CisgICAgICAgICAgICAjIGluc2VydCBjaGFpbiBmcm9tIHJsaXN0CisgICAgICAgICAgICBpbnNlcnRlZF9lbGVtZW50cyA9IERvdC5pbnNlcnRfZGVwX2NoYWluKGNoYWluLCBybGlzdCwgYWxsZGVwcykKKyAgICAgICAgICAgIGlmIG5vdCBpbnNlcnRlZF9lbGVtZW50czoKKyAgICAgICAgICAgICAgICBpZiBjaGFpblstMV0gaW4gcmxpc3Q6CisgICAgICAgICAgICAgICAgICAgIHJsaXN0LnJlbW92ZShjaGFpblstMV0pCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRfcmRlcHMuYXBwZW5kKGNoYWluWy0xXSkKKyAgICAgICAgICAgICAgICBjaGFpbi5wb3AoKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgaW5zZXJ0IGNoYWluIGZyb20gcmVtb3ZlZF9yZGVwcworICAgICAgICAgICAgICAgIERvdC5pbnNlcnRfZGVwX2NoYWluKGNoYWluLCByZW1vdmVkX3JkZXBzLCBhbGxkZXBzKQorICAgICAgICAgICAgICAgIHByaW50KCcgLT4gJy5qb2luKGxpc3QocmV2ZXJzZWQoY2hhaW4pKSkpCisKICAgICBkZWYgbWFpbihzZWxmKToKICAgICAgICAgI3ByaW50KHNlbGYuYXJncy5kb3RmaWxlWzBdKQogICAgICAgICAjIFRoZSBmb3JtYXQgaXMge2tleTogZGVwZW5kc30KQEAgLTEwOSw2ICsxNTQsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuYXJncy5rZXkgaW4gdiBhbmQgbm90IGsgaW4gcmV2ZXJzZV9kZXBzOgogICAgICAgICAgICAgICAgICAgICByZXZlcnNlX2RlcHMuYXBwZW5kKGspCiAgICAgICAgICAgICBwcmludCgnQmVjYXVzZTogJXMnICUgJyAnLmpvaW4ocmV2ZXJzZV9kZXBzKSkKKyAgICAgICAgICAgIERvdC5wcmludF9kZXBfY2hhaW5zKHNlbGYuYXJncy5rZXksIHJldmVyc2VfZGVwcywgZGVwZW5kcykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0cnk6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtZmluZC1uYXRpdmUtc3lzcm9vdCBiL3Bva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290CmluZGV4IDM1MGVhMjEuLmNjMTQ2YjMgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290CisrKyBiL3Bva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290CkBAIC0xMTAsNiArMTEwLDQgQEAKIGlmIFsgLWUgIiRwc2V1ZG8iIF07IHRoZW4KICAgICBlY2hvICJQU0VVRE89JHBzZXVkbyIKICAgICBQU0VVRE89IiRwc2V1ZG8iCi1lbHNlCi0gICAgZWNobyAiUFNFVURPICRwc2V1ZG8gaXMgbm90IGZvdW5kLiIKIGZpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbAppbmRleCBlNmM5ZGY5Li41MzczOWIwIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwKQEAgLTI3OSwxMCArMjc5LDE0IEBACiAgICAgICAgICAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBwa2dkYXRhZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJywgcGtnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnZGF0YWZpbGUpOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogJXMiICUgcGtnKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBrZ2RhdGFmaWxlKToKKyAgICAgICAgICAgIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgYXJncy5jYXJyeW9uOgorICAgICAgICAgICAgICAgIHByaW50KCJUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogJXMiICUgcGtnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiAlcyIgJSBwa2cpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAogZGVmIHBhY2thZ2VfaW5mbyhhcmdzKToKICAgICBkZWYgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpOgpAQCAtNTU4LDYgKzU2Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdGaW5kIHJlY2lwZSBwcm9kdWNpbmcgb25lIG9yIG1vcmUgcGFja2FnZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0xvb2tzIHVwIHRoZSBzcGVjaWZpZWQgcnVudGltZSBwYWNrYWdlKHMpIHRvIHNlZSB3aGljaCByZWNpcGUgdGhleSB3ZXJlIHByb2R1Y2VkIGJ5JykKICAgICBwYXJzZXJfbG9va3VwX3JlY2lwZS5hZGRfYXJndW1lbnQoJ3BrZycsIG5hcmdzPScrJywgaGVscD0nUnVudGltZSBwYWNrYWdlIG5hbWUgdG8gbG9vayB1cCcpCisgICAgcGFyc2VyX2xvb2t1cF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbnRpbnVlJywgZGVzdD0iY2FycnlvbiIsIGhlbHA9J0NvbnRpbnVlIGxvb2tpbmcgdXAgcmVjaXBlcyBldmVuIGlmIHdlIGNhbiBub3QgZmluZCBvbmUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9sb29rdXBfcmVjaXBlLnNldF9kZWZhdWx0cyhmdW5jPWxvb2t1cF9yZWNpcGUpCiAKICAgICBwYXJzZXJfcGFja2FnZV9pbmZvID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdwYWNrYWdlLWluZm8nLApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUgYi9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZQppbmRleCAxMTMxMTIyLi5hMjllOTk0IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZQorKysgYi9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZQpAQCAtNTUsMTIgKzU1LDEyIEBACiBPTERfUEFUSD0kUEFUSAogCiAjIGxvb2sgZm9yIGEgdG9vbCBvbmx5IGluIG5hdGl2ZSBzeXNyb290Ci1QQVRIPSRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL2JpbjokT0VDT1JFX05BVElWRV9TWVNST09UL2JpbjokT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zYmluOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1Qvc2JpbgorUEFUSD0kT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9iaW46JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC9iaW46JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3Ivc2JpbjokT0VDT1JFX05BVElWRV9TWVNST09UL3NiaW4kKGZpbmQgJE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3IvYmluLyotbmF0aXZlIC1tYXhkZXB0aCAxIC10eXBlIGQgLXByaW50ZiAiOiVwIikKIHRvb2xfZmluZD1gL3Vzci9iaW4vd2hpY2ggJHRvb2wgMj4vZGV2L251bGxgCiAKIGlmIFsgLW4gIiR0b29sX2ZpbmQiIF0gOyB0aGVuCiAgICAgIyBhZGQgb2xkIHBhdGggdG8gYWxsb3cgdXNhZ2Ugb2YgaG9zdCB0b29scwotICAgIFBBVEg9JFBBVEg6JE9MRF9QQVRIICRACisgICAgUEFUSD0kUEFUSDokT0xEX1BBVEggIiRAIgogZWxzZQogICAgIGVjaG8gIkVycm9yOiBVbmFibGUgdG8gZmluZCAnJHRvb2wnIGluICRQQVRIIgogICAgIGVjaG8gIkVycm9yOiBIYXZlIHlvdSBydW4gJ2JpdGJha2UgJG5hdGl2ZV9yZWNpcGUgLWNhZGR0b19yZWNpcGVfc3lzcm9vdCc/IgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZQppbmRleCBiZjY1ZTE5Li5lMGVjNDcxIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZQorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZQpAQCAtMiw2ICsyLDUgQEAKIAogc2V0IC1lCiAKLVBTRVVET19VTkxPQUQ9MSBxZW11d3JhcHBlciAtTCAkRCAtRSBMRF9MSUJSQVJZX1BBVEg9JEQvJHtsaWJkaXJ9OiRELyR7YmFzZV9saWJkaXJ9IFwKLQkJCQkJLUUgJHtmb250Y29uZmlnY2FjaGVlbnZ9ICREJHtiaW5kaXJ9L2ZjLWNhY2hlIC0tc3lzcm9vdD0kRCAtLXN5c3RlbS1vbmx5ICR7Zm9udGNvbmZpZ2NhY2hlcGFyYW1zfQorUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREIC1FICR7Zm9udGNvbmZpZ2NhY2hlZW52fSAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9ZmMtY2FjaGUgLS1zeXNyb290PSREIC0tc3lzdGVtLW9ubHkgJHtmb250Y29uZmlnY2FjaGVwYXJhbXN9CiBjaG93biAtUiByb290OnJvb3QgJEQke2ZvbnRjb25maWdjYWNoZWRpcn0KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9naW9fbW9kdWxlX2NhY2hlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2dpb19tb2R1bGVfY2FjaGUKaW5kZXggZmMzZjlkMC4uZDFmMDE0MCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2dpb19tb2R1bGVfY2FjaGUKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2dpb19tb2R1bGVfY2FjaGUKQEAgLTIsOCArMiw3IEBACiAKIHNldCAtZQogCi1QU0VVRE9fVU5MT0FEPTEgcWVtdXdyYXBwZXIgLUwgJEQgLUUgTERfTElCUkFSWV9QQVRIPSREJHtsaWJkaXJ9OiREJHtiYXNlX2xpYmRpcn0gXAotCSREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH1naW8tcXVlcnltb2R1bGVzICREJHtsaWJkaXJ9L2dpby9tb2R1bGVzLworUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH1naW8tcXVlcnltb2R1bGVzICREJHtsaWJkaXJ9L2dpby9tb2R1bGVzLwogCiBbICEgLWUgJEQke2xpYmRpcn0vZ2lvL21vZHVsZXMvZ2lvbW9kdWxlLmNhY2hlIF0gfHwKIAljaG93biByb290OnJvb3QgJEQke2xpYmRpcn0vZ2lvL21vZHVsZXMvZ2lvbW9kdWxlLmNhY2hlCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZ3RrX2ltbW9kdWxlc19jYWNoZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9ndGtfaW1tb2R1bGVzX2NhY2hlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NTUxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZ3RrX2ltbW9kdWxlc19jYWNoZQpAQCAtMCwwICsxLDE2IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2lmIFsgLXggJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fWd0ay1xdWVyeS1pbW1vZHVsZXMtMi4wIF07IHRoZW4KKyAgICBQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fWd0ay1xdWVyeS1pbW1vZHVsZXMtMi4wIFwKKyAgICAgICAgPiAkRCR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUgJiYKKyAgICAgICAgc2VkIC1pIC1lICJzOiREOjoiICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZQorICAgICAgICBjaG93biByb290OnJvb3QgJEQke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlCitmaQoraWYgWyAteCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9Z3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgXTsgdGhlbgorICAgIFBTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9Z3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgXAorICAgICAgICA+ICREJHtsaWJkaXJ9L2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlICYmCisgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZQorICAgICAgICBjaG93biByb290OnJvb3QgJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKK2ZpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfcGl4YnVmX2NhY2hlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3BpeGJ1Zl9jYWNoZQppbmRleCA1ZDQ0MDc1Li5lYmVhMDdjIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfcGl4YnVmX2NhY2hlCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9waXhidWZfY2FjaGUKQEAgLTUsNyArNSw2IEBACiBleHBvcnQgR0RLX1BJWEJVRl9NT0RVTEVESVI9JEQke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMKIGV4cG9ydCBHREtfUElYQlVGX0ZBVEFMX0xPQURFUj0xCiAKLVBTRVVET19VTkxPQUQ9MSBxZW11d3JhcHBlciAtTCAkRCAtRSBMRF9MSUJSQVJZX1BBVEg9JEQvJHtsaWJkaXJ9OiRELyR7YmFzZV9saWJkaXJ9XAotICAgICREJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCitQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKICAgICA+JEdES19QSVhCVUZfTU9EVUxFRElSLy4uL2xvYWRlcnMuY2FjaGUgJiYgXAogICAgIHNlZCAtaSAtZSAiczokRDo6ZyIgJEdES19QSVhCVUZfTU9EVUxFRElSLy4uL2xvYWRlcnMuY2FjaGUKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1Y2NlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiCkBAIC0wLDAgKzEsNiBAQAorIyEvYmluL3NoCisKK3NldCAtZQorCitQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fXVkZXZhZG0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKK2Nob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3J1bnFlbXUgYi9wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCBjNmI3NTgwLi4yOTVjOGIxIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnVucWVtdQorKysgYi9wb2t5L3NjcmlwdHMvcnVucWVtdQpAQCAtMjkwLDcgKzI5MCw3IEBACiAgICAgZGVmIGNoZWNrX2FyZ19mc3R5cGUoc2VsZiwgZnN0KToKICAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCBGU1RZUEUiIiIKICAgICAgICAgaWYgZnN0IG5vdCBpbiBzZWxmLmZzdHlwZXMgKyBzZWxmLnZtdHlwZXM6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigiTWF5YmUgdW5zdXBwb3J0ZWQgRlNUWVBFOiAlcyIgJSBmc3QpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiTWF5YmUgdW5zdXBwb3J0ZWQgRlNUWVBFOiAlcyIgJSBmc3QpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZzdHlwZSBvciBzZWxmLmZzdHlwZSA9PSBmc3Q6CiAgICAgICAgICAgICBpZiBmc3QgPT0gJ3JhbWZzJzoKICAgICAgICAgICAgICAgICBmc3QgPSAnY3Bpby5neicKQEAgLTM1Miw3ICszNTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLnFlbXVib290ID0gcWIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5xYmNvbmZsb2FkID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCIlcyBkb2Vzbid0IGV4aXN0IiAlIHFiKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiJXMgZG9lc24ndCBleGlzdCIgJSBxYikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVuUWVtdUVycm9yKCJDYW4ndCBmaW5kIEZTVFlQRSBmcm9tOiAlcyIgJSBwKQogCkBAIC02NzIsNyArNjcyLDEwIEBACiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUUJfTUVNIGlzIG5vdCBzZXQsIHVzZSA1MTJNIGJ5IGRlZmF1bHQnKQogICAgICAgICAgICAgc2VsZi5zZXQoJ1FCX01FTScsICctbSA1MTInKQogCi0gICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9ICcgbWVtPSVzJyAlIHNlbGYuZ2V0KCdRQl9NRU0nKS5yZXBsYWNlKCctbScsJycpLnN0cmlwKCkgKyAnTScKKyAgICAgICAgbWFjaCA9IHNlbGYuZ2V0KCdNQUNISU5FJykKKyAgICAgICAgaWYgbm90IG1hY2guc3RhcnRzd2l0aCgncWVtdW1pcHMnKToKKyAgICAgICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9ICcgbWVtPSVzJyAlIHNlbGYuZ2V0KCdRQl9NRU0nKS5yZXBsYWNlKCctbScsJycpLnN0cmlwKCkgKyAnTScKKwogICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnICVzJyAlIHNlbGYuZ2V0KCdRQl9NRU0nKQogCiAgICAgZGVmIGNoZWNrX3RjcHNlcmlhbChzZWxmKToKQEAgLTY5Miw3ICs2OTUsNyBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuZ2V0KCdRQl9BVURJT19EUlYnKToKICAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIlFCX0FVRElPX0RSViBpcyBOVUxMLCB0aGlzIGJvYXJkIGRvZXNuJ3Qgc3VwcG9ydCBhdWRpbyIpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5nZXQoJ1FCX0FVRElPX09QVCcpOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdRQl9BVURJT19PUFQgaXMgTlVMTCwgeW91IG1heSBuZWVkIGRlZmluZSBpdCB0byBtYWtlIGF1ZGlvIHdvcmsnKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdRQl9BVURJT19PUFQgaXMgTlVMTCwgeW91IG1heSBuZWVkIGRlZmluZSBpdCB0byBtYWtlIGF1ZGlvIHdvcmsnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnFlbXVfb3B0X3NjcmlwdCArPSAnICVzJyAlIHNlbGYuZ2V0KCdRQl9BVURJT19PUFQnKQogICAgICAgICAgICAgb3MucHV0ZW52KCdRRU1VX0FVRElPX0RSVicsIHNlbGYuZ2V0KCdRQl9BVURJT19EUlYnKSkKQEAgLTcxNCw3ICs3MTcsNyBAQAogICAgICAgICAgICAgaWYgc2VsZi5nZXQoJ0RFUExPWV9ESVJfSU1BR0UnKToKICAgICAgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gc2VsZi5nZXQoJ0RFUExPWV9ESVJfSU1BR0UnKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiQ2FuJ3QgZmluZCBxZW11Ym9vdCBjb25mIGZpbGUsIERFUExPWV9ESVJfSU1BR0UgaXMgTlVMTCEiKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDYW4ndCBmaW5kIHFlbXVib290IGNvbmYgZmlsZSwgREVQTE9ZX0RJUl9JTUFHRSBpcyBOVUxMISIpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgIGlmIHNlbGYucm9vdGZzIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5yb290ZnMpOgpAQCAtMTA2MSw5ICsxMDY0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgdmlydGlvIG1pZ2h0IGhhdmUgYmVlbiBzZWxlY3RlZCBleHBsaWNpdGx5IChqdXN0IHVzZSBpdCksIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgYXMgZmFsbGJhY2sgKHRoZW4gd2FybiBhYm91dCB0aGF0KS4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkcml2ZV90eXBlLnN0YXJ0c3dpdGgoIi9kZXYvdmQiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiVW5rbm93biBRQl9EUklWRV9UWVBFOiAlcyIgJSBkcml2ZV90eXBlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJGYWlsZWQgdG8gZmlndXJlIG91dCBkcml2ZSB0eXBlLCBjb25zaWRlciBkZWZpbmUgb3IgZml4IFFCX0RSSVZFX1RZUEUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdUcnlpbmcgdG8gdXNlIHZpcnRpbyBibG9jayBkcml2ZScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlVua25vd24gUUJfRFJJVkVfVFlQRTogJXMiICUgZHJpdmVfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGZpZ3VyZSBvdXQgZHJpdmUgdHlwZSwgY29uc2lkZXIgZGVmaW5lIG9yIGZpeCBRQl9EUklWRV9UWVBFIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnVHJ5aW5nIHRvIHVzZSB2aXJ0aW8gYmxvY2sgZHJpdmUnKQogICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlmPXZpcnRpbyxmaWxlPSVzLGZvcm1hdD0lcycgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCiAKICAgICAgICAgICAgICAgICAjIEFsbCBicmFuY2hlcyBhYm92ZSBzZXQgdm1fZHJpdmUuCkBAIC0xMjc5LDcgKzEyODIsNyBAQAogICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpLmRlY29kZSgndXRmLTgnKQogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSAnJwotICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkNvdWxkbid0IHJ1biAnYml0YmFrZSAtZScgdG8gZ2F0aGVyIGVudmlyb25tZW50IGluZm9ybWF0aW9uOlxuJXMiICUgZXJyLm91dHB1dC5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ291bGRuJ3QgcnVuICdiaXRiYWtlIC1lJyB0byBnYXRoZXIgZW52aXJvbm1lbnQgaW5mb3JtYXRpb246XG4lcyIgJSBlcnIub3V0cHV0LmRlY29kZSgndXRmLTgnKSkKIAogICAgIGRlZiB2YWxpZGF0ZV9jb21ib3Moc2VsZik6CiAgICAgICAgIGlmIChzZWxmLmZzdHlwZSBpbiBzZWxmLnZtdHlwZXMpIGFuZCBzZWxmLmtlcm5lbDoKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKaW5kZXggZjQyODZlZi4uNGRhM2ViMSAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKKysrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKQEAgLTMxLDkgKzMxLDkgQEAKIAogU1lTUk9PVF9TRVRVUF9TQ1JJUFQ9YHdoaWNoIG9lLWZpbmQtbmF0aXZlLXN5c3Jvb3QgMj4gL2Rldi9udWxsYAogaWYgWyAteiAiJFNZU1JPT1RfU0VUVVBfU0NSSVBUIiBdOyB0aGVuCi0gICAgZWNobyAiRXJyb3I6IFVuYWJsZSB0byBmaW5kIHRoZSBvZS1maW5kLW5hdGl2ZS1zeXNyb290IHNjcmlwdCIKLSAgICBlY2hvICJEaWQgeW91IGZvcmdldCB0byBzb3VyY2UgeW91ciBidWlsZCBzeXN0ZW0gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0PyIKLSAgICBleGl0IDEKKwllY2hvICJFcnJvcjogVW5hYmxlIHRvIGZpbmQgdGhlIG9lLWZpbmQtbmF0aXZlLXN5c3Jvb3Qgc2NyaXB0IgorCWVjaG8gIkRpZCB5b3UgZm9yZ2V0IHRvIHNvdXJjZSB5b3VyIGJ1aWxkIHN5c3RlbSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQ/IgorCWV4aXQgMQogZmkKIC4gJFNZU1JPT1RfU0VUVVBfU0NSSVBUIG1ldGEtaWRlLXN1cHBvcnQKIFBTRVVET19PUFRTPSItUCAkT0VDT1JFX05BVElWRV9TWVNST09UL3VzciIKQEAgLTQyLDkgKzQyLDkgQEAKIFNES19ST09URlNfRElSPSQyCiAKIGlmIFsgISAtZSAiJFJPT1RGU19UQVJCQUxMIiBdOyB0aGVuCi0gICAJZWNobyAiRXJyb3I6IHNkayB0YXJiYWxsICckUk9PVEZTX1RBUkJBTEwnIGRvZXMgbm90IGV4aXN0IgotICAgCXVzYWdlCi0gICAJZXhpdCAxCisJZWNobyAiRXJyb3I6IHNkayB0YXJiYWxsICckUk9PVEZTX1RBUkJBTEwnIGRvZXMgbm90IGV4aXN0IgorCXVzYWdlCisJZXhpdCAxCiBmaQogCiAjIENvbnZlcnQgU0RLX1JPT1RGU19ESVIgdG8gYSBmdWxsIHBhdGhuYW1lCkBAIC01Myw2ICs1Myw5IEBACiBmaQogCiBUQVJfT1BUUz0iIgoraWYgW1sgIiRST09URlNfVEFSQkFMTCIgPX4gdGFyXC54eiQgXV07IHRoZW4KKwlUQVJfT1BUUz0iLS1udW1lcmljLW93bmVyIC14SmYiCitmaQogaWYgW1sgIiRST09URlNfVEFSQkFMTCIgPX4gdGFyXC5iejIkIF1dOyB0aGVuCiAJVEFSX09QVFM9Ii0tbnVtZXJpYy1vd25lciAteGpmIgogZmkKQEAgLTY0LDcgKzY3LDcgQEAKIGZpCiBpZiBbIC16ICIkVEFSX09QVFMiIF07IHRoZW4KIAllY2hvICJFcnJvcjogVW5hYmxlIHRvIGRldGVybWluZSBzZGsgdGFyYmFsbCBmb3JtYXQiCi0JZWNobyAiQWNjZXB0ZWQgdHlwZXM6IC50YXIgLyAudGFyLmd6IC8gLnRhci5iejIiCisJZWNobyAiQWNjZXB0ZWQgdHlwZXM6IC50YXIgLyAudGFyLmd6IC8gLnRhci5iejIgLyAudGFyLnh6IgogCWV4aXQgMQogZmkKIApAQCAtODEsNyArODQsNyBAQAogaWYgWyAtZSAiJHBzZXVkb19zdGF0ZV9kaXIiIC1hIC16ICIkZGVidWdfaW1hZ2UiIF07IHRoZW4KIAllY2hvICJFcnJvcjogJHBzZXVkb19zdGF0ZV9kaXIgYWxyZWFkeSBleGlzdHMhIgogCWVjaG8gIlBsZWFzZSBkZWxldGUgdGhlIHJvb3RmcyB0cmVlIGFuZCBwc2V1ZG8gZGlyZWN0b3J5IG1hbnVhbGx5IgotICAgICAgICBlY2hvICJpZiB0aGlzIGlzIHJlYWxseSB3aGF0IHlvdSB3YW50LiIKKwllY2hvICJpZiB0aGlzIGlzIHJlYWxseSB3aGF0IHlvdSB3YW50LiIKIAlleGl0IDEKIGZpCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ydW5xZW11LWlmZG93biBiL3Bva3kvc2NyaXB0cy9ydW5xZW11LWlmZG93bgppbmRleCBmZmJjOWRlLi4yNDg2OTY4IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnVucWVtdS1pZmRvd24KKysrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtaWZkb3duCkBAIC01MSw2ICs1MSwxNiBAQAogCiAkVFVOQ1RMIC1kICRUQVAKIAorSUZDT05GSUc9YHdoaWNoIGlwIDI+IC9kZXYvbnVsbGAKK2lmIFsgIngkSUZDT05GSUciID0gIngiIF07IHRoZW4KKwkjIGJldHRlciB0aGFuIG5vdGhpbmcuLi4KKwlJRkNPTkZJRz0vc2Jpbi9pcAorZmkKK2lmIFsgLXggIiRJRkNPTkZJRyIgXTsgdGhlbgorCWlmIGAkSUZDT05GSUcgbGluayBzaG93ICRUQVAgPiAvZGV2L251bGwgMj4mMWA7IHRoZW4KKwkJJElGQ09ORklHIGxpbmsgZGVsICRUQVAKKwlmaQorZmkKICMgY2xlYW51cCB0aGUgcmVtYWluaW5nIGlwdGFibGVzIHJ1bGVzCiBJUFRBQkxFUz1gd2hpY2ggaXB0YWJsZXMgMj4gL2Rldi9udWxsYAogaWYgWyAieCRJUFRBQkxFUyIgPSAieCIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3NlbmQtZXJyb3ItcmVwb3J0IGIvcG9reS9zY3JpcHRzL3NlbmQtZXJyb3ItcmVwb3J0CmluZGV4IGNkMmU3ZjQuLjg5MzlmNWYgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9zZW5kLWVycm9yLXJlcG9ydAorKysgYi9wb2t5L3NjcmlwdHMvc2VuZC1lcnJvci1yZXBvcnQKQEAgLTg4LDcgKzg4LDcgQEAKICAgICAgICAgbG9nLmVycm9yKCJOYW1lIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGVpdGhlciB2aWEgIit1c2VyZmlsZSsiIG9yIGFzIGFuIGFyZ3VtZW50ICgtbikuIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgIHdoaWxlIGxlbihhcmdzLm5hbWUpIDw9IDAgYW5kIGxlbihhcmdzLm5hbWUpIDwgNTA6CisgICAgd2hpbGUgbGVuKGFyZ3MubmFtZSkgPD0gMCBvciBsZW4oYXJncy5uYW1lKSA+IDUwOgogICAgICAgICBwcmludCgiXG5OYW1lIG5lZWRzIHRvIGJlIGdpdmVuIGFuZCBtdXN0IG5vdCBtb3JlIHRoYW4gNTAgY2hhcmFjdGVycy4iKQogICAgICAgICBhcmdzLm5hbWUsIGFyZ3MuZW1haWwgPSBhc2tfZm9yX2NvbnRhY3RkZXRhaWxzKCkKIApAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgdHJ5OgogICAgICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxKQogICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuSFRUUEVycm9yIGFzIGU6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoZS5yZWFzb24pCisgICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgcHJpbnQocmVzcG9uc2UucmVhZCgpLmRlY29kZSgndXRmLTgnKSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy93aWMgYi9wb2t5L3NjcmlwdHMvd2ljCmluZGV4IDczOTJiYzQuLjM3ZGZlMmQgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy93aWMKKysrIGIvcG9reS9zY3JpcHRzL3dpYwpAQCAtMzYyLDYgKzM2Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYml0YmFrZSB2YXJpYWJsZXMiKQogICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1EIiwgIi0tZGVidWciLCBkZXN0PSJkZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0ib3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uIikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItaSIsICItLWltYWdlciIsIGRlc3Q9ImltYWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0iZGlyZWN0IiwgaGVscD0idGhlIHdpYyBpbWFnZXIgcGx1Z2luIikKICAgICByZXR1cm4KIAogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIgYi9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKaW5kZXggNWE0ZmQ3NS4uOWI3ZTUzNiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCisrKyBiL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllcgpAQCAtMTY5LDcgKzE2OSwxNCBAQAogICAgICAgICB0ZFsnYmJ2YXJzJ10gPSBnZXRfYmJfdmFycygpCiAgICAgICAgIGxvZ2dlci5pbmZvKCdHZXR0aW5nIGluaXRpYWwgc2lnbmF0dXJlcyAuLi4nKQogICAgICAgICB0ZFsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCi0gICAgICAgIHRkWydzaWdzJ10sIHRkWyd0dW5ldGFza3MnXSA9IGdldF9zaWduYXR1cmVzKHRkWydidWlsZGRpciddKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZFsnc2lncyddLCB0ZFsndHVuZXRhc2tzJ10gPSBnZXRfc2lnbmF0dXJlcyh0ZFsnYnVpbGRkaXInXSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oc3RyKGUpKQorICAgICAgICAgICAgcmVzdWx0c1tsYXllclsnbmFtZSddXSA9IE5vbmUKKyAgICAgICAgICAgIHJlc3VsdHNfc3RhdHVzW2xheWVyWyduYW1lJ11dID0gJ0ZBSUwgKEdlbmVyYXRpbmcgd29ybGQgc2lnbmF0dXJlcyknCisgICAgICAgICAgICBsYXllcnNfdGVzdGVkID0gbGF5ZXJzX3Rlc3RlZCArIDEKKyAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRkWydtYWNoaW5lcyddID0gYXJncy5tYWNoaW5lcwogCiAgICAgICAgIGlmIG5vdCBhZGRfbGF5ZXIoYmJsYXllcnNjb25mLCBsYXllciwgZGVwX2xheWVycywgbG9nZ2VyKToK